We’d love to share new features we’ve been working on for eosq - the high-precision block explorer. Some are game changers for developing on EOS, yet some are subtle in the UI, or are shown only in certain transactions. We’d like to highlight them since they will make developing on EOS much easier.
What Are the Challenges of Database Operations in a Blockchain?
Most blockchain transactions generate database changes when modifying a balance or storing information in the state. Usually, this can be queried only through RPC calls. Also, only the resulting state can be queried at the end of the whole block’s execution. If you are a developer, you might find it annoying not being able to see what happened during the execution of a given action, that led to a given state.
Another challenge, when viewing historical transactions, is to decode the binary data through the lens of the ABI at that point in time. The ABI might have changed since, and perhaps gives you a different (and/or wrong) view of the historical data.
How Does eosq Show Database Operations?
On eosq, database operations show modifications to the blockchain storage. They are scoped to the each individual action, not the whole transaction, nor the block. This is more precise and more useful for debugging your dapp, or understanding what is happening on the chain.
Also, thanks to dfuse DB, the output is decoded through the lens of the historical ABI -- the ABI in effect at the time of the transaction. This gives you a deterministic view of the database operations. Those changes are displayed on eosq in JSON format, streamed through dfuse Stream.
Database operations matter if you would like to check if the amount in a `transfer` is mirrored in your new account balance. One example is to detect rogue currency contracts: ones that do not alter your balance according to the `quantity` you specify or have other side effects. In the end, a `transfer` should alter two balances and the differences should sum up to zero.
A Richer Account View
To increase the understanding of what’s really going on in the chain, eosq now offers a more in-depth account view. It provides detailed information about the resources an account is delegating towards others, and what others have delegated towards that account. It also shows the available resource in a format that answers the users’ question directly: do I have sufficient resources to use the chain?
Notice also the links to the account creation transaction on the right hand side.
Identify Failed Transactions
When dealing with deferred transactions, a powerful feature of EOSIO chains, it’s important to know that they can fail when the execution time comes. eosq provides detailed information for the failure, including the full stack trace in JSON.
Powered by dfuse, eosq is able to offer a deep view of what’s really going on within the chain. Stay tuned. We are constantly adding new features to meet the needs of developers. Be sure to read our previous post to read about how eosq handles deferred transactions and shows the complete transaction traces.