public void _When_finding_hash_it_does_not_load_headers() { _blockTree.FindHash(123).Returns(TestItem.KeccakA); Keccak result = _syncServer.FindHash(123); _blockTree.DidNotReceive().FindHeader(Arg.Any <long>(), Arg.Any <BlockTreeLookupOptions>()); _blockTree.DidNotReceive().FindHeader(Arg.Any <Keccak>(), Arg.Any <BlockTreeLookupOptions>()); _blockTree.DidNotReceive().FindBlock(Arg.Any <Keccak>(), Arg.Any <BlockTreeLookupOptions>()); Assert.AreEqual(TestItem.KeccakA, result); }
public byte[] GetBlockRlp(long number) { Keccak hash = _blockTree.FindHash(number); if (hash == null) { return(null); } return(_dbMappings[DbNames.Blocks].Get(hash)); }
private void PrepareHeadersResponse(HeadersSyncBatch headersSyncBatch, LatencySyncPeerMock syncPeer, IBlockTree tree) { if (headersSyncBatch != null) { long startNumber = headersSyncBatch.StartNumber; if (_maliciousByShiftedOneBack.Contains(syncPeer)) { startNumber++; TestContext.WriteLine($"{_time,6} | SYNC PEER {syncPeer.Node:s} WILL SEND SHIFTED MESSAGES ({startNumber} INSTEAD OF {headersSyncBatch.StartNumber})"); } else if (_maliciousByShiftedOneForward.Contains(syncPeer)) { startNumber = Math.Max(0, startNumber - 1); TestContext.WriteLine($"{_time,6} | SYNC PEER {syncPeer.Node:s} WILL SEND SHIFTED MESSAGES ({startNumber} INSTEAD OF {headersSyncBatch.StartNumber})"); } Keccak hash = tree.FindHash(startNumber); if (hash == null) { TestContext.WriteLine($"{_time,6} | SYNC PEER {syncPeer.Node:s} CANNOT FIND {headersSyncBatch.StartNumber}"); return; } int requestSize = headersSyncBatch.RequestSize; if (_incorrectByTooLongMessages.Contains(syncPeer)) { requestSize *= 2; TestContext.WriteLine($"{_time,6} | SYNC PEER {syncPeer.Node:s} WILL SEND TOO LONG MESSAGE ({requestSize} INSTEAD OF {headersSyncBatch.RequestSize})"); } else if (_incorrectByTooShortMessages.Contains(syncPeer)) { requestSize = Math.Max(1, requestSize / 2); TestContext.WriteLine($"{_time,6} | SYNC PEER {syncPeer.Node:s} WILL SEND TOO SHORT MESSAGE ({requestSize} INSTEAD OF {headersSyncBatch.RequestSize})"); } BlockHeader[] headers = tree.FindHeaders(hash, requestSize, 0, false); if (_invalidBlocks.ContainsKey(syncPeer)) { for (int i = 0; i < headers.Length; i++) { if (_invalidBlocks[syncPeer].Contains(headers[i].Number)) { TestContext.WriteLine($"{_time,6} | SYNC PEER {syncPeer.Node:s} WILL SEND AN INVALID BLOCK AT {headers[i].Number}"); headers[i] = Build.A.Block.WithDifficulty(1).TestObject.Header; } } } if (headers.Length > 3 && _maliciousByRepetition.Contains(syncPeer)) { headers[^ 1] = headers[^ 3];
public Keccak FindHash(long number) { try { Keccak hash = _blockTree.FindHash(number); return(hash); } catch (Exception) { _logger.Debug("Could not handle a request for block by number since multiple blocks are available at the level and none is marked as canonical. (a fix is coming)"); } return(null); }
public Keccak FindHash(long blockNumber) { return(_blockTree.FindHash(blockNumber)); }
public Keccak FindHash(long blockNumber) => _wrapped.FindHash(blockNumber);
public Keccak FindHash(long blockNumber) { return(_wrapped.FindHash(blockNumber)); }