Proof of Stake

From HoboNickels Wiki
Revision as of 21:40, 7 December 2014 by Tranz (Talk | contribs) (Created page with "Hobonickels use a Proof of Stake system, coupled with Proof of Work. Proof of Stake (PoS) is an energy efficient method of securing a coin's block chain. Typically crypto-curr...")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Hobonickels use a Proof of Stake system, coupled with Proof of Work. Proof of Stake (PoS) is an energy efficient method of securing a coin's block chain. Typically crypto-currencies use Proof of Work (PoW) blocks that reward miners for using their valuable computing power creating hashes to confirm and create coinbase transactions and therefore maintaining the blockchain. PoS mining does not require the intense computing to secure the block chain, it instead requires a small amount of CPU power, and some coins, to create new blocks within the network.

Benefits of Proof of Stake

A benefit of PoS system in comparison to PoW is that PoW alone can be prone to 51% attacks. A 51% attack is when a node, or a network of nodes, are able to achieve over 51% of the network hashing power of a particular coin, and therefore able to control the majority of the security of the particular coin allowing for dual transactions, chain forking, and other damaging attacks. To launch a 51% attack on a PoS coin the attacker would need both 51% of the network hash and a high percentage of the network stake weight. This creates a significant obstacle to potential attacks, as the attacker would need to acquire the coins in some way, either spending a lot of hashing power or buying them. An attack on a PoS coin would be against the interest of the attacker because it would damage the coin they hold.

Minting Proof of Stake Blocks

To mine PoS blocks, you must hold your coins in a wallet client or coin daemon. In order for coins to begin minting they must be held in a wallet that is not encrypted that is connected to the network after it has matured (10 days for HoboNickels).

Coin Age

Letting coin blocks age is vital to successfully staking. The age of a block of coin is measured in terms of stake weight. Stake weight is calculated by taking the amount of coins held in a single block and multiplying it by the number of days that have passed. As simple arithmetic confirms, holding more coins in one block of coin will produce a higher stake weight and therefore will be more likely to stake close to the ten days.

Staking HoboNickels

HoboNickels become eligible for stake, or "mature", after 10 days. Although a block of HBN may be eligible for stake, they are not guaranteed to stake right away. Mature blocks are competing with other mature blocks to successfully stake. Blocks with the highest stake weight have the highest chances of staking. Staking smaller blocks can take 20+ days depending on block size, the time connected to the network attempting to stake, and the network stake weight.

Currently successful stakes give 100% annual stake (or ~2% per 10 day stake) of the total amount of coins that are in the block staking. The stake reward can differ depending on the network difficulty, when the network difficulty is low staking can reach upwards of 100% annually, when network difficulty is high staking can be as low as 1% annually.

After a successful stake, the coins will be split into two blocks. If an HBN block stakes it will be destroyed and the wallet will be given two equal sized blocks containing the stake reward and the split the original coin count. A likely staking scenario would be a 1,000 HBN block that stakes on day ten and turns into two blocks of 510 HBN. The coin age cycle restarts after staking and the two new blocks will be ready to stake in another 10+ days.

Outgoing Transactions and Age

Outgoing transactions destroy the coin-days of a given block and will prevent HBN blocks from staking because the block is destroyed and replaced by one or two more blocks. For example a wallet that holds a 1,000 HBN block that has aged for five days and is then sent to another address will be destroyed by the network and then deliver a new block to the recipient address thus resetting the coin age to 0. If a wallet holds a 1,000 HBN block and transfers 30 HBN of the block to another address then the block will be destroyed and a new block of 30 HBN will be delivered to the recipient address and a "change" block will be added to the sender's wallet with 970 HBN minus transaction fees.

Incoming Transactions and Age

Incoming transactions do not change coin age. An incoming transaction adds additional coin blocks to a wallet, existing blocks are not altered and continue to age.

Coin Control

It is recommended to utilize coin control when sending HBN in order to optimize the staking process by selected coins of lower coin age or closer to the amount needed to be sent preventing the software to split a mature or almost mature block.

Wallet Setup

The HoboNickels wallet has been designed to be user friendly for PoS minting. Wallet versions and beyond require no additional steps to mint coins, you simply generate an unencrypted wallet that you intend to leave untouched for ten days, send the coins to the wallet, and wait with the wallet on or offline during the aging process. Once the blocks have successfully aged, connect to the network and you will now be competing for stake.

To allow an encrypted wallet to stake, see below:

Open the QT wallet client

On the top bar locate Help and click Debug Window

Type into the console: walletpassphrase <yourpass>

For example: walletpassphrase mybadpassword 999999

For multiple wallets: usewallet <mywallet> walletpassphrase <password> 9999999

"mybadpassword" would be the password for the wallet (the same password that your encrypted with) and 999999 represents the number of seconds the wallet will remain unlock - this needs to be at least 10 days (864,000), but longer is suggested because staking often times doesn't happen right at the 10 day mark.

There is an optional parameter that can be passed to walletpassphrase which will prevent an unlocked wallet from sending coins via RPC Command. To use this your command would be as follows:

walletpassphrase <password>

After you have successfully completed the described steps, you should see coins stake after they reach the appropriate age. PoS minted coins will be received just like any other coin transaction is received, but will be labelled as PoS.