-
Notifications
You must be signed in to change notification settings - Fork 516
Proof of stake
Proof-of-stake is term referring to the use of currency itself (ownership) to achieve certain goals. In the NovaCoin proof-of-stake is used to provide mining and transaction processing on a par with proof-of-work.
Novacoin uses the mixed Coin-Age/CoinDayWeight approach to provide proofs of the stake. The proof-of-stake difficulty is adjusted so as to limit the rate at which new blocks can be generated by the network to 10 minutes target spacing rate. Due to the very low probability of successful proof generation, this makes it unpredictable which worker computer in the network will be able to generate the next solution.
It's performed through scanning all available inputs in order to find lucky one which satisfies this condition:
SHA256(SHA256(KERNEL)) < CoinDayWeight * NetworkTarget
Miner has to find a SHA256 hash that is under the target value. Target is derived from network target using CoinDayWeight parameter.
Field | Type | sizeof | Description |
---|---|---|---|
nStakeModifier | unsigned long int | 8 | Deterministic modifier, scrambles computation to make it very difficult to precompute future proof-of-stake at the time of the coin's confirmation. |
nTimeBlockFrom | unsigned int | 4 | Timestamp for block which provided previous transaction, prevent nodes from guessing a good timestamp to generate transaction for future advantage. |
nTxPrevOffset | unsigned int | 4 | Offset of previous transaction inside the block, used to reduce the chance of nodes generating coinstake at the same time. |
nTxPrevTime | unsigned int | 4 | Timestamp of previous transaction, used to reduce the chance of nodes generating coinstake at the same time. |
nPrevoutNum | unsigned int | 4 | Output number of previous transaction, used to reduce the chance of nodes generating coinstake at the same time. |
nTimeTx | unsigned int | 4 | Current timestamp |