智能合约相当于一段小的程序部署并跑在区块链节点上。为了拜访合约的性能,前端Web页面能够通过ether js或者web3 js类库通过rpc协定间接拜访。上图为Web调用合约的根本流程。

React程序关联MetaMask

为了调用区块链上合约进行交易,比方转账交易,须要用户的私钥对该笔交易进行签名来证实该笔交易由谁来发动。然而如果把私钥放在程序外面的话, 容易造成平安问题。 MetaMask诞生就是为了帮忙用户治理私钥和加密资产的钱包。对于MetaMask的介绍咱们将在其余文章外面具体开展。

Web程序咱们这里拿支流的React页面为例。首先网页须要关联MetaMask来拜访区块链。MetaMask作为Chrome浏览器的一个插件,会拦挡发给区块链的rpc申请,而后再转发给链上合约。

以下代码实现的性能是:当用户点击连贯按钮时,页面将会关联MetaMask,拦挡发送给区块链的申请。用下列activate办法将激活这个流程。

获取用户的加密资产

React的hook useWeb3React将会调用ethersjs列库外面provider并获取外面的chainId以及account信息。该demo应用的是HPB网络,MetaMask的下载和HPB网络的配置将在其余文章中开展。

页面展现如下:

资产交易

在这个例子当中,我通过remix在HPB网络上部署了一个ERC20合约(将在其余文章中具体介绍),咱们能够了解ERC20合约就是虚构币的一种最罕用的标准,外面定义了该种虚构币的罕用属性和办法。 为了做资产划转,咱们须要调用改合约的transfer()办法。

为了调用该办法,咱们须要当时获取如下几个要害信息:

  • 合约的地址;
  • 合约的接口标准ABI(Application Binary Interface),这个相当于通知咱们的js这个合约提供了什么办法性能;
  • 获取网路的provider,这样咱们就能够晓得咱们是在拜访哪个区块链网络;
  • 签名,为该笔交易做签名。

以下代码展现了这几步的操作过程。

这个外面容易疏忽的是上面这个步骤, 合约对象须要关联签名。

const withSigner = contract.connect(signer); 

参考资料:

  • 合约发行代币资源
  • 调用小狐狸参考资料
  • remix调用合约
  • ethers.js官网文档
  • 实现案例代码参考

欢送区块链行业气味相投的小伙伴增加小极微信,退出blockgeek区块链技术交换群,独特推动区块链技术遍及和倒退~