Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
291 changes: 289 additions & 2 deletions ecosystem/wallet-apps/web.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,293 @@
title: "wallet.ton.org"
---

import { Stub } from '/snippets/stub.jsx';
import { Aside } from "/snippets/aside.jsx";
import { Image } from '/snippets/image.jsx';

<Stub issue="138" />
[wallet.ton.org](https://github.com/ton-blockchain/ton-wallet) is the self-custodial wallet developed by TON Core.
It supports jettons, NFTs, [TON DNS](/services/dns), [TON Sites](/services/sites), [TON Proxy](/services/proxy), and is available as a web app and browser extension.

## Key features

- **Testnet support:** accepts the `testnet` parameter in the browser.
- **Supports [W5](/standard/wallets/v5)**: the latest wallet smart contract standard for TON Blockchain.

## Wallet setup

To get started, set up your [wallet.ton.org](https://wallet.ton.org/), a web-based wallet interface.

1. Open [wallet.ton.org](https://wallet.ton.org/).

1. Click "Create Wallet" to create a new wallet.

<Image
src="/resources/images/wallets/wallet-ton-org/welcome_page_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/welcome_page_dark.png"
alt="Web wallet welcome page"
/>

3. Next, choose "Use Password" to protect your wallet:

<Image
src="/resources/images/wallets/wallet-ton-org/password_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/password_dark.png"
alt="Password option"
/>

4. Set and confirm your password.
Ensure you use a _strong and unique_ password to protect your wallet.

<Image
src="/resources/images/wallets/wallet-ton-org/creating_password_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/creating_password_dark.png"
alt="Password setup"
/>

5. Read the "Use Responsibly" notice and check the box to _confirm that you have read and accepted this information_.

<Image
src="/resources/images/wallets/wallet-ton-org/responsibility_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/responsibility_dark.png"
alt="Use responsibility notice"
/>

6. After confirming, you’ll be prompted to manually back up your secret key.
This key is the **only** way to recover access to your wallet if you lose your password or device.
Click "Back Up Now" to continue.

<Image
src="/resources/images/wallets/wallet-ton-org/backup_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/backup_dark.png"
alt="Back up your password"
/>

7. Read the "Safety Rules" carefully, check all the boxes to confirm that you understand them. Then click "Understood" to continue.

<Image
src="/resources/images/wallets/wallet-ton-org/safety_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/safety_dark.png"
alt="Safety rules"
/>

8. Write down your 24 recovery words and store them in **a safe place**.
_Never share them with anyone or enter them anywhere else._

<Aside
type="danger"
title="Secrets at risk"
>
Anyone who sees your recovery words can take control of your wallet and move funds.
If you suspect exposure, create a new wallet and transfer all funds immediately.
Do not store recovery words digitally; write them down and keep them offline.
</Aside>
Comment on lines +76 to +83

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[HIGH] Safety callout (secrets) lacks required environment label

The “Secrets at risk” Warning correctly describes risk and mitigation but omits the required environment label (testnet vs mainnet). Safety callouts must include risk, scope, rollback/mitigation, and an explicit environment label with safer defaults first to prevent user harm.

Suggested change
<Aside
type="danger"
title="Secrets at risk"
>
Anyone who sees your recovery words can take control of your wallet and move funds.
If you suspect exposure, create a new wallet and transfer all funds immediately.
Do not store recovery words digitally; write them down and keep them offline.
</Aside>
<Aside
type="danger"
title="Secrets at risk"
>
Anyone who sees your recovery words can take control of your wallet and move funds.
If you suspect exposure, create a new wallet and transfer all funds immediately.
Do not store recovery words digitally; write them down and keep them offline.
Environment: Applies to both Testnet and Mainnet.
</Aside>

Please leave a reaction 👍/👎 to this suggestion to improve future reviews for everyone!


Once you’re ready, click "Let’s Check" to verify your recovery phrase.

<Image
src="/resources/images/wallets/wallet-ton-org/secret_words_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/secret_words_dark.png"
alt="Recovery words"
/>

9. In the "Let’s Check" step, enter the requested words to make sure your recovery phrase was saved correctly.

Then click "Continue" to finish the setup.

<Image
src="/resources/images/wallets/wallet-ton-org/verify_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/verify_dark.png"
alt="Verify your secret words"
/>

**Congratulations!** _Your wallet is now ready to use._

### Interface overview

The main screen of the wallet displays essential account information and actions.

- **Account balance (yellow box)** displays the total amount of Toncoin and other tokens held on your account.
- **Account address (red box)** is your unique account identifier, shown both as a QR code and as a base64-encoded string.

For example: `UQDDKXleckOm6CTbab3CPz0TkvbSkrlUFum_YMIa-IIfGmXk`.
You can share this address to receive TON, jettons, or NFTs.

- The **send button (green box)** opens the transfer form, allowing you to send TON or jettons to another account address.

<Image
src="/resources/images/wallets/wallet-ton-org/ui_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/ui_dark.png"
alt="Wallet interface"
/>

### Wallet contract version

To check which [wallet contract version](/standard/wallets/comparison) is used:

1. Click the "Settings" icon.

<Image
src="/resources/images/wallets/wallet-ton-org/settings_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/settings_dark.png"
alt="Settings button"
/>

2. In the "Wallet Versions", you can see which contract your wallet uses.

<Image
src="/resources/images/wallets/wallet-ton-org/wallet_version_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/wallet_version_dark.png"
alt="Settings button"
/>

3. Click the field to view the current version, for example, _W5_.

If you previously used older wallet contracts, such as v3 or v4, you can import them using your mnemonic phrase.

<Image
src="/resources/images/wallets/wallet-ton-org/contract_type_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/contract_type_dark.png"
alt="Settings button"
/>

### Testnet

In wallet.ton.org, the **Testnet account** is derived from the **Mainnet wallet’s mnemonic**.

<Aside
type="caution"
>
The Testnet account is generated with the same **subwallet ID** as Mainnet.
</Aside>
Comment on lines +157 to +161

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[HIGH] Safety callout (testnet caution) missing risk/scope/rollback/environment

This Caution callout states only that the Testnet account shares the subwallet ID with Mainnet. It lacks the required fields: explicit risk, scope, mitigation/rollback, and an environment label with safe defaults first. Without these, readers may not understand why it matters or how to avoid mistakes.

Suggested change
<Aside
type="caution"
>
The Testnet account is generated with the same **subwallet ID** as Mainnet.
</Aside>
<Aside type="caution" title="Subwallet ID is the same">
Risk: Using the wrong network may cause transfers to the unintended environment.
Scope: Wallets derived from the same mnemonic share the subwallet ID across Mainnet and Testnet.
Mitigation: Verify the selected network in Settings before sending funds.
Environment: Prefer Testnet for practice; switch to Mainnet only for real transfers.
</Aside>

Please leave a reaction 👍/👎 to this suggestion to improve future reviews for everyone!


To add a Testnet account:

1. Click the **Settings** icon.

<Image
src="/resources/images/wallets/wallet-ton-org/settings_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/settings_dark.png"
alt="Settings button"
/>

2. In the settings window, **double-click** the wallet version number to open developer options.

<Image
src="/resources/images/wallets/wallet-ton-org/version_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/version_dark.png"
alt="Click on version"
/>

3. In the **Developer options** panel, locate the **Networks** section and select **Testnet**.

<Image
src="/resources/images/wallets/wallet-ton-org/testnet_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/testnet_dark.png"
alt="Choose Testnet"
/>

4. The app automatically returns to the main screen, where the interface indicates that you’re now using **the Testnet version**.

<Aside type="note">
Mainnet and Testnet use different user-friendly address formats —the raw address is the same, but its text representation differs.

See [How to read and write TON addresses](/foundations/addresses/serialize#using-online-converter) for details on address formats and conversion.
</Aside>

<Image
src="/resources/images/wallets/wallet-ton-org/testnet_version_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/testnet_version_dark.png"
alt="Choose Testnet"
/>

_You can also check the wallet contract version in **Testnet** — the settings UI displays [the same version information](/ecosystem/wallet-apps/web#wallet-contract-version) as on Mainnet._

## Deploy a wallet

A wallet must be **deployed** before use — its account state must be **active**.

Newly created wallets have the default state **nonexist**, meaning the account has _no code, data, or balance_.
Comment on lines +207 to +209

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[HIGH] Literal account states not formatted as code

Literal account states are styled in bold instead of code font at the primary location: “active” (L207) and “nonexist” (L209). Per the style guide, tokens, flags, and literals must use code formatting for copy/paste fidelity and consistency. Additional occurrences in this diff include “uninit” at

After receiving funds, the wallet enters the **uninit** state. This means the account has a balance, but the smart contract is not yet deployed.
and “active” at
The wallet should appear as **active**. _Congratulations, you have successfully deployed your contract!_
; update those similarly.

Suggested change
A wallet must be **deployed** before use — its account state must be **active**.
Newly created wallets have the default state **nonexist**, meaning the account has _no code, data, or balance_.
A wallet must be **deployed** before use — its account state must be `active`.
Newly created wallets have the default state `nonexist`, meaning the account has _no code, data, or balance_.

Please leave a reaction 👍/👎 to this suggestion to improve future reviews for everyone!


### Check the account state

Use a [blockchain explorer](/ecosystem/explorers/overview) to inspect the account. For **Testnet**, use [Tonviewer Testnet](https://testnet.tonviewer.com/).

1. Paste your address into the search bar.

<Image
src="/resources/images/wallets/wallet-ton-org/tonviewer_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/tonviewer_dark.png"
alt="Insert your address in Tonviewer search"
/>

2. The account details will appear. In a newly created wallet, the status is **nonexist**, indicating the wallet is not deployed.

<Image
src="/resources/images/wallets/wallet-ton-org/address_nonexist_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/address_nonexist_dark.png"
alt="Account status: nonexist"
/>

### Fund the wallet

A wallet must receive funds before deployment.

- On Testnet, request free Testnet Toncoins from the TON Testnet Faucet.

After receiving funds, the wallet enters the **uninit** state. This means the account has a balance, but the smart contract is not yet deployed.

<Image
src="/resources/images/wallets/wallet-ton-org/address_uninit_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/address_uninit_dark.png"
alt="Account status: uninit"
/>

### Send the first transaction

With TON in the account, the wallet can be deployed. Deployment occurs when _the wallet processes its first transaction_.
In this example, we send TON to the account itself on Testnet to observe the transaction and wallet deployment on-chain.

<Aside
type="caution"
title="Funds at risk"
>
On-chain transfers are irreversible — verify the recipient and amount before confirming. Use the testnet for practice; only use the mainnet when you intend to make a real transfer.
</Aside>
Comment on lines +250 to +255

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[HIGH] Safety callout (funds at risk) missing explicit scope

The “Funds at risk” Caution includes risk and environment guidance but omits an explicit scope line clarifying what the action affects. Safety callouts must clearly state risk, scope, mitigation/rollback, and environment to set expectations and prevent irreversible mistakes.

Suggested change
<Aside
type="caution"
title="Funds at risk"
>
On-chain transfers are irreversible — verify the recipient and amount before confirming. Use the testnet for practice; only use the mainnet when you intend to make a real transfer.
</Aside>
<Aside
type="caution"
title="Funds at risk"
>
On-chain transfers are irreversible — verify the recipient and amount before confirming.
Scope: Transfers change your wallet balance (Testnet or Mainnet).
Use the testnet for practice; only use the mainnet when you intend to make a real transfer.
If you must use mainnet: There is no rollback.
</Aside>

Please leave a reaction 👍/👎 to this suggestion to improve future reviews for everyone!


To send TON to your own account:

1. Click **Send**, enter your wallet address in **Recipient Address**, and the **Amount** of TON. Optionally, add a comment. Click **Send TON**.

<Image
src="/resources/images/wallets/wallet-ton-org/send_coins_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/send_coins_dark.png"
alt="Sending coins"
/>

2. In the confirmation popup, verify the transaction details and click **Confirm** if correct; otherwise, **Edit**.

<Image
src="/resources/images/wallets/wallet-ton-org/confirm_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/confirm_dark.png"
alt="Confirm transaction"
/>

3. After confirmation, the wallet will display a notification: "Coins have been sent!"

<Image
src="/resources/images/wallets/wallet-ton-org/notification_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/notification_dark.png"
alt="Notification"
/>

Next, check your wallet status in the blockchain explorer.

The wallet should appear as **active**. _Congratulations, you have successfully deployed your contract!_

<Image
src="/resources/images/wallets/wallet-ton-org/active_light.png"
darkSrc="/resources/images/wallets/wallet-ton-org/active_dark.png"
alt="Account status: active"
/>

You will also see a "Contract Type" field indicating `v5`.
For details, see [Wallet v5](/standard/wallets/v5).
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.