was ist block.timestamp

Zeichnet block.timestamp in einer Funktion die Zeit auf, zu der die Transaktion verarbeitet wurde, oder die Zeit, zu der der Berechnungsschritt von block.timestamp verarbeitet wurde?

Ist block.timestamp die Zeit, zu der die Transaktion verarbeitet wird, oder würde timeund time2abweichen?

function doSomething() {

uint time = block.timestamp

// ... a few 400000 gas of other things ... //

uint time2 = block.timestamp

}

Antworten (3)

Gemäß der Dokumentation finden Sie

Zeitstempel des aktuellen Blocks in Sekunden seit der Epoche

Sie haben also einen einzigen Zeitstempel (wenn er erstellt wird) pro Block, also time1=time2

Lesen Sie mehr über timestamp unter Ist der block.timestamp-Wert in Solidity Sekunden oder Millisekunden?

In Bezug auf Ihren Kommentar zu Transaktionszeitstempeln sind die Zeitstempel aller Transaktionen in einem Block gleich.

Es kann viele Transaktionen in einem Block geben, alle haben denselben Zeitstempel und alle haben denselben Zeitstempel wie der Block.

block.timestamp ist der Wert, den der Miner dort veröffentlichen möchte, wenn er oder sie einen Block findet.

Es unterliegt einigen Interpretationen und kann verzerrt werden, wenn auch nur für eine Weile. In der Praxis ist dies kein wirkliches Problem, und die Risiken bei der Verwendung von Blocknummern sind oft höher.

Wie würde ein Miner mit einer riesigen Blockzeit fertig werden?

Wie vermeidet Ethereum ungenaue Zeitstempel in Blöcken?

https://ethereum.stackexchange.com/a/428/620