The D'CENT Web SDK provides functions for signing transaction of coins.
getTezosSignedTransaction()
import { TezosToolkit, Estimate } from '@taquito/taquito'
import * as tezosUtils from '@taquito/utils'
import { Tzip12Module, tzip12 } from '@taquito/tzip12'
import BigNumber from 'bignumber.js'
const Tezos = new TezosToolkit('https://YOUR_PREFERRED_RPC_URL');
const TezosContext = Tezos._context
// https://github.com/ecadlabs/taquito/blob/3640373e5acd160767234e10bab4fe18ac3cb586/packages/taquito/src/prepare/prepare-provider.ts#L868
const BlockHash = await TezosContext.readProvider.getBlockHash('head~2')
const BlockProto = await TezosContext.readProvider.getNextProtocol('head')
const counter = Number(await TezosContext.readProvider.getCounter(account.recvAddress, 'head'))
let ops = []
ops.push({
kind: 'transaction',
fee,
amount: DcentWebConnector.unitConverter(amount, decimals).num.toString(),
gas_limit,
storage_limit,
destination: toAddr,
counter: (counter + 1 + index).toString(),
source: recvAddress,
})
const prepared = {
opOb: {
branch: BlockHash,
contents: ops,
protocol: BlockProto
},
counter: counter
}
const forgedBytes = await Tezos.estimate.forge(prepared)
const sigHash = '03' + forgedBytes.opbytes
const transactionJson = {
coinType: DcentWebConnector.coinType.TEZOS,
sigHash: sigHash,
path: `m/44'/1729'/0'/0/0`,
decimals, // 6,
fee: fee,
symbol: 'XTZ',
}
var result
try {
result = await DcentWebConnector.getTezosSignedTransaction(transactionJson);
} catch (e) {
console.log(e)
result = e
}
{
"header": {
"version": "1.0",
"response_from": "tezos",
"status": "success"
},
"body": {
"command": "transaction",
"parameter": {
"signed_tx": "0x31aa13b5e04cb6fc6381ea0520bf7f6727ebdb6e96cd7ca8625bb3e3dd36cf0e2cee4ece13aa9f7ddc09ee10c74aa00af954201829d8016317f10f5a921dcc0d"
}
}
}