After blockchain technology hit the scene, the world quickly wanted more. Bigger, faster stronger. Blockchains popped up to do everything from summoning taxis to paying your electric bill, the magic solution to the future. But, by far, the biggest impact has been the computing blockchains and their promise of smart contracts.
Computing blockchains, like Ethereum and NEO, are intended to allow the execution of a program on a blockchain. These networks boast turing complete programing languages that allow contracts to be executed on chain. The programs activate on at the behest of someone who holds a token. Once activated, all the work is done by an impartial miner who has his work checked by the rest of the network. The results are stored on chain and protected by those same miners. Control of the network is distributed and everyone is happy.
But this solution creates more problems than it alleviates. Doing on-chain computing means a greater risk profile when coding. Not only are you worried about your own code, you have to contend with blockchain software that’s growing increasingly complex with every update. And those updates can’t be abandoned either… Ethereum is already struggling to find a way to scale after a cat trading app brought the network to its knees. Many businesses agree that turing complete smart contracts just aren’t ready for primetime.
Less is more
In the world of computing, layers of abstraction are a widely used design pattern. Thanks to the the invention of the internet, a web developer doesn’t have to know how an IP network or a browser works, they only have to write html. When writing a smart contract using Factom as a storage medium, a developer doesn’t have to contend with the complexity of how blockchains work and can focus on developing a user-friendly app.
The most popular model of smart contracts currently, is that everything is forced into one language, one blockchain. In fact, smart contracts can’t even see or interact with data that doesn’t live directly on the blockchain of origin. You’re locked into using whatever information you code into your program; greatly limiting the use cases available.
Smart contracts on the Factom® Blockchain work a little differently. Factom doesn’t require you to use a certain language or to force a token into your application. You aren’t limited to use cases that can be handled entirely on chain. With Factom, you can use any language you want to write your contract. Better yet, the Factom Blockchain is built to incorporate data from other sources, making it simple to use that data as an input to the contract.
With Factom, a smart contract only needs three things: an input, an output, and the rules that need to be followed in between. Initial and final states are stored immutably on chain. As with any other hash based blockchain, the results are tamper evident, meaning states cannot be altered after the fact. And these states can be infinitely more complex than a token address. Rather than limit you to a single number, Factom can accommodate any format of data because that’s what Factom does best.
When executing a smart contract, the work is done off chain. The rules of your contract are stored on chain, including the program that needs to be run. If it’s simple enough to describe on chain, fine. If not, simply include a link to GitHub or some other repository of your choice. This means anyone can check your results, offchain, by comparing your output to what they get on their own. Sharding is unnecessary since calculation isn’t done on chain. Instead, you’re able to leverage Factom’s incredible scaling potential. In the long run, sharding will be necessary to scale, but it will be sharding of pure data rather than sharding of computations.
For some, building a smart contract on Factom is something to aspire to. For those of you in Chicago this fall, it could be a reality. We’ll be hosting a Hackathon this September 29th at Northwestern University to see who does it best. Judges from Perkins Coie, PWC, Factom and Northwestern will be on hand to award the first prize winner with the customary $5000 prize. Sadly, it’s not yet enforced by smart contract… but we’re hoping you can help with that.