FISCO

本文基于已经搭建起来的节点使用javasdk调用去对节点进行操作,前置知识需要了解什么是ABI、什么是BIN、以及对fisco中的console中的配置文件:config。toml具有一定了解

配置环节

对sol文件进行Java文件转换(console 下的sol2java.sh*)

1.转换为java文件生成在指定目录下
console/contracts/solidity(合约所在文件夹)
bash sol2java.sh -p com.by.fisco
在这里插入图片描述
在这里插入图片描述

IDEA导入依赖

这里使用的是gradle工具
在gradle.build导入

implementation("org.fisco-bcos.java-sdk:fisco-bcos-java-sdk:2.9.1")

同时也可以使用maven
在pom.xml配置文件中导入

  <groupId>org.fisco-bcos.java-sdk</groupId>
  <artifactId>fisco-bcos-java-sdk</artifactId>
  <version>2.9.1</version>
 </dependency>

配置

Java sdk主要包括五个配置选项,
分别是
1证书配置(必须)
2网络连接配置 (必须)
3AMOP配置(非必须)
4账户配置(非必须,不配置则使用默认配置值)
5线程池配置(非必须,不配置则使用默认配置值)
第一个是

合约java文件

在这里插入图片描述

合约Abi和bin

合约Abi和bin放入resource目录下。

![在这里插入图片描述](https://img-blog.csdnimg.cn/434af55f14ac499e90ff4ea1df0ffbc3.png

证书conf

conf目录主要是用来存放证书的,这里调用节点一定要启动,否则就会报错
在这里插入图片描述

config.toml文件

在这里插入图片描述

测试类中调用合约

public class BcosSDKTest
{
    // 获取配置文件路径
    public final String configFile = BcosSDKTest.class.getClassLoader().getResource("config-example.toml").getPath();
     public void testClient() throws ConfigException {
         // 初始化BcosSDK
        BcosSDK sdk =  BcosSDK.build(configFile);
        // 为群组1初始化client
        Client client = sdk.getClient(Integer.valueOf(1));
    
        // 获取群组1的块高
        BlockNumber blockNumber = client.getBlockNumber();

        // 向群组1部署HelloWorld合约
        CryptoKeyPair cryptoKeyPair = client.getCryptoSuite().getCryptoKeyPair();
        HelloWorld helloWorld = HelloWorld.deploy(client, cryptoKeyPair);

        // 调用HelloWorld合约的get接口
        String getValue = helloWorld.get();
        
        // 调用HelloWorld合约的set接口
        TransactionReceipt receipt = helloWorld.set("Hello, fisco");
     }
}

基于ABI和BIN调用合约

将此合约转换为java文件之后依据以上步骤创建一个gradle的普通java项目
当前处于初步学习阶段,暂时没有和spingboot进行整合

pragma solidity ^0.4.25;

contract HelloWorld{
    string public name;
    constructor() public{
       name = "Hello, World!";
    }

    function set(string n) public{
        name = n;
    }
}

初始化配置对象

AssembleTransactionProcessor

通过创建使用AssembleTransactionProcessor对象完成合约相关部署调用、查询操作
参数分别是
BcosSDK=BcosSDK.build(“config.toml”)

Client对象:Client client=sdk.getClient(INteger.valueOf(1))

创建的私钥: CryptoKeyPair keyPair = client.getCryptoSuite().createKeyPair();

Abi文件、BIN文件

部署、交易、查询
  AssembleTransactionProcessor transactionProcessor = TransactionProcessorFactory.createAssembleTransactionProcessor(client, keyPair, "src/main/resources/abi/", "src/main/resources/bin/");
交易、查询
AssembleTransactionProcessor transactionProcessor = TransactionProcessorFactory.createAssembleTransactionProcessor(client, keyPair, "src/main/resources/abi/", "");

测试文件编写

public class BcosTest {

    public final String configFile=BcosTest.class.getClassLoader().getResource("config.toml").getPath();
    @Test

    public void testClient() throws Exception {
        BcosSDK bcosSDK=BcosSDK.build(configFile);
        Client client = bcosSDK.getClient(Integer.valueOf(1));
        BlockNumber blockNumber=client.getBlockNumber();

        CryptoKeyPair cryptoKeyPair=client.getCryptoSuite().getCryptoKeyPair();

        AssembleTransactionProcessor assembleTransactionProcessor = TransactionProcessorFactory.createAssembleTransactionProcessor(client, cryptoKeyPair, "src/main/resources/abi/", "src/main/resources/bin/");

        TransactionResponse helloWorld = assembleTransactionProcessor.deployByContractLoader("HelloWorld", new ArrayList<>());

控制台中查看块高
在这描述
执行测试获得交易哈希
在这里插入图片描述

部署成功在这里插入图片描述
在这里插入图片描述
发送jHelloWorldset交易以及get获取

   List<Object> params=new ArrayList<>();

        params.add("test");
        String add="0x8365d8219136f1dc3f0f113adf3f2cfc62f837a9";
        AssembleTransactionProcessor transactionResponse = TransactionProcessorFactory.createAssembleTransactionProcessor(client, cryptoKeyPair, "src/main/resources/abi/", "src/main/resources/bin/");

        TransactionResponse transactionResponse1 = transactionResponse.sendTransactionAndGetResponseByContractLoader("HelloWorld", add, "set", params);
//发送set交易
        System.out.println(transactionResponse);

        CallResponse callResponse = transactionResponse.sendCallByContractLoader("HelloWorld", add, "get", new ArrayList<>());
        //获取get
        System.out.println(callResponse);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值