Skip to content

Commit aeb5963

Browse files
authored
feat: use the new txtracer-core library with faster tracing, remove waits for rate limits, add TON Core and TON Center to footer (#110)
1 parent b25a8bb commit aeb5963

File tree

9 files changed

+33
-30
lines changed

9 files changed

+33
-30
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
"react-icons": "^5.5.0",
4040
"react-markdown": "^10.1.0",
4141
"ton-assembly": "0.2.4",
42-
"txtracer-core": "^0.1.1"
42+
"txtracer-core": "^0.2.0"
4343
},
4444
"devDependencies": {
4545
"@eslint/js": "^9.25.0",

src/features/tasm/lib/executor.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
import {runtime as i, text} from "ton-assembly"
1+
import {runtime as i, text, trace} from "ton-assembly"
22
import type {Address, Contract, ContractProvider, Sender, StateInit, TupleReader} from "@ton/core"
33
import {Cell, contractAddress, toNano, TupleBuilder} from "@ton/core"
44
import {GetMethodError, type SandboxContract, type TreasuryContract} from "@ton/sandbox"
55
import {Blockchain} from "@ton/sandbox"
66
import {createMappingInfo, type MappingInfo} from "ton-assembly/dist/trace/mapping"
77
import type {StackElement} from "ton-assembly/dist/trace"
88

9-
import {trace} from "ton-assembly"
10-
119
import {type ExitCode, findExitCode} from "@features/txTrace/lib/traceTx.ts"
1210

1311
function stackElementsToTupleBuilder(stackElements: StackElement[]): TupleBuilder {

src/features/txTrace/lib/traceTx.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,11 @@ async function maybeTestnet(link: string): Promise<{result: TraceResult; network
6060
}
6161

6262
try {
63-
await wait(500) // rate limit
6463
const result = await retraceAny(txLinkInfo ?? SingleHash(link, false))
6564
return {result, network: txLinkInfo?.testnet ? "testnet" : "mainnet"}
6665
} catch (error: unknown) {
6766
if (error instanceof Error && error.message.includes("Cannot find transaction info")) {
6867
console.log("Cannot find in mainnet, trying to find in testnet")
69-
await wait(500) // rate limit
7068
const result = await retraceAny(txLinkInfo ?? SingleHash(link, true))
7169
return {result, network: "testnet"}
7270
}
@@ -238,7 +236,3 @@ export function normalizeGas(step: Step) {
238236
}
239237
return step.gasCost
240238
}
241-
242-
async function wait(delay: number): Promise<unknown> {
243-
return new Promise(resolve => setTimeout(resolve, delay))
244-
}

src/pages/InstructionsPage/components/InstructionTable/operands.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import type {Arg, ArgRange, Args, Child} from "@features/spec/tvm-specification.types"
2-
import {ArgsEnum} from "@features/spec/tvm-specification.types"
3-
import {Bits} from "@features/spec/tvm-specification.types"
2+
import {ArgsEnum, Bits} from "@features/spec/tvm-specification.types"
43

54
import styles from "./OperandsView.module.css"
65

src/pages/SandboxPage/components/TransactionTraceViewer/TransactionTraceViewer.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
1-
import React, {Suspense, useMemo} from "react"
1+
import {Suspense, useMemo, lazy} from "react"
22
import {FiX} from "react-icons/fi"
33

44
import type {TransactionInfo} from "@features/sandbox/lib/transaction"
55
import type {ContractData} from "@features/sandbox/lib/contract"
6-
import {traceSandboxTransaction} from "@features/txTrace/lib/traceTx"
6+
import {traceSandboxTransaction, normalizeGas} from "@features/txTrace/lib/traceTx"
77
import {useLineExecutionData, useTraceStepper} from "@features/txTrace/hooks"
88
import TraceSidePanel from "@shared/ui/TraceSidePanel"
99
import InlineLoader from "@shared/ui/InlineLoader"
1010
import {type InstructionDetail} from "@features/txTrace/ui/StepInstructionBlock"
11-
import {normalizeGas} from "@features/txTrace/lib/traceTx"
1211

1312
import styles from "./TransactionTraceViewer.module.css"
1413

15-
const CodeEditor = React.lazy(() => import("@shared/ui/CodeEditor"))
14+
const CodeEditor = lazy(() => import("@shared/ui/CodeEditor"))
1615

1716
export interface TransactionTraceViewerProps {
1817
readonly tx: TransactionInfo

src/pages/SandboxPage/components/TransactionTree/TransactionTree.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@ import type {TestData} from "@features/sandbox/lib/test-data.ts"
99
import {findOpcodeABI, type TransactionInfo} from "@features/sandbox/lib/transaction.ts"
1010
import type {ContractData} from "@features/sandbox/lib/contract"
1111
import {parseSliceWithAbiType, type ParsedObjectByABI} from "@features/sandbox/lib/abi/parser.ts"
12-
import {TransactionShortInfo} from "@app/pages/SandboxPage/components"
12+
import {TransactionShortInfo, ContractDetails} from "@app/pages/SandboxPage/components"
1313
import {ParsedDataView} from "@features/sandbox/ui/abi"
1414

15-
import {ContractDetails} from "@app/pages/SandboxPage/components"
16-
1715
import {useTooltip} from "./useTooltip"
1816
import {SmartTooltip} from "./SmartTooltip"
1917

src/pages/TracePage/TracePage.module.css

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,11 +397,16 @@
397397
z-index: 1;
398398
}
399399

400+
footer {
401+
display: flex;
402+
gap: var(--spacing-sm);
403+
justify-content: center;
404+
}
405+
400406
.createBy {
401407
flex: 0 0 auto;
402408
color: var(--tracepage-create-by-text-color);
403409
font-size: var(--font-size-sm);
404-
text-align: center;
405410
}
406411

407412
.createBy a {

src/pages/TracePage/TracePage.tsx

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -424,11 +424,21 @@ function TracePage() {
424424
)}
425425
</div>
426426

427-
<footer className={styles.createBy}>
428-
Created by{" "}
429-
<a href="https://tonstudio.io" target="_blank" rel="noreferrer">
430-
TON Studio
431-
</a>
427+
<footer>
428+
<span className={styles.createBy}>
429+
Created by{" "}
430+
<a href="https://tonstudio.io" target="_blank" rel="noreferrer">
431+
TON Studio
432+
</a>
433+
{" and "}
434+
<a href="https://t.me/toncore" target="_blank" rel="noreferrer">
435+
TON Core
436+
</a>
437+
, powered by{" "}
438+
<a href="https://toncenter.com/" target="_blank" rel="noreferrer">
439+
TON Center
440+
</a>
441+
</span>
432442
</footer>
433443
</main>
434444
)}

yarn.lock

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7378,16 +7378,16 @@ __metadata:
73787378
languageName: node
73797379
linkType: hard
73807380

7381-
"txtracer-core@npm:^0.1.1":
7382-
version: 0.1.1
7383-
resolution: "txtracer-core@npm:0.1.1"
7381+
"txtracer-core@npm:^0.2.0":
7382+
version: 0.2.0
7383+
resolution: "txtracer-core@npm:0.2.0"
73847384
dependencies:
73857385
"@ton-community/func-js": "npm:^0.10.0"
73867386
"@ton/core": "npm:^0.61.0"
73877387
"@ton/sandbox": "npm:^0.36.0"
73887388
"@ton/ton": "npm:^15.3.1"
73897389
axios: "npm:^1.6.7"
7390-
checksum: 10c0/4e2510dd3ffc411d908cef98e8fa62841ac0319fcc10a272e221458f4a86e17a62f9fe7aadef6fbc186393f56f354d10c896777f94ccab37ce40f7eb2d9ab458
7390+
checksum: 10c0/b8ac8b55135fb613ffa90f196736116b3359850ac4b0faea1d291dcb20d21fee2063933fb957fc346fa908bf5587cfdfb415a73aff24bf52f556a1e1cee3ae30
73917391
languageName: node
73927392
linkType: hard
73937393

@@ -7442,7 +7442,7 @@ __metadata:
74427442
rollup-plugin-visualizer: "npm:^6.0.3"
74437443
ton-assembly: "npm:0.2.4"
74447444
ts-node: "npm:^10.9.1"
7445-
txtracer-core: "npm:^0.1.1"
7445+
txtracer-core: "npm:^0.2.0"
74467446
typescript: "npm:~5.8.3"
74477447
typescript-eslint: "npm:^8.30.1"
74487448
vite: "npm:^6.3.5"

0 commit comments

Comments
 (0)