Shards

From wiki.cellframe.net
Jump to navigation Jump to search

The basic architecture of Cellframe shard is equal to ZeroChain and uses the same library toolkit for maintaining and running blockchain.
Each shard is secured by its own fuel chain with PoW/PoS consensus.
Each shard is an isolated logical unit, connecting several blockchains (public or private) to interoperability sub-network by means of AURA (a tool for inter-blockchain bridging, integrated into Cellframe framework).

The M1 master node is announced by a standard routine:

  1. A single transaction with an amount of stake lock is made to the PK/wallet that is supposed to become a master node.
  2. A transaction hash from step 1 is used in the node configuration process as a master node initialization key in conjunction with a line masternode=1
  3. As the transaction has 100+ block depth, i.e. it’s more than a 100 blocks mature, so all the active network nodes will have the block with it for sure, a masternode is started and is announcing itself as a masternode and at that moment a service message with the TX hash is broadcasted across the network.

So in time, the master node will be selected for participating in a block finalization process and will receive the reward for that. If not elected but active, it still participating in the blockchain consensus. The M2 master node is started in a way more complicated routine due to its role. The the key difference is that if for an M1 master node all we have to do is to lock a stake and we need to do it once, for M2 master node we do have a need to amend it’s detailed as new M2 nodes will rise because cross-staking forces the existing shards to stake up the coins of the new ones lately, so the new wallet addresses have to be published in a zero chain. So it goes as follows:

  1. The announce service message is imprinted inside a zero chain: it contains the public key(s) for signing the shard-related data, weight, and quorum for a multisig if it’s used, a list of wallets for all the active M2 shards’ fuel tokens at the moment of creation/announcing.
  2. If the amount of funds in fuel tokens is not enough, a monitoring phase begins: all other M2 shards are periodically checking that the balance increase is above the pre-defined ratio for all the fuel tokens on the new M2 node’s accounts, and if this rule is broken - the announce is treated as invalidated and marked as one with a signature of all the active M2’s.
  3. If the staking requirement is fulfilled - then all the active M2’s are signing the activation message in zero chain and the M2 node and its shard are becoming active from this very moment and its fuel token blockchain is started. Also, as this message is propagated - all the members of the M2 node, if any, are opening their p2p endpoint listener for shard-related service requests. Also on DEX on zero chain the new fuel token is automatically listed and an initial amount of it is put on a trade.
  4. The active M2 nodes are automatically opening their wallets in the fuel token of a new shard and are amending their descriptors in zero chain blockchain with wallet addresses.
  5. Monitoring is started for an active M2’s to stake up the fuel token of a new shard - with exactly the same criteria as a new node was monitored in step 2.

The channel of obtaining the tokens is fully up to the shards’ owners - a global DEX is just for convenience purposes only, it’s not a mandatory channel.