# truffle合约交互测试1

By [想住大房子的java程序员](https://paragraph.com/@java-3) · 2022-10-27

---

看了许多教程，都是几年前的，走了许多弯路。实在是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!

目录下会有相关的文件。

![工程文件目录](https://storage.googleapis.com/papyrus_images/666a588e2b141c008fd5af6ba4b2db14897d38fad36fe718b38a2a36124b689e.png)

工程文件目录

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

进入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本地测试环境。后面再讲其他的环境。

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

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

![](https://storage.googleapis.com/papyrus_images/824bcdcb310dc1796435a9842050864e5d7236613f419a236825db645bdf6b43.png)

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

---

*Originally published on [想住大房子的java程序员](https://paragraph.com/@java-3/truffle-1)*
