Solidity
Block.timestamp 返回多個值
我的智能合約中有一個函式可以獲取它所在塊的時間戳:
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.log
aBigNumber
它將為您提供單個 BigNumber 的此類內部數據,例如那些length
和words
. 這些不是簡單的解釋。所以你應該做的只是
.toString()
得到實際的數字。它實際上只是一個數字,而您現在看到的是單個數字的對象表示。這裡有更多資訊:https ://ethereum.stackexchange.com/a/70926/31933