初始化应用¶
运行环境准备¶
1. 安装环境¶
安装Java:JDK 14 (JDK1.8 至JDK 14都支持)
IDE:IntelliJ IDE.
进入IntelliJ IDE官网,下载并安装社区版IntelliJ IDE
2. 搭建一条FISCO BCOS链¶
请参考FISCO BCOS安装搭建。
3. 下载源码¶
git clone https://github.com/WeBankBlockchain/OpenLedger
创建项目¶
1.创建一个Gradle应用¶
编译包地址:deploy/openledger-core-1.0.0-all.jar
项目目录结构:
demo
│ build.gradle
│ settings.gradle
│
└─lib
└─openledger-core-1.0.0-all.jar
│
└─src
└─main
├─java
│
└─resources
│ application.properties
│ sdk.toml
│
└─conf
2.引入区块链分布式账本Service¶
打开build.gradle
,在dependencies
添加lib依赖。
示例:
dependencies {
// 添加本地lib依赖
compile fileTree(dir:'lib',includes:['*jar'])
}
基础配置文件说明¶
区块链分布式账本Service主要包含一下配置项:
- 证书配置(必须)
- 区块链节点连接配置(必须)
- 区块链交易账户配置(必须)
1.证书配置¶
2.拷贝证书¶
从节点nodes/${ip}/Service/
目录下的证书拷贝到conf
目录。
3.修改项目配置文件¶
修改application.properties
文件中blockchain.txKey
为conf
目录下的账户私钥文件
示例:
blockchain.txKey=0x11a070299af8ec007927188f91d40759d1a7c525.pem
项目初始化¶
项目初始化主要初始化账户管理、授权管理、授权中心、资产管理以及项目合约,基于以上合约实现区块链应用的项目管理、账户管理、权限管理、资产管理的功能。
jar包初始化方式¶
- 1.在
openledger-core-1.0.0-all.jar
同级目录准备基础配置文件
| openledger-core-1.0.0-all.jar
│ application.properties
| sdk.toml
|
└─conf
请参考基础配置文件说明
- 2.在
openledger-core-1.0.0-all.jar
所在目录执行一下命令初始化:
java -jar openledger-core-1.0.0-all.jar
3.记录控制台执行结果
执行成功后,控制台将输出初始化部署的相关合约地址,如:
INFO [16460-1 main] [InitApplication.java:27 main] String projectAddr = "0x4633b054c47ff682b7877f326145a5d150f99f10"; String accountManagerAddr = "0x4910d2ada3ad689ca041e0f196a56b35ac84bbb3"; String authManagerAddr = "0x25589e4ffd6780af7d461c74068e18eaefd398ab"; String authCenterAddr = "0xdf7cd28f31cdfbc0baba1558e8ebd288b2bccc99"; String assetManagerAddr = "0x44a0241585d77a19b21f7bf0aa3b9075c85be63b";
代码调用初始化方式¶
调用示例:
// 合约地址
String projectAddr = null;
// 区块链配置管理对象
BlockChain blockchain = new Blockchain("application.properties");
// 加载projectService
ProjectService<Project> projectService= new ProjectService(blockchain, projectAddr);
// 调用项目初始化接口
ResponseData<List<String>> rsp = this.projectService.createProject();
// 获取返回合约地址列表
log.info("create project:{}", rsp.getResult());
log.info("\r\n String projectAddr = \"{}\"; \r\n " +
"String accountManagerAddr = \"{}\"; \r\n " +
"String authManagerAddr = \"{}\"; \r\n " +
"String authCenterAddr = \"{}\"; \r\n " +
"String assetManagerAddr = \"{}\";",
rsp.getResult().get(0),
rsp.getResult().get(1),
rsp.getResult().get(2),
rsp.getResult().get(3),
rsp.getResult().get(4));
返回值说明¶
加载Service¶
1.加载项目Service:ProjectService
调用示例:
// project合约地址
String projectAddr = "0x9d4c7a1737bb023d77e7652b27401a6e920a9039";
Blockchain blockchain = new Blockchain("application.properties");
ProjectService<Project> projectService= new ProjectService(blockchain, projectAddr);
2.加载授权Service:AuthCenterService
调用示例:
// authCenter合约地址
String contractAddr = "0x9d4c7a1737bb023d77e7652b27401a6e920a9039";
Blockchain blockchain = new Blockchain("application.properties");
AuthCenterService<AuthCenter> authCenterService= new ProjectService(blockchain, contractAddr);
3.加载组织Service:OrganzationService
调用示例:
// Organization合约地址,创建组织后获取
String contractAddr = "0x9d4c7a1737bb023d77e7652b27401a6e920a9039";
Blockchain blockchain = new Blockchain("application.properties");
OrganizationService<Organization> orgService = new OrganizationService(blockchain, contractAddr);
4.加载同质化资产Service:FungibleAssetService
调用示例:
// 资产合约地址 通过组织createAssetWithSign接口创建
String contractAddress="0x7a3bc024c1127cae3c108f1e2bc49e51b067cc57";
// 加载区块链信息
Blockchain blockchain = new Blockchain("application.properties");
// 加载FungibleAssetService
FungibleAssetService fungibleAssetService = new FungibleAssetService(blockchain, contractAddress);
5.加载非同质化资产Service:NonFungibleAssetService
调用示例:
// 资产合约地址 通过组织createAssetWithSign接口创建
String contractAddress="0x7a3bc024c1127cae3c108f1e2bc49e51b067cc57";
// 加载区块链信息
Blockchain blockchain = new Blockchain("application.properties");
// 加载NonFungibleAssetService
NonFungibleAssetService nonFungibleAssetService = new NonFungibleAssetService(blockchain, contractAddress);
6.加载账期Service:TermService
调用示例:
// 账期合约地址 通过projectService.getProject().getTerm()获取
String contractAddress="0x7a3bc024c1127cae3c108f1e2bc49e51b067cc57";
// 加载区块链信息
Blockchain blockchain = new Blockchain("application.properties");
// 加载termService
TermService termService = new TermService(blockchain, contractAddress);
7.加载资产池Service:AssetPoolService
调用示例:
// 通过调用AssetPoolService.createAssetPool() 获取
String contractAddress="0x7a3bc024c1127cae3c108f1e2bc49e51b067cc57";
// 加载区块链信息
Blockchain blockchain = new Blockchain("application.properties");
// 加载AssetPoolService
AssetPoolService assetPoolService = new AssetPoolService(blockchain, contractAddress);