Skip to content
This repository has been archived by the owner on Aug 30, 2022. It is now read-only.

EOSIO.Contracts v1.7.0 Release Notes

Compare
Choose a tag to compare
@blockone-devops blockone-devops released this 28 Jun 22:10
· 433 commits to master since this release
52fbd4a

EOSIO.Contracts v1.7.0 is required to support activation of nearly all of the consensus protocol upgrades introduced in EOSIO v1.8.0. The eosio.system and eosio.bios contracts contained in this release can only be deployed on an EOSIO blockchain after the activation of the PREACTIVATE_FEATURE consensus protocol upgrade.

Ricardian contracts (#263)

A set of reference Ricardian contracts is now included for all actions in the five smart contracts in the eosio.contracts repository. These Ricardian contracts build upon the ones already released in v1.6.1 by adding Ricardian contracts for the new eosio::activate and eosio::reqactivated actions. The Ricardian contracts also come with icons that are free to use under the same MIT License as the source code (please see the notes under the License section of the README for details). Be aware that to actually deploy the contracts with working Ricardians for production use, the icons will need to be hosted on a public server and the URL to the icons need to be in the generated ABI files for the contracts. This requires changing the base URL for the icons by setting the appropriate variable in the contract CMakeLists.txt file before compiling the contracts.

Token contract

The eosio.token::open action will now ensure the owner account exists before creating a zero-balance table row for the account (#271).

After activation of the RESTRICT_ACTION_TO_SELF protocol feature, the eosio.token::issue action will no longer be able send an inline transfer when issuing tokens to an account other than the issuer. In preparation for this change in capabilities, the eosio.token::issue action's behavior has been modified to explicitly disallow issuing tokens to any account other than the issuer (#232). Token managers who use the eosio.token reference contract and wish to continue issuing tokens to other accounts will need to replace the single eosio.token::issue action with a transaction with two actions: one that first issues tokens to the issuer and then the second one that transfer that same quantity of tokens from the issuer to the intended recipient.

System contract

Due to the change to eosio.token::open described earlier, the eosio::init now requires that the eosio.rex account exists before it is called.

This release adds a new action activate to the system contract (#220). The activate action pre-activates (which then subsequently activates at the start of the next block) the protocol feature represented by the digest (hash) provided in the action data.

The implementation of the activate action requires linking against a new intrinsic function which is only made available after the PREACTIVATE_FEATURE protocol feature is activated on the EOSIO blockchain. This means that until that protocol feature is activated, it will not be possible to deploy this system contract to the chain.

In addition, the implementation of the Bancor algorithm behind buying and selling RAM has been simplified while maintaining the same behavior (#222). Both mathematical and empirical analyses have shown that the change in the implementation does not materially change the behavior of the actions to buy and sell RAM. Furthermore, the estimation used in the buyrambytes action has been improved to allow the buyer to pay a calculated amount of tokens in exchange for a number of bytes of RAM that is very close to the number they requested in the action (#258).

Finally, if any deferred transactions that were sent by the system contract (such as the ones including the refund or bidrefund actions) objectively fail, they will now automatically advance to a hard_fail (rather than soft_fail) because the onerror action handler of the system contract now rejects being called or notified (#265). This means that the eosio account can no longer be billed for the CPU/NET usage of the failed deferred transaction.

Bios contract

The same activate action added to the system contract has also been added to the bios contract (#220). The bios contract also has a new action reqactivated which asserts that the protocol feature represented by the provided digest has been activated. In addition, the onerror action can no longer be directly called and it will also reject notifications of the onerror action (#265). Finally, the unnecessary setglimits action was removed from the bios contract (#263).

Multisig and Wrap contracts

If any deferred transactions that were sent by the multisig or wrap contracts (such as eosio.msig::exec or eosio.wrap::exec) objectively fail, they will now automatically advance to a hard_fail (rather than soft_fail) because the onerror action handler of these contracts will reject being called or notified (#265). This means that the eosio.msig and eosio.wrap accounts (assuming those are the accounts on which the multisig and wrap contracts are deployed respectively) can no longer be billed for the CPU/NET usage of the failed deferred transactions.

Other changes

  • (#188) Created Buildkite Pipeline with Docker Build
  • (#202) Producer pay vars update
  • (#201) Fix/update votes
  • (#197) Contracts Pipeline: Add Test Steps and Use Pre-Built EOSIO Docker Images
  • (#223) Annotate all public EOSIO system contracts' classes, structs, methods, actions
  • (#230) Change add_eosio_test to add_eosio_test_executable
  • (#228) Fix broken links in README.md
  • (#226) fix description comment typo
  • (#231) Added ctest Error Handling
  • (#218) Deleted docker files and scripts used by old contracts pipeline
  • (#239) Created Universal Pipeline Configuration File
  • (#255) fix assertion in create_core_token; clean up inconsistent license references - v1.7.x
  • (#260) Implemented support for custom eosio and eosio.cdt installation paths.
  • (#265) remove unnecessary EOSIO_DISPATCH macros; add action wrappers for activate and reqactivated actions - v1.7.x
  • (#267) update contracts to work with new CDT headers - 1.7
  • (#273) fix double-move bug in system_contract::registration - v1.7.x

Dependencies

This release depends on eosio.cdt v1.6.x and eosio v1.8.x. To compile the contracts in this release, first build and install eosio.cdt v1.6.1 and eosio v1.8.0. The eosio.bios and eosio.system contracts in particular also require that the PREACTIVATE_FEATURE consensus protocol upgrade has been activated on the EOSIO blockchain before they can be deployed.

Thanks!

Special thanks to the community contributors that submitted patches for this release:

Important: All material is provided subject to this important notice and you must familiarize yourself with its terms. The notice contains important information, limitations and restrictions relating to our software, publications, trademarks, third-party resources and forward-looking statements. By accessing any of our material, you accept and agree to the terms of the notice.