4

为了更容易理解EOSJS是什么,我们可以把它看作是一个用JavaScript就可以轻松控制EOS区块链的库。稍微深入一点,可以说它是很容易使用的EOS(nodeos)的HTTP API。(就像web3.js对于Ethereum, neon-js对于Neo一个意思)

由于EOSJS还使用来自EOS的HTTP API,BP选择是至关重要的(响应时间、可用性等)。

安装

有两种可以选择的安装方法:

用NPM安装

> npm install eosjs

使用CNS

<script src="https://cdn.jsdelivr.net/npm/eosjs@15.0.3/lib/eos.min.js"
integrity="sha512-QX0dPq5pyX33coEuy5x1UqKHFDeveQYMp7Sz+qOUwRL9mol4QDvViU+QAjd+k6P7QjPjrDCoyhK1kz2GDxCP9A=="
crossorigin="anonymous"></script>

连接EOS区块链平台

使用EOSJS连接EOS平台

const Eos = require('eosjs');

// Use as below to access localhost Testnet.
// 与下面一起进行的话,将接近localhost Testnet.
const eos = Eos();

如果EOS还没有用运行在localhost,你运行上面的代码就会得到一个像下面一样的错误提示(具有连接错误的 EOS httpEndpoint 也会有与下面相同的错误):

{ FetchError: request to http://127.0.0.1:8888/v1/chain/get_info failed, reason: connect ECONNREFUSED 127.0.0.1:8888
    at ClientRequest.<anonymous> (/Users/mayajuni/Projects/eos-scan/node_modules/node-fetch/index.js:133:11)
    at ClientRequest.emit (events.js:182:13)
    at Socket.socketErrorListener (_http_client.js:382:9)
    at Socket.emit (events.js:182:13)
    at emitErrorNT (internal/streams/destroy.js:82:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
    at process._tickCallback (internal/process/next_tick.js:63:19)
  name: 'FetchError',
  message:
   'request to http://127.0.0.1:8888/v1/chain/get_info failed, reason: connect ECONNREFUSED 127.0.0.1:8888',
  type: 'system',
  errno: 'ECONNREFUSED',
  code: 'ECONNREFUSED' }

连接主网络(公有链)

const Eos = require('eosjs');

const eos = Eos({httpEndpoint: 'mainnet httpEndpoint'});

如果你尝试像上面那样连接,将出现如下错误消息:

即使出现错误,getInfo也是可能的,所以让我们使用这个来检查并输入chainId。用个公用的:

In the case of Mainnet, aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906 is the common chainId, so enter this.

如果使用上述方法进行连接,则调用第一个 get_info API,如下所示。(一开始,我不太清楚,每次都给它连接,这给移动端带来了大量的数据使用。)

你可以在https://api.eosnewyork.io中检查公有链地址。因为每一个BP都有不同的信息提供,响应时间等等,所以找到并选择适合你需要的BP是很关键的。(也是一个直接获取完整节点和连接的方法)。

eosjs连接EOS的配置

const Eos = require('eosjs');

const config = {
  chainId: null, // 32 byte (64 char) hex string
  keyProvider: ['PrivateKeys...'], // WIF string or array of keys..
  httpEndpoint: 'http://127.0.0.1:8888',
  expireInSeconds: 60,
  broadcast: true,
  verbose: false, // API activity
  sign: true
};

const eos = Eos(config);

这一部分的详细描述是在github上。(github-configuration)

getInfo—api

你可以得到EOS的基本网络信息。代码如下所示:

const eos = Eos().getInfo((error, info) => {
    console.log(error, info);
});
一个有趣的情况:其他API都是基于承诺机制的,但是只有getInfo是回调方法。

返回值如下所示:

{
    server_version: '36a043c5',
    chain_id:
        'aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906',
    head_block_num: 5469047,
    last_irreversible_block_num: 5468711,
    last_irreversible_block_id:
        '00537227a657d1f4fd74de877e9ad1a3839540ece45eedeaf177b20e51b2da1b',
    head_block_id:
        '005373770504c59e992214b3056c7bdabb07c53c5a9c4785909b90fe595a119f',
    head_block_time: '2018-07-12T08:58:05.500',
    head_block_producer: 'helloeoscnbp',
    virtual_block_cpu_limit: 200000000,
    virtual_block_net_limit: 1048576000,
    block_cpu_limit: 199900,
    block_net_limit: 1048576
}

如果你不知道上面提到的chainId(连接EOS所需要),你可以通过getInfo获取并使用chainId

这篇文章写得很简单,因为它只是使用EOSJS的安装、连接和 getinfo 的第一步。以后我们会更深入地研究EOSJS。

分享个我的EOS智能合约与DApp开发入门实战教程:EOS教程


tualala
264 声望28 粉丝

java比特币开发详解: