Optimizing the VM, Introducing Replay Protection and Extensive Testing

Work on Epoch Release 0.25.0 already started.

With every week that passes, we are getting closer and closer to æternity’s release date. We have already started work on Release 0.25.0. Here are some of the most prominent features that were finalized last week:

Optimizing VM’s performance, for which we reviewed memory/state/instructions cost and identified that just keeping the PC/CP in a register/argument gave us most bang for our buck [PT task].

Extensive testing of remote smart contract calls, making sure that the state of the contract is updated correctly [PT task].

Replay protection for transactions to mitigate the following attack vector: In the event of a fork, there is currently nothing that protects a user from having their transactions being replayed, e.g. if the chain splits at height “n” and a user sends a transaction at height “n+2” to chain “A”, then a malicious actor can replay their transaction on split chain “B”.

Introduced governance parameters that govern base gas per transaction type: e.g. spend transaction’s base gas should be lower than the base gas used to create a contract or call a contract [PT task].

Our testing team is also running numerous tests [PT task] to find out what practical limitations we have to consider when setting gas fees. Namely, we have to make sure that:

each transaction takes a certain minimum amount of gas MinGasTx-N (depending on content of transaction);

creating a block candidate with MaxBlockGas can always take place within 3 seconds on a reasonably fast machine;

the validation of MicroBlock filled with MaxBlockGas can always be done within 1 second on a reasonably slow machine.

Follow the dev team’s work in the Pivotal Tracker. We recently published an interesting piece about functional programming languages and their advantages for developing blockchain protocols. You can read it in Hackernoon: