分块表示在给定时间点POCChain宇宙的状态。 它包含所有帐户和余额的列表,分布式交换中的所有订单以及任何其他持续存储的数据。

网络历史上的第一个分块称为起源分块。

每个POCChain共识协议(SCP)轮次,网络就哪个交易集适用于最后一个封闭分块达成共识; 当应用新集合时,定义新的“最后关闭分块”。

每个分块都以加密方式链接到唯一的先前分块,从而创建可追溯到起源分块的历史分块链。

我们递归地定义分块的序列号:

  • Genesis分块的序号为1
  • 直接在序列号为n的分块后面的分块具有序号n + 1

说明

分块头部分

每个分块都有一个分块标题。 此标头引用了分块中的实际数据以及对前一个分块的引用。 这里的引用是被引用内容的加密哈希 - 哈希的行为类似于典型数据结构中的指针,但具有额外的安全保证。

您可以将历史分块链视为分块标题的链接列表:

[Genesis] <---- [LedgerHeader_1] <----- … <---- [LedgerHeader_n]

请参阅协议文件以获取对象定义。src/xdr/Stellar-ledger.x

每个分块标题都包含以下字段:

  • Version:此分块的协议版本。
  • 上一个Ledger Hash:前一个分块的哈希。 形成一系列分块,延伸至起源分块。
  • SCP值:在共识期间,网络中的所有节点都运行SCP并就特定值达成一致。 此值存储在此处和接下来的三个字段中(交易集哈希,关闭时间和升级)。
    • 交易集哈希:应用于前一个分块的交易集的哈希值。
    • 关闭时间:当网络关闭此分块时。 UNIX时间戳。
    • 升级:网络如何调整基本费用并转移到新的协议版本。 该字段通常为空。 有关详细信息,请参阅版本控制
  • 交易集结果哈希:应用交易集的结果的哈希值。 严格来说,这些数据不是验证交易结果所必需的。 但是,此数据使实体更容易验证给定交易的结果,而无需将交易集应用于前一个分块。
  • Bucket list 哈希:此分块中所有对象的哈希值。 包含所有对象的数据结构称为Bucket list
  • 分块序列:此分块的序列号。
  • 总币:存在的帕克币总数。
  • 交易费池:已支付费用的帕克币数。 这个数字将被添加到通货膨胀池中,并在下次通货膨胀时重置为0。 请注意,这是以帕克币计价的,即使交易的费用字段在stroops中。
  • 通货膨胀顺序:通货膨胀的次数。
  • ID池:上次使用的全局ID。 这些ID用于生成对象。
  • 最大交易数:验证程序已同意在给定分块中处理的最大交易数。 如果提交的交易数量超过此数量,则验证人将包括费用最高的交易者。
  • 基本交易费:网络在交易中按操作收取的费用。 这个字段是stroops,是帕克币的1 / 10,000,000th。
  • 基准储备:网络在计算帐户最低余额时使用的储备。
  • 跳过清单:过去的分块哈希。 允许您在分块链中及时跳回,而无需通过分块返回分块。 跳过列表中存储了4个分块哈希值。 每个插槽包含最旧的分块,模块为50 5000 50000或500000,具体取决于索引skipList [0] mod(50),skipList [1] mod(5000)等。

分块项

分块是条目的集合。 目前有4种类型的分块条目。 他们被指定在src/xdr/Stellar-ledger-entries.x.

帐户项

此条目代表一个帐户。 在POCChain中,一切都围绕帐户构建:交易由帐户执行,帐户控制对余额的访问权限。

其他条目是附加组件,由主帐户条目拥有。 随着帐户附加的每个新条目,POCC的最低余额将增加到帐户。 有关详细信息,请参阅费用和最低余额。

Trustline 项

信托是帐户以特定货币给予特定发行人的信贷额度。

Trustline条目定义了使用此货币的规则。 规则可以由用户定义,例如,设置平衡限制以限制风险 - 或者由发行者 - 例如,授权标志。

报价项

优惠是帐户在订单中创建的条目。 它们是在POCChain网络内实现简单交易自动化的一种方式。 有关优惠的更多信息,请参阅分布式交换文档

数据项

数据条目是附加到帐户的键值对。 它们允许帐户控制器将任意数据附加到其帐户。 它提供了灵活的扩展点,可将特定于应用程序的数据添加到分块中。