Let us consider the following setup. Alice executes a method doStuff(...) of a particular smart contract deployed to an EVM blockchain under address 0x0123456789. Execution of that method resulted with a transaction under ID 0xABCDF. Alice wants to prove to Bob having executed doStuff(...).

My questions are the following:

  1. What is the most canonical way to prove having executed a method of a smart contract?
  2. I assume they both have to be in possession of ABI and compiled contract. What other information does Alice has to provide to Bob?
  3. How does Bob verify this fact? I'm interested in both abstract/theoretical description and practical (using web3.js, web3.py etc).

Many thanks in advance for your comments!

1 Answer 1


I think what you are looking for are events. They can be emitted on transactions and picked up by off chain parties. Read https://docs.soliditylang.org/en/v0.8.10/contracts.html#events

  • I see! Thanks for answering! So for example, if Bob gets the receipt object from this example would that be considered proven?
    – Marek
    Dec 3, 2021 at 5:01

Your Answer

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

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