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

编译EOS主网EOS-Mainnet代码

下载主网EOS代码

所谓的主网代码就是EOS-Mainnet维护的EOS分支仓库,相对EOSIO的仓库分支区别就是,EOS-Mainnet对发布的release分支做了进一步测试和审核,测试好后,BP们才部署。也就是基本上BP们都是部署的这个仓库分支,所以如果是同步主网,建议选此仓库分支。避免一些不必要的bug和数据不兼容等意外。

1. 获取代码
git clone https://github.com/EOS-Mainnet/eos.git

如果提示git没有安装,先安装gitapt install git

2. 切换对应的分支

由于主仓库分支较多,切换到当前仓库的最新的分支或者tag
当前最新为(mainnet-1.1.6)

cd eos源码目录
git checkout mainnet-1.1.6
3. 开始编译代码
./eosio_build.sh -s EOS

执行脚本后,脚本会自动安装所需的开发环境工具

4. 执行安装

编译完成后,

执行安装

./eosio_install.sh

actions 中带transaction的status

查询笔记,稍后问题完结后,会重新整理

App开发的小伙伴想有个接口,根据账户名查询交易记录,并且每条交易记录都带有status。

了解到完成上面的数据需要三步

  1. 根据账户名查询actions表,查询出一些记录
  2. 根据记录的transaction id,查询所在block (不用此步,action 中已有block id)
  3. 根据block id查询所在块的此transaction id的status
    • 查看测试数据:
      curl 'https://api1.eosdublin.io/v1/chain/get_block' -H 'Referer: https://eostracker.io/transactions/91206e95c247e76e924bf2b3a75b0e894347de138e3a5e7b0b011c6b3e6b268b' -H 'Origin: https://eostracker.io' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' -H 'Content-Type: text/plain;charset=UTF-8' --data-binary '{"block_num_or_id":4265926}' --compressed

获取的actions数据

看第一步的,获取的actions数据中,同一个transaction id(91206e95c247e76e924bf2b3a75b0e894347de138e3a5e7b0b011c6b3e6b268b),会有多笔的交易。

查transaction id

那我们查下此transaction id,什么情况。(点击打开)

看下几个数据的链接

https://eostracker.io/actions/4265926/91206e95c247e76e924bf2b3a75b0e894347de138e3a5e7b0b011c6b3e6b268b/0
https://eostracker.io/actions/4265926/91206e95c247e76e924bf2b3a75b0e894347de138e3a5e7b0b011c6b3e6b268b/1
https://eostracker.io/actions/4265926/91206e95c247e76e924bf2b3a75b0e894347de138e3a5e7b0b011c6b3e6b268b/0?parentId=4926446
https://eostracker.io/actions/4265926/91206e95c247e76e924bf2b3a75b0e894347de138e3a5e7b0b011c6b3e6b268b/1?parentId=4926446
https://eostracker.io/actions/4265926/91206e95c247e76e924bf2b3a75b0e894347de138e3a5e7b0b011c6b3e6b268b/2
https://eostracker.io/actions/4265926/91206e95c247e76e924bf2b3a75b0e894347de138e3a5e7b0b011c6b3e6b268b/0?parentId=4926449

明显的树形结构,


再看下具体的数据
https://api.eostracker.io/transactions/91206e95c247e76e924bf2b3a75b0e894347de138e3a5e7b0b011c6b3e6b268b/actions?page=1&size=10

得出,在相同的transaction id和blockId情况下,

  • seq和parentId都为0,此节点为顶级节点。
  • parentId为0,seq不为0,为二级顶节点。
  • parentId不为0,则为对应id二级节点的三级节点。

对于这些交易,App那边更期望,查询此transaction id后,界面显示此任务为顶级节点所做的事,查看详情后才显示二,三级数据。

首先查下status,有哪些类型
eos\libraries\chain\include\eosio\chain\block.hpp

struct transaction_receipt_header {
      enum status_enum {
         executed  = 0, ///< succeed, no error handler executed
         soft_fail = 1, ///< objectively failed (not executed), error handler executed
         hard_fail = 2, ///< objectively failed and error handler objectively failed thus no state change
         delayed   = 3, ///< transaction delayed/deferred/scheduled for future execution
         expired   = 4  ///< transaction expired and storage space refuned to user
      };

后台运行nodeos,避免ssh掉线

问题:

怎么后台运行 nodeos 呢,我用xshell 连接的,但是 xshell 总断,断的时候有时会引起 nodeos 退出

解决方案

需要的程序 Tmux

  1. 安装Tmux
    sudo apt-get update
    sudo apt-get install tmux
  2. 开始使用
    tmux
  3. 返回会话
    tmux a

多个会话

  1. 新建会话
    tmux new -s 会话名字
  2. 切换(查看)会话
    tmux a - t 会话名字
  3. 删除会话
    tmux kill-session -t first

    问题收集自 eosfans

自定义nodeos数据路径

--config-dir 自定义 config.ini 路径
--data-dir 自定义区块数据路径
--genesis-json 自定义genesis.json路径

RPC获取常见资源数据

实例化EOS对象

const wif = '私钥'
eos = Eos({
        httpEndpoint: 'https://api.eosnewyork.io',
        chainId: 'aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906',
        keyProvider: wif,
        verbose: true
    })

RAM

  • 获取总网RAM (GB)

    eos.getTableRows(true,"eosio","eosio","global",10).then(result => {
      console.log(result.rows[0].max_ram_size/(1024*1024*1024));
    })
  • 获取RAM当前价格
    参考(获取RAM实时价格)

  • 获取总网RAM使用量

    eos.getTableRows(true,"eosio", "eosio", "rammarket").then(result => {
      var ramBaseBalance = result.rows[0].base.balance; // Amount of RAM bytes in use
      ramBaseBalance = ramBaseBalance.substr(0,ramBaseBalance.indexOf(' '));
      console.log(ramBaseBalance);
    })
  • 获取总网已购买RAM的EOS总数

    eos.getTableRows(true,"eosio", "eosio", "rammarket").then(result => {
      var ramQuoteBalance = result.rows[0].quote.balance; // Amount of EOS in the RAM collector
      ramQuoteBalance = ramQuoteBalance.substr(0,ramQuoteBalance.indexOf(' '));
      console.log(ramQuoteBalance);
    })

NET

  • 获取当前NET价格(EOS/KiB/Day)
    eos.getAccount("eosnewyorkio").then(result => {
      var netStaked = result.total_resources.net_weight.substr(0,result.total_resources.net_weight.indexOf(' '));
      var netAvailable = result.net_limit.max / 1024; //~ convert bytes to kilobytes
      netPriceEos = ((netStaked / netAvailable)/3).toFixed(8); //~ divide by 3 to get average per day from 3 day avg
      console.log(netPriceEos);
    })

CPU

  • 获取当前CPU价格(EOS/ms/Day)
    eos.getAccount("eosnewyorkio").then(result => {
      var cpuStaked = result.total_resources.cpu_weight.substr(0,result.total_resources.cpu_weight.indexOf(' '));
      var cpuAvailable = result.cpu_limit.max / 1000; // convert microseconds to milliseconds
      cpuPriceEos = ((cpuStaked / cpuAvailable)/3).toFixed(8); //~ divide by 3 to get average per day from 3 day avg
      console.log(cpuPriceEos);
    })

    科普

    什么是RAM?

    RAM需要在区块链上存储数据,必须购买。 您可以根据当前的RAM市场价格获得一定数量的存储字节数。 价格会根据买卖行为自动调整。 当您释放存储空间时,您可以以当前的市场价格出售RAM以恢复EOS。

    什么是网络带宽?

    网络带宽的测量值是过去3天内的平均消耗量(以字节为单位)。 每次发送操作或事务时都会暂时消耗净带宽,但会随着时间的推移而减少返回0.净带宽所占用的令牌越多,您使用的越多。 您可以随时取消收回您的EOS令牌。

    什么是CPU带宽?

    CPU带宽测量为过去3天内的平均消耗量(以微秒为单位)。 发送操作或事务时临时消耗CPU带宽,但随着时间的推移逐渐减少,返回0.事务运行的时间越长,消耗的CPU带宽就越多。 您可以随时取消收回您的EOS令牌。

数据来自:github erp