当前位置:   article > 正文

FISCO BCOS 2.9.1 从0部署到简单使用的CRUD接口_fisco-bcos2.9.1

fisco-bcos2.9.1

FISCO BCOS 2.9.1 从0部署到简单使用CRUD接口

前言

具体请参考官方文档

1. 部署fisoc bcos 2.9.1环境

1.1 安装centos依赖

sudo yum install -y openssl openssl-devel
  • 1

1.2 创建fisco目录和脚本

使用gittee下载较快

curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v2.9.1/build_chain.sh && chmod u+x build_chain.sh
  • 1

1.3 搭建节点并启动fisco链

bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545
  • 1

启动fisco节点

bash nodes/127.0.0.1/start_all.sh
  • 1

1.4 检查进程是否启动

ps -ef | grep -v grep | grep fisco-bcos
  • 1

1.5 检查日志输出

tail -f nodes/127.0.0.1/node0/log/log*  | grep connected
  • 1
tail -f nodes/127.0.0.1/node0/log/log*  | grep +++
  • 1

2 配置使用控制台

2.1 安装依赖

  • java安装
sudo yum install -y java java-devel
  • 1
  • 简单数据安装
cd ~/fisco && curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master-2.0/tools/download_console.sh && bash download_console.sh
  • 1

2.2 启动并使用控制台

  • 启动
cd ~/fisco/console && bash start.sh
  • 1

输出以下结果代表成功:

=============================================================================================
Welcome to FISCO BCOS console(2.6.0)!
Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console.
 ________  ______   ______    ______    ______         _______    ______    ______    ______
|        \|      \ /      \  /      \  /      \       |       \  /      \  /      \  /      \
| $$$$$$$$ \$$$$$$|  $$$$$$\|  $$$$$$\|  $$$$$$\      | $$$$$$$\|  $$$$$$\|  $$$$$$\|  $$$$$$\
| $$__      | $$  | $$___\$$| $$   \$$| $$  | $$      | $$__/ $$| $$   \$$| $$  | $$| $$___\$$
| $$  \     | $$   \$$    \ | $$      | $$  | $$      | $$    $$| $$      | $$  | $$ \$$    \
| $$$$$     | $$   _\$$$$$$\| $$   __ | $$  | $$      | $$$$$$$\| $$   __ | $$  | $$ _\$$$$$$\
| $$       _| $$_ |  \__| $$| $$__/  \| $$__/ $$      | $$__/ $$| $$__/  \| $$__/ $$|  \__| $$
| $$      |   $$ \ \$$    $$ \$$    $$ \$$    $$      | $$    $$ \$$    $$ \$$    $$ \$$    $$
 \$$       \$$$$$$  \$$$$$$   \$$$$$$   \$$$$$$        \$$$$$$$   \$$$$$$   \$$$$$$   \$$$$$$
=============================================================================================
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • deploy HelloWorld

​ 会返回如下三个值,后期会用到第二个contract address进行合约测试。

在这里插入图片描述

  • 简单调用sol函数

​ 使用call来进行调用合约,具体格式如下:

call sol合约名称(如HelloWorld) contract address 调用函数  输入数据
  • 1

​ 调用helloWorld的set示例:

call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 set "Hello, FISCO BCOS"
  • 1

​ 针对多个输入数据,只需要没输入一个数据再加一个空格继续输入即可,如:

call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 set "Hello, FISCO BCOS" “aa"
  • 1

3 创建idea java 项目

3.1 创建gradle或者maven项目

  • 首先创建项目,选择gardle或者maven都可以,目前推荐使用jdk14版本,jdk11版本目前有一些小问题,针对fisco bcos 2.9.1版本

在这里插入图片描述

  • 安装java sdk

由于改版的原因,不再使用文档中的compile,采用implementation 进行导入

implementation ('org.fisco-bcos.java-sdk:fisco-bcos-java-sdk:2.9.1')
  • 1

对于maven项目,在pom导入依赖刷新

<dependency>
    <groupId>org.fisco-bcos.java-sdk</groupId>
    <artifactId>fisco-bcos-java-sdk</artifactId>
    <version>2.9.1</version>
</dependency>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.2 配置证书

  • 打开服务器,跳转到 /root/fisco/console路径下,复制 conf证书文件夹,存放到idea中。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 编译合约 生成abi bin 和java

  • 首先回到console文件夹,使用sol2java.sh脚本进行编译
cd ~/fisco/console
  • 1
  • -p指生成的最终Java文件位置(在sdk中)
  • -s指编译合约名

我们所有的合约最终都需要存放在/root/fisco/console/contracts/solidity文件下,然后再进行编译。

编译所有sol文件如下:

bash sol2java.sh -p org
  • 1

编译指定sol文件如下:

bash sol2java.sh -p org -s HelloWorld.sol
  • 1

编译完成后可以进入sdk文件夹中,找到这三个文件夹:

在这里插入图片描述

如果是初始环境的话,这一步可能会出现如下的问题,导致java文件夹一直生成不出来:

tar (child): bzip2: Cannot exec: No such file or directory
  • 1

原因是部分压缩包无法解压,下载对应压缩包即可

yum -y install bzip2
  • 1

将jave文件夹放入 main中的java文件夹下:

在这里插入图片描述

3.4 idea配置

将生成的abi,bin文件放入main文件的resources中,并将conf中的config-example文件放入resources中,并创建log4j.propertise。

在这里插入图片描述

log4j.propertise文件内容如下:

#
# Copyright 2014-2020  [fisco-dev]
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
# in compliance with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License
# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
# or implied. See the License for the specific language governing permissions and limitations under
# the License.
#
#

### set log levels ###
log4j.rootLogger=DEBUG, file

### output the log information to the file ###
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern='_'yyyyMMddHH'.log'
log4j.appender.file.File=./log/console.log
log4j.appender.file.Append=true
log4j.appender.file.filter.traceFilter=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C{1}.%M(%L) | %m%n

###output the log information to the console ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C{1}.%M(%L) | %m%n
  • 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

修改example.toml的内容,将peers中的地址改为服务器地址:

在这里插入图片描述

完成后对项目进行构建,没什么问题表示基本配置已经完成,接下来则是写代码进行调用合约了。

4 合约调用table

4.1 初始化sdk

在java目录下创建一个java项目,或者在test下创建测试也可以。

项目创建完成后,在class类里创建全局变量:

public final String configFile = School_fisco.class.getClassLoader().getResource("config-example.toml").getPath();
// 初始化BcosSDK
BcosSDK sdk =  BcosSDK.build(configFile);
// 为群组1初始化client
Client client = sdk.getClient(Integer.valueOf(1));
CryptoKeyPair cryptoKeyPair = client.getCryptoSuite().getCryptoKeyPair();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4.2 简单的查询和添加,其他函数调用类似

以tabletest为例,进行简单调用

  • 对于select,首先打开TableTest.java,搜索select,发现只有如下的函数:

在这里插入图片描述

所以针对上述函数,首先读取表格,然后调用函数select搜索得到数据,转为相应的输出数据即可,具体代码如下:

//查询tabletest的表格
public  ArrayList<List<String>> selectTableT(String name){
    //读取调用表
    TableTest tableTest = null;
    Tuple3<List<String>, List<BigInteger>, List<String>> strs =null;
    try {
        tableTest= TableTest.deploy(client, cryptoKeyPair);
        strs = tableTest.select(name);
    } catch (ContractException e) {
        e.printStackTrace();
    }
    ArrayList<List<String>> list=new ArrayList<List<String>>();
    int len = strs.getValue1().size();
    for(int i=0;i<len;i++){
        List<String> list_str= new ArrayList<>();
        list_str.add(strs.getValue1().get(i));
        list_str.add(String.valueOf(strs.getValue2().get(i)));
        list_str.add(strs.getValue3().get(i));
    }
    return list;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 对于insert,update和remove都类似,返回是一个BigInteger数据,查询java文件后,可以看到我们需要调用的函数有两个:

在这里插入图片描述
在这里插入图片描述

具体函数和上述代码类似,只是需要将select修改为insert和对应的数据,然后通过得到的返回值调用output函数,判断调用是否成功以及错误代码。

具体代码如下:

//添加数据
public BigInteger insertTable(String name, BigInteger item_id,String item_name){
    //读取调用school表
    TableTest tableTest =null;
    try {
        tableTest= TableTest.deploy(client, cryptoKeyPair);
    } catch (ContractException e) {
        e.printStackTrace();
    }
    TransactionReceipt tran= tableTest.insert(name,item_id,item_name);
    Tuple1<BigInteger> big = tableTest.getInsertOutput(tran);
    return  big.getValue1();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

5. 小结

至此,基本上的简单CRUD进行fisco bcos 合约开发就完成了,目前只是完成了示例,之后我会在对自己创建新的sol合约下进行介绍,主要包括使用CRUD合约中可能出现的问题,对于java调用这方面按照上述介绍,增删改查只需要改改代码即可。

做为刚刚入门学习fisco bcos的萌新,对于fisco bcos还有很多不了解的地方,如果以上文档有不合理的地方,请指正。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号