dojoengine/dojo

[torii] ERC20 indexing

Opened this issue · 2 comments

Describe the bug

2024-10-10T12:03:54.208066Z  INFO torii_core::engine: Processed block. block_number=10240
[crates/torii/core/src/executor.rs:582:17] &balance_diff = I256 {
    value: U256(
        Uint(0x00000000000000000000000000000000000000000000000000583E7BE3672ED6),
    ),
    is_negative: true,
}
[crates/torii/core/src/executor.rs:582:17] balance = U256(
    Uint(0x0000000000000000000000000000000000000000000000000000000000000000),
)
[crates/torii/core/src/executor.rs:582:17] id = "0x78c43983fca31e2f0c0a755af505b8c80992e55e88109c70bd087bbeae17a0d/0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7/"
thread 'tokio-runtime-worker' panicked at /Users/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/subtle-2.6.1/src/lib.rs:701:9:
assertion `left == right` failed
  left: 0
 right: 1
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Error: channel closed

note it crashes on default blocks-chunk-size

also got this error on another run with --blocks-chunk-size 10

2024-10-10T12:50:26.667790Z ERROR torii_core::executor: Failed to execute query. type=Other error=Failed to execute query: "INSERT INTO tokens (id, contract_address, name, symbol, decimals) VALUES (?, ?, ?, ?, ?)", args: [String("0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7"), FieldElement(0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7), String("Ether"), String("ETH"), Int(18)]

it seems impossible to run with default 10240 on mainnet excpect on a local node, i tried with cartridge rpc and some other, it seems to either hang for very long time or do nothing

To Reproduce

on mainnet
torii  -w 0x50c46c6f69ea9f12b24fcdd1569a584ae8893db0c70ea7884b605384da78ebc --contracts ERC20:0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7,ERC20:0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8,ERC20:0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d

Expected behavior
No crash

Additional context
alpha.15

looks like its issue specifically related to ETH erc20 contract, it looks like old version of the contract didn't comply with the ERC spec properly will have to dig deeper to figure out the exact issue.

it seems impossible to run with default 10240 on mainnet excpect on a local node, i tried with cartridge rpc and some other, it seems to either hang for very long time or do nothing

thats expected considering you are indexing ETH, STRK and USDC which all are very big contracts and fetching events for them takes longer. but you can use RUST_LOG="torii=debug" to see it fetching the events

confirmed with voyager team that ETH on mainnet in early days didn't emit erc transfer events correctly. we would have to hardcode some patch specifically for it to get it working