3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Block { public $nonce; public function __construct($index, $timestamp, $data, $previousHash = null) { $this->index = $index; $this->timestamp = $timestamp; $this->data = $data; $this->previousHash = $previousHash; $this->hash = $this->calculateHash(); $this->nonce = 0; } public function calculateHash() { return hash("sha256", $this->index.$this->previousHash.$this->timestamp.((string)$this->data).$this->nonce); } } class BlockChain { /** * Instantiates a new Blockchain. */ public function __construct() { $this->chain = [$this->createGenesisBlock()]; $this->difficulty = 4; } /** * Creates the genesis block. */ private function createGenesisBlock() { return new Block(0, strtotime("2017-01-01"), "Genesis Block"); } /** * Gets the last block of the chain. */ public function getLastBlock() { return $this->chain[count($this->chain)-1]; } /** * Pushes a new block onto the chain. */ public function push($block) { $block->previousHash = $this->getLastBlock()->hash; $this->mine($block); array_push($this->chain, $block); } /** * Mines a block. */ public function mine($block) { while (substr($block->hash, 0, $this->difficulty) !== str_repeat("0", $this->difficulty)) { $block->nonce++; $block->hash = $block->calculateHash(); } echo "Block mined: ".$block->hash."\n"; } /** * Validates the blockchain's integrity. True if the blockchain is valid, false otherwise. */ public function isValid() { for ($i = 1; $i < count($this->chain); $i++) { $currentBlock = $this->chain[$i]; $previousBlock = $this->chain[$i-1]; if ($currentBlock->hash != $currentBlock->calculateHash()) { return false; } if ($currentBlock->previousHash != $previousBlock->hash) { return false; } } return true; } } /* Set up a simple chain and mine two blocks. */ $testCoin = new BlockChain(); echo "mining block 1...\n"; $testCoin->push(new Block(1, strtotime("now"), "amount: 4")); echo "mining block 2...\n"; $testCoin->push(new Block(2, strtotime("now"), "amount: 10")); echo json_encode($testCoin, JSON_PRETTY_PRINT);
Output for 8.2.1 - 8.2.19, 8.3.0 - 8.3.7
Deprecated: Creation of dynamic property Block::$index is deprecated in /in/iqUn3 on line 8 Deprecated: Creation of dynamic property Block::$timestamp is deprecated in /in/iqUn3 on line 9 Deprecated: Creation of dynamic property Block::$data is deprecated in /in/iqUn3 on line 10 Deprecated: Creation of dynamic property Block::$previousHash is deprecated in /in/iqUn3 on line 11 Deprecated: Creation of dynamic property Block::$hash is deprecated in /in/iqUn3 on line 12 Deprecated: Creation of dynamic property BlockChain::$chain is deprecated in /in/iqUn3 on line 29 Deprecated: Creation of dynamic property BlockChain::$difficulty is deprecated in /in/iqUn3 on line 30 mining block 1... Deprecated: Creation of dynamic property Block::$index is deprecated in /in/iqUn3 on line 8 Deprecated: Creation of dynamic property Block::$timestamp is deprecated in /in/iqUn3 on line 9 Deprecated: Creation of dynamic property Block::$data is deprecated in /in/iqUn3 on line 10 Deprecated: Creation of dynamic property Block::$previousHash is deprecated in /in/iqUn3 on line 11 Deprecated: Creation of dynamic property Block::$hash is deprecated in /in/iqUn3 on line 12 Block mined: 00000c6902da7a388f98997e655826203ce6f352bd55217a21e1e53dd01f5474 mining block 2... Deprecated: Creation of dynamic property Block::$index is deprecated in /in/iqUn3 on line 8 Deprecated: Creation of dynamic property Block::$timestamp is deprecated in /in/iqUn3 on line 9 Deprecated: Creation of dynamic property Block::$data is deprecated in /in/iqUn3 on line 10 Deprecated: Creation of dynamic property Block::$previousHash is deprecated in /in/iqUn3 on line 11 Deprecated: Creation of dynamic property Block::$hash is deprecated in /in/iqUn3 on line 12 Block mined: 0000321bdd6e23d84069d67260f2795c838006e992533c4bb9bbdab2d62515b8 { "chain": [ { "nonce": 0, "index": 0, "timestamp": 1483225200, "data": "Genesis Block", "previousHash": null, "hash": "34054c41850bdf3f6f62dd60ae824dd35b98c872d420ed0dde942d0e54cd94d6" }, { "nonce": 160545, "index": 1, "timestamp": 1673951076, "data": "amount: 4", "previousHash": "34054c41850bdf3f6f62dd60ae824dd35b98c872d420ed0dde942d0e54cd94d6", "hash": "00000c6902da7a388f98997e655826203ce6f352bd55217a21e1e53dd01f5474" }, { "nonce": 87547, "index": 2, "timestamp": 1673951076, "data": "amount: 10", "previousHash": "00000c6902da7a388f98997e655826203ce6f352bd55217a21e1e53dd01f5474", "hash": "0000321bdd6e23d84069d67260f2795c838006e992533c4bb9bbdab2d62515b8" } ], "difficulty": 4 }
Output for 8.2.0
Deprecated: Creation of dynamic property Block::$index is deprecated in /in/iqUn3 on line 8 Deprecated: Creation of dynamic property Block::$timestamp is deprecated in /in/iqUn3 on line 9 Deprecated: Creation of dynamic property Block::$data is deprecated in /in/iqUn3 on line 10 Deprecated: Creation of dynamic property Block::$previousHash is deprecated in /in/iqUn3 on line 11 Deprecated: Creation of dynamic property Block::$hash is deprecated in /in/iqUn3 on line 12 Deprecated: Creation of dynamic property BlockChain::$chain is deprecated in /in/iqUn3 on line 29 Deprecated: Creation of dynamic property BlockChain::$difficulty is deprecated in /in/iqUn3 on line 30 mining block 1... Deprecated: Creation of dynamic property Block::$index is deprecated in /in/iqUn3 on line 8 Deprecated: Creation of dynamic property Block::$timestamp is deprecated in /in/iqUn3 on line 9 Deprecated: Creation of dynamic property Block::$data is deprecated in /in/iqUn3 on line 10 Deprecated: Creation of dynamic property Block::$previousHash is deprecated in /in/iqUn3 on line 11 Deprecated: Creation of dynamic property Block::$hash is deprecated in /in/iqUn3 on line 12 Block mined: 00008d618a2eac6e1624c7703245cf78750107f58039003bfd844515a1540d91 mining block 2... Deprecated: Creation of dynamic property Block::$index is deprecated in /in/iqUn3 on line 8 Deprecated: Creation of dynamic property Block::$timestamp is deprecated in /in/iqUn3 on line 9 Deprecated: Creation of dynamic property Block::$data is deprecated in /in/iqUn3 on line 10 Deprecated: Creation of dynamic property Block::$previousHash is deprecated in /in/iqUn3 on line 11 Deprecated: Creation of dynamic property Block::$hash is deprecated in /in/iqUn3 on line 12 Block mined: 0000e2fb4e39130b839f5da622df7d76f70c8ef9d34d4012b7c078cabf07ab3e { "chain": [ { "nonce": 0, "index": 0, "timestamp": 1483225200, "data": "Genesis Block", "previousHash": null, "hash": "34054c41850bdf3f6f62dd60ae824dd35b98c872d420ed0dde942d0e54cd94d6" }, { "nonce": 185284, "index": 1, "timestamp": 1673950980, "data": "amount: 4", "previousHash": "34054c41850bdf3f6f62dd60ae824dd35b98c872d420ed0dde942d0e54cd94d6", "hash": "00008d618a2eac6e1624c7703245cf78750107f58039003bfd844515a1540d91" }, { "nonce": 99256, "index": 2, "timestamp": 1673950980, "data": "amount: 10", "previousHash": "00008d618a2eac6e1624c7703245cf78750107f58039003bfd844515a1540d91", "hash": "0000e2fb4e39130b839f5da622df7d76f70c8ef9d34d4012b7c078cabf07ab3e" } ], "difficulty": 4 }
Output for 8.0.28 - 8.0.30, 8.1.15 - 8.1.28
mining block 1... Block mined: 00000c6902da7a388f98997e655826203ce6f352bd55217a21e1e53dd01f5474 mining block 2... Block mined: 0000321bdd6e23d84069d67260f2795c838006e992533c4bb9bbdab2d62515b8 { "chain": [ { "nonce": 0, "index": 0, "timestamp": 1483225200, "data": "Genesis Block", "previousHash": null, "hash": "34054c41850bdf3f6f62dd60ae824dd35b98c872d420ed0dde942d0e54cd94d6" }, { "nonce": 160545, "index": 1, "timestamp": 1673951076, "data": "amount: 4", "previousHash": "34054c41850bdf3f6f62dd60ae824dd35b98c872d420ed0dde942d0e54cd94d6", "hash": "00000c6902da7a388f98997e655826203ce6f352bd55217a21e1e53dd01f5474" }, { "nonce": 87547, "index": 2, "timestamp": 1673951076, "data": "amount: 10", "previousHash": "00000c6902da7a388f98997e655826203ce6f352bd55217a21e1e53dd01f5474", "hash": "0000321bdd6e23d84069d67260f2795c838006e992533c4bb9bbdab2d62515b8" } ], "difficulty": 4 }
Output for 8.0.1 - 8.0.27, 8.1.0 - 8.1.14
mining block 1... Block mined: 00008d618a2eac6e1624c7703245cf78750107f58039003bfd844515a1540d91 mining block 2... Block mined: 0000e2fb4e39130b839f5da622df7d76f70c8ef9d34d4012b7c078cabf07ab3e { "chain": [ { "nonce": 0, "index": 0, "timestamp": 1483225200, "data": "Genesis Block", "previousHash": null, "hash": "34054c41850bdf3f6f62dd60ae824dd35b98c872d420ed0dde942d0e54cd94d6" }, { "nonce": 185284, "index": 1, "timestamp": 1673950980, "data": "amount: 4", "previousHash": "34054c41850bdf3f6f62dd60ae824dd35b98c872d420ed0dde942d0e54cd94d6", "hash": "00008d618a2eac6e1624c7703245cf78750107f58039003bfd844515a1540d91" }, { "nonce": 99256, "index": 2, "timestamp": 1673950980, "data": "amount: 10", "previousHash": "00008d618a2eac6e1624c7703245cf78750107f58039003bfd844515a1540d91", "hash": "0000e2fb4e39130b839f5da622df7d76f70c8ef9d34d4012b7c078cabf07ab3e" } ], "difficulty": 4 }
Output for 7.4.33
mining block 1... Block mined: 0000a404f84b74a2cae3a3931e070e10666ca31493522626893c57221b625a64 mining block 2... Block mined: 000083c25c42196d4f92248a07e747b06296044c53b73455db87518dc65def53 { "chain": [ { "nonce": 0, "index": 0, "timestamp": 1483225200, "data": "Genesis Block", "previousHash": null, "hash": "34054c41850bdf3f6f62dd60ae824dd35b98c872d420ed0dde942d0e54cd94d6" }, { "nonce": 124753, "index": 1, "timestamp": 1673951064, "data": "amount: 4", "previousHash": "34054c41850bdf3f6f62dd60ae824dd35b98c872d420ed0dde942d0e54cd94d6", "hash": "0000a404f84b74a2cae3a3931e070e10666ca31493522626893c57221b625a64" }, { "nonce": 95231, "index": 2, "timestamp": 1673951064, "data": "amount: 10", "previousHash": "0000a404f84b74a2cae3a3931e070e10666ca31493522626893c57221b625a64", "hash": "000083c25c42196d4f92248a07e747b06296044c53b73455db87518dc65def53" } ], "difficulty": 4 }

preferences:
101.99 ms | 404 KiB | 92 Q