为了更容易理解EOSJS是什么,咱们能够把它看做是一个用JavaScript就能够轻松控制EOS区块链的库。稍微深刻一点,能够说它是很容易使用的EOS(nodeos)的HTTP API。(就像web3.js对于Ethereum, neon-js对于Neo一个意思)node
因为EOSJS还使用来自EOS的HTTP API,BP选择是相当重要的(响应时间、可用性等)。
有两种能够选择的安装方法:git
> npm install eosjs
<script src="https://cdn.jsdelivr.net/npm/eosjs@15.0.3/lib/eos.min.js" integrity="sha512-QX0dPq5pyX33coEuy5x1UqKHFDeveQYMp7Sz+qOUwRL9mol4QDvViU+QAjd+k6P7QjPjrDCoyhK1kz2GDxCP9A==" crossorigin="anonymous"></script>
const Eos = require('eosjs'); // Use as below to access localhost Testnet. // 与下面一块儿进行的话,将接近localhost Testnet. const eos = Eos();
若是EOS尚未用运行在localhost,你运行上面的代码就会获得一个像下面同样的错误提示(具备链接错误的 EOS httpEndpoint 也会有与下面相同的错误):github
{ 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'});
若是你尝试像上面那样链接,将出现以下错误消息:web
即便出现错误,getInfo
也是可能的,因此让咱们使用这个来检查并输入chainId
。用个公用的:npm
In the case of Mainnet, aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906 is the common chainId, so enter this.
若是使用上述方法进行链接,则调用第一个 get_info
API,以下所示。(一开始,我不太清楚,每次都给它链接,这给移动端带来了大量的数据使用。)api
你能够在https://api.eosnewyork.io中检查公有链地址。由于每个BP都有不一样的信息提供,响应时间等等,因此找到并选择适合你须要的BP是很关键的。(也是一个直接获取完整节点和链接的方法)。网络
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)socket
你能够获得EOS的基本网络信息。代码以下所示:ide
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教程