FISCO BCOS Go-sdk 配置文件

这篇具有很好参考价值的文章主要介绍了FISCO BCOS Go-sdk 配置文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0、参考文档

GitHub - FISCO-BCOS/go-sdk: golang SDK of FISCO BCOS

1、环境配置

操作系统:CentOS7

Golang版本:1.17.2

WeBASE版本:1.5.2(已开启)可参见:WeBASE部署 - 搭建FISCO节点_ling1998的博客-CSDN博客

Git版本:1.8.3.1

2、下载go-sdk

(1)进入工程目录

[root@localhost ~]# cd /home/tracy/GoContract/

(2)下载Go-sdk

[root@localhost GoContract]# git clone https://github.com/FISCO-BCOS/go-sdk.git
Cloning into 'go-sdk'...
remote: Enumerating objects: 1739, done.
remote: Counting objects: 100% (258/258), done.
remote: Compressing objects: 100% (174/174), done.
remote: Total 1739 (delta 107), reused 145 (delta 62), pack-reused 1481
Receiving objects: 100% (1739/1739), 1.01 MiB | 634.00 KiB/s, done.
Resolving deltas: 100% (930/930), done.

(3)进入go-sdk目录

[root@localhost gosdkdemo]# cd ../go-sdk

(4)下载依赖

[root@localhost go-sdk]# go mod tidy

(5)编译生成abigen工具

[root@localhost go-sdk]# go build ./cmd/abigen/

编译时间有些长,耐心等待 

(6)创建工程目录并移动abigen至工程目录

[root@localhost go-sdk]# cd ..                  #返回上一级目录
[root@localhost GoContract]# mkdir gosdkdemo    #创建工程目录
[root@localhost GoContract]# cd gosdkdemo       #进入工程目录
[root@localhost gosdkdemo]# mkdir tools         #创建目录,存放ABI工具及相关文件
[root@localhost gosdkdemo]# cp ../go-sdk/abigen tools/  #拷贝上一步生成的abigen到此目录中

3、配置文件config.toml

(1)进入工程目录

[root@localhost GoContract]# cd gosdkdemo

(2)创建配置文件(config.toml)

[root@localhost gosdkdemo]# vi config.toml

配置文件内容

[Network]
#type rpc or channel
Type="channel"
CAFile="ca.crt"
Cert="sdk.crt"
Key="sdk.key"
[[Network.Connection]]
NodeURL="127.0.0.1:20200"
GroupID=1
# [[Network.Connection]]
# NodeURL="127.0.0.1:20200"
# GroupID=2

[Account]
# only support PEM format for now
KeyFile=".ci/0x83309d045a19c44dc3722d15a6abd472f95866ac.pem"

[Chain]
ChainID=1
SMCrypto=false

按Esc退出编辑,输入:wq保存即出。

(3)拷贝配置文件中的证书及密钥文件

配置文件中如下三个文件

CAFile="ca.crt"
Cert="sdk.crt"
Key="sdk.key"

在webase-deploy/nodes/127.0.0.1/sdk中存在三个文件 

config.toml fisco,区块链,智能合约,Golang,区块链,智能合约,golang

将以上三个文件copy至工程目录中 

[root@localhost gosdkdemo]# mkdir sdk  #创建目录,保存证书及密钥文件
[root@localhost gosdkdemo]# cp /usr/local/webase-deploy/nodes/127.0.0.1/sdk/ca.crt sdk/
[root@localhost gosdkdemo]# cp /usr/local/webase-deploy/nodes/127.0.0.1/sdk/sdk.crt sdk/
[root@localhost gosdkdemo]# cp /usr/local/webase-deploy/nodes/127.0.0.1/sdk/sdk.key sdk/

更改配置文件config.toml

[root@localhost gosdkdemo]# vi config.toml 

内容如下,加上路径: 

CAFile="sdk/ca.crt"
Cert="sdk/sdk.crt"
Key="sdk/sdk.key"

 按Esc退出编辑,输入:wq保存即出。 

(4)生成私钥文件

生成配置文件config.toml中的私钥文件,如下:

KeyFile=".ci/0x83309d045a19c44dc3722d15a6abd472f95866ac.pem"

下载console

[root@localhost gosdkdemo]# cd .. #返回上一级目录
[root@localhost GoContract]# git clone https://github.com/FISCO-BCOS/console.git

使用get_account.sh脚本生成私钥文件

[root@localhost GoContract]# cd console/   
[root@localhost console]# ls
build.gradle  CONTRIBUTING.md  gradle   gradlew.bat  README.md         settings.gradle  tools
Changelog.md  doc              gradlew  LICENSE      release_note.txt  src
[root@localhost console]# ./tools/get_account.sh 
[INFO] Account Address   : 0xde54d4143e33780c5cb5eed919ce25d2608789ce
[INFO] Private Key (pem) : accounts/0xde54d4143e33780c5cb5eed919ce25d2608789ce.pem
[INFO] Public  Key (pem) : accounts/0xde54d4143e33780c5cb5eed919ce25d2608789ce.pem.pub

将生成私钥文件目录移动至工程目录

[root@localhost console]# cp -r accounts/ ../gosdkdemo/

查看工程目录结构

[root@localhost console]# cd ../gosdkdemo/  #进入工程目录
[root@localhost gosdkdemo]# tree 
.
├── accounts
│   ├── 0xde54d4143e33780c5cb5eed919ce25d2608789ce.pem
│   └── 0xde54d4143e33780c5cb5eed919ce25d2608789ce.pem.pub
├── config.toml
└── sdk
    ├── ca.crt
    ├── sdk.crt
    └── sdk.key

2 directories, 6 files

(5)更改配置文件config.toml中的KeyFile值 

[root@localhost gosdkdemo]# vi config.toml 

 KeyFile值修改为上面生成的私钥账户文件

KeyFile="accounts/0xde54d4143e33780c5cb5eed919ce25d2608789ce.pem"

或 

​KeyFile=".accounts/0xde54d4143e33780c5cb5eed919ce25d2608789ce.pem"

accounts前面加点是为了隐藏文件。 

按Esc退出编辑,输入:wq保存即出。

4、使用ABI工具生成go文件

注:在WebASE中已写好一个智能合约并编译部署,如下图所示

config.toml fisco,区块链,智能合约,Golang,区块链,智能合约,golang

(1)生成智能合约.abi文件

[root@localhost gosdkdemo]# cd tools  #进入tools目录
[root@localhost tools]# vi hello.abi

abi内容在WeBASE的合约IDE中可查看,并拷贝到hello.abi文件中

config.toml fisco,区块链,智能合约,Golang,区块链,智能合约,golang

 按Esc退出编辑,输入:wq保存即出。

(2)生成智能合约.bin文件

[root@localhost tools]# vi hello.bin

bin内容在WeBASE的合约IDE中可查看,并拷贝到hello.bin文件中 

config.toml fisco,区块链,智能合约,Golang,区块链,智能合约,golang 按Esc退出编辑,输入:wq保存即出。

(3)使用abigen生成go文件

[root@localhost tools]# ./abigen -abi hello.abi -bin hello.bin -type hello -pkg main -out ../hello.go
[root@localhost tools]# cd ..  #返回上一级目录
[root@localhost gosdkdemo]# ls #查看已经生成的hello.go文件
accounts  config.toml  hello.go  sdk  tools

注:如果安装过Geth并配置环境变量,因Geth下有一个同名的abigen会依赖ethereum相关包生成GO文件,若不指定abigen,则默认使用Geth中的abigen,之后编译会报错。因此需要指定abigen为 刚刚通过go-sdk生成的abigen。如上面在tools目录下使用./abigen,指定是当前目前的abigen工具。

Geth中abigen生成的GO文件导入包为:

// Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost.

package main

import (
	"errors"
	"math/big"
	"strings"

	ethereum "github.com/ethereum/go-ethereum"
	"github.com/ethereum/go-ethereum/accounts/abi"
	"github.com/ethereum/go-ethereum/accounts/abi/bind"
	"github.com/ethereum/go-ethereum/common"
	"github.com/ethereum/go-ethereum/core/types"
	"github.com/ethereum/go-ethereum/event"
)

go-sdk生成的abigen工具,再生成的GO文件导入包为: 

// Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost.

package main

import (
	"math/big"
	"strings"

	"github.com/FISCO-BCOS/go-sdk/abi"
	"github.com/FISCO-BCOS/go-sdk/abi/bind"
	"github.com/FISCO-BCOS/go-sdk/core/types"
	"github.com/FISCO-BCOS/go-sdk/event"
	ethereum "github.com/ethereum/go-ethereum"
	"github.com/ethereum/go-ethereum/common"
)

5、调用智能合约

进入CentOS可视化界面,打开VSCode,在这里编写、执行代码

(1)编写代码(main.go)

package main

import (
	"fmt"
	"log"

	"github.com/FISCO-BCOS/go-sdk/client"
	"github.com/FISCO-BCOS/go-sdk/conf"
	"github.com/ethereum/go-ethereum/common"
)

func main() {
	//parse config
	configs, err := conf.ParseConfigFile("config.toml")
	if err != nil {
		log.Fatal(err)
	}
	config := &configs[0]

	//connect peer
	cli, err := client.Dial(config)
	if err != nil {
		log.Fatal(err)
	}

	//create a contract instance
	contractAddr := "0x85aa38ac471df787e16a7323d9e8b721af5f7d48"
	instance, err := NewHello(common.HexToAddress(contractAddr), cli)
	if err != nil {
		log.Fatal(err)
	}

	//call function of smart contract
	name, err := instance.GetName(cli.GetCallOpts())
	if err != nil {
		log.Panic(err)
	}

	fmt.Println(name)
}

(2)生成go.mod

[tracy@localhost gosdkdemo]$ go mod init gosdkdemo

(3)下载依赖包 

[tracy@localhost gosdkdemo]$ go mod tidy
go: finding module for package github.com/FISCO-BCOS/go-sdk/conf
go: finding module for package github.com/FISCO-BCOS/go-sdk/client
go: found github.com/FISCO-BCOS/go-sdk/client in github.com/FISCO-BCOS/go-sdk v0.11.0
go: found github.com/FISCO-BCOS/go-sdk/conf in github.com/FISCO-BCOS/go-sdk v0.11.0
gosdkdemo imports
        github.com/FISCO-BCOS/go-sdk/client imports
        github.com/ethereum/go-ethereum/crypto imports
        github.com/btcsuite/btcd/btcec/v2/ecdsa tested by
        github.com/btcsuite/btcd/btcec/v2/ecdsa.test imports
        github.com/btcsuite/btcd/chaincfg/chainhash: ambiguous import: found package github.com/btcsuite/btcd/chaincfg/chainhash in multiple modules:
        github.com/btcsuite/btcd v0.21.0-beta (/home/tracy/gopath/pkg/mod/github.com/btcsuite/btcd@v0.21.0-beta/chaincfg/chainhash)
        github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0 (/home/tracy/gopath/pkg/mod/github.com/btcsuite/btcd/chaincfg/chainhash@v1.0.0)

如遇到以上错误,将go.mod文件中的github.com/ethereum/go-ethereum v1.10.17 改为

github.com/ethereum/go-ethereum v1.10.16(修改版本号即可),如下图所示:

config.toml fisco,区块链,智能合约,Golang,区块链,智能合约,golang

(4)编译

[tracy@localhost gosdkdemo]$ go build *.go
# command-line-arguments
./main.go:28:47: cannot use cli (type *client.Client) as type "github.com/ethereum/go-ethereum/accounts/abi/bind".ContractBackend in argument to NewHello:
        *client.Client does not implement "github.com/ethereum/go-ethereum/accounts/abi/bind".ContractBackend (missing EstimateGas method)
./main.go:34:32: undefined: client.GetCallOpts

若出现上面错误,是因为默认使用了Geth的abigen生成Go文件所导致,否则编译成功。

(5)运行

[tracy@localhost gosdkdemo]$ go run *.go
tracy

总结

以上通过go-sdk生成的abigen工具(即第2步),与console中get_account.sh脚本生成私钥文件(即第3 -(4)步),无需再次配置,之后直接使用即可。文章来源地址https://www.toymoban.com/news/detail-803415.html

到了这里,关于FISCO BCOS Go-sdk 配置文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在FISCO BCOS区块链系统中使用Java SDK进行压力测试

    Java SDK Demo是FISCO BCOS团队基于Java SDK的基准测试集合,能够对FISCO BCOS节点进行压力测试。Java SDK Demo提供有合约编译功能,能够将Solidity合约文件转换成Java合约文件,此外还提供了针对转账合约、CRUD合约以及AMOP功能的压力测试示例程序 Java SDK Demo中的测试程序能够在部署有JD

    2024年01月17日
    浏览(68)
  • FISCO BCOS区块链建立配置启动

    创建操作目录, 下载安装脚本 搭建单群组4节点联盟链 启动FISCO BCOS链 安装java 获取控制台并回到fisco目录 拷贝控制台配置文件 配置控制台证书 编写HelloWorld合约 contract HelloWorld { string name; } 部署HelloWorld合约 调用HelloWorld合约 见https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/do

    2024年02月07日
    浏览(46)
  • FISCO BCOS控制台配置及使用

    通过控制台链接FISCO BCOS节点,实现查询区块链状态、部署调用合约等功能,能够快速获取到所需要的信息。 一、环境准备 1.搭建FISCO BCOS联盟链节点 2.安装java 3.下载控制台 操作如下图所示 4.拷贝控制台配置文件 5.拷贝节点证书 二、启动控制台 1.启动 操作如下图所示 2.使用

    2024年02月09日
    浏览(34)
  • 解决 java sdk 链接的 fisco bcos报错的终极指南Caused by: io.netty.channel.ChannelException: init channel network

    有好友询问了一个关于fisco bcos java sdk 链接的问题,记录一下,有遇到的朋友可以参考解决!

    2024年02月11日
    浏览(33)
  • Fisco Bcos区块链一(搭建单群组FISCO BCOS联盟链)

    技术文档:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/index.html 1、搭建单群组FISCO BCOS联盟链 1. 安装centos依赖包 安装依赖包openssl、curl 2. 创建操作目录, 下载安装脚本 如果因为网络问题导致长时间无法下载build_chain.sh脚本,请尝试 3. 搭建单群组4节点联盟链 在fisco目录下执

    2024年02月10日
    浏览(38)
  • 【FISCO-BCOS】十四、使用Caliper进行压力测试fisco-bcos

            前言:根据操作系统版本不同,部署环境不同,一些细节差别可能造成测试失败等问题,此文仅做参考,应以实际应用为主。         参考官方文档:压力测试指南 — FISCO BCOS v2.9.0 文档 部署Caliper的计算机需要有外网权限; 操作系统版本需要满足以下要求:Ub

    2024年02月15日
    浏览(33)
  • FISCO-BCOS 十四、使用Caliper进行压力测试fisco-bcos

            前言:根据操作系统版本不同,部署环境不同,一些细节差别可能造成测试失败等问题,此文仅做参考,应以实际应用为主。         参考官方文档:压力测试指南 — FISCO BCOS v2.9.0 文档 部署Caliper的计算机需要有外网权限; 操作系统版本需要满足以下要求:Ub

    2024年02月16日
    浏览(33)
  • FISCO BCOS

    一、wsl(windows子系统)安装步骤 wsl(windows子系统)简要介绍和安装步骤_Once_day的博客-CSDN博客_wsl 1、自动安装命令         管理员身份打开CMD,输入wsl --install。 用时很长特别是安装Ubuntu时,可以参考上面博客自行安装。可以在那一步退出,然后到应用商店安装。完成后重启即可

    2024年01月20日
    浏览(30)
  • FISCO BCOS环境搭建

    系统环境 Ubuntu 16.04+ 安装依赖openssl、curl ** ubuntu** sudo apt install -y openssl curl 在fisco-bcos操作目录下执行下载脚本 将下载的脚本设置权限 执行脚本,生成4节点的fisco链,最后输出All completed,表示节点生成成功 启动所有节点 安装Java环境 获取控制台下载脚本,并执行下载控制台 c

    2024年02月01日
    浏览(36)
  • fisco bcos 智能合约开发

    项目需求2张表:资源表、资源访问记录表,需要资源上链智能合约、访问记录上链智能合约、以及资源所有权转移智能合约。 FISCO BCOS提供合约KV存储接口开发模式,可以通过合约创建表,并对创建的表进行增删改查操作。 所以,针对2表创建两个智能合约即可实现对表的增删

    2024年02月02日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包