Cognate

Technical Details

Ethereum

Ethereum is the blockchain network Cognate chose to store trademark data. We developed a series of smart contracts that are published to Ethereum and were used in the recording and retrieval of trademark data. With the Ethereum address of your trademark can you can pull up the raw bytecode data that is stored within. Using our smart contract code it is possible to retrieve and view said data. This is what our tool does for you.

Etherscan is a blockchain explorer. It can be used to see transactions committed to Ethereum. This includes the trademark data that we stored in our smart contracts. By knowing your address you can view the raw bytecode in a web browser as well as see other related bits of information such as (but not limited to) any child transactions and documents or other unrelated transactions what utilized our smart contract code. You can even view statistics about ETH including how much we might have spent to store data there.

SHA-256 and Proof of Existence

Cognate's Trademark protection solution hinges on proving the existence of the documentation you submitted to us at a given period of time. This Proof of Existence is done by generating a SHA-256 hash of your documentation file and storing that 256-bit (32 byte) hash on the Ethereum blockchain. This would be something like: 0xd0470b0caabac1bed10bf1f958d14117f8996a85d4caaa8c3fc363994180b414. The blockchain secures both the hash and the timestamp of the block that the data is included in, creating an immutable, timestamped record of the hash.

When carrying out proof of existence using blockchain, images themselves are generally not stored on the blockchain for two principal reasons. First, storing images and other large documents in a public blockchain is too expensive and takes up a lot of storage space. Second, data that is put on the blockchain is there for the life of the blockchain (read forever). This would make it hard to allow a user's data to be "forgotten" if they so desired.

SHA-256 is a one-directional "Secure Hashing Algorithm" that has three important mathematical properties we are relying on:

  1. For a given input, it will always produce the exact same output. In this case, the input is your proof document, and the output is the hash that goes on the blockchain. This means that when you provide your proof document file to the SHA-256 function as input, it will always produce the same hash.
  2. It is mathematically highly improbable that two inputs will produce the same hash. SHA-256 allows for 2^256 different outcomes. Finding a second input that produces the same hash is a huge challenge in and of itself - finding another input that would actually provide meaningful value (like a slightly tampered/different proof image) is next to impossible.
  3. The hash is not reversible so it is not possible to take the hash data and reproduce the original file or data. This keeps your data private.

With these proven properties, you can make the claim that if the SHA-256 hash produced from your proof document matches the hash that was stored in the blockchain, then the document existed at the point in time it was stored. (Note that this same Proof of Existence method described above was also used to record Design Marks on the blockchain).

For these reasons, it's critically important that you maintain the original document. With the original document, you can generate the hash at some point in the future to show it matches the hash that is stored in the blockchain. Even a single pixel difference will produce an entirely different hash and void that file's ability to help prove your trademark claims. This is why we sent you an email containing your original files and instructed you to keep and store them.

This Codebase

If you are curious, this code is mostly just HTML and JavaScript. The project is hosted in GitHub.