安裝eosjs並鏈接到EOS(柚子)

爲了更容易理解EOSJS是什麼,咱們能夠把它看做是一個用JavaScript就能夠輕鬆控制EOS區塊鏈的庫。稍微深刻一點,能夠說它是很容易使用的EOS(nodeos)的HTTP API。(就像web3.js對於Ethereum, neon-js對於Neo一個意思)node

因爲EOSJS還使用來自EOS的HTTP API,BP選擇是相當重要的(響應時間、可用性等)。

安裝

有兩種能夠選擇的安裝方法:git

用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 也會有與下面相同的錯誤):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是很關鍵的。(也是一個直接獲取完整節點和鏈接的方法)。網絡

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)socket

getInfo—api

你能夠獲得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教程

相關文章
相關標籤/搜索