随着以太坊的兴起,使用 Solidity 编写智能合约的人越来越多。在开发智能合约时,需要使用 truffle 进行编译、部署和测试。而使用 truffle,需要提供一个 web3 provider,用于与以太坊网络进行交互。
而 truffle-hdwallet-provider 就是一个方便的 npm 包,可以将 MetaMask 的助记词作为参数,生成一个 web3 provider,使得我们可以在命令行中使用 truffle 来部署和测试智能合约。
本文将介绍如何使用 truffle-hdwallet-provider 这个 npm 包。
安装
首先,我们需要安装 truffle 和 truffle-hdwallet-provider:
npm install -g truffle npm install truffle-hdwallet-provider
使用
假设我们要将智能合约部署到 Rinkeby 测试网络。我们需要拥有 Rinkeby 的 infura API key 和 MetaMask 的助记词。如果没有,请安装 MetaMask,创建一个 Rinkeby 的账户,并将账户助记词复制下来。
首先,将 Rinkeby 的 infura API key 和 MetaMask 的助记词保存在环境变量中:
export INFURA_API_KEY='your_infura_api_key' export HDWALLET_MNEMONIC='your_metamask_mnemonic'
然后,在 truffle.js 中,配置 provider:
-- -------------------- ---- ------- ----- ---------------- - ------------------------------------- ----- -------- - ------------------------------ ----- --------- - --------------------------- -------------- - - --------- - -------- - --------- ---------- - ------ --- -------------------------- ------------------------------- - ----------- -- ----------- -- ---- -------- --------- ------------ -- -- --
这个配置文件告诉 truffle 在 rinkeby 网络上使用 HDWalletProvider,将 MetaMask 的助记词作为参数传入。同时,连接 infura API,使用 infura 提供的节点作为 Rinkeby 网络的 web3 provider。
接下来,我们可以在命令行中使用 truffle migrate 命令,部署我们的智能合约到 Rinkeby 测试网络:
truffle migrate --network rinkeby
示例代码
下面是一个简单的智能合约,用于记录字符串:
-- -------------------- ---- ------- ------ -------- ------- -------- ---------- - ------ ------ ------ -------- --------------- ------ ------- ------ - ----- - ------- - -
接下来,我们可以使用 truffle 编译、部署和测试这个合约。在命令行中,进入项目目录,执行命令:
truffle compile truffle migrate --network rinkeby
这样,我们就可以将合约部署到 Rinkeby 测试网络上。在 truffle console 中,我们可以使用 MyContract.deployed() 获取已部署的合约实例,然后调用 setValue() 方法来修改合约中的值。具体命令可以参考 truffle 官方文档。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/truffle-hdwallet-provider