经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 其他 » 区块链 » 查看文章
区块链交易验证的一点心得
来源:cnblogs  作者:JJJJJJJJJJJ.Ge呀!  时间:2019/7/24 8:39:23  对本文有异议

以太坊交易验证

一直以来我都误以为以太坊交易验证整个是放进虚拟机(EVM)来执行的。最近才意识到在执行之前需要先验证签名而且是必须先验证签名,既:

1. 验证签名。

2. 虚拟机执行交易。

在说此设计的必要性之前有个大家都共识的是:

交易执行失败是需要扣手续费的,然而因为签名不通过的交易是不能扣手续费的,原因:

签名不通过是因为没有用合法的私钥或者签名的信息和交易信息不一致,倘若签名不通过还需要扣手续费,那么任何人都可以用不合法的签名伪造某个地址发交易,这样一来那个被伪造的地址在什么都没做的情况下就会被恶意扣手续费。因此签名不合法不能扣手续费

 如下图,在AsMessage中对签名身份进行了验证,并没有因为不合法的签名而计算消耗的gas。

 

 

然而,EVM执行过程中是会计算手续费的,并把交易改变的账户stateObject对应的情况(比如说扣钱加钱)放进stateDB的,所以我们要在EVM计算之前就验证交易签名。倘若把签名放在最后一步验证,倘若签名验证不通过,根据以上“签名不扣费原则”,那么需要stateDB回滚此交易改变的状态,无疑这种方案是浪费矿工计算量的而且麻烦。所以还是在EVM之前就验证签名。

 

原文链接:http://www.cnblogs.com/zhoujunjie/p/11229395.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号