Skip to content

Commit

Permalink
fix(@fireblocks/recovery-utility): 🐛 trc20 withdrawal bug fix
Browse files Browse the repository at this point in the history
  • Loading branch information
TomerHFB authored and a0ngo committed Feb 12, 2025
1 parent 3a55475 commit 720f1d3
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 8 deletions.
6 changes: 3 additions & 3 deletions apps/recovery-relay/lib/wallets/TRC20/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,9 @@ export class TRC20 extends BaseTron implements ConnectedWallet {

const extraParams = new Map<string, any>();

extraParams.set('t', this.tokenAddress);
extraParams.set('d', this.decimals);
extraParams.set('m', metadata);
extraParams.set(this.KEY_TOKEN_ADDRESS, this.tokenAddress);
extraParams.set(this.KEY_DECIMALS, this.decimals);
extraParams.set(this.KEY_METADATA, metadata);

const feeRate = (await this.estimateGas()) ?? 40_000_000;

Expand Down
11 changes: 6 additions & 5 deletions apps/recovery-utility/renderer/lib/wallets/TRC20/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,13 @@ export class TRC20 extends BaseTron implements SigningWallet {
public async generateTx({ to, amount, feeRate, extraParams }: GenerateTxInput): Promise<TxPayload> {
try {
const tronWeb = require('tronweb');
const metadata = extraParams?.get('m');
const metadata = extraParams?.get(this.KEY_METADATA);
metadata.fee_limit = feeRate;
const decimals = extraParams?.get('d');
const tokenAddress = extraParams?.get('t');

const decimals = extraParams?.get(this.KEY_DECIMALS);
const tokenAddress = extraParams?.get(this.KEY_TOKEN_ADDRESS);
const fixedAmount = amount * 10 ** decimals;

//serialized data - functionSelector(transfer) + toAddress + amount
const data = `a9059cbb${tronWeb.address.toHex(to).replace('/^(41)/', '0x').padStart(64, '0')}${fixedAmount
.toString(16)
.padStart(64, '0')}`;
Expand Down Expand Up @@ -50,7 +51,7 @@ export class TRC20 extends BaseTron implements SigningWallet {
tx.raw_data_hex = tronWeb.utils.transaction.txPbToRawDataHex(pb).toLowerCase();
const signedTx = tronWeb.utils.crypto.signTransaction(Buffer.from(this.privateKey!.replace('0x', ''), 'hex'), tx);

//encode and compress for qr code
//encode and compress to fit qr code limits
const gzip = promisify(zlib.gzip);
const compressedTx = (await gzip(JSON.stringify(signedTx))).toString('base64');

Expand Down
4 changes: 4 additions & 0 deletions packages/wallet-derivation/wallets/chains/Tron.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,8 @@ export class Tron extends ECDSAWallet {
protected readonly KEY_TX = 't';

protected readonly KEY_METADATA = 'm';

protected readonly KEY_TOKEN_ADDRESS = 't';

protected readonly KEY_DECIMALS = 'd';
}

0 comments on commit 720f1d3

Please sign in to comment.