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)

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