基于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
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41569591/article/details/109696426