Nodeos 使用之最佳实践

  1. Blockchain State and Storage
  2. EOSIO Interfaces
    1. Nodeos RPC API
  3. Nodeos Read Modes
    1. Speculative Mode
    2. Head Mode
    3. Read-Only Mode
    4. Irreversible Mode
  4. How To Specify the Read Mode

英文版原文

EOSIO平台在事务生命周期的不同阶段以不同的数据结构存储区块链信息。其中一些描述如下。生产节点是当前正在为区块链创建块的块生产者运行的nodeos实例(每6秒更改一次,在切换到另一个生产者之前按顺序生成12个块)

Blockchain State and Storage

每个nodeos实例都创建一些内部文件来保存区块链状态。这些文件位于~/eosio/nodeos/data安装目录中,其用途如下所述:

  • 当有新块写入磁盘时,向blocks.log追加日志,包含所有不可逆块。这些区块包含最终确认的交易。

  • reversible_blocks是一个内存映射文件,包含已写入区块链但尚未变为不可逆的块。这些块包含有效的推送事务,这些事务仍在等待通过协商一致协议确认为最终事务。头块是写入区块链的最后一个块,存储在reversible_blocks

  • chain statechain database 当前被存储并缓存在内存映射文件中。它包含与每个区块关联的区块链状态,包括帐户详细信息、延迟交易和使用智能合约中的多索引表存储的数据。最后65536个块id也被缓存,以支持作为利害关系证明(TaPOS)的事务。事务ID/有效期也将被缓存,直到事务过期。

  • pending block是一个内存块,在处理事务并将其推送到块中时,它包含事务;这将/可能最终成为头块。如果nodeos实例是生产节点,则pending block将被分发给其他nodeos实例。

  • 在链状态之外,块数据被缓存在RAM中,直到它成为最终的/不可逆的;特别是签名块。在最后一个不可逆块(LIB)捕获到该块之后,然后从不可逆块日志中检索该块。

EOSIO Interfaces

EOSIO提供了一组服务接口,这些服务和接口使合约开发人员能够跨操作(从而跨事务)边界持久化状态。合约可以将这些服务和接口用于各种目的。例如,eosio.token合约为链数据库中的所有用户保存余额。nodeos的每个实例都将数据库保存在内存中,因此合约可以轻松地读写数据。

Nodeos RPC API

nodeos 提供通过HTTP RPC API 方式访问链数据的请求。

Nodeos Read Modes

nodeos服务可以在不同的“读”模式下运行。这些模式控制节点如何操作以及如何处理块和事务:

  • speculative:包括已确认和未确认交易的副本。

  • head:只包括已确认交易的副本,不包括未确认交易。

  • read-only:此模式已弃用。通过组合选项可以实现类似的功能:read mode=head,p2p accept transactions=false,api accept transactions=false。设置这些选项后,本地数据库将包含由链中事务到头块所做的状态更改。此外,通过P2P网络接收的事务不会被中继,并且事务不能通过链式API推送。

  • irreversible:此模式还包括已确认的事务,但最多不超过包含在最后一个不可逆块中的事务。

nodeos实例接收、处理并写入区块链上的一个块(即,它在头块或更早的块中)时,事务被视为已确认。

Speculative Mode

Head Mode

Read-Only Mode

Irreversible Mode

How To Specify the Read Mode


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 irvin.em@live.com。

文章标题:Nodeos 使用之最佳实践

文章字数:876

本文作者:dino

发布时间:2020-06-06, 00:28:51

最后更新:2020-06-07, 17:06:30

原始链接:https://blog.walkbc.com/2020/06/06/EOS-Nodeos-Usage-Implementation/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

QQ交流群:273078549

目录