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.