Neo 虚拟机
在下一篇文章中,,我们将更具体地研究 Neo3 异常处理惩罚的进程。Neo 首创人兼焦点开拓者张铮文最初于 2018 年 7 月提出了在 Neo 智能合约添加异常处理惩罚成果的想法。对此,NeoResearch 的 Igor Coelho 认为可以实验捕捉机制,利用新的 Try 操纵码,以便在产生异常时记录 VM 跳转的位置。
所有陈设在 Neo 上的智能合约均由 NeoVM 的网络节点执行。挪用合约时,与挪用事务关联的输入将通过 VM 内部的合约字节码运行。可在此处找到有关 NeoVM 事情道理的交互式指南。
「三分钟入门 Neo3」的新系列,将先容针对 Neo3 虚拟机(VM)正在开拓的异常处理惩罚新机制。Neo 智能合约中增加了异常处理惩罚成果,旨在使它们可以或许在面临意外 bug 时尽快规复正常运作。
Neo 开拓人员之间进一步接头思量了实现最后一个操纵码的有用性,该操纵码将包括要运行的代码段,而不管是否捕捉到异常,是否应该答允多个捕捉段。而这需要通过实施异常处理惩罚机制来实现。该机制答允开拓人员编写非凡指令以担保在产生意外错误时可以利用。这些可以简朴地记录日志,并将碰着的特定问题通知开拓人员以辅佐调试,也可以提供进一步的代码来阐明和处理惩罚挪用。
Neo 上的每个节点将在沟通的 VM 上执行沟通的代码,因此挪用功效的乐成或失败是确定的。长处是,假如生意业务中输入的内容无效(譬喻,实验发送比地点更多的资产),生意业务将不会继承举办,而且合约将被遏制执行。
Try-Catch 劈头方案
铮文提供了一套完整的操纵代码,用于最终实现合约的 Try-Catch-Final。值得留意的是,这里提到的条件抛出操纵码 THROWIF和THROWIFNOT,厥后被 ABORT 和 ASSERT 指令所代替,旨在提高智能合约和钱包的安详性。
通过发起的 Try 操纵码跳转位置,可以预测并处理惩罚妨碍。在执行要监督的代码之前,Try 操纵码可觉得 VM 提供有关产生妨碍时应去那里进一步指令的信息。在发起的设计中,采纳 Catch 操纵码的形式,可以提供产生异常的原因。
处理惩罚异常的常用要领是 Try-Catch 机制。该机制使措施可以或许提前测试异常,而不是随机会到异常就瓦解。该措施将在 Try 部门中运行要查抄的代码,然后在 Catch 部门中检测并处理惩罚所有问题。
● https://neoresearch.io/nvm-learn/
本文将先简朴先容「异常处理惩罚」的观念以及 Try-Catch 的劈头方案。
Coelho 提供了这种行为的简朴示例,展示了零误差除法。在当前的 Neo2 VM 中,这些指令将触发 FAULT 状态并竣事执行合约。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。