Skip to content

Latest commit

 

History

History
141 lines (105 loc) · 6.87 KB

WHITEPAPER.md

File metadata and controls

141 lines (105 loc) · 6.87 KB

Abstract

Bitcoin and other cryptocurrencies have proven that cryptocurrency capable of holding value. Human Money aims to take what can be learned from Bitcoin and approve upon it. The value of a Bitcoin is more volatile than a tradition currency. This volatility makes it difficult to use as a currency. Human Money solves this issue by pegging the value of a Human Dollar to the value of US Dollar. This has proven to be successful in other cryptocurrencies such as NuBits.

Human Money uses a hybrid consensus/proof of work system to provide consensus and prevent the double spend issue.

Human Money uses the same methods as the Stellar Consensus Protocol (WHITEPAPER) to maintain consensus however there is only one quorum. To join this group a new node must solve a proof or work problem and have it verified by the network.

Mining

To maintain the peg miners mine shares of the network instead of mining new currency directly. Shares are mined by hashing blocks similar to bitcoins are mined in the Bitcoin network. However, Human Money blocks don't contain anything related to transactions.

To mine a block miners encode the block using a Protocol Buffer and calculate a SHA256 Hash of the result.

Block Contents

Property Description Example Value
Last Hash The previous hash in the work chain 320c63b05ab3ddc45ca6b54dc414b56a2ed64fac
Public Key The miner's public key b110bf3d84bacb1cfefb805e0551c4d0c470276836147ad8f5311ea34b790c3b
Nonce An integer which is incremented until the target is hit 57

If the hash value is larger than the targeted value the miner increments the nonce value and tries again. If that hash value is smaller than the targeted value the miner has mined a share.

To redeem that share the miner must setup a Human Money node. The miner then sends the hash they calculated to their node and the node submits it to the network. Once the network has reached consensus that the solution is valid the miner rewarded one share.

Nodes start in read-only mode and are only included in determining consensus after they've mined at least on share.

Difficulty

Like the Bitcoin network, the difficulty of mining shares increases over time by reducing the target value.

Eventually as difficulty increases it will be unsustainable to mine shares as the power consumed to mine them will cost more than the potential payouts.

Since the proof of work and consensus are separated consensus is still able to continue without any more shares being mined.

Signing a Transaction

To create a new transaction the sender encodes the following to binary using a protocol buffer

They then sign the transaction using the Ed25519 signature system and send it to a node.

Transaction Contents

Property Description Required? Example Value
Source The public key of the sender required df13773... (64 character)
Destination The public key of the recipient required 55a92009.. (64 characters)
Amount The amount to be transacted in base units (0.0001 USD each) required 15000
Nonce Used for consesus required 7

Reaching Consensus

Each action on the Human Money network has a unique sequential id. When a node receives a new transaction it will assign it a potential sequence number 1 greater than previous action's. The node will then sign the transaction and send it to all other nodes for signing. While transactions are in the propagating phase they may have the same potential sequence number. Nodes keep track of which other nodes have signed which transactions. At any point in time the network is a fixed size. Therefore a node can be aware when a transaction has been signed by all other nodes. Once this occurs that transaction goes into a nomination phase. A node should only be voting to nominate one transaction at a time. If a node is not currently voting to nominate a transaction it will hash all eligible transactions (those who have propagated to all nodes in the network) and the one with the smallest resulting hash will be submitted for nomination. If a node is voting to nominate a transaction and it receives a request to nominate a transaction with a lower hash it can change it's vote and send the request to all other nodes. Requests for transactions with higher hash values will be ignored. The network should converge on the transaction with the lowest hash value. Once the entire network has voted to nominate a transaction to that sequence number that transaction goes into a final round of signing. In the final round of singing nodes can not change their vote. Once all nodes have given their final signature that transaction is considered finalized.

Banning nodes

If a node is unreachable or is preventing the network from reaching consensus that node could be banned from the network. At any time any node can vote to ban any other node. If all other nodes agree to ban that node the node is banned and no longer included in consensus.

Groups of nodes can also be voted to be banned. If every node outside the group agrees to ban the group the group is banned.

Note that 2 groups can form and agree to ban each other creating 2 separate networks.

One node could also vote to ban all other nodes. It would reach consensus with itself and form its own single node network.

Dividends

To maintain the currency peg new currency must be created and distributed. When demand for Human Money rises above the value of a US dollar distributing more currency will increase supply and therefore drive down demand.

Any node can request a minting at anytime they deem necessary to maintain the peg. Like any event on the Human Money network the action is not carried out unless it's met with 100% consensus by of all the nodes.

The amount of currency created by the new minting is decided by the requesting node and should reduce the value of 1 Human dollar to the value of 1 US Dollar but no lower. When the currency is being bootstrapped this amount will need to be determined manually. After more widespread adoption occurs data can be aggregated from currency exchanges to calculate this value.

It's in miners best interests not to minting too much currency because that will over inflate the price. If the value of the Human Dollar drops significantly below the value of the US Dollar the value could quickly drop to zero making the minted money worthless.

Once the minting is accepted by 100% of the nodes the new currency is divided between the miners based on the number of shares they've mined.