web3-tools-mcp 1.2.1 → 1.2.2
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/README.md +91 -228
- package/package.json +2 -2
- package/dist/package.json +0 -63
- package/dist/test/tools/advanced.test.d.ts +0 -2
- package/dist/test/tools/advanced.test.d.ts.map +0 -1
- package/dist/test/tools/advanced.test.js +0 -235
- package/dist/test/tools/advanced.test.js.map +0 -1
- package/dist/test/tools/balance.test.d.ts +0 -2
- package/dist/test/tools/balance.test.d.ts.map +0 -1
- package/dist/test/tools/balance.test.js +0 -167
- package/dist/test/tools/balance.test.js.map +0 -1
- package/dist/test/tools/contract-info.test.d.ts +0 -2
- package/dist/test/tools/contract-info.test.d.ts.map +0 -1
- package/dist/test/tools/contract-info.test.js +0 -286
- package/dist/test/tools/contract-info.test.js.map +0 -1
- package/dist/test/tools/contract.test.d.ts +0 -2
- package/dist/test/tools/contract.test.d.ts.map +0 -1
- package/dist/test/tools/contract.test.js +0 -234
- package/dist/test/tools/contract.test.js.map +0 -1
- package/dist/test/tools/ens.test.d.ts +0 -2
- package/dist/test/tools/ens.test.d.ts.map +0 -1
- package/dist/test/tools/ens.test.js +0 -236
- package/dist/test/tools/ens.test.js.map +0 -1
- package/dist/test/tools/logs.test.d.ts +0 -2
- package/dist/test/tools/logs.test.d.ts.map +0 -1
- package/dist/test/tools/logs.test.js +0 -196
- package/dist/test/tools/logs.test.js.map +0 -1
- package/dist/test/tools/signatures.test.d.ts +0 -2
- package/dist/test/tools/signatures.test.d.ts.map +0 -1
- package/dist/test/tools/signatures.test.js +0 -112
- package/dist/test/tools/signatures.test.js.map +0 -1
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeAll } from 'vitest';
|
|
2
|
-
import { config } from 'dotenv';
|
|
3
|
-
import { initializeClientManager } from '../../src/client.js';
|
|
4
|
-
import contractInfoTools from '../../src/tools/contract-info.js';
|
|
5
|
-
// Load environment variables
|
|
6
|
-
config();
|
|
7
|
-
const USDC_ADDRESS = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
|
|
8
|
-
const CHAIN = 'mainnet';
|
|
9
|
-
const maybeDescribe = process.env.ETHERSCAN_API_KEY ? describe : describe.skip;
|
|
10
|
-
maybeDescribe('Contract Info Tools (with Caching)', () => {
|
|
11
|
-
beforeAll(() => {
|
|
12
|
-
// Initialize client manager with config
|
|
13
|
-
initializeClientManager({
|
|
14
|
-
alchemyApiKey: process.env.ALCHEMY_API_KEY,
|
|
15
|
-
infuraApiKey: process.env.INFURA_API_KEY,
|
|
16
|
-
etherscanApiKey: process.env.ETHERSCAN_API_KEY,
|
|
17
|
-
hypersyncApiKey: process.env.HYPERSYNC_API_KEY
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
describe("get_contract_abi", () => {
|
|
21
|
-
it("should fetch USDC contract ABI", async () => {
|
|
22
|
-
const result = await contractInfoTools.get_contract_abi.handler({
|
|
23
|
-
chain: CHAIN,
|
|
24
|
-
address: USDC_ADDRESS,
|
|
25
|
-
include: ["abi", "metadata"],
|
|
26
|
-
});
|
|
27
|
-
const data = JSON.parse(result.content[0].text);
|
|
28
|
-
expect(data.address).toBe(USDC_ADDRESS);
|
|
29
|
-
expect(data.chain).toBe(CHAIN);
|
|
30
|
-
expect(data.abi).toBeDefined();
|
|
31
|
-
expect(Array.isArray(data.abi)).toBe(true);
|
|
32
|
-
expect(data.abi.length).toBeGreaterThan(0);
|
|
33
|
-
expect(data.contractName).toBeDefined();
|
|
34
|
-
expect(data.isVerified).toBe(true);
|
|
35
|
-
});
|
|
36
|
-
it("should include implementation ABI for proxy contracts", async () => {
|
|
37
|
-
const result = await contractInfoTools.get_contract_abi.handler({
|
|
38
|
-
chain: CHAIN,
|
|
39
|
-
address: USDC_ADDRESS,
|
|
40
|
-
include: ["abi", "implementationAbi", "metadata"],
|
|
41
|
-
});
|
|
42
|
-
const data = JSON.parse(result.content[0].text);
|
|
43
|
-
expect(data.isProxy).toBe(true);
|
|
44
|
-
expect(data.implementationAddress).toBeDefined();
|
|
45
|
-
expect(data.implementationAbi).toBeDefined();
|
|
46
|
-
expect(Array.isArray(data.implementationAbi)).toBe(true);
|
|
47
|
-
});
|
|
48
|
-
it("should include compilation info when requested", async () => {
|
|
49
|
-
const result = await contractInfoTools.get_contract_abi.handler({
|
|
50
|
-
chain: CHAIN,
|
|
51
|
-
address: USDC_ADDRESS,
|
|
52
|
-
include: ["abi", "metadata", "compilation"],
|
|
53
|
-
});
|
|
54
|
-
const data = JSON.parse(result.content[0].text);
|
|
55
|
-
expect(data.compilerVersion).toBeDefined();
|
|
56
|
-
expect(data.optimizationUsed).toBeDefined();
|
|
57
|
-
});
|
|
58
|
-
it('should include creation info when requested', async () => {
|
|
59
|
-
const result = await contractInfoTools.get_contract_abi.handler({
|
|
60
|
-
chain: CHAIN,
|
|
61
|
-
address: USDC_ADDRESS,
|
|
62
|
-
include: ['abi', 'metadata', 'creation']
|
|
63
|
-
});
|
|
64
|
-
const data = JSON.parse(result.content[0].text);
|
|
65
|
-
expect(data.creationInfo).toBeDefined();
|
|
66
|
-
expect(data.creationInfo.creator).toBeDefined();
|
|
67
|
-
expect(data.creationInfo.transactionHash).toBeDefined();
|
|
68
|
-
});
|
|
69
|
-
it('should include ABI statistics when requested', async () => {
|
|
70
|
-
const result = await contractInfoTools.get_contract_abi.handler({
|
|
71
|
-
chain: CHAIN,
|
|
72
|
-
address: USDC_ADDRESS,
|
|
73
|
-
include: ['abi', 'metadata', 'stats']
|
|
74
|
-
});
|
|
75
|
-
const data = JSON.parse(result.content[0].text);
|
|
76
|
-
expect(data.abiSize).toBeDefined();
|
|
77
|
-
expect(data.functions).toBeGreaterThan(0);
|
|
78
|
-
expect(data.events).toBeGreaterThan(0);
|
|
79
|
-
});
|
|
80
|
-
it("should use cached data on second call (no duplicate API call)", async () => {
|
|
81
|
-
// First call - should hit API
|
|
82
|
-
const result1 = await contractInfoTools.get_contract_abi.handler({
|
|
83
|
-
chain: CHAIN,
|
|
84
|
-
address: USDC_ADDRESS,
|
|
85
|
-
include: ["abi", "metadata"],
|
|
86
|
-
});
|
|
87
|
-
// Second call - should use cache
|
|
88
|
-
const result2 = await contractInfoTools.get_contract_abi.handler({
|
|
89
|
-
chain: CHAIN,
|
|
90
|
-
address: USDC_ADDRESS,
|
|
91
|
-
include: ["abi", "metadata"],
|
|
92
|
-
});
|
|
93
|
-
const data1 = JSON.parse(result1.content[0].text);
|
|
94
|
-
const data2 = JSON.parse(result2.content[0].text);
|
|
95
|
-
// Data should be identical
|
|
96
|
-
expect(data1.address).toBe(data2.address);
|
|
97
|
-
expect(data1.contractName).toBe(data2.contractName);
|
|
98
|
-
expect(data1.abi).toEqual(data2.abi);
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
describe("get_contract_source_code", () => {
|
|
102
|
-
it('should fetch USDC contract source code summary', async () => {
|
|
103
|
-
const result = await contractInfoTools.get_contract_source_code.handler({
|
|
104
|
-
chain: CHAIN,
|
|
105
|
-
address: USDC_ADDRESS,
|
|
106
|
-
includeImplementation: true,
|
|
107
|
-
includeSource: 'summary'
|
|
108
|
-
});
|
|
109
|
-
const data = JSON.parse(result.content[0].text);
|
|
110
|
-
expect(data.success).toBe(true);
|
|
111
|
-
expect(data.isVerified).toBe(true);
|
|
112
|
-
expect(data.contractName).toBe('FiatTokenProxy');
|
|
113
|
-
expect(data.fileCount).toBeGreaterThan(0);
|
|
114
|
-
expect(data.totalLines).toBeGreaterThan(0);
|
|
115
|
-
expect(data.files).toBeDefined();
|
|
116
|
-
expect(Array.isArray(data.files)).toBe(true);
|
|
117
|
-
});
|
|
118
|
-
it("should fetch full source code when requested", async () => {
|
|
119
|
-
const result = await contractInfoTools.get_contract_source_code.handler({
|
|
120
|
-
chain: CHAIN,
|
|
121
|
-
address: USDC_ADDRESS,
|
|
122
|
-
includeImplementation: false,
|
|
123
|
-
includeSource: "full",
|
|
124
|
-
});
|
|
125
|
-
const data = JSON.parse(result.content[0].text);
|
|
126
|
-
expect(data.sourceFiles).toBeDefined();
|
|
127
|
-
expect(typeof data.sourceFiles).toBe('object');
|
|
128
|
-
const firstFile = Object.values(data.sourceFiles)[0];
|
|
129
|
-
expect(firstFile).toBeDefined();
|
|
130
|
-
expect(firstFile.length).toBeGreaterThan(0);
|
|
131
|
-
});
|
|
132
|
-
it("should fetch metadata only when requested", async () => {
|
|
133
|
-
const result = await contractInfoTools.get_contract_source_code.handler({
|
|
134
|
-
chain: CHAIN,
|
|
135
|
-
address: USDC_ADDRESS,
|
|
136
|
-
includeImplementation: false,
|
|
137
|
-
includeSource: "none",
|
|
138
|
-
});
|
|
139
|
-
const data = JSON.parse(result.content[0].text);
|
|
140
|
-
expect(data.contractName).toBeDefined();
|
|
141
|
-
expect(data.isVerified).toBe(true);
|
|
142
|
-
expect(data.files).toBeUndefined();
|
|
143
|
-
});
|
|
144
|
-
it.skip("should include implementation source for proxy contracts", async () => {
|
|
145
|
-
// TODO: This test depends on USDC being a proxy with accessible implementation
|
|
146
|
-
const result = await contractInfoTools.get_contract_source_code.handler({
|
|
147
|
-
chain: CHAIN,
|
|
148
|
-
address: USDC_ADDRESS,
|
|
149
|
-
includeImplementation: true,
|
|
150
|
-
includeSource: "summary",
|
|
151
|
-
});
|
|
152
|
-
const data = JSON.parse(result.content[0].text);
|
|
153
|
-
expect(data.isProxy).toBe(true);
|
|
154
|
-
expect(data.implementationAddress).toBeDefined();
|
|
155
|
-
expect(data.implementation).toBeDefined();
|
|
156
|
-
expect(data.implementation.contractName).toBeDefined();
|
|
157
|
-
expect(data.implementation.files).toBeDefined();
|
|
158
|
-
});
|
|
159
|
-
it("should reuse cached data from get_contract_abi", async () => {
|
|
160
|
-
// Call get_contract_abi first
|
|
161
|
-
await contractInfoTools.get_contract_abi.handler({
|
|
162
|
-
chain: CHAIN,
|
|
163
|
-
address: USDC_ADDRESS,
|
|
164
|
-
include: ["abi", "metadata"],
|
|
165
|
-
});
|
|
166
|
-
// Call get_contract_source_code - should use cached rawInfo
|
|
167
|
-
const result = await contractInfoTools.get_contract_source_code.handler({
|
|
168
|
-
chain: CHAIN,
|
|
169
|
-
address: USDC_ADDRESS,
|
|
170
|
-
includeImplementation: false,
|
|
171
|
-
includeSource: "summary",
|
|
172
|
-
});
|
|
173
|
-
const data = JSON.parse(result.content[0].text);
|
|
174
|
-
expect(data.contractName).toBeDefined();
|
|
175
|
-
expect(data.isVerified).toBe(true);
|
|
176
|
-
});
|
|
177
|
-
});
|
|
178
|
-
describe("get_contract_source_file", () => {
|
|
179
|
-
it("should list available files when no filePath specified", async () => {
|
|
180
|
-
// First cache the contract
|
|
181
|
-
await contractInfoTools.get_contract_source_code.handler({
|
|
182
|
-
chain: CHAIN,
|
|
183
|
-
address: USDC_ADDRESS,
|
|
184
|
-
includeImplementation: false,
|
|
185
|
-
includeSource: "full",
|
|
186
|
-
});
|
|
187
|
-
// Then list files
|
|
188
|
-
const result = await contractInfoTools.get_contract_source_file.handler({
|
|
189
|
-
chain: CHAIN,
|
|
190
|
-
address: USDC_ADDRESS,
|
|
191
|
-
useImplementation: false,
|
|
192
|
-
});
|
|
193
|
-
const data = JSON.parse(result.content[0].text);
|
|
194
|
-
expect(data.files).toBeDefined();
|
|
195
|
-
expect(Array.isArray(data.files)).toBe(true);
|
|
196
|
-
expect(data.files.length).toBeGreaterThan(0);
|
|
197
|
-
});
|
|
198
|
-
it.skip("should fetch specific file content", async () => {
|
|
199
|
-
// TODO: Fix caching behavior - test relies on proper sourceFiles caching
|
|
200
|
-
// First cache the contract
|
|
201
|
-
await contractInfoTools.get_contract_source_code.handler({
|
|
202
|
-
chain: CHAIN,
|
|
203
|
-
address: USDC_ADDRESS,
|
|
204
|
-
includeImplementation: false,
|
|
205
|
-
includeSource: "full",
|
|
206
|
-
});
|
|
207
|
-
// Get file list
|
|
208
|
-
const listResult = await contractInfoTools.get_contract_source_file.handler({
|
|
209
|
-
chain: CHAIN,
|
|
210
|
-
address: USDC_ADDRESS,
|
|
211
|
-
useImplementation: false,
|
|
212
|
-
});
|
|
213
|
-
const listData = JSON.parse(listResult.content[0].text);
|
|
214
|
-
const firstFile = listData.files[0];
|
|
215
|
-
// Get specific file
|
|
216
|
-
const fileResult = await contractInfoTools.get_contract_source_file.handler({
|
|
217
|
-
chain: CHAIN,
|
|
218
|
-
address: USDC_ADDRESS,
|
|
219
|
-
useImplementation: false,
|
|
220
|
-
filePath: firstFile.path,
|
|
221
|
-
});
|
|
222
|
-
const fileData = JSON.parse(fileResult.content[0].text);
|
|
223
|
-
expect(fileData.filePath).toBe(firstFile.path);
|
|
224
|
-
expect(fileData.content).toBeDefined();
|
|
225
|
-
expect(fileData.content.length).toBeGreaterThan(0);
|
|
226
|
-
expect(fileData.size).toBe(firstFile.size);
|
|
227
|
-
});
|
|
228
|
-
it.skip("should error when requesting uncached contract", async () => {
|
|
229
|
-
// TODO: Fix error handling - tool returns success:false instead of throwing
|
|
230
|
-
const RANDOM_ADDRESS = "0x1234567890123456789012345678901234567890";
|
|
231
|
-
await expect(contractInfoTools.get_contract_source_file.handler({
|
|
232
|
-
chain: CHAIN,
|
|
233
|
-
address: RANDOM_ADDRESS,
|
|
234
|
-
useImplementation: false,
|
|
235
|
-
})).rejects.toThrow();
|
|
236
|
-
});
|
|
237
|
-
});
|
|
238
|
-
describe("Caching Optimization", () => {
|
|
239
|
-
it.skip("should share cache between get_contract_abi and get_contract_source_code", async () => {
|
|
240
|
-
// TODO: Verify caching behavior - test depends on specific contract metadata
|
|
241
|
-
const TEST_ADDRESS = "0x6b175474e89094c44da98b954eedeac495271d0f"; // DAI
|
|
242
|
-
// Call get_contract_abi first
|
|
243
|
-
const abiResult = await contractInfoTools.get_contract_abi.handler({
|
|
244
|
-
chain: CHAIN,
|
|
245
|
-
address: TEST_ADDRESS,
|
|
246
|
-
include: ["abi", "metadata"],
|
|
247
|
-
});
|
|
248
|
-
const abiData = JSON.parse(abiResult.content[0].text);
|
|
249
|
-
// Call get_contract_source_code - should use cached data
|
|
250
|
-
const sourceResult = await contractInfoTools.get_contract_source_code.handler({
|
|
251
|
-
chain: CHAIN,
|
|
252
|
-
address: TEST_ADDRESS,
|
|
253
|
-
includeImplementation: false,
|
|
254
|
-
includeSource: "summary",
|
|
255
|
-
});
|
|
256
|
-
const sourceData = JSON.parse(sourceResult.content[0].text);
|
|
257
|
-
// Both should have same metadata
|
|
258
|
-
expect(abiData.contractName).toBe(sourceData.contractName);
|
|
259
|
-
expect(abiData.isVerified).toBe(sourceData.isVerified);
|
|
260
|
-
expect(abiData.isProxy).toBe(sourceData.isProxy);
|
|
261
|
-
});
|
|
262
|
-
it("should cache rawInfo immediately on fetchContractInfo", async () => {
|
|
263
|
-
const TEST_ADDRESS = "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"; // WBTC
|
|
264
|
-
// First call should cache rawInfo
|
|
265
|
-
await contractInfoTools.get_contract_abi.handler({
|
|
266
|
-
chain: CHAIN,
|
|
267
|
-
address: TEST_ADDRESS,
|
|
268
|
-
include: ["abi"],
|
|
269
|
-
});
|
|
270
|
-
// Second call should use cached rawInfo (even with different include params)
|
|
271
|
-
const result = await contractInfoTools.get_contract_abi.handler({
|
|
272
|
-
chain: CHAIN,
|
|
273
|
-
address: TEST_ADDRESS,
|
|
274
|
-
include: ["abi", "metadata", "compilation", "creation", "stats"],
|
|
275
|
-
});
|
|
276
|
-
const data = JSON.parse(result.content[0].text);
|
|
277
|
-
expect(data.contractName).toBeDefined();
|
|
278
|
-
expect(data.compilerVersion).toBeDefined();
|
|
279
|
-
expect(data.creationInfo).toBeDefined();
|
|
280
|
-
expect(data.creationInfo.creator).toBeDefined();
|
|
281
|
-
expect(data.abiSize).toBeDefined();
|
|
282
|
-
expect(data.functions).toBeDefined();
|
|
283
|
-
});
|
|
284
|
-
});
|
|
285
|
-
});
|
|
286
|
-
//# sourceMappingURL=contract-info.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contract-info.test.js","sourceRoot":"","sources":["../../../test/tools/contract-info.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contract.test.d.ts","sourceRoot":"","sources":["../../../test/tools/contract.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeAll } from 'vitest';
|
|
2
|
-
import { config } from 'dotenv';
|
|
3
|
-
import { initializeClientManager } from '../../src/client.js';
|
|
4
|
-
import contractTools from '../../src/tools/contract.js';
|
|
5
|
-
// Load environment variables
|
|
6
|
-
config();
|
|
7
|
-
describe('Contract Tools', () => {
|
|
8
|
-
beforeAll(() => {
|
|
9
|
-
// Initialize client manager with config
|
|
10
|
-
initializeClientManager({
|
|
11
|
-
alchemyApiKey: process.env.ALCHEMY_API_KEY,
|
|
12
|
-
infuraApiKey: process.env.INFURA_API_KEY,
|
|
13
|
-
etherscanApiKey: process.env.ETHERSCAN_API_KEY,
|
|
14
|
-
hypersyncApiKey: process.env.HYPERSYNC_API_KEY
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
describe('is_contract', () => {
|
|
18
|
-
it('should identify a contract address', async () => {
|
|
19
|
-
const USDC_CONTRACT = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
|
|
20
|
-
const result = await contractTools.is_contract.handler({
|
|
21
|
-
chain: 'mainnet',
|
|
22
|
-
address: USDC_CONTRACT
|
|
23
|
-
});
|
|
24
|
-
const data = JSON.parse(result.content[0].text);
|
|
25
|
-
expect(data.address).toBe(USDC_CONTRACT);
|
|
26
|
-
expect(data.isContract).toBe(true);
|
|
27
|
-
expect(data.bytecodeLength).toBeGreaterThan(0);
|
|
28
|
-
}, 30000);
|
|
29
|
-
it('should identify an EOA (wallet) address', async () => {
|
|
30
|
-
// Use a random high address that's unlikely to have been used
|
|
31
|
-
const TEST_EOA = '0x0000000000000000000000000000000000000003';
|
|
32
|
-
const result = await contractTools.is_contract.handler({
|
|
33
|
-
chain: 'mainnet',
|
|
34
|
-
address: TEST_EOA
|
|
35
|
-
});
|
|
36
|
-
const data = JSON.parse(result.content[0].text);
|
|
37
|
-
expect(data.address).toBe(TEST_EOA);
|
|
38
|
-
expect(data.isContract).toBe(false);
|
|
39
|
-
expect(data.bytecodeLength).toBe(0);
|
|
40
|
-
}, 30000);
|
|
41
|
-
it('should work with different chains', async () => {
|
|
42
|
-
const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
|
|
43
|
-
const result = await contractTools.is_contract.handler({
|
|
44
|
-
chain: 'base',
|
|
45
|
-
address: ZERO_ADDRESS
|
|
46
|
-
});
|
|
47
|
-
const data = JSON.parse(result.content[0].text);
|
|
48
|
-
expect(data.chain).toBe('base');
|
|
49
|
-
expect(data.isContract).toBe(false);
|
|
50
|
-
}, 30000);
|
|
51
|
-
});
|
|
52
|
-
describe('call_contract_function', () => {
|
|
53
|
-
it('should call USDC balanceOf function', async () => {
|
|
54
|
-
const USDC_CONTRACT = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
|
|
55
|
-
const HOLDER_ADDRESS = '0x28C6c06298d514Db089934071355E5743bf21d60'; // Binance 14
|
|
56
|
-
const result = await contractTools.call_contract_function.handler({
|
|
57
|
-
calls: [
|
|
58
|
-
{
|
|
59
|
-
chain: 'mainnet',
|
|
60
|
-
contractAddress: USDC_CONTRACT,
|
|
61
|
-
functionAbi: 'function balanceOf(address owner) view returns (uint256)',
|
|
62
|
-
args: [HOLDER_ADDRESS]
|
|
63
|
-
}
|
|
64
|
-
]
|
|
65
|
-
});
|
|
66
|
-
const data = JSON.parse(result.content[0].text);
|
|
67
|
-
expect(data.success).toBe(true);
|
|
68
|
-
expect(data.results).toHaveLength(1);
|
|
69
|
-
expect(data.results[0].success).toBe(true);
|
|
70
|
-
expect(data.results[0].result).toBeDefined();
|
|
71
|
-
expect(BigInt(data.results[0].result)).toBeGreaterThan(0n);
|
|
72
|
-
}, 30000);
|
|
73
|
-
it('should call USDC name, symbol, and decimals functions in batch', async () => {
|
|
74
|
-
const USDC_CONTRACT = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
|
|
75
|
-
const result = await contractTools.call_contract_function.handler({
|
|
76
|
-
calls: [
|
|
77
|
-
{
|
|
78
|
-
chain: 'mainnet',
|
|
79
|
-
contractAddress: USDC_CONTRACT,
|
|
80
|
-
functionAbi: 'function name() view returns (string)',
|
|
81
|
-
label: 'name'
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
chain: 'mainnet',
|
|
85
|
-
contractAddress: USDC_CONTRACT,
|
|
86
|
-
functionAbi: 'function symbol() view returns (string)',
|
|
87
|
-
label: 'symbol'
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
chain: 'mainnet',
|
|
91
|
-
contractAddress: USDC_CONTRACT,
|
|
92
|
-
functionAbi: 'function decimals() view returns (uint8)',
|
|
93
|
-
label: 'decimals'
|
|
94
|
-
}
|
|
95
|
-
]
|
|
96
|
-
});
|
|
97
|
-
const data = JSON.parse(result.content[0].text);
|
|
98
|
-
expect(data.success).toBe(true);
|
|
99
|
-
expect(data.results).toHaveLength(3);
|
|
100
|
-
const nameResult = data.results.find((r) => r.label === 'name');
|
|
101
|
-
expect(nameResult.success).toBe(true);
|
|
102
|
-
expect(nameResult.result).toBe('USD Coin');
|
|
103
|
-
const symbolResult = data.results.find((r) => r.label === 'symbol');
|
|
104
|
-
expect(symbolResult.success).toBe(true);
|
|
105
|
-
expect(symbolResult.result).toBe('USDC');
|
|
106
|
-
const decimalsResult = data.results.find((r) => r.label === 'decimals');
|
|
107
|
-
expect(decimalsResult.success).toBe(true);
|
|
108
|
-
expect(decimalsResult.result).toBe(6);
|
|
109
|
-
}, 30000);
|
|
110
|
-
it('should call function at specific block number', async () => {
|
|
111
|
-
const USDC_CONTRACT = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
|
|
112
|
-
const BLOCK_NUMBER = '18000000';
|
|
113
|
-
const result = await contractTools.call_contract_function.handler({
|
|
114
|
-
calls: [
|
|
115
|
-
{
|
|
116
|
-
chain: 'mainnet',
|
|
117
|
-
contractAddress: USDC_CONTRACT,
|
|
118
|
-
functionAbi: 'function totalSupply() view returns (uint256)',
|
|
119
|
-
blockNumber: BLOCK_NUMBER
|
|
120
|
-
}
|
|
121
|
-
]
|
|
122
|
-
});
|
|
123
|
-
const data = JSON.parse(result.content[0].text);
|
|
124
|
-
expect(data.success).toBe(true);
|
|
125
|
-
expect(data.results).toHaveLength(1);
|
|
126
|
-
expect(data.results[0].success).toBe(true);
|
|
127
|
-
expect(data.results[0].blockNumber).toBe(BLOCK_NUMBER);
|
|
128
|
-
expect(data.results[0].result).toBeDefined();
|
|
129
|
-
}, 30000);
|
|
130
|
-
it('should handle function calls with multiple arguments', async () => {
|
|
131
|
-
const USDC_CONTRACT = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
|
|
132
|
-
const OWNER = '0x28C6c06298d514Db089934071355E5743bf21d60';
|
|
133
|
-
const SPENDER = '0x0000000000000000000000000000000000000001';
|
|
134
|
-
const result = await contractTools.call_contract_function.handler({
|
|
135
|
-
calls: [
|
|
136
|
-
{
|
|
137
|
-
chain: 'mainnet',
|
|
138
|
-
contractAddress: USDC_CONTRACT,
|
|
139
|
-
functionAbi: 'function allowance(address owner, address spender) view returns (uint256)',
|
|
140
|
-
args: [OWNER, SPENDER]
|
|
141
|
-
}
|
|
142
|
-
]
|
|
143
|
-
});
|
|
144
|
-
const data = JSON.parse(result.content[0].text);
|
|
145
|
-
expect(data.success).toBe(true);
|
|
146
|
-
expect(data.results).toHaveLength(1);
|
|
147
|
-
expect(data.results[0].success).toBe(true);
|
|
148
|
-
expect(data.results[0].result).toBeDefined();
|
|
149
|
-
// Allowance might be 0, that's fine
|
|
150
|
-
}, 30000);
|
|
151
|
-
it('should handle calls to different chains in batch', async () => {
|
|
152
|
-
const USDC_MAINNET = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
|
|
153
|
-
const USDC_BASE = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
|
|
154
|
-
const result = await contractTools.call_contract_function.handler({
|
|
155
|
-
calls: [
|
|
156
|
-
{
|
|
157
|
-
chain: 'mainnet',
|
|
158
|
-
contractAddress: USDC_MAINNET,
|
|
159
|
-
functionAbi: 'function symbol() view returns (string)',
|
|
160
|
-
label: 'mainnet-symbol'
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
chain: 'base',
|
|
164
|
-
contractAddress: USDC_BASE,
|
|
165
|
-
functionAbi: 'function symbol() view returns (string)',
|
|
166
|
-
label: 'base-symbol'
|
|
167
|
-
}
|
|
168
|
-
]
|
|
169
|
-
});
|
|
170
|
-
const data = JSON.parse(result.content[0].text);
|
|
171
|
-
expect(data.success).toBe(true);
|
|
172
|
-
expect(data.results).toHaveLength(2);
|
|
173
|
-
expect(data.results[0].label).toBe('mainnet-symbol');
|
|
174
|
-
expect(data.results[0].chain).toBe('mainnet');
|
|
175
|
-
expect(data.results[1].label).toBe('base-symbol');
|
|
176
|
-
expect(data.results[1].chain).toBe('base');
|
|
177
|
-
}, 30000);
|
|
178
|
-
it('should handle boolean return values', async () => {
|
|
179
|
-
const USDC_CONTRACT = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
|
|
180
|
-
const result = await contractTools.call_contract_function.handler({
|
|
181
|
-
calls: [
|
|
182
|
-
{
|
|
183
|
-
chain: 'mainnet',
|
|
184
|
-
contractAddress: USDC_CONTRACT,
|
|
185
|
-
functionAbi: 'function paused() view returns (bool)'
|
|
186
|
-
}
|
|
187
|
-
]
|
|
188
|
-
});
|
|
189
|
-
const data = JSON.parse(result.content[0].text);
|
|
190
|
-
expect(data.success).toBe(true);
|
|
191
|
-
expect(data.results).toHaveLength(1);
|
|
192
|
-
expect(data.results[0].success).toBe(true);
|
|
193
|
-
expect(typeof data.results[0].result).toBe('boolean');
|
|
194
|
-
}, 30000);
|
|
195
|
-
it('should handle functions returning multiple values', async () => {
|
|
196
|
-
const USDC_CONTRACT = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
|
|
197
|
-
// USDC doesn't have a multi-return function in standard ERC20, but we can test the structure
|
|
198
|
-
// Let's use a function that exists and check the result format
|
|
199
|
-
const result = await contractTools.call_contract_function.handler({
|
|
200
|
-
calls: [
|
|
201
|
-
{
|
|
202
|
-
chain: 'mainnet',
|
|
203
|
-
contractAddress: USDC_CONTRACT,
|
|
204
|
-
functionAbi: 'function name() view returns (string)'
|
|
205
|
-
}
|
|
206
|
-
]
|
|
207
|
-
});
|
|
208
|
-
const data = JSON.parse(result.content[0].text);
|
|
209
|
-
expect(data.success).toBe(true);
|
|
210
|
-
expect(data.results).toHaveLength(1);
|
|
211
|
-
expect(data.results[0].success).toBe(true);
|
|
212
|
-
expect(data.results[0].contractAddress).toBe(USDC_CONTRACT);
|
|
213
|
-
}, 30000);
|
|
214
|
-
it('should handle reverted calls gracefully', async () => {
|
|
215
|
-
const USDC_CONTRACT = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
|
|
216
|
-
// Try to call a function that doesn't exist or will revert
|
|
217
|
-
const result = await contractTools.call_contract_function.handler({
|
|
218
|
-
calls: [
|
|
219
|
-
{
|
|
220
|
-
chain: 'mainnet',
|
|
221
|
-
contractAddress: USDC_CONTRACT,
|
|
222
|
-
functionAbi: 'function nonExistentFunction() view returns (uint256)'
|
|
223
|
-
}
|
|
224
|
-
]
|
|
225
|
-
});
|
|
226
|
-
const data = JSON.parse(result.content[0].text);
|
|
227
|
-
expect(data.success).toBe(true);
|
|
228
|
-
expect(data.results).toHaveLength(1);
|
|
229
|
-
expect(data.results[0].success).toBe(false);
|
|
230
|
-
expect(data.results[0].error).toBeDefined();
|
|
231
|
-
}, 30000);
|
|
232
|
-
});
|
|
233
|
-
});
|
|
234
|
-
//# sourceMappingURL=contract.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contract.test.js","sourceRoot":"","sources":["../../../test/tools/contract.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ens.test.d.ts","sourceRoot":"","sources":["../../../test/tools/ens.test.ts"],"names":[],"mappings":""}
|