这是我本人在工作当中总结的,希望能给搞区块链的工程师有一些帮助
为了让Ðapp运行上以太坊,一种选择是使用web3.js library提供的web3对象。底层实现上,它通过RPC 调用与本地节点通信。web3.js可以与任何暴露了RPC接口的以太坊节点连接。
Web3源码下载地址 https://github.com/ethereum/web3.js
web3中有eth对象web3.eth,具体来表示与以太坊区块链之间的交互。shh对象 web3.shh表示Whisper协议的相关交互。
其他方法的在线文档:https://web3js.readthedocs.io/en/1.0/
下面简单介绍web3的核心方法,网上大多数用的都是nodejs编写的,我用的是nodejs的代码,但是实现均是用原生的代码,基本上脱离了nodejs。
<script type="text/javascript" src="js/web3.min.js"></script>
<script type="text/javascript" src="js/bignumber.min.js" ></script>
bignumber.min.js :支持无限精度无限大数的类。
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:8545"));
HttpProvider -- * 获取对象的地址,本地的直接可以用127.0.0.1:8548。连接测试网下面会介绍
用次方法可以创建web3的核心对象,其余的操作均是用这个对象操作的。
主要的核心是web3.eth,可以通过调用其中的方法得到想要的信息。
例如:获取账户余额。通过调用web3.eth.getBalance(address);就能获取制定用户的地址。
之前的操作仅仅是连接到了区块链,并没有和自己的智能合约进行交互。
b.ABI字符串:值程序的接口,主要用于连接Dapp应用和区块链的连接
tokenObject = web3.eth.contract(abi,default_account).at(contractAddr);
default_account -- 发布合约的账户地址。不是必须项目。
方法调用成功返回智能合约对象,在就可以调用在智能合约中定义的方法。
与测试网连接,需要与测试网的连接接口需要在网上注册,通过指定的网址访问测试链。
注册地址:https://infura.io/register
https://mainnet.infura.io/ + key
Test Ethereum Network (Ropsten) // Ropsten测试网连接
https://ropsten.infura.io/ + key
只需要获取到核心的web3对象,其余的操作和本地的连接方式相同。