Skip to content

Commit 241764c

Browse files
committed
feat: support transaction to uninit account with in-msg with exotic cell library
1 parent 8952bb5 commit 241764c

File tree

3 files changed

+58
-36
lines changed

3 files changed

+58
-36
lines changed

src/methods.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ export const collectUsedLibraries = async (
338338
// be an exotic library cell. We must preload such libraries as
339339
// well, otherwise the sandbox would fail to resolve a library
340340
// during emulation.
341-
await addMaybeExoticLibrary(init.code ?? undefined)
341+
loadedCellCode ??= await addMaybeExoticLibrary(init.code ?? undefined)
342342
}
343343

344344
// no libs found, return undefined, for emulator this means no libraries

src/test/__snapshots__/test.spec.ts.snap

Lines changed: 43 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -35,41 +35,6 @@ exports[`transactions should return correct information for simple transaction w
3535
}
3636
`;
3737

38-
exports[`transactions should return correct information for transaction 1`] = `"b5ee9c724101010100730000e2ff00208e683001d072d721d200d200fa4021103450666f04f86102f862ed44d0d3ff013102915be0d70d1ff2e082018210988d4037ba8e308308d718666c12f90102f9108e21f84270830670136d5520c8cf8580ca00cf8440ce01fa02806acf40f400c901fb00dee05bf2c082e1f2c80ba1dd8d9d"`;
39-
40-
exports[`transactions should return correct information for transaction 2`] = `"b5ee9c724101010100730000e2ff00208e683001d072d721d200d200fa4021103450666f04f86102f862ed44d0d3ff013102915be0d70d1ff2e082018210988d4037ba8e308308d718666c12f90102f9108e21f84270830670136d5520c8cf8580ca00cf8440ce01fa02806acf40f400c901fb00dee05bf2c082e1f2c80ba1dd8d9d"`;
41-
42-
exports[`transactions should return correct information for transaction 3`] = `"EQBAmIBdInKmGzdTUMay9fqq8nyCZ9jnUh_yBFEE_cfedniG"`;
43-
44-
exports[`transactions should return correct information for transaction 4`] = `"EQBQP4J1fVdzKVP9LBOoFQGPhE0OZe764tPvMoaNfY8Kn2jh"`;
45-
46-
exports[`transactions should return correct information for transaction 5`] = `100000000n`;
47-
48-
exports[`transactions should return correct information for transaction 6`] = `56244582000003n`;
49-
50-
exports[`transactions should return correct information for transaction 7`] = `1745087734`;
51-
52-
exports[`transactions should return correct information for transaction 8`] = `
53-
{
54-
"exitCode": 130,
55-
"gasFees": 428800n,
56-
"gasUsed": 1072n,
57-
"success": false,
58-
"vmSteps": 36,
59-
}
60-
`;
61-
62-
exports[`transactions should return correct information for transaction 9`] = `undefined`;
63-
64-
exports[`transactions should return correct information for transaction 10`] = `
65-
{
66-
"balanceAfter": 0n,
67-
"balanceBefore": 0n,
68-
"sentTotal": 99171200n,
69-
"totalFees": 562131n,
70-
}
71-
`;
72-
7338
exports[`transactions should return correct information for transaction for code with several exotic library cells 1`] = `"b5ee9c7241022601000b59000114ff00f4a413f4bcf2c80b0102016202250202c9030f02f7dbb68bb7ec831c03cb418087434c0dc009c6c260c5fc0a00835c85677be903e900c7e800c5c75c87e800c7e800c1cea6d0000f4c7f4cfc412040dc415914110c4dbc27e187e105bc4373e105bc45c007e910c006ebcb8157b51343e90007e18be90007e18fe80007e193e80007e19747e105bc47e10f1c178c03e106040703baf8416f17f8416f13821050c6a654ba8fc4fa00fa00fa00fa00d200fa40f404d531fa40fa4030f8445009a0f864f8455007a0f865029d23c200f844c200f845c200b0b09b23c200f844f845a0c200b0e2e30fdb3c7f923070e292db31e005060d00ca70f843f842f844f84548164014507a1319c85006cf1601cf165004cf16c9821006ecd527f8416f1401c8cb1fcb3f5006fa025004fa025005cf165004fa0201fa0212f400ccc98100a0718018c8cb055004cf165004fa0212cb6accc901fb0070f86470f86500885f0582080f4240f8416f15f82ca0f8416f16a101b60970fb0270018100828210d53276db59f8416f14708010c8cb055004cf165005fa0212cb6a12cb1f12cb3fc901fb0003be6f11f842c7058f56f8416f17f8416f138210132b9a2cba8ebff8416f1382100ff8bfc6bae30230f8416f13821029d22935ba8e2282080f424070fb0270f8428306708018c8cb055003cf165003fa02cb6ac901fb007fe070e30d92db31e0de080b0e01fef8416f16f8416f12aa0182080f4240a08208989680a08208989680a082099bfcc0a082080f4240a08209312d00a0bcf2e053fa00fa00fa00fa00fa40f404d5fa40fa40d102d1237001fa443001ba217001fa443001bab0227001fa443001bab0f2e056279437f84407df269436f84506df25c20028c20028c200b0b0f2e051090198f84428a1f864f84527a1f865f844c2fff845c2ffb0f2e050f844f845a0c2008e1782080f4240f8416f15f82ca0f8416f16a101b60970fb02de70f843f8416f1108107a1069105904103a49a00a01a4c85006cf1601cf165004cf16c9821006ecd527f8416f1401c8cb1fcb3f5006fa025004fa025005cf165004fa0201fa0212f400ccc9128100a0718018c8cb055004cf165004fa0212cb6accc901fb00db3c7f0d01c0f404f404d1f844c200f845c200b1f2e050f8416f16f8416f12a7078208989680a08208989680a08208e4e1c0a08208989680a08208f42400a08208989680a08210042c1d80a08208989680a08210042c1d80a0bcf2e05370f843f844f84555130c018882100f98e2b8f8416f1401c8cb1fcb3f5004fa0258fa02f8416f11cf16f400f400c98100a0718018c8cb055004cf165004fa0212cb6accc901fb0070f86470f865db3c7f0d0028c8f842cf16f843cf16f844fa02f845fa02c9ed5400e2f8416f13821024cfc100ba8e5c82080f4240f8416f15f82ca0f8416f16a101b60970fb0270f8416f11f842f843f844f845821024cfc100f8416f1401c8cb1fcb3f5004cf1658cf1601fa0201fa02c9810082718018c8cb055004cf165004fa0212cb6accc901fb007f9170e2dc840ff2f0020148101a0145a610411806f05b59d3b200005cc708c11806f05b59d3b20000290154c2782651f187401101fe702182b05803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880faa35be8e23308288195e54c5dd42177f53a27172fa9ec630262827aa23a904821b782dace9d9aa18de2182708bcc0026baae9e45e470190267a230cfaa18be8e1c0182501425982cf597cd205cef7380a90401821b782dace9d9aa17a0dea76401a7641201f2208261855144814a7ff805980ff0084000be8e2a8238056bc75e2d631000008261855144814a7ff805980ff0084000a98401822056bc75e2d631aa18a001de20824adf0ab5a80a22c61ab5a700be8e278238056bc75e2d63100000824adf0ab5a80a22c61ab5a700a98401822056bc75e2d631aa17a001de201302f882403f1fce3da636ea5cf850be8e268238056bc75e2d6310000082403f1fce3da636ea5cf850a98401822056bc75e2d631aa16a001de20823927fa27722cc06cc5e2be8e268238056bc75e2d63100000823927fa27722cc06cc5e2a98401823815af1d78b58c400000a001de208238280e60114edb805d03bee300201415004c8238056bc75e2d631000008238280e60114edb805d03a9840182380ad78ebc5ac6200000a00102f482380ebc5fb41746121110be8e268238056bc75e2d6310000082380ebc5fb41746121110a984018238056bc75e2d63100000a001de20823808f00f760a4b2db55dbe8e258238056bc75e2d63100000823808f00f760a4b2db55da984018232b5e3af16b1880000a001de20823806f5f1775788937937bee300201617004a8238056bc75e2d63100000823806f5f1775788937937a9840182315af1d78b58c40000a00101ec823806248f33704b286603be8e258238056bc75e2d63100000823806248f33704b286603a984018230ad78ebc5ac620000a001de20823805c548670b9510e7acbe8e258238056bc75e2d63100000823805c548670b9510e7aca98401823056bc75e2d6310000a001de208238056bc75e2d63100000a11801fe8238056bc75e2d631000005122a012a98453008238056bc75e2d63100000a9845c8238056bc75e2d63100000a9842073a90413a051218238056bc75e2d63100000a9842075a90413a051218238056bc75e2d63100000a9842077a90413a051218238056bc75e2d63100000a9842079a90413a0598238056bc75e2d6310000019001ca984800ba904a0aa00a08064a9040137a410411806f05b59d3b200005d4d98411812dca375e059b0b9f187401b02fc8200c354218235c702bd3a30fc0000be228238070c1cc73b00c80000bbb0f2f420c1008e1282300de0b6b3a76400005202a3f05812a984e020821b782dace9d9aa18be8e2820821b782dace9d9aa17be8e18821b782dace9d9aa17a182501425982cf597cd205cef73809171e2e30d01a7648238056bc75e2d63100000211c1d0042821b782dace9d9aa18a18288195e54c5dd42177f53a27172fa9ec630262827aa2303fc822056bc75e2d631aa18be8e1c30822056bc75e2d631aa18a18261855144814a7ff805980ff0084000de21822056bc75e2d631aa17be8e2701822056bc75e2d631aa17a101824adf0ab5a80a22c61ab5a7008238056bc75e2d63100000a984de21822056bc75e2d631aa16bee30021823815af1d78b58c400000bee300211e1f20004c01822056bc75e2d631aa16a10182403f1fce3da636ea5cf8508238056bc75e2d63100000a984004c01823815af1d78b58c400000a101823927fa27722cc06cc5e28238056bc75e2d63100000a98402f482380ad78ebc5ac6200000be8e260182380ad78ebc5ac6200000a1018238280e60114edb805d038238056bc75e2d63100000a984de218238056bc75e2d63100000be8e26018238056bc75e2d63100000a10182380ebc5fb417461211108238056bc75e2d63100000a984de218232b5e3af16b1880000bee300212122004a018232b5e3af16b1880000a101823808f00f760a4b2db55d8238056bc75e2d63100000a98401ec82315af1d78b58c40000be8e250182315af1d78b58c40000a101823806f5f17757889379378238056bc75e2d63100000a984de218238056bc75e2d6310000021a0511382380ad78ebc5ac6200000a98466a0511382381043561a8829300000a98466a05113823815af1d78b58c400000a98466a051132301ea82381b1ae4d6e2ef500000a98466a0511382382086ac351052600000a98466a05113823825f273933db5700000a98466a05113822056bc75e2d631aa16a98466a05113823830ca024f987b900000a98466a0511382383635c9adc5dea00000a98466a0511382383ba1910bf341b00000a98466a0032400428238410d586a20a4c00000a98412a08238056bc75e2d63100000a984018064a9840045a1ba6dda89a1f48003f0c5f48003f0c7f40003f0c9f40003f0cba3f085f087f089f08b626196e6"`;
7439

7540
exports[`transactions should return correct information for transaction for code with several exotic library cells 2`] = `"b5ee9c7241010101002300084202c95a2ed22ab516f77f9d4898dc4578e72f18a2448e8f6832334b0b4bf501bc794eb848f4"`;
@@ -196,6 +161,49 @@ exports[`transactions should return correct information for transaction for unin
196161
}
197162
`;
198163

164+
exports[`transactions should return correct information for transaction with exotic cell library in in-message 1`] = `"b5ee9c7241020f010003d1000114ff00f4a413f4bcf2c80b01020162020c02f8d001d0d3030171b08e48135f038020d721ed44d0d303fa00fa40fa40d104d31f01840f218210178d4519ba0282107bdd97deba12b1f2f48040d721fa003012a0401303c8cb0358fa0201cf1601cf16c9ed54e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f012082100f8a7ea5ba8e85303459db3ce033030601f203d33f0101fa00fa4021fa4430c000f2e14ded44d0d303fa00fa40fa40d15309c7052471b0c00021b1f2ad522bc705500ab1f2e0495115a120c2fff2aff82a54259070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c920f9007074c8cb02ca07cbffc9d004fa40f401fa002004019820d70b009ad74bc00101c001b0f2b19130e2c88210178d451901cb1f500a01cb3f5008fa0223cf1601cf1626fa025007cf16c9c8801801cb055004cf1670fa024063775003cb6bccccc945370500b42191729171e2f839206e938124279120e2216e94318128739101e25023a813a0738103a370f83ca00270f83612a00170f836a07381040982100966018070f837a0bcf2b0048050fb005803c8cb0358fa0201cf1601cf16c9ed5402d0228210178d4519ba8e84325adb3ce034218210595f07bcba8e843101db3ce032208210eed236d3ba8e2f30018040d721d303d1ed44d0d303fa00fa40fa40d1335142c705f2e04a403303c8cb0358fa0201cf1601cf16c9ed54e06c218210d372158cbadc840ff2f0070a03f4ed44d0d303fa00fa40fa40d12372b0c002f26d07d33f0101fa005141a004fa40fa4053bac705f82a5464e070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c9f9007074c8cb02ca07cbffc9d0500cc7051bb1f2e04a09fa0021925f04e30d26d70b01c000b393306c33e30d550208090b0060c882107362d09c01cb1f2501cb3f5004fa0258cf1658cf16c9c8801001cb0524cf1658fa02017158cb6accc98011fb00007a5054a1f82fa07381040982100966018070f837b60972fb02c8801001cb055005cf1670fa027001cb6a8210d53276db01cb1f5801cb3fc9810082fb005901f2ed44d0d303fa00fa40fa40d106d33f0101fa00fa40f401d15141a15288c705f2e04926c2fff2afc882107bdd97de01cb1f5801cb3f01fa0221cf1658cf16c9c8801801cb0526cf1670fa02017158cb6accc903f839206e943081169fde718102f270f8380170f836a0811a7770f836a0bcf2b0028050fb00030b002003c8cb0358fa0201cf1601cf16c9ed540201200d0e0027bfd8176a2686981fd007d207d206899fc15209840021bc508f6a2686981fd007d207d2068af81c31b8493c"`;
165+
166+
exports[`transactions should return correct information for transaction with exotic cell library in in-message 2`] = `"b5ee9c72410101010023000842028f452d7a4dfd74066b682365177259ed05734435be76b5fd4bd5d8af2b7c3d68206bbf76"`;
167+
168+
exports[`transactions should return correct information for transaction with exotic cell library in in-message 3`] = `"EQC39c119oqPkaB-fiA8_EKfejP24_IyKCNEyKFUsvXsfIHe"`;
169+
170+
exports[`transactions should return correct information for transaction with exotic cell library in in-message 4`] = `"EQBS_eklJ4OyxzqOzF8Rcbt2XSo-3Ync7M07ldDpyrnciE9q"`;
171+
172+
exports[`transactions should return correct information for transaction with exotic cell library in in-message 5`] = `48447200n`;
173+
174+
exports[`transactions should return correct information for transaction with exotic cell library in in-message 6`] = `47769594000001n`;
175+
176+
exports[`transactions should return correct information for transaction with exotic cell library in in-message 7`] = `1721040492`;
177+
178+
exports[`transactions should return correct information for transaction with exotic cell library in in-message 8`] = `
179+
{
180+
"exitCode": 0,
181+
"gasFees": 400000n,
182+
"gasUsed": 1000n,
183+
"success": true,
184+
"vmSteps": 0,
185+
}
186+
`;
187+
188+
exports[`transactions should return correct information for transaction with exotic cell library in in-message 9`] = `
189+
"x{0EC3C86D82}
190+
x{36E6B8090235CFE4D4_}
191+
x{0EC3C86D11}
192+
x{}
193+
x{420025E4EAB64D61E5361C6425AC4C7E1BA586B71115E73D2ABC5B7F27821104339B880800000000000000000000000001}
194+
x{7362D09C0000000000621A3B39896808003EB00D8E7A077792DD6FDD7E2C0CFE3E5D1C4E19F42DAAE003553D5EE8ADE010}
195+
x{42000FAC03639E81DDE4B75BF75F8B033F8F974713867D0B6AB800D54F57BA2B78040000000000000000000000000000D53276DB0000000000621A3B}"
196+
`;
197+
198+
exports[`transactions should return correct information for transaction with exotic cell library in in-message 10`] = `
199+
{
200+
"balanceAfter": 6094413n,
201+
"balanceBefore": 0n,
202+
"sentTotal": 40955987n,
203+
"totalFees": 732261n,
204+
}
205+
`;
206+
199207
exports[`transactions should return correct information for transaction with external-in message for wallet v4 1`] = `"b5ee9c72410214010002d4000114ff00f4a413f4bcf2c80b01020120020f020148030602e6d001d0d3032171b0925f04e022d749c120925f04e002d31f218210706c7567bd22821064737472bdb0925f05e003fa403020fa4401c8ca07cbffc9d0ed44d0810140d721f404305c810108f40a6fa131b3925f07e005d33fc8258210706c7567ba923830e30d03821064737472ba925f06e30d0405007801fa00f40430f8276f2230500aa121bef2e0508210706c7567831eb17080185004cb0526cf1658fa0219f400cb6917cb1f5260cb3f20c98040fb0006008a5004810108f45930ed44d0810140d720c801cf16f400c9ed540172b08e23821064737472831eb17080185005cb055003cf1623fa0213cb6acb1fcb3fc98040fb00925f03e2020120070e020120080d020158090a003db29dfb513420405035c87d010c00b23281f2fff274006040423d029be84c600201200b0c0019adce76a26840206b90eb85ffc00019af1df6a26840106b90eb858fc00011b8c97ed44d0d70b1f80059bd242b6f6a2684080a06b90fa0218470d4080847a4937d29910ce6903e9ff9837812801b7810148987159f318404f8f28308d71820d31fd31fd31f02f823bbf264ed44d0d31fd31fd3fff404d15143baf2a15151baf2a205f901541064f910f2a3f80024a4c8cb1f5240cb1f5230cbff5210f400c9ed54f80f01d30721c0009f6c519320d74a96d307d402fb00e830e021c001e30021c002e30001c0039130e30d03a4c8cb1f12cb1fcbff10111213006ed207fa00d4d422f90005c8ca0715cbffc9d077748018c8cb05cb0222cf165005fa0214cb6b12ccccc973fb00c84014810108f451f2a7020070810108d718fa00d33fc8542047810108f451f2a782106e6f746570748018c8cb05cb025006cf165004fa0214cb6a12cb1fcb3fc973fb0002006c810108d718fa00d33f305224810108f459f2a782106473747270748018c8cb05cb025005cf165003fa0213cb6acb1f12cb3fc973fb00000af400c9ed5408f8e528"`;
200208

201209
exports[`transactions should return correct information for transaction with external-in message for wallet v4 2`] = `"b5ee9c72410214010002d4000114ff00f4a413f4bcf2c80b01020120020f020148030602e6d001d0d3032171b0925f04e022d749c120925f04e002d31f218210706c7567bd22821064737472bdb0925f05e003fa403020fa4401c8ca07cbffc9d0ed44d0810140d721f404305c810108f40a6fa131b3925f07e005d33fc8258210706c7567ba923830e30d03821064737472ba925f06e30d0405007801fa00f40430f8276f2230500aa121bef2e0508210706c7567831eb17080185004cb0526cf1658fa0219f400cb6917cb1f5260cb3f20c98040fb0006008a5004810108f45930ed44d0810140d720c801cf16f400c9ed540172b08e23821064737472831eb17080185005cb055003cf1623fa0213cb6acb1fcb3fc98040fb00925f03e2020120070e020120080d020158090a003db29dfb513420405035c87d010c00b23281f2fff274006040423d029be84c600201200b0c0019adce76a26840206b90eb85ffc00019af1df6a26840106b90eb858fc00011b8c97ed44d0d70b1f80059bd242b6f6a2684080a06b90fa0218470d4080847a4937d29910ce6903e9ff9837812801b7810148987159f318404f8f28308d71820d31fd31fd31f02f823bbf264ed44d0d31fd31fd3fff404d15143baf2a15151baf2a205f901541064f910f2a3f80024a4c8cb1f5240cb1f5230cbff5210f400c9ed54f80f01d30721c0009f6c519320d74a96d307d402fb00e830e021c001e30021c002e30001c0039130e30d03a4c8cb1f12cb1fcbff10111213006ed207fa00d4d422f90005c8ca0715cbffc9d077748018c8cb05cb0222cf165005fa0214cb6b12ccccc973fb00c84014810108f451f2a7020070810108d718fa00d33fc8542047810108f451f2a782106e6f746570748018c8cb05cb025006cf165004fa0214cb6a12cb1fcb3fc973fb0002006c810108d718fa00d33f305224810108f459f2a782106473747270748018c8cb05cb025005cf165003fa0213cb6acb1f12cb3fc973fb00000af400c9ed5408f8e528"`;

src/test/test.spec.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,20 @@ describe("transactions", () => {
102102
DEFAULT_TIMEOUT,
103103
)
104104

105+
it(
106+
"should return correct information for transaction with exotic cell library in in-message",
107+
async () => {
108+
await wait()
109+
110+
const txLink = "f64c6a3cdf3fad1d786aacf9a6130f18f3f76eeb71294f53bbd812ad3703e70a"
111+
const testnet = false
112+
113+
const res = await retrace(testnet, txLink)
114+
checkResult(res)
115+
},
116+
DEFAULT_TIMEOUT,
117+
)
118+
105119
function checkResult(res: TraceResult, expectedOk: boolean = true): void {
106120
expect(res.stateUpdateHashOk).toEqual(expectedOk)
107121
expect(res.codeCell?.toBoc().toString("hex")).toMatchSnapshot()

0 commit comments

Comments
 (0)