web3js,索引事件参数被交换/损坏

时间:2019-02-27 17:29:48

标签: events solidity web3js

如果我为一个参数或任意数量的参数建立索引,则返回值将在来自web3js的事件日志中被交换和/或损坏。

在Truffle控制台中返回的事件日志是正确的,对私有区块链进行view调用时的返回值也是如此。这使我相信Web3js会以某种方式破坏数据。

这是带有索引参数的事件:

event ReportedFraud(
    uint256 indexed fraudID,
    address bank,
    string accountNumber,
    string routingNumber,
    uint256 indexed amount,
    uint256 indexed fromID,
    uint256 time
);

这是我可以用来从事件日志中读取的最简单的JS:

this.KYCinstance.getPastEvents('ReportedFraud', {fromBlock:0, toBlock:'latest'},
    (error, events) => {console.log(events);
  });

以下是回复:

accountNumber: "123"
amount: "1"
bank: "0x10674178eAf18F06785b76fF689dcfa5175b098C"
fraudID: "51119459429513360686315515087327623333677688524449823590986145582251952174345"
fromID: "50000"
routingNumber: "456"
time: "1551236055"

这是没有索引任何参数时返回的正确响应:

accountNumber: "123"
amount: "50000"
bank: "0x10674178eAf18F06785b76fF689dcfa5175b098C"
fraudID: "1"
fromID: "0"
routingNumber: "456"
time: "1551236055"

如您所见,索引参数(金额,欺诈ID,fromID)全部被交换或损坏-但是当我不使用indexed关键字时没有问题。

0 个答案:

没有答案