-
Notifications
You must be signed in to change notification settings - Fork 0
Highload Wallets docs #632
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
To fix the formatting issues:
npx remark -o --silent --silently-ignore standard/wallets/highload/overview.mdx standard/wallets/highload/v2/specification.mdx standard/wallets/highload/v3/how-to/create.mdx standard/wallets/highload/v3/how-to/send-batch-transfers.mdx standard/wallets/highload/v3/how-to/send-single-transfer.mdx standard/wallets/highload/v3/how-to/verify-is-processed.mdx standard/wallets/highload/v3/specification.mdx |
Thanks for the thorough updates across the Highload wallet docs. I did a focused review of the changed pages under standard/wallets/highload and found several high‑severity items that need fixes before merge. Findings (13)High (13)[HIGH] Emojis used in comparison tableLocation: mintlify-ton-docs/standard/wallets/highload/overview.mdx Lines 55 to 63 in 98d17ba
Description: Suggestion: - | **Replay rollback on action failure** | ⚠️ Yes | ⚠️ Yes | ✅ No (two-transaction pattern) |
- | **Fund locking risk** | ✅ No | ⚠️ Yes | ✅ No |
- | **Gas efficiency** | Not optimized | ⚠️ High cleanup costs | ✅ Optimized |
+ | **Replay rollback on action failure** | Yes | Yes | No (two-transaction pattern) |
+ | **Fund locking risk** | No | Yes | No |
+ | **Gas efficiency** | Not optimized | High cleanup costs | Optimized |
- | **Parallel submissions** | ❌ Sequential only | ✅ Supported | ✅ Supported |
- | **Status** | ⚠️ Deprecated | ⚠️ Deprecated | ✅ Recommended |
+ | **Parallel submissions** | Sequential only | Supported | Supported |
+ | **Status** | Deprecated | Deprecated | Recommended | [HIGH] Moving-target GitHub link to contract codeLocation:
Description: Suggestion: -- [Highload Wallet v1](https://github.com/ton-blockchain/ton/blob/master/crypto/smartcont/highload-wallet-code.fc) — legacy version (deprecated)
+- [Highload Wallet v1](https://github.com/ton-blockchain/ton/blob/<COMMIT>/crypto/smartcont/highload-wallet-code.fc) — legacy version (deprecated) [HIGH] Unlabeled code block for message layoutLocation: mintlify-ton-docs/standard/wallets/highload/v2/specification.mdx Lines 114 to 119 in 98d17ba
Description: Suggestion: -```
+```text
signature:bits512
subwallet_id:uint32
query_id:uint64
messages:(HashmapE 16 Cell)
[HIGH] Unlabeled code block for message layoutLocation: mintlify-ton-docs/standard/wallets/highload/v3/specification.mdx Lines 285 to 293 in 98d17ba
Description: Suggestion: -```
+```text
signature:bits512
^[ subwallet_id:uint32
message_to_send:^Cell
send_mode:uint8
query_id:QueryId
created_at:uint64
timeout:uint22 ]
[HIGH] Silently truncated address in example outputLocation:
Description: Suggestion: -// Output: 0QD4E... (non-bounceable, testnet)
+// Example (truncated): 0QD4E... (non-bounceable, testnet) [HIGH] Missing funds-at-risk warning for funding stepLocation: mintlify-ton-docs/standard/wallets/highload/v3/how-to/create.mdx Lines 191 to 195 in 98d17ba
Description: Suggestion: ## Step 7: Fund the wallet
+
+<Aside type="warning">
+Warning — funds at risk
+Running the next step transfers TON. Do first (testnet).
+Scope: your wallet balance for this address.
+Rollback: none — on-chain transfers are final.
+</Aside>
**Required before deployment:** Send TON to your wallet address (from Step 6) to prepare it for deployment. [HIGH] Missing funds-at-risk warning for single transferLocation: mintlify-ton-docs/standard/wallets/highload/v3/how-to/send-single-transfer.mdx Lines 80 to 94 in 98d17ba
Description: Suggestion: ## Step 3: Send the transfer
+
+<Aside type="warning">
+Warning — funds at risk
+This transfer sends TON. Use testnet first.
+Scope: this wallet’s funds; incorrect addresses lose funds.
+Rollback: none — on-chain transfers are final.
+</Aside>
Send the transfer using the `sendExternalMessage` method:
```typescript [HIGH] Missing funds-at-risk warning for batch transfersLocation: mintlify-ton-docs/standard/wallets/highload/v3/how-to/send-batch-transfers.mdx Lines 90 to 108 in 98d17ba
Description: Suggestion: ## Step 3: Send the batch
+
+<Aside type="warning">
+Warning — funds at risk
+This sends multiple transfers. Test on testnet first.
+Scope: this wallet’s funds; multiple messages amplify risk.
+Rollback: none — on-chain transfers are final.
+</Aside>
Send the batch using the `sendBatch` method:
```typescript [HIGH] Emojis and unlabeled code blocks in expected outputsLocation: mintlify-ton-docs/standard/wallets/highload/v3/how-to/verify-is-processed.mdx Lines 295 to 333 in 98d17ba
Description: Suggestion: -```
-✓ Query marked as processed
-✓ External transaction succeeded
-✓ Internal transaction succeeded
-✅ Sent 10/10 messages
-```
+```text
+OK Query marked as processed
+OK External transaction succeeded
+OK Internal transaction succeeded
+Sent 10/10 messages
+```
```diff
-```
-✓ Query marked as processed
-✓ External transaction succeeded
-✓ Internal transaction succeeded
-✅ Sent 8/10 messages (2 failed)
-```
+```text
+OK Query marked as processed
+OK External transaction succeeded
+OK Internal transaction succeeded
+Sent 8/10 messages (2 failed)
+```
```diff
-```
-✓ Query marked as processed
-❌ External transaction failed: exit code 35
-```
+```text
+OK Query marked as processed
+External transaction failed: exit code 35
+```
```diff
-```
-✓ Query marked as processed
-✓ External transaction succeeded
-❌ Internal transaction failed: exit code 9
-```
+```text
+OK Query marked as processed
+OK External transaction succeeded
+Internal transaction failed: exit code 9
+```
```diff
-```
-✓ Query marked as processed
-✓ External transaction succeeded
-❌ Action phase failed: result code 37
-```
+```text
+OK Query marked as processed
+OK External transaction succeeded
+Action phase failed: result code 37
+``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please take a look at high-priority warnings from AI review. Most of them make sense.
To fix the formatting issues:
npx remark -o --silent --silently-ignore standard/wallets/highload/overview.mdx standard/wallets/highload/v2/specification.mdx standard/wallets/highload/v3/create.mdx standard/wallets/highload/v3/send-batch-transfers.mdx standard/wallets/highload/v3/send-single-transfer.mdx standard/wallets/highload/v3/specification.mdx standard/wallets/highload/v3/verify-is-processed.mdx |
To fix the formatting issues:
npx remark -o --silent --silently-ignore standard/wallets/highload/overview.mdx standard/wallets/highload/v2/specification.mdx standard/wallets/highload/v3/create.mdx standard/wallets/highload/v3/send-batch-transfers.mdx standard/wallets/highload/v3/send-single-transfer.mdx standard/wallets/highload/v3/specification.mdx standard/wallets/highload/v3/verify-is-processed.mdx |
Thanks for the substantial Highload v3 docs work across multiple pages. A set of high‑severity link, style, and correctness fixes are required before merge. Findings (12)High (12)[HIGH] Broken internal links use non-existent "how-to" pathLocation:
Description: Suggestion: - - Completed [wallet creation](/standard/wallets/highload/v3/how-to/create) with funded balance and saved configuration in `.wallet.json`
+ - Completed [wallet creation](/standard/wallets/highload/v3/create) with funded balance and saved configuration in `.wallet.json`
- If you need to deploy a contract (send a message with `state_init`), use [batch transfers](/standard/wallets/highload/v3/how-to/send-batch-transfers) with an action list instead. See [Limitations and constraints](/standard/wallets/highload/v3/specification#limitations-and-constraints) in the specification for details.
+ If you need to deploy a contract (send a message with `state_init`), use [batch transfers](/standard/wallets/highload/v3/send-batch-transfers) with an action list instead. See [Limitations and constraints](/standard/wallets/highload/v3/specification#limitations-and-constraints) in the specification for details.
- To verify that your message, see [How to verify message is processed](/standard/wallets/highload/v3/how-to/verify-is-processed).
+ To verify that your message, see [How to verify message is processed](/standard/wallets/highload/v3/verify-is-processed).
- - Completed [wallet creation](/standard/wallets/highload/v3/how-to/create) with funded balance and saved configuration in `.wallet.json`
+ - Completed [wallet creation](/standard/wallets/highload/v3/create) with funded balance and saved configuration in `.wallet.json`
- To verify that your batch was fully processed, see [How to verify message is processed](/standard/wallets/highload/v3/how-to/verify-is-processed).
+ To verify that your batch was fully processed, see [How to verify message is processed](/standard/wallets/highload/v3/verify-is-processed).
- - Completed [wallet creation](/standard/wallets/highload/v3/how-to/create) with funded balance
+ - Completed [wallet creation](/standard/wallets/highload/v3/create) with funded balance
- For practical usage, see [How-to guides](/standard/wallets/highload/v3/how-to/create).
+ For practical usage, see [How-to guides](/standard/wallets/highload/v3/create).
- Use `subwallet_id: 0x10ad` (4269) ... See [How to create Highload Wallet v3](/standard/wallets/highload/v3/how-to/create) for details.
+ Use `subwallet_id: 0x10ad` (4269) ... See [How to create Highload Wallet v3](/standard/wallets/highload/v3/create) for details.
- State-init validation is too expensive ... [batch transfer pattern](/standard/wallets/highload/v3/how-to/send-batch-transfers)
+ State-init validation is too expensive ... [batch transfer pattern](/standard/wallets/highload/v3/send-batch-transfers)
- **How to implement:** [Send batch transfers](/standard/wallets/highload/v3/how-to/send-batch-transfers)
+ **How to implement:** [Send batch transfers](/standard/wallets/highload/v3/send-batch-transfers)
- **Link:** [How to verify if a message is processed](/standard/wallets/highload/v3/how-to/verify-is-processed)
+ **Link:** [How to verify if a message is processed](/standard/wallets/highload/v3/verify-is-processed)
- **Link:** [How-to guides](/standard/wallets/highload/v3/how-to/create)
+ **Link:** [How-to guides](/standard/wallets/highload/v3/create)
- - [How to create Highload Wallet v3](/standard/wallets/highload/v3/how-to/create)
+ - [How to create Highload Wallet v3](/standard/wallets/highload/v3/create)
- - [How to send single transfer](/standard/wallets/highload/v3/how-to/send-single-transfer)
+ - [How to send single transfer](/standard/wallets/highload/v3/send-single-transfer)
- - [How to send batch transfers](/standard/wallets/highload/v3/how-to/send-batch-transfers)
+ - [How to send batch transfers](/standard/wallets/highload/v3/send-batch-transfers)
- - [How to verify if a message is processed](/standard/wallets/highload/v3/how-to/verify-is-processed)
+ - [How to verify if a message is processed](/standard/wallets/highload/v3/verify-is-processed) [HIGH] Mis-encoded anchor “%3F” breaks deep linkLocation:
Description: Suggestion: - **Highload v3's solution:** Uses a [two-transaction pattern](/standard/wallets/highload/v3/specification#why-internal-messages-to-self%3F) where replay protection is committed in the first transaction, and actions are performed in a separate internal transaction. This guarantees replay protection **never rolls back**, even if sending messages fails.
+ **Highload v3's solution:** Uses a [two-transaction pattern](/standard/wallets/highload/v3/specification#why-internal-messages-to-self) where replay protection is committed in the first transaction, and actions are performed in a separate internal transaction. This guarantees replay protection **never rolls back**, even if sending messages fails. [HIGH] Incorrect deep link to stdlib function anchorLocation:
Description: Suggestion: - **Link:** [send\_raw\_message modes](/language/func/stdlib#send-raw-message)
+ **Link:** [send\_raw\_message modes](/language/func/stdlib/#send_raw_message) [HIGH] Emojis used in comparison tableLocation: mintlify-ton-docs/standard/wallets/highload/overview.mdx Lines 67 to 75 in bfa5593
Description: Suggestion: -| **Replay rollback on action failure** | ⚠️ Yes | ⚠️ Yes | ✅ No (two-transaction pattern) |
+| **Replay rollback on action failure** | Yes | Yes | No (two-transaction pattern) |
-| **Fund locking risk** | ✅ No | ⚠️ Yes | ✅ No |
+| **Fund locking risk** | No | Yes | No |
-| **Parallel submissions** | ❌ Sequential only | ✅ Supported | ✅ Supported |
+| **Parallel submissions** | Sequential only | Supported | Supported |
-| **Status** | ⚠️ Deprecated | ⚠️ Deprecated | ✅ Recommended |
+| **Status** | Deprecated | Deprecated | Recommended | [HIGH] Incorrect timeout duration (~55 days vs actual ~48.6 days)Location: mintlify-ton-docs/standard/wallets/highload/v3/specification.mdx Lines 159 to 161 in bfa5593
Description: Suggestion: - 22 bits allows timeout values up to ~4.8 million seconds (~55 days).
+ 22 bits allows timeout values up to ~4,194,303 seconds (~48.6 days). [HIGH] Incorrect parsing of external message body (skips ref, wrong field handling)Location:
Description: Suggestion: function parseExternalMessageBody(body: Cell) {
try {
- const inner = body.refs[0]!.beginParse();
- inner.skip(32 + 8); // Skip subwalletId and mode
- const queryId = inner.loadUintBig(23);
- const createdAt = inner.loadUint(64);
-
- return { queryId, createdAt };
+ const inner = body.refs[0]!.beginParse();
+ inner.loadUint(32); // subwallet_id:uint32
+ inner.loadRef(); // message_to_send:^Cell
+ inner.loadUint(8); // send_mode:uint8
+ const shift = inner.loadUint(13); // QueryId.shift
+ const bitNumber = inner.loadUint(10); // QueryId.bit_number
+ const createdAt = inner.loadUint(64); // created_at:uint64
+ const queryId = (BigInt(shift) << 10n) | BigInt(bitNumber);
+ return { queryId, createdAt };
} catch (e) {
return null;
}
} [HIGH] Emojis used in code/log output and expected outputsLocation: mintlify-ton-docs/standard/wallets/highload/v3/verify-is-processed.mdx Lines 140 to 144 in bfa5593
Description: Suggestion: -console.log('❌ Query not processed');
+console.log('Query not processed');
-console.log('✓ Query marked as processed');
+console.log('Query marked as processed'); Also update “Expected outputs” accordingly, for example:
[HIGH] Moving-target GitHub links for normative referencesLocation: mintlify-ton-docs/standard/wallets/highload/v3/specification.mdx Lines 655 to 662 in bfa5593
Description: Suggestion: - - **TypeScript/JavaScript:** Copy wrappers from the [official repository](https://github.com/ton-blockchain/highload-wallet-contract-v3/tree/main/wrappers)
+ - **TypeScript/JavaScript:** Copy wrappers from the [official repository](https://github.com/ton-blockchain/highload-wallet-contract-v3/tree/f5d9b592bd5ab5c9ae6ca627819929e140f6bd61/wrappers) - See the [tests/](https://github.com/ton-blockchain/highload-wallet-contract-v3/tree/main/tests) directory in the repository for reference implementation and usage patterns.
+ See the [tests/](https://github.com/ton-blockchain/highload-wallet-contract-v3/tree/f5d9b592bd5ab5c9ae6ca627819929e140f6bd61/tests) directory in the repository for reference implementation and usage patterns. [HIGH] Safety callout missing required elements (send single)Location:
Description: Suggestion: -<Aside
- type="danger"
->
- **Funds at risk:** This guide sends real TON. Test on testnet first. Double-check recipient addresses — blockchain transactions cannot be reversed.
-</Aside>
+<Aside type="danger">
+ <strong>Warning — funds at risk</strong><br/>
+ Scope: Sends TON from your wallet to a recipient.<br/>
+ Do first (testnet): use a testnet wallet and faucet to validate the flow.<br/>
+ If using mainnet: verify the address carefully. Rollback: none — on‑chain transfers are final.
+</Aside> [HIGH] Safety callout missing required elements (send batch)Location:
Description: Suggestion: -<Aside
- type="danger"
->
- **Funds at risk:** This guide sends real TON. Test on testnet first. Double-check recipient addresses — blockchain transactions cannot be reversed.
-</Aside>
+<Aside type="danger">
+ <strong>Warning — funds at risk</strong><br/>
+ Scope: Sends multiple TON transfers in one transaction.<br/>
+ Do first (testnet): validate the batch on testnet (faucet funds).<br/>
+ If using mainnet: verify all recipients. Rollback: none — on‑chain transfers are final.
+</Aside> [HIGH] Safety callout missing required elements (fund wallet)Location: mintlify-ton-docs/standard/wallets/highload/v3/create.mdx Lines 198 to 205 in bfa5593
Description: Suggestion: -<Aside
- type="danger"
->
- **Funds at risk:** You will send TON to this address. Test on testnet first. Verify the wallet address carefully — blockchain transactions cannot be reversed.
-</Aside>
+<Aside type="danger">
+ <strong>Warning — funds at risk</strong><br/>
+ Scope: Funding the wallet address to enable deployment.<br/>
+ Do first (testnet): fund via a testnet faucet to confirm the address.<br/>
+ If using mainnet: verify the full address before sending. Rollback: none — on‑chain transfers are final.
+</Aside> [HIGH] Broken self-link anchor in specificationLocation:
Description: Suggestion: -Highload v3 supports up to **8,380,416 unique query IDs** (see [`query_id` structure](#query-id-composite-structure) for details).
+Highload v3 supports up to **8,380,416 unique query IDs** (see [`query_id` structure](#query-id-structure) for details). |
@pyAndr3w Superb work! |
Closes #198