public async Task SendBlock(Block block) { await Task.Yield(); var sendBlockMessage = Messaging.ConstructMessage("block", DataEncoder.EncodeBlock(block)); await SendMessageAsync(sendBlockMessage); }
public async Task SendTransaction(Transaction transaction) { await Task.Yield(); var sendTxMessage = Messaging.ConstructMessage("tx", DataEncoder.EncodeTransaction(transaction)); await SendMessageAsync(sendTxMessage); }
public async Task SendGetBlocks(ImmutableArray <UInt256> blockLocatorHashes, UInt256 hashStop) { await Task.Yield(); var getBlocksPayload = Messaging.ConstructGetBlocksPayload(blockLocatorHashes, hashStop); var getBlocksMessage = Messaging.ConstructMessage("getblocks", NodeEncoder.EncodeGetBlocksPayload(getBlocksPayload)); await SendMessageAsync(getBlocksMessage); }
public async Task SendGetData(ImmutableArray <InventoryVector> invVectors) { await Task.Yield(); var getDataPayload = Messaging.ConstructInventoryPayload(invVectors); var getDataMessage = Messaging.ConstructMessage("getdata", NodeEncoder.EncodeInventoryPayload(getDataPayload)); await SendMessageAsync(getDataMessage); }
public async Task SendVersion(IPEndPoint localEndPoint, IPEndPoint remoteEndPoint, UInt64 nodeId, UInt32 startBlockHeight) { await Task.Yield(); var versionPayload = Messaging.ConstructVersionPayload(localEndPoint, remoteEndPoint, nodeId, startBlockHeight); var versionMessage = Messaging.ConstructMessage("version", NodeEncoder.EncodeVersionPayload(versionPayload, withRelay: false)); await SendMessageAsync(versionMessage); }
public async Task SendInventory(ImmutableArray <InventoryVector> invVectors) { await Task.Yield(); var invPayload = Messaging.ConstructInventoryPayload(invVectors); var invMessage = Messaging.ConstructMessage("inv", NodeEncoder.EncodeInventoryPayload(invPayload)); await SendMessageAsync(invMessage); }
public async Task SendHeaders(ImmutableArray <BlockHeader> blockHeaders) { await Task.Yield(); using (var payloadStream = new MemoryStream()) using (var payloadWriter = new BinaryWriter(payloadStream)) { payloadWriter.WriteVarInt((UInt64)blockHeaders.Count); foreach (var blockHeader in blockHeaders) { DataEncoder.EncodeBlockHeader(payloadStream, blockHeader); payloadWriter.WriteVarInt(0); } await SendMessageAsync(Messaging.ConstructMessage("headers", payloadStream.ToArray())); } }
public async Task SendMessageAsync(string command) { await SendMessageAsync(Messaging.ConstructMessage(command, payload: new byte[0])); }