nerve-sdk-js
Version:
nerve nerve-js nerve-sdk nerve-js-sdk
44 lines (32 loc) • 2.01 kB
JavaScript
var nerve = require('../../index');
var txs = require("../../model/txs");
var multi = require("../../model/mutilsigntxsignatures");
var sdk = require('../../api/sdk');
var util = require("../api/util");
var BufferReader = require("../../utils/bufferreader");
nerve.customnet(5, "http://beta.public.nerve.network/");
var prikey2 = "3e73f764492e95362cf325bd7168d145110a75e447510c927612586c06b23e91";
var prikey1 = "6d10f3aa23018de6bc7d1ee52badd696f0db56082c62826ba822978fdf3a59fa";
var txHex = "02007e6330610a6d756c74692d74657374008c0117050003bc83930d55e1bb7978a29ae1ce81d1cf234b494c05000100d20400000000000000000000000000000000000000000000000000000000000008e6e4fc5449d20891000117050001ab7da01103b1359355cab6afc0d0550c0731c48205000100d20400000000000000000000000000000000000000000000000000000000000000000000000000006802032102362c64e15ab653132ec753e4a8c181ef720ec927466a09417a07877824781f57210224d86a584324fc8e92c6dba19c08926a7af77df884deec0d1c3b879a8f50720f2102962c7942851fa2c937be788a18693885276e3d9688b5997d9f02ebf2fef218db";
function signMultiSigTransaction(txHex, prikeyHex) {
var reader = new BufferReader(Buffer.from(txHex, "hex"), 0); //反序列化交易
var tx = new txs.Transaction();
tx.parse(reader); //签名
var sign = new multi.MultiTransactionSignatures(0, null);
var signReader = new BufferReader(tx.signatures, 0);
sign.parse(signReader);
var pubHex = nerve.getPubByPri(prikeyHex);
var pub = Buffer.from(pubHex, "hex");
var sigHex = sdk.signature(tx.getHash().toString('hex'), prikeyHex);
var signValue = Buffer.from(sigHex, 'hex');
sign.addSign(pub, signValue); //组装到交易中
tx.signatures = sign.serialize(); //序列化交易,并返回
console.log("txHash: " + tx.getHash().toString("hex"));
return tx.txSerialize().toString("hex");
}
txHex = signMultiSigTransaction(txHex, prikey1);
txHex = signMultiSigTransaction(txHex, prikey2);
console.log("txHex-result:");
console.log(txHex);
var result = util.broadcastTx(txHex);
console.log(result);