State of Development: Week of June 18th, 2018

Image by JJ Ying

The new release — 0.16.0 — is out! Check out the list of changes.

According to our sprint schedule, our next release (0.16.0) was tagged and deployed to the Testnet on Thursday. The release includes a number of improvements to the transaction handling and the mempool which enhance the stability and performance of the Testnet.

Smart contracts and Sophia language have also had some major updates: We have introduced support for maps and as of now miners are rewarded for the execution of smart contracts.

Here is a detailed list of the changes:

  • Improve TX-pool synchronization. It is now synced (with only missing transactions being pulled in) only once at startup, after this it relies on the gossip protocol.
  • Make the transaction TTL optional (giving no TTL means the transaction is valid “forever”).
  • Improve memory footprint by removing an in-memory index.
  • Remove the /account/{account_pubkey}/txs endpoint as it is non-essential for the node’s operation, is hard to maintain, and consumes unnecessary resources.
  • Reduce memory usage in the case of a node starting with a large number of mempool transactions in persisted DB. This is achieved by the deletion of the temporary table after usage in mempool initialization.
  • Reduce the DB size by removing redundant identifiers stored in the state trees.
  • Introduce type tags for identifiers in the serialization to make it possible to distinguish between different types of identifiers that can be used in the same position (e.g. names and account pubkeys).
  • Make the system more resistant against mistakes by checking sizes of identifiers as a side effect of introducing the typed identifiers.
  • Create contract call object in calls state tree even if contract create transaction init fails.
  • Make the owner of the contract create transaction lose the gas — in addition to the fee — if the init fails.
  • Ensure that the create contract function calls the init function for Sophia ABI contracts.
  • Reward the miner with gas used for execution of contracts, i.e. the execution of the initial call in any contract create transaction and the execution of any contract call transaction.
  • Enhance mempool to consider the reward a miner might receive by processing contract-related transactions.
  • Add garbage collection of transactions, invalid transactions (wrong nonce, insufficient balance, and expired TTL, etc.) are removed from the mempool/tx-pool periodically.
  • Add support for maps to Sophia.
  • Enable retrieving the contract call object produced by the execution of the initialization call in a contract create transaction.
  • Add a HTTP endpoint for contract proof of inclusion.
  • Enable decoding of Sophia data into a json structure.

You may also recall that our initial plan was to include a working version of Bitcoin-NG into this release. By the end of the sprint we have, however, realised that there may be too many changes for one release and made a decision to release Bitcoin-NG separately in a ‘mini-release’ next week. This way our team will have time to perform additional tests and reviews of the Bitcoin-NG implementation and make sure that the current release is stable enough for such a major update.

You can follow the development progress in the Pivotal Tracker.

Interested in æternity? Get in touch:

GitHub | Forum | Reddit | Telegram | Twitter | Facebook | Mail

Leave a Reply

Your email address will not be published. Required fields are marked *