go-sdk – 转到sdk区块链毕设代写
区块链毕设代写本文提供国外最新区块链项目源码下载,包括solidity,eth,fabric等blockchain区块链,go-sdk – 转到sdk区块链毕设代写 是一篇很好的国外资料
go-sdk
Golang SDK For FISCO BCOS 2.2.0+
FISCO BCOS Go语言版本的SDK,主要实现的功能有:
- FISCO BCOS 2.0 JSON-RPC服务
Solidity
合约编译为Go文件- 部署、查询、写入智能合约
- 控制台
go-sdk
的使用可以当做是一个package
进行使用,亦可对项目代码进行编译,直接使用控制台通过配置文件来进行访问FISCO BCOS。
环境准备
-
Golang, 版本需不低于
1.13.6
,本项目采用go module
进行包管理。具体可查阅Using Go Modules,环境配置 -
FISCO BCOS 2.2.0+, 需要提前运行 FISCO BCOS 区块链blockchain平台,可参考安装搭建
-
Solidity编译器,默认0.4.25版本
配置文件说明(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
Network
- Type:支持channel和rpc两种模式,其中
channel
使用ssl链接,需要提供证书。rpc
使用http访问节点。 - CAFile:链根证书
- Cert:SDK建立SSL链接时使用的证书
- Key:SDK建立SSL链接时使用的证书对应的私钥
- Network.Connection数组,配置节点信息,可配置多个。
Account
- KeyFile:节点签发交易时所使用的私钥,PEM格式,支持国密和非国密。
请使用get_account.sh和get_gm_account.sh脚本生成。使用方式参考这里。
如果想使用Go-SDK代码生成,请参考这里。
Chain
- ChainID:链ID,与节点config.ini中
chain.id
保持一致。 - SMCrypto:链使用的签名算法,
ture
表示使用国密SM2,false
表示使用普通ECDSA。
控制台使用
在使用控制台需要先拉取代码或下载代码,然后对配置文件config.toml
进行更改:
- 拉取代码并编译
git clone https://github.com/FISCO-BCOS/go-sdk.git cd go-sdk go build cmd/console.go
-
搭建FISCO BCOS 2.2以上版本节点,请参考这里。
-
config.toml默认使用channel模式,请拷贝对应的SDK证书。
-
最后,运行控制台查看可用指令:
./console help
Package功能使用
以下的示例是通过import
的方式来使用go-sdk
,如引入RPC控制台库:
import "github.com/FISCO-BCOS/go-sdk/client"
Solidity合约编译为Go文件
在利用SDK进行项目开发时,对智能合约进行操作时需要将Solidity智能合约利用go-sdk的abigen
工具转换为Go
文件代码。整体上主要包含了五个流程:
- 准备需要编译的智能合约
- 配置好相应版本的
solc
编译器 - 构建go-sdk的合约编译工具
abigen
- 编译生成go文件
- 使用生成的go文件进行合约调用
下面的内容作为一个示例进行使用介绍。
1.提供一份简单的样例智能合约Store.sol
如下:
pragma solidity ^0.4.25; contract Store { event ItemSet(bytes32 key, bytes32 value); string public version; mapping (bytes32 => bytes32) public items; constructor(string _version) public { version = _version; } function setItem(bytes32 key, bytes32 value) external { items[key] = value; emit ItemSet(key, value); } }
2.安装对应版本的solc
编译器,目前FISCO BCOS默认的solc
编译器版本为0.4.25。
# 如果是国密则添加-g选项 bash tools/download_solc.sh -v 0.4.25
3.构建go-sdk
的代码生成工具abigen
# 下面指令在go-sdk目录下操作,编译生成abigen工具 go build ./cmd/abigen
执行命令后,检查根目录下是否存在abigen
,并将准备的智能合约Store.sol
放置在一个新的目录下:
mkdir ./store mv Store.sol ./store
4.编译生成go文件,先利用solc
将合约文件生成abi
和bin
文件,以前面所提供的Store.sol
为例:
# 国密请使用 ./solc-0.4.25-gm --bin --abi -o ./store ./store/Store.sol ./solc-0.4.25 --bin --abi -o ./store ./store/Store.sol
Store.sol
目录下会生成Store.bin
和Store.abi
。此时利用abigen
工具将Store.bin
和Store.abi
转换成Store.go
:
# 国密请使用 ./abigen --bin ./store/Store.bin --abi ./store/Store.abi --pkg store --type Store --out ./store/Store.go --smcrypto=true ./abigen --bin ./store/Store.bin --abi ./store/Store.abi --pkg store --type Store --out ./store/Store.go
最后store目录下面存在以下文件:
Store.abi Store.bin Store.go Store.sol
5.调用生成的Store.go
文件进行合约调用
至此,合约已成功转换为go文件,用户可根据此文件在项目中利用SDK进行合约操作。具体的使用可参阅下一节。
部署智能合约
创建main函数,调用Store合约,
touch store_main.go
下面的例子先部署合约,在部署过程中设置的Store.sol
合约中有一个公开的名为version
的全局变量,这种公开的成员将自动创建getter
函数,然后调用Version()
来获取version的值。
写入智能合约需要我们用私钥来对交易事务进行签名,我们创建的智能合约有一个名为SetItem
的外部方法,它接受soliditybytes32
类型的两个参数(key,value)。 这意味着在Go文件中需要传递一个长度为32个字节的字节数组。
package main import ( "fmt" "log" "github.com/FISCO-BCOS/go-sdk/client" "github.com/FISCO-BCOS/go-sdk/conf" "github.com/FISCO-BCOS/go-sdk/store" // import store ) func main(){ configs, err := conf.ParseConfigFile("config.toml") if err != nil { log.Fatalf("ParseConfigFile failed, err: %v", err) } client, err := client.Dial(&configs[0]) if err != nil { log.Fatal(err) } input := "Store deployment 1.0" address, tx, instance, err := store.DeployStore(client.GetTransactOpts(), client, input) if err != nil { log.Fatal(err) } fmt.Println("contract address: ", address.Hex()) // the address should be saved, will use in next example fmt.Println("transaction hash: ", tx.Hash().Hex()) // load the contract // contractAddress := common.HexToAddress("contract address in hex String") // instance, err := store.NewStore(contractAddress, client) // if err != nil { // log.Fatal(err) // } fmt.Println("================================") storeSession := &store.StoreSession{Contract: instance, CallOpts: *client.GetCallOpts(), TransactOpts: *client.GetTransactOpts()} version, err := storeSession.Version() if err != nil { log.Fatal(err) } fmt.Println("version :", version) // "Store deployment 1.0" // contract write interface demo fmt.Println("================================") key := [32]byte{} value := [32]byte{} copy(key[:], []byte("foo")) copy(value[:], []byte("bar")) tx, receipt, err := storeSession.SetItem(key, value) if err != nil { log.Fatal(err) } fmt.Printf("tx sent: %sn", tx.Hash().Hex()) fmt.Printf("transaction hash of receipt: %sn", receipt.GetTransactionHash()) // read the result result, err := storeSession.Items(key) if err != nil { log.Fatal(err) } fmt.Println("get item: " + string(result[:])) // "bar" }
We use optional third-party analytics cookies to understand how you use GitHub.com so we can build better products. Learn more.
We use optional third-party analytics cookies to understand how you use GitHub.com so we can build better products.
You can always update your selection by clicking Cookie Preferences at the bottom of the page. For more information, see our Privacy Statement.
Essential cookies
We use essential cookies to perform essential website functions, e.g. they’re used to log you in. Learn more
Always active
Analytics cookies
We use analytics cookies to understand how you use our websites so we can make them better, e.g. they’re used to gather information about the pages you visit and how many clicks you need to accomplish a task. Learn more
update README.md (
网络
该公司以2.2.0++的方式,对该公司BCOS 2.2.2.0+的格朗SDK进行了
<><
>
>
>
非非非非非非非非非非非非非非非非的非21151;
关于“go-Dek”的“go-sdk”的“go-sdk”的“go-Simon”的“go-Simon”的“包包包”的“包”的“包”的“包”的“包”的,除此之外,关于“关于”的“项目”的“关于”的“关于”的“关于”的“关于”的“关于”的“关于”的“关于”的“关于“FISCO”的“FISCO-BCOS。
p>p>Golang,Golang,除了除了除了除了除了除了除了“FISCO之外,FISCO-BCOS。
Golang,Golang,另外,除了除了除了除了除了除了除了除了除了一条龙以外,[[[[[[[[[[[[使用go模块,FISCO BCOS 2.2.0+BCOS公司_帐户.sh获得通用汽车公司_帐户.sh使用方法
在使用控制台需要先拉取代码或下载代码,然后对配置文件配置.toml进展:
FISCO BCOS 2.2配置.toml方法[两岸三地]无条件无障碍地进行无障碍的无障碍无障碍地进行无障碍的进口。污水处理厂
1存储.sol[答:
2阿比根存储.sol放存储.sol:
存储.sol目录下会生成存储.bin和存储.abi.阿比根存储.bin和存储.abi转换成商店。去吧商店商店。去吧文件的主要用途是主要用途是主要用途是᠃主要用途是৳主要用途是৳可根欶目通过ਛ的ਛ如何佑佛使如何可参阅下的。。
p>p>p主营主函数数,调商店商店商店商店商店商店商店商店商店商店“,
下面的例子先部署合约,在部署过程中设置的存储.sol版本何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况;何况何况何况何况何况;何况何况;何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况(key,关键,何况(key,关键,关键,关键,关键,关键,何况何况何况何况何况我们使用可选的第三方分析cookies,了解您如何使用GitHub.com网站所以我们可以制造更好的产品。了解更多。
我们使用可选的第三方分析cookies来了解您如何使用GitHub.com网站所以我们可以制造更好的产品。
您可以随时通过单击页面底部的Cookie首选项来更新您的选择。有关更多信息,请参阅我们的隐私声明。
我们使用基本Cookie来执行基本的网站功能,例如,它们用于让您登录。了解更多
我们使用analytics Cookie来了解您如何使用我们的网站,以便我们能够使其变得更好,例如,它们用于收集有关您访问的页面以及完成一项任务需要多少次单击的信息。了解更多(配置.toml)
网络
账户
Chain
始终活跃,使用go模块,FISCO BCOS公司中华人民共和国密钥:SDK网络。连接[答:]配置.ini中链.id一、
[李[李[李[二[二[二[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四前进
FISCO BCOS Go语言版本的SDK,主要实现的功能有:
- [中华民国第二、第二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、二、33410;,请参考这里。
- 配置.toml[答:][据
- 部署、查询、写入智能合约
- 控制台
go-sdk
的使用可以当做是一个package
进行使用,亦可对项目代码进行编译,直接使用控制台通过配置文件来进行访问FISCO BCOS。
账户
-
Golang, 版本需不低于
1.13.6
,本项目采用go module
进行包管理。具体可查阅Using Go Modules,环境配置 -
-
始终活跃,使用go模块,FISCO BCOS公司中华人民共和国密钥:SDK网络。连接[答:]配置.ini中链.id一、
[李[李[李[二[二[二[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四前进
[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
Network
- Type:支持channel和rpc两种模式,其中
channel
使用ssl链接,需要提供证书。rpc
使用http访问节点。 - CAFile:链根证书
- Cert:SDK建立SSL链接时使用的证书
- Key:SDK建立SSL链接时使用的证书对应的私钥
- Network.Connection数组,配置节点信息,可配置多个。
Account
- KeyFile:节点签发交易时所使用的私钥,PEM格式,支持国密和非国密。
非非非非非非非非非非非非非非非非的非21151;
关于“go-Dek”的“go-sdk”的“go-sdk”的“go-Simon”的“go-Simon”的“包包包”的“包”的“包”的“包”的“包”的,除此之外,关于“关于”的“项目”的“关于”的“关于”的“关于”的“关于”的“关于”的“关于”的“关于”的“关于“FISCO”的“FISCO-BCOS。
Chain
- ChainID:链ID,与节点config.ini中
chain.id
保持一致。 - SMCrypto:链使用的签名算法,
ture
表示使用国密SM2,false
表示使用普通ECDSA。
控制台使用
p>p>Golang,Golang,除了除了除了除了除了除了除了“FISCO之外,FISCO-BCOS。
- 拉取代码并编译
git clone https://github.com/FISCO-BCOS/go-sdk.git cd go-sdk go build cmd/console.go
-
Golang,Golang,另外,除了除了除了除了除了除了除了除了除了一条龙以外,[[[[[[[[[[[[使用go模块,FISCO BCOS 2.2.0+BCOS公司_帐户.sh获得通用汽车公司_帐户.sh使用方法
-
在使用控制台需要先拉取代码或下载代码,然后对配置文件配置.toml进展:
-
FISCO BCOS 2.2配置.toml方法[两岸三地]无条件无障碍地进行无障碍的无障碍无障碍地进行无障碍的进口。污水处理厂
./console help
Package功能使用
1存储.sol[答:
import "github.com/FISCO-BCOS/go-sdk/client"
Solidity合约编译为Go文件
2阿比根存储.sol放存储.sol:
- 准备需要编译的智能合约
- 配置好相应版本的
solc
编译器 - 构建go-sdk的合约编译工具
abigen
- 编译生成go文件
- 使用生成的go文件进行合约调用
存储.sol目录下会生成存储.bin和存储.abi.阿比根存储.bin和存储.abi转换成商店。去吧商店商店。去吧文件的主要用途是主要用途是主要用途是᠃主要用途是৳主要用途是৳可根欶目通过ਛ的ਛ如何佑佛使如何可参阅下的。。
p>p>p主营主函数数,调商店商店商店商店商店商店商店商店商店商店“,
pragma solidity ^0.4.25; contract Store { event ItemSet(bytes32 key, bytes32 value); string public version; mapping (bytes32 => bytes32) public items; constructor(string _version) public { version = _version; } function setItem(bytes32 key, bytes32 value) external { items[key] = value; emit ItemSet(key, value); } }
下面的例子先部署合约,在部署过程中设置的存储.sol版本何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况;何况何况何况何况何况;何况何况;何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况何况(key,关键,何况(key,关键,关键,关键,关键,关键,何况何况何况何况何况我们使用可选的第三方分析cookies,了解您如何使用GitHub.com网站所以我们可以制造更好的产品。了解更多。
# 如果是国密则添加-g选项 bash tools/download_solc.sh -v 0.4.25
我们使用可选的第三方分析cookies来了解您如何使用GitHub.com网站所以我们可以制造更好的产品。
您可以随时通过单击页面底部的Cookie首选项来更新您的选择。有关更多信息,请参阅我们的隐私声明。
# 下面指令在go-sdk目录下操作,编译生成abigen工具 go build ./cmd/abigen
我们使用基本Cookie来执行基本的网站功能,例如,它们用于让您登录。了解更多
mkdir ./store mv Store.sol ./store
我们使用analytics Cookie来了解您如何使用我们的网站,以便我们能够使其变得更好,例如,它们用于收集有关您访问的页面以及完成一项任务需要多少次单击的信息。了解更多(配置.toml)
网络
账户
Chain
始终活跃,使用go模块,FISCO BCOS公司中华人民共和国密钥:SDK网络。连接[答:]配置.ini中链.id一、
[李[李[李[二[二[二[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四[四前进
# 国密请使用 ./solc-0.4.25-gm --bin --abi -o ./store ./store/Store.sol ./solc-0.4.25 --bin --abi -o ./store ./store/Store.sol
Store.sol
目录下会生成Store.bin
和Store.abi
。此时利用abigen
工具将Store.bin
和Store.abi
转换成Store.go
:
# 国密请使用 ./abigen --bin ./store/Store.bin --abi ./store/Store.abi --pkg store --type Store --out ./store/Store.go --smcrypto=true ./abigen --bin ./store/Store.bin --abi ./store/Store.abi --pkg store --type Store --out ./store/Store.go
最后store目录下面存在以下文件:
Store.abi Store.bin Store.go Store.sol
5.调用生成的Store.go
文件进行合约调用
至此,合约已成功转换为go文件,用户可根据此文件在项目中利用SDK进行合约操作。具体的使用可参阅下一节。
部署智能合约
创建main函数,调用Store合约,
touch store_main.go
下面的例子先部署合约,在部署过程中设置的Store.sol
合约中有一个公开的名为version
的全局变量,这种公开的成员将自动创建getter
函数,然后调用Version()
来获取version的值。
写入智能合约需要我们用私钥来对交易事务进行签名,我们创建的智能合约有一个名为SetItem
的外部方法,它接受soliditybytes32
类型的两个参数(key,value)。 这意味着在Go文件中需要传递一个长度为32个字节的字节数组。
package main import ( "fmt" "log" "github.com/FISCO-BCOS/go-sdk/client" "github.com/FISCO-BCOS/go-sdk/conf" "github.com/FISCO-BCOS/go-sdk/store" // import store ) func main(){ configs, err := conf.ParseConfigFile("config.toml") if err != nil { log.Fatalf("ParseConfigFile failed, err: %v", err) } client, err := client.Dial(&configs[0]) if err != nil { log.Fatal(err) } input := "Store deployment 1.0" address, tx, instance, err := store.DeployStore(client.GetTransactOpts(), client, input) if err != nil { log.Fatal(err) } fmt.Println("contract address: ", address.Hex()) // the address should be saved, will use in next example fmt.Println("transaction hash: ", tx.Hash().Hex()) // load the contract // contractAddress := common.HexToAddress("contract address in hex String") // instance, err := store.NewStore(contractAddress, client) // if err != nil { // log.Fatal(err) // } fmt.Println("================================") storeSession := &store.StoreSession{Contract: instance, CallOpts: *client.GetCallOpts(), TransactOpts: *client.GetTransactOpts()} version, err := storeSession.Version() if err != nil { log.Fatal(err) } fmt.Println("version :", version) // "Store deployment 1.0" // contract write interface demo fmt.Println("================================") key := [32]byte{} value := [32]byte{} copy(key[:], []byte("foo")) copy(value[:], []byte("bar")) tx, receipt, err := storeSession.SetItem(key, value) if err != nil { log.Fatal(err) } fmt.Printf("tx sent: %sn", tx.Hash().Hex()) fmt.Printf("transaction hash of receipt: %sn", receipt.GetTransactionHash()) // read the result result, err := storeSession.Items(key) if err != nil { log.Fatal(err) } fmt.Println("get item: " + string(result[:])) // "bar" }
We use optional third-party analytics cookies to understand how you use GitHub.com so we can build better products. Learn more.
We use optional third-party analytics cookies to understand how you use GitHub.com so we can build better products.
You can always update your selection by clicking Cookie Preferences at the bottom of the page. For more information, see our Privacy Statement.
Essential cookies
We use essential cookies to perform essential website functions, e.g. they’re used to log you in. Learn more
Always active
Analytics cookies
We use analytics cookies to understand how you use our websites so we can make them better, e.g. they’re used to gather information about the pages you visit and how many clicks you need to accomplish a task. Learn more
update README.md (
部分转自网络,侵权联系删除区块链源码网
区块链知识分享网, 以太坊dapp资源网, 区块链教程, fabric教程下载, 区块链书籍下载, 区块链资料下载, 区块链视频教程下载, 区块链基础教程, 区块链入门教程, 区块链资源 » go-sdk – 转到sdk区块链毕设代写