您正在查看: EOS-新手教程 分类下的文章

EOS js name To Uint64 OR Uint64 to name

源代码仓库地址:
https://github.com/bcskill/eosjs-name

演示地址
Try on run-kit https://npm.runkit.com/eosjs-account-name

测试代码
// name To Uint64

const eosjsAccountName = require("eosjs-account-name")
const n = eosjsAccountName.nameToUint64('eosio');
console.log('eosio to uint64: ' + n);
console.log('uint64 to name: ' + eosjsAccountName.uint64ToName(n));

// Uint64 to name

const uint64 = '6138663577826885632';
const name = eosjsAccountName.uint64ToName(uint64);

基于Bancor 算法两种资源互换的算法讲解

场景

BCS Token 购买 FF 资源

算法文字描述

FF Bancor 算法过程中,并不是将 BCS 和 FF 直接用价格曲线进行兑换,而是引入了中间 token——FFCORE,对应于 Bancor 中的 Smart Token。

BCS 到 FF 的兑换过程就涉及了两个公式,所以上文中用一个公式来举例就很不严谨,只是为了定性的说明价格特性。

从代码中可看到BCS与FFCORE的兑换公式为:

其中,E为BCS到FFCORE所能兑换的数量,R是FFCORE的初始发行总量,C1为当前BCS余量,T1为用于购买的FF数量,F为常量参数

将上述公式的进行反向整理设计,即可得到FFCORE与交易额的兑换公式为:

其中,T2是准备购入的FF数量;C2为可分配的FF余量。将中间变量E代入即可得出用于购买的BCS数量(T1)与可兑换到的FF数量(T2)之间的关系。

为方便直观的理解,可以对公式进行简化,得到:

可以看到随着可买FF余量(C2)的降低或者BCS数量(C1)的增多,FF的价格会加速增长(即同样付出T1的BCS下,可换取到的FF数量T2变少了)

EOS dump 以及 ubuntu设置coredump

EOS 编译Debug

./scripts/eosio_build.sh -o Debug

ubuntu设置coredump

sudo sysctl -w kernel.core_pattern=/corefiles/core.%p.%e
sudo mkdir /corefiles
sudo chmod -R 777 /corefiles
ulimit -c unlimited

nodeos异常退出时,就会在/corefiles/生成dump文件

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++;
    }
}

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避免在启动时进行断言