Transactions

轉移的唯一標識

  • December 14, 2019

https://github.com/ethereum/go-ethereum/blob/master/core/types/log.go#L40

// Derived fields. These fields are filled in by the node
// but not secured by consensus.
...
// index of the log in the block
Index uint `json:"logIndex" gencodec:"required"`

所以下次我看eth_getLogs的時候transfer可能會出現不同的情況index

我正在尋找一種唯一標識特定傳入轉賬的方法,許多轉賬可以出現在同一個事務中,我需要一種方法來儲存它們並確保當工作人員再次處理積壓時沒有重複。

簡單的猜測是對欄位使用唯一的複合索引:(txid,to,logIndex),但該評論log.go讓我感到困惑。

奇偶校驗返回為transactionLogIndex,所以我可以假設它在進一步的響應中總是相同的,即使鏈重組和 tx 將包含在另一個塊中?

如果您指的是 ERC20Transfer事件。然後在正常情況下 (txid, logIndex) 應該作為複合索引工作,因為日誌條目的生成順序與它們生成的順序相同。

您必須知道,日誌條目的生成完全由智能合約控制。如果在不同的區塊中開採日誌,那麼編寫一個以不同順序生成日誌的合約非常容易。

也許使用 (blockHash, txid, logIndex) 會更好地支持鏈重組。但是您將不得不丟棄屬於孤立塊的事件。

引用自:https://ethereum.stackexchange.com/questions/78274