Wenn wir ein Ereignis wie folgt aufrufen:
event MyEvent(uint256 indexed _id, bytes32 _action, bytes32 _player, bytes32 _actionState, address _owner);
emit MyEvent(uint256(_public_id), bytes32(_action), bytes32(_player), bytes32(_actionState), _owner);
In EtherScan
sehen wir eine Ausgabe wie folgt:
Was Topics [0] 0x22b8025a23f25c3f52cdbc1f53a831dbd4e3b4aaeebe121d36c858abea974bc7
bedeutet ?
Im Falle von MyEvent
bedeutet[1] 0x0000000000000000000000000000000000000000000000000000000000000001
_public_id = 1
Allerdings weiß ich nicht 0x22b8025a23f25c3f52cdbc1f53a831dbd4e3b4aaeebe121d36c858abea974bc7
woher kommt? und im Allgemeinen, Topics
was bedeutet der Begriff?
In einer Transaktionsquittung topics
entsprechen die Felder Ihren Ereignisargumenten, die sich indexed
in Ihrem Smart Contract befinden. Für alle Ereignisse finden Sie als erstes Argument den Hash des Ereignisnamens und dann die Daten, die indexed
in Hexabyte angegeben sind.
In Ihrem Fall werden topics
Sie also finden
'topics':[hash_event_name,// w3.sha3(text='myEvent(uint256)').hex() where Event name without input argumentsname
0x000000...000000001//your first argument '_id' because is indexed
]
Alle Ihre nicht indizierten Ereignisargumente werden im Datenteil des Transaktionsbelegs gespeichert
sha('MyEvent(uint256'))
event_signature_hash = w3.sha3(text='MyEvent(uint256)').hex() #Event name without input arguments
web3.utils.sha3('TokenSold(uint256 tokenId,uint256 oldPrice,uint256 newPrice,address prevOwner,address winner,string name)')
Dies gab mir den falschen Hash ...web3.utils.sha3('TokenSold(uint256, uint256, uint256, address, address, string)')
. Fügen Sie nur den Typ Ihrer Variablen hinzu
Fragesteller
Fragesteller
Fragesteller