We have open-sourced the multichain project: a set of common interfaces and modules that can be used to implement access to any kind of blockchain. This is the API standard used by RenVM; any asset/chain added to the multichain can be considered for support by RenVM.
Check it out at https://github.com/renproject/multichain and open a pull request for your asset/chain! The Ren team will help implement it, review it, and merge it. Once this has happened, it can be considered for support in RenVM.
Every blockchain is its own universe. Every blockchain defines its own rules, its own currencies, and its own logic. Every blockchain has its own way of thinking about networking, transactions, smart contracts, and consensus. This is no accident. The reason someone might think to create their own blockchain is precisely because they want to do something differently to how everyone else is doing it.
In a way, every blockchain speaks its own language, and this presents a unique challenge for interoperability: how does a protocol like RenVM learn about all these languages? In order to support interoperability between all chains, RenVM needs to be able to speak all of these languages. It must be able to understand all of the different ways in which networking is done, transactions are built, smart contracts are written, and consensus is reached. It must not only do so for chains that exist today, but also for chains that are yet to be built.
The solution to this problem: the multichain.
The Multichain
The multichain is a collection of functions, types, interfaces, and runtimes that can be implemented for any blockchain. Some chains have things in common, and the multichain is designed to accommodate for that. But, most chains have their unique differences, and the multichain is designed to accommodate for that too.
For example, Zcash is a fork of the Bitcoin codebase, and shares many things in common with it (e.g. the structure of UTXOs). But, Zcash is obviously very different from Bitcoin: addresses are encoded differently, transactions are serialized differently, and Zcash supports powerful privacy features. In the multichain, the implementation of Zcash shares the same interface and runtime as Bitcoin, and it even uses many of the same functions and types. But, the Zcash implementation overrides these commonalities where necessary, to support the aspects that make it unique. The same is true for Bitcoin Cash, DigiByte, Dogecoin 🐶, Zcoin, etc.
By adding a chain to the multichain, RenVM (and any other project that uses the multichain) will be able to understand how to interact with that chain. The multichain is usable by any project that wants to interact with multiple exchanges: cross-chain dapps, exchanges, other interoperability protocols, etc. and it is not specific to RenVM. An important consequence of this is: support in the multichain does not imply support in RenVM, it just creates the possibility for support in RenVM.
Existing Chains
Today, the multichain supports Bitcoin, Bitcoin Cash, DigiByte, Dogecoin, Ethereum, Substrate, and Zcash, with others already on the way. All of these implementations are open-source and available under the GNU GPL v3 license. They’re free to use for every project because we believe there is lots of value to be gained by everyone from the multichain.