Tengo un Smart Contrat donde hay algunos eventos como los siguientes:
MyContract {
event CustomerDataSendingToSeller(address _seller, string _hasheCustomerData, uint256 _orderSeq);
function SigneCustomerDataToSell(string _hasheCustomerData) public {
require(seller != msg.sender);
customer = msg.sender;
DataExchangeSeq++;
DataExchanges[DataExchangeSeq] = DataExchange(customer,_hasheCustomerData,0,0,DataExchangeSeq,0,Buyer(0,"0x",false,false),false);
emit CustomerDataSendingToSeller(seller,_hasheCustomerData, DataExchangeSeq);
}
}
Luego pasé mi función de contrato inteligente como transacción después de la implementación, y revisé el recibo de la transacción, vi que solo hay un argumento en lugar de mis tres argumentos en el contrato inteligente.
Aquí la salida de la función de recibo de transacción:w3.eth.getTransactionReceipt(tx_hash)
AttributeDict({
'transactionHash':HexBytes('0xee50268e0c525cdee61fa58b1459a74915d7ac25ca72ebdb06065c3bd03a8f73'),
'transactionIndex': 0,
'blockHash':HexBytes('0x2ddd79c415277e02dc51c649f3463085a8043b87bb7067e3da81062cf608357c'),
'blockNumber': 97,
'gasUsed': 93882,
'cumulativeGasUsed': 93882,
'contractAddress': None,
'logs':
[AttributeDict({
'logIndex': 0,
'transactionIndex': 0, 'transactionHash':0xee50268e0c525cdee61fa58b1459a74915d7ac25ca72ebdb06065c3bd03a8f73', 'blockHash':'0x2ddd79c415277e02dc51c649f3463085a8043b87bb7067e3da81062cf608357c', 'blockNumber': 97,
'address': '0xAAe858AE95DE4eA7acE44Bc58bBB27C331e6dc0d', 'data':'0x0000000000000000000000000db7fec9d38cb5a3e789228f93ac0b27cb25d24d00000000000000,
'topics': ['0xf9a97ac82c9d5863f1a327d99b2f678c53726ddea126435a5752717390af467b')], 'type': 'mined'})],
'status': 1,
'logsBloom':('0x0000000000004000000000000000000000000000000000000000000000000000000004')})
En el topics
debería ver mis tres argumentos hash, pero solo uno está presente y parece ser el hash de la función de evento en sí, entonces, ¿por qué no ver el otro?
Gracias por la ayuda :)
Sus parámetros se agregan como tema solo si están indexados (consulte la palabra clave indexada en Solidity). De lo contrario, los parámetros se colocan en el campo de datos.
El tema que ves es la firma del evento. Puedes agregar hasta 3 parámetros indexados, es decir junto con la firma del evento, puedes tener hasta 4 temas.
Aniket
seller
yDataExchangeSeq