基本-マルチシグTxの送金
このレッスンでは、マルチシグトランザクションを操作する方法を示します。
quras-jsモジュールを使用して、マルチシグウォレットを管理できます。次に、このステップバイステップでお見せします。
Txを生成する
マルチシグウォレットは一般的なウォレットと同じです。 違いは、マルチシグウォレットのトランザクションでは、ブロックに複数の署名を追加する必要があることです。
マルチシグウォレットは、アセットトランザクションとクレームトランザクションの送信をサポートします。また、トランザクションの生成は一般的なウォレットと同じです。
Basic- Sending Asset
Basic- Claiming Gas
マルチシグTxを作成する
Multi-Sig txには、すべてのメンバーのpubkeyが必要です。したがって、マルチシグtxを作成する前に、すべてのメンバーのpubkeyを取得する必要があります。
Quras.api.qurasDB.getMyMultiSignMemberPubkeys(Quras.CONST.QURAS_NETWORK.MAIN, 'Ddb6XJozy18AbJx2Nnmh7Q8rVHzcSM2HYd')
.then((data) => {

    if (data.length < 1) throw new Error("There is no members");
    testTx.createMultiSign(data, 'e4fdf1d4d00bc9597d9a94bf880810221501289f96c0ac89eed1a19a334785b0'); // Sign the transaction using private key
})
.catch((error) =>{
    console.log("error");
}); 
マルチシグウォレットのTxデータを中継する
マルチシグウォレットには複数のウォレットが含まれており、マルチシグtxデータを相互に送信する必要があります。
Quras.tx.getMultiSignTxRawData(tx) // Get raw data of multi-sig tx.
var tx = Quras.tx.Transaction.getMultiSignTx(rawdata); // Get Multi-Sig tx from raw data.
マルチシグTxに署名を追加
マルチシグウォレットデータを受信したら、秘密鍵を使用して署名をトランザクションに追加します。
tx.joinMultiSign('8488eb4be90c73650723277c43464f751b976c0954f0cc305ed1260dbc87f7d0'); // Sign the transaction using private key
マルチシグTxの完了を確認します
マルチシグtxにMath.floor(n/2) + 1 を超える署名がある場合、トランザクションをブロックに追加できます。ここで、nはマルチシグウォレットのメンバー数です。
tx.isCompletedMultiSign();
マルチシグTxを完了してブロードキャストする
トランザクションにMath.floor(n/2) + 1を超える署名がある場合は、トランザクションをRPCサーバーに送信する必要があります。
tx = tx.completeMultiSignTx();

const rpcServer = new Quras.rpc.RPCClient(Quras.CONST.QURAS_NETWORK.MAIN);
rpcServer.sendRawTransaction(tx.serialize()) // Send the transaction to RPC Server.
.then((data) => {
    console.log(data);
})
.catch ((error) => {
    console.log(error);
});