Traditional paper contracts may vanish. Dishonest people may try to fool you (and succeed). Court disputes may live through months or years dragging discussions that would be quickly over with a blockchain-based legal contract. We envision a system where anyone with access to the internet, no matter their technical level or background, is able to transform their paper contracts into smart contracts on the blockchain and use them as legal assets. Smart contracts are still not law in most places, but the American states of Arizona, Nevada and Vermont have already introduced legislation that legally recognizes smart contracts, and France has started discussions on smart contract legislation. Besides that, the city of Zug has started official support to digital IDs based on the blockchain, which increases our perspectives for law on the blockchain.
What it does
Bond is a contract management platform based on the Ethereum blockchain. Our aim is to provide an easy and intuitive way for everyone to enjoy the security and power of Ethereum smart contracts.
The purpose of smart contracts is to prevent parties from failing or refusing to fulfill their agreements. Therefore, we need to be sure that people are who they claim to be. Bond relies on uPort to authenticate its users, and to verify that their digital identities match their real life ones.
With our Bond prototype developed during this hackathon, a scanned version of your flat rental contract or second hand vehicle sale can have its blockchain version created and deployed within a few clicks, thanks to our AI techniques that extract all the necessary information and our modular Ethereum smart contracts. Both parties sign the contract on the blockchain, at which point its rules are effective, and the bond simply cannot be broken.
How we built it
Bond has three technical aspects: 1) Our front-end is written with React-JS using Web3 for Ethereum integration, uPort for identity verification and IPFS for large data storage. 2) The AI module uses OCR and NER to automatically extract information from scans of legal contracts. A flask server is used for backend. 3) We've developed generic smart contracts that represent legal contracts on the Ethereum blockchain.
Challenges we ran into
Smart contracts cannot store very long strings, which we needed for the descriptions of the legal contracts. We came up with the idea of using IPFS to store these descriptions and only store their IPFS hash identifiers on the blockchain. With this solution, the data remains secure and easily accessible. We had never used IPFS before, so it was a little tricky.
On the front-end side, we didn't want to use Web3 contracts (default with uPort), so we decided to use Truffle contracts with the Web3 provider given by uPort. It took us a while to get this integration going perfectly.
Accomplishments that we're proud of
After 30+- hours of hackathon we have a prototype that can be used right away by anyone that wants to transform their paper contracts into Ethereum smart contracts in an easy and intuitive way.
What we learned
We all learned new techniques. Having diverse technical backgrounds was fundamental to get all the parts of our system working.
What's next for Bond
In the future, we would like to extend our range of smart contract modules for different types of contracts, as well as increase the quality of the PDF automatic information extractor.