LogoLogo
  • Abstract
  • Architecture
  • VIDA
  • VIDA Security & Trustlessness
  • EVMs on PWR Chain
  • Conduits
  • Consensus
  • Scalability
  • Security
  • Transaction Fee Model
  • PWR Coin Utility
  • Costs, Inflation & Deflation
  • HOW TO
    • How To Build a VIDA
      • Basics of Blockchain Development
      • Stateless vs. Stateful VIDAs
      • Building a Stateless VIDA
      • Building a Stateful VIDA
  • FAQ
    • How does PWR Chain Resolve Inconsistent VIDA Execution Results?
  • Inconsistent VIDA Results from Non-Deterministic Execution?
  • Are there any restrictions on external API calls within VIDAs?
  • How are VIDA Upgrades Managed without Breaking Replayability?
  • If an VIDA’s Logic Changes, how does PWR Chain Ensure Past Transactions Remain Verifiable?
  • Others
    • Glossary
Powered by GitBook
On this page

Was this helpful?

Inconsistent VIDA Results from Non-Deterministic Execution?

Non-deterministic execution is not allowed in a VIDA, randomness and other Non-deterministic practices make it impossible to create a consistent execution result across different VIDA Execution Instances.

If a VIDA wants to use randomness, it should derive randomness from on-chain data (e.g., block hashes or timestamps) to ensure reproducibility. Example:

python# Seed RNG with block hash of transaction  
import hashlib  
seed = hashlib.sha256(pwr_chain.get_block_header(tx.block_height)).digest()  
random.seed(seed)  

Or it should Use external randomness providers (e.g., Chainlink VRF) only if their outputs are recorded on PWR Chain first1.

Time-based logic can still be implemented because PWR Chain timestamps all transactions and that can be used to create time-based logic.

PreviousHow does PWR Chain Resolve Inconsistent VIDA Execution Results?NextAre there any restrictions on external API calls within VIDAs?

Last updated 2 months ago

Was this helpful?