@w3lib/evm-batch-call 0.6.0 → 0.7.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/CHANGELOG.md +24 -0
- package/README.md +161 -2
- package/contracts/TokenProbe.sol +103 -0
- package/dist/aggregate.d.ts.map +1 -1
- package/dist/aggregate.js +114 -3
- package/dist/aggregate.js.map +1 -1
- package/dist/approvals.d.ts +169 -0
- package/dist/approvals.d.ts.map +1 -0
- package/dist/approvals.js +310 -0
- package/dist/approvals.js.map +1 -0
- package/dist/chains.d.ts.map +1 -1
- package/dist/chains.js +4 -0
- package/dist/chains.js.map +1 -1
- package/dist/fees.d.ts +97 -0
- package/dist/fees.d.ts.map +1 -0
- package/dist/fees.js +115 -0
- package/dist/fees.js.map +1 -0
- package/dist/http.d.ts +10 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +30 -0
- package/dist/http.js.map +1 -0
- package/dist/lp.d.ts +2 -1
- package/dist/lp.d.ts.map +1 -1
- package/dist/lp.js +2 -1
- package/dist/lp.js.map +1 -1
- package/dist/multicall.d.ts.map +1 -1
- package/dist/multicall.js +3 -0
- package/dist/multicall.js.map +1 -1
- package/dist/names.d.ts +55 -0
- package/dist/names.d.ts.map +1 -0
- package/dist/names.js +93 -0
- package/dist/names.js.map +1 -0
- package/dist/owner.d.ts +4 -26
- package/dist/owner.d.ts.map +1 -1
- package/dist/owner.js +7 -112
- package/dist/owner.js.map +1 -1
- package/dist/portfolio.d.ts +54 -0
- package/dist/portfolio.d.ts.map +1 -0
- package/dist/portfolio.js +49 -0
- package/dist/portfolio.js.map +1 -0
- package/dist/price.d.ts +95 -0
- package/dist/price.d.ts.map +1 -0
- package/dist/price.js +329 -0
- package/dist/price.js.map +1 -0
- package/dist/risk.d.ts +42 -0
- package/dist/risk.d.ts.map +1 -0
- package/dist/risk.js +134 -0
- package/dist/risk.js.map +1 -0
- package/dist/rpcNodes.d.ts.map +1 -1
- package/dist/rpcNodes.js +18 -0
- package/dist/rpcNodes.js.map +1 -1
- package/dist/subpaths/approvals.d.ts +26 -0
- package/dist/subpaths/approvals.d.ts.map +1 -0
- package/dist/subpaths/approvals.js +27 -0
- package/dist/subpaths/approvals.js.map +1 -0
- package/dist/subpaths/fees.d.ts +23 -0
- package/dist/subpaths/fees.d.ts.map +1 -0
- package/dist/subpaths/fees.js +25 -0
- package/dist/subpaths/fees.js.map +1 -0
- package/dist/subpaths/names.d.ts +35 -0
- package/dist/subpaths/names.d.ts.map +1 -0
- package/dist/subpaths/names.js +39 -0
- package/dist/subpaths/names.js.map +1 -0
- package/dist/subpaths/price.d.ts +38 -0
- package/dist/subpaths/price.d.ts.map +1 -0
- package/dist/subpaths/price.js +40 -0
- package/dist/subpaths/price.js.map +1 -0
- package/dist/subpaths/risk.d.ts +19 -0
- package/dist/subpaths/risk.d.ts.map +1 -0
- package/dist/subpaths/risk.js +20 -0
- package/dist/subpaths/risk.js.map +1 -0
- package/dist/subpaths/swap.d.ts +19 -0
- package/dist/subpaths/swap.d.ts.map +1 -0
- package/dist/subpaths/swap.js +20 -0
- package/dist/subpaths/swap.js.map +1 -0
- package/dist/swap.d.ts +128 -0
- package/dist/swap.d.ts.map +1 -0
- package/dist/swap.js +291 -0
- package/dist/swap.js.map +1 -0
- package/dist/tokenProbe.d.ts +3 -0
- package/dist/tokenProbe.d.ts.map +1 -0
- package/dist/tokenProbe.js +4 -0
- package/dist/tokenProbe.js.map +1 -0
- package/dist/write/tron.d.ts +25 -0
- package/dist/write/tron.d.ts.map +1 -1
- package/dist/write/tron.js +26 -0
- package/dist/write/tron.js.map +1 -1
- package/package.json +39 -16
- package/src/aggregate.ts +110 -3
- package/src/approvals.ts +462 -0
- package/src/chains.ts +4 -0
- package/src/fees.ts +201 -0
- package/src/http.ts +34 -0
- package/src/lp.ts +3 -1
- package/src/multicall.ts +3 -0
- package/src/names.ts +141 -0
- package/src/owner.ts +7 -138
- package/src/portfolio.ts +91 -0
- package/src/price.ts +415 -0
- package/src/risk.ts +166 -0
- package/src/rpcNodes.ts +18 -0
- package/src/subpaths/approvals.ts +48 -0
- package/src/subpaths/fees.ts +43 -0
- package/src/subpaths/names.ts +43 -0
- package/src/subpaths/price.ts +60 -0
- package/src/subpaths/risk.ts +23 -0
- package/src/subpaths/swap.ts +36 -0
- package/src/swap.ts +413 -0
- package/src/tokenProbe.ts +5 -0
- package/src/write/tron.ts +43 -0
package/src/write/tron.ts
CHANGED
|
@@ -744,6 +744,49 @@ function canonical(address: string): string {
|
|
|
744
744
|
return toTronAddress(toEvmAddress(address))
|
|
745
745
|
}
|
|
746
746
|
|
|
747
|
+
/** 一笔交易的手续费估算(子路径 /fees 的 estimateCost 在 Tron 上用) */
|
|
748
|
+
export interface TronCostEstimate {
|
|
749
|
+
/** 合约调用消耗的能量(模拟得到);转 TRX 为 0 */
|
|
750
|
+
energy: number
|
|
751
|
+
/** 交易的字节数(带宽) */
|
|
752
|
+
bandwidth: number
|
|
753
|
+
/** 账户剩余的能量 / 带宽不够时要烧的 TRX(sun) */
|
|
754
|
+
energyBurn: bigint
|
|
755
|
+
bandwidthBurn: bigint
|
|
756
|
+
/** 转 TRX 给没激活的地址:激活费(含创建账户的带宽),算在 bandwidthBurn 里 */
|
|
757
|
+
activates: boolean
|
|
758
|
+
/** 每单位能量、每字节带宽的价格(sun) */
|
|
759
|
+
energyPrice: bigint
|
|
760
|
+
bandwidthPrice: bigint
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
/**
|
|
764
|
+
* 估算一笔交易要烧多少 TRX:合约调用模拟出能量,按发送者剩余的质押能量 / 免费和质押带宽抵扣,不够的部分按链参数的价格烧 TRX。
|
|
765
|
+
* 能量按模拟值(不加余量),实际执行可能略有出入
|
|
766
|
+
*/
|
|
767
|
+
export async function tronEstimateCost(provider: Provider, call: { from: string; to: string; data?: string; value?: bigint }): Promise<TronCostEstimate> {
|
|
768
|
+
const rpc = await tronRpc(provider, {})
|
|
769
|
+
const from = canonical(call.from)
|
|
770
|
+
const to = canonical(call.to)
|
|
771
|
+
const value = call.value ?? 0n
|
|
772
|
+
const data = call.data && call.data !== '0x' ? call.data : null
|
|
773
|
+
const [params, resources, isContract] = await Promise.all([rpc.params(), rpc.resources(from), data ? Promise.resolve(true) : rpc.isContract(to)])
|
|
774
|
+
const contract: TronContract = isContract ? { type: 'trigger', owner: from, contract: to, data: data ?? '0x', callValue: value } : { type: 'transfer', owner: from, to, amount: value }
|
|
775
|
+
const energy = contract.type === 'trigger' ? await rpc.simulate(contract) : 0
|
|
776
|
+
const feeLimit = contract.type === 'trigger' ? BigInt(Math.ceil(energy * 1.5)) * params.energyFee || 1_000_000n : 0n
|
|
777
|
+
const bytes = transactionBytes(contract, feeLimit)
|
|
778
|
+
const activates = contract.type === 'transfer' && !(await rpc.accountExists(to))
|
|
779
|
+
return {
|
|
780
|
+
energy,
|
|
781
|
+
bandwidth: bytes,
|
|
782
|
+
energyBurn: BigInt(Math.max(0, energy - resources.energy)) * params.energyFee,
|
|
783
|
+
bandwidthBurn: contract.type === 'transfer' ? transferBurn(resources, bytes, params, activates) : bandwidthBurn(resources, bytes, params.bandwidthFee),
|
|
784
|
+
activates,
|
|
785
|
+
energyPrice: params.energyFee,
|
|
786
|
+
bandwidthPrice: params.bandwidthFee,
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
|
|
747
790
|
/** 转 TRX:普通地址用 TransferContract;合约地址用合约调用(空 calldata 带 call_value,主网禁止 TransferContract 转给合约) */
|
|
748
791
|
async function trxContract(rpc: TronRpc, owner: string, to: string, amount: bigint): Promise<TronContract> {
|
|
749
792
|
return (await rpc.isContract(to)) ? { type: 'trigger', owner, contract: to, data: '0x', callValue: amount } : { type: 'transfer', owner, to, amount }
|