The next stage in blockchain debugging technology was recently introduced in an article by NGD Seattle (now Enterprise) head John deVadoss. In the article, deVadoss introduces the team’s new multi-pronged approach to support debugging in transactions, even across complex cross-chain or off-chain execution scenarios.
The new approach, dubbed fractal debugging, makes use of message tracing, log analysis, visualization and the previously released time-travel debugging functionality. Tracing tools are used to follow a transaction as it moves through multiple networks or protocols, with pre-defined metrics collected at each junction. This allows a full picture to be built up about how the transaction or data was transformed over the transaction’s lifecycle. Log analysis can also be applied in any protocols in which it is available, giving access to more in-depth details to add to the picture.
Coupled with visualization techniques and the forward/backward replayability of time-travel debugging, this full solution is intended to meet the future needs of developers as they strive to build increasingly interoperable applications.
Together, these tools can be used to visually represent transactions spanning multiple networks or protocols. This allows insights to be gained about executions even outside the relative deterministic safety of a blockchain, such as during interaction with off-chain data sources such as oracles.
“Our goal is to continue to raise the bar for the developer experience and to push the envelope with respect to cross-chain development scenarios, including Oracles, FS and more. With the launch wave of Neo3 and the forthcoming enhancements for the Neo Smart Contract Debugger, we are looking forward to delivering Fractal Debugging for cross-chain scenarios to our developers world-wide.”
Following the first stage of implementation with the release of time-travel debugging, the Seattle-based team has begun rolling out oracle functionality. Currently the solution enables debugging of responses that are pre-specified as JSON by the developer, but future versions will build on the official oracle plugin to allow data retrieval from the Internet. A sample contract for testing can be found here.