Question: Consider an application that currently uses a combination of license file and/or subscription to verify which features to activate. I can use a smart contract instead of the license file, and potentially the subscription. But today, the subscription check requires an online validation and associated credential check.

With the Ethereum blockchain, is it possible to check state while offline? I'd like to implement a system where people are not required to be online to use the software. I can imagine having contracts that return themselves as valid while offline, but will nodes provide access to data if they are not sync'd up? I'd be ok using out of date data for up to a month or more, but I'd need the local client to respond.

Alternatively, I could create local license files from the node when the node is online, but I could almost as easily email license files. But by using the blockchain, the licenses and other assets could be traded and available should the company fold.

Answer: 
When your app is able to sync with the blockchain (network connection available), the check the blockchain and update your app settings file to allow use for up to e.g. 1 week after the blockchain subscription check. Just tell the user that they have to sync before the period is up.

One extra feature you can add:

* Your app has a unique public and private Ethereum key embedded in it and has to send a small amount of ethers back to your account on a periodic basis.
* If you get sent more ether transactions from your app than expected, your customer is running more than one copy of your app.
If you want to get up-to-date information from the Ethereum blockchain then you'll need a node somewhere that's synced up. However, in theory you could do this with either a trusted server or a more lightweight proof so you wouldn't necessarily need the whole chain to be downloaded to the client.

If you can tolerate partially out-of-date licensing information then you could certainly cache it locally as you suggest. 

> 
> Alternatively, I could create local license files from the node when the node is online, but I could almost as easily email license files.
> 
> 
> 

Right, if the goal is just that you want to be able to issue license files based on some information you already have then the Ethereum blockchain probably isn't suitable. Just issue that information on a server of your own and have the client software contact that server.

However, there are a couple of interesting things you get from using Ethereum for something like this. For example, you can make software licenses tradeable by arbitrary exchanges that you don't have to create yourself, and licenses bought in this way will work even if you go out of business.