当前位置: 首页 > 知识库问答 >
问题:

Web3j在智能合约中调用变量

程承恩
2023-03-14

我试图得到一个变量的值在一个智能合约使用实用性,geth和web3j。

HelloWorld合同非常简单:

pragma solidity ^0.6.10;
   contract HelloWorld {
   uint256 public counter = 5;
  
   function add() public {  //increases counter by 1
       counter++;
   }
 
   function subtract() public { //decreases counter by 1
       counter--;
   }
   
   function getCounter() public view returns (uint256) {
       return counter;
   }
}

web3j没有call()函数,只有send()函数,这令人惊讶。

当我试着按照web3j说明获得计数器时:

contract.getCounter().send()

我得到的是交易收据,而不是uint256的值。

有人能帮忙吗?

非常感谢。

威尔

共有1个答案

时仰岳
2023-03-14

您需要在生成的HelloWorld中修改getCounter()函数。java文件。

public RemoteCall<Type> getCounter() {
    final Function function = new Function(
            FUNC_GETCOUNTER, 
            Arrays.<Type>asList(), 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint>() {}));
    return executeRemoteCallSingleValueReturn(function);
}

要获取值,请使用以下代码:

Type message = contract.getCounter().send();
System.out.println(message.getValue()); 
 类似资料:
  • 指导编写一个EOSIO的智能合约 模块 Account API 查询账户数据的API. Chain API 查询链内部状态的API. Database API 存储和检索EOS.IO区块链的数据API根据以下广泛结构来组织数据. Math API 定义常用的数学函数. Action API 定义用于查询操作属性的API. Memory API 定义常用的记忆功能. Console API 使应用程

  • 编程语言 使用golang作为编程语言(对部分关键字限制,以保证处理的有序性),而不是重新创造编程语言。 golang是一个简单、易用的编程语言,它有完善的帮助文档和开发工具。 它是强类型校验,编译阶段就能够校验发现很多bug。 它是模块化的,本系统能够简单屏蔽外部功能,使智能合约处在简单可预期的环境中。 已经有大量的golang开发人员,他们如果要开发智能合约,非常容易上手。 智能合约的分类 公

  • 介绍 EOSIO 智能合约 编写智能合约需要的必备技能 C / C++ 相关 基于 EOSIO 的块链使用的是 WebAssembly(http://webassembly.org/) (WASM) 来执行用户编写的智能合约。WASM 是一种新兴的 Web 标准,广泛支持于谷歌、微软、苹果等。对编写 WASM 标准的智能合约来说使用 clang/llvm(https://clang.llvm.or

  • 原文:http://zeppelin-solidity.readthedocs.io/en/latest/bounty.html 这个例子结合了Truffle框架,如果你不知道如何集成,可以先看看,还挺方便的:http://me.tryblockchain.org/obust-smart-contracts-with-openzeppelin.html 要为你的合约创建一个赏金项目。需要继承父类B

  • StandardToken继承的父类方法,相比StandardToken,这个类只提供基础功能,而StandardToken允许授权给其它人额度来转发代币。 balanceOf(address _owner) constant returns (uint balance) 返回传入地址的余额。 function balanceOf(address _owner) constant returns

  • 基于FirstBlood的代码:原始的firstBlood的代码在这里。 继承了合约SafeMath,实现了ERC20标准(标准参见:https://github.com/ethereum/EIPs/issues/20)。 原文地址:http://zeppelin-solidity.readthedocs.io/en/latest/standardtoken.html 源码地址:https://g