关于前端:DApp入门1-React程序调用MetaMask钱包并转账

36次阅读

共计 1012 个字符,预计需要花费 3 分钟才能阅读完成。

智能合约相当于一段小的程序部署并跑在区块链节点上。为了拜访合约的性能,前端 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 区块链技术交换群,独特推动区块链技术遍及和倒退~

正文完
 0