您正在查看: 2020年3月

EOS Table 倒序删除

数据库中只保留最新的100条记录,旧纪录删除

// 最多100条
besthistory_tables besthistory_table(_self, _self.value);
total_count = 0;
auto itr_besthistory = besthistory_table.rbegin();
while(itr_besthistory != besthistory_table.rend()){
    if(total_count >= 99){
        auto itr = besthistory_table.erase(--itr_besthistory.base());
        itr_besthistory = std::reverse_iterator(itr);
    } else {
        total_count++;
        itr_besthistory++;
    }
}

error: use of undeclared identifier 'current_time_point'

包含头文件

#include <eosio/system.hpp>

https://github.com/EOSIO/eosio.cdt/issues/470

EOS nodeos api 中继模式

今天EOSIO官方开发提交的(New options for api nodes - 2.0) 审核通过了。

配置新增加配置

p2p-accept-transactions

允许评估通过p2p 网络接收的事务(如果有效)
默认值true

api-accept-transactions

允许评估和中继API事务(如果有效)
默认值true

配合read-mode一起使用

speculative

在“投机”模式下:数据库包含区块链中的交易状态变化,直到头块以及尚未包含在区块链中的某些交易。

head

数据库仅通过区块链中直到头部的交易包含状态更改; 如果有效,将中继节点接收到的事务。

配合配置
p2p-accept-transactions = false
api-accept-transactions = true

read-only

数据库仅包含区块链中直到主块的事务的状态更改;
通过P2P网络接收到的交易不会被中继,并且无法通过链API推送交易。
(不推荐使用此模式:可使用 p2p-accept-transactions和api-accept-transactions同为false代替)

irreversible

数据库仅包含区块链中直到最后一个不可逆块的事务的状态更改;
通过P2P网络接收到的交易不会被中继,并且无法通过链API推送交易。

配合配置
p2p-accept-transactions = false
api-accept-transactions = false

注意点

read-onlyirreversible模式下,api-accept-transactionsp2p-accept-transactions会强制修改为false.

更新支持

此时 2.0.4 以支持此更新
https://github.com/EOSIO/eos/releases/tag/v2.0.4

在read-only该选项read-mode的参数nodeos已被弃用。这是可能实现与相同的行为read-mode = head,p2p-accept-transactions = false和api-accept-transactions = false

使用read-mode = irreversiblenow需要进行设置p2p-accept-transactions = false并api-accept-transactions = false避免在启动时进行断言