I'm curious as to what blockchain could do to solve or improve upon the issues surrounding paid software licensing? (Verification, piracy prevention)

I've seen such claims all over the web when there is discussion around which domains blockchain has the potential to innovate.

I'm very interested in this if it is true but I cannot think of any tangible benefits opposed to a traditional license server (i.e. user has to verify their license key by checking against your server)

I suppose one benefit could simply be that it gives you the benefit of a license server without having to actually have a server, the blockchain would verify the validity of licenses.

Other than this, what else could blockchain do? Piracy would still be an issue, nothing will prevent me from lending my license ( say , my private key) to my friend.

Also another problematic issue is what incentive will there be for miners?

All of the hype made me very optimistic but I can't find anything to back up these claims.

  • They could but the best implementations of new tech are when they solve a problem in a new way. What problem would this solve?
    – Jameslanin
    Oct 10, 2017 at 14:43
  • I stated it in the question. I've seen claims from blockchain evangelists that it can solve this problem. I can never find any justifications and can't think of any. I'm hoping to seek clarity here. The answer may in fact be that blockchain is not suitable for the task.
    – user60758
    Oct 10, 2017 at 16:09

4 Answers 4


The following are just some ideas that came to my mind when reading your question:

Let's say that all the instances of the software you want to protect share a blockchain with the servers of the producer company. Licenses are released through the blockchain as a transaction, with the user who purchased the license as the receiver. This user, who will have its own private key (let's say a password), will be the only one able to unlock the license.

Each copy of the software program will also be registered on the blockchain (as an integrity checksum), so to uniquely associate the license to that specific copy.

The "license" transaction contain all the data that need to be verified, including:

  • the "coin" representing one license (maybe more than one)
  • the user ID (public key)
  • the the software copy ID/IDs (embedded in the software image)
  • a timestamp for the beginning of the license validity
  • the expiration time / date

Alternatively to the user ID, a unique identifier of the machine that will be allowed to run the code can be stored (e.g. the CPU ID, or something stored in a non-writable memory, so that it cannot be modified; this data can be sent by the user along with a "purchase transaction" on the same blockchain).

Now, the protected software connects to the blockchain each time it runs, to verify it can be actually run on that computer: if all the conditions written in the license transaction are valid, it runs the program, otherwise it stops.

Since data store in the blockchain cannot be modified, this prevents tampering. The software copy ID can be an integrity checksum of the program image that is also stored on the blockchain; so if someone tries to crack it, the software will not recognize itself because the new checksum is not stored on the blockchain (only the transactions signed by the producer will be valid). In case of software updates, new checksums can again be released through the blockchain (by the producer).

So, these were just a couple of ideas, but it's my belief that it wouldn't be hard to think about more and more sophisticated techniques.

In conclusion, let me point out that what we are actually talking about here, is a special case of the so called "smart contracts".

Hope this helps

  • In your model, what mechanism will prevent modificaitons on the blockchain? Would there be miners?
    – user60758
    Oct 17, 2017 at 16:36
  • Also, it makes sense to have a checksum of the software on the blockchain to prevent cracking, along with using some hardware ID as identification. But what protection is there from simply intercepting request before it goes to the internet and replacing identifier with someone else's license? (e.g. my friend's private+public key who is sharing with me). There would need to be some encryption done inside of the (unmodified) client app. But encrypted data does not make sense with a public distributed blockchain...
    – user60758
    Oct 17, 2017 at 16:36
  • Question 1: it depends on the consensus mechanism you want to adopt. with Proof of Work you will need miners, but others work in a different way (e.g. see Proof of Stake). In case of PoW, you can think of a blockchain shared by all different software houses (and their clients), giving some kind of reward to miners (e.g. free licences? or a "licence coin" to be used to purchase licences). I think this question is open to many answers.
    – FedFranz
    Oct 17, 2017 at 17:00
  • Question 2: I can't understand your question... but: - 1. transactions are signed with your privkey, so an attacker can't tamper with your tx without it - 2. who said that encryption doesn't make sense in public blockchains? transactions must be public, but you can insert encrypted data in it (even on Bitcoin this is possible)
    – FedFranz
    Oct 17, 2017 at 17:01
  • Why would a blockchain be needed here? Can't this whole thing already happen in a centralized way? Also, I feel like whatever way hackers currently use for centralized license would work here as well. Dec 27, 2017 at 7:52

I think the biggest benefit of having licenses stored on the blockchain compared to a licensing server would be, that these licenses would be independent from the issuing companies. So, if the company's license server can not be accessed anymore, you would be still able to activate your software. This could - at least in theory - happen, if the company closes, decides or is forced to stop the support. There could be also political reasons like internet filtering or that the software is declared as illegal to use in some countries. - Also, an "open" system like this would keep companies from switching around between different license managers.

Generally, it would be really cool, to have a digital identity, where you can just add the licenses to it, independent from operating systems and just activate it on the computer you are currently working on. People like me, who are switching between Mac, Windows and Linux all the time, would appreciate this.


Today's licensing systems, in general, are using the same paradigm that is now over 30 years old. License an entity in a static environment for a static amount of time.

The problem is that today's paradigm is not static.

There are actually 3 components required for management of an asset and ensuring vendor and customer receive value for value. The Contract (what can be used and under what terms), the Purchase Order (Customer's request to use an asset) and the license (what is actually used, in what way). Each of these is dynamic and can affect the view of the vendor and customer on what $$ should change hands for what period of time. Since anyone of the above can change at any time it is extremely difficult to keep track of the who using what, when and where and what the vendor has agreed to supply. Using a BC enables these 3 factors to be measured, managed and checked at anytime and since the BC keeps a running record of all changes overtime either party can verify independently of the other exactly what is in use and what is to be paid for.

Using BC to Manage and Monitor assets enables both sides to see at any point in time exactly where they are and what is in use vs not in use. Otherwise, you have to read a contract, examine a PO and get a report of the usage and then compare each and since not all information is a available to all parties readily there must be negotiations to settle any differences. BC eliminates this entire mess and makes everything transparent.


A typical how-to can be as the following (we are doing so on the ethereum):

1) Generate and sell tokens (maybe in a crowdsale).

2) Create a wallet (or maybe use an existing one) - The idea is to check for a predefined amount of the token in the wallet.

Doing so, the concept of a valid license can be as simple as having some of that tokens in the wallet and check the wallet for that. You can also perform more advanced or complex licensing rules the same way.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.