pinax-network / substreams-antelope

Substreams for Antelope
https://docs.rs/substreams-antelope
Apache License 2.0
1 stars 1 forks source link

`Block::executed_transaction_traces()` fails on transactions without receipts #21

Closed YaroShkvorets closed 7 months ago

YaroShkvorets commented 7 months ago
❯ substreams run -e eos.substreams.pinax.network:443 https://github.com/pinax-network/substreams/releases/download/eosio.token-v0.13.1/eosio-token-v0.13.1.spkg map_transfers -s 35080000 -t +1
Connected (trace ID 88291f8f3327711e5f4c3122a7f6d8f6)
Progress messages received: 0 (0/sec)
Backprocessing history up to requested target block 35080000:
(hit 'm' to switch mode)

Error: rpc error: code = InvalidArgument desc = step new irr: handler step new: execute modules: applying executor results "map_transfers": execute: maps wasm call: block 35080000: module "map_transfers": general wasm execution panicked: wasm execution failed deterministically: panic in the wasm: "called `Option::unwrap()` on a `None` value" at /Users/shkvo/.cargo/registry/src/github.com-1ecc6299db9ec823/substreams-antelope-core-0.3.2/src/block.rs:36:48

Looks like EOS system contract was out of resources for ~6000 blocks after block 35080000 and eosio::onblock was failing without receipts.

executed_transaction_traces() panics because of that.

See trx: 2e4a56fd1b06dd42c67c8b6264099d9921b627f6d4dfe6aab30f89f8f5dc22b0

Solution: skip such transactions in executed_transaction_traces() but still include them in all_transaction_traces()