Integration of Proof of Fraud and Scalability Enhancements

Proof of Fraud for Bitcoin-NG consensus is now implemented.

The biggest update from the past week is that our implementation of Proof of Fraud (PoF)for Bitcoin-NG consensus was completed and merged into the master [PT task].

Below are a few paragraphs outlining the importance of this feature and the challenges we faced while implementing it.

A possible attack vector for a Bitcon-NG consensus is a malicious leader that would construct forks in a generation of micro blocks, either by forking directly from his key block, or by forking on a micro block. This could be done to disrupt the network or to perform double spend attacks. To prevent this malicious behaviour, the miner of the next key block can submit PoF in a micro block in its generation. Only this leader can submit Proof of Fraud to avoid flooding the network with reports, which in itself could be viewed as a DoS attack.

Furthermore, reporting fraud for a given generation more than once is regarded as a protocol violation, even if there is more than one act of fraud committed. Under the constraint that only blocks from the previous generation can be reported, this means that only one fraud report is allowed in a generation.

The Proof of Fraud is constructed of two sibling micro headers (with the same previous pointer) along with the public key of the signer. The PoF is included in a micro block body, and the header must contain the hash of the PoF object to mark its existence in the block. If a miner is reported as fraudulent in this manner, its beneficiary will not get any mining reward for that key block (i.e., no coinbase and no fees for either generation). The reporter of the fraud will get a reward controlled by governance.

In addition to PoF, we have improved the scalability of state channels by replacing searching each new block for surreptitious ‘close’ transactions pertaining to the current channel with polling the channel on-chain status [PT task]. We have also implemented support for string concatenation in Sophia [PT task], as well as the handling of events and logs in the æternity virtual machine [PT task]. In addition, we have also fixed a number of bugs.