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

Releases: EOSIO/eosio.contracts

EOSIO.Contracts v1.8.2 Release Notes

02 Dec 20:27
79f63ad
Compare
Choose a tag to compare

System contract

The system contract tracks a variable (total_activated_stake) to determine the first moment when 15% of all stake has voted so that it can trigger full activation of the system's features. After activation occurs, this variable is no longer needed. In previous releases, this variable continued to be updated even though it no longer had a purpose or even a well-defined meaning after activation. Furthermore, checks within the code that enable full functionality still referred to this variable. Since manipulation of this variable could potentially have adverse effects on the operation of the system contract, this release prevents further updates to the variable after activation and avoids depending on its value in the logic of the code after activation (#399).

Dependencies

This release depends on eosio.cdt v1.6.x and (optionally) on eosio v1.8.x. To compile the contracts in this release, first install eosio.cdt v1.6.3. To also compile the unit tests, first build and install eosio v1.8.6. 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.

Disclaimer: All repositories and other materials are 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 repositories and other materials, you accept and agree to the terms of the notice.

EOSIO.Contracts v1.7.2 Release Notes

02 Dec 20:27
7971e11
Compare
Choose a tag to compare

System contract

The system contract tracks a variable (total_activated_stake) to determine the first moment when 15% of all stake has voted so that it can trigger full activation of the system's features. After activation occurs, this variable is no longer needed. In previous releases, this variable continued to be updated even though it no longer had a purpose or even a well-defined meaning after activation. Furthermore, checks within the code that enable full functionality still referred to this variable. Since manipulation of this variable could potentially have adverse effects on the operation of the system contract, this release prevents further updates to the variable after activation and avoids depending on its value in the logic of the code after activation (#398).

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.3 and eosio v1.8.6. 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.

Disclaimer: All repositories and other materials are 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 repositories and other materials, you accept and agree to the terms of the notice.

EOSIO.Contracts v1.9.0-rc2 Release Notes

12 Nov 20:33
54d55bb
Compare
Choose a tag to compare

This is a RELEASE CANDIDATE for version 1.9.0. The latest STABLE release is v1.8.1.

The eosio.system and eosio.bios contracts contained in this release can only be deployed on an EOSIO blockchain after the activation of the WTMSIG_BLOCK_SIGNATURES consensus protocol upgrade.

System contract

When someone outbids an existing account name, the system contract generates a deferred transaction containing the eosio::bidrefund action to return the funds of the account that was outbid. In prior releases of the system contract, this action was authorized by the active permission of the eosio which meant the CPU/NET costs of the entire deferred transaction was billed to the eosio account. As of this release, the authorizer of the eosio::bidrefund action is the active permission of the account that was outbid (#383).

Other changes

  • (#354) Change pronoun in buyrex Ricardian summary - v1.9.x
  • (#360) [1.9.x] Test metrics fix
  • (#356) Add eosio.contracts documentation content to release/1.9.x
  • (#373) [1.9.x] Fix for forked PRs.
  • (#379) [1.9.x] CI/CD: switch from gke to eks

Dependencies

This release depends on eosio.cdt v1.7.x and (optionally) on eosio v2.0.x. To compile the contracts in this release, first install eosio.cdt v1.7.0-rc1. To also compile the unit tests, first build and install eosio v2.0.0-rc2. The eosio.bios and eosio.system contracts in particular also require that the WTMSIG_BLOCK_SIGNATURES consensus protocol upgrade has been activated on the EOSIO blockchain before they can be deployed.

Disclaimer: All repositories and other materials are 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 repositories and other materials, you accept and agree to the terms of the notice.

EOSIO.Contracts v1.8.1 Release Notes

12 Nov 20:33
897d88c
Compare
Choose a tag to compare

System contract

When someone outbids an existing account name, the system contract generates a deferred transaction containing the eosio::bidrefund action to return the funds of the account that was outbid. In prior releases of the system contract, this action was authorized by the active permission of the eosio which meant the CPU/NET costs of the entire deferred transaction was billed to the eosio account. As of this release, the authorizer of the eosio::bidrefund action is the active permission of the account that was outbid (#382).

Other changes

  • (#374) [1.8.x] Fix for forked PRs.
  • (#378) [1.8.x] CI/CD: switch from gke to eks

Dependencies

This release depends on eosio.cdt v1.6.x and (optionally) on eosio v1.8.x. To compile the contracts in this release, first install eosio.cdt v1.6.3. To also compile the unit tests, first build and install eosio v1.8.6. 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.

Disclaimer: All repositories and other materials are 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 repositories and other materials, you accept and agree to the terms of the notice.

EOSIO.Contracts v1.7.1 Release Notes

12 Nov 20:33
976196d
Compare
Choose a tag to compare

System contract

When someone outbids an existing account name, the system contract generates a deferred transaction containing the eosio::bidrefund action to return the funds of the account that was outbid. In prior releases of the system contract, this action was authorized by the active permission of the eosio which meant the CPU/NET costs of the entire deferred transaction was billed to the eosio account. As of this release, the authorizer of the eosio::bidrefund action is the active permission of the account that was outbid (#381).

Other Changes

  • (#284) pass through Boost variables to unit tests external project - v1.7.x
  • (#299) Backport PR #298 to r1.7.
  • (#306) Travis CI and Buildkite 2.0
  • (#322) Add IMPORTANT file and update README
  • (#325) rename IMPORTANT to IMPORTANT.md - 1.7.x
  • (#331) [1.7.x] CICD fixes
  • (#337) [1.7.x] Fix build breaking when specifying commit hash
  • (#340) Wait for Base Image Build
  • (#361) [1.7.x] Test metrics fix
  • (#385) Change pronoun in buyrex Ricardian summary - v1.7.x

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.3 and eosio v1.8.6. 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.

Disclaimer: All repositories and other materials are 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 repositories and other materials, you accept and agree to the terms of the notice.

EOSIO.Contracts v1.8.0 Release Notes

04 Nov 19:53
c86ec43
Compare
Choose a tag to compare

Unit tests no longer build by default (#320)

To build unit tests, the user must now explicitly request them to be built by setting the BUILD_TESTS CMake variable to true. When using the cmake command, this can be done by passing -DBUILD_TESTS=true as a command line argument. Alternatively, when using the build.sh script, the user can simply pass in the -t flag.

By making unit test builds opt-in, EOSIO now becomes an optional dependency of EOSIO.Contracts. Although it was always possible to build the contracts without installing EOSIO, many users were confused by the error messages that resulted when the process unsuccessfully attempted to build the unit tests. Now, users who do not care about the unit tests can easily build the contracts without seeing distracting error messages. They only need to satisfy the EOSIO.CDT dependency, which can be easily installed using the binaries. If users do wish to build unit tests, they will still be required to build and install the EOSIO dependency from source.

System contract

Configurable Inflation (#247, #301)

A new action setinflation has been added to the eosio.system contract. This action enables configuring the overall inflation rate as well as adjusting the fraction of the inflation that goes towards block producer pay versus accumulating in eosio.saving and the fraction of block producer pay that gets divided between block production rewards versus vote pay rewards.

Other changes

  • (#238) Created Universal Pipeline Configuration File
  • (#242) Update contracts to be up-to-date with eosio.cdt v1.6.1
  • (#257) workaround check_transaction_authorization bug
  • (#253) Small Changes to the System Contract
  • (#256) fix assertion in create_core_token; clean up inconsistent license references - develop
  • (#259) Custom path support for contract build script.
  • (#264) Add Ricardian contracts - develop
  • (#266) remove unnecessary EOSIO_DISPATCH macros; add action wrappers for activate and reqactivated actions - develop
  • (#270) Add is_account check to token::open
  • (#268) separately compile cpp files in system contract; add Ricardian for setinflation action
  • (#274) fix double-move bug in system_contract::registration - develop
  • (#283) pass through Boost variables to unit tests external project - develop
  • (#298) Default list of eosio subdirs as empty. Check the default directory only if it exists.
  • (#315) Travis CI and Buildkite 2.0
  • (#323) Add IMPORTANT file and update README
  • (#326) rename IMPORTANT to IMPORTANT.md - develop
  • (#329) Prevent overflow within claimrewards in cases of extreme inflation - 1.8.x
  • (#336) [1.8.x] Fix build breaking when specifying commit hash
  • (#339) Wait for Base Image Build
  • (#353) Change pronoun in buyrex Ricardian summary - v1.8.x
  • (#359) [1.8.x] Test metrics fix
  • (#365) Add eosio.contracts documentation content to release/1.8.x

Dependencies

This release depends on eosio.cdt v1.6.x and (optionally) on eosio v1.8.x. To compile the contracts in this release, first install eosio.cdt v1.6.3. To also compile the unit tests, first build and install eosio v1.8.5. 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:

Disclaimer: All repositories and other materials are 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 repositories and other materials, you accept and agree to the terms of the notice.

EOSIO.Contracts v1.9.0-rc1 Release Notes

07 Oct 20:43
bbd1d34
Compare
Choose a tag to compare

This is a RELEASE CANDIDATE for version 1.9.0. The latest STABLE release is v1.7.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 WTMSIG_BLOCK_SIGNATURES consensus protocol upgrade.

System contract

A new action regproducer2 has been added to the eosio.system contract (#349). This action acts an alternative to the existing regproducer (which still remains) to allow an account to register as a block producer candidate with a weighted threshold multi-signature (WTMsig) block signing authority (see the release notes for eosio v2.0.0-rc1) rather than just a single public key.

Note: The changes to the eosio.system contract introduce both binary extensions and variants (which are ABI 1.1 features) to the contract's ABI. Clients must support these ABI 1.1 features if they are to interact with the new eosio.system contract.

Bios contract

The interface of the setprods action of the eosio.bios contract has been modified (#349) to take a producer schedule consisting of WTMsig block signing authorities rather than a producer schedule consisting only of single public keys per each block producer.

Other Changes

  • (#328) Prevent overflow within claimrewards in cases of extreme inflation - develop
  • (#334) [develop] Fix build breaking when specifying commit hash
  • (#338) Wait for Base Image Build
  • (#333) Update minimum CDT dependency to 1.7.x
  • (#348) Update minimum EOSIO dependency to 2.0.x

Dependencies

This release depends on eosio.cdt v1.7.x and (optionally) on eosio v2.0.x. To compile the contracts in this release, first install eosio.cdt v1.7.0-rc1. To also compile the unit tests, first build and install eosio v2.0.0-rc1. The eosio.bios and eosio.system contracts in particular also require that the WTMSIG_BLOCK_SIGNATURES consensus protocol upgrade has been activated on the EOSIO blockchain before they can be deployed.

Disclaimer: All repositories and other materials are 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 repositories and other materials, you accept and agree to the terms of the notice.

EOSIO.Contracts v1.8.0-rc1 Release Notes

28 Aug 19:02
0548294
Compare
Choose a tag to compare

Unit tests no longer build by default (#320)

To build unit tests, the user must now explicitly request them to be built by setting the BUILD_TESTS CMake variable to true. When using the cmake command, this can be done by passing -DBUILD_TESTS=true as a command line argument. Alternatively, when using the build.sh script, the user can simply pass in the -t flag.

By making unit test builds opt-in, EOSIO now becomes an optional dependency of EOSIO.Contracts. Although it was always possible to build the contracts without installing EOSIO, many users were confused by the error messages that resulted when the process unsuccessfully attempted to build the unit tests. Now, users who do not care about the unit tests can easily build the contracts without seeing distracting error messages. They only need to satisfy the EOSIO.CDT dependency, which can be easily installed using the binaries. If users do wish to build unit tests, they will still be required to build and install the EOSIO dependency from source.

System contract

Configurable Inflation (#247, #301)

A new action setinflation has been added to the eosio.system contract. This action enables configuring the overall inflation rate as well as adjusting the fraction of the inflation that goes towards block producer pay versus accumulating in eosio.saving and the fraction of block producer pay that gets divided between block production rewards versus vote pay rewards.

Other changes

  • (#238) Created Universal Pipeline Configuration File
  • (#242) Update contracts to be up-to-date with eosio.cdt v1.6.1
  • (#257) workaround check_transaction_authorization bug
  • (#253) Small Changes to the System Contract
  • (#256) fix assertion in create_core_token; clean up inconsistent license references - develop
  • (#259) Custom path support for contract build script.
  • (#264) Add Ricardian contracts - develop
  • (#266) remove unnecessary EOSIO_DISPATCH macros; add action wrappers for activate and reqactivated actions - develop
  • (#270) Add is_account check to token::open
  • (#268) separately compile cpp files in system contract; add Ricardian for setinflation action
  • (#274) fix double-move bug in system_contract::registration - develop
  • (#283) pass through Boost variables to unit tests external project - develop
  • (#298) Default list of eosio subdirs as empty. Check the default directory only if it exists.
  • (#315) Travis CI and Buildkite 2.0
  • (#323) Add IMPORTANT file and update README
  • (#326) rename IMPORTANT to IMPORTANT.md - develop

Dependencies

This release depends on eosio.cdt v1.6.x and (optionally) on eosio v1.8.x. To compile the contracts in this release, first install eosio.cdt v1.6.2. To also compile the unit tests, first build and install eosio v1.8.1. 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:

Disclaimer: All repositories and other materials are 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 repositories and other materials, you accept and agree to the terms of the notice.

EOSIO.Contracts v1.7.0 Release Notes

28 Jun 22:10
52fbd4a
Compare
Choose a tag to compare

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.

EOSIO.Contracts v1.6.1 Release Notes

28 Jun 17:33
0c18e54
Compare
Choose a tag to compare

Ricardian contracts (#262)

A set of reference Ricardian contracts is now included for all actions in the five smart contracts in the eosio.contracts repository. 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 (#275).

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.

Other changes

  • (#240) Created Universal Pipeline Configuration File
  • (#261) fix assertion in create_core_token; clean up inconsistent license references; fix README links - v1.6.x
  • (#272) fix double-move bug in system_contract::registration - v1.6.x

Dependencies

This release depends on eosio.cdt v1.5.x and eosio v1.6.x or v1.7.x. To compile the contracts in this release, first build and install eosio.cdt v1.5.0 and eosio v1.7.4.

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.