@w3lib/evm-batch-call 0.1.0 → 0.3.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 +43 -0
- package/README.md +194 -12
- package/dist/aggregate.d.ts +5 -2
- package/dist/aggregate.d.ts.map +1 -1
- package/dist/aggregate.js.map +1 -1
- package/dist/call.d.ts +8 -2
- package/dist/call.d.ts.map +1 -1
- package/dist/call.js +25 -1
- package/dist/call.js.map +1 -1
- package/dist/chains.d.ts +13 -0
- package/dist/chains.d.ts.map +1 -0
- package/dist/chains.js +35 -0
- package/dist/chains.js.map +1 -0
- package/dist/detect.d.ts +23 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/detect.js +178 -0
- package/dist/detect.js.map +1 -0
- package/dist/erc20.d.ts +83 -7
- package/dist/erc20.d.ts.map +1 -1
- package/dist/erc20.js +36 -5
- package/dist/erc20.js.map +1 -1
- package/dist/fallback.d.ts +25 -0
- package/dist/fallback.d.ts.map +1 -1
- package/dist/fallback.js +123 -21
- package/dist/fallback.js.map +1 -1
- package/dist/index.d.ts +10 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/nft.d.ts +71 -0
- package/dist/nft.d.ts.map +1 -0
- package/dist/nft.js +194 -0
- package/dist/nft.js.map +1 -0
- package/dist/owner.d.ts +136 -0
- package/dist/owner.d.ts.map +1 -0
- package/dist/owner.js +501 -0
- package/dist/owner.js.map +1 -0
- package/dist/provider.d.ts +112 -12
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +343 -48
- package/dist/provider.js.map +1 -1
- package/dist/scan.d.ts +59 -0
- package/dist/scan.d.ts.map +1 -0
- package/dist/scan.js +245 -0
- package/dist/scan.js.map +1 -0
- package/dist/shortcuts.d.ts +113 -0
- package/dist/shortcuts.d.ts.map +1 -0
- package/dist/shortcuts.js +193 -0
- package/dist/shortcuts.js.map +1 -0
- package/dist/source.d.ts +23 -1
- package/dist/source.d.ts.map +1 -1
- package/dist/source.js +110 -3
- package/dist/source.js.map +1 -1
- package/dist/tron.d.ts +6 -0
- package/dist/tron.d.ts.map +1 -1
- package/dist/tron.js +16 -1
- package/dist/tron.js.map +1 -1
- package/dist/util.d.ts +6 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +20 -0
- package/dist/util.js.map +1 -0
- package/package.json +3 -2
- package/src/aggregate.ts +5 -2
- package/src/call.ts +32 -3
- package/src/chains.ts +46 -0
- package/src/detect.ts +193 -0
- package/src/erc20.ts +111 -9
- package/src/fallback.ts +127 -23
- package/src/index.ts +90 -4
- package/src/nft.ts +298 -0
- package/src/owner.ts +651 -0
- package/src/provider.ts +458 -54
- package/src/scan.ts +293 -0
- package/src/shortcuts.ts +278 -0
- package/src/source.ts +118 -3
- package/src/tron.ts +21 -2
- package/src/util.ts +20 -0
package/dist/provider.d.ts
CHANGED
|
@@ -3,8 +3,10 @@ import { type BlockTag, type CallOverrides, type EthersLikeProvider } from './ag
|
|
|
3
3
|
import { type BatchOptions } from './batcher.js';
|
|
4
4
|
import { type BoundCall, type Call } from './call.js';
|
|
5
5
|
import { Contract, type ContractAbi, type ContractRunner } from './contract.js';
|
|
6
|
-
import { type Erc20Contract, type
|
|
6
|
+
import { type BalanceToken, type Erc20Contract, type TokenBalance, type TokenAllowance, type DefaultTokenField, type TokenDetails, type TokenField } from './erc20.js';
|
|
7
7
|
import { type Multicall } from './multicall.js';
|
|
8
|
+
import { type OwnedToken, type OwnerTokensOptions } from './owner.js';
|
|
9
|
+
import { type DefaultNftCollectionField, type Erc1155Balance, type NftBalance, type NftCollection, type NftCollectionField, type NftCollectionsOptions, type NftItem, type NftOwner, type NftTokenUri, type NftTokenUriOptions } from './nft.js';
|
|
8
10
|
import { type ProviderSource, type SourceOptions } from './source.js';
|
|
9
11
|
export type { ProviderSource };
|
|
10
12
|
export interface StaticCallOverrides extends CallOverrides {
|
|
@@ -41,8 +43,22 @@ export interface ProviderConfig extends SourceOptions {
|
|
|
41
43
|
chunkSize?: number;
|
|
42
44
|
/** `provider.call()` 自动合并的参数 */
|
|
43
45
|
batch?: BatchOptions;
|
|
44
|
-
/** `balances()` 里视为主币的地址,默认 0xeeee…eeee
|
|
46
|
+
/** `balances()` 里视为主币的地址,默认 0xeeee…eeee(NATIVE_TOKEN)和零地址 */
|
|
45
47
|
nativeTokens?: readonly string[];
|
|
48
|
+
/** 主币精度,默认按内置链信息表(NATIVE_CURRENCIES),表里没有时 EVM 18、Tron 6 */
|
|
49
|
+
nativeDecimals?: number;
|
|
50
|
+
/** 主币 symbol(balances 的 symbol 选项、tokens 用),默认按内置链信息表,表里没有时为 null */
|
|
51
|
+
nativeSymbol?: string;
|
|
52
|
+
/** 主币名称(tokens 用),默认按内置链信息表,表里没有时为 null */
|
|
53
|
+
nativeName?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface TokensOptions<F extends TokenField = DefaultTokenField> extends CallOverrides {
|
|
56
|
+
/** 要返回的字段,默认 ['name', 'symbol', 'decimals'] */
|
|
57
|
+
fields?: readonly F[];
|
|
58
|
+
}
|
|
59
|
+
export interface BalancesOptions extends CallOverrides {
|
|
60
|
+
/** 同时返回 symbol(代币查一次后缓存;主币取 nativeSymbol / 内置链信息表)。默认 false */
|
|
61
|
+
symbol?: boolean;
|
|
46
62
|
}
|
|
47
63
|
/**
|
|
48
64
|
* Multicall Provider,API 与 ethcall 的 Provider 保持一致:
|
|
@@ -54,13 +70,39 @@ export interface ProviderConfig extends SourceOptions {
|
|
|
54
70
|
*/
|
|
55
71
|
export declare class Provider implements ContractRunner {
|
|
56
72
|
#private;
|
|
73
|
+
/**
|
|
74
|
+
* 两种写法:
|
|
75
|
+
*
|
|
76
|
+
* ```ts
|
|
77
|
+
* new Provider(window.ethereum) // 只传节点:chainId 从节点识别
|
|
78
|
+
* new Provider([url1, url2], config)
|
|
79
|
+
* new Provider(56) // 只传 chainId:使用内置公共节点
|
|
80
|
+
* new Provider(56, rpc, config) // 都传(与 ethcall 相同),不需要识别
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* @param provider 节点:RPC URL、ethers Provider、钱包(window.ethereum / tronWeb)或它们的数组(主节点 + 备用节点)
|
|
84
|
+
* @param config 可选配置
|
|
85
|
+
*/
|
|
86
|
+
constructor(provider: ProviderSource | readonly ProviderSource[], config?: ProviderConfig);
|
|
57
87
|
/**
|
|
58
88
|
* @param chainId 链 ID(接受数字字符串)
|
|
59
|
-
* @param provider
|
|
60
|
-
* 不传则使用内置的公共节点表
|
|
89
|
+
* @param provider 节点,不传则使用内置的公共节点表
|
|
61
90
|
* @param config 可选配置
|
|
62
91
|
*/
|
|
63
92
|
constructor(chainId: number | string, provider?: ProviderSource | readonly ProviderSource[], config?: ProviderConfig);
|
|
93
|
+
/**
|
|
94
|
+
* 只传节点时等 chainId 识别完成后再返回实例,之后 rpc / multicall 等同步属性可以直接用。
|
|
95
|
+
*
|
|
96
|
+
* ```ts
|
|
97
|
+
* const multi = await Provider.create(window.ethereum)
|
|
98
|
+
* multi.rpc // 已就绪
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
static create(provider: ProviderSource | readonly ProviderSource[], config?: ProviderConfig): Promise<Provider>;
|
|
102
|
+
/** 链 ID(不传 chainId 构造时,会等待从节点识别完成) */
|
|
103
|
+
getChainId(): Promise<number>;
|
|
104
|
+
/** 等待初始化完成(只传节点时会先识别 chainId;识别失败在这里抛出) */
|
|
105
|
+
ready(): Promise<this>;
|
|
64
106
|
/**
|
|
65
107
|
* 绑定到本 Provider 的合约:方法返回的 Call 可以直接 await(自动合并成 multicall),
|
|
66
108
|
* 也可以传给 all / tryAll;`method.staticCall(...)` 预执行。
|
|
@@ -74,15 +116,65 @@ export declare class Provider implements ContractRunner {
|
|
|
74
116
|
/** 绑定的 ERC20 合约(内置 ABI,结果带类型) */
|
|
75
117
|
erc20(address: string): Erc20Contract;
|
|
76
118
|
/**
|
|
77
|
-
*
|
|
78
|
-
*
|
|
119
|
+
* 批量查余额(含按 decimals 换算后的数值),主币和代币混在一起、一次请求。
|
|
120
|
+
*
|
|
121
|
+
* ```ts
|
|
122
|
+
* const list = await multi.balances(user, [NATIVE_TOKEN, USDT, { address: USDC, decimals: 6 }], { symbol: true })
|
|
123
|
+
* list[1] // { token: USDT, native: false, balance: '1234500000000000000000', decimals: 18, formatted: '1234.5', symbol: 'USDT', success: true }
|
|
124
|
+
* ```
|
|
125
|
+
*
|
|
126
|
+
* - 主币地址见 config.nativeTokens(默认 0xeeee…eeee 和零地址);精度 / symbol 按内置链信息表,可用 nativeDecimals / nativeSymbol 覆盖
|
|
127
|
+
* - decimals、symbol 查到一次后缓存,之后只查 balanceOf;也可以直接传 `{ address, decimals }`
|
|
128
|
+
* - 单个代币失败(非合约地址、非法地址等)不影响其他代币,该项 success 为 false
|
|
129
|
+
*/
|
|
130
|
+
balances(owner: string, tokens: readonly BalanceToken[], options?: BalancesOptions): Promise<TokenBalance[]>;
|
|
131
|
+
/**
|
|
132
|
+
* 批量查 ERC20 授权额度(发交易前判断是否需要 approve),一次请求。
|
|
133
|
+
*
|
|
134
|
+
* ```ts
|
|
135
|
+
* const [usdt] = await multi.allowances(user, router, [USDT])
|
|
136
|
+
* usdt // { token: USDT, spender: router, native: false, allowance: '…', decimals: 18, formatted: '100', unlimited: false, success: true }
|
|
137
|
+
* ```
|
|
138
|
+
*
|
|
139
|
+
* - 主币不需要授权:native 为 true,额度视为 MaxUint256、unlimited 为 true,不发请求
|
|
140
|
+
* - decimals 与 balances / tokens 共用缓存;也可以直接传 `{ address, decimals }`
|
|
79
141
|
*/
|
|
80
|
-
|
|
142
|
+
allowances(owner: string, spender: string, tokens: readonly BalanceToken[], overrides?: CallOverrides): Promise<TokenAllowance[]>;
|
|
81
143
|
/**
|
|
82
|
-
*
|
|
83
|
-
*
|
|
144
|
+
* 列出持有人拥有的代币(资产列表):从代币来源拿候选代币,再用 multicall 在链上核对余额。
|
|
145
|
+
* 默认来源是公开代币列表,**只能发现列表里的代币**,局限性见 README「资产列表」一节。
|
|
146
|
+
*
|
|
147
|
+
* @deprecated 不推荐使用:EVM 链上无法只靠节点可靠地列出地址持有的全部代币,这个方法只是尽力而为——
|
|
148
|
+
* 默认来源只能发现公开列表里的代币,依赖第三方免费服务(可能限流、改格式或停止服务),要查几千个代币的余额、耗时数秒,
|
|
149
|
+
* 价格也不一定可信;传 `alchemy` / `nodereal` 来源能查全,但同样受第三方服务的额度和可用性约束。
|
|
150
|
+
* 已知要查哪些代币时请用 `getBalances`;需要可靠的完整持仓请直接接入索引服务的接口或自己的索引。局限性详见 README「资产列表」。
|
|
151
|
+
*/
|
|
152
|
+
ownerTokens(owner: string, options?: OwnerTokensOptions): Promise<OwnedToken[]>;
|
|
153
|
+
/** 批量查 NFT 集合信息(标准 / name / symbol / totalSupply),字段可选 */
|
|
154
|
+
nftCollections<const F extends NftCollectionField = DefaultNftCollectionField>(collections: readonly string[], options?: NftCollectionsOptions<F>): Promise<NftCollection<F>[]>;
|
|
155
|
+
/** 批量查 ERC721 持有数量(balanceOf) */
|
|
156
|
+
nftBalances(owner: string, collections: readonly string[], overrides?: CallOverrides): Promise<NftBalance[]>;
|
|
157
|
+
/** 批量查 ERC721 持有人(ownerOf),可混合多个集合 */
|
|
158
|
+
nftOwners(items: readonly NftItem[], overrides?: CallOverrides): Promise<NftOwner[]>;
|
|
159
|
+
/** 批量查 NFT 元数据地址:兼容 ERC721 tokenURI 与 ERC1155 uri({id} 按规范替换),可转换 ipfs:// */
|
|
160
|
+
nftTokenUris(items: readonly NftItem[], options?: NftTokenUriOptions): Promise<NftTokenUri[]>;
|
|
161
|
+
/** 批量查 ERC1155 余额 */
|
|
162
|
+
erc1155Balances(owner: string, items: readonly NftItem[], overrides?: CallOverrides): Promise<Erc1155Balance[]>;
|
|
163
|
+
/**
|
|
164
|
+
* 批量查 ERC20 代币详情,一次请求;可以选择返回哪些字段。
|
|
165
|
+
*
|
|
166
|
+
* ```ts
|
|
167
|
+
* await multi.tokens([USDT, NATIVE_TOKEN]) // name / symbol / decimals
|
|
168
|
+
* await multi.tokens([USDT], { fields: ['symbol', 'decimals', 'totalSupply'] })
|
|
169
|
+
* // [{ address: USDT, native: false, symbol: 'USDT', decimals: 18, totalSupply: '…', totalSupplyFormatted: '…', success: true }]
|
|
170
|
+
* ```
|
|
171
|
+
*
|
|
172
|
+
* - name / symbol / decimals 查到一次后缓存(与 balances 共用),totalSupply 每次都查
|
|
173
|
+
* - 主币占位地址不发请求,信息取内置链信息表(可用 nativeName / nativeSymbol / nativeDecimals 覆盖),totalSupply 为 null
|
|
174
|
+
* - symbol / name 兼容返回 bytes32 的老代币(MKR 等)
|
|
175
|
+
* - 读取失败的字段为 null;请求的字段都读到时 success 为 true
|
|
84
176
|
*/
|
|
85
|
-
|
|
177
|
+
tokens<const F extends TokenField = DefaultTokenField>(tokens: readonly string[], options?: TokensOptions<F>): Promise<TokenDetails<F>[]>;
|
|
86
178
|
/**
|
|
87
179
|
* 主币余额查询,可以和合约调用放在同一批里(同一次 eth_call):
|
|
88
180
|
* 有 Multicall3 时调合约的 getEthBalance;deployless 时由 deployless 合约直接用 BALANCE 读取。
|
|
@@ -127,9 +219,17 @@ export declare class Provider implements ContractRunner {
|
|
|
127
219
|
* @param overrides 所有条目共享的 overrides,优先级最低
|
|
128
220
|
*/
|
|
129
221
|
staticCallAll<T = any>(items: ReadonlyArray<Call | StaticCallItem>, overrides?: StaticCallOverrides): Promise<StaticCallResult<T>[]>;
|
|
130
|
-
/**
|
|
222
|
+
/** 当前区块号(底层节点需支持 getBlockNumber) */
|
|
223
|
+
getBlockNumber(): Promise<number>;
|
|
224
|
+
/** eth_getLogs(底层节点需支持 getLogs)。多节点时依次尝试,全部失败抛 GetLogsError */
|
|
225
|
+
getLogs(filter: Parameters<NonNullable<EthersLikeProvider['getLogs']>>[0]): Promise<Awaited<ReturnType<NonNullable<EthersLikeProvider['getLogs']>>>>;
|
|
226
|
+
/** 是否是按主币处理的地址(config.nativeTokens,默认 0xeeee…eeee 和零地址) */
|
|
227
|
+
isNativeToken(address: string): boolean;
|
|
228
|
+
/** 按主币处理的地址(小写),顺序同 config.nativeTokens */
|
|
229
|
+
get nativeTokens(): readonly string[];
|
|
230
|
+
/** 底层连接(多节点时是 FallbackRpc)。只传节点构造时,需在 ready() 之后读取 */
|
|
131
231
|
get rpc(): EthersLikeProvider;
|
|
132
|
-
/** 当前使用的 multicall 合约(null 表示 deployless) */
|
|
232
|
+
/** 当前使用的 multicall 合约(null 表示 deployless;只传节点构造时在 ready() 之前也为 null) */
|
|
133
233
|
get multicall(): Multicall | null;
|
|
134
234
|
}
|
|
135
235
|
export default Provider;
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAA;AAE1C,OAAO,EAAoC,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAC7H,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
|