0

Here is transaction https://etherscan.io/tx/0x0db6f8036ca7ea58bf4a8799bbf62bb30e3431d644d37d4030c27ac0d22f7542#eventlog

In logs we can see 3rd function SendToInjectiveEvent(). It is interaction with Injective: Peggy Bridge Proxy contract (0xF955C57f9EA9Dc8781965FEaE0b6A2acE2BAD6f3). Let's check ABI: https://api.etherscan.io/api?module=contract&action=getabi&address=0xf955c57f9ea9dc8781965feae0b6a2ace2bad6f3

Why I can not see that function in ABI? I figured out this problem after 2 hours digging libs that converts web3.keccak() topics and could not process.

1 Answer 1

0

The contract is proxy, so it doesn't contain all the code itself. You need to check also the implementation.

In this case the implementation is 0xe427199D43366F1ae552e612Ab388c317306fD5C, which has the correct event.

https://etherscan.io/address/0xe427199d43366f1ae552e612ab388c317306fd5c#code

https://api.etherscan.io/api?module=contract&action=getabi&address=0xe427199D43366F1ae552e612Ab388c317306fD5C

4
  • Thank you very much for answer. Indeed, in log array where I caught an error there is an address=0xF955C57f9EA9Dc8781965FEaE0b6A2acE2BAD6f3, which ABI has implementation keywords. But how did you get 0xe4271...fD5C? For 0xF955..D6f3 from log loop in web3py contract.functions.implementation() gives me base address 0xF955..D6f3, but not 0xe427..fD5C
    – sirjay
    Commented Feb 23 at 22:30
  • I've found it by digging at the internal transactions etherscan.io/tx/… You can see a delegate call to 0xe427 there
    – 0xSanson
    Commented Feb 24 at 10:16
  • There are 3 logs in transaction. In Internal Txns tab we see 2 operations. How did you know, that delegatecall_0_1 is about 3rd log? What if we had 10 logs and a lot of Internal Txns operations, how would we connect what log to what internal operation? I can not decode that 3rd log, because I don't have ABI => no data about it to compare with Internal Txns data..
    – sirjay
    Commented Feb 24 at 13:37
  • When a contract is a proxy you need to add the ABI of the implementation to it. So you check which contract emitted the event, and look at both ABI of itself and implementation
    – 0xSanson
    Commented Feb 24 at 15:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.