美文网首页
Mir状态缩减

Mir状态缩减

作者: 雪落无留痕 | 来源:发表于2021-05-04 14:36 被阅读0次

    本文提出Mir状态空间缩减方法,对于每个有效账户,验证者只需要存储5个bit。

    无状态区块链

    目前, 以太坊客户端存储了约50G数据,虽然目前可用,但未来需要新的方法提升可扩展性。

    对于大部分区块链,例如以太坊,验证每个交易都需要访问和当前交易相关的账户的状态。为便于快速验证,节点需要存储所有有效账户的状态,需要昂贵的存储代价。

    无状态区块链将账户放在链下存储,即每个人各自存储其账户信息。对于共享的账户,可以存在IPFS或其它存储层上。Mir验证者不必存储任何账户的数据,也不需要知道它们存在哪儿。

    验证者不需要存储账户状态,他们需要验证账户状态,Mir采用一种新Merkle树实现。

    避免失效的状态

    通常的方法是让用户存储他们自己账户的Merkle Witness, 作为交易的一部分。然后当产生新的区块时,Merkle树易被修改,Merkle witness也将失效。

    为了避免这个问题,Mir采用 Merkle Moutain Range(MMR)结构,如下所示:

    采用MMR,只需要每个mountain的根进行认证,由于 mountain是不可变的,其中的witness不会失效。由于MMR是只增的,采用MMR记录历史账户的状态,而不仅是目前的账户状态。我们称这个结构为 Commitment Log

    状态活性

    Commitment Log 允许用户证明它们的账户在指定点的状态,但并不是目前的状态,需要另一个结构:Liveness Mask, 用于确认 Commitment Log每个状态目前是否是活跃的。

    一个简单的方法是存储每个位向量,其第 ith 表示Commitment Log中第 i 个账户是否有效,

    为了证明Liveness Mask的有效性,Mir采用一种标准Merkle树,每个叶子节点为0或1, 用于表明Commitment Log对应的叶子节点是否有效,由于大部多节点值为0, 所以采用SMT(Sparse Merkle Tree)。

    混合结构

    Mir采用变形的Merkle树结构,将Liveness Mask分成2^k大小的块,每个块采用修改的Huffman编码。只需存储Merkle树上面 h-k 层的数据,计算下面k 层。为了验证Merkle证明的有效性,需要分解第个块,重新计算Merkle树数所据。

    参考

    https://mirprotocol.org/blog/Reducing-state-size-on-Mir

    相关文章

      网友评论

          本文标题:Mir状态缩减

          本文链接:https://www.haomeiwen.com/subject/dsvcdltx.html