dojoengine / dojo

Dojo is a toolchain for building provable games and applications
https://dojoengine.org
Apache License 2.0
413 stars 168 forks source link

[torii] ERC20 indexing #2516

Open notV4l opened 2 weeks ago

notV4l commented 2 weeks ago

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

lambda-0x commented 2 weeks ago

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

lambda-0x commented 2 weeks ago

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