使用 Truffle 部署合约#
本教程将逐步介绍如何使用 Truffle(以太坊开发框架)在 X Layer 测试网上创建、编译并部署一个简单的智能合约。
什么是 Truffle?#
Truffle 是以太坊开发者最流行的开发工具链。
配置开发环境#
在开始之前,有几项技术要求,请安装以下工具:
- Node.js v18 LTS 或更高版本
- Git
Windows 用户注意事项: 如果你在 Windows 上运行 Truffle,可能会遇到一些命名冲突,导致 Truffle 无法正常执行。请参考解决命名冲突的相关章节以获取解决方案。 安装完上述工具后,只需一条命令即可安装 Truffle:
shell
npm install -g truffle
在终端输入 truffle version 验证 Truffle 是否安装成功。如果看到报错,请确保 npm 模块路径已添加到环境变量中。
创建项目#
第一步是创建一个 Truffle 项目。我们以 MegaCoin 为例,该示例允许你创建一个可在账户间转账的代币:
- 为 Truffle 项目创建一个新目录:
shell
mkdir MegaCoin
cd MegaCoin
- 初始化项目:
shell
truffle init
完成后,项目将具有以下目录结构:
contracts/:存放 Solidity 合约的目录migrations/:存放可脚本化部署文件的目录test/:存放应用和合约测试文件的目录truffle-config.js:Truffle 配置文件
创建合约#
你可以编写自己的智能合约,也可以下载 ERC-20 代币智能合约模板。
编译合约#
要编译 Truffle 项目,切换到项目根目录后,在终端输入以下命令:
shell
truffle compile
为 X Layer 配置 Truffle#
- 打开 truffle-config.js
- 使用 X Layer 网络凭据更新 truffle-config 配置
javascript
const HDWalletProvider = require('truffle-hdwallet-provider');
const fs = require('fs');
const mnemonic = fs.readFileSync(".secret").toString().trim();
module.exports = {
networks: {
development: {
host: "127.0.0.1", // Localhost (default: none)
port: 8545, // Standard X Layer port (default: none)
network_id: "*", // Any network (default: none)
},
testnet: {
provider: () => new HDWalletProvider(mnemonic, `https://testrpc.xlayer.tech/terigon`),
network_id:1952,
confirmations: 10,
timeoutBlocks: 200,
skipDryRun: true
},
},
// Set default mocha options here, use special reporters etc.
mocha: {
// timeout: 100000
},
// Configure your compilers
compilers: {
solc: {
}
}
}
Note
Provider 需要传入助记词(mnemonic)。这是你用于部署账户的种子短语(seed phrase)。
在根目录下创建一个新的
.secret 文件,并输入你的 12 个单词的助记词种子短语以开始使用。要从 MetaMask 钱包获取种子短语,可以进入 MetaMask 设置,从菜单中选择安全与隐私,在那里你会看到一个 reveal seedphrase(显示种子短语)按钮。部署合约#
在项目根目录下运行以下命令:
shell
$ truffle migrate --network testnet
合约将部署到 X Layer Chapel 测试网。部署输出示例如下:
shell
1_initial_migration.js
======================
Deploying 'Migrations'
----------------------
> transaction hash: 0xaf4502198400bde2148eb4274b08d727a17080b685cd2dcd4aee13d8eb954adc
> Blocks: 3 Seconds: 9
> contract address: 0x81eCD10b61978D9160428943a0c0Fb31a5460466
> block number: 3223948
> block timestamp: 1604049862
> account: 0x623ac9f6E62A8134bBD5Dc96D9B8b29b4B60e45F
> balance: 6.24574114
> gas used: 191943 (0x2edc7)
> gas price: 20 gwei
> value sent: 0 ETH
> total cost: 0.00383886 ETH
Pausing for 5 confirmations...
------------------------------
> confirmation number: 2 (block: 3223952)
> confirmation number: 3 (block: 3223953)
> confirmation number: 4 (block: 3223954)
> confirmation number: 6 (block: 3223956)
> Saving migration to chain.
> Saving artifacts
-------------------------------------
> Total cost: 0.00383886 ETH
Summary
=======
> Total deployments: 1
> Final cost: 0.00383886 ETH
Note
请注意,你的
address、transaction_hash 等信息会有所不同。以上输出仅作为结构示例供参考。恭喜!你已成功部署了智能合约。现在可以与该智能合约进行交互了。
