ION is a public, permissionless, Decentralized Identifier (DID) network that implements the blockchain-agnostic Sidetree protocol on top of Bitcoin (as a 'Layer 2' overlay) to support DIDs/DPKI at scale.
- ION is public and permissionless - the system is decentralized, no company, organization, or group owns/controls the identifiers and PKI entries in the system, and no one dictates who can participate.
- ION doesn't introduce new tokens/coins - Bitcoin is the only unit of value relevant in the operation of the on-chain aspects of the ION network.
- ION is not a sidechain or consensus system - the network nodes do not require any additional consensus mechanism.
By leveraging the blockchain-agnostic Sidetree protocol, ION makes it possible to anchor tens of thousands of DID/PKI operations on a target chain (in ION's case, Bitcoin) using a single on-chain transaction. The transactions are encoded with a hash that ION nodes use to fetch, store, and replicate the hash-associated DID operation batches via IPFS. The nodes process these batches of operations in accordance with a specific set of deterministic rules that enables them to independently arrive at the correct PKI state for IDs in the system, without requiring a separate consensus mechanism, blockchain, or sidechain. Nodes can fetch, process, and assemble DID states in parallel, allowing the aggregate capacity of nodes to run at tens of thousands of operations per second.
-
Build and run
sidetree-bitcoinmicro-service. This micro-service depends on a Bitcored node. Instructions can be found in thesidetree-bitcoinREADME.md. -
Build and run
sidetree-ipfsmicro-service. Keep in mind soon you will need to build and runsidetree-ipfs-referenceinstead.- Clone the repo and go to the root folder.
- Run
npm ito install dependencies. - Run
npm run buildto build the service. - Run 'npm start` to start the service.
-
Build and run
ion(this) core service which depends on the micro-services above.- Install MongoDB on local machine (or subscribe to a MongoDB cloud service), this is used for state keeping for the node.
- Clone this repo and go to the root folder.
- Run
npm ito install dependencies. - Modify
json/config.jsonaccordingly. Some parameters of interest:- Update
operationStoreUrito point to the MongoDB configured earlier. - Update
didMethodNametodid:ion:;
- Update
- Run
npm run buildto build the service. - Run 'npm start` to start the service.
TBD