MultiChain is fully compatible with the Open Assets protocol and reference client

Open Assets is one of several protocols for issuing and transacting assets over the bitcoin blockchain. The reference implementation of Open Assets is colorcore, which acts as a wrapper for the Bitcoin Core reference client for bitcoin, providing a command line and RPC server for asset operations.

MultiChain is fully compatible with Open Assets and colorcore. This enables applications which use colorcore on the bitcoin blockchain to be easily ported to a private blockchain, without modifying any of the application or colorcore code.

These instructions assume you are using MultiChain 1.0 alpha 4 or later.

Creating a colorcore-compatible private blockchain

You should begin by downloading and installing MultiChain. Now let’s create a private blockchain which is compatible with colorcore:

multichain-util create colorchain

The name colorchain can be changed, in which case the corresponding changes should be made to the rest of these instructions.

Now edit ~/.multichain/colorchain/params.dat to change the following settings:

initial-block-reward = 5000000000
address-pubkeyhash-version = 00
address-scripthash-version = 05
private-key-version = 80
address-checksum-value = 00000000

Then add the following lines to ~/.multichain/colorchain/multichain.conf:

txindex=1 (this is required by colorcore in any case)
hideknownopdrops=1 (this hides MultiChain metadata from its API responses)

Now the MultiChain blockchain can be started in the usual way:

multichaind colorchain -daemon

Check everything is OK by running:

multichain-cli colorchain getinfo

Installing and configuring colorcore

Make a copy of the rpcuser and rpcpassword values from ~/.multichain/colorchain/multichain.conf as well as the default-rpc-port value from the ~/.multichain/colorchain/params.dat file.

Follow the colorcore installation instructions and use the following settings in colorcore’s config.ini file:

blockchain-provider=bitcoind
rpcurl=http://[rpcuser]:[rpcpassword]@localhost:[default-rpc-port] where the values in [] are substituted with those you noted earlier.

You can test that everything is working by running a colorcore command like:

python colorcore.py getbalance

Depending on your version of Linux, you may need to use python3 instead of python above, and pip3 instead of pip during colorcore installation.

Configuring additional nodes

To configure an additional MultiChain node, first obtain the node address from the first (or any subsequent) node in your private blockchain. This is displayed on the command line when the node starts up or can be obtained from the nodeaddress field of the response to multichain-cli colorchain getinfo. Assuming you followed the example above, the node address will begin colorchain@...

Download and install MultiChain on the new node, then try connecting to your blockchain:

multichaind colorchain@... -daemon

You should see an error message about requiring connect permissions, and you should add permissions on the first node for the address displayed. Before running MultiChain again, add the following lines to ~/.multichain/colorchain/multichain.conf on the new node:

txindex=1
hideknownopdrops=1

Now you can run MultiChain again, and this time you should connect successfully:

multichaind colorchain -daemon

Follow the instructions above to install colorcore on this second server in the same way as the first.

That’s it! Now you can use colorcore over a private blockchain in exactly the same way as over the bitcoin network.