我正在尝试听一个在本地运行的rinkeby测试事件。当我的参数是int时,比如event EventTester(int values);,当我将事件参数更改为string (它没有被索引)时,每件事情都正常工作,它不工作,我也看不到日志。event EventTester(string values);。知道为什么吗?在https://rinkeby.etherscan.io上检查事务时,我没有看到Events选项卡。
谢谢
var fs = require('fs');
var Web3 = require('web3');
var util = require('ethereumjs-util');
var tx = require('ethereumjs-tx');
var lightwallet = require('eth-lightwallet');
var txutils = lightwallet.txutils;
var web3 = new Web3(
new Web3.providers.HttpProvider('http://localhost:8545')
);
var address = '0x.....';
var key = '';
var bytecode = '6060...90029';
var interface = [{"constant":false,"inputs":[{"name":"input","type":"string"}],"name":"getOut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"values","type":"string"}],"name":"EventTester","type":"event"}]
function sendRaw(rawTx) {
var privateKey = new Buffer(key, 'hex');
var transaction = new tx(rawTx);
transaction.sign(privateKey);
var serializedTx = transaction.serialize().toString('hex');
web3.eth.sendRawTransaction(
'0x' + serializedTx, function(err, result) {
if(err) {
console.log("ERROR HAPPENED:" +err);
}
});
}
var contractAddress = '0x...';
strInterface='[{"constant":false,"inputs":[{"name":"input","type":"string"}],"name":"getOut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"values","type":"string"}],"name":"EventTester","type":"event"}]'
abiDefinition = JSON.parse(strInterface)
myContract = web3.eth.contract(abiDefinition)
var contractInstance = myContract.at(contractAddress)
var txOptions = {
nonce: web3.toHex(web3.eth.getTransactionCount(address)),
gasLimit: web3.toHex(700000),
gasPrice: web3.toHex(10000000000),
to: contractAddress
};
var rawTx = txutils.functionTx(interface, 'getOut', ["hi"], txOptions);
sendRaw(rawTx);发布于 2017-10-11 18:42:15
我只是在罗普斯滕身上试了一试,看起来很管用。下面是事务:https://gist.github.com/pabloruiz55/d73fabb23677f146c58d8c4d3950c0fa
你可以在日志上看到我发送了一个字符串"hola“。
我使用的代码与您编写的代码完全相同,并在Remix上进行了测试。
(无法在Rinkeby上测试它,因为我刚刚用完了以太,但如果您给我寄来一些,我很乐意尝试一下:0x0fC20E774EA6674087494a36F8F8F8f09a4Ee3a131)
更新:在Rinkeby上工作也很好。https://rinkeby.etherscan.io/tx/0x5cf1cfd9c401b9b2d2c0d7a7d967f50e33aaa9bf9cfc97afad9f90b247a93ee9#eventlog
这是Remix的屏幕截图,以防万一。

发布于 2018-05-10 00:27:16
如果这不是使用web3的约束,我建议您使用它来调用该方法,这将避免大量常见错误(已在包装器中解决)。
与web3@^0.20.6:
contractInstance.getOut.sendTransaction('hi', (err, result) => {
if (err) {
console.error(err);
}
console.log(result);
});与web3@^1.0.0
contractInstance.methods.getOut('hi').send({ from: address }).then((result) => {
console.log(result);
})
.catch((err) => {
console.error(err);
});https://ethereum.stackexchange.com/questions/28282
复制相似问题