• 区块链实验室(22) - go-sdk访问Fisco的案例


    在前面的案例中(区块链实验室(21) - Go语言采用SDK访问Fisco的案例),go程序调用FISCO SDK的参数固化在程序中,现将其改造如下。

    package main
    
    import (
        "flag"
        "fmt"
        "log"
    
        "github.com/FISCO-BCOS/go-sdk/client"
        "github.com/FISCO-BCOS/go-sdk/conf"
        "github.com/ethereum/go-ethereum/common"
    )
    
    func main() {
        var nodeURL string
        var address string
        flag.StringVar(&nodeURL,"u","127.0.0.1:20200","node URL and port")
        flag.StringVar(&address,"a","","contract address")
        flag.Parse()
    
        if len(address) <= 0{
            log.Fatal("contract address is required.")
        }
    
    
        configs, err := conf.ParseConfigFile("conf/config.toml")
        if err != nil {
            log.Fatal(err)
        }
        config := &configs[0]
        config.NodeURL = nodeURL
        //fmt.Println("nodeurl:",config.NodeURL)
        client, err := client.Dial(config)
        if err != nil {
            log.Fatal(err)
        }
    
        // load the contract
        //contractAddress := common.HexToAddress("0xd70eac97a59b8317546f60618d1f9c2bb04d14ef") // 0x481D3A1dcD72cD618Ea768b3FbF69D78B46995b0
        contractAddress := common.HexToAddress(address)
        instance, err := NewHelloWorld(contractAddress, client)
        if err != nil {
            log.Fatal(err)
        }
    
        helloworldSession := &HelloWorldSession{Contract: instance, CallOpts: *client.GetCallOpts(), TransactOpts: *client.GetTransactOpts()}
    
        //value, err := helloworldSession.Get()    // call Get API
        //if err != nil {
        //    log.Fatal(err)
        //}
        //fmt.Println("value :", value)
    
        value := "Hello, FISCO BCOS"
        _, receipt, err := helloworldSession.Set(value)  // call set API
        if err != nil {
            log.Fatal(err)
        }
    
        //fmt.Printf("tx sent: %s\n", tx.Hash().Hex())
        fmt.Print("nodeurl ",config.NodeURL, " transactionhash ", receipt.GetTransactionHash())
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62

    该程序接收2个参数。第1个参数是节点的IP地址和channel端口,将其参数化,便可任意指定要连接的节点。第2个参数是智能合约的地址,可以在FISCO控制台获取。

    在这里插入图片描述

  • 相关阅读:
    Python学习第2天-安装pycharm
    Go-知识测试-子测试
    力扣刷题-链表理论基础
    【sv】 covergroup
    蓝书 0x01 位运算
    VulnHub metasploitable-1
    数据分析可视化之模型介绍
    SB30100LCT-ASEMI插件肖特基二极管SB30100LCT
    分布式事务
    【SpringBoot】SpringBoot整合Mybatis、druid
  • 原文地址:https://blog.csdn.net/qq_18807043/article/details/132804907