public static Block GetBlock(this IPersistence persistence, UInt256 hash) { TrimmedBlock state = persistence.Blocks.TryGet(hash); if (state == null) { return(null); } if (!state.IsBlock) { return(null); } return(state.GetBlock(persistence.Transactions)); }
public Block GetBlock(UInt256 hash) { TrimmedBlock state = Blocks.TryGet(hash); if (state == null) { return(null); } if (!state.IsBlock) { return(null); } return(state.GetBlock(Transactions)); }
public void TestGetBlock() { var snapshot = Blockchain.Singleton.GetSnapshot(); var tx1 = TestUtils.GetTransaction(); tx1.Script = new byte[] { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }; var state1 = new TransactionState { Transaction = tx1, BlockIndex = 1 }; var tx2 = TestUtils.GetTransaction(); tx2.Script = new byte[] { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02 }; var state2 = new TransactionState { Transaction = tx2, BlockIndex = 1 }; snapshot.Transactions.Add(tx1.Hash, state1); snapshot.Transactions.Add(tx2.Hash, state2); TrimmedBlock tblock = GetTrimmedBlockWithNoTransaction(); tblock.Hashes = new UInt256[] { tx1.Hash, tx2.Hash }; Block block = tblock.GetBlock(snapshot.Transactions); block.Index.Should().Be(1); block.MerkleRoot.Should().Be(UInt256.Parse("0xa400ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff02")); block.Transactions.Length.Should().Be(1); block.Transactions[0].Hash.Should().Be(tx2.Hash); }
public void TestGetBlock() { var cache = new TestDataCache <UInt256, TransactionState>(); var tx1 = TestUtils.GetTransaction(); tx1.Script = new byte[] { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }; var state1 = new TransactionState { Transaction = tx1, BlockIndex = 1 }; var tx2 = TestUtils.GetTransaction(); tx2.Script = new byte[] { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02 }; var state2 = new TransactionState { Transaction = tx2, BlockIndex = 1 }; cache.Add(tx1.Hash, state1); cache.Add(tx2.Hash, state2); TrimmedBlock tblock = GetTrimmedBlockWithNoTransaction(); tblock.Hashes = new UInt256[] { tx1.Hash, tx2.Hash }; Block block = tblock.GetBlock(cache); block.Index.Should().Be(1); block.MerkleRoot.Should().Be(UInt256.Parse("0xa400ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff02")); block.Transactions.Length.Should().Be(1); block.Transactions[0].Hash.Should().Be(tx2.Hash); }