qos-qweb
Version:
qos js sdk
106 lines • 12.2 kB
JavaScript
import { Codec } from 'js-amino';
import nacl from 'tweetnacl';
import { accMul, Int64ToBuffer, stringToBuffer } from '.';
import { qosDecimal } from '../types/common';
import { ITX } from '../types/delegator';
import { PubKeyEd25519, Signature, StdTx } from '../types/tx';
import { getOriginAddress } from './TxSignData';
function registerCodec() {
const codec = new Codec();
codec.registerConcrete(new StdTx(), 'qbase/txs/stdtx', {});
codec.registerConcrete(new ITX(), 'stake/txs/TxCreateDelegation', {});
codec.registerConcrete(new PubKeyEd25519(), 'tendermint/PubKeyEd25519', {});
return codec;
}
function registerUnbondCodec() {
const codec = new Codec();
codec.registerConcrete(new StdTx(), 'qbase/txs/stdtx', {});
codec.registerConcrete(new ITX(), 'stake/txs/TxUnbondDelegation', {});
codec.registerConcrete(new PubKeyEd25519(), 'tendermint/PubKeyEd25519', {});
return codec;
}
export function signDelegatorTxMsg(oMsg) {
oMsg.tx.qos = accMul(oMsg.tx.qos, qosDecimal);
const signedMsg = makeTxSignMsg(oMsg);
// logger.debug('Delegator signedMsg: ')
// logger.info(JSON.stringify(signedMsg))
const signatureData = nacl.sign.detached(Buffer.from(signedMsg), oMsg.account.keypair.secretKey);
const codec = registerCodec();
const pubKey = new PubKeyEd25519([...oMsg.account.keypair.publicKey]);
const sig = new Signature(pubKey, [...signatureData], oMsg.nonce.toString());
const itx = new ITX(getOriginAddress(oMsg.account.address), getOriginAddress(oMsg.tx.to), oMsg.tx.qos.toString(), oMsg.tx.isCompound);
const stdtx = new StdTx(itx, [sig], oMsg.chainid, oMsg.maxGas.toString());
// const jsonTx = codec.marshalJson(stdtx)
// logger.debug('stdtx: ')
// logger.info(jsonTx)
const binary = codec.marshalBinary(stdtx);
// logger.debug(binary.toString())
return binary;
}
function makeTxSignMsg({ account, tx, chainid, maxGas, nonce }) {
let arrMsg = [];
// push buffer of orginaddres
const txMsgArray = composeData(account, tx);
arrMsg = arrMsg.concat(txMsgArray);
const chaidBufferArray = [...stringToBuffer(chainid)];
arrMsg = arrMsg.concat(chaidBufferArray);
arrMsg = arrMsg.concat([...Int64ToBuffer(maxGas)]);
arrMsg = arrMsg.concat([...Int64ToBuffer(nonce)]);
arrMsg = arrMsg.concat(chaidBufferArray);
return arrMsg;
}
function composeData(account, tx) {
// ret = append(ret, Delegator.Address...)
// ret = append(ret, ValidatorOwner.Address...)
// ret = append(ret, QOSAmount..)
// ret = append(ret, IsCompound)
let txMsgArray = [];
txMsgArray = txMsgArray.concat(getOriginAddress(account.address));
txMsgArray = txMsgArray.concat(getOriginAddress(tx.to));
txMsgArray = txMsgArray.concat([...Int64ToBuffer(tx.qos)]);
txMsgArray = txMsgArray.concat([...Buffer.from([Number(tx.isCompound)])]);
return txMsgArray;
}
export function signUnbondDelegatorTxMsg(oMsg) {
oMsg.tx.qos = accMul(oMsg.tx.qos, qosDecimal);
const signedMsg = makeUnbondTxSignMsg(oMsg);
// logger.debug('UnbondDelegator signedMsg: ')
// logger.info(JSON.stringify(signedMsg))
const signatureData = nacl.sign.detached(Buffer.from(signedMsg), oMsg.account.keypair.secretKey);
const codec = registerUnbondCodec();
const pubKey = new PubKeyEd25519([...oMsg.account.keypair.publicKey]);
const sig = new Signature(pubKey, [...signatureData], oMsg.nonce.toString());
const itx = new ITX(getOriginAddress(oMsg.account.address), getOriginAddress(oMsg.tx.to), oMsg.tx.qos.toString(), oMsg.tx.isUnbondAll);
const stdtx = new StdTx(itx, [sig], oMsg.chainid, oMsg.maxGas.toString());
// const jsonTx = codec.marshalJson(stdtx)
// logger.debug('UnbondDelegator stdtx: ')
// logger.info(jsonTx)
const binary = codec.marshalBinary(stdtx);
// logger.debug(binary.toString())
return binary;
}
function makeUnbondTxSignMsg({ account, tx, chainid, maxGas, nonce }) {
let arrMsg = [];
// push buffer of orginaddres
const txMsgArray = composeUnbondData(account, tx);
arrMsg = arrMsg.concat(txMsgArray);
const chaidBufferArray = [...stringToBuffer(chainid)];
arrMsg = arrMsg.concat(chaidBufferArray);
arrMsg = arrMsg.concat([...Int64ToBuffer(maxGas)]);
arrMsg = arrMsg.concat([...Int64ToBuffer(nonce)]);
arrMsg = arrMsg.concat(chaidBufferArray);
return arrMsg;
}
function composeUnbondData(account, tx) {
// ret = append(ret, Delegator.Address...)
// ret = append(ret, ValidatorOwner.Address...)
// ret = append(ret, QOSAmount..)
// ret = append(ret, IsCompound)
let txMsgArray = [];
txMsgArray = txMsgArray.concat(getOriginAddress(account.address));
txMsgArray = txMsgArray.concat(getOriginAddress(tx.to));
txMsgArray = txMsgArray.concat([...Int64ToBuffer(tx.qos)]);
txMsgArray = txMsgArray.concat([...Buffer.from([Number(tx.isUnbondAll)])]);
return txMsgArray;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVsZWdhdG9yU2lnbkRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS91dGlscy9EZWxlZ2F0b3JTaWduRGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFFMUQsT0FBTyxFQUFvQyxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVoRCxTQUFTLGFBQWE7SUFDcEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztJQUMxQixLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxLQUFLLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSw4QkFBOEIsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxhQUFhLEVBQUUsRUFBRSwwQkFBMEIsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1RSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLG1CQUFtQjtJQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0lBQzFCLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFLGlCQUFpQixFQUFFLEVB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