Releases: EOSIO/eosio.contracts
EOSIO.Contracts v1.8.2 Release Notes
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
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
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
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
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
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
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
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
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
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
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.