Go-Ethereum

獲取交易包含在您的節點中的時間

  • October 15, 2018

有什麼方法可以獲取您收到交易的時間嗎?我想知道我的節點中何時包含智能合約。(本地測試網)

當區塊被添加到您的本地區塊鏈時,它們包含一堆元數據,包括區塊時間戳,即區塊被探勘的時間,包括該區塊中的所有交易。

這是撰寫本文時的最新塊:

https://etherscan.io/block/6521553

Height: 6521553  
TimeStamp: 56 secs ago (Oct-15-2018 07:55:37 PM +UTC)       <--- here
Transactions: 104 transactions and 23 contract Internal Transactions in this Block
Hash: 0x6995e8a668ddc3743e806e99a3c860b8a57d4a7c8de47664489e0c39749069bb
...

但是,該時間戳不一定反映所有節點意識到該塊的時間,因為在整個網路中傳播該資訊需要時間。它只是說明區塊創建者何時聲稱創建了該區塊。

此外,區塊時間戳並不是一門完美的科學,因為它是來自區塊創建者的聲明,並且可以由區塊創建者在某些規則內進行調整。看這裡:

合約可以安全地依賴 block.timestamp 嗎?

您可以使用任何 Web3 API(如 Web3.js 提供的 API)非常輕鬆地訪問塊時間戳:

獲取塊

web3.eth.getBlock(blockHashOrBlockNumber [, returnTransactionObjects] [, callback])

例如:

web3.eth.getBlock(6521553).then(console.log);
{
    difficulty: "3220937666879710"   ​
    extraData: "0x66726131"  ​
    gasLimit: 8000029  ​
    gasUsed: 7982786
    hash: "0x6995e8a668ddc3743e806e99a3c860b8a57d4a7c8de47664489e0c39749069bb"
    logsBloom: "0x420542890060082225300245402122f1002aa0004221201100005100566155ea0d8210b04c821040472440169190308898314a00010881a6880891464f2e0ce02188cd40200669c908b0060ac8002480d824080cd03048524a5461080680606a0609d09302495802e460259814040c41282801600c5c00020058201599486031206482383cc2007034420ac0848020083810222c055000862a8111212a4060008a0c0b5242671860864480c12411e531141004080404803842018004d20100280081832251959a9619126c07400800d68c196805250a2087ec1cd000c0512000021031019212a800a009a0040818ec22a0402e86120a05134d7c87180d94e204"
    miner: "0xb2930B35844a230f00E51431aCAe96Fe543a0347"
    mixHash: "0x31f52f83ea88a0201aa44e3e70abe03d097fbe2fed54d9b32bc268194b0b6ae3"
    nonce: "0x297eb26407ff9ca4"
    number: 6521553
    parentHash: "0x8516a9c81830a6b8d953083af31aad2497f33108d5df184b20098003103e56d8"
    receiptsRoot: "0x4c95c9233bcc119ab84bf347a371229b516aacb13aa55bdbf785dfb635e0a719"
    sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
    size: 21086
    stateRoot: "0xcfd2357bcdc9497cf7289e45fd142860ecf933becb7b2060f70a1bf00a885ae0"
    timestamp: 1539633337           <--------- here
    totalDifficulty: "7243332583953312312387"
    transactions: Array(104) [...]
    transactionsRoot: "0x1e2248a45cf7e0f3500781a8293eadbaf12235dd5dc78b4f00b87b2559e75c58"
    uncles: Array []
}

Date()然後,您可以使用 JavaScript函式將其轉換為人類可讀的時間:

Date(1539633337 * 1000)

“2018 年 10 月 15 日星期一 13:08:39 GMT-0700(太平洋夏令時間)”

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