节点返回“202 Accepted”,距离真正结算成功还差多少步?
传统支付系统里,“银行已受理”和“资金已到账”是两个不同状态。研究 @Dusk 的交易生命周期后,我发现链上交易同样不能只看一个成功提示。
一笔Dusk L1交易大致要经历:
提交、节点预验证、进入本地内存池、向其他节点传播、被区块生成者选择、执行以及最终确认。
其中最容易被误解的是,交易提交接口返回202 Accepted,只代表节点接收了这份数据并准备进行传播,不代表它已经进入区块。
即使交易进入节点的内存池,也只说明它通过了该节点的初步检查。进入区块后,还要查看执行结果中的err是否为空。合约如果因为参数、状态或Gas问题回滚,Nonce和已经消耗的Gas依然可能无法恢复。
最后还要等区块进入finalized状态。官方文档明确提醒,不能把included、removed或普通的accepted直接当成付款最终性信号。
这对Dusk未来服务证券结算非常重要。机构关心的不是界面有没有弹出绿色提示,而是资产交割和账务入账基于哪一个不可逆状态。
Dusk官网给出的网络最终性指标约为10秒,但应用仍要正确识别最终状态,而不是依靠固定等待10秒来猜测结果。
我判断机构级结算系统是否成熟,会重点观察:
1. 最终确认时间的稳定性;
2. 执行失败率;
3. 区块回滚和重新对账次数;
4. 应用是否区分提交、执行与最终确认;
5. 资产端和支付端是否采用同一最终性标准。
真正的链上结算,不是交易发出去了,而是所有参与方对“什么时候可以记账”有一致答案。#dusk $DUSK
传统支付系统里,“银行已受理”和“资金已到账”是两个不同状态。研究 @Dusk 的交易生命周期后,我发现链上交易同样不能只看一个成功提示。
一笔Dusk L1交易大致要经历:
提交、节点预验证、进入本地内存池、向其他节点传播、被区块生成者选择、执行以及最终确认。
其中最容易被误解的是,交易提交接口返回202 Accepted,只代表节点接收了这份数据并准备进行传播,不代表它已经进入区块。
即使交易进入节点的内存池,也只说明它通过了该节点的初步检查。进入区块后,还要查看执行结果中的err是否为空。合约如果因为参数、状态或Gas问题回滚,Nonce和已经消耗的Gas依然可能无法恢复。
最后还要等区块进入finalized状态。官方文档明确提醒,不能把included、removed或普通的accepted直接当成付款最终性信号。
这对Dusk未来服务证券结算非常重要。机构关心的不是界面有没有弹出绿色提示,而是资产交割和账务入账基于哪一个不可逆状态。
Dusk官网给出的网络最终性指标约为10秒,但应用仍要正确识别最终状态,而不是依靠固定等待10秒来猜测结果。
我判断机构级结算系统是否成熟,会重点观察:
1. 最终确认时间的稳定性;
2. 执行失败率;
3. 区块回滚和重新对账次数;
4. 应用是否区分提交、执行与最终确认;
5. 资产端和支付端是否采用同一最终性标准。
真正的链上结算,不是交易发出去了,而是所有参与方对“什么时候可以记账”有一致答案。#dusk $DUSK