fbpx

How error propagate between contracts in Solidity?

Julien Klepatch

Let's say we have 2 smart contracts. A and B. A calls B, and B throws an error.

What happen in A?

Not sure? haha, that's a tricky one!

Actually it depends on how B was called.

If B was called the normal way, the whole transaction get reverted:

contract A {
  function foo() {
   B b = new B();
   b.willThrow();
  }
}
contract B {
  function willThrow() {
    revert();
  }
}

BUT, if B was called with a low-level call() method, the error will NOT be propagated to A. Instead, A will received a false boolean value indicating there was an error in B. This way, A can recover from the error and handle the error itself.

Check out this video where I explain this in full details, as well as other error handling mechanisms in Solidity like assert, revert, require and throw.

By the way, in the Dapp 30 course, there is a bonus section dedicated to debugging in Solidity when I explain in details the different kind of errors in Solidity and how to debug them.

0 Comments

Leave a Reply

More great articles

Terra Blockchain explained in 2 mins




Terra is a Blockchain built for ecommerce. In 2021 its price was multiplied by 70, and the value locked in…

Read Story

Flashbots explained simply

On Ethereum, miners have an unfair advantage called MEV

. Since 2020, miners made more than 700M dollars, using techniques like…

Read Story

Genesis Post | Episode 0

https://youtu.be/S4Q9T4EZjSs Hi and welcome to Eat The Blocks! My name is Julien Klepatch. I am a blockchain developer, and I…

Read Story

Never miss a minute

Get great content to your inbox every week. No spam.
[contact-form-7 id="6" title="Footer CTA Subscribe Form"]
Arrow-up