3. 【实验】补全一个区块链应用
2013 年 3 月 15 日
说明:
基于 FISCO BCOS 官方制定的 Asset 应用例子制定实操实验。
例子:
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/tutorial/sdk_application.html
提供的需补全的例子:
https://gitee.com/leeduckgo/asset-example-lacked-sth/
完成步骤:
1)下载代码
git clone https://gitee.com/leeduckgo/asset-example-lacked-sth.git
2)补全合约
补全 Asset.sol
中的 TODO 部分。
3)在 FISCO BCOS 的 contract
文件夹中创建 asset
文件夹
3)通过控制台工具将合约转换为 .java
./sol2java.sh org.fisco.bcos.asset.contract contracts/solidity/asset
4)将生成的包含 java
文件的 contract
目录拷贝到 asset-app
中的相应位置
将
console/contracts/sdk/java/org/fisco/bcos/asset/contract
拷贝到
|-- build.gradle // gradle配置文件 |-- gradle | |-- wrapper | |-- gradle-wrapper.jar // 用于下载Gradle的相关代码实现 | |-- gradle-wrapper.properties // wrapper所使用的配置信息,比如gradle的版本等信息 |-- gradlew // Linux或者Unix下用于执行wrapper命令的Shell脚本 |-- gradlew.bat // Windows下用于执行wrapper命令的批处理脚本 |-- src | |-- main | | |-- java | | |-- org | | |-- fisco | | |-- bcos | | |-- asset | | |-- client // 放置客户端调用类 | | |-- AssetClient.java | | |-- 【拷贝到此处】 | | | |-- test | |-- resources // 存放代码资源文件 | |-- applicationContext.xml // 项目配置文件 | |-- contract.properties // 存储部署合约地址的文件 | |-- log4j.properties // 日志配置文件 | |-- contract //存放solidity约文件 | |-- Asset.sol | |-- Table.sol | |-- tool |-- asset_run.sh // 项目运行脚本
5)创建放置证书的文件夹
mkdir -p asset-app/src/main/resources/conf
6)将节点证书拷贝到resources路径
cp -r nodes/127.0.0.1/sdk/* asset-app/src/main/resources/conf
7)编译项目
可以通过 gradle
或 gradlew
两种方式。
gradle方式:
gradle build
gradlew方式:
./gradlew build
8)运行!
进入 dist
目录:
cd dist
运行:
- 部署
Asset.sol
合约
# 确保脚本权限 $ chmod u+x *.sh $ bash asset_run.sh deploy Deploy Asset successfully, contract address is 0xd09ad04220e40bb8666e885730c8c460091a4775
- 注册资产
$ bash asset_run.sh register Alice 100000 Register account successfully => account: Alice, value: 100000 $ bash asset_run.sh register Bob 100000 Register account successfully => account: Bob, value: 100000
- 查询资产
$ bash asset_run.sh query Alice account Alice, value 100000 $ bash asset_run.sh query Bob account Bob, value 100000
- 资产转移
$ bash asset_run.sh transfer Alice Bob 50000 Transfer successfully => from_account: Alice, to_account: Bob, amount: 50000 $ bash asset_run.sh query Alice account Alice, value 50000 $ bash asset_run.sh query Bob account Bob, value 150000