static byte[] CreateSignatureRedeemScript(DevWalletAccount account) { var key = account.GetKey(); if (key == null) { throw new Exception("DevWalletAccount missing key"); } using var sb = new Neo.VM.ScriptBuilder(); sb.EmitPush(key.PublicKey.EncodePoint(true)); sb.Emit(Neo.VM.OpCode.CHECKSIG); return(sb.ToArray()); }
public static ScriptBuilder EmitPush(this ScriptBuilder sb, ISerializable data) { return(sb.EmitPush(data.ToArray())); }
public static ScriptBuilder EmitPush(this ScriptBuilder sb, object obj) { switch (obj) { case bool data: sb.EmitPush(data); break; case byte[] data: sb.EmitPush(data); break; case string data: sb.EmitPush(data); break; case BigInteger data: sb.EmitPush(data); break; case ISerializable data: sb.EmitPush(data); break; case sbyte data: sb.EmitPush(data); break; case byte data: sb.EmitPush(data); break; case short data: sb.EmitPush(data); break; case ushort data: sb.EmitPush(data); break; case int data: sb.EmitPush(data); break; case uint data: sb.EmitPush(data); break; case long data: sb.EmitPush(data); break; case ulong data: sb.EmitPush(data); break; case Enum data: sb.EmitPush(BigInteger.Parse(data.ToString("d"))); break; case null: sb.Emit(OpCode.PUSHNULL); break; default: throw new ArgumentException(); } return(sb); }