He puesto algunos eventos en mis contratos como este
event TokenTransfer(address indexed sender,address indexed receiver,uint32 indexed num_tokens);
event ExceptionEvent(uint16 indexed retcode,address indexed userAddress,string context);
En mi script de nodejs estoy haciendo algo como esto
iouContractInstance.TokenTransfer({},{fromBlock: 0, toBlock: 'latest'}).watch(function(blockWatchError, blockWatchResult){
console.log("Looking out for Tokentransfer data");
console.log("TokenTranfer Error:"+blockWatchError);
if(!blockWatchError){
console.log("The event data result is:"+blockWatchResult);
}
});
iouContractInstance.ExceptionEvent({},{fromBlock:0,toBlock:'latest'}).watch(function(blockWatchError, blockWatchResult){
console.log("Looking out for ExceptionEvent event data");
console.log("ExceptionEvent Error:"+blockWatchError);
if(!blockWatchError){
console.log("The event data result is:"+blockWatchResult);
}
});
En mi consola node js obtengo algo como esto
Looking out for Tokentransfer data
TokenTranfer Error:Error: Can only serialize integers
Looking out for ExceptionEvent event data
ExceptionEvent Error:Error: Can only serialize integers
Looking out for Tokentransfer data
¿Alguien puede decir qué estoy haciendo mal? Mi entorno es: Blockchain: hydrachain Solidity: solc 0.2.0-1 Ubuntu 14:04
Hay una solución documentada aquí:
https://gitter.im/ethereum/web3.js/archives/2016/01/09
Cambie el fromBlock: 0
a de fromBlock: 'latest'
acuerdo con ese chat.
AFAICT nadie ha identificado una causa raíz.
También en mi código uso toda la contract.allEvents
API y no tengo ningún problema. podría intentar enviar sus propios eventos particulares a partir de eso, o simplemente analizarlos desde el txreceipt en lugar de usar el sistema de eventos en absoluto. Sigo teniendo problemas con el sistema de eventos, por lo que, aparte de allEvents para monitorear un contrato para la depuración y el análisis, no uso eventos en absoluto.
AFAIK, la variable blockWatchResult contendrá un objeto con muchas propiedades; en la propiedad .args deberías encontrar los parámetros de tus eventos: .args['sender'], .args['receiver']...
JB
Joël
código de lucha
pablo s
,string context
el tipo tal vez no sea algo que web3.js trate correctamente.pablo s
pablo s