MDD and Ethereum: What a Lovely Pair

So, after hearing about blockchains for the past couple of years, I finally got around to sitting down and reading a little about the Ethereum platform, since that seemed the most interesting to me. And, after reading some of the general documentation, I became very intrigued when I learned how it was a developer-friendly platform. The usage of memory like C, the concept of gas, a new model of deployment and execution…Seemed like a mix of the old days and the future. How novel and fun! After becoming acquainted with the technical docs, I saw that the most popular language to write Ethereum contracts (i.e., classes) was Solidity…and reading that got me, as they said in my generation, stoked. In fact, this part brought metadata-driven design to mind:

As already mentioned, the address of that contract is not the zero address but an address derived from the sender and its number of transactions sent (the “nonce”). The payload of such a contract creation transaction is taken to be EVM bytecode and executed. The output of this execution is permanently stored as the code of the contract. This means that in order to create a contract, you do not send the actual code of the contract, but in fact code that returns that code.

Now that sounds like MDD to me! So, like the old days, you gotta follow the rule: learn the platform before you develop on it. So, I got a crash course in how to deploy my own local blockchain with the help of my betters, and with an elementary understanding, I felt comfortable enough to move on. I downloaded the Truffle framework, along with the easy-to-use Ganache blockchain (I like shiny buttons!), and I got cracking! In short time, I had created and deployed a few contracts of my own. Soon after, I started to look online, trying to find inspiration from other “Dapps” that were already deployed on the mainnet.

And it was then that I noticed something: for being a platform that was so focused on transactions, where were the libraries and Dapps that helped to control transactions? You know, something like a business rules engine? Maybe even a rules engine and DSL based on MDD? Realizing that I had stumbled on a need yet to be fulfilled, I started to create my own proof-of-concept for just that. It took a few days worth of work, but I now have a working example of an Ethereum rules engine. It’s still rough around the edges (especially since I haven’t mastered the gas efficiency aspects of the system – gimme a break, I’ve only known it for a few weeks!), but I think that it shows the potential benefit of such functionality inside a transaction-based system. I plan to continue its development within the next few months. If you have any thoughts about it, be sure to let me know!