基于FISCO构建第一个区块链应用——简易的资产管理的开发

学习资源来自于官方文档:
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/tutorial/sdk_application.html。
有也在学习FISCO框架的欢迎一起交流学习

通过这个应用我们可以学习到

1如何将一个业务场景的逻辑用合约的形式表达

我们首先分析我们的业务需求
按照业务的设计目标,需要实现资产注册,转账,查询功能,对应功能的接口如下:
我们把account用户的账户作为唯一主键。

// 查询资产金额
function select(string account) public constant returns(int256, uint256)
// 资产注册
function register(string account, uint256 amount) public returns(int256)
// 资产转移
function transfer(string from_asset_account, string to_asset_account, uint256 amount) public returns(int256)

完整源码参照官方文档。需要注意的是Asset.sol合约的实现需要引入FISCO BCOS提供的一个系统合约接口文件 Table.sol ,该系统合约文件中的接口由FISCO BCOS底层实现。当业务合约需要操作CRUD接口时,均需要引入该接口合约文件。关于Table.sol我们最后会再介绍一下。

2如何将Solidity合约转化成Java类

我们根据业务需求设计了合约Asset.sol的存储与接口,给出了完整实现,但是Java程序无法直接调用Solidity合约,需要先将Solidity合约文件编译为Java文件。

控制台提供了编译工具,可以将Asset.sol合约文件存放在console/contracts/solidity目录。利用console目录下提供的sol2java.sh脚本进行编译,操作如下

# 切换到fisco/console/目录
cd ~/fisco/console/
# 编译合约,后面指定一个Java的包名参数,可以根据实际项目路径指定包名
./sol2java.sh org.fisco.bcos.asset.contract

运行成功之后,将会在console/contracts/sdk目录生成java、abi和bin目录

3如何配置Web3SDK

项目引入Web3SDK
项目的build.gradle文件已引入Web3SDK,不需修改。其引入方法介绍如下:
Web3SDK引入了以太坊的solidity编译器相关jar包,因此在build.gradle文件需要添加以太坊的远程仓库:

repositories {
    maven {
        url "http://maven.aliyun.com/nexus/content/groups/public/"
    }
    maven { url "https://dl.bintray.com/ethereum/maven/" }
    mavenCentral()
}

拷贝区块链节点对应的SDK证书。节点证书看上一节博客FISCO基础篇

# 进入~目录
# 拷贝节点证书到项目的资源目录
$ cd ~
$ cp fisco/nodes/127.0.0.1/sdk/* asset-app/src/test/resources/

4如何构建一个应用,并集成Web3SDK到应用工程

引入Web3SDK jar包

compile ('org.fisco-bcos:web3sdk:2.5.0')

5.关于Table.sol

更具体内容参照官方文档

Table合约声明于Table.sol,该接口是数据库合约,可以创建表,并对表进行增删改查操作。

为实现AMDB创建的表可被多个合约共享访问,其表名是群组内全局可见且唯一的,所以无法在同一条链上的同一个群组中,创建多个表名相同的表。
Table的CRUD接口一个key下可以有多条记录,使用时会进行数据批量操作,包括批量写入和范围查询。对应此特性,推荐使用关系型数据库MySQL作为后端数据库。
使用KVTtable的get/set接口时,推荐使用RocksDB作为后端数据库,因RocksDB是Key-Value存储的非关系型数据库,使用KVTable接口时单key操作效率更高。

完整流程

官方有给我们提供完整源码:具体实现过程如下
1.获取java工程项目

 # 获取Java工程项目压缩包
cd ~
curl -#LO https://github.com/FISCO-BCOS/LargeFiles/raw/master/tools/asset-app.tar.gz
    # 解压得到Java工程项目asset-app目录
tar -zxf asset-app.tar.gz

2.编译运行

# 切换到项目目录
cd ~/asset-app
# 编译项目
./gradlew build

3.部署Asset.sol合约

# 进入dist目录
cd dist
bash asset_run.sh deploy

部署成功后会返回Deploy Asset successfully, contract address is 合约地址
在这里插入图片描述
4调用合约方法——注册资产,查询资产,转移资产
注册资产

bash asset_run.sh register Alice 100000
bash asset_run.sh register Bob 100000

查询资产

bash asset_run.sh query Alice

转移资产
bash asset_run.sh transfer Alice Bob 50000
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值