In addition to Bitcoin-NG’s Proof of Fraud, the new epoch release introduced a number fixes and improvements to state channels, Sophia, VM and mempool.
Last week a new release was uploaded to our GitHub repo. The release is focused on the Bitcoin-NG Proof of Fraud.
As we covered extensively in our previous post, the biggest contribution of this release is the Proof of Fraud (PoF) protocol that is responsible for reporting a malicious mining leader that creates forks in a generation.
In addition, this release implements numerous features related to state channels, mempool, Virtual Machine and performance. These updates:
- Change the difficulty from a floating point number to an integer value as seen in P2P message PING, and node status.
- Add a fixed gas limit per micro block.
- Add fixed gas to all transactions (contract create and contract call transactions use the fixed gas plus gas needed for their execution).
- Modify mempool to select transactions up to the gas limit per micro block.
- Restructure the serialization format for headers by shrinking the version field to 32 bits, and by introducing a flags field in 32 bits.
- Update the state channel’s Finite State Machine (aka FSM) so that it will now terminate if it detects that someone is trying to close the channel on-chain.
- Add built-in functions String.length and String.concat for Sophia strings.
- Fix a Sophia bug where None would match a Some(x) pattern
- Add events (logs) generated by the VM to the call state tree.
- Fix the AEVM CALL instruction to place 0 (as opposed to 1) on the stack if the value operand is not covered by the balance of the currently executing account.
- Fix the Sophia AEVM primitive operations to check that the specified value is covered by the balance of the currently executing account — regardless of whether the value is used by the primitive operation.
- Fix a bug that affected syncing of large generations (> 64K).
- Move Sophia value encoding/decoding from AEVM bytecode to Erlang code. This affects consensus.
- Make execution of some chain related instructions in contracts more efficient.
- Make the TIMESTAMP instruction deterministic by using the timestamp of the current micro block.
- Make the DIFFICULTY instruction deterministic by using the difficulty at the previous key block.
- Make the gas cost of oracle VM primitive operations proportional to the TTL of the objects (oracles, queries, responses) on state trees.
- Improve the stability of the user HTTP API.
Follow the development progress at Pivotal Tracker.
Interested in æternity? Get in touch: