Web3js

我應該怎樣稱呼從 Truffle 合約函式呼叫返回的對象

  • November 19, 2018

當我通過 Truffle 執行合約函式呼叫,然後解析返回的 Promise 時,我得到如下資訊:

{
   "tx": "0x...",
   "receipt": {
       "transactionHash": "0x...",
       "transactionIndex": 0,
       "blockHash": "0x...",
       "blockNumber": 24,
       "gasUsed": 42860,
       "cumulativeGasUsed": 42860,
       "contractAddress": null,
       "logs": [
           {
               "logIndex": 0,
               "transactionIndex": 0,
               "transactionHash": "0x...",
               "blockHash": "0x...",
               "blockNumber": 24,
               "address": "0x...",
               "data": "0x...",
               "topics": [
                   "0x...",
                   "0x...",
                   "0x..."
               ],
               "type": "mined"
           }
       ],
       "status": "0x1",
       "logsBloom": "0x..."
   },
   "logs": [
       {
           "logIndex": 0,
           "transactionIndex": 0,
           "transactionHash": "0x...",
           "blockHash": "0x...",
           "blockNumber": 24,
           "address": "0x...",
           "type": "mined",
           "event": "Transfer",
           "args": {
               "from": "0x...",
               "to": "0x...",
               "value": "0"
           }
       }
   ]
}

我不太確定 Truffle 究竟是如何包裝 web3.js 以呼叫合約函式的,所以我不確定在哪裡可以查看 web3.js 文件。但我使用的是依賴於 web3.js v0.18.4 的 Truffle v4.1.14,而 web3.js v0.x的文件有點難以閱讀,所以我在文件中搜尋了 web3.js v1.x。

現在,我想我應該研究web3.eth.sendSignedTransaction,它返回:

一個 Promise 組合事件發射器。將在交易收據可用時解決。

因此,Truffle 似乎接受了此收據,並將其嵌入到包含以下附加欄位的 JSON 對像中:

  1. tx,這是交易雜湊,我想
  2. logs, 其中包含部分或全部receipt.logs, 但已解碼

那麼這裡到底發生了什麼?

這個新對象肯定不是文件中描述的收據。

是否有官方術語,或者它只是一個“松露黑客”,旨在讓我的生活更輕鬆地解碼事件?

謝謝你。

顯然松露返回它自己的對象。它肯定會包含原始的 web3 收據,receipt因為 truffle 使用你提到的 web3 0.x。所以添加的屬性無非是松露試圖使其框架更好並保持web3之上的層的一種方式。

我認為該對像沒有特定的術語,或者至少它總是會被transactionReceiptWeb3 所掩蓋,因此兩者的名稱相同。

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