Wie erfasst CryptoKitties die Zeit?

Ich schaue KittyBreeding.solund sehe

 /// @dev Set the cooldownEndTime for the given Kitty, based on its current cooldownIndex.
    ///  Also increments the cooldownIndex (unless it has hit the cap).
    /// @param _kitten A reference to the Kitty in storage which needs its timer started.
    function _triggerCooldown(Kitty storage _kitten) internal {
        // Compute the end of the cooldown time (based on current cooldownIndex)
        _kitten.cooldownEndTime = uint64(now + cooldowns[_kitten.cooldownIndex]);

aber ich sehe nicht, wo "jetzt" definiert ist, außer in ihremkitty-core.test.js

Wie verfolgt diese DAPP die Zeit, wodurch die Website Timer anzeigen kann?

Woher haben Sie die .sol-Datei?

Antworten (2)

nowist eine spezielle Solidity - Variable , die der aktuellen Zeit seit der Epoche in Sekunden entspricht .

Aus der Dokumentation (oben verlinkt):

now (uint): Zeitstempel des aktuellen Blocks (Alias ​​für block.timestamp)

Es ist erwähnenswert, dass Miner manipulieren können nowund sich daher nicht darauf verlassen sollten, wenn es um heikle Dinge wie das Seeding von Pseudo-Zufallszahlengeneratoren geht.

Ist die Verfolgung des Deltas von Block-IDs also eine bessere Möglichkeit, Zeiteinheiten zu verfolgen?
Stimmen Sie der Bewertung von Ismael zu, aber Moderatoren müssen vorsichtig sein, den Ruf zu beeinträchtigen, sodass selbst die Umwandlung in einen Kommentar zu sehr störend sein könnte. Werde es so lassen.
@quantumpotato Es ist sicherer, da es schwieriger zu spielen ist. Übrigens, hier ist ein reales Szenario, in dem ein On-Chain-Pseudo-Zufallszahlengenerator implementiert wurde. Es ermöglichte eine deterministische Falltür.