public override void SaveToStream(Stream s) { using (BinaryWriter bw = new BinaryWriter(s, Encoding.ASCII, true)) { bw.Write(SignerAccount); bw.Write(TargetAccount); bw.Write((ushort)TransactionType); bw.Write(NumberOfOperations); if (TransactionType == TransactionType.ListAccountForSale) { bw.Write(AccountPrice); bw.Write(AccountToPay); AccountKey.SaveToStream(s, false); if (NewPublicKey.CurveType != CurveType.Empty) { NewPublicKey.SaveToStream(s); } else { bw.Write((ushort)0); } bw.Write(LockedUntilBlock); } bw.Write(Fee); Payload.SaveToStream(bw); Signature.SaveToStream(s); } }
public override byte[] GetHash() { using (MemoryStream ms = new MemoryStream()) { using (BinaryWriter bw = new BinaryWriter(ms)) { bw.Write(SignerAccount); bw.Write(TargetAccount); bw.Write(NumberOfOperations); bw.Write(AccountPrice); bw.Write(AccountToPay); bw.Write(Fee); Payload.SaveToStream(bw, false); if (AccountKey?.PublicKey.X != null && AccountKey.PublicKey.X.Length > 0 && AccountKey.PublicKey.Y.Length > 0) { bw.Write((ushort)AccountKey.CurveType); bw.Write((byte[])AccountKey.PublicKey.X); bw.Write((byte[])AccountKey.PublicKey.Y); } else { bw.Write((ushort)0); } NewPublicKey.SaveToStream(ms, false); bw.Write(LockedUntilBlock); ms.Position = 0; return(ms.ToArray()); } } }