Official repository for core projects comprising the Celo platform
APACHE-2.0 License
Bot releases are hidden (Show)
Published by m-chrzan over 2 years ago
This is the sixth release of the Celo Core Contracts. It follows the release process per the docs.
OpenZeppelin Core Contracts Release 6 Audit (to be published soon)
Release 6 allows wallet and other application developers easier access to off-chain storage, fixes a small bug in the LockedGold contract, and cleans up an unnecessary function in Solidity libraries.
CIP8 was originally defined on top of CIP3. This meant that two network hops were necessary to access the CIP8 storage URL (first request the CIP3 URL from the Celo blockchain, then look up the CIP3 data, including the CIP8 URL, over HTTP based on that URL). Modifying the CIP8 URL also meant modifying and reuploading the entire CIP3 file. PR 8360 adds direct access to multiple CIP8 URLs in the Accounts smart contract, making it easier to access and modify these endpoints.
Slashing rewards are denominated in locked CELO (managed by the LockedGold smart contract). Locked CELO can only be managed by accounts on the Accounts smart contract. Previously there was no check ensuring that a slashing reporter had an account, thus the locked CELO credited as a reporter reward could have ended up indefinitely unusable.
Core Celo contracts implement a getVersionNumber()
function, as per the Celo Smart Contracts release process. This function should only be implemented on concrete, non-library smart contracts deployed on-chain, but was previously also implemented on several library contracts. The unnecessary function was removed from these libraries, forcing PATCH version increases on several contracts:
Contract Name | Old | New |
---|---|---|
Accounts |
1.1.2.0 | 1.1.3.0 |
Attestations |
1.1.1.1 | 1.1.1.2 |
Election |
1.1.2.0 | 1.1.2.1 |
Escrow |
1.1.1.1 | 1.1.1.2 |
Governance |
1.2.1.0 | 1.2.1.1 |
LockedGold |
1.1.1.1 | 1.1.1.2 |
SortedOracles |
1.1.2.0 | 1.1.2.1 |
Validators |
1.2.0.1 | 1.2.0.2 |
Published by eelanagaraj almost 3 years ago
This is a backwards-compatible release that includes the following features/fixes:
v1.5.0
to 1.4.0-
, this can in rare cases cause a one-time dip in automatic resends for in-progress attestations.7d47b0b5fa3b80165091d1e0c1732503cc83b618
de7d9a9c071cd20d86b164ae1da0b1d8f15d8b4e
cf48bd7dd467fc86196ea302c50683207be04329
Published by eelanagaraj about 3 years ago
This is a backwards-compatible release that includes the following features/fixes:
e9cc99923c75bcff14310c6fa2269483dcd283fd
ef0a683f708455b5fe2a120c929feb3ed4d32b95
Published by yorhodes about 3 years ago
This is the fifth release of the Celo Core Contracts. It follows the release process per the docs.
OpenZeppelin Core Contracts Release 5 Audit
Release 5 addresses a community demand for large volume exchanges which aren't suited for Mento or OTC. It also fixes a small bug in the Validators contract which only has implications for newborn networks (discovered on our private testnets) and adds an additional registry utility for contract developer usage.
Granda Mento is a mechanism to facilitate large CELO <-> stable token (e.g. cXXX) exchanges that aren't suitable via Mento or OTC. GrandaMento is a new contract that can exchange CELO <-> stable token for any stable token Governance explicitly enables. Exchanges via this contract must be approved by a multisig and can be vetoed by the Governance contract. For more detailed information, please reference CIP-0038.
updateMembershipHistory
in Validators.sol correct if epoch number is 0 #8060This change fixes a bug in the Validators contract that has not appeared in a production environment. It is motivated by cLabs usage of mycelo testnets that apply migration results as part of genesis generation. A validator's membership history is currently not updated when there is are no history entries (ie when epoch == 0).
This new contract is an alternative to UsingRegistry that contains no storage variables for more lightweight inheritance.
Contract Name | Old | New |
---|---|---|
GrandaMento |
- | 1.1.0.0 |
StableToken |
1.2.0.0 | 1.2.0.1 |
StableTokenEUR |
1.1.0.0 | 1.1.0.1 |
Validators |
1.2.0.0 | 1.2.0.1 |
Published by codyborn over 3 years ago
77a392216d4927e85ce4b683508fc0539aa92a34
Published by codyborn over 3 years ago
Fixes a filtering bug in Nexmo queries.
6ca848629957cac7bd882d0e361a29620b2e03a1
Published by medhakothari over 3 years ago
This release was published on July 8th, 2021 and includes commits from 125f98da65f9b8161af524d183b7da70b96e2a07
to 9207df90be8c0ae3b377914156ce600eec08d32a
inclusive.
Published by codyborn over 3 years ago
Support a US toll-free number registration in Nexmo. Add new information to /status endpoint that helps correlate SMS Provider success rates.
ab46eecf3b13793580cabac2bb80a425cb10f9e3
f632e799a97cbcf803683a1da87dc63c912f5e9a
Published by yorhodes over 3 years ago
This is the fourth release of the Celo Core Contracts. It follows the release process per the docs.
Certora Core Contracts Release 4 Audit
OpenZeppelin Core Contracts Release 4 Audit
Release 4 addresses feedback the community has provided on the identity abstraction implemented in the core contracts. It also makes way for various throughput optimizations and improvements in light of recent network throttling as a result of new user influx.
The Accounts contract houses a general account abstraction that currently serves several purposes including identity in the Proof-of-Stake system (validator, voter, and attestation signers) and storing profile information such as a Data Encryption Key for use with off-chain signed metadata. The authorization of signer keys is a useful method to authenticate the account owner for specific roles without requiring the most-privileged account key to come online. This change adds a generalized segmentation of domains for account authorizations, giving Celo stakeholders more flexibility in their custody setup.
During periods of heavy onboarding traffic, we have observed the block gas limit being the limiting factor in the number of users we can onboard per block. This is primarily because we subsidize the costs of user onboarding and phone number verification through smart contract wallets, and subsequently need to deploy a new contract per user. This change employs "minimal" proxies to greatly reduce the gas costs of performing this onboarding subsidization and contract deployment.
An account's pending votes must be activated after an epoch has passed. For end users, this is an unideal experience. This change allows a non-trusted account to activate pending votes on behalf of another account, eliminating the need for 2 transactions over the course of 2 epochs. The recipient validator group, for example, has a direct incentive to perform this activation.
During recent governance activities, some users voted and were surprised that they could not unlock their CELO. This is to prevent voting on proposals that result in depreciation of CELO. Previously there was no option to revoke votes for an account so that locked CELO can be released. This change adds a revokeVotes
method which revokes all Referendum votes for an account and allows them to begin the unlock period.
The Celo blockchain launched with the native token called "Celo Gold" (symbol "cGLD"), but to avoid confusion (since the token has nothing to do with physical gold), after a community proposal and vote (CGP 4), it was renamed to "Celo native asset" (ticker symbol CELO). This change updates the ERC-20 contract's name and symbol constants.
To support phone numbers (or other future identifiers) as a factor in account recovery, a contract needs to act as a proxy for any address considered verified. This change adds an IdentityProxy
that can be used by the owner of an identifier to make arbitrary calls, determining ownership by the on-chain heuristic as defined in the Attestations
contract. It also adds an IdentityProxyHub
for deploying instances with CREATE2
, delaying deployment until the proxy is needed during account recovery and avoiding additional throughput congestion during heavy onboarding traffic.
The MetaTransactionWallet will have an owner settable guardian address. This address has the ability to change the wallet's signer. This feature is in support of account recovery features for user-facing wallets like Valora.
Contract Name | Old | New |
---|---|---|
Accounts |
1.1.1.1 | 1.1.2.0 |
Election |
1.1.1.0 | 1.1.2.0 |
Governance |
1.2.0.2 | 1.2.1.0 |
GoldToken |
1.1.1.0 | 1.1.1.1 |
Reserve |
1.1.2.0 | 1.1.2.1 |
Contract Name | Old | New |
---|---|---|
MetaTransactionWalletDeployer |
1.1.0.0 | 1.1.0.1 |
MetaTransactionWallet |
1.1.0.1 | 1.1.1.0 |
Published by gastonponti over 3 years ago
This release was published on April 22nd, 2021 and includes commits till 125f98da65f9b8161af524d183b7da70b96e2a07 inclusive
Published by gastonponti over 3 years ago
This release was published on April 22nd, 2021 and includes commits till c78ae096d114d88107cc206afcc5150d0f5b6671 inclusive
Published by medhakothari over 3 years ago
This release was published on March 22nd, 2021 and includes commits from 64e618b9b856073305dd5748fc04fc772ff72714
to 7e7a7913e1dbd4ce72ddc6384a054138c8ec32e8
inclusive.
rewards:show
- #7325
getReserveGoldBalance
, dont alias itself - #7334
governance:approver
information - #7478
Published by medhakothari over 3 years ago
This release was published on February 17th, 2021 and includes commits from 23b12644eda957ef87530845ff062e9f02358dd4
to f79c14fd5dfb96249cd28d4fcc6287a088eaacd5
inclusive.
releasegold:show
should succeed w/o account registration - #7092
releasegold:show
- #7098
multisig:transfer
- #6982
Published by medhakothari over 3 years ago
This release was published on February 17th, 2021 and includes commits from 2f5b795a601375d41b67ca0afe47107f8448ff50
to ffcf304361ae18cd38d4bc45b635a9043bb55c7a
inclusive.
releasegold:show
- #6608
identity:current-attestation-services
- #6806
Published by isabellewei over 3 years ago
Relative to the 1.9.2 release, the 1.10.0 release allows users to upload profile pictures for their account, features an improved Consumer Incentives experience and the ability to request a daily withdrawal limit increase by contacting cLabs Support. It also addresses various minor bugs.
This release was cut from master on February 4, 2021 from https://github.com/celo-org/celo-monorepo/commit/4ff47418e1b0b757ad2c8bf6408db8f7cc6b776c, with some additional translation strings added. See release branch: https://github.com/celo-org/celo-monorepo/tree/release/wallet/1.10.1
#6501 Update radio button designs
#6216 Batch feeless verification transactions
#6488 Enable Flipper on iOS for debugging
#5970 Upload profile pictures
#6835 Allow updating daily limit from backend
#6848 Redesign Consumer Incentives screen
#6786 Fix verification status
#6819 Disable keyboard suggestion when entering the account key
#6853 Fix Bidali view when number is not specified
N/A
Published by medhakothari almost 4 years ago
This release was published on January 25th, 2021 and includes commits from 2f5b795a601375d41b67ca0afe47107f8448ff50
to c8f675fb143862a00df2bbe9a8271abba0fd5f64
inclusive.
shrinkwrap.json
that avoids the usage of the package - #6671
Published by gnardini almost 4 years ago
Valora version 1.9 includes new ways to buy and spend cUSD, featuring cash in cUSD support with MoonPay and cash out with gift cards using Bidali. This release also features improvements to the CELO rewards program and addresses various minor display and navigation bugs.
This release was cut from master on January 22nd, 2021 from https://github.com/celo-org/celo-monorepo/commit/76eca55e69595a23f4893dd36fe01947e9d4ff7a and contains additional cherry-picked commits. See release branch: https://github.com/celo-org/celo-monorepo/tree/release/wallet/1.9.2
#6458 Retry Firebase connection upon failure
#6493 Add dynamic download link to Valora invite texts
#6510 Add Bidali integration
#6512 Support remote images for Firebase controlled notifications
#6520 Allow deep linking into any screen from notifications
#6499 Add Moonpay cUSD cash in
#6546 Remote notification targeting specific app versions and countries
#6522 Add native screen for Consumer Incentives
#6478 Ask PIN immediately on BackupForceScreen
#6479 Fix phone number search on Send Screen
#6338 Fix sporadic payment request hang
#6530 UI fix for Expandable component
#6506 Add loading indicator to WebViewScreen
N/A
Published by tarikbellamine almost 4 years ago
Relative to the 1.7.2 release, this update includes support for the upcoming CELO rewards program, Portuguese language support, and an improved Account Key import experience. It also addresses various minor display and navigation bugs.
This release was cut from master on January 11, 2020 from https://github.com/celo-org/celo-monorepo/commit/a08a4e5179745cf824b6d8410a272b8263d0a386 and contains additional cherry-picked commits. See release branch: https://github.com/celo-org/celo-monorepo/tree/release/wallet/1.8.0
#5945 Add Portuguese support
#6380 Use known names on CELO feed
#6388 Add TransactionReview screen for CELO rewards
#6391 Add dynamic notification to tray from Firebase
#6399 Add deep links for CashIn Screen
#6405 Allow opening WebView or external browser from push notification
#6372 Mnemonic validation flexibility within Valora
#6347 Show phone number on SendConfirmation Screen when contact display name is not available
#6407 Ask pincode when opening Account Key screen from notification
#6417 Add host of URI as title to WebViewScreen and fix deep links
#6350 Show the international format when displaying phone numbers in Valora
N/A
Published by medhakothari almost 4 years ago
This release was published on January 22nd, 2021 and includes commits from 23b12644eda957ef87530845ff062e9f02358dd4
to f5241e11f158675b8f5cbce2feb2ac85cbb58d18
inclusive.
Published by yorhodes almost 4 years ago
This is the third release of the Celo Core Contracts. It follows the release process per the docs.
OpenZeppelin Core Contracts Release 3 Audit
Release 3 generalizes the stability protocol for the launch of cEUR (and others coming soon!) and implements multiple CIPs in an effort to incorporate community feedback. More information about the Celo Euro launch can be obtained in CIP-33.
Reserve.sol
with support for multiple exchanges to pull assets #6299:For the upcoming launch of cEUR, the new exchange will need to spend CELO on behalf of the reserve for one side of CP-DOTO. A storage whitelist of exchange spenders was added while maintaining permission for the registered Exchange
identifier to circumvent initializing new storage on the already initialized Reserve
contract.
ExchangeEUR.sol
and StableTokenEUR.sol
to the core contracts #6572:The stability implementation for cEUR is identical to cUSD, and the new contracts simply inherit the implementation from the existing Exchange.sol
and StableToken.sol
. These contracts will be registered under the ExchangeEUR
and StableTokenEUR
registry identifiers and versioned independently. The initialization parameters are also included here.
StableToken.sol
#6780The new exchange also needs to be able to mint
and burn
cEUR on the new StableTokenEUR.sol
. A storage registry identifier is used to give the stable token implementation knowledge of the corresponding exchange's address, and permit these sensitive operations.
BlockchainParameters.sol
with CIP-21 implementation #4747:A validator's rewards in each epoch are affected proportionally by the percentage of blocks they provide signatures for, incentivizing uptime. This change makes the number of consecutive blocks which must be missed before the validator is considered down a governable parameter that the blockchain client reads from. The Donut
hard fork specified in CIP-27 necessitates this change.
Validators.sol
with CIP-29 implementation #6287:The validator uptime grace period was especially punitive and began punishing the validator group's future rewards after ~1 minute of continuous downtime. This change extends the grace period to ~10 minutes of continuous downtime to allow for routine maintenance and restarts.
Governance.sol
with small fix to getProposalStage external view
#6502Core Contracts:
Registry Identifier | Old | New |
---|---|---|
Reserve |
1.1.1.0 | 1.1.2.0 |
StableTokenEUR |
1.1.0.0 | |
ExchangeEUR |
1.1.0.0 | |
BlockchainParameters |
1.1.0.0 | 1.2.0.0 |
Validators |
1.1.1.0 | 1.2.0.0 |
Governance |
1.2.0.1 | 1.2.0.2 |