Java SDK部署和调用FISCO BCOS区块链智能合约

背景

使用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.启动项目

项目启动成功如图所示:
在这里插入图片描述

7.Postman测试add和get方法

下图为add方法:
在这里插入图片描述
下图为get方法:
在这里插入图片描述
调用方法成功

<think>好的,用户想了解如何搭建FISCO BCOS区块链环境。我需要根据提供的引用内容来组织答案。首先,我需要确定用户的需求是什么。他们可能是一个刚入门的开发者,想要搭建自己的区块链网络,所以需要详细的步骤说明。 根据引用[5],里面有提到创建目录、下载安装脚本、执行build_chain.sh这些步骤。我应该先整理这些步骤,确保逻辑清晰。另外,引用[1]提到了官方文档,可能用户需要参考官方指南,但引用里的链接不可见,所以可能需要建议用户查阅官方文档获取最新信息。 接下来,需要注意系统级指令中的要求,比如使用中文回答,生成相关问题,正确使用LaTeX格式。不过这个问题可能涉及代码命令,数学公式可能不多,但如果有的话需要正确应用$符号。比如,如果有路径或变量可能需要用行内公式格式,但这里可能更多是代码块。 需要检查是否有其他引用内容相关。引用[5]中的步骤比较详细,包括下载脚本、配置节点、启动等。引用[3][4]可能涉及后续的Java SDK连接智能合约调用,但用户目前只需要搭建环境,这部分可能在后续步骤中提及,但当前问题可能不需要深入。 用户的问题可能分为几个步骤:环境准备、下载安装脚本、生成节点配置、启动节点、验证运行状态。每个步骤需要简明扼要地说明,并给出示例命令,比如curl命令build_chain.sh的使用。 另外,用户可能需要了解系统要求,比如操作系统、依赖项安装,比如openssl等。引用[5]中的步骤可能没有提到这些,但根据经验,可能需要补充依赖安装的部分,比如安装openssl, curl等工具。 还需要注意可能的常见问题,比如权限问题(chmod +x),或者端口冲突。可以建议用户检查端口是否被占用,或者查看日志排查错误。 生成的相关问题应该围绕搭建过程中可能遇到的后续步骤,比如节点配置优化、多群组搭建、节点扩容、连接SDK等,参考已有的引用内容,比如引用[3][4]提到的Java SDK连接智能合约调用,可以作为相关问题。 最后,确保回答结构清晰,分步骤说明,代码块使用正确的格式,并自然添加引用标识。例如,在关键步骤后添加[^5],因为引用[5]提供了搭建的具体步骤。</think>### FISCO BCOS区块链环境搭建指南 根据官方文档社区实践经验,搭建FISCO BCOS区块链环境主要分为以下步骤: --- #### 一、环境准备 1. **操作系统**:推荐使用Ubuntu 16.04+/CentOS 7.2+ 2. **依赖安装**: ```bash sudo apt install -y openssl curl ``` 3. **创建操作目录** ```bash mkdir -p ~/fisco && cd ~/fisco # 创建专用目录 ``` --- #### 二、快速搭建单群组网络 1. **下载安装脚本** ```bash curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.11.0/build_chain.sh && chmod u+x build_chain.sh ``` 2. **生成节点配置** ```bash ./build_chain.sh -l "127.0.0.1:4" -p 30300,20200,8545 # 本地生成4节点[^5] ``` 关键参数说明: - `-l`:节点IP数量 - `-p`:指定P2P/RPC/Channel端口序列 3. **启动区块链节点** ```bash bash nodes/127.0.0.1/start_all.sh # 启动所有节点 ``` --- #### 三、验证运行状态 1. **进程检查** ```bash ps -ef | grep fisco-bcos ``` 2. **日志监控** ```bash tail -f nodes/127.0.0.1/node0/log/* | grep +++ ``` 当看到`+++`日志表示节点共识正常[^5] --- #### 四、进阶配置(可选) - **多群组搭建**:修改`group.group_id`配置文件实现多群组 - **节点扩容**:通过`gen_node_cert.sh`生成新节点证书后加入网络 - **网络拓扑优化**:配置`nodes.json`文件定义网络连接关系[^1] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值