private bool OnImportMultisigAddress(string[] args) { if (NoWallet()) { return(true); } if (args.Length < 5) { Console.WriteLine("Error. Use at least 2 public keys to create a multisig address."); return(true); } int m = int.Parse(args[2]); int n = args.Length - 3; if (m < 1 || m > n || n > 1024) { Console.WriteLine("Error. Invalid parameters."); return(true); } ECPoint[] publicKeys = args.Skip(3).Select(p => ECPoint.Parse(p, ECCurve.Secp256r1)).ToArray(); Contract multiSignContract = Contract.CreateMultiSigContract(m, publicKeys); KeyPair keyPair = Program.Wallet.GetAccounts().FirstOrDefault(p => p.HasKey && publicKeys.Contains(p.GetKey().PublicKey))?.GetKey(); WalletAccount account = Program.Wallet.CreateAccount(multiSignContract, keyPair); if (Program.Wallet is NEP6Wallet wallet) { wallet.Save(); } Console.WriteLine("Multisig. Addr.: " + multiSignContract.Address); return(true); }
public WalletAccount GetAccount(ECPoint pubkey) { return(GetAccount(Contract.CreateSignatureRedeemScript(pubkey).ToScriptHash())); }