EOS Codebase Changes to look out for

in eos •  7 years ago 

eos-logo-featured.png
Curious about the new changes that may come with Friday’s release? We’re on it! EOS Dublin CTO, Sam Noble, has done the research already (at least for today). Read on!

Since the last DAWN alpha tag, and the head of the “slim” branch (as of May 8th), there have been a great many changes in the codebase. Ahead of the upcoming release on May 11th, I wanted to take a dive in to the changes so far to get a view of what’s coming up.

For those of you who have been developing your own plugins, you’ll want to switch to the slim branch as soon as possible in order to align yourself with the changes that have been made. A lot of files have been moved/renamed and a whole bunch of method signatures have changed, most likely breaking current implementations. However, if you’re building a plugin, you probably know more of what’s changed than I do!

Disclaimer: Given the amount of restructuring that’s taken place here, some of these “new” things may well just be moved (my eyes can only stand so much grep’ing). Also, due to the volume of the code churn, this list is by no means exhaustive.

Highlights

  • transaction_context library class
  • producer_pay and voting plugins overhauled
  • New plugin interface which defines some nice hooks for plugin developers
  • System contract for handling exchanges between assets based on the Bancor protocol
  • A new unit test for testing forking; the tests in general are a great way to see how things work.

Programs

  • nodeos is still loading the producer plugin by default and has added in the registration of the history_plugin during initialization
  • cleos has been updated with functions to handle the buying/selling of RAM and creating sub-accounts
  • keosd has an API endpoint to shutdown the process “/v1/keosd/stop”, you might want to prevent this from being exposed publicly…
  • A Python example of interacting with cleos has been added to programs/exchange-tutorial-python/exchange_tutorial.py

Libraries

  • block_header_state.cpp has some interesting looking functions for reading the producer schedule
  • The new transaction_context class houses methods for calculating bandwidth and CPU usage for transaction processing
  • New permission manager library class for verifying execution privileges on transactions

Contracts

  • Most of the default system contracts have been updated with parameters getting an overhaul.
  • The new delegate_bandwidth contract is interesting, containing logic for buying and selling RAM.
  • A new contract, exchange_state used to calculate exchange rates between assets.

Plugins

  • The producer plugin has a few new methods for handling events such as a new block received. This could be very handy for usage in a plugin that handles high availability.
  • New classes for history_plugin and history_api_plugin have been added. From the source: `This plugin tracks all actions and keys associated with a set of configured accounts. It enables wallets to paginate queries for history.`
  • The net_plugin has an additional data structure for describing the size of a chain (chain_size_message), detailing the last irreversible block number and head block number. At the time of writing, this message is not yet used, only being written to the log.

We want to hear from you!

We're highly responsive to your feedback and ideas. EOS is a global community above all. Share your thoughts with us on any of the following channels.

EOS Dublin On Telegram: https://t.me/eosdb

EOS Dublin Online: https://www.eosdublin.com/

EOS Dublin On Twitter: https://twitter.com/eosdublin

EOS Dublin On Steemit: https://steemit.com/@eosdublin

EOS Dublin On Medium: https://medium.com/@eosdublin/

EOS Dublin On Meetup: https://www.meetup.com/EOS-Dublin/

EOS Dublin On Everipedia: https://everipedia.org/wiki/eos-dublin/

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!