背景
使用WeBASE合约管理导出Java项目
前提
启动FISCO节点和webase-front,部署服务详情可参考官方文档: link
步骤
1.编写智能合约
一个简单的例子:
Table 合约:该合约负责维护候选人的信息。每个候选人都有一个唯一的标识符sign_key,以及与之相关联的其他属性,包括活动名称activity_name、参与者participant、公钥publicKey、签名数据sign_data。通过添加候选人和查询候选人信息等功能,Table合约提供了对候选人信息的管理和检索。
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
contract Table {
struct Candidate {
string activity_name;
string participant;
string publicKey;
string sign_data;
string sign_key;
}
mapping(string => Candidate) public candidates;
function addCandidate(string memory activity_name, string memory participant, string memory publicKey, string memory sign_data, string memory sign_key) public {
candidates[sign_key] = Candidate(activity_name, participant, publicKey, sign_data, sign_key);
}
function getCandidateInfo(string memory sign_key) public view returns (string memory, string memory, string memory, string memory, string memory) {
Candidate memory candidate = candidates[sign_key];
return (candidate.activity_name, candidate.participant, candidate.publicKey, candidate.sign_data, candidate.sign_key);
}
}
Vote 合约:该合约则负责实现投票功能。它引用了Table合约来管理候选人信息。通过调用Table合约中的函数来添加候选人,Vote合约提供了将候选人加入到投票系统中的功能。另外,它还提供了查询候选人信息的功能。
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
import "./Table.sol";
contract Vote {
Table public electionTable;
event CandidateAdded(string activity_name, string participant, string publicKey, string sign_data, string sign_key);
constructor() public {
electionTable = new Table();
}
function addCandidate(string memory activity_name, string memory participant, string memory publicKey, string memory sign_data, string memory sign_key) public {
electionTable.addCandidate(activity_name, participant, publicKey, sign_data, sign_key);
emit CandidateAdded(activity_name, participant, publicKey, sign_data, sign_key);
}
function getCandidateInfo(string memory sign_key) public view returns (string memory, string memory, string memory, string memory, string memory) {
return electionTable.getCandidateInfo(sign_key);
}
}
2.编译及部署智能合约
再编译和部署完智能合约后,可以得到合约的地址
3.导出Java项目
点击右上角导出Java项目后,即可导出一个自命名的Java项目
4.在IDEA中打开导出的Java项目
项目结构如图:
这是一个gradle构建的SpringBoot项目
5.编写Controller层来测试智能合约中的方法
TestController.java测试合约的add和get方法是否调用成功
package org.example.demo2.controller;
import org.example.demo2.model.bo.VoteAddCandidateInputBO;
import org.example.demo2.model.bo.VoteGetCandidateInfoInputBO;
import org.example.demo2.service.VoteService;
import org.fisco.bcos.sdk.v3.transaction.model.dto.CallResponse;
import org.fisco.bcos.sdk.v3.transaction.model.dto.TransactionResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@Autowired
private VoteService voteService;
@PostMapping("/addCandidate")
public TransactionResponse set(@RequestBody VoteAddCandidateInputBO vai) throws Exception {
TransactionResponse result = voteService.addCandidate(vai);
return result;
}
@GetMapping("/getCandidateInfo")
public CallResponse get(@RequestBody VoteGetCandidateInfoInputBO vgi) throws Exception {
CallResponse response = voteService.getCandidateInfo(vgi);
return response;
}
}
6.启动项目
项目启动成功如图所示:文章来源:https://www.toymoban.com/news/detail-842347.html
7.Postman测试add和get方法
下图为add方法:
下图为get方法:
调用方法成功文章来源地址https://www.toymoban.com/news/detail-842347.html
到了这里,关于Java SDK部署和调用FISCO BCOS区块链智能合约的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!