-
Notifications
You must be signed in to change notification settings - Fork 18
2025 10 08 int #2192
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2025 10 08 int #2192
Changes from all commits
4f20ed6
4079205
cf14748
08e1c4e
4d74e5d
0d1220d
7538faf
8437bbf
d2d6371
185f17e
2361a34
77c8968
c4ee0e3
0b1726a
22d65bd
8054b0a
1ed2018
546fae5
b004dd5
539c82e
08b8ebb
c9e48ab
6abbed0
15bd0f1
e5ef0c1
8c424fc
cb50d97
6eba209
054da8d
0a59c11
236644e
9e33287
6551dfe
2a62efa
7777180
756caa6
648f15f
51fb2b9
91abd78
4f5dc89
8c4da83
d1c75aa
0223a97
98ca493
148261c
b531837
74a32b3
d1b99fc
0d3c049
850adfb
17905dd
4ff2c27
36dbee0
ebee68c
1ea9782
3c5ecca
dd4bce6
984c249
4c20625
96318e9
2c61385
9d5b0c9
16d0709
aded351
9563eb7
5b0faac
4d89bbb
30d2442
dabf86e
6021d2d
a983a96
8ae697f
d5080ae
e69d725
139b458
11526ad
dde6ddd
f1cd85e
a7264d4
77099c8
edb4621
fc5269e
a367594
1d6c8a1
9f4edc8
1197f44
f104609
5ba9d7c
4115849
a29c683
a7d33cf
f2ac1c4
15fa1f6
191d4b0
05c2e5d
7f32571
7b97c7f
beab91e
aae87c0
4b19fa1
e12afd6
c995179
8549030
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -3,7 +3,7 @@ use alloy::{ | |||||||||||
| hex::decode, | ||||||||||||
| network::{AnyNetwork, AnyTransactionReceipt, EthereumWallet, TransactionBuilder}, | ||||||||||||
| node_bindings::{Anvil, AnvilInstance}, | ||||||||||||
| primitives::{utils::parse_units, Address, Bytes, B256, U256}, | ||||||||||||
| primitives::{address, utils::parse_units, Address, Bytes, B256, U256}, | ||||||||||||
| providers::{ext::AnvilApi, PendingTransactionError, Provider, ProviderBuilder}, | ||||||||||||
| rpc::types::TransactionRequest, | ||||||||||||
| serde::WithOtherFields, | ||||||||||||
|
|
@@ -14,7 +14,7 @@ use alloy::{ | |||||||||||
| }; | ||||||||||||
| pub use rain_interpreter_test_fixtures::{Deployer, Interpreter, Parser, Store, ERC20}; | ||||||||||||
| use serde_json::value::RawValue; | ||||||||||||
| use std::{marker::PhantomData, str::FromStr}; | ||||||||||||
| use std::marker::PhantomData; | ||||||||||||
|
|
||||||||||||
| use rain_interpreter_test_fixtures::LocalEvmProvider; | ||||||||||||
| use rain_math_float::Float; | ||||||||||||
|
|
@@ -34,6 +34,11 @@ sol!( | |||||||||||
| "../../lib/rain.interpreter/lib/rain.interpreter.interface/lib/forge-std/src/interfaces//IMulticall3.sol" | ||||||||||||
| ); | ||||||||||||
|
|
||||||||||||
| sol!( | ||||||||||||
| #![sol(all_derives = true, rpc = true)] | ||||||||||||
| TOFUTokenDecimals, "../../lib/rain.tofu.erc20-decimals/out/TOFUTokenDecimals.sol/TOFUTokenDecimals.json" | ||||||||||||
| ); | ||||||||||||
|
Comment on lines
+37
to
+40
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chainVerify the external submodule path and artifact. The sol! binding references an external submodule artifact at
🏁 Script executed: #!/bin/bash
# Verify the TOFUTokenDecimals artifact exists and is valid
# Check if submodule directory exists
if [ -d "lib/rain.tofu.erc20-decimals" ]; then
echo "✓ Submodule directory exists"
else
echo "✗ Submodule directory not found"
exit 1
fi
# Check if the artifact file exists
ARTIFACT="lib/rain.tofu.erc20-decimals/out/TOFUTokenDecimals.sol/TOFUTokenDecimals.json"
if [ -f "$ARTIFACT" ]; then
echo "✓ Artifact file exists"
# Verify it's valid JSON and contains expected fields
if jq -e '.abi and .bytecode' "$ARTIFACT" > /dev/null 2>&1; then
echo "✓ Artifact contains abi and bytecode"
else
echo "✗ Artifact missing required fields"
exit 1
fi
else
echo "✗ Artifact file not found at: $ARTIFACT"
echo "Run 'cd lib/rain.tofu.erc20-decimals && nix develop -c forge build' to build it"
exit 1
fiLength of output: 216 Ensure the TOFUTokenDecimals artifact exists and binding path is correct
🤖 Prompt for AI Agents |
||||||||||||
|
|
||||||||||||
| /// A local evm instance that wraps an Anvil instance and provider with | ||||||||||||
| /// its signers, and with rain contracts already deployed on it. | ||||||||||||
| /// The first signer wallet is the main wallet that would sign any transactions | ||||||||||||
|
|
@@ -104,6 +109,14 @@ impl LocalEvm { | |||||||||||
| .wallet(signer_wallets[0].clone()) | ||||||||||||
| .connect_http(anvil.endpoint_url()); | ||||||||||||
|
|
||||||||||||
| provider | ||||||||||||
| .anvil_set_code( | ||||||||||||
| TOFU_TOKEN_DECIMALS_ADDRESS, | ||||||||||||
| TOFUTokenDecimals::DEPLOYED_BYTECODE.clone(), | ||||||||||||
| ) | ||||||||||||
| .await | ||||||||||||
| .unwrap(); | ||||||||||||
|
|
||||||||||||
| // deploy rain contracts | ||||||||||||
| let orderbook = Orderbook::deploy(provider.clone()).await.unwrap(); | ||||||||||||
| let orderbook_subparser = OrderbookSubParser::deploy(provider.clone()).await.unwrap(); | ||||||||||||
|
|
@@ -118,15 +131,14 @@ impl LocalEvm { | |||||||||||
| let deployer = Deployer::deploy(provider.clone(), config).await.unwrap(); | ||||||||||||
|
|
||||||||||||
| // set the multicall 3 contract at its official address | ||||||||||||
| let multicall3_address = Address::from_str(MULTICALL3_ADDRESS).unwrap(); | ||||||||||||
| provider | ||||||||||||
| .anvil_set_code( | ||||||||||||
| multicall3_address, | ||||||||||||
| MULTICALL3_ADDRESS, | ||||||||||||
| decode(MULTICALL3_BYTECODE).unwrap().into(), | ||||||||||||
| ) | ||||||||||||
| .await | ||||||||||||
| .unwrap(); | ||||||||||||
| let multicall3 = IMulticall3::new(multicall3_address, provider.clone()); | ||||||||||||
| let multicall3 = IMulticall3::new(MULTICALL3_ADDRESS, provider.clone()); | ||||||||||||
|
|
||||||||||||
| Self { | ||||||||||||
| anvil, | ||||||||||||
|
|
@@ -336,5 +348,7 @@ impl LocalEvm { | |||||||||||
| } | ||||||||||||
| } | ||||||||||||
|
|
||||||||||||
| const MULTICALL3_ADDRESS: &str = "0xcA11bde05977b3631167028862bE2a173976CA11"; | ||||||||||||
| const MULTICALL3_ADDRESS: Address = address!("cA11bde05977b3631167028862bE2a173976CA11"); | ||||||||||||
| const MULTICALL3_BYTECODE: &str = "0x6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e1461025a578063bce38bd714610275578063c3077fa914610288578063ee82ac5e1461029b57600080fd5b80634d2301cc146101ec57806372425d9d1461022157806382ad56cb1461023457806386d516e81461024757600080fd5b80633408e470116100c65780633408e47014610191578063399542e9146101a45780633e64a696146101c657806342cbb15c146101d957600080fd5b80630f28c97d146100f8578063174dea711461011a578063252dba421461013a57806327e86d6e1461015b575b600080fd5b34801561010457600080fd5b50425b6040519081526020015b60405180910390f35b61012d610128366004610a85565b6102ba565b6040516101119190610bbe565b61014d610148366004610a85565b6104ef565b604051610111929190610bd8565b34801561016757600080fd5b50437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0140610107565b34801561019d57600080fd5b5046610107565b6101b76101b2366004610c60565b610690565b60405161011193929190610cba565b3480156101d257600080fd5b5048610107565b3480156101e557600080fd5b5043610107565b3480156101f857600080fd5b50610107610207366004610ce2565b73ffffffffffffffffffffffffffffffffffffffff163190565b34801561022d57600080fd5b5044610107565b61012d610242366004610a85565b6106ab565b34801561025357600080fd5b5045610107565b34801561026657600080fd5b50604051418152602001610111565b61012d610283366004610c60565b61085a565b6101b7610296366004610a85565b610a1a565b3480156102a757600080fd5b506101076102b6366004610d18565b4090565b60606000828067ffffffffffffffff8111156102d8576102d8610d31565b60405190808252806020026020018201604052801561031e57816020015b6040805180820190915260008152606060208201528152602001906001900390816102f65790505b5092503660005b8281101561047757600085828151811061034157610341610d60565b6020026020010151905087878381811061035d5761035d610d60565b905060200281019061036f9190610d8f565b6040810135958601959093506103886020850185610ce2565b73ffffffffffffffffffffffffffffffffffffffff16816103ac6060870187610dcd565b6040516103ba929190610e32565b60006040518083038185875af1925050503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b50602080850191909152901515808452908501351761046d577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b5050600101610325565b508234146104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d756c746963616c6c333a2076616c7565206d69736d6174636800000000000060448201526064015b60405180910390fd5b50505092915050565b436060828067ffffffffffffffff81111561050c5761050c610d31565b60405190808252806020026020018201604052801561053f57816020015b606081526020019060019003908161052a5790505b5091503660005b8281101561068657600087878381811061056257610562610d60565b90506020028101906105749190610e42565b92506105836020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166105a66020850185610dcd565b6040516105b4929190610e32565b6000604051808303816000865af19150503d80600081146105f1576040519150601f19603f3d011682016040523d82523d6000602084013e6105f6565b606091505b5086848151811061060957610609610d60565b602090810291909101015290508061067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b50600101610546565b5050509250929050565b43804060606106a086868661085a565b905093509350939050565b6060818067ffffffffffffffff8111156106c7576106c7610d31565b60405190808252806020026020018201604052801561070d57816020015b6040805180820190915260008152606060208201528152602001906001900390816106e55790505b5091503660005b828110156104e657600084828151811061073057610730610d60565b6020026020010151905086868381811061074c5761074c610d60565b905060200281019061075e9190610e76565b925061076d6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166107906040850185610dcd565b60405161079e929190610e32565b6000604051808303816000865af19150503d80600081146107db576040519150601f19603f3d011682016040523d82523d6000602084013e6107e0565b606091505b506020808401919091529015158083529084013517610851577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b50600101610714565b6060818067ffffffffffffffff81111561087657610876610d31565b6040519080825280602002602001820160405280156108bc57816020015b6040805180820190915260008152606060208201528152602001906001900390816108945790505b5091503660005b82811015610a105760008482815181106108df576108df610d60565b602002602001015190508686838181106108fb576108fb610d60565b905060200281019061090d9190610e42565b925061091c6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff1661093f6020850185610dcd565b60405161094d929190610e32565b6000604051808303816000865af19150503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b506020830152151581528715610a07578051610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b506001016108c3565b5050509392505050565b6000806060610a2b60018686610690565b919790965090945092505050565b60008083601f840112610a4b57600080fd5b50813567ffffffffffffffff811115610a6357600080fd5b6020830191508360208260051b8501011115610a7e57600080fd5b9250929050565b60008060208385031215610a9857600080fd5b823567ffffffffffffffff811115610aaf57600080fd5b610abb85828601610a39565b90969095509350505050565b6000815180845260005b81811015610aed57602081850181015186830182015201610ad1565b81811115610aff576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015610bb1578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051151584528401516040858501819052610b9d81860183610ac7565b9a86019a9450505090830190600101610b4f565b5090979650505050505050565b602081526000610bd16020830184610b32565b9392505050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610c52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452610c40868351610ac7565b95509284019290840190600101610c06565b509398975050505050505050565b600080600060408486031215610c7557600080fd5b83358015158114610c8557600080fd5b9250602084013567ffffffffffffffff811115610ca157600080fd5b610cad86828701610a39565b9497909650939450505050565b838152826020820152606060408201526000610cd96060830184610b32565b95945050505050565b600060208284031215610cf457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610bd157600080fd5b600060208284031215610d2a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112610dc357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e0257600080fd5b83018035915067ffffffffffffffff821115610e1d57600080fd5b602001915036819003821315610a7e57600080fd5b8183823760009101908152919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610dc357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610dc357600080fdfea2646970667358221220bb2b5c71a328032f97c676ae39a1ec2148d3e5d6f73d95e9b17910152d61f16264736f6c634300080c0033"; | ||||||||||||
|
|
||||||||||||
| const TOFU_TOKEN_DECIMALS_ADDRESS: Address = address!("4f1C29FAAB7EDdF8D7794695d8259996734Cc665"); | ||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick | 🔵 Trivial Document the address derivation. The constant
Consider adding a documentation comment: +/// The canonical deployment address for TOFUTokenDecimals.
+/// This address is used in tests to etch the contract runtime code.
+/// Source: [explain derivation or reference]
const TOFU_TOKEN_DECIMALS_ADDRESS: Address = address!("4f1C29FAAB7EDdF8D7794695d8259996734Cc665");📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| { | ||
| "lib/rain.interpreter": { | ||
| "rev": "d1fee1b9c4a427ebd529b9c0b0e17718c1a4a99a" | ||
| }, | ||
| "lib/rain.orderbook.interface": { | ||
| "rev": "dae86d795b32cb88005d9c47cbbbff9a5eef940a" | ||
| }, | ||
| "lib/rain.tofu.erc20-decimals": { | ||
| "rev": "ca8e8bacf6c6cb3b9938a6961efb9f93cc1754f9" | ||
| }, | ||
| "lib/sushixswap-v2": { | ||
| "rev": "ca38c64cf7c3042f6427414d7bff61c54293da51" | ||
| } | ||
| } |
Uh oh!
There was an error while loading. Please reload this page.