We are excited to share the second developer update for Crypto.com Chain, the high performing and secure public blockchain solution powering instant crypto payment transactions between customers and merchants, anywhere, for free.
Topics covered include:
- Crypto.com Chain open source testnet prototype code available on Github.com;
- Details on the initial prototype’s accounting model and signature schemes;
- Updates to the Crypto.com Chain Technical Whitepaper.
Crypto.com Chain Goes Open Source
The preliminary testnet prototype code has been put up on Github, the popular open-source code repository hosting website: www.github.com/crypto-com/chain.
The code is released under the Apache License (Version 2.0). Subject to the terms and conditions of the license, users are granted “a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.” We believe such inclusive nature of the Apache license will encourage continuous development and integration of Crypto.com Chain’s code in third party software.
The code on Github is preliminary and experimental: we expect to continue adding features and updating the code in the coming months to improve functionality and stability.
In the meantime, everyone is welcome to clone the Github repository and experiment with it. You can find the instructions in the README file.
For prospective contributors, please read the contribution guidelines in the CONTRIBUTING file. This file is also a good start if you would like to report any issues, request features, or add your own code to the project. Our development team will address these items, as described in the contribution guidelines.
Ongoing Bounty Program
In addition to this, our bounties on BountySource are still in process and we welcome more submissions. We would like to thank kazcw, wews64, and denim2x for their undergoing contributions that address some of the selected issues.
Accounting Model and Signature Schemes
Similar to Bitcoin, the Crypto.com Chain prototype uses the UTXO (unspent transaction output) model for transaction accounting. The key difference is in types of outputs: whereas outputs types are flexibly “programmable” in Bitcoin (using Bitcoin Script), Crypto.com Chain uses a fixed set of output types that capture essential functionality.
Currently, there are two types of transaction outputs in the Chain prototype:
- Outputs locked against an Ethereum-style address: this type of outputs could be unlocked using Elliptic Curve Digital Signature Algorithm (ECDSA). These outputs are mainly used to ensure backwards-compatibility and for initial “redeem” from a snapshotted ERC20 state.
- Outputs locked against the root of a Merkle tree of public keys: this type of outputs could be unlocked by providing a leaf (public key), a Merkle path and a Schnorr signature. This type allows compact encoding of accountable threshold transaction authorization, thus they can be used in many applications, including escrows. For more information, we recommend these two articles:
To implement the signature schemes mentioned above, we plan to use the same elliptic curve cryptographic library as is used in Bitcoin and Ethereum, so that existing private keys can be used to sign transactions on the Crypto.com Chain.
We currently maintain a fork of the Rust wrapper around the secp256k1 C library: https://github.com/crypto-com/rust-secp256k1-zkp. We plan to migrate our code to the upstream library, once the additional functionalities (Schnorr signatures and MuSig) land in the Bitcoin Core codebase.
Technical Whitepaper Update
As the Chain prototype is being developed, we have updated the Crypto.com Chain Technical Whitepaper (first published in December 2018) accordingly, in particular the Consensus sub-section. This part now contains more details with regards to Tendermint Core that was mentioned in Crypto.com Chain Dev Update #1.
Coming Up Next
We are working on several tasks, including, for example, a flexible architecture for building clients that will help wallet implementations and third party integrations.
Once they materialize, we will reveal more details in the next dev updates.