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 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 EncodeNetworkAddress(BinaryWriter writer, NetworkAddress networkAddress) { writer.WriteUInt64(networkAddress.Services); writer.WriteBytes(16, networkAddress.IPv6Address.ToArray()); writer.WriteUInt16BE(networkAddress.Port); }
public static void EncodeTxOutput(BinaryWriter writer, TxOutput txOutput) { writer.WriteUInt64(txOutput.Value); writer.WriteVarBytes(txOutput.ScriptPublicKey.ToArray()); }