Overcoming Challenges of PoS

Proof of Stake has taken quite a stage in today’s distributed technology for Public blockchains. However, it’s only up till quite recently where it really took forward and crossed the boundary solution that needs to prove itself. There are several points which a good PoS consensus implementation should consider,

  • Large Coin Age allows any single staking node to hold coins long enough to perform double spending by creating a fork in the chain.
  • Incentivizing the node to stay connected to the network for the validators. As once participated in the consensus PoS has a cooldown before the validator can participate again to stake the coins again to gain rewards once more many of the stakers may drop out.
  • Nothing-at-stake attacks where validators validate all the proposed forks to maximize their chance of receiving the incentive making damaging forks materialize in the system.
  • PoS may allow prediction of probability of winning the reward of creating a block based on the coins held by other participants in the network.
  • Economically PoS may help to promote the rich getting richer as size of the stake is one of the primary factors for being selected as one of the validators.

There are many flavors of PoS which try to overcome the above problems as much as possible such as Delegated PoS, Pos Boo, SPoS etc. Bitcoin Latinum makes use of MPoS – Mutualized Proof of Stake.

MPoS tries to strengthen the security of the network by targeting high-cost barriers for any attacker to validate the block and get all the fees back to itself through mining. It also intends to make it harder than normal for anyone to perform DoS attacks on the network by this.

MPoS Procedure

1) Stakers who can successfully validate a block will receive only a fraction of the network’s reward and fees. The rest of the incentives are divided equally in the other 9 stakers as per the holding’s proportional. 

2) When a staker successfully mines a block, his stake script (staketx.vout[0]) is registered on the network to receive the incentive, which lasts for 10 blocks, i.e., 500 blocks away from when the block was last mined. 

3) It means for every block there are 10 people to which rewards are equally distributed by the network. These 10 people include 9 “mutual stakers” along with the block creator. 

4) Once rewards are shared after 9 blocks, the network will remove the staker’s script and add another script to replace it. 

5) When a stake script has mined more than a block in a 10-block period, the respective staker will receive twice the rewards. As soon as the script instance exceeds 510 blocks from the last mined block, the network will automatically remove it and the rewards are also dropped to normal. At the same time, stakers should not combine identical stake scripts into a single UTXO. 

Latinum PoS Architecture

While Latinum uses MPoS to ensure the security of consensus in its network, there are quite a few other characteristics that are worth detailing to understand its functioning.

Bitcoin Latinum has its own chain starting from its own genesis block which functions its PoS on a difficulty level, much like PoW to provide uniform publishing of blocks in the network. The difficulty however is not adjusted in terms of required hashrate to solve mathematical problems, instead it is on the size of stake required to create the blocks.

Staking Requirements

Latinum’s PoS allows users to lock their currency in their wallet to be able to participate in the network for the purpose of consensus. There are certain criteria that shall be met in order to be allowed to stake the currency.

  • The coins to be staked need to be matured. This means that the unspent outputs (UTXOs) need to have a depth in the main chain of at least the 500 blocks (which is the coinbase/coinstake maturity).
  • The coins to be staked need to be in compatible address/transaction types (P2PK and P2PKH are supported).

Incentivization in Forks

Usually, a PoS algorithm does not incentivize any stake on a fork. This is usually done to discourage stakers to validating all forking blocks. They might do this to maximize their return, however this is assumed by many to lower the guard against the double spending attacks. This problem has been termed as nothing-at-stake.

Latinum’s PoS however does not rely on a lack of incentivization strategy, as in reality gathering this much amount of support for a fork itself is close to zero while even tougher for staker to stake in the forked blocks at the same time.

This is since to gather this amount of staking support the cost involved to support a damaging fork will be quite counterproductive. Hence this does not promote the double spend transactions unlike in Bitcoin where large miners are not holding participation in a delegated manner and are not representing others interest either. There the problem of double spend could be real given the amount of centralization of hardware that can take place.

Block Structure

Latinum’s PoS uses PoS V3 as a consensus algorithm. The blocks must abide by these rules:

  • Must have exactly 1 staking transaction. This shall be the coins one transfers to oneself to prove the existence of their stake.
  • The staking transaction must be the second transaction in the block.
  • The coinbase transaction must have 0 output value and a single empty vout.
  • The block timestamp must have it’s bottom 4 bits set to 0 (referred to as a “mask” in the source code). This effectively means the block time can only be represented in 16 second intervals, decreasing it’s granularity.
  • The block’s kernel hash must meet the weighted difficulty for PoS.
  • The block hash must be signed by the public key in the staking transaction’s second vout. The signature data is placed in the block (but is not included in the formal block hash).
  • The signature stored in the block must be “LowS”, which means consisting only of a single piece of data and must be as compressed as possible (no extra leading 0s in the data, or other opcodes).
  • Most other rules for standard PoW blocks apply (valid Merkle hash, valid transactions, timestamp is within time drift allowance, etc.).

Staking Requirements

While a usual network would allow one of the stakers to have advantage over the other by the process of creating multiple staking transactions. Latinum has a concept of having multiple inputs to be part of a single transaction so that transaction flooding is not promoted in the network.

The outputs generated by this are also multiple if a certain threshold is met with the aggregated sum. This is done to cancel out any effects that would come by keeping multiple inputs in the transaction

Latinum Block Time

The Block time-spacing for Bitcoin Latinum is set for 3 minutes which is 3 times faster than Bitcoin, can handle 3 times more transactions, with difficulty being adjusted at every block to provide uniform block time possible with finality.

Maximum Coin Supply

Allows a maximum of 888,888,888 Bitcoin Latinum coins in the network