@hyperlane-xyz/tron-sdk 21.1.5 → 22.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ethers/TronJsonRpcProvider.d.ts +5 -0
- package/dist/ethers/TronJsonRpcProvider.d.ts.map +1 -1
- package/dist/ethers/TronJsonRpcProvider.js +8 -0
- package/dist/ethers/TronJsonRpcProvider.js.map +1 -1
- package/dist/ethers/TronWallet.d.ts +14 -3
- package/dist/ethers/TronWallet.d.ts.map +1 -1
- package/dist/ethers/TronWallet.js +92 -58
- package/dist/ethers/TronWallet.js.map +1 -1
- package/dist/ethers/index.d.ts +1 -1
- package/dist/ethers/index.d.ts.map +1 -1
- package/dist/ethers/index.js +1 -1
- package/dist/ethers/index.js.map +1 -1
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +19 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -10,11 +10,16 @@ import { providers } from 'ethers';
|
|
|
10
10
|
* This provider handles these gaps by returning appropriate defaults.
|
|
11
11
|
*/
|
|
12
12
|
export declare class TronJsonRpcProvider extends providers.JsonRpcProvider {
|
|
13
|
+
host: string;
|
|
13
14
|
constructor(url: string, network?: providers.Networkish);
|
|
14
15
|
/**
|
|
15
16
|
* Tron doesn't use nonces - always return 0.
|
|
16
17
|
*/
|
|
17
18
|
getTransactionCount(_addressOrName: string, _blockTag?: providers.BlockTag): Promise<number>;
|
|
19
|
+
/**
|
|
20
|
+
* Tron doesn't support ENS - return the name as-is.
|
|
21
|
+
*/
|
|
22
|
+
resolveName(name: string): Promise<string>;
|
|
18
23
|
/**
|
|
19
24
|
* Return legacy gas pricing only - Tron doesn't support EIP-1559.
|
|
20
25
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TronJsonRpcProvider.d.ts","sourceRoot":"","sources":["../../src/ethers/TronJsonRpcProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC;;;;;;;;;GASG;AACH,qBAAa,mBAAoB,SAAQ,SAAS,CAAC,eAAe;
|
|
1
|
+
{"version":3,"file":"TronJsonRpcProvider.d.ts","sourceRoot":"","sources":["../../src/ethers/TronJsonRpcProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC;;;;;;;;;GASG;AACH,qBAAa,mBAAoB,SAAQ,SAAS,CAAC,eAAe;IACzD,IAAI,EAAE,MAAM,CAAC;gBACR,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,UAAU;IAOvD;;OAEG;IACG,mBAAmB,CACvB,cAAc,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,SAAS,CAAC,QAAQ,GAC7B,OAAO,CAAC,MAAM,CAAC;IAIlB;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;CAS/C"}
|
|
@@ -10,10 +10,12 @@ import { providers } from 'ethers';
|
|
|
10
10
|
* This provider handles these gaps by returning appropriate defaults.
|
|
11
11
|
*/
|
|
12
12
|
export class TronJsonRpcProvider extends providers.JsonRpcProvider {
|
|
13
|
+
host;
|
|
13
14
|
constructor(url, network) {
|
|
14
15
|
// Ensure we're pointing to the /jsonrpc endpoint
|
|
15
16
|
const jsonRpcUrl = url.endsWith('/jsonrpc') ? url : `${url}/jsonrpc`;
|
|
16
17
|
super(jsonRpcUrl, network);
|
|
18
|
+
this.host = jsonRpcUrl;
|
|
17
19
|
}
|
|
18
20
|
/**
|
|
19
21
|
* Tron doesn't use nonces - always return 0.
|
|
@@ -21,6 +23,12 @@ export class TronJsonRpcProvider extends providers.JsonRpcProvider {
|
|
|
21
23
|
async getTransactionCount(_addressOrName, _blockTag) {
|
|
22
24
|
return 0;
|
|
23
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Tron doesn't support ENS - return the name as-is.
|
|
28
|
+
*/
|
|
29
|
+
async resolveName(name) {
|
|
30
|
+
return name;
|
|
31
|
+
}
|
|
24
32
|
/**
|
|
25
33
|
* Return legacy gas pricing only - Tron doesn't support EIP-1559.
|
|
26
34
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TronJsonRpcProvider.js","sourceRoot":"","sources":["../../src/ethers/TronJsonRpcProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC;;;;;;;;;GASG;AACH,MAAM,OAAO,mBAAoB,SAAQ,SAAS,CAAC,eAAe;
|
|
1
|
+
{"version":3,"file":"TronJsonRpcProvider.js","sourceRoot":"","sources":["../../src/ethers/TronJsonRpcProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC;;;;;;;;;GASG;AACH,MAAM,OAAO,mBAAoB,SAAQ,SAAS,CAAC,eAAe;IACzD,IAAI,CAAS;IACpB,YAAY,GAAW,EAAE,OAA8B;QACrD,iDAAiD;QACjD,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,UAAU,CAAC;QACrE,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CACvB,cAAsB,EACtB,SAA8B;QAE9B,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,OAAO;YACL,QAAQ;YACR,YAAY,EAAE,IAAI;YAClB,oBAAoB,EAAE,IAAI;YAC1B,iBAAiB,EAAE,IAAI;SACxB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Wallet, providers } from 'ethers';
|
|
2
|
-
import { Types } from 'tronweb';
|
|
2
|
+
import { TronWeb, Types } from 'tronweb';
|
|
3
|
+
import { TransactionRequest } from '@ethersproject/providers';
|
|
3
4
|
/** Union of possible TronWeb transaction types */
|
|
4
5
|
export type TronTransaction = Types.CreateSmartContractTransaction | Types.Transaction | Types.SignedTransaction;
|
|
5
6
|
/**
|
|
@@ -34,14 +35,13 @@ export declare class TronWallet extends Wallet {
|
|
|
34
35
|
private tronWeb;
|
|
35
36
|
private tronAddress;
|
|
36
37
|
private tronAddressHex;
|
|
38
|
+
private txBuilder;
|
|
37
39
|
constructor(privateKey: string, tronUrl: string);
|
|
38
40
|
/**
|
|
39
41
|
* Override connect to preserve TronWallet type.
|
|
40
42
|
* Base Wallet.connect() returns a plain Wallet, losing Tron behavior.
|
|
41
43
|
*/
|
|
42
44
|
connect(_provider: providers.Provider): TronWallet;
|
|
43
|
-
/** Convert ethers 0x address to Tron 41-prefixed hex */
|
|
44
|
-
private toTronHex;
|
|
45
45
|
/** Convert Tron address (base58 or 41-hex) to ethers 0x address */
|
|
46
46
|
toEvmAddress(tronAddress: string): string;
|
|
47
47
|
/** Tron doesn't use nonces */
|
|
@@ -49,4 +49,15 @@ export declare class TronWallet extends Wallet {
|
|
|
49
49
|
sendTransaction(transaction: providers.TransactionRequest): Promise<TronTransactionResponse>;
|
|
50
50
|
private makeUnique;
|
|
51
51
|
}
|
|
52
|
+
export declare class TronTransactionBuilder extends TronWeb {
|
|
53
|
+
private tronAddress;
|
|
54
|
+
private tronAddressHex;
|
|
55
|
+
private provider;
|
|
56
|
+
constructor(tronUrl: string, tronAddress: string);
|
|
57
|
+
getTransactionResponse(evmTx: TransactionRequest, tronTx: TronTransaction, txHash?: string): TronTransactionResponse;
|
|
58
|
+
buildTransaction(tx: providers.TransactionRequest): Promise<TronTransaction>;
|
|
59
|
+
private buildDeployment;
|
|
60
|
+
private buildContractCall;
|
|
61
|
+
private buildTransfer;
|
|
62
|
+
}
|
|
52
63
|
//# sourceMappingURL=TronWallet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TronWallet.d.ts","sourceRoot":"","sources":["../../src/ethers/TronWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAU,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE9D,OAAO,
|
|
1
|
+
{"version":3,"file":"TronWallet.d.ts","sourceRoot":"","sources":["../../src/ethers/TronWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAU,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAKzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,kDAAkD;AAClD,MAAM,MAAM,eAAe,GACvB,KAAK,CAAC,8BAA8B,GACpC,KAAK,CAAC,WAAW,GACjB,KAAK,CAAC,iBAAiB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,SAAS,CAAC,mBAAmB;IAC5E,qCAAqC;IACrC,eAAe,EAAE,eAAe,CAAC;CAClC;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,UAAW,SAAQ,MAAM;IACpC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS,CAAK;IAE7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAyB;gBAE9B,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAkB/C;;;OAGG;IACH,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,GAAG,UAAU;IAIlD,mEAAmE;IACnE,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAMzC,8BAA8B;IACxB,mBAAmB,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpE,eAAe,CACnB,WAAW,EAAE,SAAS,CAAC,kBAAkB,GACxC,OAAO,CAAC,uBAAuB,CAAC;YAsBrB,UAAU;CAwBzB;AAED,qBAAa,sBAAuB,SAAQ,OAAO;IACjD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAUhD,sBAAsB,CACpB,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE,MAAM,GACd,uBAAuB;IA+BpB,gBAAgB,CACpB,EAAE,EAAE,SAAS,CAAC,kBAAkB,GAC/B,OAAO,CAAC,eAAe,CAAC;YAqBb,eAAe;YAmBf,iBAAiB;YAwBjB,aAAa;CAW5B"}
|
|
@@ -28,7 +28,9 @@ export class TronWallet extends Wallet {
|
|
|
28
28
|
tronWeb;
|
|
29
29
|
tronAddress;
|
|
30
30
|
tronAddressHex;
|
|
31
|
+
txBuilder;
|
|
31
32
|
constructor(privateKey, tronUrl) {
|
|
33
|
+
tronUrl = tronUrl.endsWith('/jsonrpc') ? tronUrl.slice(0, -8) : tronUrl;
|
|
32
34
|
super(privateKey, new TronJsonRpcProvider(tronUrl));
|
|
33
35
|
this.tronUrl = tronUrl;
|
|
34
36
|
this.tronWeb = new TronWeb({ fullHost: tronUrl });
|
|
@@ -39,6 +41,7 @@ export class TronWallet extends Wallet {
|
|
|
39
41
|
this.tronAddress = derivedAddress;
|
|
40
42
|
this.tronAddressHex = this.tronWeb.address.toHex(this.tronAddress);
|
|
41
43
|
this.tronWeb.setAddress(this.tronAddress);
|
|
44
|
+
this.txBuilder = new TronTransactionBuilder(tronUrl, this.tronAddress);
|
|
42
45
|
}
|
|
43
46
|
/**
|
|
44
47
|
* Override connect to preserve TronWallet type.
|
|
@@ -47,10 +50,6 @@ export class TronWallet extends Wallet {
|
|
|
47
50
|
connect(_provider) {
|
|
48
51
|
return new TronWallet(this.privateKey, this.tronUrl);
|
|
49
52
|
}
|
|
50
|
-
/** Convert ethers 0x address to Tron 41-prefixed hex */
|
|
51
|
-
toTronHex(address) {
|
|
52
|
-
return '41' + strip0x(address).toLowerCase();
|
|
53
|
-
}
|
|
54
53
|
/** Convert Tron address (base58 or 41-hex) to ethers 0x address */
|
|
55
54
|
toEvmAddress(tronAddress) {
|
|
56
55
|
const hex = this.tronWeb.address.toHex(tronAddress);
|
|
@@ -66,41 +65,7 @@ export class TronWallet extends Wallet {
|
|
|
66
65
|
const tx = await this.populateTransaction(transaction);
|
|
67
66
|
assert(tx.gasLimit, 'gasLimit is required');
|
|
68
67
|
assert(tx.gasPrice, 'gasPrice is required');
|
|
69
|
-
|
|
70
|
-
const gasPrice = BigNumber.from(tx.gasPrice);
|
|
71
|
-
const gasLimit = BigNumber.from(tx.gasLimit);
|
|
72
|
-
let feeLimit = gasLimit.mul(gasPrice).toNumber() * 1.5; // Add 50% buffer to feeLimit to avoid "Out of energy" errors
|
|
73
|
-
feeLimit = Math.min(feeLimit, 1000000000); // Tron max fee is 1000000000 SUN (1000 TRX)
|
|
74
|
-
feeLimit = feeLimit <= 0 ? 1000000000 : feeLimit; // Ensure we have at least some fee limit
|
|
75
|
-
const callValue = tx.value ? BigNumber.from(tx.value).toNumber() : 0;
|
|
76
|
-
let tronTx;
|
|
77
|
-
if (!tx.to) {
|
|
78
|
-
// Contract deployment
|
|
79
|
-
assert(tx.data, 'Deployment transaction must have data');
|
|
80
|
-
tronTx = await this.tronWeb.transactionBuilder.createSmartContract({
|
|
81
|
-
abi: [],
|
|
82
|
-
bytecode: strip0x(tx.data.toString()),
|
|
83
|
-
feeLimit,
|
|
84
|
-
callValue,
|
|
85
|
-
originEnergyLimit: gasLimit.toNumber(),
|
|
86
|
-
}, this.tronAddress);
|
|
87
|
-
}
|
|
88
|
-
else if (tx.data && tx.data !== '0x') {
|
|
89
|
-
// Contract call - use 'input' option for raw ABI-encoded calldata
|
|
90
|
-
const tronHexTo = this.toTronHex(tx.to);
|
|
91
|
-
const result = await this.tronWeb.transactionBuilder.triggerSmartContract(tronHexTo, '', // Empty functionSelector since we pass raw encoded data via input
|
|
92
|
-
{
|
|
93
|
-
feeLimit,
|
|
94
|
-
callValue,
|
|
95
|
-
input: strip0x(tx.data.toString()),
|
|
96
|
-
}, [], this.tronAddress);
|
|
97
|
-
assert(result.result?.result, `triggerSmartContract failed: ${result.result?.message}`);
|
|
98
|
-
tronTx = result.transaction;
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
// Simple TRX transfer
|
|
102
|
-
tronTx = await this.tronWeb.transactionBuilder.sendTrx(this.toTronHex(tx.to), callValue, this.tronAddress);
|
|
103
|
-
}
|
|
68
|
+
let tronTx = await this.txBuilder.buildTransaction(tx);
|
|
104
69
|
// Ensure unique txID by extending expiration with a counter.
|
|
105
70
|
// Tron has no nonces, so identical txs in the same block produce the same txID.
|
|
106
71
|
tronTx = await this.makeUnique(tronTx);
|
|
@@ -108,28 +73,16 @@ export class TronWallet extends Wallet {
|
|
|
108
73
|
const signedTx = await this.tronWeb.trx.sign(tronTx);
|
|
109
74
|
const broadcastResult = await this.tronWeb.trx.sendRawTransaction(signedTx);
|
|
110
75
|
assert(broadcastResult.result, `Broadcast failed: ${broadcastResult.message}`);
|
|
111
|
-
|
|
112
|
-
// Build the transaction response with Tron-specific fields
|
|
113
|
-
const response = {
|
|
114
|
-
hash: txHash,
|
|
115
|
-
confirmations: 0,
|
|
116
|
-
from: this.address,
|
|
117
|
-
to: tx.to ?? undefined,
|
|
118
|
-
nonce: 0,
|
|
119
|
-
gasLimit,
|
|
120
|
-
gasPrice,
|
|
121
|
-
data: tx.data?.toString() ?? '0x',
|
|
122
|
-
value: BigNumber.from(tx.value ?? 0),
|
|
123
|
-
chainId: tx.chainId,
|
|
124
|
-
tronTransaction: tronTx,
|
|
125
|
-
wait: (confirmations) => this.provider.waitForTransaction(txHash, confirmations),
|
|
126
|
-
};
|
|
127
|
-
return response;
|
|
76
|
+
return this.txBuilder.getTransactionResponse(tx, tronTx);
|
|
128
77
|
}
|
|
129
78
|
async makeUnique(tronTx) {
|
|
130
|
-
const
|
|
79
|
+
const counter = ++TronWallet.txCounter;
|
|
80
|
+
// Use data (memo field) instead of extension to avoid TronWeb's
|
|
81
|
+
// time-based validation which fails when node clock drifts.
|
|
82
|
+
const data = '0x' + counter.toString(16).padStart(8, '0');
|
|
131
83
|
const altered = await this.tronWeb.transactionBuilder.alterTransaction(tronTx, {
|
|
132
|
-
|
|
84
|
+
data,
|
|
85
|
+
dataFormat: 'hex',
|
|
133
86
|
});
|
|
134
87
|
// For deployments, recompute contract_address from the new txID.
|
|
135
88
|
// genContractAddress = '41' + keccak256(txID + ownerHex)[24:]
|
|
@@ -140,4 +93,85 @@ export class TronWallet extends Wallet {
|
|
|
140
93
|
return altered;
|
|
141
94
|
}
|
|
142
95
|
}
|
|
96
|
+
export class TronTransactionBuilder extends TronWeb {
|
|
97
|
+
tronAddress;
|
|
98
|
+
tronAddressHex;
|
|
99
|
+
provider;
|
|
100
|
+
constructor(tronUrl, tronAddress) {
|
|
101
|
+
tronUrl = tronUrl.endsWith('/jsonrpc') ? tronUrl.slice(0, -8) : tronUrl;
|
|
102
|
+
super({ fullHost: tronUrl });
|
|
103
|
+
this.tronAddress = tronAddress;
|
|
104
|
+
this.setAddress(this.tronAddress);
|
|
105
|
+
this.provider = new TronJsonRpcProvider(tronUrl);
|
|
106
|
+
this.tronAddressHex = this.address.toHex(this.tronAddress);
|
|
107
|
+
}
|
|
108
|
+
getTransactionResponse(evmTx, tronTx, txHash) {
|
|
109
|
+
const originalTxHash = ensure0x(tronTx.txID);
|
|
110
|
+
const gasPrice = evmTx.gasPrice
|
|
111
|
+
? BigNumber.from(evmTx.gasPrice)
|
|
112
|
+
: BigNumber.from(0);
|
|
113
|
+
const gasLimit = evmTx.gasLimit
|
|
114
|
+
? BigNumber.from(evmTx.gasLimit)
|
|
115
|
+
: BigNumber.from(0);
|
|
116
|
+
return {
|
|
117
|
+
hash: txHash ?? originalTxHash,
|
|
118
|
+
confirmations: 0,
|
|
119
|
+
from: ethers.utils.getAddress(ensure0x(this.tronAddressHex.slice(2)).toLowerCase()),
|
|
120
|
+
to: evmTx.to ?? undefined,
|
|
121
|
+
nonce: 0,
|
|
122
|
+
gasLimit,
|
|
123
|
+
gasPrice,
|
|
124
|
+
data: evmTx.data?.toString() ?? '0x',
|
|
125
|
+
value: BigNumber.from(evmTx.value ?? 0),
|
|
126
|
+
chainId: evmTx.chainId,
|
|
127
|
+
tronTransaction: tronTx,
|
|
128
|
+
wait: (confirmations) => this.provider.waitForTransaction(txHash ? ensure0x(txHash) : originalTxHash, confirmations),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
async buildTransaction(tx) {
|
|
132
|
+
const gasPrice = tx.gasPrice
|
|
133
|
+
? BigNumber.from(tx.gasPrice)
|
|
134
|
+
: BigNumber.from(0);
|
|
135
|
+
const gasLimit = tx.gasLimit
|
|
136
|
+
? BigNumber.from(tx.gasLimit)
|
|
137
|
+
: BigNumber.from(0);
|
|
138
|
+
let feeLimit = gasLimit.mul(gasPrice).toNumber() * 1.5;
|
|
139
|
+
feeLimit = Math.min(feeLimit, 1000000000);
|
|
140
|
+
feeLimit = feeLimit <= 0 ? 1000000000 : feeLimit;
|
|
141
|
+
const callValue = tx.value ? BigNumber.from(tx.value).toNumber() : 0;
|
|
142
|
+
if (!tx.to) {
|
|
143
|
+
return this.buildDeployment(tx, feeLimit, callValue, gasLimit);
|
|
144
|
+
}
|
|
145
|
+
else if (tx.data && tx.data !== '0x') {
|
|
146
|
+
return this.buildContractCall(tx, feeLimit, callValue);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
return this.buildTransfer(tx.to, callValue);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
async buildDeployment(tx, feeLimit, callValue, gasLimit) {
|
|
153
|
+
assert(tx.data, 'Deployment transaction must have data');
|
|
154
|
+
return this.transactionBuilder.createSmartContract({
|
|
155
|
+
abi: [],
|
|
156
|
+
bytecode: strip0x(tx.data.toString()),
|
|
157
|
+
feeLimit,
|
|
158
|
+
callValue,
|
|
159
|
+
originEnergyLimit: gasLimit.toNumber(),
|
|
160
|
+
}, this.tronAddress);
|
|
161
|
+
}
|
|
162
|
+
async buildContractCall(tx, feeLimit, callValue) {
|
|
163
|
+
const tronHexTo = '41' + strip0x(tx.to).toLowerCase();
|
|
164
|
+
const result = await this.transactionBuilder.triggerSmartContract(tronHexTo, '', {
|
|
165
|
+
feeLimit,
|
|
166
|
+
callValue,
|
|
167
|
+
input: strip0x(tx.data.toString()),
|
|
168
|
+
}, [], this.tronAddress);
|
|
169
|
+
assert(result.result?.result, `triggerSmartContract failed: ${result.result?.message}`);
|
|
170
|
+
return result.transaction;
|
|
171
|
+
}
|
|
172
|
+
async buildTransfer(to, callValue) {
|
|
173
|
+
const tronHexTo = '41' + strip0x(to).toLowerCase();
|
|
174
|
+
return this.transactionBuilder.sendTrx(tronHexTo, callValue, this.tronAddress);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
143
177
|
//# sourceMappingURL=TronWallet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TronWallet.js","sourceRoot":"","sources":["../../src/ethers/TronWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAa,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAS,MAAM,SAAS,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"TronWallet.js","sourceRoot":"","sources":["../../src/ethers/TronWallet.ts"],"names":[],"mappings":"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"}
|
package/dist/ethers/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { TronContractFactory } from './TronContractFactory.js';
|
|
2
2
|
export { TronJsonRpcProvider } from './TronJsonRpcProvider.js';
|
|
3
|
-
export { TronTransaction, TronTransactionResponse, TronWallet, } from './TronWallet.js';
|
|
3
|
+
export { TronTransaction, TronTransactionResponse, TronWallet, TronTransactionBuilder, } from './TronWallet.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ethers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ethers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,UAAU,EACV,sBAAsB,GACvB,MAAM,iBAAiB,CAAC"}
|
package/dist/ethers/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { TronContractFactory } from './TronContractFactory.js';
|
|
2
2
|
export { TronJsonRpcProvider } from './TronJsonRpcProvider.js';
|
|
3
|
-
export { TronWallet, } from './TronWallet.js';
|
|
3
|
+
export { TronWallet, TronTransactionBuilder, } from './TronWallet.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/ethers/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ethers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAGL,UAAU,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ethers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAGL,UAAU,EACV,sBAAsB,GACvB,MAAM,iBAAiB,CAAC"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { TronWeb } from 'tronweb';
|
|
2
2
|
import { IABI } from './types.js';
|
|
3
|
+
import { providers } from 'ethers';
|
|
3
4
|
export declare const TRON_EMPTY_ADDRESS = "T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb";
|
|
4
5
|
export declare const TRON_EMPTY_MESSAGE = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
5
6
|
export declare const EIP1967_ADMIN_SLOT = "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
|
|
@@ -21,4 +22,7 @@ export declare function buildMetaProxyBytecode(implementationAddress: string, me
|
|
|
21
22
|
* @returns Transaction object
|
|
22
23
|
*/
|
|
23
24
|
export declare function createRawBytecodeDeploymentTransaction(tronweb: Readonly<TronWeb>, bytecode: string, signer: string, contractName?: string): Promise<any>;
|
|
25
|
+
/** Convert ethers 0x address to Tron 41-prefixed hex */
|
|
26
|
+
export declare function toTronHex(address: string): string;
|
|
27
|
+
export declare function convertEthersToTronTransaction(tronWeb: Readonly<TronWeb>, tx: providers.TransactionRequest, sender: string): Promise<any>;
|
|
24
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIlC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIlC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAa,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE9C,eAAO,MAAM,kBAAkB,uCAAuC,CAAC;AACvE,eAAO,MAAM,kBAAkB,uEACuC,CAAC;AACvE,eAAO,MAAM,kBAAkB,uEACuC,CAAC;AAEvE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,MAAM,CAYpE;AAED,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,EAC1B,GAAG,EAAE,IAAI,EACT,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,OAAO,EAAE,GACpB,OAAO,CAAC,GAAG,CAAC,CAWd;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,qBAAqB,EAAE,MAAM,EAC7B,QAAQ,EAAE,MAAM,GACf,MAAM,CA2BR;AAED;;;;;;;GAOG;AACH,wBAAsB,sCAAsC,CAC1D,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,EAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,SAAc,GACzB,OAAO,CAAC,GAAG,CAAC,CAWd;AAED,wDAAwD;AACxD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,EAC1B,EAAE,EAAE,SAAS,CAAC,kBAAkB,EAChC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,GAAG,CAAC,CAqBd"}
|
package/dist/utils/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { strip0x } from '@hyperlane-xyz/utils';
|
|
1
|
+
import { assert, strip0x } from '@hyperlane-xyz/utils';
|
|
2
|
+
import { BigNumber } from 'ethers';
|
|
2
3
|
export const TRON_EMPTY_ADDRESS = 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb';
|
|
3
4
|
export const TRON_EMPTY_MESSAGE = '0x0000000000000000000000000000000000000000000000000000000000000000';
|
|
4
5
|
export const EIP1967_ADMIN_SLOT = '0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103';
|
|
@@ -68,4 +69,21 @@ export async function createRawBytecodeDeploymentTransaction(tronweb, bytecode,
|
|
|
68
69
|
name: contractName,
|
|
69
70
|
}, signer);
|
|
70
71
|
}
|
|
72
|
+
/** Convert ethers 0x address to Tron 41-prefixed hex */
|
|
73
|
+
export function toTronHex(address) {
|
|
74
|
+
return '41' + strip0x(address).toLowerCase();
|
|
75
|
+
}
|
|
76
|
+
export async function convertEthersToTronTransaction(tronWeb, tx, sender) {
|
|
77
|
+
assert(tx.to, 'Transaction must have a destination address');
|
|
78
|
+
// Contract call - use 'input' option for raw ABI-encoded calldata
|
|
79
|
+
const tronHexTo = toTronHex(tx.to);
|
|
80
|
+
const callValue = tx.value ? BigNumber.from(tx.value).toNumber() : 0;
|
|
81
|
+
const result = await tronWeb.transactionBuilder.triggerSmartContract(tronHexTo, '', // Empty functionSelector since we pass raw encoded data via input
|
|
82
|
+
{
|
|
83
|
+
callValue,
|
|
84
|
+
input: tx.data ? strip0x(tx.data.toString()) : undefined,
|
|
85
|
+
}, [], sender);
|
|
86
|
+
assert(result.result?.result, `triggerSmartContract failed: ${result.result?.message}`);
|
|
87
|
+
return result.transaction;
|
|
88
|
+
}
|
|
71
89
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperlane-xyz/tron-sdk",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "22.0.0",
|
|
4
4
|
"description": "Hyperlane TypeScript SDK for Tron",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"blockchain",
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"ethers": "^5.8.0",
|
|
36
36
|
"tronweb": "^6.1.1",
|
|
37
37
|
"@hyperlane-xyz/core": "11.0.1",
|
|
38
|
-
"@hyperlane-xyz/provider-sdk": "
|
|
39
|
-
"@hyperlane-xyz/utils": "
|
|
38
|
+
"@hyperlane-xyz/provider-sdk": "3.0.0",
|
|
39
|
+
"@hyperlane-xyz/utils": "26.0.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@eslint/js": "^9.39.2",
|
|
@@ -61,8 +61,8 @@
|
|
|
61
61
|
"tsx": "^4.19.1",
|
|
62
62
|
"typescript": "5.8.3",
|
|
63
63
|
"typescript-eslint": "^8.54.0",
|
|
64
|
-
"@hyperlane-xyz/
|
|
65
|
-
"@hyperlane-xyz/
|
|
64
|
+
"@hyperlane-xyz/tsconfig": "^26.0.0",
|
|
65
|
+
"@hyperlane-xyz/eslint-config": "^26.0.0"
|
|
66
66
|
},
|
|
67
67
|
"scripts": {
|
|
68
68
|
"build": "rm -rf ./dist && tsc",
|