Skip to content

Commit

Permalink
Merge pull request #1053 from cyjseagull/release-2.7.0
Browse files Browse the repository at this point in the history
sync document from release-2
  • Loading branch information
cyjseagull committed Nov 20, 2020
2 parents e3de9cf + 6494da1 commit 86b7528
Show file tree
Hide file tree
Showing 11 changed files with 144 additions and 88 deletions.
10 changes: 10 additions & 0 deletions docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,16 @@ Return values:
[group:1]> quit
```

## WeBASE搭建
微众银行开源的自研区块链中间件平台——[WeBASE(WeBank Blockchain Application Software Extension)](https://webasedoc.readthedocs.io/zh_CN/latest/) 是区块链应用和FISCO BCOS节点之间搭建的中间件平台。WeBASE屏蔽了区块链底层的复杂度,降低区块链使用的门槛,大幅提高区块链应用的开发效率,包含节点前置、节点管理、交易链路,数据导出,Web管理平台等子系统。用户可以根据业务所需,选择子系统进行部署,可以进一步体验丰富交互的体验、可视化智能合约开发环境IDE。
### [WeBASE快速入门](https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Install/developer.html)
开发者只需要搭建节点和节点前置服务(WeBASE-Front),就可通过WeBASE-Front的合约编辑器进行合约的编辑,编译,部署,调试。搭建可参考[《WeBASE快速入门文档》](https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Install/developer.html)
![](../images/webase/webase-front.png)
### [WeBASE管理台](https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE/install.html)
通过WeBASE一键脚本,可以搭建一个WeBASE的基础环境,可以方便用户体验WeBASE核心功能如:区块浏览,节点查看,合约IDE,系统管理,节点监控,交易审计,私钥管理。搭建可参考[《WeBASE一键部署文档》](https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE/install.html)![](../images/webase/webase-web.png)
### [WeBASE其他](https://webasedoc.readthedocs.io/zh_CN/latest)
WeBASE其他组件可以参考[《WeBASE文档》](https://webasedoc.readthedocs.io/zh_CN/latest)

[build_chain_code]:https://github.com/FISCO-BCOS/FISCO-BCOS/blob/master/tools/build_chain.sh

![](./../images/installation/hello_world.gif)
6 changes: 3 additions & 3 deletions docs/manual/console.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ curl -#LO https://github.com/FISCO-BCOS/console/releases/download/v1.1.0/downloa
- 区块链节点和证书的配置:
- 将节点sdk目录下的`ca.crt``sdk.crt``sdk.key`文件拷贝到`conf`目录下。
-`conf`目录下的`applicationContext-sample.xml`文件重命名为`applicationContext.xml`文件。配置`applicationContext.xml`文件,其中添加注释的内容根据区块链节点配置做相应修改。**提示:如果搭链时设置的channel_listen_ip(若节点版本小于v2.3.0,查看配置项listen_ip)为127.0.0.1或者0.0.0.0,channel_port为20200, 则`applicationContext.xml`配置不用修改。**
- FISCO-BCOS 2.5及之后的版本,添加了SDK只能连本机构节点的限制,操作时需确认拷贝证书的路径,否则建联报错
- FISCO-BCOS 2.5及之后的版本,添加了SDK只能连本机构节点的限制,操作时需确认拷贝证书的路径,否则建链报错

```xml
<?xml version="1.0" encoding="UTF-8" ?>
Expand Down Expand Up @@ -165,7 +165,7 @@ curl -#LO https://github.com/FISCO-BCOS/console/releases/download/v1.1.0/downloa
- 区块链节点和证书的配置:
- 将节点sdk目录下的`ca.crt``sdk.crt``sdk.key`文件拷贝到`conf`目录下。
-`conf`目录下的`applicationContext-sample.xml`文件重命名为`applicationContext.xml`文件。配置`applicationContext.xml`文件,其中添加注释的内容根据区块链节点配置做相应修改。**提示:如果搭链时设置的channel_listen_ip(若节点版本小于v2.3.0,查看配置项listen_ip)为127.0.0.1或者0.0.0.0,channel_port为20200, 则`applicationContext.xml`配置不用修改。**
- FISCO-BCOS 2.5及之后的版本,添加了SDK只能连本机构节点的限制,操作时需确认拷贝证书的路径,否则建联报错
- FISCO-BCOS 2.5及之后的版本,添加了SDK只能连本机构节点的限制,操作时需确认拷贝证书的路径,否则建链报错

- 打开国密开关
```
Expand Down Expand Up @@ -2004,4 +2004,4 @@ export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
$ source /etc/profile
# 查询Java版本,出现的版本是自己下载的版本,则安装成功。
java -version
```
```
10 changes: 9 additions & 1 deletion docs/manual/privacy.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@

文档一、二节分别对同态加密和群/环签名算法以及相关应用场景进行了简单介绍,第三、四节则详细介绍了FISCO BCOS隐私保护模块启用方法以及调用方式。


```eval_rst
.. note::
1. FISCO BCOS 2.3.0+ 支持同态加密、群签名和环签名
2. FISCO BCOS 2.3.0, 2.4.0以及2.4.1,需要手动编译二进制启用隐私保护模块
3. FISCO BCOS 2.5.0+默认启用隐私保护模块
```

## 同态加密

### 算法简介
Expand Down Expand Up @@ -153,7 +161,7 @@ bash ../tools/build_chain.sh -l 127.0.0.1:4 -e bin/fisco-bcos
bash start.sh
# 调用合约
call PaillierPrecompiled.sol 0x5003 paillierAdd "0100E97E06A781DAAE6DBC9C094FC963D73B340D99FD934782A5D629E094D3B051FBBEA26F46BB681EB5314AE98A6A63805834E26BD0154243581DD77709C5DB15357DBEC34F8D8B9D5892FDF5F5FC56B1474CF58D6AC23AA867E34653B469058DCDBDC283D493711022131FBCBCFAC639919A7C0FE45EECDBD43FA543492D3058737F567626318282C2C35027B05E901F45CB3B71479FC49FD08B3F81C82326DEF28739D6A7D090F93D1B5058CDA89134AB103DB49EA51FF14310179FF9B3284BC6C3B6BA3BB0FCB35FEA6AF1453A4AAEB3EB82E9B99875BEA89CD970905B40E6E5FC906F0959769865FF29A83CD23ACC0C832A0DE30D0C691335A7ABE2EA0782778E14DAACACD60767862D5E285E8FB7B6D62C9AABE1BE751DD68001F492D6FD4C46583B25FF1806A954E8DB5ED935C5A2CA6816C4EDB48D4A41D146E09EF1CA5AFECC38F38E4147D9C6D07429F058266CC879AF8AA88510E85608756585C8D78400DFFA32244B99DC1A533780CAEA07578AF340C3C4ABED09355A006FCE99F22BE113F5317256198ACB6CA9D8501EDF42A11CFCCF677755D081E48249B9345FA8C2F73E6CB37CB17C2A5A1EA4DC44949A63E8DA45F3DCE827654688312F399873E897CDD413C84DC0891884BEF8ECBC99F48CBB3DA2D04B40CDCB03A6CD8FDC11277A5AA5F73DB6B828AB24978480604D0143A0A5020EE985A88EEC73FD9DF205E5CD5C54C06ADD092E839B91F28887C9BF7775275552E1B673997A792683B784827078CC7BF7121318B0565739588268372EDD320B1BB2FEE8D873222C00AF93D07C0572BF3E089806EA7E3C8D334973B4BE61E31E389CB919FCEE834E1D9EBA624DE324D85425BCCDF8C3F8F3A94E33A307CAAE5922E46FFE96A521ECB6E7D681E7CF6A1900EEF0DDF23ADEC6EFA8842110FF1F266AEDA7B501DBC94D20817DD43D9EB056E3DA4DA977E85A53207F2C229F9302EB5029B5C31EE40FC7E25591CDC6B4AD206BDFB50C5F7D2DA2D6B8AB7A6B575C20FDD12A37EBECF27D60B651842DED09776218613F72628C1A3540252895A192DF51A1B7479EFC45A4B489FC" "0100E97E06A781DAAE6DBC9C094FC963D73B340D99FD934782A5D629E094D3B051FBBEA26F46BB681EB5314AE98A6A63805834E26BD0154243581DD77709C5DB15357DBEC34F8D8B9D5892FDF5F5FC56B1474CF58D6AC23AA867E34653B469058DCDBDC283D493711022131FBCBCFAC639919A7C0FE45EECDBD43FA543492D3058737F567626318282C2C35027B05E901F45CB3B71479FC49FD08B3F81C82326DEF28739D6A7D090F93D1B5058CDA89134AB103DB49EA51FF14310179FF9B3284BC6C3B6BA3BB0FCB35FEA6AF1453A4AAEB3EB82E9B99875BEA89CD970905B40E6E5FC906F0959769865FF29A83CD23ACC0C832A0DE30D0C691335A7ABE2EA07827736DDD4C285AB8C5F53DA58502BD2E312C939139E591C83D009C763836B05676CEDE46C9BFEBA7AF6242739F1E27A0AABB13F37CFF2DFEE5D14D52A660FDD012748025F9915585123FD263E211C594A0EDB7AFDA1240A2C340C44C3568FA47AB2CC00459DF31828C56CAC0284B5D0D3BC3D6F37969FACED77B03107B88F60A73E1F9FEBE6152FB00BDAECA9954AC28D4D9599FE234AF2E52748DBEB65570F2B99A638C275235494189B887FAEA39FE12CB1BAE9AE085E353D4DC01863052FE141D87D98E78C46FFD0F634D498E4E4B2F87B60D505F8401DCCC1BC0D9E32B8C5AF6A6257DB61DDD166CC17E712626218C16D00C24042D928028972816919C1CD9E1AB2F3135D798BE795D79013C3BDE507811E05D88050E7DF1BD3ED0EB7405BA21E854551A7EBD6351E0B9300428C77B1FA532DB9C5D9A0D4BB9F7E96BAFA259D419D75398141801B148C3EF9AE437A424E4E781238964C10EE39260DD0058392CD83C1DFEDAE2D557E5E7D643608B1BB0327AB92550A66F6D636F9F638A5077D721E6BD9344851E3FE288984F120C05A62DD9E283498B5AD680E91E0CBAD3093598B54E8A6964EB406068BB765945B182CD5EBC8910F2DE80C902751EEB77FCB583784DD852E4B6FF2CC1EBA44A5F750B2AD11240F7B95D87055F3CC5A837FA682117ACA1787CF107C9D4B111C8B9FBB78553452E351A8F0E3C50F536CA3304C"
call PaillierPrecompiled 0x5003 paillierAdd "0100E97E06A781DAAE6DBC9C094FC963D73B340D99FD934782A5D629E094D3B051FBBEA26F46BB681EB5314AE98A6A63805834E26BD0154243581DD77709C5DB15357DBEC34F8D8B9D5892FDF5F5FC56B1474CF58D6AC23AA867E34653B469058DCDBDC283D493711022131FBCBCFAC639919A7C0FE45EECDBD43FA543492D3058737F567626318282C2C35027B05E901F45CB3B71479FC49FD08B3F81C82326DEF28739D6A7D090F93D1B5058CDA89134AB103DB49EA51FF14310179FF9B3284BC6C3B6BA3BB0FCB35FEA6AF1453A4AAEB3EB82E9B99875BEA89CD970905B40E6E5FC906F0959769865FF29A83CD23ACC0C832A0DE30D0C691335A7ABE2EA0782778E14DAACACD60767862D5E285E8FB7B6D62C9AABE1BE751DD68001F492D6FD4C46583B25FF1806A954E8DB5ED935C5A2CA6816C4EDB48D4A41D146E09EF1CA5AFECC38F38E4147D9C6D07429F058266CC879AF8AA88510E85608756585C8D78400DFFA32244B99DC1A533780CAEA07578AF340C3C4ABED09355A006FCE99F22BE113F5317256198ACB6CA9D8501EDF42A11CFCCF677755D081E48249B9345FA8C2F73E6CB37CB17C2A5A1EA4DC44949A63E8DA45F3DCE827654688312F399873E897CDD413C84DC0891884BEF8ECBC99F48CBB3DA2D04B40CDCB03A6CD8FDC11277A5AA5F73DB6B828AB24978480604D0143A0A5020EE985A88EEC73FD9DF205E5CD5C54C06ADD092E839B91F28887C9BF7775275552E1B673997A792683B784827078CC7BF7121318B0565739588268372EDD320B1BB2FEE8D873222C00AF93D07C0572BF3E089806EA7E3C8D334973B4BE61E31E389CB919FCEE834E1D9EBA624DE324D85425BCCDF8C3F8F3A94E33A307CAAE5922E46FFE96A521ECB6E7D681E7CF6A1900EEF0DDF23ADEC6EFA8842110FF1F266AEDA7B501DBC94D20817DD43D9EB056E3DA4DA977E85A53207F2C229F9302EB5029B5C31EE40FC7E25591CDC6B4AD206BDFB50C5F7D2DA2D6B8AB7A6B575C20FDD12A37EBECF27D60B651842DED09776218613F72628C1A3540252895A192DF51A1B7479EFC45A4B489FC" "0100E97E06A781DAAE6DBC9C094FC963D73B340D99FD934782A5D629E094D3B051FBBEA26F46BB681EB5314AE98A6A63805834E26BD0154243581DD77709C5DB15357DBEC34F8D8B9D5892FDF5F5FC56B1474CF58D6AC23AA867E34653B469058DCDBDC283D493711022131FBCBCFAC639919A7C0FE45EECDBD43FA543492D3058737F567626318282C2C35027B05E901F45CB3B71479FC49FD08B3F81C82326DEF28739D6A7D090F93D1B5058CDA89134AB103DB49EA51FF14310179FF9B3284BC6C3B6BA3BB0FCB35FEA6AF1453A4AAEB3EB82E9B99875BEA89CD970905B40E6E5FC906F0959769865FF29A83CD23ACC0C832A0DE30D0C691335A7ABE2EA07827736DDD4C285AB8C5F53DA58502BD2E312C939139E591C83D009C763836B05676CEDE46C9BFEBA7AF6242739F1E27A0AABB13F37CFF2DFEE5D14D52A660FDD012748025F9915585123FD263E211C594A0EDB7AFDA1240A2C340C44C3568FA47AB2CC00459DF31828C56CAC0284B5D0D3BC3D6F37969FACED77B03107B88F60A73E1F9FEBE6152FB00BDAECA9954AC28D4D9599FE234AF2E52748DBEB65570F2B99A638C275235494189B887FAEA39FE12CB1BAE9AE085E353D4DC01863052FE141D87D98E78C46FFD0F634D498E4E4B2F87B60D505F8401DCCC1BC0D9E32B8C5AF6A6257DB61DDD166CC17E712626218C16D00C24042D928028972816919C1CD9E1AB2F3135D798BE795D79013C3BDE507811E05D88050E7DF1BD3ED0EB7405BA21E854551A7EBD6351E0B9300428C77B1FA532DB9C5D9A0D4BB9F7E96BAFA259D419D75398141801B148C3EF9AE437A424E4E781238964C10EE39260DD0058392CD83C1DFEDAE2D557E5E7D643608B1BB0327AB92550A66F6D636F9F638A5077D721E6BD9344851E3FE288984F120C05A62DD9E283498B5AD680E91E0CBAD3093598B54E8A6964EB406068BB765945B182CD5EBC8910F2DE80C902751EEB77FCB583784DD852E4B6FF2CC1EBA44A5F750B2AD11240F7B95D87055F3CC5A837FA682117ACA1787CF107C9D4B111C8B9FBB78553452E351A8F0E3C50F536CA3304C"
# 返回结果
0100E97E06A781DAAE6DBC9C094FC963D73B340D99FD934782A5D629E094D3B051FBBEA26F46BB681EB5314AE98A6A63805834E26BD0154243581DD77709C5DB15357DBEC34F8D8B9D5892FDF5F5FC56B1474CF58D6AC23AA867E34653B469058DCDBDC283D493711022131FBCBCFAC639919A7C0FE45EECDBD43FA543492D3058737F567626318282C2C35027B05E901F45CB3B71479FC49FD08B3F81C82326DEF28739D6A7D090F93D1B5058CDA89134AB103DB49EA51FF14310179FF9B3284BC6C3B6BA3BB0FCB35FEA6AF1453A4AAEB3EB82E9B99875BEA89CD970905B40E6E5FC906F0959769865FF29A83CD23ACC0C832A0DE30D0C691335A7ABE2EA0782774D011D9A668B26E65506EF2E8B3EBA70B882DE36FEC5951B64B9D967EE5E05B1AF62EE569358360C43220A756E7FB610FCBD5A366D077C48342EE3025735D6590531A7E609ADE2608BB4173167F972AB860674DB89769E2D97EE3E308D3CA04802EF8F85BC6BFCD270F1FC6AEA5C09F51E8914273D8BD7833D55D9AF3D0102315880A57D531E30EDD8E777CDE8708AE7DDF83A8C5B48854FD4CD4E7372CED017C0BACD49E409C45F7071113B12494D3955BA1D7618E196A14012B11ADB63B857C9033604575FC7FF1D5833A53ACDE8877311FFE78F0CAEBAA27B0E5ADCDD809AEDCD5C7D2CA7F15E53AB7D62ADF04686E05B1F79CA91AFD2CE120AAD7D0F15C8E7B59968CE13BA10C99B50BE696C22A59109C3E6E5EDBE364FF5717443C175DEE5680908AEF67AF6261644AEEFAD42538A8686481CF0109296D1A2FF030143A0DED95F54CC158BF3A3FCD0B2278BDB6942D6E536CA45E3015B764FF5A94B57D232F86CFC66A29C55B9A78336026FFB6D8882E6F4CE2F8D007C225B6B3DE814FC60EB278B25FB0A1F6B4A34E920CA952BC3F14D121D5438E12634AD951EBD5911B281E3ADEC43410B91DC28B68F9D79D7F203245E87EE1DB3883B0C925C5A9BA157AB2F07ACD9A09F89EF211EED16358E78EDAF091FBA914225BF8A7DCDD2DD12EC0ABBC10E9E5F7DD48239B0A68CBD81637B1C0D7ED1DF89D714DFC6C1B7B6B3
Expand Down
168 changes: 88 additions & 80 deletions docs/sdk/go_sdk/contractExamples.md
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ func main() {
fmt.Println("value :", value)

value = "Hello, FISCO BCOS"
tx, err = helloworldSession.Set(value) // call set API
tx, receipt, err := helloworldSession.Set(value) // call set API
if err != nil {
log.Fatal(err)
}
Expand Down Expand Up @@ -289,7 +289,7 @@ KVTableTest.abi、KVTableTest.bin、KVTableTest.go、KVTableTest.sol、solc-0.5.

#### 部署合约

在 kvtabletest 文件夹中创建 contract 文件夹,在 contract 文件夹中创建 kvtabletest_main.go 文件,调用 KVTableTest.go 部署智能合约。合约将创建 t_kvtest 表,该表用于记录某公司仓库中物资,以唯一的物资编号作为主key,保存物资的名称和价格。使用build_chain.sh脚本搭建区块链时会在./nodes/127.0.0.1/sdk文件夹中生成sdk证书、私钥以及ca证书,需要将这三个文件拷贝至`config.toml`中配置的位置。
在 kvtabletest 文件夹中创建 cmd 文件夹,在 cmd 文件夹中创建 kvtabletest_main.go 文件,调用 KVTableTest.go 部署智能合约。合约将创建 t_kvtest 表,该表用于记录某公司仓库中物资,以唯一的物资编号作为主key,保存物资的名称和价格。使用build_chain.sh脚本搭建区块链时会在./nodes/127.0.0.1/sdk文件夹中生成sdk证书、私钥以及ca证书,需要将这三个文件拷贝至`config.toml`中配置的位置。

```go
package main
Expand Down Expand Up @@ -324,6 +324,11 @@ func main(){
}
```

```bash
# 该指令在go-sdk目录中执行
go run kvtabletest/cmd/kvtabletest_main.go
```

```eval_rst
.. note::
Expand All @@ -339,62 +344,64 @@ func main(){
package main

import (
"fmt"
"log"
"math/big"
"strconv"

"github.com/FISCO-BCOS/go-sdk/client"
"github.com/FISCO-BCOS/go-sdk/conf"
kvtable "github.com/FISCO-BCOS/go-sdk/kvtabletest"
"github.com/ethereum/go-ethereum/common"
"fmt"
"log"
"math/big"
"strings"

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

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

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

// load the contract
contractAddress := common.HexToAddress("contract address in hex") // 0x9526BDd51d7F346ec2B48192f25a800825A8dBF3
instance, err := kvtable.NewKVTableTest(contractAddress, client)
if err != nil {
log.Fatal(err)
}
// load the contract
contractAddress := common.HexToAddress(contract address in hex string) // deploy contract to get address
instance, err := kvtable.NewKVTableTest(contractAddress, client)
if err != nil {
log.Fatal(err)
}

kvtabletestSession := &kvtable.KVTableTestSession{Contract: instance, CallOpts: *client.GetCallOpts(), TransactOpts: *client.GetTransactOpts()}
kvtabletestSession := &kvtable.KVTableTestSession{Contract: instance, CallOpts: *client.GetCallOpts(), TransactOpts: *client.GetTransactOpts()}

id := "100010001001"
item_name := "Laptop"
item_price := big.NewInt(6000)
tx, receipt, err := kvtabletestSession.Set(id,item_price,item_name) // call set API
if err != nil {
log.Fatal(err)
}
fmt.Printf("tx sent: %s\n", tx.Hash().Hex())
// 解析abi
kvtableTestABI, err := abi.JSON(strings.NewReader(kvtable.KVTableTestABI))
if err != nil {
fmt.Printf("parse abi failed, err: %v\n", err)
return
}
// kvtableTestABI 解析返回值
ret := big.NewInt(0)
err = kvtableTestABI.Unpack(ret, "set", common.FromHex(receipt.Output))
if err != nil {
fmt.Printf("parse return value failed, err: %v\n", err)
return
}
id := "100010001001"
item_name := "Laptop"
item_price := big.NewInt(6000)
tx, receipt, err := kvtabletestSession.Set(id, item_price, item_name) // call set API
if err != nil {
log.Fatal(err)
}
fmt.Printf("tx sent: %s\n", tx.Hash().Hex())
// 解析abi
kvtableTestABI, err := abi.JSON(strings.NewReader(kvtable.KVTableTestABI))
if err != nil {
fmt.Printf("parse abi failed, err: %v\n", err)
return
}
// kvtableTestABI 解析返回值
ret := big.NewInt(0)
err = kvtableTestABI.Unpack(&ret, "set", common.FromHex(receipt.Output))
if err != nil {
fmt.Printf("parse return value failed, err: %v\n", err)
return
}

fmt.Printf("seted lines: %v\n", ret.String())
fmt.Printf("seted lines: %v\n", ret.String())
}

```

#### 调用合约get接口
Expand All @@ -405,47 +412,48 @@ func main() {
package main

import (
"fmt"
"log"
"fmt"
"log"

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

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

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

// load the contract
contractAddress := common.HexToAddress("contract address in hex") // 0x481D3A1dcD72cD618Ea768b3FbF69D78B46995b0
instance, err := kvtable.NewKVTableTest(contractAddress, client)
if err != nil {
log.Fatal(err)
}
// load the contract
contractAddress := common.HexToAddress(contract address in hex string) // deploy contract to get address
instance, err := kvtable.NewKVTableTest(contractAddress, client)
if err != nil {
log.Fatal(err)
}

kvtabletestSession := &kvtable.KVTableTestSession{Contract: instance, CallOpts: *client.GetCallOpts(), TransactOpts: *client.GetTransactOpts()}
kvtabletestSession := &kvtable.KVTableTestSession{Contract: instance, CallOpts: *client.GetCallOpts(), TransactOpts: *client.GetTransactOpts()}

id := "100010001001"
id := "100010001001"

bool, item_price, item_name, err := kvtabletestSession.Get(id) // call get API
if err != nil {
log.Fatal(err)
}
if !bool {
log.Fatalf("id:%v is not found \n", id)
}
fmt.Printf("id: %v, item_price: %v, item_name: %v \n", id, item_price, item_name)
bool, item_price, item_name, err := kvtabletestSession.Get(id) // call get API
if err != nil {
log.Fatal(err)
}
if !bool {
log.Fatalf("id:%v is not found \n", id)
}
fmt.Printf("id: %v, item_price: %v, item_name: %v \n", id, item_price, item_name)
}

```

## 国密样例
Expand Down

0 comments on commit 86b7528

Please sign in to comment.