Bitcoin, Ethereum, and various other cryptocurrencies built on Blockchain technology have proven themselves as decentralized digital currencies, trusted worldwide as both a store of value and a medium of exchange by hundreds of thousands of traders, investors, merchants, users, and of course, thieves. The Blockchain's ingenious method of compensating verifying computers (Miners) with newly minted coins has created a powerful computing network that pays for its own growth: and in the case of Bitcoin, the single largest network of computing power in the world.
What's more, the Blockchain can revolutionize aspects of society other than currency. One major cryptocurrency, Ethereum, allows the creation of Smart Contracts: whereby code is embedded with transactions on the blockchain, which is then run by miners that monitor the conditions in the code, and execute the action when those conditions are fulfilled, and Cryptotokens whose holders are the interested parties in such contracts, able to vote or redeem goods or services from the issuer, or use it as proof of ownership.
What it does
I developed SmART as a smart contract system that allows owners to purchase the original copy of a work of digital art, and the owners get back a token that records in the blockchain the unequivocal proof that they purchased it, supported the artists, and are the true owners.
Anyone in the world can also run this client side app and connect to the blockchain to verify this, so this proof of ownership is able to be made legitimate without needing the force and maintenance of a central authority.
This makes ownership and resale of digital content in a market of artificial scarcity truly possible, since any unlicensed copy from the preview thumbnail will not have that sort of provenance or even quality of the original, let along the bonus content from the author that came with the original digital work of art.
How I built it
I used the Metamask browser extension to provide wallet capability, and the Ethereum Web3.js and Truffle framework to provide deployment to the blockchain and test driven development.
An Amazon AWS server is used to serve both a test blockchain and the client side app itself. In the design of these decentralized blockchain applications, no central server is actually necessary: the AWS server is simply acting as a mock blockchain node, and if another random person had run a node on their server to mine with my blockchain, a user could use that node equally. Thus, even if I discontinued my node, this app and its contract would still live on.
Challenges I ran into
Since Smart Contracts are such a new field, akin to programming computers for the first time in the 1980s, there is very little documentation on how to build such systems to an effective extent.
In addition, Smart Contracts make economics as important to the development of the app as advanced mathematics is to modern computing. At every level of the contract, we must consider the economic implications of ownership and sale of these tokens and what they will mean
What I learned
I learned how the Blockchain works, and how it can be applied to form entire economic markets. I learned how to use the Ethereum Solidity language to build smart contracts, and also the frameworks that make it possible to make decentralized apps that work on the browser.
As I overcame these issues with the assistance of online colleagues, I managed to weave together important concepts in developing blockchain systems that could be taught as introductory concepts in a Blockchain and Cryptocurrency club that my colleagues and I are founding at Penn State, so they can learn from our work and need not to make the same mistakes.
With another team, I envision that smart contracts could possibly make a decentralized rideshare system truly possible, with each driver's successful rideshare creating credits that they can use themselves to get a rideshare, or sell to riders. This could even function as a more efficient, functional, and fluid replacement for taxi medallions as used in NYC, which are licenses designed to enforce artificial scarcity and quality of the taxi service.
Smart contracts can also make crowdsales better regulated by the users that invest their money into these ventures. Currently, when a Kickstarter succeeds, the website simply gives the entire lump sum of millions of dollars to the pitcher, but does not provide the backers with any means of regulating how the pitcher uses their money. The result has been that the pitchers often misuse their funds and leave the backers with nothing to show for it.
A smart contract crowdsale system would provide each investor with a voting token that can be redeemed for the product at the conclusion of the crowdsale. Even though the money may be raised, it is held within the contract: The pitcher must provide a plan and specific pitch to the investors about what he would use a specific amount of money for. If the investors approve, they can give the pitcher 1% of the funds. If the pitcher ended up wasting the money, the investors could vote to dissolve the effort but get 99% of their funds refunded.
Clearly, the possibilities of smart contracts are as endless as our imagination can encode into programming and economics.
What's next for SmART
We aim to possibly provide an encrypted DRM licensing scheme to this existing blockchain license, so that only a cryptolicense holder can decrypt the original high quality digital artwork file with their valid license.
Such a file could be an archive with additional bonus commentary from the author on how the artwork was made to enhance the owner's appreciation. This way, ownership really means more than just the paper the license is worth (or in this case, tokens on the blockchain): it means that only one user can own a single special copy.