Smart Contracts

Smart Contracts

Team Polyrific

If this then that. This is the simple boolean premise on which is built the logical structures of our lives.

If you swipe your credit card at the pump, then you can have gasoline for your vehicle.

If you remit your final mortgage payment to the bank, then they will hand you the title to your home.

If a highway patrol officer catches you cruising above the legal speed limit, then you will have to pay a fine.

If you have read our previous articles in this series about blockchain technology, then you likely know where we are headed in this one.

Blockchains are excellent vehicles for establishing digital trust and removing intermediaries from transactions which is why the big players, like Blockchain, focus only on financial transactions: I send you Bitcoin through the chain and the transaction is forever encrypted into the history of that chain so that I can’t spend that money twice. Moreover, an intermediate bank is not needed to process the transaction since the Blockchain also documents (instantly) that the Bitcoin I have sent you now belongs to you and you alone.

The trust we have in blockchains is derived from the fact that they are decentralized, with thousands or tens of thousands of unrelated entities reaching a consensus and agreeing on the historical record with each and every transaction we make. With such a powerful mechanism in place for establishing trust, managing financial transfers, and memorializing historical accounts, couldn’t blockchains handle more than mere financial transactions? The answer, of course, is a resounding “yes”.

Nick Szabo

A decade before a person (or persons) writing under the pseudonym “Satoshi Nakamoto” published the seminal treatise “Bitcoin: A Peer-to-Peer Electronic Cash System”, another thought-leader had begun to make noise about the potential for creating self-executing contracts.

That thought leader is Nick Szabo, an American computer scientist and legal scholar who proposed a system of converting contracts to code that could be distributed to an encrypted blockchain and self-execute when all conditions of the contract were satisfied: If you pay for your home in full, then the title as automatically assigned to you. If you do not pay for your home in full, then your interest is compounded and you must continue to make your mortgage payment each month. If you stop paying for your home altogether, then legal proceedings to repossess the home will begin automatically.

This sounds pretty great; in theory, it would even allow for a collective of the blockchain’s participants to crowd-fund the purchase of your home by putting in place a smart contract that guarantees you will pay off the balance at a given interest rate over time with the proportional returns going to each of the blockchain’s participants that helped you make the purchase. When the balance is paid off, the title goes to you. Before that time, the title to your home exists in the blockchain but belongs to no single entity. No banks involved.

However Mr. Szabo’s idea was a little ahead of it’s time and it would be almost twenty years before his vision could become a reality.


Ethereum is an open-source blockchain protocol first proposed by Vitalik Buterin in 2013. Riding on a wave of blockchain enthusiasm created by Bitcoin, Ethereum is widely seen as the next evolution of blockchain technology as it not only allows for financial transactions, but for smart contracts as well.

Under Ethereum’s protocol, smart contracts can be written into the blockchain using specific programming languages to encode the contracts with boolean logic. Time limits can be set on the contracts so that if all conditions are not met by a given date, any pending financial transfers go back to the original parties. This is very similar to the escrow services with which we are all familiar but remember, with blockchain technology there are no third parties. The blockchain hosts and evaluates the conditions of the contract autonomously to execute the prescribed outcomes.

Transaction fees for execution of smart contracts on the Ethereum come in the form of “gas” expenditure which is tied to the size (in storage space) of the contract and not to increasing profit for a third party. This is necessary to create a strong disincentive to spam the blockchain with large unwieldy contracts and it also has the effect of keeping real monetary value, originally from fiat currencies, flowing into the blockchain thereby increasing the real-world value of Ethereum’s currency, the Ether.


While smart contracts sound great in theory, their efficacy depends on the participation of all parties, including those who must digitize value-backed items such as deeds and titles. At the time of this writing, it is not clear how that will be done and the onus seems to be on the authorities that currently control these items--banks, governments--to lead the way. The problem is that the disintermediate nature of blockchain is at odds with banks who seek profit and governments who seek to regulate.

This is not to say that smart contracts are not feasible. It is simply important to note that the use of them will require more than digitization of contracts and transfer of monetary value.

Enterprise Use Cases

In our view, the most present and interesting use case for smart contracts are those concerned with eCommerce of digital assets.

Consider pop music: barring any contractual obligations to a record label, a chart-topping recording artist could release a new album as a smart contract. With each purchase of the album on a blockchain such as Ethereum, the purchase price can automatically be distributed among the recording artist, the song writers, the producer, and so forth. Want to use a song from the album in your commercial? Smart contracts could handle royalties, settle payment, and distribute the necessary licensing. The key here is that there is no central third party needed for any of this to happen. The record labels probably are less thrilled about this than we are!

Content creators in general will benefit from smart contracts. It is no secret that authors are increasingly becoming disillusioned with large distribution channels such as Amazon that, according to the authors, attempt to depress the price of their product via threats of limiting pre-release sales or even physical delivery. Polyrific has no official opinion on that debate, but regardless of who is right or wrong, content creators of all types can instead turn to a public blockchain as a means of distributing their content and handling the financial distributions for each transaction.

Smart contracts are not just for major purchases and complex royalty distributions. Imagine you are a major electronics company such as Samsung that is offering a $20 rebate on each new smartphone sold if the customer completes an online survey. In this situation, a smart contract can be created with each purchase and automatically credit the user their rebate once they have completed the online survey. No third parties would be necessary--no payment processors, no clearing houses to process written requests for rebates, nada.

Wrapping up

Our goal in writing this article is not to tell you everything that you can do with smart contracts--we don’t have that answer ourselves--but instead to spark your own ideas of how you might use the technology.

As you go on that journey of innovation for your own enterprise, we’d be grateful if we could join you. Please reach out via email to let us know how we can help.

Team Polyrific | Aug 08, 2017

In our previous article we discussed the general principles of how blockchain works. You came to understand that without decentralization and immutability, you can’t have an effective blockchain, or at least not a public one.

In this article we are going to expand on why miners and cryptocurrency are an essential byproduct of blockchain technology. After reading this article, you should have a better understanding of what the miners do, why they are necessary and, perhaps of greatest interest to you, why the virtual cryptocurrency created in the mining process has instant real-world monetary value.

We will assume in this article that you already have a basic understanding of the hashing and Merkle tree concepts that are necessary to achieve immutability in blockchains. If you do not, we recommend that you go back and read our article on that subject matter now.

Hacking the Hash

Let’s say that I wanted to hack the Bitcoin blockchain and set my balance to the equivalent of millions of dollars and then go on a shopping spree. I would need to do three things:

  1. Find out which block in the chain contains my most recent account balance and change that value. Let’s say that block is 25 blocks behind the most recent block on the chain.
  2. Next I would need to recalculate the hash values of all 25 successive blocks in the chain until I reach the final block, the hash value of which will match with the fraudulent change I made.
  3. Finally, I need to repeat this process on at least 51% of all nodes participating in the Bitcoin blockchain so that when next queried, they all reach a consensus that I have millions of dollars worth of Bitcoin in my account.

Given that in reality the block you need to change could be millions of blocks back in the chain and that the nodes you need to hack would number in the thousands or tens of thousands, the odds of being able to successfully handle that much hashing in a lifetime are practically non-existent. It would take a supercomputer of immense power to even stand a chance. Now consider that this would have to be done inside a window of a few seconds to a few minutes before a new block is added to the chain (disrupting your calculations) and you will understand why it is practically impossible to hack a blockchain in this manner.

Even so, the code contributors and founders of popular blockchains like Bitcoin and Ethereum weren’t satisfied with even those odds and therefore they have mandated that before a new block can be added to a chain, it’s final hashed value must be even more difficult to calculate than the hashed value of a block's data plus it’s predecessor’s hash. They manage this by setting a difficulty target that basically demands that the hashed value of a block plus a value called a nonce must result in a string of characters beginning with a predetermined number of zeros.

For example, a SHA-1 hash of “Polyrific” looks like this:


If you wanted to guess the word that was hashed into the value above, you would have to run a brute-force algorithm to hash different combinations of letters through the SHA-1 protocol until you had the same hash as above. In relative terms, this wouldn’t take too long.

The difficulty rule, however, dictates that the hashed value of “Polyrific” plus a nonce value must equal a hash that is led by a certain number of zeros like this:


The more leading zeros, the more difficult it is to create a nonce value that, when hashed with the original block value, will produce the correct answer. Moreover, there is no known mathematical way to arrive to the correct nonce value--you have to try millions and millions of different combinations until it produces the correct outcome. This is the process of mining, and it makes alteration of any block in the chain without changing the value of the chain’s most recent block computationally impossible.

Multiple transactions from multiple, unrelated participants go into a single block. It’s not feasible to request that people simply trying to send money to someone else do so by coordinating with other people making transactions at the same time and together running calculations to guess a nonce value. That’s where the miners come in.


Miners do the hard work of finding the correct nonce of each block to the benefit of everyone with pending transactions which must be bundled in a block and added to the chain before they are complete. Without the work that the miners do, blockchains would be less secure because it would become computationally possible (though not easy) for a hacker to alter the interlaced hash values of a chain. Because there are so many miners out there, new blocks can be added to the chain within a few seconds, though Bitcoin manipulates the difficulty of the work so that blocks are added roughly every ten minutes.

A miner can be anyone from an individual running open-source mining software on their home PC, to large warehouses of specialized mining equipment where hundreds or thousands of machines toil away at producing blocks to be used in the chain.

For every nonce guessed by a miner, a block is produced that can be added to the chain. It’s label is that hash value we have discussed that contains DNA from the block that came before it as well as the hashed value of its own contents plus the nonce value, all producing a hash value with the correct number of leading zeros that will in turn be hashed-in with the next block on the chain.

The amount of Bitcoin that will ever be minted is limited to ฿21,000,000 and, over time, the difficulty in finding a correct nonce value will increase thereby making blocks harder to create and Bitcoin more scarce. This is the origin of the mining analogy--as time progresses, precious metals and stones are increasingly difficult to find.

The blockchain rewards cryptographic tokens, or cryptocurrency, to the miners for each block that is added to the chain in this manner.


Understanding the concept of cryptocurrency, how it is valued, the need for it’s existence, and how it is created in the first place can for some of us be the most confounding subject on your way to understanding blockchain. Let’s demystify the subject then by starting with a simple set of premises I am sure you can accept:

  1.  Work has to be done to build each block (see Mining section above).
  2.  Transactions need to be packed in a block in order to be added to a chain.
  3.  Miners are paid by the blockchain itself do the work necessary to build these blocks so that transactions can be added to the chain. Payment is in the form of cryptocurrency.

Huh? How can the blockchain itself pay the miners? You can’t just invent a phony currency, hand it to people, and expect it to have value, right? Actually, yes you can. Here’s how:

If I wanted to send you $10,000 US dollars and I didn’t want to do so by going through a bank or any other conventional services, I might elect to do convert my US dollars to Bitcoin (BTC) and then transfer them over to you through the blockchain where you would then use an exchange such as Coinbase to convert the Bitcoin back to US dollars.

Making this transaction requires that I first use an exchange such as Coinbase to make a real-life transaction where I buy $10,000 worth of Bitcoin (which converts to roughly ฿3.62 at the time of this writing). So who am I buying the Bitcoin from? They come from the miners that were awarded newly minted Bitcoin for adding a block to the chain.

So I purchase $10,000 on an exchange like Coinbase and now a miner has $10,000 real US dollars and I now have ฿3.62 Bitcoin. In reality, it doesn’t need to be a miner that I am directly buying from as Bitcoin has changed hands so often now that the Bitcoin you buy may not be newly minted, but that is beside the point. In our example, the miner just went and made a down payment on a house with those cold-hard US dollars.

I transfer the ฿3.62 Bitcoin to you via the blockchain and you now convert it back to US dollars, also through an exchange like Coinbase. Who bought them back from you? Possibly the next person in the line that needed Bitcoin to make a transfer on the blockchain, or perhaps it was an investor speculating that the value of Bitcoin would rise over time (it has, dramatically).

You see, blockchains harbor their own micro economies with the value of their currency rising and falling over time just like it does with the fiat currencies we use everyday. You may think that you would only send money over the Bitcoin blockchain for nefarious reasons. While it is true that many participants do indeed have nefarious motives, there are many cases in which use of the Bitcoin or Ethereum blockchains makes perfect sense. It is, after all, much faster and much less expensive than using traditional 3rd party wire transfer services and their is an inherent higher degree of trust as well since it is cryptographically infeasible (if not impossible) to fake a transaction--if you say you sent me ฿3.62 ($10,000), I just need to go take a look at the Bitcoin ledger--any of them--to confirm.

We hope that this article has helped you better understand how mining and cryptocurrency works. You probably still have questions and we are here to help. Please contact us so that we can help you integrate blockchain technology into your enterprise.

Team Polyrific | Aug 08, 2017

This article is the second in our series about blockchain technology. If you haven't already done so, we recommend you read Introduction to Blockchain first.

The essential ingredients of a blockchain are decentralization and immutability. In this article, we will explain both and why you can’t have a blockchain without them. 

Remember those wood blocks you played with as a kid? The ones that each featured a letter of the alphabet? Imagine gluing ten of those blocks together, end-to-end, to form a long chain that spells the word “blockchain”.

Let’s say you did that ten times so that you have ten identical chains of glued-together wooden blocks, each spelling the word “blockchain”. Now you distribute those ten chains to ten different people in ten different locations.

Later, you call each of those ten people and ask them to read back to you the word spelled out by their wooden blocks. Nine out of ten of the people read back to you the word “blockchain” thereby forming a consensus of the correct value of the chain. But the tenth person to whom you gave a chain of wooden blocks has taken out a saw and hacked into his so that it now says “block party” instead of “blockchain”.

It is obvious that this chain has been hacked into and had it’s values changed because his answer does not match with that of the rest of the group. Therefore, you can no longer trust this person and won’t be calling him again to read back the value of the wooden blocks. Instead, you add someone new to your group of ten who will hopefully give you the correct answer each time you call.

Believe it or not, this is the essence of how blockchain technology works: each “block” in a chain contains data that proves it’s connection to the one that came before it. If any block in the chain is altered, the collective message it comprises will be different from all the others when it should be an identical copy.

Let’s break this down into more technical terms.


Unlike the centralized data sources like SQL or Oracle, complete and identical versions of a given blockchain are distributed among nodes in a network. Those nodes are the ten people to whom you gave the wooden blocks. In public blockchains such as Bitcoin and Ethereum, this can be anyone, anywhere. Presumably, people who are running nodes have some connected interest in the blockchain such as using it to transfer money. At the time of this writing, the Bitcoin blockchain has 8,417 nodes and the Ethereum blockchain has 23,669 nodes. Each one of these nodes has an entire, current copy of the blockchain.

So instead of a mere group of ten people to verify the value of your blockchain at any given time you have 8,417 and 23,669 for the Bitcoin and Ethereum blockchains respectively. That means that if the majority of these nodes report that the present value of the chain is “blockchain”, then a consensus has been reached as to the present true value of the chain. Any nodes reporting other values can be dismissed.

Readers who have spent a career working with traditional centralized relational databases, are shaking their heads at this point because keeping so much data in near real-time perfect parity across all nodes is simply too impractical. If this is the thought you are having, remember that blockchains are not intended to store sprawling relational data as you would in a centralized data store. They are meant to store small amounts of information about a transaction that has occurred. Think of the Bitcoin blockchain as a single table in a database called “Money Transfers”. There would be but four tiny columns:

  1. ID of user sending money
  2. ID of user receiving money
  3. Amount
  4. Date of transaction

This is of course is a generalization, but at the time of this writing, the entire Bitcoin blockchain of nearly 243 million transactions constitutes only about 125GB of storage space. This would easily fit on most personal computers.

Even with the understanding that blockchains record a vast amount of information in a relatively small storage space, you may be wondering about how those instances of the block chain could be efficiently compared. The answer to this question is uncovered by another interesting aspect of blockchains called “immutability”.


Things that can not be changed are immutable. If you take a picture of me wearing a silly hat and share that all over the Internet where it becomes a sensationally successful meme, it is not immutable. I can change my hat, but I can’t change the fact that now hundreds of thousands of other people have a copy of the picture in which I was wearing the silly hat.

So how do we make a block chain immutable and also make it fast and easy to verify it’s immutable value across thousands of nodes? You use a very cool cryptography trick called a Merkle Tree.

While it has some complicated parts, the general concept behind Merkle trees is simple.

You take a series of values, break them into pairs, and sum the pairs. Now you repeat the process until you arrive to a single value.

For the sake of simplicity, assume that in the example above there are no other mathematical arrangements for coming up with a total of “10”. It is now very easy for all nodes participating in a blockchain to instantly report and reach a consensus that the present value of the chain is “10”. For nodes reporting different values, it means that someone tampered with a block thereby changing the value of that copy of the blockchain.

In the real world, cryptographic hashes are used to “glue” a block in the chain to the block that came before it. A “hashing algorithm” is a mathematical algorithm that can take values of any length and reduce them to a value of known length. Using the SHA-1 algorithm produces an output of exactly 40 characters for each of the following:

“Polyrific”: b2d9604dc604f181bda554ea6622cd2e94e9f0e5

The Gettysburg Address: a663989e9e45ed022bea82b5a6e8a279dd961370

As you can see the hashed value of the 9-character word “Polyrific” becomes a 40 character value as does the hashed value of the 1,269 character Gettysburg address. Interested in learning more about how this works? Try it yourself: our interactive article on public key encryption provides a hands-on experience for understanding basic encryption principles.

So now substitute the single letter on those wooden blocks with a hash value like the ones above. Here comes an important concept:

The hashed value on the face of each block in your chain is derived from the the hashed output of all data in the block plus the hashed value of the block that came before it.

Remember that no matter the length of text (or size of data) stored in a block, the hashing algorithm will take it down to a 40 character representation. You now take that hash and hash it again with the value of the hash representing the block that came before it and you arrive to a new unique hash value.

Back to immutability, the chain has become immutable because if you change any value in the chain, it will have the effect of changing the final hashed value of the most recent block which is what all nodes will report in order to gain a consensus. This means that the majority of participating nodes would have to conspire to change a specific value at a specific place in the chain, and then re-hash the entire chain in order to win a consensus vote that is not a true picture of historical record.

Aside from it being impractical to coordinate a large number of nodes in real-time to change a specific value, it is far too computationally expensive to recalculate (hash) the entire blockchain. In fact, blockchains like Bitcoin and Ethereum specify that the hash value of a block has to be even harder to calculate than calculating the hash of the blocks value against the value of the previous block alone. That’s where the miners come in. We will talk about them more in our article entitled "Miners & Cryptocurrency".

As you can see, without having the immutability assured by the hashing algorithms and the decentralized consensus as to what that immutable value is, then you can’t have a blockchain as we presently know it. Of course, you can have private blockchains that generally forgo the decentralized aspect and focus on immutability instead. These are often called distributed ledgers and will be discussed our article entitled "Private Blockchains and Distributed Ledgers".

Blockchain technology is changing the way enterprises, and the customers who support them, operate. If you would like technical guidance or implementation of a public or private blockchain, or simply help participating in an existing blockchain, then please call us at 1-833-POLYRIFIC or send us a message to learn more.

Team Polyrific | Aug 07, 2017

Private blockchains, sometimes called “distributed ledgers”, are a form of blockchain wherein all of the nodes are controlled by single entity. While some correctly argue that private blockchains miss the point of the principles behind blockchain technology, private blockchains do have their uses. In this article we will explore how private blockchains work and some of their common uses.

Private Blockchains Put You In Charge

Let’s suppose for a moment that your enterprise has a business need for recording transactions in an untamperable manner. Moreover, the contents of these transactions need to be kept private and therefore the use of a public blockchain is simply not an option. In this case, you will need a private blockchain. Your options for creating a private blockchain are as follows:

  1. Create your own proprietary blockchain technology from scratch (something we can do for you!).
  2. Branch the open-source code for an existing blockchain technology such as Bitcoin or Ethereum and modify it to suit your needs (we can help you do this too)
  3. Use Ethereum out-of-the-box to create your own private blockchain with strict adherence to Ethereum protocol. (Yep, we can help here as well).

Once you have created your private blockchain, you will be the gatekeeper in charge of approving and adding nodes as participants in the chain. These “nodes” may live on employee machines, perhaps in regional offices, in partner or vendor offices; anywhere you like. You will also be in charge of setting the hashing difficulty and assigning hashing work to miners.

Basically running your own private blockchain puts you in charge of how the chain operates.

Murder, Evidence, & Private Blockchain

Imagine for a moment that a powerful local businessman is indicted for murder. The victim died of a gunshot wound but no murder weapon was found. However, the detectives did find gunpowder residue on the businessman’s hands and they placed a sample of that residue in the evidence locker at the local police station. Days later, the murder weapon is found in a nearby pond. The detectives are certain of the businessman’s guilt and they simply need to test the residue from the recovered gun’s barrel to see if it matches the residue found on the businessman’s hands the day of the murder. So they have the forensics team run the sample from the gun against the sample taken from the businessman’s hands and--they don’t match. How could that be?

It turns out that the businessman is a strong supporter of both the mayor and the police chief. The residue collected from the businessman’s hands was replaced by someone at the police department before the murder weapon was found. The chemical analysis of the residue originally taken from the businessman’s hands does not match the analysis of the fraudulent sample with which it was replaced. The forensics team runs a second chemical analysis, this time on the phony residue, and discover that the results do not match the analysis of the original test they ran against the sample--the real sample. Something is up.

Enter the private blockchain. Unbeknownst to the crooked individuals that swapped the residue sample in the evidence locker, the forensics team had hashed the chemical analysis values from the original residue sample and encrypted them into the department’s private blockchain. When swapped in the blockchain with the results of the original chemical analysis, the chemical analysis of the phony residue completely changes the most recent hash value of the chain. All of the scattered nodes in the chain--each bearing their own identical copy of the chain with timestamped evidence of what was hashed into it and when--reach a consensus that something has changed!

The forensics team knows that someone tampered with the evidence, but how do they prove that in a court? It will be their word against that of a very slick defense attorney who will try and convince the jury that the first time the forensics team ran the sample they were perhaps the victim of a faulty machine or maybe one of them made a mistake and analyzed the wrong sample.

Here’s the thing: recalculation of the chain after swapping the blockchain’s hashed value of the chemical analysis taken from the businessman’s hands on the day of the murder for with the hashed value of the chemical analysis taken from the murder weapon several days later, results in the same hash value on the end block for all participant nodes. The odds of that happening by accident make the implication unmistakable: someone tampered with the evidence.

Thanks to the proof demonstrated by the blockchain, the jury is convinced in no uncertain terms that someone had tampered with the evidence in order to help acquit the business man. With circumstantial evidence piling up against him, it becomes more difficult for the jury to ignore the businessman’s guilt.


Private blockchains and distributed ledgers do not have to carry all of the gravity of ensuring that guilty criminals are ultimately convicted. In regular enterprise use, you may need them to simply track custody and use of a piece of equipment, or the balance of raw materials on hand and into which products those raw materials were incorporated. Aside from being a tamper-proof snapshot of transactions, the clean structure of transaction data in blockchains lends itself well to data science and machine learning algorithms that can help you better manage your supply, custody, and distribution chains giving you insights that before now was impossible.

If you’d like to know more about how we can help you incorporate a private blockchain into your business, please contact us.

Team Polyrific | Jul 31, 2017

Bitcoin. Cryptocurrency. Ethereum. Hashing. Mining. Dogecoins. You may have heard these terms tossed about in the past year or two and wondered what they are all about and why there is so much fuss about them. Well, you are in luck, this series of articles is meant to demystify the technology related to all of these buzzwords: blockchain.

While the technology behind blockchain can take a little effort to wrap your head around, the general concepts are easy to grasp. As you read this series of articles, do your best to go with the flow without attempting to understand everything at once for if you do that, you are likely to end up frustrated and still out-of-the-loop.

Let’s begin our journey to understanding blockchain technology by first looking at some problems that it solves:

  • Wiring money to other people, especially in other countries, is slow, requires one or more third parties, and is expensive.
  • In traditional financial transactions, double spending is possible: I promise to pay you my only $10 at the same time as promising to pay someone else that $10. Some one will not get paid.
  • Centralized authorities. You rely on your bank to facilitate the transfer of funds into or out of your account, but what if they refuse to do so quickly? What if they make a mistake with your balance? What if they simply raise their transaction fees to an intolerable level?
  • You get into a car accident and, rather than paying to help you cover the damage, your insurance company battles you to attempt to pay as little as possible.
  • Your bank is hacked and your social security number and credit info is released to thousands of black-hat hackers.

These are just a few of the problems solved by blockchains. They have no central authority so there is no single entity in control of your finances, healthcare, insurance claims, etc. They maintain a very limited body of information about you, essentially just your blockchain ID and your account balance. They can contain “smart contracts” which are contract conditions written in code that automate fulfillment of the contract (I total my car, the fair market value is automatically released to my account from the insurance company without argument). Wire transfers do not require a third party and are near-instant.

Blockchains indeed do a lot of great things but if you are like most people, you are probably already thinking ahead, with a dubious expression on your face, as to how all of this could be possible. After all, the idea is incredibly disruptive. We’ll get you there.

Shared Spreadsheets

Have you ever used one of those nifty shared Google sheets that allow you to share the spreadsheet with a coworker and view that coworker’s updates to the sheet in real time? Blockchains are kind of like that except the data in them is not stored on Google’s, or anyone else’s, database. Instead, everyone who participates in the blockchain keeps a complete copy of the spreadsheet on their own machine.

When one person, let’s call her “Jane” makes a change to the spreadsheet, the blockchain software running on her machine broadcasts out a message about that change to all other peer-to-peer blockchain users so that their spreadsheets are updated as well. There is no central database and no central authority controlling the information flowing in and out of the spreadsheet. Of course in the real world, blockchains are a bit more complicated than this, but let’s continue with the spreadsheet analogy as it makes the general concept clear.

Suppose that Jane wants to send some money to another peer on the blockchain named “John” in order to pay for a piece of decorative art he sold her. You can’t actually send fiat currency (like US dollars) through a shared spreadsheet so Jane purchases 100 units of the blockchain’s cryptocurrency--let’s call it Polycoin--from a currency exchange such as Once Jane pays her fiat currency to Coinbase, they transfer 100 Polycoins to her account directly on the blockchain and the shared spreadsheet is updated so that it now shows that Jane has a Polycoin balance of 100.

Note that John, who just joined the blockchain, has an initial balance of 0 Polycoins. Jane now sends John the 25 Polycoins she owes him and the shared spreadsheet is once again updated.

Now John has a balance of 25 Polycoins and Jane has a balance of 75 Polycoins.

John has no use for Polycoins so he exchanges them with Coinbase for fiat currency. Assuming that 1 Polycoin is worth $1 US dollar (less a small transaction fee), John now has about $25 US dollars in his pocket and a balance of 0 Polycoins:

Also note that the balance on the Coinbase account is 25 Polycoins higher since John exchanged his 25 Polycoins with Coinbase for fiat currency. Once again, the shared spreadsheet is updated for everyone.

Now Bob enters the blockchain with a balance of 0 Polycoins. He wants to get rich quick so he takes the liberty of changing his balance to 1,000,000 Polycoins. After all, it’s a shared spreadsheet on which anyone can make changes so why not just change it to any value you want?

The thing is, there is no historical record of a transaction that led to Bob’s account balance going from 0 Polycoins to 1,000,000 Polycoins. When the other participants in the blockchain (Jane, John, and Coinbase) see this, they reach a consensus that Bob’s wishful thinking does not reflect reality and Bob’s change is tossed out, resetting his balance to zero and restoring order to the galaxy.

No authorities had to be called and no banks had to be involved. A simple consensus was reached that Bob’s transaction was phony and it was thereby tossed from the system. Sorry Bob.

In the real world, no one is literally monitoring every transaction in a blockchain. Instead, each participating node in a blockchain checks to make sure that advanced cryptographic evidence proves that all transactions are genuine. This check occurs every time a new block of transactions is added to the blockchain. Unless a majority of nodes reach the same cryptographic conclusion (math stuff) as to the authenticity of a submitted block of transactions, the transactions will not be allowed to enter the chain.

Eruption of Disruption

Assuming that you can accept on faith for the moment that blockchains are as this article describes them: identical copies of software and data distributed across a network of thousands of nodes that offer a hack-proof method of transferring money from one peer on the network to another, then you are probably starting to realize just how potentially disruptive this technology might be.

Obviously, you no longer would need banks to transfer funds on your behalf. In fact you wouldn’t need them at all. But, as you will see in the other articles for this series, the disruption goes further. “Smart Contracts” could replace the need for notaries and escrow companies while completely upending the business of managing deeds and titles to real property.

Given the odds of significant disruption in the financial industry, it isn’t surprising to see that major financial institutions are scrambling to either embrace blockchain technology on their own terms, run smear campaigns against it, or lobby legislative bodies to put in place regulations that restrict the legal use of blockchain technology. In fact, it is said that blockchain technology will do to the finance industry what the Internet did to the Media: it will change it completely.

Throughout this series of articles we hope to help you achieve a better grasp on how blockchain actually works and how it can be used so that your enterprise is not left in the dust as yet another game-changing technology shakes us to the core.

We can advise you and even implement for your enterprise the blockchain technologies discussed within this series. Please call us at 1-833-POLYRIFIC or send us a message to learn more.

Team Polyrific | Jul 30, 2017

Public key encryption, sometimes called "public key cryptography", is a method of encrypting your data so that only the people to whom you provide a key may access it.  Aside from being a way to keep your data generally secure, it  is also foundational to other technologies such as blockchains and digital certificates so grasping the fundamentals of public key encryption can help you better understand those technologies as well.

Let's ease into the concept of public key encryption with an example. Suppose for a moment that almost everyday you receive package deliveries from Each day, the delivery person leaves these packages on your doorstep while you are away at work. Recently, some of your packages have gone missing. You check in with both Amazon and the delivery service and they confirm that the packages were delivered which means that there is a thief intercepting your deliveries before you can get to them. So you build a little box with a padlock that is left unlocked each morning when you leave for work. You leave instructions for the delivery driver asking him to please place your items in the box and squeeze the padlock shut to secure them--no key required.  

For a while, this goes well: each day when you return from work and find your packages are safely locked in the box. Then one day you receive a pair of shoes your ordered only to discover that Amazon mistakenly sent you the wrong size. Now you need to make a return. Amazon is happy to oblige and instructs you to leave the package on your porch for the delivery driver to pick up the next day. They also let you know that your exchange or refund will only be processed after the returning pair of shoes is safely back in their warehouse. You have a problem here: if you place the box on your porch unsecured, the thief may be back to steal the package before the delivery driver picks it up which would mean that not only do your shoes not fit correctly--you now have no shoes at all even though you paid for them! You can't leave the shoes in the parcel box and lock it because the delivery driver does not have a way to unlock the padlock--only you have the key that can do that.

The solution is simple enough: you make an exact copy of your key to the padlock and leave it under your doormat for the delivery driver and then you send the driver a text message informing him that you have locked a return parcel in the box and that the key is under the doormat. That works. Your shoes are returned to Amazon, you get your refund, and things are going great until a few days later you arrive home from work to discover that your parcel box is unlocked and your deliveries for the day have been stolen again! The only way this could have happened is if the thief somehow got a copy of your key.

OK, let's jump out of the example for a moment. By creating a copy of your key and handing it off to the delivery driver, you created an example of symmetrical encryption: you can lock the box, but anyone else having a duplicate of the key has the same access to the box as you (the level of access is symmetrical). If you have ever password protected a Microsoft Excel spreadsheet, and then shared the spreadsheet along with the password to unlock it with your colleagues, then you have used symmetrical cryptography and, as you may have had the misfortune of experiencing firsthand, the passwords for these spreadsheets tend to be slippery and ultimately find their way into the hands of the very people to whom you meant to block access.   

Back to the example. Once you get over your indignation that the thief had the audacity to slip up to your porch, find the key, and make a copy of it while you were away at work, you realize that what you really need is a way for the delivery driver to lock your box with his key and for the box to stay locked until you unlock it with your own different key--a key that only you possess. So you alter your lock box and give a new key to the delivery driver. When the driver places your packages in the box the next day he turns his key to the right--the only direction he can now turn it) and the box is locked. When you return from work each evening, you insert your different key and turn it to the left--the only way you can now turn the key--and the box is unlocked.

Things are going great for a while and the thief is stymied; he even tried making a copy of the new key you left under the mat for the delivery driver but quickly discovered that it was only good for locking the box and was completely useless for unlocking it. 

After several days you run into one last problem (hang in there--the example is almost complete): you ordered a shirt from Amazon and they sent you the correct size but the wrong color. You need to leave the package for the delivery driver once again, but you don't have a way to lock it into your box and he would not be able to unlock it even if you could because your key only locks and his key only unlocks. In cryptographic terms, your keys symmetrically cancel each other.

What you need is a way to lock the box so that the driver's key may unlock it if, and only if, you were the last person to lock it as would be the case if you were placing a return package in the box. Outside of that, everything still works the same: if the delivery driver places packages in the box and then locks it, his key--or any copies of it--will not be able to unlock it. Only your key can do that. 

In our lock box example, your key is analogous to a private key and the delivery driver's key is a public key. You can hand out as many copies of the public key as you like. You might choose to give them to not only your delivery driver, but also to friends who may also need to leave items in the box for you or for whom you need to leave an item that they will pick up later.

Your box is now a pretty good example of asymmetric cryptography, the technology behind public key encryption. Granted, the example broke down a little in the end because it would allow for the thief to use his copy of the delivery driver's key to unlock the box whenever you placed a return in it but in the digital world you wouldn't place anything in the box that you weren't okay making accessible to anyone with a copy of the delivery driver's key anyway, regardless of how they got it.

In the digital world you are protecting data, not lock boxes, so let's get into that context. Suppose I want to send an important email about our planned product releases from headquarters to co workers all around the world. Corporate espionage has been a problem lately so it is important that I encrypt the message and that only the intended recipients can decrypt it. On the other hand, it is also important for the recipients to have confidence that the email really came from me in the first place. So I am going to encrypt the message using my private key that only I possess and the recipients will decrypt it using the public key I issued them. All of their copies are identical. Reflect on the lockbox we built. The delivery driver can unlock the box if and only if you locked it in the first place. It's the same in public key encryption. The public keys you have issued can decrypt a message of yours if and only if it was encrypted using your private key in the first place. So, the act of successfully decrypting the email from you using the public key you issued is in itself proof that it was encrypted using the private key that only you possess thereby proving that the email did indeed come from you.

Put in other terms, my private key is run through a mathematical process against the email I am sending that scrambles the email such that only the public key can be used to mathematically descramble it.  And that in essence is the magic behind public key cryptography.  Want to try it for yourself?

That's all there is to understanding public key encryption! We hope that this article has given you a better understanding of how PKE works as it is a very important building block to other technologies we will discuss in future articles. We also hope that this article has sparked ideas about areas within your enterprise that could benefit from the implementation of PKE. If you do have ideas to discuss, we'd like to discuss them with you! Please call us at 833-POLYRIFIC or send us a message to learn more!