fromPubkeys method
TODO:: add tests later see: https://github.com/ontio/ontology-ts-sdk/blob/4a77b47090df55b81ed13d0eeb6e93c65a3851ff/test/transfer.test.ts
Implementation
static Future<ProgramBuilder> fromPubkeys(
List<PublicKey> pubkeys, int m) async {
ProgramBuilder prog = ProgramBuilder();
int n = pubkeys.length;
if (!(1 <= m && m <= n && n <= 1024))
throw ArgumentError('Wrong multi sig params');
Map<String, _Pubkey> pkMap = {};
List<Future<dynamic>> convertTasks = [];
var convertToPk = (PublicKey key) async {
var pk = await _Pubkey.from(key);
var kk = Convert.bytesToHexStr(key.raw);
pkMap[kk] = pk;
};
pubkeys.forEach((pk) => convertTasks.add(convertToPk(pk)));
await Future.wait(convertTasks);
pubkeys.sort((a, b) {
var ka = Convert.bytesToHexStr(a.raw);
var kb = Convert.bytesToHexStr(b.raw);
return comparePublicKeys(pkMap[ka], pkMap[kb]);
});
prog.pushInt(m);
pubkeys.forEach((k) => prog.pushRawBytes(k.raw));
prog.pushInt(n);
prog.pushOpcode(OpCode.checkmultisig);
return prog;
}