Repository navigation
Adopt IRaindexV7 and SignedContextV2 - #2929
Conversation
…s own eval Replaces clear3 with clear4, which evaluates alice's order with aliceSignedContext and bob's with bobSignedContext, matching quote2 and takeOrders4. clear3 is removed so callers carrying V6 assumptions revert at the missing selector. All consumers move from IRaindexV6 to IRaindexV7. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…134 merge rainlang 0.2.19 still imports rainlang-interface-0.2.13, so that release is kept alongside under its own Soldeer name and remapped. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ector Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ead d7e43ba; derive CONTEXT_COLUMNS_EXTENDED from the signed context start column Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t_fixtures ABIs for IRaindexV7 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s carry the EIP-712 domainSeparator Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Carries #2923's calculate-revert skip into takeOrders5 (quote3/clear4 pass skipFailure=false), takes OrderCalculateReverted from IRaindexV7 and pins raindex-interface to raindex.interface#79 head 7107727. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
clear4 evaluates alice with bobSignedContext and bob with aliceSignedContext, as clear3 did. The routing tests are replaced by a routing-agnostic SignedContextV2 test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedToo many files! This PR contains 253 files, which is 153 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ainlang version comment Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@coderabbitai assess this PR size classification for the totality of the PR with the following criterias and report it in your comment: S/M/L PR Classification Guidelines:This guide helps classify merged pull requests by effort and complexity rather than just line count. The goal is to assess the difficulty and scope of changes after they have been completed. Small (S)Characteristics:
Review Effort: Would have taken 5-10 minutes Examples:
Medium (M)Characteristics:
Review Effort: Would have taken 15-30 minutes Examples:
Large (L)Characteristics:
Review Effort: Would have taken 45+ minutes Examples:
Additional Factors to ConsiderWhen deciding between sizes, also consider:
Notes:
|
Summary
V7 adoption:
RaindexV6implementsIRaindexV7with EIP-712SignedContextV2.clear4keeps the signed-context routing thatclear3has on main (alice evaluated withbobSignedContext, bob withaliceSignedContext). The routing fix for #2850 is #2920, which stacks on this PR.Changes
raindex-interface0.1.10 andrainlang-interface0.2.14 from the Soldeer registry.rainlang0.2.26 still importsrainlang-interface-0.2.13/, so 0.2.13 stays installed asrainlang-interface-rainlang; only rainlang's own files use that prefix.IRaindexV7:entask3,deposit5,withdraw5,quote3,addOrder5,removeOrder4,takeOrders5,clear4(clear3selector removed),TakeOrderV4,TaskV3,TakeOrderConfigV5,TakeOrdersConfigV6,QuoteV3. Arbs:arb5->arb6, FlashBorrowerarb4->arb5.OrderCalculateRevertedis declared onIRaindexV7.SignedContextV2;LibContext.build->buildV2in order eval andLibRaindex.doPost.CONTEXT_SIGNED_CONTEXT_DOMAINS_COLUMN = SIGNERS + 1,START = DOMAINS + 1,CONTEXT_COLUMNS_EXTENDED = START + 1.doPoststill pads toCALLING_CONTEXT_COLUMNS.signer-domain<i>()reads row i of the domains column, mirroringsigner.TakeOrderV4;script/build.shregenerates subgraph codegen and the bindings/test-fixture ABIs.getTakeOrders3Calldata->getTakeOrders5Calldata); tsifySignedContextV2gainsdomainSeparator. The signed context oracle'sOracleResponserequiresdomainSeparatorand rejects a response without it.2aea60e5(build-meta,Build.solto fixpoint, forge build,script/build.sh, forge fmt).Evidence
Head
579d27bce3f4479033094c3ba52d45b16aa87be5, locally at rainix2aea60e5:Build.solx2, forge build,script/build.sh, forge fmt); a furtherBuild.solrun changes nothing.forge test: 756 passed, 3 failed, 759 total. The 3 areFLARE_RPC_URLunset (testSuitesLiveOnEverySupportedNetwork,testSupportedNetworkChainIdsAreBound,testIsStartBlockFlare).cargo test --workspace: 1927 passed, 0 failed.pre-commit run --all-filesin sol-shell and rust-shell: pass, no changes.Downstream migration
SignedContextV2(address signer,bytes32[] context)and senddomainSeparator. Oracle servers adddomainSeparatorto every response.signer-domain<i>().vercel-prod.yamltriggers oncrates/**,packages/**) while settings point at the V6 raindex0x37FC0EFec37D19f8A221aa4F8F7600C9ba2AcD20, so V7 must be deployed and settings repointed before merge.subgraph/networks.jsonmust be repointed at the V7 raindex too.QA
RaindexV6.clear.signedContextV2.t.solgives both orders the same EIP-712 signed context and each expression asserts signer, domain and content, so it holds under either routing;testClear3SelectorIsRemovedpins the dispatch revert.RaindexV6SubParser.signerDomains.t.solandtestRouteSignerDomainsRowFromOperandcoversigner-domain.*TaskSignerWordsReadRealSigners(entask/addOrder/removeOrder/deposit/withdraw/finalizeArb) sign under two domains and read the domain column in post tasks. main'sclear3tests are ported toclear4as they were. None of these exist on main (V6 has no domains column orclear4).signer-domaincolumn/row, order-eval anddoPostdomains zeroed/dropped,doPostpadding). M09/M10 (order-eval domains zeroed/dropped) were killed only by Route each clear4 signed context to its own order #2920's routing tests there; re-run on this head (targetedRaindexV6.clear.*): both killed bytestClearEvalSeesSignedContextV2.MessageHashUtils.toTypedDataHash(domainSeparator, LibContext.hashStruct(...))andvm.sign; layout fromIInterpreterCallerV5/LibContext.buildV2.SignedContextV2on every entrypoint, domains column + word, Rust/JS/subgraph/oracle follow-through). Theclear4routing change is Route each clear4 signed context to its own order #2920.🤖 Generated with Claude Code