• 区块链轻节点执行交易


    轻量级演算的目的是让节点在不存储全状态,只需要存储状态根的情况下也能执行和验证交易。比特币的轻节点客户端能够验证交易的有效性,并不能执行和演算交易。轻量级演算可以用于跨链过程中演算和验证其它链交易、可以用于多链中不同链验证节点随机洗牌后切换节点、可以用于快速同步其它链数据、可以用于主-子链结构中,子链节点作恶没法演算子链节点数据问题等。

    轻量级演算实际上是构造在轻量级客户端之上,轻量级客户端只存储状态树根。轻量级客户端概念,假设状态转换可以用数学的方式进行表达,则表达形式为Bu_ST(S, B) -> S’,其中S、S’代表状态,B代表区块(或者是T,代表交易),那么Bu_ST就是状态转换函数。理论上,很多相似的协议,都能通过同种协议变形进行变更。

    转换过程如下:

    S变成S的状态根,就像S的32字节Merkle根哈希

    B变成(B,P),其中P代表‘证人’,即证明执行B可访问的所有数据的值的一组Merkle分支

    Bu_ST变成Bu_ST’,以状态根以及区块+证人(数据)做输入,然后在执行区块需要读取账户信息、存储密钥或其他状态数据时,使用证人做‘数据库’数据库(若证人不包含请求数据片段,则退出并提示错误),最后输出新状态根

    也就是说全节点只存储状树根,打包区块与Merkle分支(‘证人’)是验证节点的事;然后由全节点下载并验证这些大(带证人数据的)区块。所以轻量级全节点与常规全节点是完全可以在同一个网络中和平共处的;设置个状态转换节点,为区块B附上验证其所需的证人数据,然后在另个都是轻量级节点网络协议中广播这个(B,P);验证节点的Leader在该无状态网络上打包区块后,把附带的证人数据去掉,然后重新在常规网络上进行播。

    以上都为理论上的描述,以下我们会以流程的方式对轻量级验证进行说明,轻量级演算节点只存储状态的root信息,观察客户端存储链的全状态信息。轻量级演算节点想要执行交易tx,在链上对应的状态为C,轻量级演算节点并不知道C的状态,所以它会向观察者客户端请求C的状态以及会影响C变化的Merkel分支Witness: {R, A, C, D, B},轻量级演算节点获取相关的数据后会把所影响的C状态及Merkel分支等RW_Set广播给其它节点,不同节点收到交易及相关依赖后执行和验证交易。在图的右边看到了轻量级演算用于各种各样的场景,这个部分在开端就又阐述,此处滤过。

  • 相关阅读:
    ASP.NET 2.0+GridView开发中遇到ViewState MAC验证错误
    Microsoft Robotics Studio与LEGO机器人[转]
    .net反射技术的应用—如何调用Java的COM接口[转]
    ORACLE函数大全
    BCD代码
    SQL Server 2005中Datetime类型转Varchar类型
    新任项目经理的五项必修课[转载]
    利用SqlBulkCopy实现网上答题系统[转]
    电信技术名词解释:移动IP技术综述[转]
    ASP页面中访问基于.net的COM组件[转]
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13313654.html
Copyright © 2020-2023  润新知