Most Mainnet Features Are Now Implemented!

As the Mainnet launch gets closer and closer, our backlog is getting shorter and shorter.

Release 0.25.0 is the first release candidate for the Mainnet and encompasses the functionalities that are required for running a live Mainnet. Namely, it:

Adds response TTL to Oracle query response TX — a required parameter.

Adds JSON-RPC support in the state channel WebSocket API. The previous API remains supported for now. Support for JSON-RPC request batches implemented but not yet tested.

Introduces minimum gas price validation and sets minimum gas price to 1.

Changes the default state channel websocket listen address to 127.0.0.1 (previously 0.0.0.0)

Changes the keyblock target to be 4 bytes in serialization (was 8 bytes). This affects consensus.

Moves all charges in contract create transaction and contract call transaction to before the execution of the contract. The changed items are: gas in both create and call transactions (unused gas is refunded); fee in call transaction; deposit in create transaction. This affects consensus.

Removes internal websocket API (`/websocket` endpoint)

Avoids replay attacks by naming networks (forks) with network_id and including them in transaction signature.

Optimizes the force progress transaction by turning the Proof of Inclusion to a proper set of off-chain trees and removing the auxiliary addresses.

Disallows reentrant calls (i.e. contract calls into a currently executing contract) in Sophia.

Improves the stability of the HTTP user API.

Charges gas also for calldata size/initial heap size, when doing Sophia contract calls. This affects consensus.

Implements the Sophia abort primitive using the REVERT instruction in the AEVM.

Refactors State Channel’s approach to disputes. The block height timer between subsequent force progress transactions is removed,greatly improving the speed of forcing of progress. A co-signed state still overwrites on-chain produced states.

Sets the return value of initial call in create contract transaction to the empty byte array <<>> in the call state tree.

Fixes gas available to VM primitive operations contract to be the same as for other contracts.

Charges gas for maps handling in return value. This affects consensus.

Restricts registrars in Naming Service, to allow only .test registrar

Introduces throw away keys for block mining and signing, which should significantly increase security of coins obtained through mining, by making sure that the private key to the corresponding account is not stored in the memory of the node.

Changes calling convention in Sophia and adds type checking of remote calls. This makes the byte code smaller, the memory usage smaller and the contract calls more type safe. This affects consensus.

Validates query and response formats in oracles. The nature of the check depends on the new VM version field.

The following things still need to be done:

Fine-tuning the inflation target for coinbase reward,

finalizing fee handling mechanisms,

improvements for making nodes more stable under a heavy load,

and finally, mining the coinbase and releasing the final build.

However, this is not a lot! Stay tuned for updates on our schedule!