The Blockchain and Smart Contracts
There has been a lot of hype about the blockchain and cryto-currencies as of late, and while it is impossible to augur what the future holds, I believe that this domain provides useful and interesting technologies that will ultimately provide enough value so that, ignoring specifics, they are here to stay.
Of the currently deployed technologies, I think the Ethereum Project is one of the more interesting. Ethereum provides a Turing-complete virtual machine on the blockchain, allowing any number of pieces of small, working software (called "smart contracts") to be deployed and executed. The associated currency, ether, is what is used to pay those running the blockchain to, well, run the blockchain.
Personally I find this more interesting than, say, Bitcoin. Bitcoin acts as a store of value, but basically that's all that it provides. With the Ethereum Virtual Machine (EVM) useful things can be performed on the blockchain. Most of the competing blockchain technologies that are being developed now seem to be of the "lets do what Ethereum does, but let's add something important" variety, which lends credence to the assertion that the Ethereum project may be on to something.
I have been doing a little smart-contract development professionally, and I have published a tutorial on smart contract development. It is not intended to teach the specifics of the blockchain or Solidity programming (the de facto language of the Ethereum blockchain). Moreover it is intended to show how to create a development environment, compile, publish, and interact with code on the public blockchain. This is a rapidly developing domain, so I figured that such a tutorial may be useful to people. All of the information is out there, but it is scattered about, and I think there is some value is collating it in an easy-to-find place, along with sample code, testing harnesses, etc.
It walks through:
- Installing and using the software, including the compilers, clients, and frameworks.
- Creating a project
- The TutorialCoin contract (an ERC20-compliant using the Open Zeppelin framework)
- Testing the code
- Using parity to deploy a contract
- Interacting with the contract
- Publishing source code
If you're interested in Ethereum development, check it out!