web3.js

web3.js是开发以太坊去中心化应用(DApp)必备的JavaScript库。那么,web3.js的作用是什么?它的实现原理又是什么?

以太坊网络是由众多彼此平等的节点组成的P2P网络,其中每个节点都有整个区块链的拷贝。当你希望调用链上一个智能合约的方法时,需要连接到其中的某个节点并告知节点智能合约的地址、 你希望调用的方法以及向该方法传入的参数

不过以太坊节点只能理解JSON-PRC,这是一种远程调用协议,这种协议对人而言并不是很友好、易读。你发送给节点的对合约方法的调用请求看起来就像这样:

// Yeah... Good luck writing all your function calls this way!
{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{"from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155","to":"0xd46e8dd67c5d32be8058bb8eb970870f07244567","gas":"0x76c0","gasPrice":"0x9184e72a000","value":"0x9184e72a","data":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}],"id":1}

看起来不那么爽,对吧?

幸运的是,web3.js把这些复杂的调用请求封装起来,让你只需要通过更加友好的javascript接口来和以太坊节点交互。使用web3.js时,你要发送上面的JSON-PRC请求,只需要类似于如下的以下代码:

CryptoZombies.methods.createRandomZombie("Vitalik Nakamoto ")
  .send({ from: "0xb60e8dd61c5d32be8058bb8eb970870f07233155", gas: "3000000" })

是不是看起来更熟悉一些 ?

如果你希望高效的学习以太坊DApp开发,可以访问汇智网提供的最热门在线互动教程:

其他更多内容也可以访问这个以太坊博客

猜你喜欢

转载自my.oschina.net/u/2485754/blog/1807131
今日推荐