While it seemed trivial and straightforward at first, it proved to be quiet a challenge as we delved deeper into it!
Early on we decided to use only the bitcoin-core to host our reg-test network and bitcoin-cli to create, validate and broadcast transactions inside our POC implementation. By sticking to the reference node and client implementation, we thought we would make it easy for Dr. Eyal and many others who would want to dig deep into our Layer 2 protocol.
bx
But, as many of you would have guessed by now, bitcoin-cli does not support signing transactions with custom scripts and smart contracts. So we had to find an alternative utility/tool to sign the transactions in our framework/protocol. Luckily we found libbitcoin-explorer (bx), a command line tool similar to bitcoin-cli but much more flexible and powerful, to sign transactions with the needed smart contracts for our protocol.
And then we sought a high-level language to develop, refine, and test our Bitcoin smart contracts. While we could have written our smart contracts using OPCODES, that would be akin to programming in assembly language—unintuitive and difficult to understand. We wanted a more accessible and user-friendly approach both for us and others who want to understand the nuts and bolts of the Smart Vaults™ protocol.
After many weeks of exploration and experimentation, we chose Ivy Language and Ivy Playground to develop and test our smart contracts. We found it extremely easy to both create as well and test Bitcoin smart contracts using Ivy Playground. Kudos to the team at Chain for developing such an easy and powerful language to author Bitcoin scripts and making it freely available to all of us.
At this point, we had everything we needed to create our POC but it was still an uphill battle to make all these things play well with each other. After weeks of sleepless nights, our POC was finally ready and we set up a node in the cloud for Dr. Eyal and other researchers to try the POC implementation.
The POC helped Dr. Eyal and his team to further evaluate the Smart Vaults™ protocol and Dr. Eyal wanted to take the whole thing forward academically by generalizing the constructs and evaluating them in the context of various threat vectors and failure scenarios.
Honestly, I am not familiar with how academicians model these problems that we are trying to solve with Smart Vaults nor can I follow their logical constructs, derivations, and conclusions. All I know is that we have thoroughly evaluated all the scenarios and edge cases and Dr. Eyal has done the same using formal proofs.
In the end, the POC implementation helped us understand our technology in a much better way and prove the merits of Smart Vaults™ to a wider audience.