您的位置:首页 > 房产 > 建筑 > 制作app多少钱一个_徐州赶集网招聘信息_如何在手机上制作网站_学习软件的网站

制作app多少钱一个_徐州赶集网招聘信息_如何在手机上制作网站_学习软件的网站

2025/1/23 23:29:21 来源:https://blog.csdn.net/jc0803kevin/article/details/143363800  浏览:    关键词:制作app多少钱一个_徐州赶集网招聘信息_如何在手机上制作网站_学习软件的网站
制作app多少钱一个_徐州赶集网招聘信息_如何在手机上制作网站_学习软件的网站

solidity的struct对象,web3j java解析输出参数

  • 先决条件
// SPDX-License-Identifier: MIT
pragma solidity 0.8.28;contract StructDemo {struct Student {uint256 id;string name;}// 初始化一个结构体Student public student;function initStudent5(Student memory _stu) public  {student = _stu;}
}
<dependency><groupId>org.web3j</groupId><artifactId>core</artifactId><version>4.12.0</version>
</dependency>
  • 使用Java进行输出参数的解析
package com.kevin;import org.junit.Before;
import org.junit.Test;
import org.web3j.abi.FunctionEncoder;
import org.web3j.abi.FunctionReturnDecoder;
import org.web3j.abi.TypeReference;
import org.web3j.abi.datatypes.Function;
import org.web3j.abi.datatypes.Type;
import org.web3j.abi.datatypes.Utf8String;
import org.web3j.abi.datatypes.generated.Uint256;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameterName;
import org.web3j.protocol.core.methods.request.Transaction;
import org.web3j.protocol.core.methods.response.EthCall;
import org.web3j.protocol.http.HttpService;import java.io.IOException;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;public class StructDemoTest2 {private Web3j web3jClint;private Long chainId = 5777L;@Beforepublic void init(){web3jClint = Web3j.build(new HttpService("http://127.0.0.1:8545", true));}@Testpublic void getStudent() throws IOException, ExecutionException, InterruptedException {// 构建输入参数List<TypeReference<?>> outputParameters = new ArrayList<>();outputParameters.add(new TypeReference<Uint256>() {});outputParameters.add(new TypeReference<Utf8String>() {});Function newStu = new Function("student", Collections.emptyList(), outputParameters);String encode = FunctionEncoder.encode(newStu);String from = "0x148F0cF0d183027D3f35dF8553012bD980F99ae5";String contractAddress = "0x57BF94B4Cca86d6e83347F520Ba2cDfC4FA318F9";Transaction ethCallTransaction = Transaction.createEthCallTransaction(from, contractAddress, encode);CompletableFuture<EthCall> ethCallCompletableFuture = web3jClint.ethCall(ethCallTransaction, DefaultBlockParameterName.LATEST).sendAsync();EthCall ethCall = ethCallCompletableFuture.get();String input = ethCall.getValue();System.out.println(input);List<Type> decode = FunctionReturnDecoder.decode(ethCall.getValue(), newStu.getOutputParameters());Student stu = new Student(((BigInteger) decode.get(0).getValue()).longValue(), (String) decode.get(1).getValue());System.out.println("stu-->" + stu);}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com