Exemple #1
0
                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());
                }
Exemple #2
0
 public static ScriptBuilder EmitPush(this ScriptBuilder sb, ISerializable data)
 {
     return(sb.EmitPush(data.ToArray()));
 }
Exemple #3
0
        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);
        }