![](https://github.com/FISCO-BCOS/FISCO-BCOS/raw/master/docs/images/FISCO_BCOS_Logo.svg?sanitize=true)
English / [中文](doc/README_CN.md)
# Spring Boot Starter
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![Build Status](https://travis-ci.org/FISCO-BCOS/spring-boot-starter.svg?branch=master)](https://travis-ci.org/FISCO-BCOS/spring-boot-starter)
[![CodeFactor](https://www.codefactor.io/repository/github/fisco-bcos/spring-boot-starter/badge)](https://www.codefactor.io/repository/github/fisco-bcos/spring-boot-starter)
---
The sample spring boot project is based on [Web3SDK](https://fisco-bcos-documentation.readthedocs.io/en/latest/docs/sdk/sdk.html), which provides the basic framework and basic test cases for blockchain application and helps developers to quickly develop applications based on the FISCO BCOS blockchain. **The version only supports** [FISCO BCOS 2.0+](https://fisco-bcos-documentation.readthedocs.io/en/latest/).
## Quickstart
### Precodition
Build FISCO BCOS blockchain, please check out [here](https://fisco-bcos-documentation.readthedocs.io/en/latest/docs/installation.html)。
### Download
```
$ git clone https://github.com/FISCO-BCOS/spring-boot-starter.git
```
#### Certificate Configuration
Copy the `ca.crt`, `sdk.crt`, and `sdk.key` files in the node's directory `nodes/${ip}/sdk` to the project's `src/main/resources` directory.(Before FISCO BCOS 2.1, the certificate files are `ca.crt`, `node.crt` and `node.key`)
### Settings
The `application.yml` of the spring boot project is shown below, and the commented content is modified according to the blockchain node configuration.
```yml
encrypt-type: # 0:standard, 1:guomi
encrypt-type: 0
group-channel-connections-config:
all-channel-connections:
- group-id: 1 # group ID
connections-str:
- 127.0.0.1:20200 # node listen_ip:channel_listen_port
- 127.0.0.1:20201
- group-id: 2
connections-str:
- 127.0.0.1:20202 # node listen_ip:channel_listen_port
- 127.0.0.1:20203
channel-service:
group-id: 1 # The specified group to which the SDK connects
agency-name: fisco # agency name
accounts:
pem-file: 0xcdcce60801c0a2e6bb534322c32ae528b9dec8d2.pem # PEM format account file
p12-file: 0x98333491efac02f8ce109b0c499074d47e7779a6.p12 # PKCS12 format account file
password: 123456 # PKCS12 format account password
```
A detail description of the SDK configuration for the project, please checkout [ here](https://fisco-bcos-documentation.readthedocs.io/en/latest/docs/sdk/sdk.html#sdk)。
### Run
Compile and run test cases:
```
$ cd spring-boot-starter
$ ./gradlew build
$ ./gradlew test
```
When all test cases run successfully, it means that the blockchain is running normally,and the project is connected to the blockchain through the SDK. You can develop your blockchain application based on the project。
**Note: If you run the demo project in IntelliJ IDEA or Eclipse, please use gradle wrapper mode. In addition, please enable `Annotation Processors` in `Settings` for IntelliJ IDEA.**
## Test Case Introduction
The sample project provides test cases for developers to use. The test cases are mainly divided into tests for [Web3j API](https://fisco-bcos-documentation.readthedocs.io/en/latest/docs/sdk/sdk.html#web3j-api), [Precompiled Serveice API](https://fisco-bcos-documentation.readthedocs.io/en/latest/docs/sdk/sdk.html#precompiled-service-api), Solidity contract file to Java contract file, deployment and call contract.
### Web3j API Test
Provide `Web3jApiTest` class to test the Web3j API. The sample test is as follows:
```java
@Test
public void getBlockNumber() throws IOException {
BigInteger blockNumber = web3j.getBlockNumber().send().getBlockNumber();
System.out.println(blockNumber);
assertTrue(blockNumber.compareTo(new BigInteger("0"))>= 0);
}
```
**Tips:** The `Application` class initializes the Web3j object, which can be used directly in the way where the business code needs it. The usage is as follows:
```
@Autowired
private Web3j web3j
```
### Precompiled Service API Test
Provide `PrecompiledServiceApiTest` class to test the Precompiled Service API。The sample test is as follows:
```java
@Test
public void testSystemConfigService() throws Exception {
SystemConfigSerivce systemConfigSerivce = new SystemConfigSerivce(web3j, credentials);
systemConfigSerivce.setValueByKey("tx_count_limit", "2000");
String value = web3j.getSystemConfigByKey("tx_count_limit").send().getSystemConfigByKey();
System.out.println(value);
assertTrue("2000".equals(value));
}
```
### Solidity contract file to Java contract file Test
Provide `SolidityFunctionWrapperGeneratorTest` class to test contract compilation. The sample test is as follows:
```java
@Test
public void compileSolFilesToJavaTest() throws IOException {
File solFileList = new File("src/test/resources/contract");
File[] solFiles = solFileList.listFiles();
for (File solFile : solFiles) {
SolidityCompiler.Result res = SolidityCompiler.compile(solFile, true, ABI, BIN, INTERFACE, METADATA);
System.out.println("Out: '" + res.output + "'");
System.out.println("Err: '" + res.errors + "'");
CompilationResult result = CompilationResult.parse(res.output);
System.out.println("contractname " + solFile.getName());
Path source = Paths.get(solFile.getPath());
String contractname = solFile.getName().split("\\.")[0];
CompilationResult.ContractMetadata a = result.getContract(solFile.getName().split("\\.")[0]);
System.out.println("abi " + a.abi);
System.out.println("bin " + a.bin);
FileUtils.writeStringToFile(new File("src/test/resources/solidity/" + contractname + ".abi"), a.abi);
FileUtils.writeStringToFile(new File("src/test/resources/solidity/" + contractname + ".bin"), a.bin);
String binFile;
String abiFile;
String tempDirPath = new File("src/test/java/").getAbsolutePath();
String packageName = "org.fisco.bcos.temp";
String filename = contractname;
abiFile = "src/test/resources/solidity/" + filename + ".abi";
binFile = "src/test/resources/solidity/" + filename + ".bin";
SolidityFunctionWrapperGenerator.main(Arrays.asList(
"-a", abiFile,
"-b", binFile,
"-p", packageName,
"-o", tempDirPath
).toArray(new String[0]));
}
System.out.println("generate successfully");
}
```
This test case converts all Solidity contract files (`HelloWorld` contract provided by default) in the `src/test/resources/contract` directory to the corresponding `abi` and `bin` files, and save them in the `src/test/resources/solidity` directory. Then convert the `abi` file and the corresponding `bin` file combination into a Java contract file, which is saved in the `src/test/java/org/fisco/bcos/temp` directory. The SDK will use the Java contract file for contract deployment and invocation.
### Deployment and Invocation Contract Test
Provide `ContractTest` class to test deploy and call contracts. The sample test is as follows:
```java
@Test
public void deployAndCallHelloWorld() throws Exception {
//deploy contract
HelloWorld helloWorld = HelloWorld.deploy(web3j, credentials, new StaticGasProvider(gasPrice, gasLimit)).send();
if (helloWorld != null) {
System.out.println("HelloWorld address is: " + helloWorld.getContractAddress());
//call set function
helloWorld.set("Hello, World!").send();
//call get function
String result = helloWorld.get().send();
System.out.println(result);
assertTrue( "Hello, World!".equals(result));
}
}
```
## Code Contribution
- Your contributions are most welcome and appreciated. Please read the [contribution instruct
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源概览】 区块链课程设计 基于FISCO BCOS的供应链项目源码+演示视频+项目资料齐全+部署文档 高分项目.zip区块链课程设计 基于FISCO BCOS的供应链项目源码+演示视频+项目资料齐全+部署文档 高分项目.zip 【资源说明】 高分项目源码:此资源是在校高分项目的完整源代码,经过导师的悉心指导与认可,答辩评审得分高达95分,项目的质量与深度有保障。 测试运行成功:所有的项目代码在上传前都经过了严格的测试,确保在功能上完全符合预期,您可以放心下载并使用。 适用人群广泛:该项目不仅适合计算机相关专业(如软件工程、计科、区块链、人工智能、电子信息、物联网、通信工程、自动化等)的在校学生和老师,还可以作为毕业设计、课程设计、作业或项目初期立项的演示材料。对于希望进阶学习的小白来说,同样是一个极佳的学习资源。 代码灵活性高:如果您具备一定的编程基础,可以在此代码基础上进行个性化的修改,以实现更多功能。当然,直接用于毕业设计、课程设计或作业也是完全可行的。 欢迎下载,与我一起交流学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
区块链课程设计 基于FISCO BCOS的供应链项目源码+演示视频+项目资料齐全+部署文档 高分项目.zip (239个子文件)
M0.abi 3KB
M0.abi 2KB
HelloWorld.abi 375B
HelloWorld.abi 375B
gradlew.bat 3KB
classAnalysis.bin 18.18MB
executionHistory.bin 1.39MB
taskHistory.bin 222KB
jarAnalysis.bin 42KB
fileHashes.bin 34KB
resourceHashesCache.bin 22KB
outputFiles.bin 19KB
M0.bin 18KB
M0.bin 18KB
output.bin 17KB
HelloWorld.bin 2KB
HelloWorld.bin 2KB
results.bin 129B
last-build.bin 1B
M0.class 38KB
HelloWorld.class 12KB
HelloWorld.class 12KB
ContractConfig.class 4KB
TransactionController.class 4KB
ReceiveController.class 4KB
DueController.class 4KB
AccountConfig.class 4KB
RegisterController.class 3KB
FinanceController.class 3KB
Channel2Client.class 3KB
TransferController.class 3KB
PaybackController.class 3KB
LoginController.class 3KB
GroupChannelConnectionsPropertyConfig.class 2KB
M0$12.class 2KB
ServiceConfig.class 2KB
LoginHandler.class 2KB
ContractTest.class 2KB
PushCallback.class 2KB
PrecompiledServiceApiTest.class 2KB
Channel2Server.class 2KB
MyConfig.class 2KB
Receipt.class 2KB
Web3jConfig.class 1KB
Web3jApiTest.class 1KB
EncryptTypeConfig.class 948B
Application.class 799B
User.class 778B
M0$1.class 769B
M0$2.class 765B
HelloWorld$1.class 756B
M0$10.class 753B
M0$8.class 751B
M0$7.class 751B
M0$9.class 751B
M0$6.class 744B
M0$5.class 744B
M0$4.class 743B
M0$3.class 741B
M0$11.class 740B
HelloWorld$1.class 736B
ConnectConstants.class 605B
GasConstants.class 549B
BaseTest.class 528B
UserDao.class 290B
sdk.crt 2KB
ca.crt 1KB
bootstrap.min.css 141KB
bootstrap.min.css 141KB
base-style.css 3KB
main.css 2KB
main.css 2KB
style.css 1KB
login.css 1KB
login.css 1KB
transaction.css 522B
transaction.css 522B
.gitignore 14B
build.gradle 2KB
settings.gradle 227B
gradlew 6KB
logback.groovy 2KB
logback.groovy 2KB
org.fisco.bcos.ContractTest.html 19KB
transaction.html 8KB
transaction.html 8KB
finance.html 4KB
finance.html 4KB
transfer.html 3KB
transfer.html 3KB
payback.html 3KB
payback.html 3KB
due.html 2KB
due.html 2KB
index.html 2KB
receive.html 2KB
receive.html 2KB
org.fisco.bcos.html 2KB
register.html 1KB
register.html 1KB
共 239 条
- 1
- 2
- 3
资源评论
IT狂飙
- 粉丝: 4776
- 资源: 2641
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功