import message from "@cosmostation/cosmosjs/src/messages/proto";
// signDoc = (1)txBody + (2)authInfo
// ---------------------------------- (1)txBody ----------------------------------
const pubKeyAny = new message.google.protobuf.Any({
type_url: '/cosmos.crypto.secp256k1.PubKey',
value: Buffer.from('0a21ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'hex') //temp value
})
const msgSend = new message.cosmos.bank.v1beta1.MsgSend({
from_address: recAddress,
to_address: toAddress,
amount: [{ denom: "uatom", amount: String(100000) }] // 6 decimal places (1000000 uatom = 1 ATOM)
});
const msgSendAny = new message.google.protobuf.Any({
type_url: "/cosmos.bank.v1beta1.MsgSend",
value: message.cosmos.bank.v1beta1.MsgSend.encode(msgSend).finish()
});
const txBody = new message.cosmos.tx.v1beta1.TxBody({ messages: [msgSendAny], memo: "" });
// --------------------------------- (2)authInfo ---------------------------------
const signerInfo = new message.cosmos.tx.v1beta1.SignerInfo({
public_key: pubKeyAny,
mode_info: { single: { mode: message.cosmos.tx.signing.v1beta1.SignMode.SIGN_MODE_DIRECT } },
sequence // nonce
});
const feeValue = new message.cosmos.tx.v1beta1.Fee({
amount: [{ denom: "uatom", amount: String(5000) }],
gas_limit: 200000
});
const authInfo = new message.cosmos.tx.v1beta1.AuthInfo({ signer_infos: [signerInfo], fee: feeValue });
const bodyBytes = message.cosmos.tx.v1beta1.TxBody.encode(txBody).finish()
const authInfoBytes = message.cosmos.tx.v1beta1.AuthInfo.encode(authInfo).finish()
const signDoc = new message.cosmos.tx.v1beta1.SignDoc({
body_bytes: bodyBytes,
auth_info_bytes: authInfoBytes,
chain_id,
account_number,
})
let signMessage = message.cosmos.tx.v1beta1.SignDoc.encode(signDoc).finish()
const sigHash = Buffer.from(signMessage).toString('hex')
const transactionJson = {
coinType: DcentWebConnector.coinType.COSMOS, // or COREUM
sigHash: sigHash,
path: `m/44'/118'/0'/0/0`, // (COREUM -> m/44'/990'/0'/0/0)
decimals, // 6
fee,
symbol: 'ATOM', // (COREUM -> CORE)
}
var result
try {
result = await DcentWebConnector.getCosmomsSignedTransaction(transactionJson);
} catch (e) {
console.log(e)
result = e
}