通过Java Chaincode实例学习交易系统中基于Hyperledger Fabric帐户的钱包模型

本文通过Java Chaincode实例,详述了如何在Hyperledger Fabric上构建基于帐户的钱包模型,包括钱包创建、查询和转账功能。教程涵盖了从项目设置、需求分析到Chaincode编写,以及在BYFN网络中运行和测试Chaincode的全过程。
摘要由CSDN通过智能技术生成

通过Java Chaincode实例学习交易系统中基于Hyperledger Fabric帐户的钱包模型

这是Hyperledger Fabric Java Chaincode的教程。还有Go和NodeJS Chaincodes,我们将来可能会讨论它们。此外,我采用基于帐户的钱包模型作为示例,我们将使用Hyperledger Fabric构建你的第一个网络(BYFN,build your first network),作为我们的测试环境(v1.4网络)。

如果你不知道如何启动BYFN网络,我也会提供步骤,不用担心。但是如果你想了解BYFN是如何工作的,你可以参考:

基于帐户的钱包模型

基于帐户的钱包模型是交易系统的实现之一,一般而言系统中存在一些钱包,并且每个钱包包含可用于转账的一些值或代币。当然,实现的细节有很多变化,例如代币交换和多代币功能。

特征

在Java Chaincode中,我们将实现:

  • 1.用户钱包创建。
  • 2.用户钱包查询。
  • 3.钱包代币转账(即从一个钱包发送钱或代币到另一个钱包)。
  • [可选] Hyperledger Fabric中有两个数据库选项用于保存超级账本的world state:LevelDB和CouchDB,在本教程中,为了简单起见,我将使用LevelDB。
  • [可选]在上面,world state(或全局状态)不是超级账本本身,而是与超级账本分开,虽然它是派生的,可以随时从超级账本中恢复。此外,世界状态存储在数据库中以表示超级账本,使得这些节点不需要总是搜索超级账本以进行数据检索,并且可以更快地从数据库中检索数据(状态)。
  • [可选]在我的负载测试和一些关于Hyperledger Fabric性能的论文中,LevelDB的性能优于CouchDB。但与LevelDB中的简单键值查询相比,CouchDB可以支持可用于构建更复杂查询的丰富查询。

IDE——Java Chaincode开发工具

我们使用IntelliJ IDEA。此外,你需要JDK。请安装它们。

当然,如果你有自己的Java IDE,也可以使用它。但在本教程中,我们使用IntelliJ。

第1步,准备开发

让我们打开IntelliJ。

在IntelliJ中创建新项目Create New Project

选择左边的Gradle,然后:

输入你的GroupIdArtifactId。就我而言,我使用java_account_model_cc。接下来:

然后现在,你应该配置自己的项目位置。就我而言,我使用/Desktop/java_account_model_cc。单击完成Finish

1.1 settings.gradle

在左侧的项目文件中,你应该看到settings.gradle。让我们双击打开它:

输入以下内容:

rootProject.name = 'fabric-chaincode-gradle'
1.2 build.gradle

在左侧的项目文件面板中,可以看到build.gradle。让我们双击打开它:

然后,输入以下内容:

plugins {
    id 'com.github.johnrengelman.shadow' version '2.0.3'
    id 'java'
}

group 'org.hyperledger.fabric-chaincode-java'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile group: 'org.hyperledger.fabric-chaincode-java', name: 'fabric-chaincode-shim', version: '1.+'
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.6'
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

shadowJar {
    baseName = 'chaincode'
    version = null
    classifier = null

    manifest {
        attributes 'Main-Class': 'org.hyperledger.fabric.chaincode.AccountBasedChaincode'
    }
}

如果IntelliJ右下角有一个需要导入的Gradle项目Gradle project needs to be imported的弹出窗口,请选择导入更改Import Changes

1.3 Chaincode文件

在左侧的项目文件面板中,在src>main>java下,右键单击它并选择New>Java Class

在Name字段中输入org.hyperledger.fabric.chaincode.AccountBasedChaincode

然后,应该看到以下内容:

上面的AccountBasedChaincode(.java)是我们在Java中编写Chaincode的地方。

第2步——需求分析

在我们开始编码之前,让我们组织我们需要编码的内容。

特性部分所述,在Java Chaincode中,我们将实现:

  • 1.用户钱包创建
  • 2.用户钱包查询
  • 3.钱包代币转账(即从一个钱包向另一个钱包汇款)

从上面这个简单的要求࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值