当前位置: 首页 > 后端技术 > Node.js

安装eosjs并连接EOS(石子)

时间:2023-04-03 14:06:56 Node.js

为了更容易理解什么是EOSJS,我们可以把它看成一个可以用JavaScript轻松控制EOS区块链的库。再深入一点,可以说是一个简单易用的EOS(nodeos)HTTPAPI。(就像web3.js之于以太坊,neon-js之于Neo)由于EOSJS也使用来自EOS的HTTPAPI,因此BP的选择很关键(响应时间、可用性等)。安装有两种可选的安装方式:Installwithnpm>npminstalleosjsUseCNS连接EOS区块链平台使用EOSJS连接EOS平台constEos/jsaccesslocal)Testnet('belowto.//加上下面的,就会接近localhostTestnet.consteeos=Eos();如果没有使用EOS在localhost上运行,运行上面的代码时会出现如下错误信息(EOShttpEndpoint连接错误也会有与下面相同的错误):{FetchError:请求http://127.0.0.1:8888/v1/chain/get_info失败,原因:在ClientRequest连接ECONNREFUSED127.0.0.1:8888.(/Users/mayajuni/Projects/eos-scan/node_modules/node-fetch/index.js:133:11)在ClientRequest.emit(events.js:182:13)在Socket.socketErrorListener(_http_client.js:382:9)在Socket.emit(events.js:182:13)在emitErrorNT(internal/streams/destroy.js:82:8)在emitErrorAndCloseNT(internall/streams/destroy.js:50:3)atprocess._tickCallback(internal/process/next_tick.js:63:19)name:'FetchError',message:'请求http://127.0.0.1:8888/v1/chain/get_infofailed,reason:connectECONNREFUSED127.0.0.1:8888',type:'system',errno:'ECONNREFUSED',code:'ECONNREFUSED'}连接主网(公链)constEos=require('eosjs');consteos=Eos({httpEndpoint:'mainnethttpEndpoint'});如果你尝试像上面那样连接,你会得到这样的错误信息:getInfoispossibleevenwitherrors,所以让我们用它来检查并输入使用一个公共的chainId:在Mainnet的情况下,aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906是公共的chainId,所以输入这个。如果使用上述方法连接,调用第一个get_info接口,如下图。(一开始不知道,每次都连接,给移动端带来很大的流量消耗。)公链地址可以在https://api.eosnewyork.io查看。由于每个BP的信息提供、响应时间等都不同,因此找到并选择适合您需求的BP至关重要。(也是获取完整节点和连接的直接方式)。配置eosjs连接到EOSconstEos=require('eosjs');constconfig={chainId:null,//32字节(64个字符)十六进制字符串keyProvider:['PrivateKeys...'],//WIF字符串或密钥数组..httpEndpoint:'http://127.0.0.1:8888',expireInSeconds:60,broadcast:true,verbose:false,//API活动标志:true};consteos=Eos(配置);这部分在github上有详细的描述。(github-configuration)getInfo—api可以获取EOS的基本网络信息。代码如下所示:consteos=Eos().getInfo((error,info)=>{console.log(error,info);});一个有趣的案例:其他API都是基于promise的,但只有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}如果不知道通过getInoOS获取InoOS需要什么,可以使用上面提到的chainchaind获取InoOS(id)本文写的比较轻松,只是使用EOSJS的安装、连接和getinfo的第一步。我们将在未来更深入地研究EOSJS。分享我的EOS智能合约入门和DApp开发实战教程:EOSTutorial