ChromaWay has a complete open source enterprise platform for colored coins. Today it is used in real-world applications for the finance sector with thousands of transactions on the Bitcoin network.
Tested on real-world cellphone connections such as on the Stockholm subway train you see above.
Our default protocol is the result of a thoughtful evolution of the first colored coins software in existence, that we implemented in 2012. A conservative approach towards the protocol design allows us to achieve best-in-class scalability and security. Also, the protocol is free of arbitrary limitations, as it doesn't rely on OP_RETURN, but instead encode asset values in outputs' Bitcoin values. And thus it is flexible enough to power advanced applications, such as a real-time trustless exchange.
But we aren't limited to a single protocol. ChromaWay platform was designed to support multiple protocols via a pluggable interface. We do not believe that one size fits all and are ready to customize and tune the protocol for the needs of a specific applications (which often do not boil down to a simple asset transfer).
Frontend. Designed for security and mobility
The design considerations for our open source mobile wallet is that it should confirm to the best practices for security, and even surpass them. At the same time, we also care about usability. It is critical that the wallet should work well even when mobile network connectivity is unreliable.
Private keys are kept only on the device itself.
No trust on a server. Instead of trusting a server the clients themselves are bitcoin clients. But they don’t need to download a full bitcoin history, instead they can need a smaller amoung of data, the blockheaders. This is called SPV.
Small codebase to audit. We use the same source code both on Android and iOS, thus decreasing the chances of bugs compared to two separate codebases.
What is wrong with trusting a server? A server can be compromised. Decentralization of trust is important for cryptocurrencies.
User experience features:
Deterministic wallet: private keys are generated from a seed, which is itself represented by a mnemonic: a sentence made up of random words.
Users get a backup of their wallet by writing down the sentence.
No account needed, all you need to do is download the app from an app store.
The wallet code supports network connectivity being unstable. The wallet continues to work when the subway enters a tunnel.
Backend. An open source full stack
A desktop wallet with advanced features. It allows user to work with multiple assets (including Bitcoin) and to issue assets of his own. A batch mode allows one to send assets to many recipients at once with great efficiency. p2ptrade™ allows users to trade assets in a trustless way.
ChromaWallet Professional can run in server mode and has a built-in JSON-RPC API.
ChromaNode is a high-performance open source Bitcoin data API which enables SPV and supports notifications via websockset protocol. It indexes the Bitcoin blockchain and provides data to clients. In particular, it sends notifications about transactions and confirmations (blocks). ChromaNode is built with a scalable architecture allowing a distributed configuration where several servers cooperate to serve the data.
CWPP. The ChromaWay Payment Protocol.
The ChromaWay Payment Protocol allows merchant and customer software to communicate using a special service. The interactive payment process enabled by CWPP enables a great flexibility and eliminates problems associated with non-interactive protocols. In the case with Cuber, CWPP allows merchants to cover Bitcoin fees, thus making it much more convenient for users, as they don't need to maintain a separate Bitcoin balance.
Using the API
For a server-side solution you can use the ChromaWallet API. This tutorial explains how to use it in an exchange or a shared wallet context.
Coding a client
Making custom clients based on ChromaWay platform is very easy. As an example, we have implemented a simple faucet in 88 lines of code.
These node.js libraries are used both on the back-end and the front-end.
- blockchainjs: provides access to blockchain data and implements Simplified Payment Verification.
- coloredcoinjs-lib: implements colored coin calculations.
- cc-wallet-core: a colored coin wallet core, everything from computing balance to sending a transaction.
- cc-wallet-engine: provides a high-level wallet interface, implements CWPP.
Main external dependencies: bitcoinjs-lib, bip39, browserify, crypto-js.
ChromaNode is the backend service which indexes the Bitcoin blockchain and provides data to clients, particularly, it sends notifications about transactions and confirmations (blocks).
Tech keywords: HTTP, Websockets, PostgreSQL, node.js
CWPP service facilitates communication between merchant's and customer's clients using CWPP protocol, handles bitcoin transaction fees.
Web and mobile wallet prototype can be used as a basis for a custom web and/or mobile wallet. It can work with hard-coded assets (which is important for security and users' convenience), send and receive transactions, show history, etc.
(Cuber code is currently private, but it is based on this code)
Chromawallet Professional is based on NGCCCBase platform which can be further customized or serve as a base for desktop or server platforms.
Tech keywords: Python, Qt, pycoin.