如果我为一个参数或任意数量的参数建立索引,则返回值将在来自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
关键字时没有问题。