赞
踩
具体请参考官方文档
sudo yum install -y openssl openssl-devel
使用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
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545
启动fisco节点
bash nodes/127.0.0.1/start_all.sh
ps -ef | grep -v grep | grep fisco-bcos
tail -f nodes/127.0.0.1/node0/log/log* | grep connected
tail -f nodes/127.0.0.1/node0/log/log* | grep +++
sudo yum install -y java java-devel
cd ~/fisco && curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master-2.0/tools/download_console.sh && bash download_console.sh
cd ~/fisco/console && bash start.sh
输出以下结果代表成功:
=============================================================================================
Welcome to FISCO BCOS console(2.6.0)!
Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console.
________ ______ ______ ______ ______ _______ ______ ______ ______
| \| \ / \ / \ / \ | \ / \ / \ / \
| $$$$$$$$ \$$$$$$| $$$$$$\| $$$$$$\| $$$$$$\ | $$$$$$$\| $$$$$$\| $$$$$$\| $$$$$$\
| $$__ | $$ | $$___\$$| $$ \$$| $$ | $$ | $$__/ $$| $$ \$$| $$ | $$| $$___\$$
| $$ \ | $$ \$$ \ | $$ | $$ | $$ | $$ $$| $$ | $$ | $$ \$$ \
| $$$$$ | $$ _\$$$$$$\| $$ __ | $$ | $$ | $$$$$$$\| $$ __ | $$ | $$ _\$$$$$$\
| $$ _| $$_ | \__| $$| $$__/ \| $$__/ $$ | $$__/ $$| $$__/ \| $$__/ $$| \__| $$
| $$ | $$ \ \$$ $$ \$$ $$ \$$ $$ | $$ $$ \$$ $$ \$$ $$ \$$ $$
\$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$
=============================================================================================
会返回如下三个值,后期会用到第二个contract address进行合约测试。
使用call来进行调用合约,具体格式如下:
call sol合约名称(如HelloWorld) contract address 调用函数 输入数据
调用helloWorld的set示例:
call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 set "Hello, FISCO BCOS"
针对多个输入数据,只需要没输入一个数据再加一个空格继续输入即可,如:
call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 set "Hello, FISCO BCOS" “aa"
由于改版的原因,不再使用文档中的compile,采用implementation 进行导入
implementation ('org.fisco-bcos.java-sdk:fisco-bcos-java-sdk:2.9.1')
对于maven项目,在pom导入依赖刷新
<dependency>
<groupId>org.fisco-bcos.java-sdk</groupId>
<artifactId>fisco-bcos-java-sdk</artifactId>
<version>2.9.1</version>
</dependency>
cd ~/fisco/console
我们所有的合约最终都需要存放在/root/fisco/console/contracts/solidity文件下,然后再进行编译。
编译所有sol文件如下:
bash sol2java.sh -p org
编译指定sol文件如下:
bash sol2java.sh -p org -s HelloWorld.sol
编译完成后可以进入sdk文件夹中,找到这三个文件夹:
如果是初始环境的话,这一步可能会出现如下的问题,导致java文件夹一直生成不出来:
tar (child): bzip2: Cannot exec: No such file or directory
原因是部分压缩包无法解压,下载对应压缩包即可
yum -y install bzip2
将jave文件夹放入 main中的java文件夹下:
将生成的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
修改example.toml的内容,将peers中的地址改为服务器地址:
完成后对项目进行构建,没什么问题表示基本配置已经完成,接下来则是写代码进行调用合约了。
在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();
以tabletest为例,进行简单调用
所以针对上述函数,首先读取表格,然后调用函数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; }
具体函数和上述代码类似,只是需要将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();
}
至此,基本上的简单CRUD进行fisco bcos 合约开发就完成了,目前只是完成了示例,之后我会在对自己创建新的sol合约下进行介绍,主要包括使用CRUD合约中可能出现的问题,对于java调用这方面按照上述介绍,增删改查只需要改改代码即可。
做为刚刚入门学习fisco bcos的萌新,对于fisco bcos还有很多不了解的地方,如果以上文档有不合理的地方,请指正。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。