chore(contracts,bindings): cut release candidates contracts/v2.0.0-rc.0 and bindings/v3.0.0-rc.7 - #99
Merged
Merged
Conversation
…tatement Use the more concise require(condition, Error()) pattern instead of if-revert blocks for precondition checks.
refactor: replace if-revert-error with require-error statement
chore(bindings): bump deps
chore(contracts, bindings): bump deps and tempo and tempo-moderato deployment
Seed the JSON file from the current hardcoded addresses in `bindings/src/addresses.rs`. Includes `protocolAdapterAddress` to record which protocol adapter each forwarder is linked to.
Replace the hardcoded HashMap in `addresses.rs` with `include_str!` + `serde_json` parsing of `deployments.json`. The JSON is embedded at compile time — no scripts or codegen needed. Public API unchanged.
Validate that all entries have known chain IDs, valid addresses, no duplicate chain IDs, and that the parsed map matches the JSON.
Replace references to editing `addresses.rs` with instructions to edit `deployments.json`, including JSON format examples and notes that validation is handled by existing `just` commands. Also update cross-reference to pa-evm's `deployments.json`.
Add deployment tracking
…ng constant `getVersion()` returning a `bytes32` small string becomes `VERSION`, a public `string` constant, matching the protocol adapter. The selector changes from `0x0d8e6e2c` to `0xffa1ad74`, so `IVersion` from the forwarder bases no longer applies and the forwarder declares the version itself.
The recorded base-sepolia forwarder is a v1-era deployment wired to a retired protocol adapter, and it answers `getVersion()` rather than the `VERSION()` this source generates bindings for, so it can no longer be described by this crate.
feat(contracts,bindings)!: make forwarder upgradeable
…tocol adapter Pins solc 0.8.36, the protocol adapter 2.0.0-rc.0 and `anoma-risc0-deployments` 1.2.1 as the protocol adapter does, and adds `safe-smart-account` and `safe-utils` for proposing to the Safe owning the production proxy. Narrows the filesystem access to the build artifacts and the deployment record, the two files the tests read. The bindings are regenerated under the new compiler.
The proxy deploy script selects the staging or the production environment, which picks the CREATE2 salt and the owner: the deployment wallet for staging, the Safe multisig for production. The implementation takes no constructor arguments, so it deploys deterministically to one address on every chain, shared by both environments. Both scripts predict their addresses so that a recorded deployment can be checked against the source. `deployments.json` records the proxy per environment with the genesis fields pinning how its address was derived. The fixture recomputes the address on every run, and the promotion gate forks each recorded chain to prove it runs the source implementation — as a release or candidate on staging, as a Safe-owned release on production. The bindings expose the record keyed by `Environment` and no longer carry the implementation, which the chain answers. The base-sepolia test deployment predates this layout and is dropped; the next deploy records a genesis entry.
Staging executes the upgrade as the proxy owner; production proposes it to the Safe owning the proxy, whose signers confirm and execute it in the Safe app. Both check that the target is the implementation this source version deploys to and that it is deployed, and both refuse a proxy of the other environment. The script upgrading to the `ERC20ForwarderV2` draft goes: rotating the logic reference through a reinitializer is superseded by the kind table, and the draft stays only to exercise the UUPS path in the tests.
`contracts-publish` took the version as an argument, which let the package label drift from the `VERSION` the source ships. The recipe now runs a script returning the compiled constant and refuses to push anything that is not a version.
Pull requests into `staging` and `main` set the flag that un-skips the deployment tests for their environment, so a promotion proves the recorded proxies run the source it carries. Pushes to `staging` run the workflows like the other environment branches.
The checklist follows the protocol adapter's: a release candidate cycles through staging, the lifted release carries to production through a Safe proposal, and a chain new to an environment records one genesis entry. The glossary gains the environment terms.
Also risc0-deployments 1.2.2, alloy 2.4.1, and the protocol adapter bindings by git rev — the promotion-gate tests now compare against the protocol adapter proxy of the same environment; the rev moves to "3.0.0-rc.6" once that reaches crates.io.
feat(contracts,bindings)!: split the forwarder into a staging and a production environment
build: bump to forwarder bases 3.0.0 and protocol adapter 2.0.0-rc.1
fix(contracts): use forwarder mutltisig as the proxy owner
chore(contracts,bindings): prepare contracts/v2.0.0-rc.0 and bindings/v3.0.0-rc.7
build(contracts): bump solhint and add oz upgrades-core
chore(contracts): deployed contracts to sepolia and base-sepolia
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.