public static void EncodeVersionPayload(BinaryWriter writer, VersionPayload versionPayload, bool withRelay) { writer.WriteUInt32(versionPayload.ProtocolVersion); writer.WriteUInt64(versionPayload.ServicesBitfield); writer.WriteUInt64((ulong)versionPayload.Time.ToUnixTimeSeconds()); EncodeNetworkAddress(writer, versionPayload.RemoteAddress); EncodeNetworkAddress(writer, versionPayload.LocalAddress); writer.WriteUInt64(versionPayload.Nonce); writer.WriteVarString(versionPayload.UserAgent); writer.WriteUInt32(versionPayload.StartBlockHeight); if (withRelay) writer.WriteBool(versionPayload.Relay); }
public static void EncodeBlockTxNode(BinaryWriter writer, BlockTxNode blockTx) { writer.WriteInt32(blockTx.Index); writer.WriteInt32(blockTx.Depth); writer.WriteUInt256(blockTx.Hash); writer.WriteBool(blockTx.Pruned); if (!blockTx.Pruned) writer.WriteBytes(blockTx.TxBytes.ToArray()); }
public static void EncodeUnspentTx(BinaryWriter writer, UnspentTx unspentTx) { writer.WriteUInt256(unspentTx.TxHash); writer.WriteInt32(unspentTx.BlockIndex); writer.WriteInt32(unspentTx.TxIndex); writer.WriteUInt32(unspentTx.TxVersion); writer.WriteBool(unspentTx.IsCoinbase); writer.WriteVarBytes(unspentTx.OutputStates.ToByteArray()); writer.WriteInt32(unspentTx.OutputStates.Length); }
public static void EncodePrevTxOutput(BinaryWriter writer, PrevTxOutput txOutput) { writer.WriteUInt64(txOutput.Value); writer.WriteVarBytes(txOutput.ScriptPublicKey.ToArray()); writer.WriteInt32(txOutput.BlockHeight); writer.WriteInt32(txOutput.TxIndex); writer.WriteUInt32(txOutput.TxVersion); writer.WriteBool(txOutput.IsCoinbase); }
public static void EncodeVersionPayload(Stream stream, VersionPayload versionPayload, bool withRelay) { using (var writer = new BinaryWriter(stream, Encoding.ASCII, leaveOpen: true)) { writer.Write4Bytes(versionPayload.ProtocolVersion); writer.Write8Bytes(versionPayload.ServicesBitfield); writer.Write8Bytes(versionPayload.UnixTime); EncodeNetworkAddress(stream, versionPayload.RemoteAddress); EncodeNetworkAddress(stream, versionPayload.LocalAddress); writer.Write8Bytes(versionPayload.Nonce); writer.WriteVarString(versionPayload.UserAgent); writer.Write4Bytes(versionPayload.StartBlockHeight); if (withRelay) writer.WriteBool(versionPayload.Relay); } }
public static void EncodeBlockTx(BinaryWriter writer, BlockTx blockTx) { var txBytes = blockTx.Transaction != null ? EncodeTransaction(blockTx.Transaction) : new byte[0]; writer.WriteInt32(blockTx.Index); writer.WriteInt32(blockTx.Depth); writer.WriteUInt256(blockTx.Hash); writer.WriteBool(blockTx.Pruned); if (!blockTx.Pruned) EncodeTransaction(writer, blockTx.Transaction); }