truffle合约交互测试1

看了许多教程,都是几年前的,走了许多弯路。实在是DDT。

1.环境准备

操作系统为ubuntu server 22.04 LTS。

安装truffle。(默认为root用户,如果不是,请自行添加魔法单词sudo)

npm install -g truffle

如果出现安装不了,极大概率是网络原因。解决办法有很多。

我这边是安装nrm,然后手动切换至taobao或者鹅厂镜像。

安装成功后,使用 truffle version 命令检查是否安装成功。

Truffle v5.6.2 (core: 5.6.2)
Ganache v7.4.4
Solidity - 0.8.17 (solc-js)
Node v16.18.0
Web3.js v1.7.4

2.安装测试环境

以前的教程知识告诉你使用的是testrpc。现在已经改成了ganache-cli。

所以,可以使用命令进行安装

npm install -g ganache-cli

使用命令ganache-cli 检查是否安装成功。如果安装成功,会有账户和私钥。

3.新建一个helloworld工程。

新建目录hellozz,并cd进入。

使用truffle命令进行初始化

truffle init

成功后会有提示 Init successful, sweet!

目录下会有相关的文件。

工程文件目录
工程文件目录

先不用去管它是什么意思。

进入contracts目录。新建一个合约文件HelloZZ.sol

然后写一点简单的代码。

contract HelloZZ {

    mapping(address => uint) balances;

    address owner;

    constructor(){
        owner = address(tx.origin);
        balances[tx.origin] = 13333;
    }

    function queryOwner() public view returns (address){
        return owner;
    }

    function getOwnerBalance() public view returns (uint) {
        return balances[owner];
    }

    // modifier
    modifier onlyOwner(){
        require(address(msg.sender) == owner, "No authority");
        _;
    }
}

应该看得懂吧。。。?

4.配置文件修改

打开truffle-config.js文件进行编辑。networks下的development注释代码去掉,使他生效。

 development: {
  host: "127.0.0.1",
  port: 8545,       
  network_id: "*",  
 },

进入migrations目录下,创建1_deploy_contracts.js,然后添加以下内容

const HelloZZ = artifacts.require("HelloZZ");

module.exports = function(deployer) {
  deployer.deploy(HelloZZ);
};

5.编译和部署工程

回到项目目录下,使用命令进行编译

truffle compile

提示成功后。这里先使用命令打开ganache-cli本地测试环境。后面再讲其他的环境。

启动成功后准备开始部署项目

部署成功后,会有下面的提示。

post image

OK,接下来就可以使用truffle命令进行合约交互了~