Presentation is loading. Please wait.

Presentation is loading. Please wait.

Bitcoin: Data flow.

Similar presentations


Presentation on theme: "Bitcoin: Data flow."— Presentation transcript:

1 Bitcoin: Data flow

2 Transaction ID Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass ad43f560f645b5a28d002cdc086405c57d6560a260 Previous Block Hash Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc 1,180,923,195.26 Difficulty Guess 2 Nonce Guess 3000 Nonce Guess 1 Nonce Nonce Mining f7de2a020d bf1dc4b75ef11eed2eede55249f0472 Hash for Block Timestamp: Timestamps are embedded in every calculation involved in generating the block. This makes the blockchain “immutable” as malicious actors can’t change previous blocks, especially after 6 blocks have been added to that block (i.e. which is why online retailers wait 60 minutes before accepting payment) Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

3 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P
Sender’s address 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P

4 Sender’s address Recipient's address
18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK 

5 Transaction ID Sender’s address Recipient's address
18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18

6 Transaction ID Sender’s address Recipient's address
Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

7 Transaction ID Sender’s address Recipient's address
Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Pass Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

8 Transaction ID Sender’s address Recipient's address
Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Mining Node Transaction pool Pass Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

9 Transaction ID Block 277298 Sender’s address Recipient's address
Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Mining Node Transaction pool Pass Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

10 Transaction ID Block 277298 Sender’s address Recipient's address
Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) Mining Node Transaction pool Pass Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

11 Transaction ID Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc Mining Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

12 Transaction ID Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass ad43f560f645b5a28d002cdc086405c57d6560a260 Previous Block Hash Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc Mining Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

13 Transaction ID Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass ad43f560f645b5a28d002cdc086405c57d6560a260 Previous Block Hash Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc 1,180,923,195.26 Difficulty Mining Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

14 Transaction ID Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass ad43f560f645b5a28d002cdc086405c57d6560a260 Previous Block Hash Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc 1,180,923,195.26 Difficulty Many nonce values can satisfy this condition; miners generate millions of values to “win” the bitcoins What is the Nonce? Mining f7de2a020d bf1dc4b75ef11eed2eede55249f0472 Hash for Block Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

15 Transaction ID Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass ad43f560f645b5a28d002cdc086405c57d6560a260 Previous Block Hash Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc 1,180,923,195.26 Difficulty Guess 1 Nonce Mining f7de2a020d bf1dc4b75ef11eed2eede55249f0472 Hash for Block Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

16 Transaction ID WRONG!!! Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass ad43f560f645b5a28d002cdc086405c57d6560a260 Previous Block Hash Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc 1,180,923,195.26 Difficulty WRONG!!! Guess 1 Nonce Mining f7de2a020d bf1dc4b75ef11eed2eede55249f0472 Hash for Block Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

17 Transaction ID Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass ad43f560f645b5a28d002cdc086405c57d6560a260 Previous Block Hash Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc 1,180,923,195.26 Difficulty Guess 2 Nonce Mining f7de2a020d bf1dc4b75ef11eed2eede55249f0472 Hash for Block Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

18 Transaction ID WRONG!!! Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass ad43f560f645b5a28d002cdc086405c57d6560a260 Previous Block Hash Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc 1,180,923,195.26 Difficulty WRONG!!! Guess 2 Nonce Mining f7de2a020d bf1dc4b75ef11eed2eede55249f0472 Hash for Block Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

19 Transaction ID Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass ad43f560f645b5a28d002cdc086405c57d6560a260 Previous Block Hash Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc 1,180,923,195.26 Difficulty Guess 3000 Nonce Mining f7de2a020d bf1dc4b75ef11eed2eede55249f0472 Hash for Block Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

20 Transaction ID WRONG!!! Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass ad43f560f645b5a28d002cdc086405c57d6560a260 Previous Block Hash Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc 1,180,923,195.26 Difficulty WRONG!!! Guess 3000 Nonce Mining f7de2a020d bf1dc4b75ef11eed2eede55249f0472 Hash for Block Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

21 Transaction ID Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass ad43f560f645b5a28d002cdc086405c57d6560a260 Previous Block Hash Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc 1,180,923,195.26 Difficulty Guess 90,000 Nonce Mining f7de2a020d bf1dc4b75ef11eed2eede55249f0472 Hash for Block Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

22 Transaction ID WRONG!!! Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass ad43f560f645b5a28d002cdc086405c57d6560a260 Previous Block Hash Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc 1,180,923,195.26 Difficulty WRONG!!! Guess 90,000 Nonce Mining f7de2a020d bf1dc4b75ef11eed2eede55249f0472 Hash for Block Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

23 Transaction ID Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass ad43f560f645b5a28d002cdc086405c57d6560a260 Previous Block Hash Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc 1,180,923,195.26 Difficulty Nonce Mining f7de2a020d bf1dc4b75ef11eed2eede55249f0472 Hash for Block Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

24 Transaction ID Winner! Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass ad43f560f645b5a28d002cdc086405c57d6560a260 Previous Block Hash Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc 1,180,923,195.26 Difficulty Winner! Nonce Mining f7de2a020d bf1dc4b75ef11eed2eede55249f0472 Hash for Block Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

25 Transaction ID Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass ad43f560f645b5a28d002cdc086405c57d6560a260 Previous Block Hash Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc 1,180,923,195.26 Difficulty Nonce Mining f7de2a020d bf1dc4b75ef11eed2eede55249f0472 Hash for Block Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

26 Transaction ID Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass ad43f560f645b5a28d002cdc086405c57d6560a260 Previous Block Hash Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc 1,180,923,195.26 Difficulty Nonce Mining f7de2a020d bf1dc4b75ef11eed2eede55249f0472 Hash for Block Timestamp: Timestamps are embedded in every calculation involved in generating the block. This makes the blockchain “immutable” as malicious actors can’t change previous blocks, especially after 6 blocks have been added to that block (i.e. which is why online retailers wait 60 minutes before accepting payment) Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

27 Transaction ID Mining Block 277298 Sender’s address
Recipient's address Transaction ID Node checks the transaction for the following: The transaction’s syntax and data structure must be correct. Neither lists of inputs or outputs are empty. The transaction size in bytes is less than MAX_BLOCK_SIZE. Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0). None of the inputs have hash=0, N=–1 (coinbase transactions should not be relayed). nLockTime is less than or equal to INT_MAX. The transaction size in bytes is greater than or equal to 100. The number of signature operations contained in the transaction is less than the signature operation limit. The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions). A matching transaction in the pool, or in a block in the main branch, must exist. For each input, if the referenced output exists in any other transaction in the pool, the transaction must be rejected. For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool. For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations. For each input, the referenced output must exist and cannot already be spent. Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0). Reject if the sum of input values is less than sum of output values. Reject if transaction fee would be too low to get into an empty block. The unlocking scripts for each input must validate against the corresponding output locking scripts. Initial Node 18iWVBbk8tA9bbipS1evviVLP4eE5ga51P 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK  7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 Each transaction contributes to the Merkle Root; enables Simple Payment Verification (SPV) ca0f8e21006b8e06753c8275b64786e26b5d0f81e6cd467b827447edb840aba5 Merkle Root Mining Node Transaction pool Pass ad43f560f645b5a28d002cdc086405c57d6560a260 Previous Block Hash Block 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 1d17177de4dc9b5ccaec6fb7aec ded6c6f0ab19cad1496df07001f 95dd94e5b91e75c74b936e991afbb6fbff5343c3563ce9acbe d62e3a7 6b a687dc3cede1975bbbe905665e600ccd24087aabf5662b3a2ed7e77 ce6ef83ae8128e ec a52eebae4b17e07d507c98b52b781 07021d339fa764bd f54acc1cb2fd88c2558cd e96d9b0afeae etc 1,180,923,195.26 Difficulty Nonce Mining f7de2a020d bf1dc4b75ef11eed2eede55249f0472 Hash for Block Block propagates to the Bitcoin Network: Other nodes check the hash by running it through the SHA-256 hash function and confirm that the miner has properly checked the transaction. If more the 51% agree, then it is accepted as valid and added to shared blockchain ledger and it will become part of the immutable record. Note: Total unspent transactions (UTXO) for each wallet is determined by the movement of bitcoin from one address to another; i.e. bitcoin are not maintained in the wallet per se.

28 Notes See the following links for more info on the preceding transaction flow: Initial checks: Makes sure balance is non-zero UTXO, i.e. unspent transactions; ledger points from one movement to another to address, i.e. “the audit trail”, Also, transactions move back & forth, e.g. A  B to send 5, needs to send 10, and then B sends 5 back Proof of work: Consensus: Entire network comes to a consensus to the current state of the ledger Multiple nonces can satisfy the target hash; i.e. the target hash is not static, it’s criteria is floating Difficulty level is set based on parameters by the number of zeros below the target ( Date & Time; for every calc of the mining bit, includes date and time; people call the immutability (also speak to block depth); 6 block concept, the say mathematical impossible to have a side chain that is longer than 6 blocks Incentives Work to generate a 51% attack is more expensive than trying to mine bitcoins, also get fees in addition to the mining reward. If attack is successful in creating counterfeit bitcoins, the attacker’s bitcoins worthless as people will lose faith in the system. Doesn’t account for attacker who is just trying to destroy the protocol who has no stake in the system. Open-source Bitcoin relies on consensus from the bitcoin developer community. i.e. there was a disagreement on how much memory each transaction should be allocated (currently 1MB; wanted to expand it to 2 or 5M, but the community decided to keep it as is) Private entities, consortiums would need greater control and likely need a permissioned blockchain where the network can be configured to meet their needs. Wallets: If private keys are compromised, then bitcoins can be stolne (e.g. Mt. Gox hack) have multi-signature wallets to prevent this. Simplified payment verification (SPV): Can use SPV to verify transactions instead of downloading the whole +70GB blockchain ledger


Download ppt "Bitcoin: Data flow."

Similar presentations


Ads by Google