UNPKG

nerve-sdk-js

Version:
46 lines (36 loc) 1.5 kB
var nerve = require('../../index'); var Serializers = require("../../api/serializers"); var cryptos = require("crypto"); var prikey2 = "3e73f764492e95362cf325bd7168d145110a75e447510c927612586c06b23e91"; var prikey1 = "6d10f3aa23018de6bc7d1ee52badd696f0db56082c62826ba822978fdf3a59fa"; var prikey3 = "f7bb391ab82ba9ec7a552955b2fe50d79eea085d7571e5e2480d1777bc171f5e"; var m = 2; var pubkeyArray = [nerve.getPubByPri(prikey1), nerve.getPubByPri(prikey2), nerve.getPubByPri(prikey3)]; //创建多签地址 function createMultiAddress(chainId, addressPrefix, m, pubkeyArray) { if (!m || m < 2 || m > 15) { console.log("m invalid"); return; } if (!pubkeyArray || pubkeyArray.length < m || pubkeyArray.length > 15) { console.log("pubkey array invalid"); return; } // 公钥排序 pubkeyArray = pubkeyArray.sort(function (s, t) { if (s < t) return -1; if (s > t) return 1; return 0; }); var pubSeria = new Serializers(); pubSeria.getBufWriter().writeUInt8(chainId); pubSeria.getBufWriter().writeUInt8(m); for (var i = 0; i < pubkeyArray.length; i++) { var pubkeyHex = pubkeyArray[i]; var pub = Buffer.from(pubkeyHex, 'hex'); pubSeria.getBufWriter().write(pub); } var multiPub = pubSeria.getBufWriter().toBuffer(); var address = nerve.getAddressByPub(chainId, 3, multiPub, addressPrefix); return address; } console.log(createMultiAddress(5, "TNVT", m, pubkeyArray)); console.log(createMultiAddress(9, "NERVE", m, pubkeyArray));