Solidity

Block.timestamp 返回多個值

  • March 27, 2020

我的智能合約中有一個函式可以獲取它所在塊的時間戳:

function getTime() public returns (uint256 time){
   return block.timestamp;;
}

根據我對時間戳的理解,這應該返回一個值。然而,當我部署合約並測試該方法時,它返回兩個值:

truffle(development)> contract.getTime.call({from: accounts[1]})
BN {
 negative: 0,
 words: [ 41810542, 23, <1 empty item> ],
 length: 2,
 red: null
}

為什麼會發生這種情況/如果只有其中一個是時間戳,這兩個值代表什麼?

BN代表 BigNumber。它是一個 JavaScript 框架,用於表示……嗯……大數字。

如果您只是console.logaBigNumber它將為您提供單個 BigNumber 的此類內部數據,例如那些lengthwords. 這些不是簡單的解釋。

所以你應該做的只是.toString()得到實際的數字。它實際上只是一個數字,而您現在看到的是單個數字的對象表示。這裡有更多資訊:https ://ethereum.stackexchange.com/a/70926/31933

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