eosq Removes Ambiguity When Debugging Your Smart Contract

Mar 7, 2019 11:43:34 AM / by dfuse

When debugging a smart contract, it is very important to understand the notifications and inline actions that it generates, but more importantly, the order in which they are generated. eosq, which is built atop dfuse, is adding a new viewing filter to help developers with their deep-level questions.

Creation order is not the same as execution order within EOSIO. When a smart contract notifies another account, creates inline actions or inline context-free actions, it executes them *after* the current contract finishes execution. Also, the order it is executed in might not reflect the order in which it was created, because a notified action can also schedule some inline actions. These will *all* be executed at once, only after the notifications are complete.

This is all very abstract, so let’s take an example:

In this case, the visualization infers that the fourth action was a child of the first, but in reality, if you check the contract code and analyze what happened, you’ll notice that it was actually created by the *third* action. Because of the way contract execution accumulates notifications and inline actions from those notifications in the same basket, it can be ambiguous as to which actions created what.

Thankfully, eosq now allows you to easily switch between Execution Tree view and Creation Tree view, which you can simply toggle between. Here’s an example where the ordering completely changes: 

 

Through tools like this, and others found within eosq and dfuse, we are helping to enrich the toolkit for all developers entering the EOSIO ecosystem. These efforts help drive adoption, bringing greater experiences and value to the end user. Make sure to let every developer know that dfuse is free to use and that they can get started in just a few moments after requesting their free dfuse API key.

If you still have questions, or if you’re looking to request a feature that would make your development experience easier, then join us in our Telegram channel and make sure to keep up to date with our documentation as we’re adding to it all the time!

topics eosq, dfuse, developer, execution tree, creation tree