嘿,朋友!最近是不是对区块链开发特别上头?今天咱们就唠唠怎么用Truffle框架从零开始搭个区块链项目。记得去年我刚接触那会儿,光配置环境就折腾了两天,现在给你趟平坑位,保准你半小时就能跑起来!
准备家伙事儿
先确认你电脑上已经装好这些必备品:
- Node.js(建议v16+)
- npm(Node自带的包管理器)
- 随便找个顺手的代码编辑器(VS Code用的人最多)
安装Truffle全家桶
打开终端,咱先来个三连安装:
npm install -g trufflenpm install -g ganache-clinpm install @openzeppelin/contracts
小贴士:如果遇到权限问题,试试在命令前加sudo
创建你的处女项目
找个喜欢的目录执行:
mkdir my_first_dappcd my_first_dapptruffle init
这时候会生成这些文件夹:
contracts | 存智能合约的 |
migrations | 部署脚本 |
test | 测试文件 |
搞个简单的智能合约
在contracts文件夹里新建MyToken.sol
:
// SPDX-License-Identifier: MITpragma solidity ^0.8.0;contract MyToken {mapping(address => uint256) public balances;constructor {balances[msg.sender] = 1000000;function transfer(address to, uint256 amount) public {require(balances[msg.sender] >= amount);balances[msg.sender] -= amount;balances[to] += amount;}
配置你的区块链网络
打开truffle-config.js
,咱们重点看这几个配置项:
development | 本地开发用 | 127.0.0.1:8545 |
compilers | Solidity版本 | 和合约里声明的一致 |
启动本地区块链
新开个终端窗口运行:
ganache-cli
看到10个测试账户和助记词出现,说明启动成功!
编译与部署
在项目根目录执行:
truffle compiletruffle migrate --network development
这时候应该能看到合约地址和交易哈希,说明部署成功啦!
写个测试脚本更保险
在test文件夹新建mytoken.test.js
:
const MyToken = artifacts.require("MyToken");contract("MyToken", (accounts) => {it("应该初始发行100万代币", async => {const instance = await MyToken.deployed;const balance = await instance.balances(accounts);assert.equal(balance, 1000000);});it("应该能正常转账", async => {const instance = await MyToken.deployed;await instance.transfer(accounts, 500, { from: accounts });const balance1 = await instance.balances(accounts);const balance2 = await instance.balances(accounts);assert.equal(balance1, 999500);assert.equal(balance2, 500);});});
跑测试就用这个命令:
truffle test
搞定!现在你的区块链项目已经在本地跑起来了,接下来可以继续折腾更多功能啦。有什么问题随时欢迎交流,开发路上一起打怪升级!