public static TransactionManager AddSignatures(this TransactionManager tm, ExpressChain chain, ExpressWalletAccount account) { if (account.IsMultiSigContract()) { var signers = chain.GetMultiSigAccounts(account); var publicKeys = signers.Select(s => s.GetKey() !.PublicKey).ToArray(); var sigCount = account.Contract.Parameters.Count; foreach (var signer in signers.Take(sigCount)) { var keyPair = signer.GetKey() ?? throw new Exception(); tm = tm.AddMultiSig(keyPair, sigCount, publicKeys); } return(tm); } else { return(tm.AddSignature(account.GetKey() !)); } }