Skip to content

Commit 720f1d3

Browse files
TomerHFBa0ngo
authored andcommitted
fix(@fireblocks/recovery-utility): 🐛 trc20 withdrawal bug fix
1 parent 3a55475 commit 720f1d3

File tree

3 files changed

+13
-8
lines changed
  • apps
    • recovery-relay/lib/wallets/TRC20
    • recovery-utility/renderer/lib/wallets/TRC20
  • packages/wallet-derivation/wallets/chains

3 files changed

+13
-8
lines changed

apps/recovery-relay/lib/wallets/TRC20/index.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@ export class TRC20 extends BaseTron implements ConnectedWallet {
7272

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

75-
extraParams.set('t', this.tokenAddress);
76-
extraParams.set('d', this.decimals);
77-
extraParams.set('m', metadata);
75+
extraParams.set(this.KEY_TOKEN_ADDRESS, this.tokenAddress);
76+
extraParams.set(this.KEY_DECIMALS, this.decimals);
77+
extraParams.set(this.KEY_METADATA, metadata);
7878

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

apps/recovery-utility/renderer/lib/wallets/TRC20/index.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@ export class TRC20 extends BaseTron implements SigningWallet {
1010
public async generateTx({ to, amount, feeRate, extraParams }: GenerateTxInput): Promise<TxPayload> {
1111
try {
1212
const tronWeb = require('tronweb');
13-
const metadata = extraParams?.get('m');
13+
const metadata = extraParams?.get(this.KEY_METADATA);
1414
metadata.fee_limit = feeRate;
15-
const decimals = extraParams?.get('d');
16-
const tokenAddress = extraParams?.get('t');
17-
15+
const decimals = extraParams?.get(this.KEY_DECIMALS);
16+
const tokenAddress = extraParams?.get(this.KEY_TOKEN_ADDRESS);
1817
const fixedAmount = amount * 10 ** decimals;
18+
19+
//serialized data - functionSelector(transfer) + toAddress + amount
1920
const data = `a9059cbb${tronWeb.address.toHex(to).replace('/^(41)/', '0x').padStart(64, '0')}${fixedAmount
2021
.toString(16)
2122
.padStart(64, '0')}`;
@@ -50,7 +51,7 @@ export class TRC20 extends BaseTron implements SigningWallet {
5051
tx.raw_data_hex = tronWeb.utils.transaction.txPbToRawDataHex(pb).toLowerCase();
5152
const signedTx = tronWeb.utils.crypto.signTransaction(Buffer.from(this.privateKey!.replace('0x', ''), 'hex'), tx);
5253

53-
//encode and compress for qr code
54+
//encode and compress to fit qr code limits
5455
const gzip = promisify(zlib.gzip);
5556
const compressedTx = (await gzip(JSON.stringify(signedTx))).toString('base64');
5657

packages/wallet-derivation/wallets/chains/Tron.ts

+4
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,8 @@ export class Tron extends ECDSAWallet {
3232
protected readonly KEY_TX = 't';
3333

3434
protected readonly KEY_METADATA = 'm';
35+
36+
protected readonly KEY_TOKEN_ADDRESS = 't';
37+
38+
protected readonly KEY_DECIMALS = 'd';
3539
}

0 commit comments

Comments
 (0)