如何使用web3获取以太坊块的数据

问题描述 投票:2回答:1

这是我的合同:

pragma solidity ^0.4.18;
contract Signup {
   string fStudentId;
   string fLocation;

   function setInfo(string _fStudentId, string _fLocation) public  {
       fStudentId = _fStudentId;
       fLocation = _fLocation;
   }
   function getInfo() public constant returns (string, string)    {
       return (fStudentId, fLocation);
   }
}

我阻止了StudentId和位置,如何使用web3获取此信息?我尝试使用:web3.eth.getBlock(7).then(console.log);

但是得到:enter image description here

我的学生编号和位置在哪里?谢谢!!!!!

blockchain ethereum web3
1个回答
0
投票

[当您说“我要阻止学生编号和位置”时不确定您的意思,但我会尽力回答。

您可能通过执行类似操作来设置状态

contract.functions.setInfo(1, "here")

要检索该数据,请执行

contract.functions.getInfo()


以太坊区块链的实际状态由Merkle特里构成,并由stateRoot引用。因此,如您所见,没有一种简单的方法可以根据您拥有的块标题来查找此数据。

要从合同中检索数据,您有几种选择:

  1. 如上所述使用您的getInfo方法
  2. 在执行setInfo的交易中查找交易并解析交易收据中的输入
  3. [只要调用setInfo,就从合同中发出事件,并设置一个过滤器的侦听器,该过滤器将在每次发出合同事件的交易发生时被调用]]
  4. 运行节点并从块中获取原始数据,而不仅仅是块头
© www.soinside.com 2019 - 2024. All rights reserved.