ganache搭建私有测试节点

1.Ganche 简介

1.1.什么是 Ganache

Ganache 是DApp的测试网络,提供图形化界面,log日志等;智能合约部署时需要连接测试网络。

Ganache 是一个运行在本地测试的网络,通过结合cpolar内网穿透软件,即可比较简单实现远程或者不同局域网进行连接访问,下面简单概括设置和连接方法

1.2.环境要求和安装

进入官网:https://trufflesuite.com/ganache/,我们下载对应的电脑系统的版本,下载安装包后,直接安装即可 

安装完成后,我们打开Ganache,即可看到默认为我们生成了许多测试的地址,这些地址都是虚假的,在顶部,我们可以看到RPC服务本地连接地址,端口为:7545 

1.3.Truffle 部署

修改truffle-config.js:

部署合约: truffle migrate --network dev

 

   Deploying 'TriplecMedal'

   ------------------------

   > transaction hash:    0x54722fd58a4e4d0f2c1c768da8f1307f757f80c99e73374a5d8c7912713c6f4a

   > Blocks: 0            Seconds: 0

   > contract address:    0xE7C12f2ab7CEAED9E173943180E0e0EfDF6Bc5d4

   > block number:        1

   > block timestamp:     1706779598

   > account:             0x5fA043293aAB29EC4bd3F40623fAF06E501d160c

   > balance:             99.9845385175

   > gas used:            4581180 (0x45e73c)

   > gas price:           3.375 gwei

   > value sent:          0 ETH

   > total cost:          0.0154614825 ETH

1.4.Ganache查看部署的合约 

1.5. 使用abigen生成go代码

生成完整合约代码:

truffle-flattener ./contracts/medal/TriplecMedalV3.sol --output ./deployment/TriplecMedalV3.full.sol 

生成abi文件

solc --abi --bin -o ../build --overwrite  TriplecMedalV3.full.sol

生成go代码

abigen --bin=../build/TriplecMedalV3.bin --abi=../build/TriplecMedalV3.abi --pkg=TriplecMedalV3 --out=../script/TriplecMedalV3/TriplecMedalV3.go

1.6. 使用go代码进行合约测试

 

package main

import (

    "fmt"

    "script/TriplecMedalV3"

    "testing"
    
    "github.com/ethereum/go-ethereum/common"

    "github.com/ethereum/go-ethereum/crypto"

    "github.com/ethereum/go-ethereum/ethclient"

)

func TestInitialize(t *testing.T) {

    client, err := ethclient.Dial(config.ServerAddress)

    if err != nil {

        panic(err)

    }

    privateKey, err := crypto.HexToECDSA(config.OwnerPrivateKey)

    if err != nil {

        panic(err)

    }

    auth, err := Author(privateKey, client, 500000, 0, 0)

    if err != nil {

        panic(err)

    }

    medal, err := TriplecMedalV3.NewTriplecMedalV3(common.HexToAddress(config.ContractAddress), client)

    if err != nil {

        panic(err)

    }

    tx, err := medal.Initialize(auth, common.HexToAddress(config.OwnerPublicKey))

    if err != nil {

        panic("error")

    }

    if tx == nil {

        panic("error")

    }

    hash := tx.Hash().Hex()

    fmt.Printf("setsigner 的hash:%v", hash)

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章