fisco Java-sdk 快速入门案例

1.安装环境(Ubantu)

Linux IDEA下载: https://blog.csdn.net/JOJO_jiongjiong/article/details/123087307

Linux Maven下载: https://zhuanlan.zhihu.com/p/443389963

最好在setting.xml 把maven本地仓库也改一下。

Linux java( 8-14都可以)下载:https://blog.csdn.net/baoqiaoben/article/details/78936955

2.搭建区块链

单机4节点区块链网络搭建: https://blog.csdn.net/Qhx20040819/article/details/131909957

 3.开发智能合约应用

1. 使用 IDEA 创建一个Maven应用

2.引入 fisco java sdk

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

3. 配置SDK证书

将节点的sdk证书拷贝到resources目录下面。

# 假设SDK证书位于~/fisco/nodes/127.0.0.1/sdk/目录
mkdir -p conf && cp -r ~/fisco/nodes/127.0.0.1/sdk/* conf

4. 将合约生成对应的java 文件

我们用拉取fisco 的控制台里默认带的HelloWorld合约来演示。

在 console/目录下

若控制台版本大于等于2.8.0:

# 使用sol2java.sh将contracts/solidity下的所有合约编译产生bin,abi,java工具类。
# 当前目录~/fisco/console
$ bash sol2java.sh -p org.com.fisco
# 以上命令中参数“org.com.fisco”是指定产生的java类所属的包名。
# 通过命令./sol2java.sh -h可查看该脚本使用方法

若控制台版本小于2.8.0:

# 使用sol2java.sh将contracts/solidity下的所有合约编译产生bin,abi,java工具类。
# 当前目录~/fisco/console
$ bash sol2java.sh org.com.fisco
# 以上命令中参数“org.com.fisco”是指定产生的java类所属的包名。
# ./sol2java.sh [packageName] [solidityFilePath] [javaCodeOutputDir]

查看编译结果

$ ls contracts/sdk/java/org/com/fisco 
# 得到返回
# HelloWorld.java		KVTableTest.java	ShaTest.java		Table.java		TableTest.java

将该java 文件移动到你的java项目里。

PS :注意,生成java文件包名要跟你项目里对应的包名要一致。

5. 创建配置文件

PS :我直接从文档粘贴的,详情请见:配置说明 — FISCO BCOS v2 v2.9.0 文档

[cryptoMaterial]certPath = "conf"                           # The certification path# The following configurations take the certPath by default if commented
# caCert = "conf/ca.crt"                    # CA cert file path# If connect to the GM node, default CA cert path is ${certPath}/gm/gmca.crt# sslCert = "conf/sdk.crt"                  # SSL cert file path# If connect to the GM node, the default SDK cert path is ${certPath}/gm/gmsdk.crt# sslKey = "conf/sdk.key"                   # SSL key file path# If connect to the GM node, the default SDK privateKey path is ${certPath}/gm/gmsdk.key# enSslCert = "conf/gm/gmensdk.crt"         # GM encryption cert file path# default load the GM SSL encryption cert from ${certPath}/gm/gmensdk.crt# enSslKey = "conf/gm/gmensdk.key"          # GM ssl cert file path# default load the GM SSL encryption privateKey from ${certPath}/gm/gmensdk.key[network]
peers=["127.0.0.1:20200", "127.0.0.1:20201"]    # The peer list to connect# AMOP configuration
# You can use following two methods to configure as a private topic message sender or subscriber.
# Usually, the public key and private key is generated by subscriber.
# Message sender receive public key from topic subscriber then make configuration.
# But, please do not config as both the message sender and the subscriber of one private topic, or you may send the message to yourself.# Configure a private topic as a topic message sender.
# [[amop]]
# topicName = "PrivateTopic"
# publicKeys = [ "conf/amop/consumer_public_key_1.pem" ]    # Public keys of the nodes that you want to send AMOP message of this topic to.# Configure a private topic as a topic subscriber.
# [[amop]]
# topicName = "PrivateTopic"
# privateKey = "conf/amop/consumer_private_key.p12"         # Your private key that used to subscriber verification.
# password = "123456"[account]
keyStoreDir = "account"         # The directory to load/store the account file, default is "account"
# accountFilePath = ""          # The account file path (default load from the path specified by the keyStoreDir)
accountFileFormat = "pem"       # The storage format of account file (Default is "pem", "p12" as an option)# accountAddress = ""           # The transactions sending account address# Default is a randomly generated account# The randomly generated account is stored in the path specified by the keyStoreDir# password = ""                 # The password used to load the account file[threadPool]
# channelProcessorThreadSize = "16"         # The size of the thread pool to process channel callback# Default is the number of cpu cores# receiptProcessorThreadSize = "16"         # The size of the thread pool to process transaction receipt notification# Default is the number of cpu coresmaxBlockingQueueSize = "102400"             # The max blocking queue size of the thread pool

将该配置文件也移动到conf同级目录。

 

6. 使用测试文件部署和调用智能合约

public class BcosSDKTest
{// 获取配置文件路径public final String configFile = BcosSDKTest.class.getClassLoader().getResource("config.toml").getPath();public  void testClient() throws ConfigException, ContractException {// 初始化BcosSDKBcosSDK sdk =  BcosSDK.build(configFile);// 为群组1初始化clientClient client = sdk.getClient(Integer.valueOf(1));// 获取群组1的块高BlockNumber blockNumber = client.getBlockNumber();// 向群组1部署HelloWorld合约CryptoKeyPair cryptoKeyPair = client.getCryptoSuite().getCryptoKeyPair();HelloWorld helloWorld = HelloWorld.deploy(client, cryptoKeyPair);// 调用HelloWorld合约的get接口String getValue = helloWorld.get();// 调用HelloWorld合约的set接口TransactionReceipt receipt = helloWorld.set("Hello, fisco");}public static void main(String[] args) throws ContractException, ConfigException {BcosSDKTest bcosSDKTest =  new BcosSDKTest();bcosSDKTest.testClient();}
}

 运行之后,控制台出现如此效果,代表成功:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/131729.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年9月Web3行业月度发展报告区块链篇 | 陀螺科技会员专享

9月是加密市场的活动月&#xff0c;斯坦福区块链周、Token2049等大型活动相继举办&#xff0c;后者更是创下超过1万人的历史最高纪录&#xff0c;成为了全球最大的Web3活动。在本次Token2049上&#xff0c;RWA、支付以及出入金成为了讨论度最多的活动。尽管活动如火如荼&#x…

新的“HTTP/2 Rapid Reset”0day攻击打破了DDoS记录

导语 最近&#xff0c;一种名为“HTTP/2 Rapid Reset”的DDoS&#xff08;分布式拒绝服务&#xff09;攻击技术成为了热门话题&#xff0c;该技术自8月份以来被积极利用作为零日漏洞&#xff0c;打破了以往的攻击记录。亚马逊网络服务&#xff08;Amazon Web Services&#xff…

如何调整 Kubernetes StatefulSet 卷的大小

Kubernetes StatefulSet用于在集群内部署有状态应用程序。StatefulSet 中的每个 Pod 都可以访问即使在重新调度后仍坚持使用的本地持久卷。这使得 Pod 能够维护与其集合中的邻居不同的单独状态。 不幸的是,这些卷有一个很大的限制:Kubernetes 没有提供从 StatefulSet 对象调整…

Netty深入浅出Java网络编程学习笔记(三) 优化篇

目录 五、优化 1、拓展序列化算法 序列化接口 枚举实现类 修改原编解码器 2、参数调优 CONNECT_TIMEOUT_MILLIS 使用 源码分析 SO_BACKLOG 三次握手与连接队列 作用 默认值 TCP_NODELAY SO_SNDBUF & SO_RCVBUF ALLOCATOR 使用 ByteBufAllocator类型 RCVBUF_ALLOCATOR 3、RP…

【UE5 Cesium】17-Cesium for Unreal 建立飞行跟踪器(2)

目录 效果 步骤 一、飞机沿航线飞行 二、通过切换相机实现在不同角度观察飞机飞行 效果 步骤 一、飞机沿航线飞行 先去模型网站下载一个波音737飞机模型 然后将下载好的模型导入到UE项目中&#xff0c;导入时需要勾选“合并网格体”&#xff08;导入前最好在建模软件中将…

Java架构师系统架构设计性能评估

目录 1 导论2 架构评估基础系统性能衡量的基本指标2.1 系统性能的指标2.2 数据库指标2.3 并发用户数2.4 网络延迟2.4 系统吞吐量2.5 资源性能指标3 架构评估基础服务端性能测试3.1基准测试3.2 负载测试3.3 压力测试3.4 疲劳强度测试3.5 容量测试1 导论 本章的主要内容是掌握架构…

机器学习网络模型绘图模板

一 前言 本期为读者推荐一款名为ML Visuals的机器学习画图PPT模板&#xff0c;ML Visuals 专为解决神经网络画图问题设计&#xff0c;通过提供免费的专业的、科学的和充分的视觉和图形来帮助机器学习社区改善科学传播。目前&#xff0c;ML Visuals 包含了超过100多个的自定义图…

Pytorch之SwinTransformer图像分类

文章目录 前言一、Swin Transformer1.Swin Transformer概览2.Patch Partition3.Patch Merging4.W-MSA5.SW-MSA(滑动窗口多头注意力机制)6.Relative Position bias(相对位置偏移)7.网络结构&#x1f947;Swin Transformer Block&#x1f948;Architecture 二、网络实现1.构建Eff…

opencv图像卷积操作原理,opencv中常用的图像滤波函数

文章目录 opencv图像卷积操作原理&#xff0c;opencv中常用的图像滤波函数一、图像卷积操作原理&#xff1a;1、卷积操作原理图&#xff1a; 二、opencv常用的图像滤波函数&#xff1a;这些函数的主要作用是对图像进行平滑处理或去除噪声(核心目的是减少图像中的噪声&#xff0…

ChatGPT私有数据结合有什么效果?它难吗?

ChatGPT的出现可谓是惊艳了全世界&#xff0c;ChatGPT的问答能力通过了图灵测试&#xff0c;使其回答问题的方式与人类几乎无法区分。大家不甘于只在官方的对话页面问答&#xff0c;想利用 GPT 模型的自然语言能力结合私有数据开拓更多的应用场景。 | ChatGPT私有数据结合特点 …

Rust入门基础

文章目录 Rust相关介绍为什么要用Rust&#xff1f;Rust的用户和案例 开发环境准备安装Rust更新与卸载Rust开发工具 Hello World程序编写Rust程序编译与运行Rust程序 Cargo工具Cargo创建项目Cargo构建项目Cargo构建并运行项目Cargo检查项目Cargo为发布构建项目 Rust相关介绍 为…

【虹科干货】Redis Enterprise 自动分层技术:大数据集高性能解决方案

越来越多的应用程序依赖于庞大的数据集合&#xff0c;而这些应用程序必须快速响应。借助自动分层&#xff0c;Redis Enterprise 7.2 帮助开发人员轻松创建超快的应用程序。何乐而不为&#xff1f; Redis将数据存储在内存中&#xff0c;因此应用程序能以最快的速度检索和处理数…