diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 3be6063258..e389331bce 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -5,4 +5,4 @@
### Thank you for your interest in contributing!
-Please see [our contributing guide on documentation](https://docs.ton.org/contribute/) for the latest information on how to contribute!
\ No newline at end of file
+Please see [our contributing guide on documentation](/v3/contribute/) for the latest information on how to contribute!
diff --git a/README.md b/README.md
index d21a549a27..875d5e629a 100644
--- a/README.md
+++ b/README.md
@@ -36,7 +36,7 @@ If you are a developer and faced some difficulties, successfully overcoming them
— Have an idea? [Submit a Feature Request](https://github.com/ton-community/ton-docs/issues/new/choose).
— Want to contribute? [Setup your environment](https://github.com/ton-community/ton-docs#set-up-your-environment-%EF%B8%8F).
-Contributing best practices: [docs/contribute](https://ton.org/docs/v3/contribute)
+Contributing best practices: [docs/contribute](/v3/contribute)
---
diff --git a/docs/learn/overviews/addresses.md~upstream_staging b/docs/learn/overviews/addresses.md~upstream_staging
deleted file mode 100644
index 5557a198af..0000000000
--- a/docs/learn/overviews/addresses.md~upstream_staging
+++ /dev/null
@@ -1,224 +0,0 @@
-# Smart Contract Addresses Documentation
-
-This section will describe the specifics of smart contract addresses on TON Blockchain. It will also explain how actors are synonymous with smart contracts on TON.
-
-## Everything is a Smart Contract
-
-On TON, smart contracts are built using the [Actor model](/learn/overviews/ton-blockchain#single-actor). In fact, actors in TON are technically represented as smart contracts. This means that even your wallet is a simple actor (and a smart contract).
-
-Typically, actors process incoming messages, change their internal state, and generate outbound messages as a result. That's why every actor (i.e., smart contract) on TON Blockchain must have an address, so it is able to receive messages from other actors.
-
-:::info EVM EXPERIENCE
-On the Ethereum Virtual Machine (EVM), addresses are completely separate from smart contracts. Feel free to learn more about the differences by reading our article ["Six unique aspects of TON Blockchain that will surprise Solidity developers"](https://blog.ton.org/six-unique-aspects-of-ton-blockchain-that-will-surprise-solidity-developers) by Tal Kol.
-:::
-
-## Address of Smart Contract
-
-Smart contract addresses operating on TON typically consist of two main components:
-
-* **(workchain_id)**: denotes the workchain ID (a signed 32-bit integer)
-
-* **(account_id)** denotes the address of the account (64-512 bits, depending on the workchain)
-
-In the raw address overview section of this documentation, we'll discuss how **(workchain_id, account_id)** pairs present themselves.
-
-### Workchain ID and Account ID
-
-#### Workchain ID
-
-[As we've seen before](/learn/overviews/ton-blockchain#workchain-blockchain-with-your-own-rules), it is possible to create as many as `2^32` workchains operating on TON Blockchain. We also noted how 32-bit prefix smart contract addresses identify and are linked to smart contract addresses within different workchains. This allows smart contracts to send and receive messages to and from different workchains on TON Blockchain.
-
-Nowadays, only the Masterchain (workchain_id=-1) and occasionally the basic workchain (workchain_id=0) are running in TON Blockchain.
-
-Both of them have 256-bit addresses, therefore, we assume that the workchain_id is either 0 or -1, and the address within the workchain is precisely 256 bits.
-
-#### Account ID
-
-All account IDs on TON make use of 256-bit addresses on the Masterchain and Basechain (or basic workchain).
-
-In fact, Account ID’s **(account_id)** defined as hash functions for smart contract objects (particular, the SHA-256). Every smart contract operating on TON Blockchain stores two main components. These include:
-
-1. _Compiled code_. Logic of the smart contract compiled in the form of bytecode.
-2. _Initial state_. The contract's values at the moment of its deployment on-chain.
-
-
-Finally, to accurately derive the contract's address, it is necessary to calculate the hash corresponding to the pair **(Initial code, Initial state)** object. At this time, we won't take a deep dive into how the [TVM](/learn/tvm-instructions/tvm-overview) works, but it's important to understand that account IDs on TON are determined using this formula:
-:
-**account_id = hash(initial code, initial state)**
-
-In time, throughout this documentation, we'll dive deeper into the technical specifications and overview of the TVM and TL-B scheme. Now that we are familiar with the generation of the **account_id** and their interaction with smart contract addresses on TON, let’s explain Raw and User-Friendly addresses.
-
-## Addresses state
-
-Each address can be in one of possible states:
-
-- `nonexist` - there were no accepted transactions on this address, so it doesn't have any data (or the contract was deleted). We can say that initially all 2256 address are in this state.
-- `uninit` - address has some data, which contains balance and meta info. At this state address doesn't have any smart contract code/persistent data yet. An address enters this state, for example, when it was nonexist and some other address sent some tokens to it.
-- `active` - address has smart contract code, persistent data and balance. At this state it can perform some logic during the transaction and change its persistent data. An address enters this state when it was `uninit` and there was an incoming message with state_init param (note, that to be able to deploy this address, hash of `state_init` and `code` must be equal to address).
-- `frozen` - address cannot perform any operations, this state contains only two hashes of the previous state (code and state cells respectively). When an address's storage charge exceeds its balance, it goes into this state. To unfreeze it, you can send an internal message with `state_init` and `code` which store the hashes described earlier and some Toncoin. It can be difficult to recover it, so you should not allow this situation. There is a project to unfreeze the address, which you can find [here](https://unfreezer.ton.org/).
-
-## Raw and User-Friendly Addresses
-
-After providing a brief overview of how smart contract addresses on TON leverage workchains and account IDs (for the Masterchain and Basechain specifically), it is important to understand that these addresses are expressed in two main formats:
-
-* **Raw addresses**: Original full representation of smart contract addresses.
-* **User-friendly addresses**: User-friendly addresses are an enhanced format of raw address that employ better security and ease of use.
-
-Below, we’ll explain more about the differences between these two address types and dive deeper into why user-friendly addresses are used on TON.
-
-### Raw address
-
-Raw smart contract addresses consist of a workchain ID and account ID *(workchain_id, account_id)* and are displayed in the following format:
-
-* [decimal workchain_id\]:[64 hexadecimal digits with account_id\]
-
-
-Provided below, is an example of a raw smart contract address using a workchain ID and account ID together (expressed as **workchain_id** and **account_id**):
-
-`-1:fcb91a3a3816d0f7b8c2c76108b8a9bc5a6b7a55bd79f8ab101c52db29232260`
-
-Notice the `-1` at the start of the address string, which denotes a _workchain_id_ that belongs to the Masterchain.
-
-:::note
-Uppercase letters (such as 'A', ‘B’, ‘C’, ‘D’ etc.) may be used in address strings instead of their lower-case counterparts (such as 'a', ‘b’, ’c’ 'd' etc.).
-:::
-
-#### Issues With Raw Addresses
-
-Using the Raw Address form presents two main issues:
-
-1. When using the raw address format, it's not possible to verify addresses to eliminate errors prior to sending a transaction.
- This means that if you accidentally add or remove characters in the address string prior to sending the transaction, your transaction will be sent to the wrong destination, resulting in loss of funds.
-2. When using the raw address format, it's impossible to add special flags like those used when sending transactions that employ user-friendly addresses.
- To help you better understand this concept, we’ll explain which flags can be used below.
-
-### User-Friendly Address
-
-User-friendly addresses were developed to secure and simplify the experience for TON users who share addresses on the internet (for example, on public messaging platforms or via their email service providers), as well as in the real world.
-
-#### User-Friendly Address Structure
-
-User-friendly addresses are made up of 36 bytes in total and are obtained by generating the following components in order:
-
-1. _[flags - 1 byte]_ — Flags that are pinned to addresses change the way smart contracts react to the received message.
- Flags types that employ the user-friendly address format include:
-
- - isBounceable. Denotes a bounceable or non-bounceable address type. (_0x11_ for "bounceable", _0x51_ for "non-bounceable")
- - isTestnetOnly. Denotes an address type used for testnet purposes only. Addresses beginning with _0x80_ should not be accepted by software running on the production network
- - isUrlSafe. Denotes a deprecated flag that is defined as URL-safe for an address. All addresses are then considered URL-safe.
-2. _\[workchain_id - 1 byte]_ — The workchain ID (_workchain_id_) is defined by a signed 8-bit integer _workchain_id_.
-(_0x00_ for the BaseChain, _0xff_ for the MasterChain)
-3. _\[account_id - 32 byte]_ — The account ID is made up of a ([big-endian](https://www.freecodecamp.org/news/what-is-endianness-big-endian-vs-little-endian/)) 256-bit address in the workchain.
-4. _\[address verification - 2 bytes]_ — In user-friendly addresses, address verification is composed of a CRC16-CCITT signature from the previous 34 bytes. ([Example](https://github.com/andreypfau/ton-kotlin/blob/ce9595ec9e2ad0eb311351c8a270ef1bd2f4363e/ton-kotlin-crypto/common/src/crc32.kt))
- In fact, the idea pertaining to verification for user-friendly addresses is quite similar to the [Luhn algorithm](https://en.wikipedia.org/wiki/Luhn_algorithm), which is used on all credit cards to prevent users from entering non-existing card numbers by mistake.
-
-The addition of these 4 main components means that: `1 + 1 + 32 + 2 = 36` bytes in total (per user-friendly address).
-
-To generate a user-friendly address, the developer must encode all 36 bytes using either:
-- _base64_ (i.e., with digits, upper and lowercase Latin letters, '/' and '+')
-- _base64url_ (with '_' and '-' instead of '/' and '+')
-
-After this process is complete, the generation of a user-friendly address with a length of 48 non-spaced characters is finalized.
-
-:::info DNS ADDRESS FLAGS
-On TON, DNS addresses such as mywallet.ton are sometimes used instead of raw and user-friendly addresses. In fact, DNS addresses are made up of user-friendly addresses and include all the required flags that allow developers to access all the flags from the DNS record within the TON domain.
-:::
-
-#### User-Friendly Address Encoding Examples
-
-For example, the "test giver" smart contract (a special smart contract residing in the testnet masterchain that sends 2 test tokens to anyone who requests them) makes use of the following raw address:
-
-`-1:fcb91a3a3816d0f7b8c2c76108b8a9bc5a6b7a55bd79f8ab101c52db29232260`
-
-The above "test giver" raw address must be converted into the user-friendly address form. This is obtained using either the base64 or base64url forms (that we introduced previously) as follows:
-
-* `kf/8uRo6OBbQ97jCx2EIuKm8Wmt6Vb15+KsQHFLbKSMiYIny` (base64)
-* `kf_8uRo6OBbQ97jCx2EIuKm8Wmt6Vb15-KsQHFLbKSMiYIny` (base64url)
-
-:::info
-Notice that both forms (_base64_ and _base64url_) are valid and must be accepted!
-:::
-
-#### Bounceable vs Non-Bounceable Addresses
-
-The core idea behind the bounceable address flag is sender's funds security.
-
-For example, if the destination smart contract does not exist, or if some issue happens during the transaction, the message will be "bounced" back to the sender and constitute the remainder of the original value of the transaction (minus all transfer and gas fees). This ensures the sender doesn't lose their funds that were sent by accident to an address that cannot accept the transaction.
-
-In relation to bounceable addresses specifically:
-
-1. The **bounceable=false** flag generally means the receiver is a wallet.
-2. The **bounceable=true** flag typically denotes a custom smart contract with its own application logic (for example, a DEX). In this example, non-bounceable messages should not be sent because of security reasons.
-
-Feel free to read more on this topic in our documentation to gain a better understanding of [non-bounceable messages](/develop/smart-contracts/guidelines/non-bouncable-messages).
-
-#### Armored base64 Representations
-
-Additional binary data related to TON Blockchain employs similar "armored" base64 user-friendly address representations. These differentiate from one another depending on the first 4 characters of their byte tag. For example, 256-bit Ed25519 public keys are represented by first creating a 36-byte sequence using the below process in order:
-
-- A single byte tag using the _0x3E_ format denotes a public key
-- A single byte tag using the _0xE6_ format denotes a Ed25519 public key
-- 32 bytes containing the standard binary representation of the Ed25519 public key
-- 2 bytes containing the big-endian representation of CRC16-CCITT of the previous 34 bytes
-
-
-The resulting 36-byte sequence is converted into a 48-character base64 or base64url string in the standard fashion. For example, the Ed25519 public key `E39ECDA0A7B0C60A7107EC43967829DBE8BC356A49B9DFC6186B3EAC74B5477D` (usually represented by a sequence of 32 bytes such as: `0xE3, 0x9E, ..., 0x7D`) presents itself through the "armored" representation as follows:
-
-`Pubjns2gp7DGCnEH7EOWeCnb6Lw1akm538YYaz6sdLVHfRB2`
-
-
-### Converting User-Friendly Addresses and Raw Addresses
-
-The simplest way to convert user-friendly and raw addresses is to use one of several TON APIs and other tools, including:
-
-* [ton.org/address](https://ton.org/address)
-* [dton.io API method](https://dton.io/api/address/0:867ac2b47d1955de6c8e23f57994fad507ea3bcfe2a7d76ff38f29ec46729627)
-* [toncenter API methods in mainnet](https://toncenter.com/api/v2/#/accounts/pack_address_packAddress_get)
-* [toncenter API methods in testnet](https://testnet.toncenter.com/api/v2/#/accounts/pack_address_packAddress_get)
-
-Additionally, there are two ways to convert user-friendly and raw addresses for wallets using JavaScript:
-
-* [Convert address from/to user-friendly or raw form using ton.js](https://github.com/ton-org/ton-core/blob/main/src/address/Address.spec.ts)
-* [Convert address from/to user-friendly or raw form using tonweb](https://github.com/toncenter/tonweb/tree/master/src/utils#address-class)
-
-It's also possible to make use of similar mechanisms using [SDKs](/develop/dapps/apis/sdk).
-
-### Address Examples
-
-Learn more examples on TON Addresses in the [TON Cookbook](/develop/dapps/cookbook#working-with-contracts-addresses).
-
-## Possible problems
-
-When interacting with the TON blockchain, it's crucial to understand the implications of transferring TON coins to `uninit` wallet addresses. This section outlines the various scenarios and their outcomes to provide clarity on how such transactions are handled.
-
-### What happens when you transfer Toncoin to an uninit address?
-
-#### Transaction with `state_init` included
-
-If you include the `state_init` (which consists of the wallet or smart contract's code and data) with your transaction. The smart contract is deployed first using the provided `state_init`. After deployment, the incoming message is processed, similar to sending to an already initialized account.
-
-#### Transaction without `state_init` and `bounce` flag set
-
-The message cannot be delivered to the `uninit` smart contract, and it will be bounced back to the sender. After deducting the consumed gas fees, the remaining amount is returned to the sender's address.
-
-#### Transaction without `state_init` and `bounce` flag unset
-
-The message cannot be delivered, but it will not bounce back to the sender. Instead, the sent amount will be credited to the receiving address, increasing its balance even though the wallet is not yet initialized. They will be stored there until the address holder deploys a smart wallet contract and then they can access the balance.
-
-#### How to do it right
-
-The best way to deploy a wallet is to send some TON to its address (which is not yet initialized) with the `bounce` flag cleared. After this step, the owner can deploy and initialize the wallet using funds at the current uninitialized address. This step usually occurs on the first wallet operation.
-
-### The TON blockchain implements protection against erroneous transactions
-
-In the TON blockchain, standard wallets and apps automatically manage the complexities of transactions to uninitialized addresses by using bounceable and non-bounceable address, which are described [here](#bounceable-vs-non-bounceable-addresses). It is common practice for wallets, when sending coins to non-initialized addresses, to send coins to both bounceable and non-bounceable addresses without return.
-
-If there is a need to quickly get an address in bounceable/non-bounceable form this can be done [here](https://ton.org/address/).
-
-### Responsibility for custom products
-
-If you are developing a custom product on the TON blockchain, it is essential to implement similar checks and logic:
-
-Ensure your application verifies whether the recipient address is initialized before sending funds.
-Based on the address state, use bounceable addresses for user smart contracts with custom application logic to ensure funds are returned. Use non-bounceable addresses for wallets.
-
diff --git a/docs/participate/wallets/contracts.md~upstream_staging b/docs/participate/wallets/contracts.md~upstream_staging
deleted file mode 100644
index 07930cf4d8..0000000000
--- a/docs/participate/wallets/contracts.md~upstream_staging
+++ /dev/null
@@ -1,198 +0,0 @@
-# Types of Wallet Contracts
-
-You have probably heard somewhere about different versions of wallets in TON Blockchain. But what do these versions really mean and how do they differ?
-
-In this article, we'll look at all versions and modifications of TON wallets.
-
-## How can wallets be different?
-
-Before we start, we need to understand how wallets can differ at all.
-
-If we look at Ethereum, Solana or almost any other blockchain, there are not different types or versions of wallets. But why do they exist in TON? It's because wallets in TON are made by smart contracts. Basically, any wallet (even yours) is a smart contract running on TON Blockchain which can accept and send transactions to other wallets which are also smart contracts.
-
-These smart contracts can be set up in different ways and can have different features. That's why there are several versions of wallets in TON.
-
-## Basic wallets
-
-### Wallet V1
-
-This is the simplest one. It only allows you to send one transaction at the time and it doesn't check anything besides your signature and seqno.
-
-This version isn't even used in regular apps because it has some major issues:
- - No easy way to retrieve the seqno and public key from the contract
- - No `valid_until` check, so you can't be sure that the transaction won't be confirmed too late.
-
-The first issue is fixed in `V1R2` and `V1R3`. That `R` letter means `revision`. Usually revisions are just small updates which only add get-methods which allows you to retrieve seqno and public key from the contract.
-But this version also has a second issue, which is fixed in the next version.
-
-Wallet source code:
- * [ton/crypto/smartcont/wallet-code.fc](https://github.com/ton-blockchain/ton/blob/master/crypto/smartcont/wallet-code.fc)
-
-### Wallet V2
-
-This version introduces the `valid_until` parameter which is used to set a time limit for a transaction in case you don't want it to be confirmed too late. This version also doesn't have the get-method for public key, which is added in `V2R2`.
-
-It can be used in most cases, but it misses one cool feature, which was added in `V3`.
-
-Wallet source code:
- * [ton/crypto/smartcont/new-wallet-v2.fif](https://github.com/ton-blockchain/ton/blob/master/crypto/smartcont/new-wallet-v2.fif)
-
-### Wallet V3
-
-This version introduces the `subwallet_id` parameter, which allows you to create multiple wallets using the same public key (so you can have only one seed phrase and lots of wallets). And, as before, `V3R2` only adds the get-method for public key.
-
-Basically, `subwallet_id` is just a number which is added to the contract state when it is deployed. And since the contract address in TON is a hash of its state and code, the wallet address will change with a different `subwallet_id`.
-
-This version is the most used right now. It covers most use-cases and remains clean and simple.
-
-Wallet source code:
- * [ton/crypto/smartcont/wallet-v3-code.fif](https://github.com/ton-blockchain/ton/blob/master/crypto/smartcont/wallet-v3-code.fif)
-
-### Wallet V4
-
-It is the most modern wallet version at the moment. It still has all the functionality of the previous versions, but also introduces something very powerful — `plugins`.
-
-This feature allows developers to implement complex logic that will work in tandem with a user's wallet. For example, some DApp may require a user to pay a small amount of coins every day to use some features, so the user will need to install the plugin on their wallet by signing a transaction. This plugin will send coins to the destination address every day when it will be requested by an external message.
-
-This is a very customizable feature which is unique to TON Blockchain.
-
-Wallet source code:
- * [ton-blockchain/wallet-contract](https://github.com/ton-blockchain/wallet-contract)
-
-### Wallet V5
-
-This is an extensible wallet specification developed by the Tonkeeper team, aimed at replacing V4 and allowing arbitrary extensions.
-
-The W5 wallet standard offers many benefits that improve the experience for both users and merchants. W5 supports gas-free transactions, account delegation and recovery, subscription payments using tokens and Toncoin, and low-cost multi-transfers.
-
-Users will have access to a 25% reduction in blockchain fees, a new flexible plugin interface for developers, and an internal message signature that enables delegation of gas payments.
-
-In addition to retaining the previous functionality (v4), the new contract allows you to send up to 255 messages at a time, as well as to make full-fledged gasless transactions (e.g., payment of network fees when transferring USDt in USDt itself) and other features. We believe it will enhance the usability and capabilities for TON users.
-
-:::tip
-Wallet V5 wallets allow transactions to be initiated by the user but paid for by another contract. Consequently, there will be services (such as [Tonkeeper's Battery](https://blog.ton.org/tonkeeper-releases-huge-update#tonkeeper-battery)) that provide this functionality: they pay the transaction fees in TONs on behalf of the user, but charge a fee in tokens.
-:::
-
-#### UI Preparation and Beta Testing
-
-- UI : Already now, wallet teams can start UI preparations. You can use the v5-beta smart contract as a test smart contract, but keep in mind that it will can change. UI suggestion: wallets that have multi-accounts could support the new v5 smart contract as a separate account in the UI. Provide a “Transfer funds between your accounts” functionality.
-- Beta : If you build v5 functionality into public versions of your products, please mark it as “beta” and do not use the v5 contract by default, but only when explicitly enabled in the settings. Please observe this rule to prevent too wide distribution of the non-final beta version of the v5 smart contract.
-- Release : The final smart contract will be ready around June 20, after which wallets can enable v5 by default using the final smart contract. It will be written about here.
-
-#### Preparing for Gasless Transactions
-
-The v5 wallet smart contract allows the processing of internal messages signed by the owner. This also allows you to make gasless transactions, e.g., payment of network fees when transferring USDt in USDt itself.
-
-#### Flow
-
-1. When sending USDt, the user signs one message containing two outgoing USDt transfers:
- 1. USDt transfer to the recipient's address.
- 2. Transfer of a small amount of USDt in favor of the Service.
-2. This signed message is sent off-chain by HTTPS to the Service backend. The Service backend sends it to the TON blockchain, paying Toncoins for network fees.
-
-Beta version of the gasless backend API is available on [tonapi.io/api-v2](https://tonapi.io/api-v2). If you are developing any wallet app and have feedback about these methods please share it ton [@tonapitech](https://t.me/tonapitech) chat.
-
-Wallet source code:
- * [ton-blockchain/wallet-contract-v5](https://github.com/ton-blockchain/wallet-contract-v5)
-
-## Special wallets
-
-Sometimes the functionality of basic wallets isn't enough. That's why there are several types of specialized wallet: `high-load`, `lockup` and `restricted`.
-
-Let's have a look at them.
-
-### Highload Wallets
-
-When working with many messages in a short period, there is a need for special wallet called Highload Wallet. Read [the article](/participate/wallets/highload) for more information.
-
-### Lockup wallet
-
-If you, for some reason, need to lock coins in a wallet for some time without the possibility to withdraw them before that time passes, have a look at the lockup wallet.
-
-It allows you to set the time until which you won't be able to withdraw anything from the wallet. You can also customize it by setting unlock periods so that you will be able to spend some coins during these set periods.
-
-For example: you can create a wallet which will hold 1 million coins with total vesting time of 10 years. Set the cliff duration to one year, so the funds will be locked for the first year after the wallet is created. Then, you can set the unlock period to one month, so `1'000'000 TON / 120 months = ~8333 TON` will unlock every month.
-
-Wallet source code:
- * [ton-blockchain/lockup-wallet-contract](https://github.com/ton-blockchain/lockup-wallet-contract)
-
-### Restricted wallet
-
-This wallet's function is to act like a regular wallet, but restrict transfers to only one pre-defined destination address. You can set the destination when you create this wallet and then you'll be only able to transfer funds from it to that address. But note that you can still transfer funds to validation contracts so you can run a validator with this wallet.
-
-Wallet source code:
- * [EmelyanenkoK/nomination-contract/restricted-wallet](https://github.com/EmelyanenkoK/nomination-contract/tree/master/restricted-wallet)
-
-## Known op codes
-
-:::info
-Also op-code, op::code and operational code
-:::
-
-
-| Contract type | Hex code | OP::Code |
-|-----------------|-----------------|----------------------------|
-| Global | 0x00000000 | Text Comment |
-| Global | 0xffffffff | Bounce |
-| Global | 0x2167da4b | [Encrypted Comment](https://docs.ton.org/develop/smart-contracts/guidelines/internal-messages#messages-with-encrypted-comments) |
-| Global | 0xd53276db | Excesses |
-| Elector | 0x4e73744b | New Stake |
-| Elector | 0xf374484c | New Stake Confirmation |
-| Elector | 0x47657424 | Recover Stake Request |
-| Elector | 0x47657424 | Recover Stake Response |
-| Wallet | 0x0f8a7ea5 | Jetton Transfer |
-| Wallet | 0x235caf52 | [Jetton Call To](https://testnet.tonviewer.com/transaction/1567b14ad43be6416e37de56af198ced5b1201bb652f02bc302911174e826ef7) |
-| Jetton | 0x178d4519 | Jetton Internal Transfer |
-| Jetton | 0x7362d09c | Jetton Notify |
-| Jetton | 0x595f07bc | Jetton Burn |
-| Jetton | 0x7bdd97de | Jetton Burn Notification |
-| Jetton | 0xeed236d3 | Jetton Set Status |
-| Jetton-Minter | 0x642b7d07 | Jetton Mint |
-| Jetton-Minter | 0x6501f354 | Jetton Change Admin |
-| Jetton-Minter | 0xfb88e119 | Jetton Claim Admin |
-| Jetton-Minter | 0x7431f221 | Jetton Drop Admin |
-| Jetton-Minter | 0xcb862902 | Jetton Change Metadata |
-| Jetton-Minter | 0x2508d66a | Jetton Upgrade |
-| Vesting | 0xd372158c | [Top Up](https://github.com/ton-blockchain/liquid-staking-contract/blob/be2ee6d1e746bd2bb0f13f7b21537fb30ef0bc3b/PoolConstants.ts#L28) |
-| Vesting | 0x7258a69b | Add Whitelist |
-| Vesting | 0xf258a69b | Add Whitelist Response |
-| Vesting | 0xa7733acd | Send |
-| Vesting | 0xf7733acd | Send Response |
-| Dedust | 0x9c610de3 | Dedust Swap ExtOut |
-| Dedust | 0xe3a0d482 | Dedust Swap Jetton |
-| Dedust | 0xea06185d | Dedust Swap Internal |
-| Dedust | 0x61ee542d | Swap External |
-| Dedust | 0x72aca8aa | Swap Peer |
-| Dedust | 0xd55e4686 | Deposit Liquidity Internal |
-| Dedust | 0x40e108d6 | Deposit Liquidity Jetton |
-| Dedust | 0xb56b9598 | Deposit Liquidity all |
-| Dedust | 0xad4eb6f5 | Pay Out From Pool |
-| Dedust | 0x474а86са | Payout |
-| Dedust | 0xb544f4a4 | Deposit |
-| Dedust | 0x3aa870a6 | Withdrawal |
-| Dedust | 0x21cfe02b | Create Vault |
-| Dedust | 0x97d51f2f | Create Volatile Pool |
-| Dedust | 0x166cedee | Cancel Deposit |
-| StonFi | 0x25938561 | Swap Internal |
-| StonFi | 0xf93bb43f | Payment Request |
-| StonFi | 0xfcf9e58f | Provide Liquidity |
-| StonFi | 0xc64370e5 | Swap Success |
-| StonFi | 0x45078540 | Swap Success ref |
-
-:::info
-[DeDust docs](https://docs.dedust.io/docs/swaps)
-
-[StonFi docs](https://docs.ston.fi/docs/developer-section/architecture#calls-descriptions)
-:::
-
-## Conclusion
-
-As you see, there are many different versions of wallets in TON. But in most cases, you only need `V3R2` or `V4R2`. You can also use one of the special wallets if you want to have some additional functionality like a periodic unlocking of funds.
-
-## See Also
-
- - [Sources of basic wallets](https://github.com/ton-blockchain/ton/tree/master/crypto/smartcont)
- - [More technical description of versions](https://github.com/toncenter/tonweb/blob/master/src/contract/wallet/WalletSources.md)
- - [Wallet V4 sources and detailed description](https://github.com/ton-blockchain/wallet-contract)
- - [Lockup wallet sources and detailed description](https://github.com/ton-blockchain/lockup-wallet-contract)
- - [Restricted wallet sources](https://github.com/EmelyanenkoK/nomination-contract/tree/master/restricted-wallet)
diff --git a/docs/participate/wallets/highload.md b/docs/participate/wallets/highload.md
deleted file mode 100644
index e1fb3fcc19..0000000000
--- a/docs/participate/wallets/highload.md
+++ /dev/null
@@ -1,64 +0,0 @@
-# Highload Wallet
-
-When working with many messages in a short period, there is a need for special wallet called Highload Wallet. Highload Wallet V2 was the main wallet on TON for a long time, but you had to be very careful with it. Otherwise, you could [lock all funds](https://t.me/tonstatus/88).
-
-[With the advent of Highload Wallet V3](https://github.com/ton-blockchain/Highload-wallet-contract-v3), this problem has been solved at the contract architecture level and consumes less gas. This chapter will cover the basics of Highload Wallet V3 and important nuances to remember.
-
-## Highload Wallet v3
-
-This wallet is made for who need to send transactions at very high rates. For example, crypto exchanges.
-
-- [Source code](https://github.com/ton-blockchain/Highload-wallet-contract-v3)
-
-Any given external message (transfer request) to a Highload v3 contains:
-- a signature (512 bits) in the top level cell - the other parameters are in the ref of that cell
-- subwallet ID (32 bits)
-- message to send as a ref (the serialized internal message that will be sent)
-- send mode for the message (8 bits)
-- composite query ID - 13 bits of "shift" and 10 bits of "bit number", however the 10 bits of bit number can only go up to 1022, not 1023, and also the last such usable query ID (8388605) is reserved for emergencies and should not be normally used
-- created at, or message timestamp
-- timeout
-
-Timeout is stored in Highload as a parameter and is checked against the timeout in all requests - so the timeout for all requests is equal. The message should be not older than timeout at the time of arrival to the Highload wallet, or in code it is required that `created_at > now() - timeout`. Query IDs are stored for the purposes of replay protection for at least timeout and possibly up to 2 * timeout, however one should not expect them to be stored for longer than timeout. Subwallet ID is checked against the one stored in the wallet. Inner ref's hash is checked along with the signature against the public key of the wallet.
-
-Highload v3 can only send 1 message from any given external message, however it can send that message to itself with a special op code, allowing one to set any action cell on that internal message invocation, effectively making it possible to send up to 254 messages per 1 external message (possibly more if another message is sent to Highload wallet again among these 254).
-
-Highload v3 will always store the query ID (replay protection) once all the checks pass, however a message may not be sent due to some conditions, including but not limited to:
-- **containing state init** (such messages, if required, may be sent using the special op code to set the action cell after an internal message from Highload wallet to itself)
-- not enough balance
-- invalid message structure (that includes external out messages - only internal messages may be sent straight from the external message)
-
-Highload v3 will never execute multiple externals containing the same `query_id` **and** `created_at` - by the time it forgets any given `query_id`, the `created_at` condition will prevent such a message from executing. This effectively makes `query_id` **and** `created_at` together the "primary key" of a transfer request for Highload v3.
-
-When iterating (incrementing) query ID, it is cheaper (in terms of TON spent on fees) to iterate through bit number first, and then the shift, like when incrementing a regular number. After you've reached the last query ID (remember about the emergency query ID - see above), you can reset query ID to 0, but if Highload's timeout period has not passed yet, then the replay protection dictionary will be full and you will have to wait for the timeout period to pass.
-
-
-## Highload wallet v2
-
-:::danger
-Legacy contract, it is suggest to use Highload wallet v3.
-:::
-
-This wallet is made for those who need to send hundreds of transactions in a short period of time. For example, crypto exchanges.
-
-It allows you to send up to `254` transactions in one smart contract call. It also uses a slightly different approach to solve replay attacks instead of seqno, so you can call this wallet several times at once to send even thousands of transactions in a second.
-
-:::caution Limitations
-Note, when dealing with Highload wallet the following limits need to be checked and taken into account.
-:::
-
-1. **Storage size limit.** Currently, size of contract storage should be less than 65535 cells. If size of
-old_queries will grow above this limit, exception in ActionPhase will be thrown and transaction will fail.
-Failed transaction may be replayed.
-2. **Gas limit.** Currently, gas limit is 1'000'000 GAS units, that means that there is a limit of how much
-old queries may be cleaned in one tx. If number of expired queries will be higher, contract will stuck.
-
-That means that it is not recommended to set too high expiration date:
-number of queries during expiration time span should not exceed 1000.
-
-Also, number of expired queries cleaned in one transaction should be below 100.
-
-
-
-Wallet source code:
- * [ton/crypto/smartcont/Highload-wallet-v2-code.fc](https://github.com/ton-blockchain/ton/blob/master/crypto/smartcont/Highload-wallet-v2-code.fc)
\ No newline at end of file
diff --git a/docs/v3/concepts/dive-into-ton/go-from-ethereum/solidity-vs-func.md b/docs/v3/concepts/dive-into-ton/go-from-ethereum/solidity-vs-func.md
index f2899d267b..dd276761e2 100644
--- a/docs/v3/concepts/dive-into-ton/go-from-ethereum/solidity-vs-func.md
+++ b/docs/v3/concepts/dive-into-ton/go-from-ethereum/solidity-vs-func.md
@@ -219,4 +219,4 @@ This example presented how smart contracts can communicate with each other.
- [Internal Messages](/v3/documentation/smart-contracts/message-management/internal-messages)
- [Sending Messages](/v3/documentation/smart-contracts/message-management/sending-messages)
-- [Non-bouncable messages](v3/guidelines/smart-contracts/guidelines/non-bouncable-messages)
+- [Non-bouncable messages](/v3/documentation/smart-contracts/message-management/non-bounceable-messages)
diff --git a/docs/v3/concepts/dive-into-ton/introduction.mdx b/docs/v3/concepts/dive-into-ton/introduction.mdx
index 96c5803565..45ed298b20 100644
--- a/docs/v3/concepts/dive-into-ton/introduction.mdx
+++ b/docs/v3/concepts/dive-into-ton/introduction.mdx
@@ -11,7 +11,6 @@ TON is focused on achieving widespread cross-chain interoperability, while opera
__TON Blockchain__ is designed as a distributed supercomputer, or “_superserver_,” intended to provide a variety of products and services to contribute to the development of the decentralized vision for the new internet.
-* Discover which services TON provides for its users by reviewing this section: [Participate in TON](/participate/)
* To learn more about the technical aspects of TON Blockchain review the [Blockchain of Blockchains](/v3/concepts/dive-into-ton/ton-blockchain/blockchain-of-blockchains)
* Learn more about the development of all things TON by reviewing this section: [Getting Started](/v3/documentation/ton-documentation)
diff --git a/docs/v3/concepts/dive-into-ton/ton-blockchain/ton-networking.md b/docs/v3/concepts/dive-into-ton/ton-blockchain/ton-networking.md
index 268aee55f7..a8e96ff815 100644
--- a/docs/v3/concepts/dive-into-ton/ton-blockchain/ton-networking.md
+++ b/docs/v3/concepts/dive-into-ton/ton-blockchain/ton-networking.md
@@ -22,6 +22,6 @@ blockchain itself, thus providing more possibilities and flexibility for creatin
## See Also
* [ADNL Protocol](/v3/documentation/network/protocols/adnl/overview)
-* [Overlay Subnetworks](/learn/networking/overlay-subnetworks)
-* [RLDP Protocol](/learn/networking/rldp)
+* [Overlay Subnetworks](/v3/documentation/network/protocols/overlay)
+* [RLDP Protocol](/v3/documentation/network/protocols/rldp)
* [TON DHT Service](/v3/documentation/network/protocols/dht/ton-dht)
diff --git a/docs/v3/concepts/dive-into-ton/ton-ecosystem/explorers-in-ton.mdx b/docs/v3/concepts/dive-into-ton/ton-ecosystem/explorers-in-ton.mdx
index 52882b3a6c..ab64fa1b97 100644
--- a/docs/v3/concepts/dive-into-ton/ton-ecosystem/explorers-in-ton.mdx
+++ b/docs/v3/concepts/dive-into-ton/ton-ecosystem/explorers-in-ton.mdx
@@ -162,7 +162,7 @@ Displays various statistics such as number of registered network addresses and w
## Want to be in this list?
-Please, write to one of the [maintainers](/docs/v3/contribute/maintainers.md).
+Please, write to one of the [maintainers](/v3/contribute/maintainers).
## References
diff --git a/docs/v3/concepts/dive-into-ton/ton-ecosystem/wallet-apps.mdx b/docs/v3/concepts/dive-into-ton/ton-ecosystem/wallet-apps.mdx
index 5ec4e423a8..f6b7e82ca5 100644
--- a/docs/v3/concepts/dive-into-ton/ton-ecosystem/wallet-apps.mdx
+++ b/docs/v3/concepts/dive-into-ton/ton-ecosystem/wallet-apps.mdx
@@ -133,7 +133,7 @@ You will need to download separate application to connect to the Testnet.
#### Links
- [GitHub](https://github.com/tonwhales/wallet)
- [Sandbox iOS](https://apps.apple.com/app/ton-development-wallet/id1607857373)
-- [Sandbox Android](https://play.google.com/store/apps/details?id=com.tonhub.wallet.testnet)
+- [Sandbox Android](https://play.google.com/store/apps/details?id=com.tonhub.wallet)
### OpenMask
diff --git a/docs/v3/concepts/qa-outsource/outsource.mdx b/docs/v3/concepts/qa-outsource/outsource.mdx
index 8cae0aae02..3efd865f19 100644
--- a/docs/v3/concepts/qa-outsource/outsource.mdx
+++ b/docs/v3/concepts/qa-outsource/outsource.mdx
@@ -7,7 +7,6 @@ import Button from '@site/src/components/button'
Discover 3rd party development teams for your TON project
* [Astralyx](#astralyx)
-* [Blockczech R&D Lab](#blockczech-rd-lab)
* [Coinvent](#coinvent)
* [EvaCodes](#evacodes)
* [Pixelplex](#pixelplex)
@@ -28,37 +27,12 @@ Company with big experience in TON and other chains development. You can ask us
- [t.me/xjetswapbot](http://t.me/xjetswapbot) (frontend, design),
- [github.com/astralyxdev/lockup-jettons-contract](http://github.com/astralyxdev/lockup-jettons-contract) (smartcontract, web interface, tests)
- [github.com/astralyxdev/ton-proxy](http://github.com/astralyxdev/ton-proxy) (TON Proxy extension, one of the first)
-- [store.devdao.io](http://store.devdao.io) (front-end, design)
- [scaleton.io](http://scaleton.io) (landing, frontend, design)
-- [burn.astralyx.dev](http://burn.astralyx.dev) (service for burning SBT NFT in TON, frontend, design)
#### Contacts
[astralyx.dev](http://astralyx.dev), contact@astralyx.dev
-### Blockczech R&D Lab
-
-#### Summary
-Web3.0 Software House & Startup Studio with a strong focus on blockchain-based solutions for games and eSports.
-
-#### Workstreams
-- dApps
-- TMA Development
-- blockchain games
-- Integration
-
-#### Projects
-- [TCG.world](http://TCG.world)
-- [cryptomeda.tech ](http://cryptomeda.tech)
-- [liithos.com](http://liithos.com)
-- [x.la/contracts/](http://x.la/contracts/)
-- [About Blockczech R&D Lab](https://docs.google.com/presentation/d/1htMH1ihm31wQSn08ZziFfK6NpbPSHA3M/edit?usp=sharing&ouid=105247529013711719883&rtpof=true&sd=true)
-
-#### Contacts
-- http://blockczech.io
-- [@blockczech](https://t.me/blockczech)
-
-
### Coinvent
#### Summary
@@ -74,7 +48,6 @@ Coinvent is a dedicated outsource development team, passionately committed to cr
#### Projects
- [Tonraffles Lock module](https://tonraffles.app/lock) (smart-contract, front-end)
- [Tonraffles NFT Launchpad](https://tonraffles.app/nft/launchpad) (smart-contracts)
-- [OOIA shopping cart feature](https://testnet.ooia.art/) (smart-contract)
- [Monaki NFT Staking](https://www.monaki.life/) (smart-contracts)
#### Contacts
@@ -95,7 +68,6 @@ EvaCodes is a top Eastern European blockchain development company with teams loc
#### Projects
- [alium.finance](https://alium.finance/)
-- [trush.io](https://trush.io/)
- [konsta.network](https://konsta.network/)
#### Contacts
@@ -148,7 +120,7 @@ The most bizarre company with the bravest ideas of Ton and FunC programming.
#### Contacts
- [serokell.io](https://serokell.io/)
-- Telegram [Roman Alterman](https://t.me/alterroman)
+- Telegram [Roman Alterman](https://t.me/alterroman)
- hi@serokell.io
### softstack
diff --git a/docs/v3/concepts/ton-blockchain/shards.md b/docs/v3/concepts/ton-blockchain/shards.md
index 9b0fc8cd8d..96af82cac3 100644
--- a/docs/v3/concepts/ton-blockchain/shards.md
+++ b/docs/v3/concepts/ton-blockchain/shards.md
@@ -21,5 +21,5 @@ In addition to the dynamic creation of shards, TON uses **Split Merge** function
## See Also
-* [Shards Dive In](/develop/blockchain/shards)
-* [# Infinity Sharding Paradigm](/develop/blockchain/sharding-lifecycle)
+* [Shards Dive In](/v3/documentation/smart-contracts/shards)
+* [# Infinity Sharding Paradigm](/v3/documentation/smart-contracts/infinity-sharding-paradigm)
diff --git a/docs/v3/contribute/participate.md b/docs/v3/contribute/participate.md
index 8e9b825faf..0638922c6a 100644
--- a/docs/v3/contribute/participate.md
+++ b/docs/v3/contribute/participate.md
@@ -30,10 +30,10 @@ Write a _ton-footstep_ to receive a funding for your contributing.
## Writing a tutorial
**Preparations**. Minimize future amount of requested changes, _save your time_:
-1. Follow [Tutorial Guidelines](/v3/contribute/guidelines) and check them with [Sample Tutorial Structure](/v3/contribute/sample-tutorial)
-2. Read [Principles of a Good Tutorial](/v3/contribute/principles-of-a-good-tutorial) to write amazing tutorial :)
+1. Follow [Tutorial Guidelines](/v3/contribute/contribution-rules) and check them with [Sample Tutorial Structure](/v3/contribute/tutorials/sample-tutorial)
+2. Read [Principles of a Good Tutorial](/v3/contribute/tutorials/principles-of-a-good-tutorial) to write amazing tutorial :)
3. Inspire with [Mint your first Jetton](/v3/guidelines/dapps/tutorials/mint-your-first-token) example in sources.
-4. **Setup environment**. [Check the tutorial](/contribute#online-one-click-contribution-setup) running your fork locally or using Gitpod.
+4. **Setup environment**. [Check the tutorial](/v3/contribute#online-one-click-contribution-setup) running your fork locally or using Gitpod.
5. **Write tutorial**. Using the environment, see how tutorial looks like on your fork.
6. **Make a Pull Request**. Open PR to get some feedback from maintainers.
7. Get merged!
diff --git a/docs/v3/documentation/archive/hacktoberfest-2022/README.mdx b/docs/v3/documentation/archive/hacktoberfest-2022/README.mdx
index dc338830d6..e372988f8a 100644
--- a/docs/v3/documentation/archive/hacktoberfest-2022/README.mdx
+++ b/docs/v3/documentation/archive/hacktoberfest-2022/README.mdx
@@ -4,7 +4,7 @@ import Button from '@site/src/components/button'
@@ -33,7 +33,7 @@ To motivate the community to contribute to open source projects in the TON Ecosy
-
+
Your browser does not support the video tag.
@@ -49,7 +49,7 @@ You have plenty of time to participate in the event. Let's build decentralized I
-
I want to become a Contributor
@@ -57,7 +57,7 @@ I want to become a Contributor
-
+
I'm a Maintainer
diff --git a/docs/v3/documentation/archive/hacktoberfest-2022/as-contributor.md b/docs/v3/documentation/archive/hacktoberfest-2022/as-contributor.md
index a17ac352da..303ccc12df 100644
--- a/docs/v3/documentation/archive/hacktoberfest-2022/as-contributor.md
+++ b/docs/v3/documentation/archive/hacktoberfest-2022/as-contributor.md
@@ -8,7 +8,7 @@ To become a contributor who receives a limited *Hack-TON-berfest NFT*, please se
2. Please provide your wallet address to the [@toncontests_bot](https://t.me/toncontests_bot) in Telegram.
3. Validate your GitHub account in the same bot.
-After these steps you are ready to contribute and receive a [limited Hack-TON-berfest NFT](/v3/contribute/hacktoberfest/#what-the-rewards).
+After these steps you are ready to contribute and receive a [limited Hack-TON-berfest NFT](/v3/documentation/archive/hacktoberfest-2022/#what-the-rewards).
Welcome to the club, this is just the beginning!
@@ -30,4 +30,4 @@ The TON Ecosystem has several organizations and repositories:
className="Button Button-is-docs-primary">
List of projects looking for contributors
-
\ No newline at end of file
+
diff --git a/docs/v3/documentation/archive/hacktoberfest-2022/as-maintainer.md b/docs/v3/documentation/archive/hacktoberfest-2022/as-maintainer.md
index d1448f978d..ce81d745d3 100644
--- a/docs/v3/documentation/archive/hacktoberfest-2022/as-maintainer.md
+++ b/docs/v3/documentation/archive/hacktoberfest-2022/as-maintainer.md
@@ -25,7 +25,7 @@ After that, feel free to add your repository to the list.
As a repository maintainer in the TON Ecosystem, you will be able to receive two types of rewards:
1. [Hacktoberfest Reward Kit](https://hacktoberfest.com/participation/#maintainers) (_see REWARD FOR MAINTAINERS_)
-2. [Limited Hack-TON-berfest NFT](/v3/contribute/hacktoberfest/#what-the-rewards) (_please, register the wallet address in the [@toncontests_bot](https://t.me/toncontests_bot)_)
+2. [Limited Hack-TON-berfest NFT](/v3/documentation/archive/hacktoberfest-2022/#what-the-rewards) (_please, register the wallet address in the [@toncontests_bot](https://t.me/toncontests_bot)_)
## How to join and be listed?
@@ -36,4 +36,4 @@ To participate in Hack-TON-berfest follow this link:
className="Button Button-is-docs-primary">
Add a repository to the list
-
\ No newline at end of file
+
diff --git a/docs/v3/documentation/archive/tg-bot-integration-py.md b/docs/v3/documentation/archive/tg-bot-integration-py.md
index dae7602bd4..34a10082e3 100644
--- a/docs/v3/documentation/archive/tg-bot-integration-py.md
+++ b/docs/v3/documentation/archive/tg-bot-integration-py.md
@@ -3,7 +3,7 @@ import Button from '@site/src/components/button'
# TON Connect for Telegram Bots - Python
:::warning deprecated
-This guide explains an outdated method of integrating TON Connect with Telegram bots. For a more secure and modern approach, consider using [Telegram Mini Apps](/develop/dapps/telegram-apps) for a more modern and secure integration.
+This guide explains an outdated method of integrating TON Connect with Telegram bots. For a more secure and modern approach, consider using [Telegram Mini Apps](/v3/guidelines/dapps/tma/overview for a more modern and secure integration.
:::
In this tutorial, we’ll create a sample telegram bot that supports TON Connect 2.0 authentication using Python TON Connect SDK [pytonconnect](https://github.com/XaBbl4/pytonconnect).
diff --git a/docs/v3/documentation/archive/tg-bot-integration.mdx b/docs/v3/documentation/archive/tg-bot-integration.mdx
index 92e9711171..e4018eceb2 100644
--- a/docs/v3/documentation/archive/tg-bot-integration.mdx
+++ b/docs/v3/documentation/archive/tg-bot-integration.mdx
@@ -3,7 +3,7 @@ import Button from '@site/src/components/button'
# TON Connect for Telegram Bots
:::warning deprecated
-This guide explains an outdated method of integrating TON Connect with Telegram bots. For a more secure and modern approach, consider using [Telegram Mini Apps](/develop/dapps/telegram-apps) for a more modern and secure integration.
+This guide explains an outdated method of integrating TON Connect with Telegram bots. For a more secure and modern approach, consider using [Telegram Mini Apps](/v3/guidelines/dapps/tma/overview for a more modern and secure integration.
:::
In this tutorial, we will develop a sample Telegram bot using the JavaScript TON Connect SDK, supporting TON Connect 2.0 authentication.
diff --git a/docs/v3/documentation/dapps/assets/overview.md b/docs/v3/documentation/dapps/assets/overview.md
index 210c631c92..558d57a63a 100644
--- a/docs/v3/documentation/dapps/assets/overview.md
+++ b/docs/v3/documentation/dapps/assets/overview.md
@@ -48,7 +48,7 @@ TON has three types of digital assets.
- Native token, which is special kind of assets that can be attached to any message on the network. But these asset is currently not in use since the functionality for issuing new native tokens is closed.
## Interaction with TON blockchain
-Basic operations on TON Blockchain can be carried out via TonLib. It is a shared library which can be compiled along with a TON node and expose APIs for interaction with the blockchain via so-called lite servers (servers for lite clients). TonLib follows a trustless approach by checking proofs for all incoming data; thus, there is no necessity for a trusted data provider. Methods available to TonLib are listed [in the TL scheme](https://github.com/ton-blockchain/ton/blob/master/tl/generate/scheme/tonlib_api.tl#L234). They can be used either as a shared library via [wrappers](/develop/dapps/asset-processing/#repositories).
+Basic operations on TON Blockchain can be carried out via TonLib. It is a shared library which can be compiled along with a TON node and expose APIs for interaction with the blockchain via so-called lite servers (servers for lite clients). TonLib follows a trustless approach by checking proofs for all incoming data; thus, there is no necessity for a trusted data provider. Methods available to TonLib are listed [in the TL scheme](https://github.com/ton-blockchain/ton/blob/master/tl/generate/scheme/tonlib_api.tl#L234). They can be used either as a shared library via [wrappers](/v3/guidelines/dapps/asset-processing/payments-processing/#repositories).
## Read next
diff --git a/docs/v3/documentation/dapps/assets/usdt.md b/docs/v3/documentation/dapps/assets/usdt.md
index fcd0d762bf..ab571b1f10 100644
--- a/docs/v3/documentation/dapps/assets/usdt.md
+++ b/docs/v3/documentation/dapps/assets/usdt.md
@@ -14,7 +14,7 @@ To integrate Tether’s USD₮ Token on TON Blockchain use the contract address:
:::
Assets SDK
-Jetton Processing
+Jetton Processing
TMA USDT payments demo
diff --git a/docs/v3/documentation/dapps/defi/coins.md b/docs/v3/documentation/dapps/defi/coins.md
index f2c5b8a175..5cc3ededce 100644
--- a/docs/v3/documentation/dapps/defi/coins.md
+++ b/docs/v3/documentation/dapps/defi/coins.md
@@ -6,7 +6,7 @@ Transaction fees, gas payments (i.e., smart contract message processing fees), a
Toncoin is used to make the deposits required to become a blockchain validator.
-The process of making Toncoin payments is described in the [corresponding section](/develop/dapps/asset-processing).
+The process of making Toncoin payments is described in the [corresponding section](/v3/guidelines/dapps/asset-processing/payments-processing).
You can find out where to buy or exchange Toncoin on the [website](https://ton.org/coin).
@@ -26,4 +26,4 @@ Thus, extra currencies are best used for well-known decentralized currencies (fo
[Jettons](/v3/documentation/dapps/defi/tokens#jettons) are suitable for other tasks.
-At the moment, no extra currency has been created on TON Blockchain. TON Blockchain has full support for extra currencies by accounts and messages, but the minter system contract for their creation has not yet been created.
\ No newline at end of file
+At the moment, no extra currency has been created on TON Blockchain. TON Blockchain has full support for extra currencies by accounts and messages, but the minter system contract for their creation has not yet been created.
diff --git a/docs/v3/documentation/dapps/defi/tokens.mdx b/docs/v3/documentation/dapps/defi/tokens.mdx
index c3506e12e6..117320f0ea 100644
--- a/docs/v3/documentation/dapps/defi/tokens.mdx
+++ b/docs/v3/documentation/dapps/defi/tokens.mdx
@@ -68,8 +68,8 @@ Check out the [TON Speed Run](https://tonspeedrun.com/) series, which includes N
## Jettons (Fungible Tokens)
### Guides
-* [TON Jetton processing](/v3/guidelines/dapps/asset-processing/jettons.md)
-* [TON Metadata Parsing](/v3/guidelines/dapps/asset-processing/nft-processing/metadata-parsing.md)
+* [TON Jetton processing](/v3/guidelines/dapps/asset-processing/jettons)
+* [TON Metadata Parsing](/v3/guidelines/dapps/asset-processing/nft-processing/metadata-parsing)
### Standards
diff --git a/docs/v3/documentation/dapps/defi/ton-payments.md b/docs/v3/documentation/dapps/defi/ton-payments.md
index 3df678bcf6..a6304c39be 100644
--- a/docs/v3/documentation/dapps/defi/ton-payments.md
+++ b/docs/v3/documentation/dapps/defi/ton-payments.md
@@ -36,5 +36,5 @@ Find examples of using payment channels in the [Hack-a-TON #1](https://ton.org/h
## See Also
-* [Payments Processing](/develop/dapps/asset-processing)
+* [Payments Processing](/v3/guidelines/dapps/asset-processing/payments-processing)
* [TON Connect](/v3/guidelines/ton-connect/overview)
diff --git a/docs/v3/documentation/dapps/oracles/red_stone.mdx b/docs/v3/documentation/dapps/oracles/red_stone.mdx
index b5396243f1..e0c03e2d34 100644
--- a/docs/v3/documentation/dapps/oracles/red_stone.mdx
+++ b/docs/v3/documentation/dapps/oracles/red_stone.mdx
@@ -19,7 +19,7 @@ To learn more about RedStone oracles design go to the [RedStone docs](https://do
### price_manager.fc
- Sample oracle contract that consumes RedStone oracles data [price_manager.fc](https://github.com/redstone-finance/redstone-oracles-monorepo/blob/main/packages/ton-connector/contracts/price_manager.fc) written in
- FunC. It requires [TVM Upgrade 2023.07](https://docs.ton.org/v3/documentation/tvm/changelog/tvm-upgrade-2023-07).
+ FunC. It requires [TVM Upgrade 2023.07](v3/documentation/tvm/changelog/tvm-upgrade-2023-07).
#### initial data
diff --git a/docs/v3/documentation/data-formats/tlb/msg-tlb.mdx b/docs/v3/documentation/data-formats/tlb/msg-tlb.mdx
index c8354b567c..b3a88cf010 100644
--- a/docs/v3/documentation/data-formats/tlb/msg-tlb.mdx
+++ b/docs/v3/documentation/data-formats/tlb/msg-tlb.mdx
@@ -211,9 +211,7 @@ _ split_depth:(Maybe (## 5)) special:(Maybe TickTock)
| library | HashmapE 256 SimpleLib* | Optional | Currently used StateInit without libs |
-[General detailed explanations for Hashmaps](../data-formats/tl-b#hashmap)
-
-
+[General detailed explanations for Hashmaps](/v3/documentation/data-formats/tlb/tl-b-types#hashmap)
## MsgAddressExt TL-B
diff --git a/docs/v3/documentation/data-formats/tlb/proofs.mdx b/docs/v3/documentation/data-formats/tlb/proofs.mdx
index f4656df586..01d4bdf8a9 100644
--- a/docs/v3/documentation/data-formats/tlb/proofs.mdx
+++ b/docs/v3/documentation/data-formats/tlb/proofs.mdx
@@ -5,13 +5,13 @@ import ThemedImage from '@theme/ThemedImage';
## Overview
:::caution
This section describes instructions and manuals for interacting with TON at a low level.
-it is assumed that you have already become familiar with [exotic cells](/v3/documentation/data-formats/tlb/exotic-cells), [TL-B language](/v3/documentation/data-formats/tl-b-language) and
+it is assumed that you have already become familiar with [exotic cells](/v3/documentation/data-formats/tlb/exotic-cells), [TL-B language](/v3/documentation/data-formats/tlb/tl-b-language) and
understand the [simple proof verifying](/v3/documentation/data-formats/tlb/exotic-cells#simple-proof-verifying-example) example.
:::
-This article describes advanced examples of verifying proofs from Liteservers.
+This article describes advanced examples of verifying proofs from Liteservers.
-It's important to check any data you receive from a node for trustless interaction with the blockchain.
+It's important to check any data you receive from a node for trustless interaction with the blockchain.
However, the article covers only part of trustless communication with Liteserver,
because its assumed that you verified the Block hash you received from a Liteserver (or from anyone else).
Block hash verifying is more advanced, because you need to sync key blocks and (or) check block signatures,
@@ -21,7 +21,7 @@ you're decreasing probability that Liteserver will send you the wrong data that
## Block Header
-Let's say we know a Block ID:
+Let's say we know a Block ID:
```json
```
@@ -279,8 +279,6 @@ Now, let's deserialize the second Cell:
Since we trust this Cell we can trust the Shard Block data (`ShardStateUnsplit` -> `custom` -> `shard_hashes` -> `0 (shrdblk wc)` -> `leaf`).
-_Checking Proof Examples:_ [Python](https://github.com/yungwine/pytoniq/blob/master/pytoniq/proof/check_proof.py#L43), [C++](https://github.com/ton-blockchain/ton/blob/24dc184a2ea67f9c47042b4104bbb4d82289fac1/crypto/block/check-proof.cpp#L104)
-
## Account State
Let's prove state of account `EQBvW8Z5huBkMJYdnfAEM5JqTNkuWX3diqYENkWsIL0XggGG` for the same Masterchain block we started with in the article beginning.
@@ -564,8 +562,6 @@ And deserialize it according to the [Account](https://github.com/ton-blockchain/
Now we can trust this account state data.
-_Checking Proof Examples:_ [Python](https://github.com/yungwine/pytoniq/blob/master/pytoniq/proof/check_proof.py#L87), [Kotlin](https://github.com/andreypfau/ton-kotlin/blob/b1edc4b134e89ccf252149f27c85fd530377cebe/ton-kotlin-liteclient/src/commonMain/kotlin/CheckProofUtils.kt#L37), [C++](https://github.com/ton-blockchain/ton/blob/24dc184a2ea67f9c47042b4104bbb4d82289fac1/crypto/block/check-proof.cpp#L161)
-
## Account transactions
For [liteServer.getTransactions](https://github.com/ton-blockchain/ton/blob/24dc184a2ea67f9c47042b4104bbb4d82289fac1/tl/generate/scheme/lite_api.tl#L71) request we must provide `lt` and `hash` of the transaction to start from.
diff --git a/docs/v3/documentation/data-formats/tlb/tl-b-language.mdx b/docs/v3/documentation/data-formats/tlb/tl-b-language.mdx
index 72ae7b2d56..b22181552b 100644
--- a/docs/v3/documentation/data-formats/tlb/tl-b-language.mdx
+++ b/docs/v3/documentation/data-formats/tlb/tl-b-language.mdx
@@ -5,7 +5,7 @@ import ThemedImage from '@theme/ThemedImage';
TL-B (Type Language - Binary) serves to describe the type system, constructors and existing functions. For example, we
can use TL-B schemes to build binary structures associated with TON Blockchain. Special TL-B parsers can read schemes to
deserialize binary data into different objects. TL-B describes data schemes for `Cell` objects. If you not familiar
-with `Cells`, please read [Cell & Bag of Cells(BOC)](https://docs.ton.org/v3/documentation/data-formats/tlb/cell-boc#cell) article.
+with `Cells`, please read [Cell & Bag of Cells(BOC)](v3/documentation/data-formats/tlb/cell-boc#cell) article.
## Overview
@@ -516,7 +516,7 @@ unary_succ$1 {n:#} x:(Unary ~n) = Unary ~(n + 1);
_ u:(Unary Any) = UnaryChain;
```
-This is example has good explanation in [TL-B Types](https://docs.ton.org/v3/documentation/data-formats/tlb/tl-b-types#unary)
+This is example has good explanation in [TL-B Types](v3/documentation/data-formats/tlb/tl-b-types#unary)
article. The main idea here is that `UnaryChain` will recursively deserialize until reach of `unary_zero$0` (because we
know last element of `Unary X` type by definition `unary_zero$0 = Unary ~0;` and `X` is calculated in runtime
due `Unary ~(n + 1)` definition).
diff --git a/docs/v3/documentation/data-formats/tlb/tlb-tools.md b/docs/v3/documentation/data-formats/tlb/tlb-tools.md
index 5a7a7033e8..600273b54f 100644
--- a/docs/v3/documentation/data-formats/tlb/tlb-tools.md
+++ b/docs/v3/documentation/data-formats/tlb/tlb-tools.md
@@ -7,7 +7,7 @@ implements TL-B types as an object, and returns serialized binary data.
| Language | SDK | Social |
|------------|----------------------------------------------------------------------------------------------------------|------------------------|
-| Kotlin | [ton-kotlin](https://github.com/andreypfau/ton-kotlin/tree/main/ton-kotlin-tlb) (+ parsing `.tlb` files) | https://t.me/tonkotlin |
+| Kotlin | [ton-kotlin](https://github.com/ton-community/ton-kotlin/tree/main/tlb) (+ parsing `.tlb` files) | https://t.me/tonkotlin |
| Go | [tonutils](https://github.com/xssnick/tonutils-go/tree/master/tlb) | https://t.me/tonutils |
| Go | [tongo](https://github.com/tonkeeper/tongo/tree/master/tlb) (+ parsing `.tlb` files) | https://t.me/tongo_lib |
| TypeScript | [tlb-parser](https://github.com/ton-community/tlb-parser) | - |
diff --git a/docs/v3/documentation/data-formats/tlb/transaction-layout.md b/docs/v3/documentation/data-formats/tlb/transaction-layout.md
index 1fed783a14..04eb6bfe12 100644
--- a/docs/v3/documentation/data-formats/tlb/transaction-layout.md
+++ b/docs/v3/documentation/data-formats/tlb/transaction-layout.md
@@ -22,8 +22,8 @@ transaction$0111 account_addr:bits256 lt:uint64
| Field | Type | Required | Description |
| ----------------- | ---------------------------------------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `account_addr` | bits256 | Yes | The hash part of the address on which the transaction was executed. [More about addresses](https://docs.ton.org/v3/documentation/smart-contracts/addresses#address-of-smart-contract) |
-| `lt` | uint64 | Yes | Represents _Logical time_. [More about logical time](https://docs.ton.org/v3/documentation/smart-contracts/message-management/messages-and-transactions#what-is-a-logical-time) |
+| `account_addr` | bits256 | Yes | The hash part of the address on which the transaction was executed. [More about addresses](v3/documentation/smart-contracts/addresses#address-of-smart-contract) |
+| `lt` | uint64 | Yes | Represents _Logical time_. [More about logical time](v3/documentation/smart-contracts/message-management/messages-and-transactions#what-is-a-logical-time) |
| `prev_trans_hash` | bits256 | Yes | The hash of the previous transaction on this account. |
| `prev_trans_lt` | uint64 | Yes | The `lt` of the previous transaction on this account. |
| `now` | uint32 | Yes | The `now` value that was set when executing this transaction. It's a Unix timestamp in seconds. |
@@ -32,7 +32,7 @@ transaction$0111 account_addr:bits256 lt:uint64
| `end_status` | [AccountStatus](#accountstatus) | Yes | The status of this account after executing the transaction. |
| `in_msg` | (Message Any) | No | The incoming message that triggered the execution of the transaction. Stored in a reference. |
| `out_msgs` | HashmapE 15 ^(Message Any) | Yes | The dictionary that contains the list of outgoing messages that were created while executing this transaction. |
-| `total_fees` | [CurrencyCollection](/v3/documentation/data-formats/tlb/msg-tlb#currencycollection) | Yes | The total amount of fees that were collected while executing this transaction. It consists of a _Toncoin_ value and possibly some [Extra-currencies](https://docs.ton.org/v3/documentation/dapps/defi/coins#extra-currencies). |
+| `total_fees` | [CurrencyCollection](/v3/documentation/data-formats/tlb/msg-tlb#currencycollection) | Yes | The total amount of fees that were collected while executing this transaction. It consists of a _Toncoin_ value and possibly some [Extra-currencies](v3/documentation/dapps/defi/coins#extra-currencies). |
| `state_update` | [HASH_UPDATE](#hash_update) Account | Yes | The `HASH_UPDATE` structure. Stored in a reference. |
| `description` | [TransactionDescr](#transactiondescr-types) | Yes | A detailed description of the transaction execution process. Stored in a reference. |
@@ -89,12 +89,12 @@ trans_ord$0000 credit_first:Bool
| Field | Type | Required | Description |
| -------------- | -------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `credit_first` | Bool | Yes | A flag that correlates with `bounce` flag of an incoming message. `credit_first = !bounce` |
-| `storage_ph` | TrStoragePhase | No | Contains information about storage phase of a transaction execution. [More Info](https://docs.ton.org/v3/documentation/tvm/tvm-overview#transactions-and-phases) |
-| `credit_ph` | TrCreditPhase | No | Contains information about credit phase of a transaction execution. [More Info](https://docs.ton.org/v3/documentation/tvm/tvm-overview#transactions-and-phases) |
-| `compute_ph` | TrComputePhase | Yes | Contains information about compute phase of a transaction execution. [More Info](https://docs.ton.org/v3/documentation/tvm/tvm-overview#transactions-and-phases) |
-| `action` | TrActionPhase | No | Contains information about action phase of a transaction execution. [More Info](https://docs.ton.org/v3/documentation/tvm/tvm-overview#transactions-and-phases). Stored in a reference. |
+| `storage_ph` | TrStoragePhase | No | Contains information about storage phase of a transaction execution. [More Info](v3/documentation/tvm/tvm-overview#transactions-and-phases) |
+| `credit_ph` | TrCreditPhase | No | Contains information about credit phase of a transaction execution. [More Info](v3/documentation/tvm/tvm-overview#transactions-and-phases) |
+| `compute_ph` | TrComputePhase | Yes | Contains information about compute phase of a transaction execution. [More Info](v3/documentation/tvm/tvm-overview#transactions-and-phases) |
+| `action` | TrActionPhase | No | Contains information about action phase of a transaction execution. [More Info](v3/documentation/tvm/tvm-overview#transactions-and-phases). Stored in a reference. |
| `aborted` | Bool | Yes | Indicates whether the transaction execution was aborted. |
-| `bounce` | TrBouncePhase | No | Contains information about bounce phase of a transaction execution. [More Info](https://docs.ton.org/v3/guidelines/smart-contracts/guidelines/non-bouncable-messages) |
+| `bounce` | TrBouncePhase | No | Contains information about bounce phase of a transaction execution. [More Info](v3/documentation/smart-contracts/message-management/non-bounceable-messages) |
| `destroyed` | Bool | Yes | Indicates whether the account was destroyed during the execution. |
## Storage
@@ -108,7 +108,7 @@ trans_storage$0001 storage_ph:TrStoragePhase
| Field | Type | Description |
| ------------ | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| `storage_ph` | TrStoragePhase | Contains information about storage phase of a transaction execution. [More Info](https://docs.ton.org/v3/documentation/tvm/tvm-overview#transactions-and-phases) |
+| `storage_ph` | TrStoragePhase | Contains information about storage phase of a transaction execution. [More Info](v3/documentation/tvm/tvm-overview#transactions-and-phases) |
## Tick-tock
@@ -123,9 +123,9 @@ trans_tick_tock$001 is_tock:Bool storage_ph:TrStoragePhase
| Field | Type | Required | Description |
| ------------ | -------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `is_tock` | Bool | Yes | A flag indicating the type of transaction. Used to separate `Tick` and `Tock` transactions |
-| `storage_ph` | TrStoragePhase | Yes | Contains information about storage phase of a transaction execution. [More Info](https://docs.ton.org/v3/documentation/tvm/tvm-overview#transactions-and-phases) |
-| `compute_ph` | TrComputePhase | Yes | Contains information about compute phase of a transaction execution. [More Info](https://docs.ton.org/v3/documentation/tvm/tvm-overview#transactions-and-phases) |
-| `action` | TrActionPhase | No | Contains information about action phase of a transaction execution. [More Info](https://docs.ton.org/v3/documentation/tvm/tvm-overview#transactions-and-phases). Stored in a reference. |
+| `storage_ph` | TrStoragePhase | Yes | Contains information about storage phase of a transaction execution. [More Info](v3/documentation/tvm/tvm-overview#transactions-and-phases) |
+| `compute_ph` | TrComputePhase | Yes | Contains information about compute phase of a transaction execution. [More Info](v3/documentation/tvm/tvm-overview#transactions-and-phases) |
+| `action` | TrActionPhase | No | Contains information about action phase of a transaction execution. [More Info](v3/documentation/tvm/tvm-overview#transactions-and-phases). Stored in a reference. |
| `aborted` | Bool | Yes | Indicates whether the transaction execution was aborted. |
| `destroyed` | Bool | Yes | Indicates whether the account was destroyed during the execution. |
@@ -150,9 +150,9 @@ trans_split_prepare$0100 split_info:SplitMergeInfo
| Field | Type | Required | Description |
| ------------ | -------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `split_info` | SplitMergeInfo | Yes | Information about split process. |
-| `storage_ph` | TrStoragePhase | No | Contains information about storage phase of a transaction execution. [More Info](https://docs.ton.org/v3/documentation/tvm/tvm-overview#transactions-and-phases) |
-| `compute_ph` | TrComputePhase | Yes | Contains information about compute phase of a transaction execution. [More Info](https://docs.ton.org/v3/documentation/tvm/tvm-overview#transactions-and-phases) |
-| `action` | TrActionPhase | No | Contains information about action phase of a transaction execution. [More Info](https://docs.ton.org/v3/documentation/tvm/tvm-overview#transactions-and-phases). Stored in a reference. |
+| `storage_ph` | TrStoragePhase | No | Contains information about storage phase of a transaction execution. [More Info](v3/documentation/tvm/tvm-overview#transactions-and-phases) |
+| `compute_ph` | TrComputePhase | Yes | Contains information about compute phase of a transaction execution. [More Info](v3/documentation/tvm/tvm-overview#transactions-and-phases) |
+| `action` | TrActionPhase | No | Contains information about action phase of a transaction execution. [More Info](v3/documentation/tvm/tvm-overview#transactions-and-phases). Stored in a reference. |
| `aborted` | Bool | Yes | Indicates whether the transaction execution was aborted. |
| `destroyed` | Bool | Yes | Indicates whether the account was destroyed during the execution. |
@@ -195,7 +195,7 @@ trans_merge_prepare$0110 split_info:SplitMergeInfo
| Field | Type | Description |
| ------------ | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `split_info` | SplitMergeInfo | Information about merge process. |
-| `storage_ph` | TrStoragePhase | Contains information about storage phase of a transaction execution. [More Info](https://docs.ton.org/v3/documentation/tvm/tvm-overview#transactions-and-phases) |
+| `storage_ph` | TrStoragePhase | Contains information about storage phase of a transaction execution. [More Info](v3/documentation/tvm/tvm-overview#transactions-and-phases) |
| `aborted` | Bool | Indicates whether the transaction execution was aborted. |
## Merge install
@@ -220,13 +220,13 @@ trans_merge_install$0111 split_info:SplitMergeInfo
| --------------------- | --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `split_info` | SplitMergeInfo | Yes | Information about merge process. |
| `prepare_transaction` | [Transaction](#transaction) | Yes | Information about the [transaction prepared](#merge-prepare) for the merge operation. Stored in a reference. |
-| `storage_ph` | TrStoragePhase | No | Contains information about storage phase of a transaction execution. [More Info](https://docs.ton.org/v3/documentation/tvm/tvm-overview#transactions-and-phases) |
-| `credit_ph` | TrCreditPhase | No | Contains information about credit phase of a transaction execution. [More Info](https://docs.ton.org/v3/documentation/tvm/tvm-overview#transactions-and-phases) |
-| `compute_ph` | TrComputePhase | Yes | Contains information about compute phase of a transaction execution. [More Info](https://docs.ton.org/v3/documentation/tvm/tvm-overview#transactions-and-phases) |
-| `action` | TrActionPhase | No | Contains information about action phase of a transaction execution. [More Info](https://docs.ton.org/v3/documentation/tvm/tvm-overview#transactions-and-phases). Stored in a reference. |
+| `storage_ph` | TrStoragePhase | No | Contains information about storage phase of a transaction execution. [More Info](v3/documentation/tvm/tvm-overview#transactions-and-phases) |
+| `credit_ph` | TrCreditPhase | No | Contains information about credit phase of a transaction execution. [More Info](v3/documentation/tvm/tvm-overview#transactions-and-phases) |
+| `compute_ph` | TrComputePhase | Yes | Contains information about compute phase of a transaction execution. [More Info](v3/documentation/tvm/tvm-overview#transactions-and-phases) |
+| `action` | TrActionPhase | No | Contains information about action phase of a transaction execution. [More Info](v3/documentation/tvm/tvm-overview#transactions-and-phases). Stored in a reference. |
| `aborted` | Bool | Yes | Indicates whether the transaction execution was aborted. |
| `destroyed` | Bool | Yes | Indicates whether the account was destroyed during the execution. |
## See also
-- Original description of [Transaction layout](https://ton.org/docs/tblkch.pdf#page=75&zoom=100,148,290) from whitepaper
+- Original description of [Transaction layout](/tblkch.pdf#page=75&zoom=100,148,290) from whitepaper
diff --git a/docs/v3/documentation/faq.md b/docs/v3/documentation/faq.md
index 88dc787c49..4a60218a7a 100644
--- a/docs/v3/documentation/faq.md
+++ b/docs/v3/documentation/faq.md
@@ -56,7 +56,7 @@ Additionally, here are three high-level third-party block explorers:
- https://toncenter.com/
- https://tonwhales.com/explorer
-Read more in the [Explorers in TON](/v3/concepts/dive-into-ton/ton-blockchain/explorers-in-ton) section of our documentation.
+Read more in the [Explorers in TON](/v3/concepts/dive-into-ton/ton-ecosystem/explorers-in-ton) section of our documentation.
### Block time
@@ -169,7 +169,7 @@ On TON, all data is transmitted as boc-messages. This means that using NFTs in t
However, certain indexed APIs allow you to view all messages sent to or from a contract, and filter them based on your specific requirements.
-- https://tonapi.io/swagger-ui
+- https://docs.tonconsole.com/tonapi/rest-api
To better understand how this process works, please refer [Payments Processing](/v3/guidelines/dapps/asset-processing/payments-processing) section.
@@ -217,8 +217,8 @@ Smart contract can exist in uninitialized state, meaning that its state is not a
To protect message chains from being halted at non-existing contracts TON use "bounce" feature. Read more in these articles:
-- [Deploying wallet via TonLib](https://ton.org/docs/develop/dapps/asset-processing/#deploying-wallet)
-- [Paying for processing queries and sending responses](https://ton.org/docs/v3/documentation/smart-contracts/transaction-fees/forward-fees)
+- [Deploying wallet via TonLib](/v3/guidelines/dapps/asset-processing/payments-processing/#deploying-wallet)
+- [Paying for processing queries and sending responses](/v3/documentation/smart-contracts/transaction-fees/forward-fees)
### Does the upgradability of a smart-contract pose a threat to its users?
@@ -245,7 +245,7 @@ If the contract cannot initially execute `set_code()` (via its code or execution
### Can smart contract be deleted?
-Yes, either as a result of storage fee accumulation (contract needs to reach -1 TON balance to be deleted) or by sending a message with [mode 160](https://docs.ton.org/v3/documentation/smart-contracts/message-management/sending-messages#message-modes).
+Yes, either as a result of storage fee accumulation (contract needs to reach -1 TON balance to be deleted) or by sending a message with [mode 160](v3/documentation/smart-contracts/message-management/sending-messages#message-modes).
### Are smart contract addresses case sensitive?
@@ -270,7 +270,7 @@ Yes, smart contract addresses are case sensitive because they are generated usin
### Recommended node providers for data extraction include:
API types:
-- Read more about different [API Types](/develop/dapps/apis/) (Indexed, HTTP, and ADNL)
+- Read more about different [API Types](/v3/guidelines/dapps/apis-sdks/api-types) (Indexed, HTTP, and ADNL)
Node providers partners:
@@ -288,4 +288,4 @@ TON directory with projects from TON Community:
### Provided below are two main resources used to obtain information related to public node endpoints on TON Blockchain (for both TON Mainnet and TON Testnet).
- [Network Configs](/v3/documentation/network/configs/network-configs)
-- [Examples and tutorials](/develop/dapps/#examples)
+- [Examples and tutorials](/v3/guidelines/dapps/overview#tutorials-and-examples)
diff --git a/docs/v3/documentation/infra/crosschain/overview.md b/docs/v3/documentation/infra/crosschain/overview.md
index 2afe8a36ae..474af83ebb 100644
--- a/docs/v3/documentation/infra/crosschain/overview.md
+++ b/docs/v3/documentation/infra/crosschain/overview.md
@@ -46,15 +46,3 @@ TON-Polygon: [#73](https://github.com/ton-blockchain/ton/blob/35d17249e6b54d67a5
### Cross-chain roadmap
* https://t.me/tonblockchain/146
-
-## Tonana Bridge
-
-### How to participate?
-
-:::caution draft
-This is a concept article. We're still looking for someone experienced to write it.
-:::
-
-You can find the front-end here: https://tonana.org/
-
-The source code is here: https://github.com/tonanadao
diff --git a/docs/v3/documentation/infra/nodes/mytonctrl/mytonctrl-overview.mdx b/docs/v3/documentation/infra/nodes/mytonctrl/mytonctrl-overview.mdx
index bd6c5f8c6a..9427e286a5 100644
--- a/docs/v3/documentation/infra/nodes/mytonctrl/mytonctrl-overview.mdx
+++ b/docs/v3/documentation/infra/nodes/mytonctrl/mytonctrl-overview.mdx
@@ -184,7 +184,7 @@ MyTonCtrl> add_custom_overlay
Example:
```bash
-add_custom_overlay custom /config.json # check link from above to know what config this command requires (https://docs.ton.org/v3/guidelines/nodes/custom-overlays)
+add_custom_overlay custom /config.json # check link from above to know what config this command requires (v3/guidelines/nodes/custom-overlays)
```
### list_custom_overlays
@@ -244,7 +244,7 @@ Based on the `validator index` (can be received by `status` command), there are
- **The user is not a validator**:
No penalties apply, but the user is not eligible for rewards either. No `validator efficiency` to check. This can be caused by a low stake or incorrect node configuration. Additionally, ensure that `mytonctrl` is running continuously.
-Read more about `max_validators` and `max_main_validators` [on config parameters page](https://docs.ton.org/v3/documentation/network/configs/blockchain-configs#configuration-parameters-for-the-number-of-validators-for-elections). Get the actual values [for mainnet](https://tonviewer.com/config#16) and [for testnet](https://testnet.tonviewer.com/config#16).
+Read more about `max_validators` and `max_main_validators` [on config parameters page](v3/documentation/network/configs/blockchain-configs#configuration-parameters-for-the-number-of-validators-for-elections). Get the actual values [for mainnet](https://tonviewer.com/config#16) and [for testnet](https://testnet.tonviewer.com/config#16).
## Pool commands
diff --git a/docs/v3/documentation/infra/nodes/node-types.mdx b/docs/v3/documentation/infra/nodes/node-types.mdx
index f9a84baa37..cfae3ca184 100644
--- a/docs/v3/documentation/infra/nodes/node-types.mdx
+++ b/docs/v3/documentation/infra/nodes/node-types.mdx
@@ -22,12 +22,12 @@ Full nodes _prune_ the state of the TON blockchain kept by them - that means, ea
To allow client applications to look for blocks and transactions, as well as to send new transactions into the TON blockchain, full nodes are equipped with the liteserver functionality: see [Interacting with TON nodes](#interacting-with-ton-nodes) below.
-
+
Running a Full Node
-
+
@@ -89,7 +89,7 @@ To interact with Liteservers, you can use following tools:
- TON [ADNL API](/v3/guidelines/dapps/apis-sdks/ton-adnl-apis) as the most low-level way to communicate with the blockchain;
- TON [SDKs](/v3/guidelines/dapps/apis-sdks/sdk) provided for various programming languages;
-- TON [HTTP-based APIs](/develop/dapps/toncenter) providing the REST API middleware between your application and a Liteserver.
+- TON [HTTP-based APIs](/v3/concepts/dive-into-ton/ton-ecosystem/explorers-in-ton) providing the REST API middleware between your application and a Liteserver.
diff --git a/docs/v3/documentation/network/configs/config-params.md b/docs/v3/documentation/network/configs/config-params.md
index 73dad0f1d9..93eb82b8b7 100644
--- a/docs/v3/documentation/network/configs/config-params.md
+++ b/docs/v3/documentation/network/configs/config-params.md
@@ -2,7 +2,7 @@
The aim of this document is to provide a basic explanation of configuration parameters of TON Blockchain, and to give step-by-step instructions for changing these parameters by a consensus of a majority of validators.
-We assume that the reader is already familiar with [Fift](/v3/documentation/smart-contracts/fift/overview) and the [Lite Client](/participate/nodes/lite-client), as explained in [FullNode-HOWTO (low-level)](/participate/nodes/full-node), and [Validator-HOWTO (low-level)](/participate/nodes/validator) in the sections where validators' voting for the configuration proposals is described.
+We assume that the reader is already familiar with [Fift](/v3/documentation/smart-contracts/fift/overview) and the [Lite Client](/v3/guidelines/nodes/running-nodes/liteserver-node), as explained in [FullNode-HOWTO (low-level)](/docs/v3/guidelines/nodes/running-nodes/full-node), and [Validator-HOWTO (low-level)](/v3/guidelines/nodes/running-nodes/validator-node) in the sections where validators' voting for the configuration proposals is described.
## 1. Configuration parameters
The **configuration parameters** are certain values that affect the behavior of validators and/or fundamental smart contracts of TON Blockchain. The current values of all configuration parameters are stored as a special part of the masterchain state and are extracted from the current masterchain state when needed. Therefore, it makes sense to speak of the values of the configuration parameters with respect to a certain masterchain block. Each shardchain block contains a reference to the latest known masterchain block; the values from the corresponding masterchain state are assumed to be active for this shardchain block and are used during its generation and validation. For masterchain blocks, the state of the previous masterchain block is used to extract the active configuration parameters. Therefore, even if one tries to change some configuration parameters inside a masterchain block, the changes will become active only for the next masterchain block.
@@ -274,8 +274,8 @@ Voting for a configuration proposal is possible only for current validators, lis
Vm90RQAAjvFgMYDa1bWZ-oVIBpkaeqnygNvbgdZ84b7f-dZhKKE=
Saved to file validator-to-sign.req
```
-- After that, the vote request has to be signed by the current validator's private key, using `sign 566F744...28A1` in `validator-engine-console` connected to the validator. This process is similar to that described in [Validator-HOWTO](/participate/nodes/validator) for participating in validator elections, but this time the currently active key has to be used.
-- Next, another script `config-proposal-signed.fif` has to be invoked. It has similar arguments to `config-proposal-req.fif`, but it expects two extra arguments: the base64 representation of the public key used to sign the vote request, and the base64 representation of the signature itself. Again, this is quite similar to the process described in [Validator-HOWTO](/participate/nodes/validator).
+- After that, the vote request has to be signed by the current validator's private key, using `sign 566F744...28A1` in `validator-engine-console` connected to the validator. This process is similar to that described in [Validator-HOWTO](/v3/guidelines/nodes/running-nodes/validator-node) for participating in validator elections, but this time the currently active key has to be used.
+- Next, another script `config-proposal-signed.fif` has to be invoked. It has similar arguments to `config-proposal-req.fif`, but it expects two extra arguments: the base64 representation of the public key used to sign the vote request, and the base64 representation of the signature itself. Again, this is quite similar to the process described in [Validator-HOWTO](/v3/guidelines/nodes/running-nodes/validator-node).
- In this way, the file `vote-msg-body.boc` containing the body of an internal message carrying a signed vote for this configuration proposal is created.
- After that, `vote-msg-body.boc` has to be carried in an internal message from any smart contract residing in the masterchain (typically, the controlling smart contract of the validator will be used) along with a small amount of Toncoin for processing (typically, 1.5 Toncoin should suffice). This is again completely similar to the procedure employed during validator elections. This is typically achieved by means of running:
```
@@ -298,7 +298,7 @@ This time, the list of indices of validators that voted for this configuration p
## 5. An automated way for voting on configuration proposals
-Similarly to the automation provided by command `createelectionbid` of `validator-engine-console` for participating in validator elections, `validator-engine` and `validator-engine-console` offer an automated way of performing most of the steps explained in the previous section, producing a `vote-msg-body.boc` ready to be used with the controlling wallet. In order to use this method, you must install the Fift scripts `config-proposal-vote-req.fif` and `config-proposal-vote-signed.fif` into the same directory that the validator-engine uses to look up `validator-elect-req.fif` and `validator-elect-signed.fif` as explained in Section 5 of [Validator-HOWTO](/participate/nodes/validator). After that, you simply run
+Similarly to the automation provided by command `createelectionbid` of `validator-engine-console` for participating in validator elections, `validator-engine` and `validator-engine-console` offer an automated way of performing most of the steps explained in the previous section, producing a `vote-msg-body.boc` ready to be used with the controlling wallet. In order to use this method, you must install the Fift scripts `config-proposal-vote-req.fif` and `config-proposal-vote-signed.fif` into the same directory that the validator-engine uses to look up `validator-elect-req.fif` and `validator-elect-signed.fif` as explained in Section 5 of [Validator-HOWTO](/v3/guidelines/nodes/running-nodes/validator-node). After that, you simply run
```
createproposalvote 64654898543692093106630260209820256598623953458404398631153796624848083036321 vote-msg-body.boc
```
diff --git a/docs/v3/documentation/network/configs/network-configs.md b/docs/v3/documentation/network/configs/network-configs.md
index 7fde8292f9..8be0ed1065 100644
--- a/docs/v3/documentation/network/configs/network-configs.md
+++ b/docs/v3/documentation/network/configs/network-configs.md
@@ -7,5 +7,5 @@ On this page you can find active network configs of TON Blockchain:
## See Also
-- [Node Types](https://docs.ton.org/v3/documentation/infra/nodes/node-types)
-- [Blockchain Params Config](/v3/documentation/network/configs/blockchain-configs)
\ No newline at end of file
+- [Node Types](v3/documentation/infra/nodes/node-types)
+- [Blockchain Params Config](/v3/documentation/network/configs/blockchain-configs)
diff --git a/docs/v3/documentation/network/protocols/adnl/adnl-tcp.md b/docs/v3/documentation/network/protocols/adnl/adnl-tcp.md
index 54299dc16f..95590a6dc7 100644
--- a/docs/v3/documentation/network/protocols/adnl/adnl-tcp.md
+++ b/docs/v3/documentation/network/protocols/adnl/adnl-tcp.md
@@ -141,7 +141,7 @@ After decoding the response, we get a packet of the form:
### runSmcMethod
We already know how to get the masterchain block, so now we can call any lite server methods.
-Let's analyze **runSmcMethod** - this is a method that calls a function from a smart contract and returns a result. Here we need to understand some new data types such as [TL-B](/v3/documentation/data-formats/tl-b), [Cell](/v3/documentation/data-formats/tlb/cell-boc#cell) and [BoC](/v3/documentation/data-formats/tlb/cell-boc#bag-of-cells).
+Let's analyze **runSmcMethod** - this is a method that calls a function from a smart contract and returns a result. Here we need to understand some new data types such as [TL-B](/v3/documentation/data-formats/tlb/tl-b-language), [Cell](/v3/documentation/data-formats/tlb/cell-boc#cell) and [BoC](/v3/documentation/data-formats/tlb/cell-boc#bag-of-cells).
To execute the smart contract method, we need to build and send a request using the TL schema:
```tlb
@@ -181,7 +181,7 @@ Method code in FunC:
Fill out our request:
* `mode` = 4, we only need the result -> `04000000`
* `id` = result of execution getMasterchainInfo
-* `account` = workchain 0 (4 bytes `00000000`), and int256 [obtained from our contract address](/v3/documentation/data-formats/tl-b#addresses), i.e. 32 bytes `4bdbfde5322cb2c14d7b83ea2bf0deeff610e63c2a6db7304f1368ac176193ce`
+* `account` = workchain 0 (4 bytes `00000000`), and int256 [obtained from our contract address](/v3/documentation/data-formats/tlb/tl-b-language#addresses), i.e. 32 bytes `4bdbfde5322cb2c14d7b83ea2bf0deeff610e63c2a6db7304f1368ac176193ce`
* `method_id` = [computed](https://github.com/xssnick/tonutils-go/blob/88f83bc3554ca78453dd1a42e9e9ea82554e3dd2/ton/runmethod.go#L16) id from `a2` -> `0a2e010000000000`
* `params:bytes` = Our method does not accept input parameters, so we need to pass it an empty stack (`000000`, cell 3 bytes - stack depth 0) serialized in [BoC](/v3/documentation/data-formats/tlb/cell-boc#bag-of-cells) -> `b5ee9c72010101010005000006000000` -> serialize in bytes and get `10b5ee9c72410101010005000006000000000000` 0x10 - size, 3 bytes in the end - padding.
diff --git a/docs/v3/documentation/network/protocols/adnl/low-level-adnl.md b/docs/v3/documentation/network/protocols/adnl/low-level-adnl.md
index 79f6584acf..892683be19 100644
--- a/docs/v3/documentation/network/protocols/adnl/low-level-adnl.md
+++ b/docs/v3/documentation/network/protocols/adnl/low-level-adnl.md
@@ -10,7 +10,7 @@ Each peer must have at least one identity, it is possible but not necessary to u
|------------|---------------------|
| 0x4813b4c6 | ed255191 |
-_1. To perform x25519, the keypair must be generated in x25519 format. However, the public key is transmitted over the network in ed25519 format, so you have to convert the public key from x25519 to ed25519, examples of such conversions can be found [here](https://github.com/tonstack/adnl-rs/blob/master/src/integrations/dalek.rs#L10) for Rust and [here](https://github.com/andreypfau/curve25519-kotlin/blob/f008dbc2c0ebc3ed6ca5d3251ffb7cf48edc91e2/src/commonMain/kotlin/curve25519/MontgomeryPoint.kt#L39) for Kotlin._
+_1. To perform x25519, the keypair must be generated in x25519 format. However, the public key is transmitted over the network in ed25519 format, so you have to convert the public key from x25519 to ed25519, examples of such conversions can be found [here](https://github.com/andreypfau/curve25519-kotlin/blob/f008dbc2c0ebc3ed6ca5d3251ffb7cf48edc91e2/src/commonMain/kotlin/curve25519/MontgomeryPoint.kt#L39) for Kotlin._
## Client-server protocol (ADNL over TCP)
The client connects to the server using TCP and sends an ADNL handshake packet, which contains a server abstract address, a client public key and encrypted AES-CTR session parameters, which are determined by the client.
@@ -97,4 +97,4 @@ Detailed description can be found in article [ADNL UDP - Internode](/v3/document
- [ADNL implementation in TON](https://github.com/ton-blockchain/ton/tree/master/adnl)
_Thanks to the [hacker-volodya](https://github.com/hacker-volodya) for contributing to the community!_
-_Here a [link to the original article](https://github.com/tonstack/ton-docs/tree/main/ADNL) on GitHub._
\ No newline at end of file
+_Here a [link to the original article](https://github.com/tonstack/ton-docs/tree/main/ADNL) on GitHub._
diff --git a/docs/v3/documentation/network/protocols/rldp.md b/docs/v3/documentation/network/protocols/rldp.md
index fc4b03b231..fd2eda3dfe 100644
--- a/docs/v3/documentation/network/protocols/rldp.md
+++ b/docs/v3/documentation/network/protocols/rldp.md
@@ -82,7 +82,7 @@ The scheme of work is as follows:
## Request the TON Site
To understand how RLDP works, let's look at an example of getting data from the TON site `foundation.ton`.
-Let's say we have already got its ADNL address by calling the Get method of the NFT-DNS contract, [determined the address and port of the RLDP service using DHT](https://github.com/xssnick/ton-deep-doc/blob/46dbf5f820af066ab10c5639a508b4295e5aa0fb/DHT.md), and [connected to it over ADNL UDP](https://github.com/xssnick/ton-deep-doc/blob/46dbf5f820af066ab10c5639a508b4295e5aa0fb/ADNL-UDP-Internal.md).
+Let's say we have already got its ADNL address by calling the Get method of the NFT-DNS contract, [determined the address and port of the RLDP service using DHT](https://github.com/xssnick/ton-deep-doc/blob/master/DHT.md), and [connected to it over ADNL UDP](https://github.com/xssnick/ton-deep-doc/blob/master/ADNL-UDP-Internal.md).
### Send a GET request to `foundation.ton`
To do this, fill in the structure:
diff --git a/docs/v3/documentation/smart-contracts/addresses.md b/docs/v3/documentation/smart-contracts/addresses.md
index b19679096e..1a3340d557 100644
--- a/docs/v3/documentation/smart-contracts/addresses.md
+++ b/docs/v3/documentation/smart-contracts/addresses.md
@@ -149,7 +149,7 @@ In relation to bounceable addresses specifically:
1. The **bounceable=false** flag generally means the receiver is a wallet.
2. The **bounceable=true** flag typically denotes a custom smart contract with its own application logic (for example, a DEX). In this example, non-bounceable messages should not be sent because of security reasons.
-Feel free to read more on this topic in our documentation to gain a better understanding of [non-bounceable messages](/v3/guidelines/smart-contracts/guidelines/non-bouncable-messages).
+Feel free to read more on this topic in our documentation to gain a better understanding of [non-bounceable messages](/v3/documentation/smart-contracts/message-management/non-bounceable-messages).
#### Armored base64 Representations
diff --git a/docs/v3/documentation/smart-contracts/contracts-specs/highload-wallet.md b/docs/v3/documentation/smart-contracts/contracts-specs/highload-wallet.md
index 8eb1a9fc9c..84626e4029 100644
--- a/docs/v3/documentation/smart-contracts/contracts-specs/highload-wallet.md
+++ b/docs/v3/documentation/smart-contracts/contracts-specs/highload-wallet.md
@@ -63,4 +63,4 @@ Also, number of expired queries cleaned in one transaction should be below 100.
You can also read [Highload Wallet Tutorials](/v3/guidelines/smart-contracts/howto/wallet#-high-load-wallet-v3) article.
Wallet source code:
- * [ton/crypto/smartcont/Highload-wallet-v2-code.fc](https://github.com/ton-blockchain/ton/blob/master/crypto/smartcont/Highload-wallet-v2-code.fc)
\ No newline at end of file
+ * [ton/crypto/smartcont/Highload-wallet-v2-code.fc](https://github.com/ton-blockchain/ton/blob/master/crypto/smartcont/new-highload-wallet-v2.fif)
diff --git a/docs/v3/documentation/smart-contracts/contracts-specs/nominator-pool.mdx b/docs/v3/documentation/smart-contracts/contracts-specs/nominator-pool.mdx
index fea2da0814..f945a534f4 100644
--- a/docs/v3/documentation/smart-contracts/contracts-specs/nominator-pool.mdx
+++ b/docs/v3/documentation/smart-contracts/contracts-specs/nominator-pool.mdx
@@ -4,7 +4,7 @@ A smart contract, called a Nominator Pool, provides the ability for one or more
## Limits
-This pool is designed for large amounts of coins.
+This pool is designed for large amounts of coins.
During development, the main criterion was the safety and simplicity of the code.
@@ -115,7 +115,7 @@ In an emergency, for example if a validator goes missing and ceases to perform h
## Voting for network config proposals
-In TON, network configuration changes occur by [voting of validators](https://ton.org/docs/#/smart-contracts/governance?id=proposalvoting-mechanism).
+In TON, network configuration changes occur by [voting of validators](/#/smart-contracts/governance?id=proposalvoting-mechanism).
In the case of a nominator pool, it is make sense to all participants can vote, and the final result would be sent on behalf of the pool.
@@ -143,11 +143,11 @@ Votes are stored in the pool contract for 30 days.
Only the validator and current nominators who have an active stake in the pool can vote.
-## Get-method `get_pool_data`
+## Get-method `get_pool_data`
Returns:
-1. state - uint - current state of nominator pool. 0 - does not participate in validation, 1 - sent a `new_stake` request to participate in the validation round, 2 - received a successful confirmation about participation in the validation round.
+1. state - uint - current state of nominator pool. 0 - does not participate in validation, 1 - sent a `new_stake` request to participate in the validation round, 2 - received a successful confirmation about participation in the validation round.
2. nominators_count - uint - current number of nominators in the pool.
3. stake_amount_sent - nanotons - with such a stake amount, the pool participates in the current round of validation.
4. validator_amount - nanotons - amount of coins owned by the validator.
@@ -158,7 +158,7 @@ Returns:
9. min_nominator_stake - immutable - nanotons - minimum stake for a nominator in this pool.
10. nominators - Cell - raw dictionary with nominators.
11. withdraw_requests - Cell - raw dictionary with withdrawal requests from nominators.
-12. stake_at - uint - ID of the validation round in which we are/are going to participate. Supposed start of next validation round (`utime_since`).
+12. stake_at - uint - ID of the validation round in which we are/are going to participate. Supposed start of next validation round (`utime_since`).
13. saved_validator_set_hash - uint - technical information.
14. validator_set_changes_count - uint - technical information.
15. validator_set_change_time - uint - technical information.
@@ -204,7 +204,7 @@ It takes as an argument the hash of the proposal and returns list of voters:
Each entry contains:
-1. address - voter's address. To get the nominator address do `"0:" + dec_to_hex(address)`, if `address = validator_address` do `"-1:" + dec_to_hex(address)`.
+1. address - voter's address. To get the nominator address do `"0:" + dec_to_hex(address)`, if `address = validator_address` do `"-1:" + dec_to_hex(address)`.
2. support - int - if `-1` then it is a "vote for", otherwise it is a "vote against".
3. vote_time - uint - unixtime when he voted.
diff --git a/docs/v3/documentation/smart-contracts/contracts-specs/single-nominator-pool.md b/docs/v3/documentation/smart-contracts/contracts-specs/single-nominator-pool.md
index aea9edf195..18e64ef7d2 100644
--- a/docs/v3/documentation/smart-contracts/contracts-specs/single-nominator-pool.md
+++ b/docs/v3/documentation/smart-contracts/contracts-specs/single-nominator-pool.md
@@ -3,7 +3,7 @@ import TabItem from '@theme/TabItem';
# Single Nominator Pool
-[Single Nominator](https://github.com/orbs-network/single-nominator) is a simple firewall TON smart contract that enables secure validation for TON blockchain via cold wallet. The contract is designed for TON validators that have enough self stake to validate by themselves without relying on third-party nominators stakes. The contract provides an alternative simplified implementation for the [Nominator Pool](/v3/documentation/smart-contracts/contracts-specs/nominator-pool.mdx) smart contract that supports a Single Nominator only. The benefit of this implementation is that it's more secure since the attack surface is considerably smaller. This is due to massive reduction in complexity of Nominator Pool that has to support multiple third-party nominators.
+[Single Nominator](https://github.com/orbs-network/single-nominator) is a simple firewall TON smart contract that enables secure validation for TON blockchain via cold wallet. The contract is designed for TON validators that have enough self stake to validate by themselves without relying on third-party nominators stakes. The contract provides an alternative simplified implementation for the [Nominator Pool](/v3/documentation/smart-contracts/contracts-specs/nominator-pool) smart contract that supports a Single Nominator only. The benefit of this implementation is that it's more secure since the attack surface is considerably smaller. This is due to massive reduction in complexity of Nominator Pool that has to support multiple third-party nominators.
## The go-to solution for validators
@@ -123,7 +123,7 @@ Command line: `ts-node scripts/ts/withdraw-deeplink.ts single-nominator-addr wit
* withdraw-amount is the amount to withdraw. The nominator contract will leave 1 TON in the contract so the actual amount that will be sent to the owner address will be the minimum between the requested amount and the contract balance - 1.
The owner should run the deeplink from a phone with the tonkeeper wallet.
-In case the owner is using a **cold wallet** (recommended), [withdraw.fif](https://github.com/orbs-network/single-nominator/blob/main/scripts/fif/withdraw.fif) can be used to generate a boc body which includes withdraw opcode and the amount to withdraw.
+In case the owner is using a **cold wallet** (recommended), [withdraw.fif](https://github.com/orbs-network/single-nominator/blob/main/scripts/fift/withdraw.fif) can be used to generate a boc body which includes withdraw opcode and the amount to withdraw.
Command line: `fift -s scripts/fif/withdraw.fif withdraw-amount` where withdraw-amount is the amount to withdraw from the nominator contract to the owner's wallet. As described above the nominator contract will leave at least 1 TON in the contract.
This script will generate a boc body (named withdraw.boc) that should be signed and send from the owner's wallet.
From the black computer the owner should run:
@@ -139,7 +139,7 @@ Command line: `ts-node scripts/ts/change-validator-deeplink.ts single-nominator-
* new-validator-address (defaults to ZERO address) is the address of the new validator. If you want to immediately disable the validator and only later set a new validator it might be convenient to set the validator address to the ZERO address.
The owner should run the deeplink from a phone with tonkeeper wallet.
-In case the owner is using a **cold wallet** (recommended), [change-validator.fif](https://github.com/orbs-network/single-nominator/blob/main/scripts/fif/change-validator.fif) can be used to generate a boc body which includes change-validator opcode and the new validator address.
+In case the owner is using a **cold wallet** (recommended), [change-validator.fif](https://github.com/orbs-network/single-nominator/blob/main/scripts/fift/change-validator.fif) can be used to generate a boc body which includes change-validator opcode and the new validator address.
Command line: `fift -s scripts/fif/change-validator.fif new-validator-address`.
This script will generate a boc body (named change-validator.boc) that should be signed and send from the owner's wallet.
From the black computer the owner should run:
@@ -160,7 +160,7 @@ The message body should include: opcode=0x9903 (32 bits), query_id (64 bits), re
## See Also
* [Single Nominator Pool contract](https://github.com/orbs-network/single-nominator)
-* [How to use Single Nominator Pool](/v3/guidelines/smart-contracts/howto/single-nominator-pool.mdx)
+* [How to use Single Nominator Pool](/v3/guidelines/smart-contracts/howto/single-nominator-pool)
diff --git a/docs/v3/documentation/smart-contracts/contracts-specs/wallet-contracts.md b/docs/v3/documentation/smart-contracts/contracts-specs/wallet-contracts.md
index d69a235ff9..f105024822 100644
--- a/docs/v3/documentation/smart-contracts/contracts-specs/wallet-contracts.md
+++ b/docs/v3/documentation/smart-contracts/contracts-specs/wallet-contracts.md
@@ -134,7 +134,7 @@ Also op-code, op::code and operational code
|-----------------|-----------------|----------------------------|
| Global | 0x00000000 | Text Comment |
| Global | 0xffffffff | Bounce |
-| Global | 0x2167da4b | [Encrypted Comment](https://docs.ton.org/v3/documentation/smart-contracts/message-management/internal-messages#messages-with-encrypted-comments) |
+| Global | 0x2167da4b | [Encrypted Comment](v3/documentation/smart-contracts/message-management/internal-messages#messages-with-encrypted-comments) |
| Global | 0xd53276db | Excesses |
| Elector | 0x4e73744b | New Stake |
| Elector | 0xf374484c | New Stake Confirmation |
diff --git a/docs/v3/documentation/smart-contracts/func/cookbook.md b/docs/v3/documentation/smart-contracts/func/cookbook.md
index d231427d98..5680d5c6b2 100644
--- a/docs/v3/documentation/smart-contracts/func/cookbook.md
+++ b/docs/v3/documentation/smart-contracts/func/cookbook.md
@@ -735,7 +735,7 @@ if (current_time > 1672080143) {
:::caution draft
Please note that this method of generating random numbers isn't safe.
-Checkout [Random Number Generation](https://docs.ton.org/v3/guidelines/smart-contracts/securier-generation) for more information.
+Checkout [Random Number Generation](v3/guidelines/smart-contracts/securier-generation) for more information.
:::,.
```func
@@ -781,7 +781,7 @@ throw_unless(39, number == 198); ;; the error will be triggered only if the numb
throw(36); ;; the error will be triggered anyway
```
-[Standard tvm exception codes](/v3/documentation/tvm/tvm-exit-codes.md)
+[Standard tvm exception codes](/v3/documentation/tvm/tvm-exit-codes)
### Reversing tuples
diff --git a/docs/v3/documentation/smart-contracts/func/docs/dictionaries.md b/docs/v3/documentation/smart-contracts/func/docs/dictionaries.md
index 3beddce1cc..548912ba20 100644
--- a/docs/v3/documentation/smart-contracts/func/docs/dictionaries.md
+++ b/docs/v3/documentation/smart-contracts/func/docs/dictionaries.md
@@ -24,7 +24,7 @@ Possible operations for hashmaps:
- load from slice, store to builder
- get/set/delete value by key
- replace value (set new value if key was already present) / add one (if key was not present)
-- move to next/previous key-value pair, in order of keys (this can be used to [iterate over dictionaries](https://docs.ton.org/v3/documentation/smart-contracts/func/cookbook#how-to-iterate-dictionaries) if gas limit is not a concern)
+- move to next/previous key-value pair, in order of keys (this can be used to [iterate over dictionaries](v3/documentation/smart-contracts/func/cookbook#how-to-iterate-dictionaries) if gas limit is not a concern)
- retrieve minimal/maximal key with its value
- get function (continuation) by key and immediately execute it
diff --git a/docs/v3/documentation/smart-contracts/func/docs/functions.md b/docs/v3/documentation/smart-contracts/func/docs/functions.md
index 889de5c89c..9b4cc7cacc 100644
--- a/docs/v3/documentation/smart-contracts/func/docs/functions.md
+++ b/docs/v3/documentation/smart-contracts/func/docs/functions.md
@@ -65,7 +65,7 @@ So each of the following `recv_internal` declarations is correct, but those with
`recv_external` is for inbound external messages.
### Return type
-Return type can be any atomic or composite type as described in the [types](/v3/documentation/smart-contracts/func/docs/types.md) section. For example,
+Return type can be any atomic or composite type as described in the [types](/v3/documentation/smart-contracts/func/docs/types) section. For example,
```func
int foo();
(int, int) foo'();
@@ -299,7 +299,7 @@ The list of assembler commands can be found here: [TVM instructions](/v3/documen
In some cases, we want to pass arguments to the assembler function in a different order than the assembler command requires, or/and take the result in a different stack entry order than the command returns. We could manually rearrange the stack by adding corresponding stack primitives, but FunC can do it automatically.
:::info
-Note, that in case of manual rearranging, arguments will be computed in the rearranged order. To overwrite this behavior use `#pragma compute-asm-ltr`: [compute-asm-ltr](compiler_directives#pragma-compute-asm-ltr)
+Note, that in case of manual rearranging, arguments will be computed in the rearranged order. To overwrite this behavior use `#pragma compute-asm-ltr`: [compute-asm-ltr](/v3/documentation/smart-contracts/func/docs/compiler_directives#pragma-compute-asm-ltr)
:::
For example, suppose that the assembler command STUXQ takes an integer, builder, and integer; then it returns the builder, along with the integer flag, indicating the success or failure of the operation.
diff --git a/docs/v3/documentation/smart-contracts/func/docs/statements.md b/docs/v3/documentation/smart-contracts/func/docs/statements.md
index 472013e046..e2e690fac7 100644
--- a/docs/v3/documentation/smart-contracts/func/docs/statements.md
+++ b/docs/v3/documentation/smart-contracts/func/docs/statements.md
@@ -2,7 +2,7 @@
This section briefly discusses FunC statements, constituting the code of ordinary function bodies.
## Expression statements
-The most common type of a statement is the expression statement. It's an expression followed by `;`. Expression's description would be quite complicated, so only a sketch is presented here. As a rule all sub-expressions are computed left to right with one exception of [asm stack rearrangement](functions#rearranging-stack-entries) which may define order manually.
+The most common type of a statement is the expression statement. It's an expression followed by `;`. Expression's description would be quite complicated, so only a sketch is presented here. As a rule all sub-expressions are computed left to right with one exception of [asm stack rearrangement](/v3/documentation/smart-contracts/func/docs/functions#rearranging-stack-entries) which may define order manually.
### Variable declaration
It is not possible to declare a local variable without defining its initial value.
@@ -41,7 +41,7 @@ while (i < 10) {
}
;; here x is a (different) variable of type int
```
-But as mentioned in the global variables [section](/v3/documentation/smart-contracts/func/docs/global_variables.md), a global variable cannot be redeclared.
+But as mentioned in the global variables [section](/v3/documentation/smart-contracts/func/docs/global_variables), a global variable cannot be redeclared.
Note that a variable declaration **is** an expression statement, so actually constructions like `int x = 2` are full-fledged expressions. For example, this is a correct code:
```func
diff --git a/docs/v3/documentation/smart-contracts/func/overview.mdx b/docs/v3/documentation/smart-contracts/func/overview.mdx
index 2466e162fb..04496a8d14 100644
--- a/docs/v3/documentation/smart-contracts/func/overview.mdx
+++ b/docs/v3/documentation/smart-contracts/func/overview.mdx
@@ -105,7 +105,6 @@ Other materials gracefully provided by the experts from the community:
- [🚩 Challenge 5: Create UI to interact with the contract in 5 minutes](https://github.com/romanovichim/TONQuest5)
- [🚩 Challenge 6: Analyzing NFT sales on the Getgems marketplace](https://github.com/romanovichim/TONQuest6)
* [Func & Blueprint](https://www.youtube.com/watch?v=7omBDfSqGfA&list=PLtUBO1QNEKwtO_zSyLj-axPzc9O9rkmYa) by **@MarcoDaTr0p0je**
-* [Learn FunC in Y Minutes](https://learnxinyminutes.com/docs/func/) by **@romanovichim**
* [TON Hello World: Step-by-step guide for writing your first smart contract](https://ton-community.github.io/tutorials/02-contract/)
* [TON Hello World: Step by step guide for testing your first smart contract](https://ton-community.github.io/tutorials/04-testing/)
* [10 FunC Lessons](https://github.com/romanovichim/TonFunClessons_Eng) by **@romanovichim**, using blueprint
diff --git a/docs/v3/documentation/smart-contracts/getting-started/javascript.mdx b/docs/v3/documentation/smart-contracts/getting-started/javascript.mdx
index cd8614388c..b97f1b4c66 100644
--- a/docs/v3/documentation/smart-contracts/getting-started/javascript.mdx
+++ b/docs/v3/documentation/smart-contracts/getting-started/javascript.mdx
@@ -3,7 +3,7 @@ import Button from '@site/src/components/button'
# Blueprint SDK
-![Blueprint](\img\blueprint\logo.svg)
+![Blueprint](/img/blueprint/logo.svg)
A development environment for TON for writing, testing, and deploying smart contracts.
@@ -57,6 +57,5 @@ Watch Video Tutorials
* [Develop Smart Contract Introduction](/v3/documentation/smart-contracts/overview)
* [How to work with wallet smart contracts](/v3/guidelines/smart-contracts/howto/wallet)
-* [Using toncli](/v3/documentation/smart-contracts/overviewsdk/toncli)
* [SDKs](/v3/guidelines/dapps/apis-sdks/sdk)
diff --git a/docs/v3/documentation/smart-contracts/message-management/internal-messages.md b/docs/v3/documentation/smart-contracts/message-management/internal-messages.md
index be525f55ba..11f457d685 100644
--- a/docs/v3/documentation/smart-contracts/message-management/internal-messages.md
+++ b/docs/v3/documentation/smart-contracts/message-management/internal-messages.md
@@ -59,7 +59,7 @@ If `op` is `0x2167da4b`, then the message is a "transfer message with encrypted
Encryption algo is as follows:
1. Calculate `shared_secret` using `priv_1` and `pub_2`.
- 2. Let `salt` be the [bas64url representation](https://docs.ton.org/v3/documentation/smart-contracts/addresses#user-friendly-address) of the sender wallet address with `isBounceable=1` and `isTestnetOnly=0`.
+ 2. Let `salt` be the [bas64url representation](v3/documentation/smart-contracts/addresses#user-friendly-address) of the sender wallet address with `isBounceable=1` and `isTestnetOnly=0`.
3. Select byte string `prefix` of length between 16 and 31 such that `len(prefix+msg)` is divisible by 16. The first byte of `prefix` is equal to `len(prefix)`, other bytes are random. Let `data = prefix + msg`.
4. Let `msg_key` be the first 16 bytes of `hmac_sha512(salt, data)`.
5. Calculate `x = hmac_sha512(shared_secret, msg_key)`. Let `key=x[0:32]` and `iv=x[32:48]`.
diff --git a/docs/v3/documentation/smart-contracts/message-management/sending-messages.md b/docs/v3/documentation/smart-contracts/message-management/sending-messages.md
index 40d00ce2a0..95c7d9a387 100644
--- a/docs/v3/documentation/smart-contracts/message-management/sending-messages.md
+++ b/docs/v3/documentation/smart-contracts/message-management/sending-messages.md
@@ -191,7 +191,7 @@ Note that `+2` flag ignore only following errors arising while processing messag
- Not enough value attached to the message to pay forwarding fees.
- Not enough extra currency to send with the message.
- Not enough funds to pay for an outbound external message.
-2. Message is too large (check [Message size](sending-messages#message-size) for more).
+2. Message is too large (check [Message size](#message-size) for more).
3. The message has too big Merkle depth.
However, it does not ignore errors in the following scenarios:
diff --git a/docs/v3/documentation/smart-contracts/overview.mdx b/docs/v3/documentation/smart-contracts/overview.mdx
index a623ff8e99..bb4df25b82 100644
--- a/docs/v3/documentation/smart-contracts/overview.mdx
+++ b/docs/v3/documentation/smart-contracts/overview.mdx
@@ -183,7 +183,6 @@ Fift Overview
## Community Tools
-* [disintar/toncli](/v3/documentation/smart-contracts/overviewsdk/toncli) — The toncli is the command line interface used to build, deploy, and test FunC contracts.
* [MyLocalTON](/v3/guidelines/nodes/running-nodes/running-a-local-ton) — MyLocalTON is used to run a private TON Blockchain in your local environment.
* [tonwhales.com/tools/boc](https://tonwhales.com/tools/boc) — BOC parser
* [tonwhales.com/tools/introspection-id](https://tonwhales.com/tools/introspection-id) — crc32 generator
diff --git a/docs/v3/documentation/smart-contracts/shards.mdx b/docs/v3/documentation/smart-contracts/shards.mdx
index 3253713f1c..836f3fbe00 100644
--- a/docs/v3/documentation/smart-contracts/shards.mdx
+++ b/docs/v3/documentation/smart-contracts/shards.mdx
@@ -1,7 +1,7 @@
# Shards
-Sharding is a mature concept originating in [database design](https://en.wikipedia.org/wiki/Shard_(database_architecture)). It involves splitting and distributing one logical data set across multiple databases that share nothing and can be deployed across multiple servers.
-Simply put, sharding allows horizontal scalability - splitting data to distinct, independent pieces that can be processed in parallel. This is a key concept in the world's transition from data to [big data](https://en.wikipedia.org/wiki/Big_data).
+Sharding is a mature concept originating in [database design](https://en.wikipedia.org/wiki/Shard_(database_architecture)). It involves splitting and distributing one logical data set across multiple databases that share nothing and can be deployed across multiple servers.
+Simply put, sharding allows horizontal scalability - splitting data to distinct, independent pieces that can be processed in parallel. This is a key concept in the world's transition from data to [big data](https://en.wikipedia.org/wiki/Big_data).
When data sets are becoming too big to be handled by traditional means, there's no other way to scale other than to break them down into smaller pieces.
The Sharding mechanism in the TON blockchain, allows a large number of transactions to be processed.
@@ -10,7 +10,7 @@ The main idea of sharding in TON is that when account A sends a message to accou
By default in the Basechain (`workchain=0`) there is only one shard with a shard number `0x8000000000000000` (or `1000000000000000000000000000000000000000000000000000000000000000` in binary representation). The masterchain (`workchain=-1`) always has one and only one shard.
-## Masterchain
+## Masterchain
The Masterchain is the primary chain that stores the network configuration and the final state of all workchains. You can understand this as the masterchain being the core directory, a single source of truth for all the shards in the ecosystem.
@@ -22,13 +22,13 @@ The Masterchain splits into individual chains called Workchains. Workchains are
## Uniqueness
-In designing the TON blockchain, two key decisions were made that make it unique among other blockchains that utilize sharding.
+In designing the TON blockchain, two key decisions were made that make it unique among other blockchains that utilize sharding.
-First, TON provides for dynamic segmentation of the blockchain depending on the network load. When the number of transactions increases to a critical level, the blockchain is automatically split into two separate shardchains.
-If the load on one of the parts continues to grow, it is split in half again, and this process continues as needed. If the number of transactions decreases, the shards can merge again.
+First, TON provides for dynamic segmentation of the blockchain depending on the network load. When the number of transactions increases to a critical level, the blockchain is automatically split into two separate shardchains.
+If the load on one of the parts continues to grow, it is split in half again, and this process continues as needed. If the number of transactions decreases, the shards can merge again.
This adaptive model allows for the creation of as many shards as needed at a given time.
-The second solution that distinguishes TON is the principle of a non-fixed number of shards. Unlike systems like Ethereum 2.0, which supports a fixed number of shards (64 shards), TON allows adding more and more shards depending on the needs of the network, with a theoretical limit of 260 shards per worker chain.
+The second solution that distinguishes TON is the principle of a non-fixed number of shards. Unlike systems like Ethereum 2.0, which supports a fixed number of shards (64 shards), TON allows adding more and more shards depending on the needs of the network, with a theoretical limit of 260 shards per worker chain.
This number is so large as to be virtually limitless, and allows over 100 million shards to be provided to every person on Earth and still have a supply left over. This approach is the only way to meet dynamic scaling requirements that are difficult to predict in advance.
![](/img/docs/blockchain-fundamentals/scheme.png)
@@ -36,7 +36,7 @@ This number is so large as to be virtually limitless, and allows over 100 millio
## Splitting
In TON Blockchain, a sequence of transactions of a single account (e.g. `Tx1 -> Tx2 -> Tx3 -> ...`) is called an account transaction chain or AccountChain . This emphasizes that it is a sequence of transactions associated with a single account.
-Several such AccountChains combined within a single shard form a ShardChain . The ShardChain (hereinafter referred to as the shard) is responsible for storing and processing all transactions within a shard, where each transaction chain is defined by a specific account group.
+Several such AccountChains combined within a single shard form a ShardChain . The ShardChain (hereinafter referred to as the shard) is responsible for storing and processing all transactions within a shard, where each transaction chain is defined by a specific account group.
These groups of accounts are denoted by a common binary prefix, which serves as a criterion for clustering them in the same shard.
This prefix appears in shard id which presented by a 64-bit integer and has the following structure: `100000...`. For example, shard with id `1011100000...` contains all accounts started with prefix `1011`.
@@ -65,5 +65,5 @@ An actual example:
## See Also
-* [Infinity Sharding Paradigm](sharding-lifecycle)
+* [Infinity Sharding Paradigm](/v3/documentation/smart-contracts/infinity-sharding-paradigm)
* [Whitepapers](/v3/documentation/whitepapers/overview)
diff --git a/docs/v3/documentation/ton-documentation.mdx b/docs/v3/documentation/ton-documentation.mdx
index 526a414d85..2394424feb 100644
--- a/docs/v3/documentation/ton-documentation.mdx
+++ b/docs/v3/documentation/ton-documentation.mdx
@@ -123,7 +123,7 @@ If you're new to TON Blockchain development, it's recommended that you start fro
Smart contracts are the building blocks of decentralized applications (DApps) on TON Blockchain. If you're looking to develop your own dApps, it's essential to understand how smart contracts work.
-
Getting Started
@@ -151,7 +151,7 @@ The following resources provide valuable information for TON smart contract deve
Decentralized applications (DApps) are applications that run on a peer-to-peer network of computers rather than a single computer (TON Blockchain). They are similar to traditional web applications, but they are built on top of a blockchain network. This means that DApps are decentralized, meaning that no single entity controls them.
-
+
Getting Started
@@ -161,14 +161,13 @@ Getting Started
### DeFi Development
* [TON Connect](/v3/guidelines/ton-connect/overview) — integration and authentication for DApps.
-* [Off-chain Payments Processing](/develop/dapps/asset-processing) — examples and concepts for processing payments.
+* [Off-chain Payments Processing](/v3/guidelines/dapps/asset-processing/payments-processing) — examples and concepts for processing payments.
* [TON Jetton processing](/v3/guidelines/dapps/asset-processing/jettons) — examples and concepts for processing Jettons.
* [Fungible (FT) / Non-fungible (NFT) tokens](/v3/documentation/dapps/defi/tokens) — smart contracts, examples, tools
Take your first steps in DApps development with a comprehensive DApps building guide:
- [TON Hello World: Step by step guide for building your first web client](https://ton-community.github.io/tutorials/03-client/)
-- [Telegram bot integration via TON Connect](/develop/dapps/ton-connect/tg-bot-integration)
### APIs and SDKs
diff --git a/docs/v3/documentation/tvm/changelog/tvm-upgrade-2023-07.md b/docs/v3/documentation/tvm/changelog/tvm-upgrade-2023-07.md
index cc39fba79a..fa7dd679c4 100644
--- a/docs/v3/documentation/tvm/changelog/tvm-upgrade-2023-07.md
+++ b/docs/v3/documentation/tvm/changelog/tvm-upgrade-2023-07.md
@@ -68,7 +68,7 @@ Rule of thumb when choosing gas cost on new opcodes is that it should not be les
| `GASCONSUMED` | _`- g_c`_ | Returns gas consumed by VM so far (including this instruction). _26 gas_ |
## Arithmetics
-New variants of [the division opcode](https://docs.ton.org/v3/documentation/tvm/instructions#52-division) (`A9mscdf`) are added:
+New variants of [the division opcode](v3/documentation/tvm/instructions#52-division) (`A9mscdf`) are added:
`d=0` takes one additional integer from stack and adds it to the intermediate value before division/rshift. These operations return both the quotient and the remainder (just like `d=3`).
Quiet variants are also available (e.g. `QMULADDDIVMOD` or `QUIET MULADDDIVMOD`).
diff --git a/docs/v3/documentation/tvm/tvm-initialization.md b/docs/v3/documentation/tvm/tvm-initialization.md
index 77292ed852..9c8a0170f2 100644
--- a/docs/v3/documentation/tvm/tvm-initialization.md
+++ b/docs/v3/documentation/tvm/tvm-initialization.md
@@ -174,7 +174,7 @@ First component of this tuple is an _Integer_ value, which is always equal to 0x
| `actions` | uint16 | Originally initialized by 0, but incremented by one whenever an output action is installed by a non-RAW output action primitive |
| `msgs_sent` | uint16 | Number of messages sent |
| `unixtime` | uint32 | Unix timestamp in seconds |
-| `block_lt` | uint64 | Represents _logical time_ of the previous block of this account. [More about logical time](https://docs.ton.org/v3/documentation/smart-contracts/message-management/messages-and-transactions#what-is-a-logical-time) |
+| `block_lt` | uint64 | Represents _logical time_ of the previous block of this account. [More about logical time](v3/documentation/smart-contracts/message-management/messages-and-transactions#what-is-a-logical-time) |
| `trans_lt` | uint64 | Represents _logical time_ of the previous transaction of this account |
| `rand_seed` | bits256 | Initialized deterministically starting from `rand_seed` of the block, the account address, the hash of the incoming message being processed (if any), and the transaction logical time `trans_lt` |
| `balance_remaining` | [CurrencyCollection](/v3/documentation/data-formats/tlb/msg-tlb#currencycollection) | Remaining balance of the smart contract |
diff --git a/docs/v3/documentation/tvm/tvm-overview.mdx b/docs/v3/documentation/tvm/tvm-overview.mdx
index 3bf058b2ea..1c32da5abb 100644
--- a/docs/v3/documentation/tvm/tvm-overview.mdx
+++ b/docs/v3/documentation/tvm/tvm-overview.mdx
@@ -109,7 +109,7 @@ And four distinct flavours of cells:
TVM initializes when transaction execution gets to the Computation phase, and then executes commands (opcodes) from _Current continuation_ until there are no more commands to execute (and no continuation for return jumps).
-Detailed description of the initialization process can be found here: [TVM Initialization](/v3/documentation/tvm/tvm-initialization.md)
+Detailed description of the initialization process can be found here: [TVM Initialization](/v3/documentation/tvm/tvm-initialization)
## TVM instructions
diff --git a/docs/v3/documentation/whitepapers/overview.md b/docs/v3/documentation/whitepapers/overview.md
index 2d9cda98cf..fd7b8e4264 100644
--- a/docs/v3/documentation/whitepapers/overview.md
+++ b/docs/v3/documentation/whitepapers/overview.md
@@ -14,7 +14,7 @@ Please note that here and later the code, comments and/or documentation may cont
* [TON Virtual Machine](https://docs.ton.org/tvm.pdf)
- TON Virtual Machine description(may include outdated information on OP Codes, actual list in [TVM Instruction](https://docs.ton.org/v3/documentation/tvm/tvm-overview) section).
+ TON Virtual Machine description(may include outdated information on OP Codes, actual list in [TVM Instruction](v3/documentation/tvm/tvm-overview) section).
* [TON Blockchain](https://docs.ton.org/tblkch.pdf)
diff --git a/docs/v3/guidelines/dapps/apis-sdks/api-types.md b/docs/v3/guidelines/dapps/apis-sdks/api-types.md
index d5bf894c26..13f5877e1e 100644
--- a/docs/v3/guidelines/dapps/apis-sdks/api-types.md
+++ b/docs/v3/guidelines/dapps/apis-sdks/api-types.md
@@ -10,11 +10,10 @@
- [toncenter/v2](https://toncenter.com/) - This API enables HTTP access to TON blockchain - getting accounts and wallets information, looking up blocks and transactions, sending messages to the blockchain, calling get methods of smart contracts, and more.
## Third party APIs
-- [tonapi.io](https://docs.tonconsole.com/tonapi/api-v2) - fast indexed API which provides basic data about accounts, transactions, blocks, application-specific data about NFT, Auctions, Jettons, TON DNS, Subscriptions. It also provides annotated data on transaction chains.
+- [tonapi.io](https://docs.tonconsole.com/tonapi) - fast indexed API which provides basic data about accounts, transactions, blocks, application-specific data about NFT, Auctions, Jettons, TON DNS, Subscriptions. It also provides annotated data on transaction chains.
- [dton.io](https://dton.io/graphql/) - GraphQL API with that can provide data about accounts, transactions and blocks, as well as application-specific data about NFT, Auctions, Jettons and TON DNS.
- [ton-api-v4](https://mainnet-v4.tonhubapi.com) - another lite-api focused on speed via aggressive cashing in CDN.
- [docs.nftscan.com](https://docs.nftscan.com/reference/ton/model/asset-model) - NFT APIs for TON blockchain.
-- [evercloud.dev](https://ton-mainnet.evercloud.dev/graphql) - GraphQL API for basic queries in TON.
- [everspace.center](https://everspace.center/toncoin) - Simple RPC API for accessing TON Blockchain.
diff --git a/docs/v3/guidelines/dapps/apis-sdks/sdk.mdx b/docs/v3/guidelines/dapps/apis-sdks/sdk.mdx
index 2dadde90ba..20c9880868 100644
--- a/docs/v3/guidelines/dapps/apis-sdks/sdk.mdx
+++ b/docs/v3/guidelines/dapps/apis-sdks/sdk.mdx
@@ -6,7 +6,7 @@ Instant navigate on preferred language with right sidebar.
There are different ways to connect to blockchain:
1. RPC data provider or other API: in most cases, you have to *rely* on its stability and security.
-2. ADNL connection: you're connecting to a [liteserver](/participate/run-nodes/liteserver). They might be inaccessible, but with a certain level of validation (implemented in the library), cannot lie.
+2. ADNL connection: you're connecting to a [liteserver](/v3/guidelines/nodes/running-nodes/liteserver-node). They might be inaccessible, but with a certain level of validation (implemented in the library), cannot lie.
3. Tonlib binary: you're connecting to liteserver as well, so all benefits and downsides apply. However, your application also contains a dynamic-loading library compiled outside.
4. Offchain-only. Such SDKs allow to create and serialize cells, which you can then send to APIs.
diff --git a/docs/v3/guidelines/dapps/apis-sdks/ton-adnl-apis.md b/docs/v3/guidelines/dapps/apis-sdks/ton-adnl-apis.md
index ebc9b3a86c..c1a2aea589 100644
--- a/docs/v3/guidelines/dapps/apis-sdks/ton-adnl-apis.md
+++ b/docs/v3/guidelines/dapps/apis-sdks/ton-adnl-apis.md
@@ -4,7 +4,7 @@
There are different ways to connect to blockchain:
1. RPC data provider or another API: in most cases, you have to *rely* on its stability and security.
-2. **ADNL connection**: you're connecting to a [liteserver](/participate/run-nodes/liteserver). They might be inaccessible, but with a certain level of validation (implemented in the library), cannot lie.
+2. **ADNL connection**: you're connecting to a [liteserver](/v3/guidelines/nodes/running-nodes/liteserver-node). They might be inaccessible, but with a certain level of validation (implemented in the library), cannot lie.
3. Tonlib binary: you're connecting to liteserver as well, so all benefits and downsides apply, but your application also contains a dynamic-loading library compiled outside.
4. Offchain-only. Such SDKs allow to create and serialize cells, which you can then send to APIs.
@@ -23,7 +23,7 @@ Read more about [Merkle proofs](/v3/documentation/data-formats/tlb/proofs) at [T
Public liteservers (from the global config) exist to get you started with TON quickly. It can be used for learning to program in TON, or for applications and scripts that do not require 100% uptime.
For building production infrastructure - it is suggested use well prepared infrastructure:
-- [set up own liteserver](https://docs.ton.org/v3/guidelines/nodes/running-nodes/full-node#enable-liteserver-mode),
+- [set up own liteserver](v3/guidelines/nodes/running-nodes/full-node#enable-liteserver-mode),
- use Liteserver premium providers [@liteserver_bot](https://t.me/liteserver_bot)
## Pros & Cons
diff --git a/docs/v3/guidelines/dapps/apis-sdks/ton-http-apis.md b/docs/v3/guidelines/dapps/apis-sdks/ton-http-apis.md
index 309ce2c0b8..d43305840d 100644
--- a/docs/v3/guidelines/dapps/apis-sdks/ton-http-apis.md
+++ b/docs/v3/guidelines/dapps/apis-sdks/ton-http-apis.md
@@ -4,7 +4,7 @@
There are different ways to connect to blockchain:
1. **RPC data provider or another API**: in most cases, you have to *rely* on its stability and security.
-2. ADNL connection: you're connecting to a [liteserver](/participate/run-nodes/liteserver). It may be inaccessible, but with a certain level of validation (implemented in the library), it cannot lie.
+2. ADNL connection: you're connecting to a [liteserver](/v3/guidelines/nodes/running-nodes/liteserver-node). It may be inaccessible, but with a certain level of validation (implemented in the library), it cannot lie.
3. Tonlib binary: you're also connecting to a liteserver, so all benefits and downsides apply, but your application includes a dynamically-loaded library compiled externally.
4. Offchain-only. Such SDKs allow the creation and serialization of cells, which can then be sent to APIs.
@@ -22,7 +22,6 @@ There are different ways to connect to blockchain:
* [status.toncenter](https://status.toncenter.com/) - shows all full network nodes and validators active during the last hour, along with various statistics.
* [Tonstat.us](https://tonstat.us/) - provides a real-time Grafana-based dashboard displaying the status of all TON-related APIs, with data updated every 5 minutes.
-* [tonqueues.vladimirlebe.dev](https://tonqueues.vladimirlebe.dev/) - provides a real-time Grafana-based dashboard showing various statistics (such TPS, etc.).
## RPC Nodes
@@ -57,9 +56,8 @@ Written in Go, Anton is an open source The Open Network blockchain indexer avail
GraphQL nodes act as indexers as well.
-* [tvmlabs.io](https://ton-testnet.tvmlabs.dev/graphql) (for TON, testnet only at the moment of writing) - has wide variety of transaction/block data, ways to filter it, etc.
* [dton.io](https://dton.io/graphql) - as well as providing contracts data augmented with parsed "is jetton", "is NFT" flags, allows emulating transactions and receiving execution traces.
## Other APIs
-* [TonAPI](https://docs.tonconsole.com/tonapi/api-v2) - API that is designed to provide users with a streamlined experience, not worrying about low-level details of smart contracts.
+* [TonAPI](https://docs.tonconsole.com/tonapi) - API that is designed to provide users with a streamlined experience, not worrying about low-level details of smart contracts.
diff --git a/docs/v3/guidelines/dapps/asset-processing/jettons.md b/docs/v3/guidelines/dapps/asset-processing/jettons.md
index 077edba50b..56f5eae3b2 100644
--- a/docs/v3/guidelines/dapps/asset-processing/jettons.md
+++ b/docs/v3/guidelines/dapps/asset-processing/jettons.md
@@ -58,7 +58,7 @@ This method returns the following data:
| `jetton_content` | `cell` | data in accordance with [TEP-64](https://github.com/ton-blockchain/TEPs/blob/master/text/0064-token-data-standard.md), check [jetton metadata parsing page](/v3/guidelines/dapps/asset-processing/nft-processing/metadata-parsing) for more. |
| `jetton_wallet_code` | `cell` | |
-You can call it via [Toncenter API](https://toncenter.com/api/v3/#/default/get_jetton_masters_api_v3_jetton_masters_get) or one of the [SDKs](https://docs.ton.org/v3/guidelines/dapps/apis-sdks/sdk).
+You can call it via [Toncenter API](https://toncenter.com/api/v3/#/default/get_jetton_masters_api_v3_jetton_masters_get) or one of the [SDKs](/v3/guidelines/dapps/apis-sdks/sdk).
@@ -305,7 +305,7 @@ Tonweb examples:
#### Preparations
1. [Prepare a list of accepted Jettons](/v3/guidelines/dapps/asset-processing/jettons#adding-new-jettons-for-asset-processing-and-initial-verification) (Jetton master addresses).
-2. Deploy hot wallet (using v3R2 if no Jetton withdrawals are expected; highload v3 - if Jetton withdrawals are expected). [Wallet deployment](/develop/dapps/asset-processing/#wallet-deployment).
+2. Deploy hot wallet (using v3R2 if no Jetton withdrawals are expected; highload v3 - if Jetton withdrawals are expected). [Wallet deployment](/v3/guidelines/dapps/asset-processing/payments-processing/#wallet-deployment).
3. Perform a test Jetton transfer using the hot wallet address to initialize the wallet.
#### Processing incoming Jettons
@@ -315,7 +315,7 @@ Tonweb examples:
4. Compare the addresses of the Jetton master contracts from step 1. and step 3 (directly above).
If the addresses do not match, a Jetton address verification error must be reported.
5. Retrieve a list of the most recent unprocessed transactions using a hot wallet account and
- iterate it (by sorting through each transaction one by one). See: [Checking contract's transactions](https://docs.ton.org/develop/dapps/asset-processing/#checking-contracts-transactions).
+ iterate it (by sorting through each transaction one by one). See: [Checking contract's transactions](v3/guidelines/dapps/asset-processing/payments-processing/#checking-contracts-transactions).
6. Check the input message (in_msg) for transactions and retrieve the source address from the input message. [Tonweb example](https://github.com/toncenter/examples/blob/9f20f7104411771793dfbbdf07f0ca4860f12de2/deposits-jettons-single-wallet.js#L84)
7. If the source address matches the address within a Jetton wallet, then it is necessary to continue processing the transaction.
If not, then skip processing the transaction and check the next transaction.
@@ -358,7 +358,7 @@ const wallet = new WalletClass(tonweb.provider, {
#### Preparation
1. [Prepare a list of accepted Jettons](#adding-new-jettons-for-asset-processing-and-initial-verification).
-2. Deploy hot wallet (using v3R2 if no Jetton withdrawals are expected; highload v3 - if Jetton withdrawals are expected). [Wallet deployment](/develop/dapps/asset-processing/#wallet-deployment).
+2. Deploy hot wallet (using v3R2 if no Jetton withdrawals are expected; highload v3 - if Jetton withdrawals are expected). [Wallet deployment](/v3/guidelines/dapps/asset-processing/payments-processing/#wallet-deployment).
#### Creating deposits
@@ -449,7 +449,7 @@ See: [Jetton contracts message layouts](#jetton-contract-message-layouts)
#### Preparation
1. Prepare a list of Jettons for withdrawals: [Adding new Jettons for processing and initial verification](#adding-new-jettons-for-asset-processing-and-initial-verification)
-2. Hot wallet deployment is initiated. Highload v3 is recommended. [Wallet Deployment](/develop/dapps/asset-processing/#wallet-deployment)
+2. Hot wallet deployment is initiated. Highload v3 is recommended. [Wallet Deployment](/v3/guidelines/dapps/asset-processing/payments-processing/#wallet-deployment)
3. Carry out a Jetton transfer using a hot wallet address to initialize the Jetton wallet and replenish its balance.
#### Processing withdrawals
@@ -467,7 +467,7 @@ See: [Jetton contracts message layouts](#jetton-contract-message-layouts)
processes the message, after this is completed, the wallet will no longer accept the message).
10. Send a single message or more than one message (batch messaging).
11. Retrieve the list of the latest unprocessed transactions within the hot wallet account and iterate it.
- Learn more here: [Checking contract's transactions](/develop/dapps/asset-processing/#checking-contracts-transactions),
+ Learn more here: [Checking contract's transactions](/v3/guidelines/dapps/asset-processing/payments-processing/#checking-contracts-transactions),
[Tonweb example](https://github.com/toncenter/examples/blob/9f20f7104411771793dfbbdf07f0ca4860f12de2/deposits-single-wallet.js#L43) or
use the Toncenter API `/getTransactions` method.
12. Look at outgoing messages in the account.
diff --git a/docs/v3/guidelines/dapps/asset-processing/mintless-jettons.mdx b/docs/v3/guidelines/dapps/asset-processing/mintless-jettons.mdx
index a9d5cf061f..e33fe9fbb5 100644
--- a/docs/v3/guidelines/dapps/asset-processing/mintless-jettons.mdx
+++ b/docs/v3/guidelines/dapps/asset-processing/mintless-jettons.mdx
@@ -35,7 +35,7 @@ Wallet applications play a crucial role in enhancing user experience with Mintle
This can be done by either:
-- Integration with the Off-Chain API Specified in the [Custom Payload API](https://github.com/ton-blockchain/TEPs/blob/master/text/0000-jetton-offchain-payloads.md)**:
+- Integration with the Off-Chain API Specified in the [Custom Payload API](https://github.com/ton-blockchain/TEPs/blob/master/text/0064-token-data-standard.md#jetton-metadata-example-offchain)**:
- For each jetton, check whether it is mintless.
- If it is mintless, check whether the owner of the wallet has claimed it.
- If not claimed, retrieve data from the Custom Payload API and add the off-chain balance to the on-chain one.
@@ -167,5 +167,5 @@ Mintless Jettons offer an efficient and scalable solution for large-scale token
- [Understanding Mintless Jettons: A Comprehensive Guide](https://gist.github.com/EmelyanenkoK/bfe633bdf8e22ca92a5138e59134988f) - original post.
- [Mintless Jetton Standard Implementation](https://github.com/ton-community/mintless-jetton)
-- [Jetton Offchain Payloads TEP](https://github.com/ton-blockchain/TEPs/blob/master/text/0000-jetton-offchain-payloads.md)
+- [Jetton Offchain Payloads TEP](https://github.com/ton-blockchain/TEPs/blob/master/text/0064-token-data-standard.md#jetton-metadata-example-offchain)
- [Jetton Metadata Standard](https://github.com/ton-blockchain/TEPs/blob/master/text/0064-token-data-standard.md)
diff --git a/docs/v3/guidelines/dapps/asset-processing/payments-processing.md b/docs/v3/guidelines/dapps/asset-processing/payments-processing.md
index 550dedc312..56ef41996a 100644
--- a/docs/v3/guidelines/dapps/asset-processing/payments-processing.md
+++ b/docs/v3/guidelines/dapps/asset-processing/payments-processing.md
@@ -195,7 +195,7 @@ If `value` attached is too small transaction can get aborted with error `cskip_n
It can be unclear that to get more information on transaction user must scan blockchain through [getTransactions](https://toncenter.com/api/v2/#/transactions/get_transactions_getTransactions_get) function.
It is impossible to retrieve the transaction ID immediately after sending a message, as the transaction must first be confirmed by the blockchain network.
-To understand required pipeline read [Send payments](https://docs.ton.org/develop/dapps/asset-processing/#send-payments) carefully, especially 7th point.
+To understand required pipeline read [Send payments](v3/guidelines/dapps/asset-processing/payments-processing/#send-payments) carefully, especially 7th point.
## Invoice-based approach
To accept payments based on attached comments, the service should
@@ -224,7 +224,7 @@ Best suited for dApps that need to sign multiple payments/transactions within a
- ❌ Integration is more complex than the ton:// link
-
Learn More
diff --git a/docs/v3/guidelines/dapps/cookbook.mdx b/docs/v3/guidelines/dapps/cookbook.mdx
index 68805f169a..6d93ef28b9 100644
--- a/docs/v3/guidelines/dapps/cookbook.mdx
+++ b/docs/v3/guidelines/dapps/cookbook.mdx
@@ -121,7 +121,7 @@ Two flags are defined: **bounceable**/**non-bounceable** and **testnet**/**any-n
| 0... | 110100.01 | no | yes |
:::tip
-Testnet-only flag doesn't have representation in blockchain at all. Non-bounceable flag makes difference only when used as destination address for a transfer: in this case, it [disallows bounce](/v3/guidelines/smart-contracts/guidelines/non-bouncable-messages) for a message sent; address in blockchain, again, does not contain this flag.
+Testnet-only flag doesn't have representation in blockchain at all. Non-bounceable flag makes difference only when used as destination address for a transfer: in this case, it [disallows bounce](/v3/documentation/smart-contracts/message-management/non-bounceable-messages) for a message sent; address in blockchain, again, does not contain this flag.
:::
Also, in some libraries, you may notice a serialization parameter called `urlSafe`. he base64 format is not URL safe, which means that some characters (namely,`+` and `/`) can cause issues when transmitting an address in a link. When `urlSafe = true`, all `+` symbols are replaced with `-`, and all `/` symbols are replaced with `_`. You can obtain these address formats using the following code:
@@ -1836,7 +1836,7 @@ Note that this example covers only the simplest case with incoming messages, whe
* [Message Overview](/v3/documentation/smart-contracts/message-management/messages-and-transactions)
* [Internal messages](/v3/documentation/smart-contracts/message-management/internal-messages)
-This topic is explored in more depth in [Payments Processing](/develop/dapps/asset-processing) article.
+This topic is explored in more depth in [Payments Processing](/v3/guidelines/dapps/asset-processing/payments-processing) article.
### How to find transaction for a certain TON Connect result?
diff --git a/docs/develop/dapps/README.mdx b/docs/v3/guidelines/dapps/overview.mdx
similarity index 94%
rename from docs/develop/dapps/README.mdx
rename to docs/v3/guidelines/dapps/overview.mdx
index 75612525db..b3ef322797 100644
--- a/docs/develop/dapps/README.mdx
+++ b/docs/v3/guidelines/dapps/overview.mdx
@@ -63,9 +63,9 @@ RU
Here are some key resources that you'll need throughout your DApp development journey:
-1. [Developer Wallets](/v3/concepts/dive-into-ton/ton-blockchain/wallet-apps)
-2. [Blockchain Explorers](/v3/concepts/dive-into-ton/ton-blockchain/explorers-in-ton)
-3. [API Documentation](/develop/dapps/apis/)
+1. [Developer Wallets](/v3/concepts/dive-into-ton/ton-ecosystem/wallet-apps)
+2. [Blockchain Explorers](/v3/concepts/dive-into-ton/ton-ecosystem/explorers-in-ton)
+3. [API Documentation](/v3/guidelines/dapps/apis-sdks/api-types)
4. [SDKs for Various Languages](/v3/guidelines/dapps/apis-sdks/sdk)
5. [Using the Testnet](/v3/documentation/smart-contracts/getting-started/testnet)
6. [TON Unfreezer](https://unfreezer.ton.org/)
@@ -76,7 +76,7 @@ Working with assets? These guides cover the essentials:
- [Payments Processing](/v3/guidelines/dapps/asset-processing/payments-processing)
- [Token (Jetton) Processing](/v3/guidelines/dapps/asset-processing/jettons)
-- [Handling NFTs](/develop/dapps/asset-processing/nft)
+- [Handling NFTs](/v3/guidelines/dapps/asset-processing/nft-processing/nfts)
- [Parsing Metadata](/v3/guidelines/dapps/asset-processing/nft-processing/metadata-parsing)
### Introduction to DeFi
diff --git a/docs/v3/guidelines/dapps/tma/tutorials/step-by-step-guide.mdx b/docs/v3/guidelines/dapps/tma/tutorials/step-by-step-guide.mdx
index 62df042d6e..c216eefaca 100644
--- a/docs/v3/guidelines/dapps/tma/tutorials/step-by-step-guide.mdx
+++ b/docs/v3/guidelines/dapps/tma/tutorials/step-by-step-guide.mdx
@@ -19,7 +19,7 @@ Expires: 0
```
:::
-2. Once the script is connected, a **[window.Telegram.WebApp](https://core.telegram.org/bots/webapps#initializing-web-apps)** object becomes available. You can read more about creating Mini App utilizing [`telegram-web-app.js`](https://docs.ton.org/v3/guidelines/dapps/tma/tutorials/app-examples#basic-twa-example) here.
+2. Once the script is connected, a **[window.Telegram.WebApp](https://core.telegram.org/bots/webapps#initializing-web-apps)** object becomes available. You can read more about creating Mini App utilizing [`telegram-web-app.js`](v3/guidelines/dapps/tma/tutorials/app-examples#basic-twa-example) here.
3. The modern way to connect SDK is an NPM package for Telegram Mini Apps SDK:
@@ -27,7 +27,7 @@ Expires: 0
npm i @twa-dev/sdk
```
-You can find a guide for [`@twa-dev/sdk`](https://docs.ton.org/v3/guidelines/dapps/tma/tutorials/app-examples#modern-twa-example ) here.
+You can find a guide for [`@twa-dev/sdk`](v3/guidelines/dapps/tma/tutorials/app-examples#modern-twa-example ) here.
5. When your Mini App is ready and deployed to the web server, follow to the next step.
diff --git a/docs/v3/guidelines/dapps/tutorials/mint-your-first-token.md b/docs/v3/guidelines/dapps/tutorials/mint-your-first-token.md
index 34ae32f9e4..977d8a2deb 100644
--- a/docs/v3/guidelines/dapps/tutorials/mint-your-first-token.md
+++ b/docs/v3/guidelines/dapps/tutorials/mint-your-first-token.md
@@ -18,7 +18,7 @@ In this article, you'll learn how to:
## 📌 Prepare before you start
-1. First you need to have the [Tonhub](https://ton.app/wallets/tonhub-wallet) / [Tonkeeper](https://ton.app/wallets/tonkeeper) wallet, [Chrome extension](https://ton.app/wallets/chrome-plugin) or any other supported on the service.
+1. First you need to have the [Tonhub](https://ton.app/wallets/tonhub-wallet) / [Tonkeeper](https://ton.app/wallets/tonkeeper) wallet or any other supported on the service.
2. You must have more than 0.25 Toncoin on your balance plus additional funds to cover the blockchain commission.
:::tip Starter tip
@@ -36,11 +36,11 @@ Use your web browser to open the service [TON Minter](https://minter.ton.org/).
#### Connect Wallet
-Click the `Connect Wallet` button to connect your [Tonhub](https://ton.app/wallets/tonhub-wallet) wallet or a [Chrome extension](https://ton.app/wallets/chrome-plugin) or another wallet from the ones below.
+Click the `Connect Wallet` button to connect your [Tonhub](https://ton.app/wallets/tonhub-wallet) wallet or another wallet from the ones below.
#### ![image](/img/tutorials/jetton/jetton-connect-wallet.png)
-**Scan the QR-code** in a [Mobile wallet (Tonhub e.g.)](https://ton.app/wallets/tonhub-wallet) or **sign in** to the wallet via the [Chrome extension](https://ton.app/wallets/chrome-plugin).
+**Scan the QR-code** in a [Mobile wallet (Tonhub e.g.)](https://ton.app/wallets/tonhub-wallet)
#### Fill in the blanks with relevant information
diff --git a/docs/v3/guidelines/dapps/tutorials/telegram-bot-examples/accept-payments-in-a-telegram-bot-2.md b/docs/v3/guidelines/dapps/tutorials/telegram-bot-examples/accept-payments-in-a-telegram-bot-2.md
index ce9fbbb5fd..97ee45f685 100644
--- a/docs/v3/guidelines/dapps/tutorials/telegram-bot-examples/accept-payments-in-a-telegram-bot-2.md
+++ b/docs/v3/guidelines/dapps/tutorials/telegram-bot-examples/accept-payments-in-a-telegram-bot-2.md
@@ -424,7 +424,7 @@ async def welcome_handler(message: types.Message):
# Send welcome text and include the keyboard
await message.answer('Hi!\nI am example bot '
- 'made for [this article](/develop/dapps/payment-processing/accept-payments-in-a-telegram-bot-2).\n'
+ 'made for [this article](docs.ton.org/v3/guidelines/dapps/tutorials/telegram-bot-examples/accept-payments-in-a-telegram-bot-2).\n'
'My goal is to show how simple it is to receive '
'payments in Toncoin with Python.\n\n'
'Use keyboard to test my functionality.',
diff --git a/docs/v3/guidelines/dapps/tutorials/telegram-bot-examples/accept-payments-in-a-telegram-bot-js.md b/docs/v3/guidelines/dapps/tutorials/telegram-bot-examples/accept-payments-in-a-telegram-bot-js.md
index 6082f26ec7..c155626d50 100644
--- a/docs/v3/guidelines/dapps/tutorials/telegram-bot-examples/accept-payments-in-a-telegram-bot-js.md
+++ b/docs/v3/guidelines/dapps/tutorials/telegram-bot-examples/accept-payments-in-a-telegram-bot-js.md
@@ -301,7 +301,7 @@ export default async function handleStart(ctx) {
const menu = new InlineKeyboard()
.text("Buy dumplings🥟", "buy")
.row()
- .url("Article with a detailed explanation of the bot's work", "/develop/dapps/payment-processing/accept-payments-in-a-telegram-bot-js/");
+ .url("Article with a detailed explanation of the bot's work", "docs.ton.org/v3/guidelines/dapps/tutorials/telegram-bot-examples/accept-payments-in-a-telegram-bot-js");
await ctx.reply(
`Hello stranger!
diff --git a/docs/v3/guidelines/dapps/tutorials/web3-game-example.md b/docs/v3/guidelines/dapps/tutorials/web3-game-example.md
index 2906bd4f55..ec69e11da3 100644
--- a/docs/v3/guidelines/dapps/tutorials/web3-game-example.md
+++ b/docs/v3/guidelines/dapps/tutorials/web3-game-example.md
@@ -6,7 +6,7 @@ In this tutorial we will consider how to add the TON blockchain to a game. For o
![Flappy Bird game without GameFi features](/img/tutorials/gamefi-flappy/no-gamefi-yet.png)
We are going to implement the following:
-- Achievements. Let’s reward our users with [SBTs](https://docs.ton.org/v3/concepts/glossary#sbt). The achievement system is a great tool to increase user engagement.
+- Achievements. Let’s reward our users with [SBTs](v3/concepts/glossary#sbt). The achievement system is a great tool to increase user engagement.
- Game currency. In TON blockchain it’s easy to launch your own token (jetton). The token can be used to create an in-game economy. Our users will be able to earn the game coins to spend them later.
- Game shop. We will provide users with the possibility to purchase in-game items using either in-game currency or the TON coin itself.
@@ -116,7 +116,7 @@ const gameFi = await GameFi.create({
```
> To learn more about initialization options please read the [library documentation](https://github.com/ton-org/game-engines-sdk).
-> To learn what `tonconnect-manifest.json` is please check ton-connect [manifest description](https://docs.ton.org/v3/guidelines/ton-connect/guidelines/creating-manifest).
+> To learn what `tonconnect-manifest.json` is please check ton-connect [manifest description](v3/guidelines/ton-connect/guidelines/creating-manifest).
Now we are ready to create a wallet connect button. Let’s create a UI scene in Phaser which will contain the connect button:
```typescript
diff --git a/docs/v3/guidelines/dapps/tutorials/zero-knowledge-proofs.md b/docs/v3/guidelines/dapps/tutorials/zero-knowledge-proofs.md
index e7c4d3d729..e0bc06b038 100644
--- a/docs/v3/guidelines/dapps/tutorials/zero-knowledge-proofs.md
+++ b/docs/v3/guidelines/dapps/tutorials/zero-knowledge-proofs.md
@@ -241,7 +241,7 @@ slice bls_g1_multiexp(
) asm "BLS_G1_MULTIEXP";
int bls_pairing(slice x1, slice y1, slice x2, slice y2, slice x3, slice y3, slice x4, slice y4, int n) asm "BLS_PAIRING";
```
-The above lines are the new [TVM opcodes](https://docs.ton.org/v3/documentation/tvm/changelog/tvm-upgrade-2023-07#bls12-381) (BLS12-381) that allow pairing checks to be conducted on the TON Blockchain.
+The above lines are the new [TVM opcodes](v3/documentation/tvm/changelog/tvm-upgrade-2023-07#bls12-381) (BLS12-381) that allow pairing checks to be conducted on the TON Blockchain.
The load_data and save_data functions are simply used to load and save the proof verification results (only for test purposes).
diff --git a/docs/v3/guidelines/get-started-with-ton.mdx b/docs/v3/guidelines/get-started-with-ton.mdx
index 58ada7fc43..777e663a46 100644
--- a/docs/v3/guidelines/get-started-with-ton.mdx
+++ b/docs/v3/guidelines/get-started-with-ton.mdx
@@ -88,7 +88,7 @@ With a non-custodial wallet, the user owns the wallet and holds the private key
To download and create a TON wallet follow these simple steps:
1. Install the Tonkeeper app on your smartphone. It can be downloaded [here](https://Tonkeeper.com/).
-2. Next, you’ll need to [enable test mode](/v3/concepts/dive-into-ton/ton-blockchain/wallet-apps#Tonkeeper-test-environment) within Tonkeeper.
+2. Next, you’ll need to [enable test mode](/v3/concepts/dive-into-ton/ton-ecosystem/wallet-apps#Tonkeeper-test-environment) within Tonkeeper.
Easy! Let's go to the development now.
@@ -209,7 +209,7 @@ Great! After these steps you're ready to get deeper into TON Blockchain secrets.
Okay, what do you need to connect to TON Blockchain?
* __Smart contract address__ as a point of destination. Our goal is to mine an NFT from the _proof-of-work smart contract_, so we need an address to get current mining complexity.
-* __API provider__ to make requests to TON Blockchain. TON has multiple [API types](/develop/dapps/apis/) for different purposes. We will use the testnet version of [toncenter.com](https://toncenter.com/) API.
+* __API provider__ to make requests to TON Blockchain. TON has multiple [API types](/v3/guidelines/dapps/apis-sdks/api-types) for different purposes. We will use the testnet version of [toncenter.com](https://toncenter.com/) API.
* __JavaScript SDK__: A JavaScript SDK (recall that an SDK is a Software Development Kit) is needed to parse the smart contract address being used and prepare it to create an API request. To better understand TON addresses and why they need to be parsed to carry out this process, please see this [resource](/v3/documentation/smart-contracts/addresses) to understand why should we parse it. To carry out this procedure, we'll use [ton.js](https://github.com/ton-core/ton).
In the next section we’ll describe how users send their initial requests to TON Blockchain using the TONCenter API and ton.js to receive data from the PoW smart contract.
@@ -218,7 +218,7 @@ In the next section we’ll describe how users send their initial requests to TO
For the miner to work correctly, we need to add two different smart contract address types. These include:
-1. __Wallet address__: A wallet address is required, because it is necessary for the miner to receive their mining reward (in this case, we must use the [Tonkeeper Testnet mode](/v3/concepts/dive-into-ton/ton-blockchain/wallet-apps#Tonkeeper-test-environment)).
+1. __Wallet address__: A wallet address is required, because it is necessary for the miner to receive their mining reward (in this case, we must use the [Tonkeeper Testnet mode](/v3/concepts/dive-into-ton/ton-ecosystem/wallet-apps#Tonkeeper-test-environment)).
2. __Collection address__: A collection address is required to act as a smart contract to correctly mine an NFT (to carry out this process copy the NFT collection address, under the TON onboarding challenge collection name from the [Getgems website](https://testnet.getgems.io/collection/EQDk8N7xM5D669LC2YACrseBJtDyFqwtSPCNhRWXU7kjEptX)).
Next, we’ll open the `index.ts` file in your miner and create a main function composed of initial constants as follows:
@@ -243,7 +243,7 @@ Later in the process of creating a TON NFT Miner, several requests will be execu
#### Address Parsing
-On TON, smart contract addresses come in different forms that employ the use of numerous flag types. In this context specifically, we’ll make use of the _user-friendly address form_. That said, if you are curious to learn more about the different smart contract address types, feel free to check out this additional [resource](https://ton.org/docs/v3/documentation/smart-contracts/addresses) in our documentation.
+On TON, smart contract addresses come in different forms that employ the use of numerous flag types. In this context specifically, we’ll make use of the _user-friendly address form_. That said, if you are curious to learn more about the different smart contract address types, feel free to check out this additional [resource](/v3/documentation/smart-contracts/addresses) in our documentation.
For the miner to work correctly, we need to add two different smart contract address types. These include:
@@ -643,7 +643,7 @@ There are two main ways to mine an NFT on TON:
Below are the steps needed to initiate your first Testnet transaction to mine your NFT:
-1. Activate [Testnet mode within your Tonkeeper wallet](/v3/concepts/dive-into-ton/ton-blockchain/wallet-apps#Tonkeeper-test-environment)
+1. Activate [Testnet mode within your Tonkeeper wallet](/v3/concepts/dive-into-ton/ton-ecosystem/wallet-apps#Tonkeeper-test-environment)
2. Input our testnet wallet address from Tonkeeper into `wallet` variable in the `index.ts`
3. Input address of the [NFT collection from Testnet](https://testnet.getgems.io/collection/EQDk8N7xM5D669LC2YACrseBJtDyFqwtSPCNhRWXU7kjEptX) into `collection` variable in the `index.ts`
@@ -724,7 +724,7 @@ After finishing the TON Onboarding Challenge where we successfully mined an NFT,
* [What is blockchain? What is a smart contract? What is gas?](https://blog.ton.org/what-is-blockchain)
* [TON Hello World: Step-by-step guide for writing your first smart contract](https://ton-community.github.io/tutorials/02-contract/)
-* [Develop Smart Contracts: Introduction](/v3/documentation/smart-contracts/overviewoverview)
+* [Develop Smart Contracts: Introduction](/v3/documentation/smart-contracts/overview)
* [[YouTube] Ton Dev Study - FunC & Blueprint](https://www.youtube.com/playlist?list=PLyDBPwv9EPsDjIMAF3XqNI2XGNwdcB3sg)
* [How to work with wallet smart contracts](/v3/guidelines/smart-contracts/howto/wallet)
* [FunC Journey: Part 1](https://blog.ton.org/func-journey)
diff --git a/docs/v3/guidelines/nodes/nodes-troubleshooting.md b/docs/v3/guidelines/nodes/nodes-troubleshooting.md
index 20e72ec931..b65521fac9 100644
--- a/docs/v3/guidelines/nodes/nodes-troubleshooting.md
+++ b/docs/v3/guidelines/nodes/nodes-troubleshooting.md
@@ -114,7 +114,7 @@ The solution to the problem is to wait for the local node to synchronize or exec
## Status command displays without local node section
-![](\img\docs\full-node\local-validator-status-absent.png)
+![](/img/docs/full-node/local-validator-status-absent.png)
If there is no local node section in the node status, typically this means, something went wrong during installation and the step of creating/assigning a validator wallet was skipped.
Also check that the validator wallet is specified.
diff --git a/docs/v3/guidelines/smart-contracts/fee-calculation.md b/docs/v3/guidelines/smart-contracts/fee-calculation.md
index 2b2041f919..402639554a 100644
--- a/docs/v3/guidelines/smart-contracts/fee-calculation.md
+++ b/docs/v3/guidelines/smart-contracts/fee-calculation.md
@@ -51,7 +51,7 @@ const int RESERVE_REGULAR = 0;
;;; Creates an output action which would reserve at most x nanograms (if y = 2).
;;; Bit +2 in y means that the external action does not fail if the specified amount cannot be reserved; instead, all remaining balance is reserved.
const int RESERVE_AT_MOST = 2;
-;;; in the case of action fail - bounce transaction. No effect if RESERVE_AT_MOST (+2) is used. TVM UPGRADE 2023-07. https://docs.ton.org/v3/documentation/tvm/changelog/tvm-upgrade-2023-07#sending-messages
+;;; in the case of action fail - bounce transaction. No effect if RESERVE_AT_MOST (+2) is used. TVM UPGRADE 2023-07. v3/documentation/tvm/changelog/tvm-upgrade-2023-07#sending-messages
const int RESERVE_BOUNCE_ON_ACTION_FAIL = 16;
() calculate_and_reserve_at_most_storage_fee(int balance, int msg_value, int workchain, int seconds, int bits, int cells) inline {
@@ -209,7 +209,7 @@ Modes affect the fee calculation as follows:
- `+1024` do not create action, only estimate fee. Other modes will send a message in action phase.
- `+128` substitutes the value of the entire balance of the contract before the start of the computation phase (slightly inaccurate, since gas expenses that cannot be estimated before the completion of the computation phase are not taken into account).
- `+64` substitutes the entire balance of the incoming message as an outcoming value (slightly inaccurate, gas expenses that cannot be estimated before the computation is completed are not taken into account).
-- Other modes can be found [on message modes page](https://docs.ton.org/v3/documentation/smart-contracts/message-management/sending-messages#message-modes).
+- Other modes can be found [on message modes page](v3/documentation/smart-contracts/message-management/sending-messages#message-modes).
It creates an output action and returns a fee for creating a message. However, it uses an unpredictable amount of gas, which can't be calculated using formulas, so how can it be calculated? Use `GASCONSUMED`:
diff --git a/docs/v3/guidelines/smart-contracts/guidelines.mdx b/docs/v3/guidelines/smart-contracts/guidelines.mdx
index a7939ad1c1..e26646ec95 100644
--- a/docs/v3/guidelines/smart-contracts/guidelines.mdx
+++ b/docs/v3/guidelines/smart-contracts/guidelines.mdx
@@ -6,7 +6,7 @@ This page collects some recommendations and best practices that could be followe
* [Internal messages](/v3/documentation/smart-contracts/message-management/internal-messages)
* [External messages](/v3/documentation/smart-contracts/message-management/external-messages)
-* [Using non-bounceable messages](/v3/guidelines/smart-contracts/guidelines/non-bouncable-messages)
+* [Using non-bounceable messages](/v3/documentation/smart-contracts/message-management/non-bounceable-messages)
* [Get-methods](/v3/guidelines/smart-contracts/get-methods)
* ["accept_message" effects](/v3/documentation/smart-contracts/transaction-fees/accept-message-effects)
* [Paying for processing queries and sending responses](/v3/documentation/smart-contracts/transaction-fees/forward-fees)
diff --git a/docs/v3/guidelines/smart-contracts/howto/airdrop-claim-best-practice.mdx b/docs/v3/guidelines/smart-contracts/howto/airdrop-claim-best-practice.mdx
index af8d8186c7..d7633e063f 100644
--- a/docs/v3/guidelines/smart-contracts/howto/airdrop-claim-best-practice.mdx
+++ b/docs/v3/guidelines/smart-contracts/howto/airdrop-claim-best-practice.mdx
@@ -13,7 +13,7 @@ Let's think about it.
User send some kind of proof, that he is eligible for the claim
solution checks it and sends jettons back.
-In current case `proof` means [merkle proof](https://docs.ton.org/v3/documentation/data-formats/tlb/exotic-cells#merkle-proof) but it could very well be signed data or whatever else authorization method one could come up with.
+In current case `proof` means [merkle proof](v3/documentation/data-formats/tlb/exotic-cells#merkle-proof) but it could very well be signed data or whatever else authorization method one could come up with.
Sending jettons, - so there would be a jetton wallet and minter.
And we got to make sure that these sneaky users can't claim twice - double spend protection contract.
Oh, and we probably want to make some money, do we?
@@ -69,7 +69,7 @@ Ok, we got something going, but what about shard optimizations?
### What are these?
-In order to get some very basic grasp of understanding, please take a look at [Wallet Creation for Different shards](https://docs.ton.org/develop/dapps/asset-processing/#wallet-creation-for-different-shards)
+In order to get some very basic grasp of understanding, please take a look at [Wallet Creation for Different shards](v3/guidelines/dapps/asset-processing/payments-processing/#wallet-creation-for-different-shards)
Long story short - shard is a 4 bit address prefix. Kind of like in networking.
When contract is in the same network segment, messages get processed without routing and therefore - much faster.
@@ -80,7 +80,7 @@ When contract is in the same network segment, messages get processed without rou
We are in full control of the distributor data, so we must be able to to put it in whatever shard.
How to?
-Remember, the contract address is [defined by it's state](https://docs.ton.org/v3/documentation/smart-contracts/addresses#account-id).
+Remember, the contract address is [defined by it's state](v3/documentation/smart-contracts/addresses#account-id).
We should use some of the contract's data field as nonce and keep on trying until we get the desired result.
Example of a good nonce in real contracts can (subwalletId/publicKey) for a wallet contract.
Any field that can be either modified after deployment or does not impact contract logic(like subwalletId) will fit the bill.
diff --git a/docs/v3/guidelines/smart-contracts/howto/nominator-pool.mdx b/docs/v3/guidelines/smart-contracts/howto/nominator-pool.mdx
index 77f9d13fe7..0b8ccbb9be 100644
--- a/docs/v3/guidelines/smart-contracts/howto/nominator-pool.mdx
+++ b/docs/v3/guidelines/smart-contracts/howto/nominator-pool.mdx
@@ -18,7 +18,7 @@ It's recommended to get acquainted with [Nominator Pool Specification](/v3/docum
2. Install and synchronize **mytonctrl** as described in the guide [here](/participate/run-nodes/full-node#how-to-run-a-node-video).
- You can also refer to this [Video Instruction](https://ton.org/docs/#/nodes/run-node) for additional help.
+ You can also refer to this [Video Instruction](/#/nodes/run-node) for additional help.
3. Transfer 1 TON to the validator wallet address shown in the `wl` list.
diff --git a/docs/v3/guidelines/smart-contracts/howto/shard-optimization.mdx b/docs/v3/guidelines/smart-contracts/howto/shard-optimization.mdx
index 36e15ac161..1f1b20df15 100644
--- a/docs/v3/guidelines/smart-contracts/howto/shard-optimization.mdx
+++ b/docs/v3/guidelines/smart-contracts/howto/shard-optimization.mdx
@@ -1,7 +1,7 @@
# Shard Optimizations on TON
## Architecture Basics
-TON is designed to process myriads of transactions in parallel. This capability is built on the [infinite sharding paradigm](https://docs.ton.org/v3/documentation/smart-contracts/infinity-sharding-paradigm), which means that once the load on a group of validators approaches their throughput limit, it is split (sharded). Two groups of validators then process this load independently and in parallel. These splits occur deterministically, and whether a transaction is processed by a specific group depends on the contract address associated with the transaction. Addresses that are close to each other (sharing the same prefix) will be processed in the same shard.
+TON is designed to process myriads of transactions in parallel. This capability is built on the [infinite sharding paradigm](v3/documentation/smart-contracts/infinity-sharding-paradigm), which means that once the load on a group of validators approaches their throughput limit, it is split (sharded). Two groups of validators then process this load independently and in parallel. These splits occur deterministically, and whether a transaction is processed by a specific group depends on the contract address associated with the transaction. Addresses that are close to each other (sharing the same prefix) will be processed in the same shard.
When a message is sent from one contract to another, there are two possibilities: either both contracts reside in the same shard, or they are in different shards. In the former case, the current group already has all necessary data and can process the message immediately. In the latter case, the message must be routed from one group to another. To avoid message loss or double-processing, proper accounting is needed. This is done by registering a queue of outgoing messages from the sender's shard in a masterchain block, and then the receiver's shard must explicitly confirm that it has processed this queue. Such overhead makes cross-shard message delivery slower; there needs to be at least one masterchain block between the block where the message was sent and the block where it was consumed. This delay is usually about 12-13 seconds.
@@ -114,7 +114,7 @@ So, contract address shard prefix is a part of a contract address that identifie
From networking perspective, it's clear that request on the same network segment will get to processing faster than the one that is routed elsewhere, right?
It's kind of like one uses CDN to host content closer to the end users, in TON we deploy contract closer to the end users.
-If load on the shard exceeds [certain level](https://docs.ton.org/v3/documentation/smart-contracts/infinity-sharding-paradigm#algorithm-for-deciding-whether-to-split-or-merge) shard splits. And the goal is to provide dedicated computational resources to the contract under load and isolate it's impact on the whole network.
+If load on the shard exceeds [certain level](v3/documentation/smart-contracts/infinity-sharding-paradigm#algorithm-for-deciding-whether-to-split-or-merge) shard splits. And the goal is to provide dedicated computational resources to the contract under load and isolate it's impact on the whole network.
Current maximum shard prefix length is just 4 bits, so blockchain can split in 16 shards max from prefix 0 to 15.
### Problems during shard optimizations
@@ -141,7 +141,7 @@ You will see `0:b113a994b5024a16719f69139328eb759596c38a25f59028b146fecdc3621dfe
Now we know, that USDT minter is located in shard `b`(hex) or `11`(decimal) if you will.
### How to deploy contract to a certain shard
-In order to understand how this works, one should understand how contract address [depends](https://docs.ton.org/v3/documentation/smart-contracts/addresses#account-id) on it's code and data.
+In order to understand how this works, one should understand how contract address [depends](v3/documentation/smart-contracts/addresses#account-id) on it's code and data.
Essentially it's a SHA256 has of code and data at deployment time.
Knowing that, the only way to deploy contract with the same code in a different shard is to manipulate initial data.
Data field, that is used to manipulate resulting contract address is called *nonce*.
@@ -150,11 +150,11 @@ One of very first know contracts, that used this principle is [vanity contract](
It has `salt` data field, the only purpose of which is to *brute-force* the value of it, that results in the desired address pattern.
Putting the contract into specific shard is done in exactly same way, except the prefix one needs to match is way shorter.
One of the simplest examples to start from would be the wallet contract.
-- [Wallet creation for different shard](https://docs.ton.org/develop/dapps/asset-processing/#wallet-creation-for-different-shards) article illustrates case where public key is used as nonce to put wallet in a specific shard.
+- [Wallet creation for different shard](v3/guidelines/dapps/asset-processing/payments-processing/#wallet-creation-for-different-shards) article illustrates case where public key is used as nonce to put wallet in a specific shard.
- The other examples is [turbo-wallet](https://github.com/Trinketer22/turbo-wallet/blob/d239c1a1ac31c7f5545c2ef3ddc909d6cbdafe24/src/lib/contracts/HighloadWalletV3.ts#L44) using subwalletId for [same](https://github.com/Trinketer22/turbo-wallet/blob/d239c1a1ac31c7f5545c2ef3ddc909d6cbdafe24/src/lib/turboWallet.ts#L80) purposes.
You can pretty quickly extend [ShardedContract](https://github.com/Trinketer22/turbo-wallet/blob/main/src/lib/ShardedContract.ts) interface using your contract constructor to make it *sharded* too.
## Mass Jetton Distribution solutions
-If you need to distribute jettons among tens/hundreds of thousands or millions of users, check this [post](https://docs.ton.org/v3/guidelines/dapps/asset-processing/mintless-jettons). We suggest you consider existing battle-tested services. A few are deeply optimized and will not only be shard-optimized but also cheaper than handmade solutions:
+If you need to distribute jettons among tens/hundreds of thousands or millions of users, check this [post](v3/guidelines/dapps/asset-processing/mintless-jettons). We suggest you consider existing battle-tested services. A few are deeply optimized and will not only be shard-optimized but also cheaper than handmade solutions:
- **Mintless Jettons:** When you need to distribute jettons during a Token Generation Event (TGE), you can allow users to claim a predefined airdrop directly from the jetton-wallets contract. It is cheap, does not require an additional transaction, and is available on demand (only users who need to spend jettons now will claim them). [LINK]
- **Tonapi Solution for Jetton Mass Sending:** Allows for the distribution of existing jettons via direct sending to user wallets. Battle-tested by Notcoin and DOGS (a few million transfers each), optimized to decrease latency, throughput, and costs. [Mass jetton sending](https://docs.tonconsole.com/tonconsole/jettons/mass-sending)
- **TokenTable Solution for Decentralized Claim:** Allows users to claim jettons from specific claim transactions (users pay for fees). Battle-tested by Avacoin and DOGS (a few million transfers), optimized to increase throughput and costs. [Introduction](https://docs.tokentable.xyz/for-tvm-developers/introduction)
diff --git a/docs/v3/guidelines/smart-contracts/howto/wallet.md b/docs/v3/guidelines/smart-contracts/howto/wallet.md
index 8d060dae45..314249b63c 100644
--- a/docs/v3/guidelines/smart-contracts/howto/wallet.md
+++ b/docs/v3/guidelines/smart-contracts/howto/wallet.md
@@ -301,7 +301,7 @@ Since a **maximum of 4 references** can be stored in one cell, we can send a max
In this section, we’ll learn more about `internal` and `external` messages and we’ll create messages and send them to the network to minimize the use of pre-cooked functions.
To carry out this process it is necessary to make use of a ready-made wallet to make the task easier. To accomplish this:
-1. Install the [wallet app](/v3/concepts/dive-into-ton/ton-blockchain/wallet-apps) (e.g., Tonkeeper is used by the author)
+1. Install the [wallet app](/v3/concepts/dive-into-ton/ton-ecosystem/wallet-apps) (e.g., Tonkeeper is used by the author)
2. Switch wallet app to v3r2 address version
3. Deposit 1 TON into the wallet
4. Send the message to another address (you can send to yourself, to the same wallet).
@@ -369,7 +369,7 @@ Now let’s go through each option in detail:
Option | Explanation
:---: | :---:
IHR Disabled | Currently, this option is disabled (which means we store 1) because Instant Hypercube Routing is not fully implemented. In addition, this will be needed when a large number of [Shardchains](/v3/concepts/dive-into-ton/ton-blockchain/blockchain-of-blockchains#many-accountchains-shards) are live on the network. More can be read about the IHR Disabled option in the [tblkch.pdf](https://ton.org/tblkch.pdf) (chapter 2).
-Bounce | While sending messages, a variety of errors can occur during smart contract processing. To avoid losing TON, it is necessary to set the Bounce option to 1 (true). In this case, if any contract errors occur during transaction processing, the message will be returned to the sender, and the same amount of TON will be received minus fees. More can be read about non-bounceable messages [here](/v3/guidelines/smart-contracts/guidelines/non-bouncable-messages).
+Bounce | While sending messages, a variety of errors can occur during smart contract processing. To avoid losing TON, it is necessary to set the Bounce option to 1 (true). In this case, if any contract errors occur during transaction processing, the message will be returned to the sender, and the same amount of TON will be received minus fees. More can be read about non-bounceable messages [here](/v3/documentation/smart-contracts/message-management/non-bounceable-messages).
Bounced | Bounced messages are messages that are returned to the sender because an error occurred while processing the transaction with a smart contract. This option tells you whether the message received is bounced or not.
Src | The Src is the sender address. In this case, two zero bits are written to indicate the `addr_none` address.
@@ -1755,7 +1755,7 @@ log.Println(publicKey)
After the call is successfully completed the end result is an extremely large 256 bit number which must be translated into a hex string. The resulting hex string for the wallet address we provided above is as follows: `430db39b13cf3cb76bfa818b6b13417b82be2c6c389170fbe06795c71996b1f8`.
-Next, we leverage the [TonAPI](https://tonapi.io/swagger-ui) (/v1/wallet/findByPubkey method), by inputting the obtained hex string into the system and it is immediately clear that the first element in the array within the answer will identify my wallet.
+Next, we leverage the [TonAPI](https://docs.tonconsole.com/tonapi/rest-api) (/v1/wallet/findByPubkey method), by inputting the obtained hex string into the system and it is immediately clear that the first element in the array within the answer will identify my wallet.
Then we switch to the `is_plugin_installed` method. As an example, we’ll again use the wallet we used earlier ([EQAM7M--HGyfxlErAIUODrxBA3yj5roBeYiTuy6BHgJ3Sx8k](https://tonscan.org/address/EQAM7M--HGyfxlErAIUODrxBA3yj5roBeYiTuy6BHgJ3Sx8k)) and the plugin ([EQBTKTis-SWYdupy99ozeOvnEBu8LRrQP_N9qwOTSAy3sQSZ](https://tonscan.org/address/EQBTKTis-SWYdupy99ozeOvnEBu8LRrQP_N9qwOTSAy3sQSZ)):
@@ -2187,7 +2187,7 @@ if (found) {
```
:::note
-If you [familiarize yourself](https://docs.ton.org/v3/documentation/tvm/instructions) with the operation of the `LDSLICEX` opcode (the load_bits function uses this opcode), you will notice that the read data is returned first (head) and only then the remaining data (tail), but they are in reverse order in the contract code.
+If you [familiarize yourself](v3/documentation/tvm/instructions) with the operation of the `LDSLICEX` opcode (the load_bits function uses this opcode), you will notice that the read data is returned first (head) and only then the remaining data (tail), but they are in reverse order in the contract code.
In fact, they go in reverse order, because in stdlib in the function signature, the returned data [go in reverse order](https://github.com/ton-blockchain/highload-wallet-contract-v3/blob/d58c31e82315c34b4db55942851dd8d4153975c5/contracts/imports/stdlib.fc#L321): `(slice, slice) load_bits(slice s, int len) asm(s len -> 1 0) "LDSLICEX";`. Here `-> 1 0` means to return the argument with index 1 (tail) first, and then 0 (head).
:::
@@ -2528,7 +2528,7 @@ Exchanges are probably the best example of where high-load wallets are used on a
### High-load wallet FunC code
-First, let’s examine [the code structure of high-load wallet smart contract](https://github.com/ton-blockchain/ton/blob/master/crypto/smartcont/highload-wallet-v2-code.fc):
+First, let’s examine [the code structure of high-load wallet smart contract](https://github.com/ton-blockchain/ton/blob/master/crypto/smartcont/new-highload-wallet-v2.fif):
```func
() recv_external(slice in_msg) impure {
@@ -2694,7 +2694,7 @@ This means that if the query_id passed to the method is smaller than the last la
In order to deploy a high-load wallet it is necessary to generate a mnemonic key in advance, which will be used by the user. It is possible to use the same key that was used in previous sections of this tutorial.
-To begin the process required to deploy a high-load wallet it's necessary to copy [the code of the smart contract](https://github.com/ton-blockchain/ton/blob/master/crypto/smartcont/highload-wallet-v2-code.fc) to the same directory where the stdlib.fc and wallet_v3 are located and remember to add `#include "stdlib.fc";` to the beginning of the code. Next we’ll compile the high-load wallet code like we did in [section three](/v3/guidelines/smart-contracts/howto/wallet#compiling-wallet-code):
+To begin the process required to deploy a high-load wallet it's necessary to copy [the code of the smart contract](https://github.com/ton-blockchain/ton/blob/master/crypto/smartcont/new-highload-wallet-v2.fif) to the same directory where the stdlib.fc and wallet_v3 are located and remember to add `#include "stdlib.fc";` to the beginning of the code. Next we’ll compile the high-load wallet code like we did in [section three](/v3/guidelines/smart-contracts/howto/wallet#compiling-wallet-code):
@@ -3118,7 +3118,7 @@ This helps us to be independent of using libraries and to understand the structu
## 🧩 Next Steps
-Reading the documentation provided above is a complex undertaking and it’s difficult to understand the entirety of the TON platform. However, it is a good exercise for those passionate about building on the TON. Another suggestion is to begin learning how to write smart contracts on TON by consulting the following resources: [FunC Overview](https://docs.ton.org/v3/documentation/smart-contracts/func/overview), [Best Practices](https://docs.ton.org/v3/guidelines/smart-contracts/guidelines), [Examples of Smart Contracts](https://docs.ton.org/v3/documentation/smart-contracts/contracts-specs/examples), [FunC Cookbook](https://docs.ton.org/v3/documentation/smart-contracts/func/cookbook)
+Reading the documentation provided above is a complex undertaking and it’s difficult to understand the entirety of the TON platform. However, it is a good exercise for those passionate about building on the TON. Another suggestion is to begin learning how to write smart contracts on TON by consulting the following resources: [FunC Overview](v3/documentation/smart-contracts/func/overview), [Best Practices](v3/guidelines/smart-contracts/guidelines), [Examples of Smart Contracts](v3/documentation/smart-contracts/contracts-specs/examples), [FunC Cookbook](v3/documentation/smart-contracts/func/cookbook)
Additionally, it is recommended that readers familiarize themselves with the following documents in more detail: [ton.pdf](https://docs.ton.org/ton.pdf) and [tblkch.pdf](https://ton.org/tblkch.pdf) documents.
@@ -3128,7 +3128,7 @@ If you have any questions, comments, or suggestions please reach out to the auth
## 📖 See Also
-- Wallets' source code: [V3](https://github.com/ton-blockchain/ton/blob/master/crypto/smartcont/wallet3-code.fc), [V4](https://github.com/ton-blockchain/wallet-contract/blob/main/func/wallet-v4-code.fc), [High-load](https://github.com/ton-blockchain/ton/blob/master/crypto/smartcont/highload-wallet-v2-code.fc)
+- Wallets' source code: [V3](https://github.com/ton-blockchain/ton/blob/master/crypto/smartcont/wallet3-code.fc), [V4](https://github.com/ton-blockchain/wallet-contract/blob/main/func/wallet-v4-code.fc), [High-load](https://github.com/ton-blockchain/ton/blob/master/crypto/smartcont/new-highload-wallet-v2.fif)
- Useful concept documents(may include outdated information): [ton.pdf](https://docs.ton.org/ton.pdf), [tblkch.pdf](https://ton.org/tblkch.pdf), [tvm.pdf](https://ton.org/tvm.pdf)
@@ -3149,7 +3149,7 @@ Official documentation:
- [TL-B](/v3/documentation/data-formats/tlb/tl-b-language)
- - [Blockchain of Blockchains](https://docs.ton.org/v3/concepts/dive-into-ton/ton-blockchain/blockchain-of-blockchains)
+ - [Blockchain of Blockchains](v3/concepts/dive-into-ton/ton-blockchain/blockchain-of-blockchains)
External references:
diff --git a/docs/v3/guidelines/smart-contracts/security/secure-programming.mdx b/docs/v3/guidelines/smart-contracts/security/secure-programming.mdx
index e46c2dda92..1e0c9e4453 100644
--- a/docs/v3/guidelines/smart-contracts/security/secure-programming.mdx
+++ b/docs/v3/guidelines/smart-contracts/security/secure-programming.mdx
@@ -94,7 +94,7 @@ Secondly, there is "namespace pollution". Let's explain what the problem is with
int min_amount = in_msg_body~load_coins();
```
-That is, there was a shadowing of the storage field by a local variable, and at the end of the function, this replaced value was stored in storage. The attacker had the opportunity to overwrite the state of the contract. The situation is aggravated by the fact that FunC allows the [redeclaration of variables](https://docs.ton.org/v3/documentation/smart-contracts/func/docs/statements#variable-declaration): “This is not a declaration, but just a compile-time insurance that min_amount has type int.”
+That is, there was a shadowing of the storage field by a local variable, and at the end of the function, this replaced value was stored in storage. The attacker had the opportunity to overwrite the state of the contract. The situation is aggravated by the fact that FunC allows the [redeclaration of variables](v3/documentation/smart-contracts/func/docs/statements#variable-declaration): “This is not a declaration, but just a compile-time insurance that min_amount has type int.”
And finally, parsing the entire storage and packing it back on every call to every function increases the gas cost.
@@ -174,7 +174,7 @@ For example, a typical flow start (see TON Jetton message flow):
1. `your_contract_wallet` sends an `op::transfer_notification` message to `your_contract`, delivering `forward_ton_amount`, `forward_payload`, and the `sender_address` and `jetton_amount`;
1. And here in your contract in `handle_transfer_notification()` the flow begins.
-There you need to figure out what kind of request it was, whether there is enough gas to complete it, and whether everything is correct in the payload. At this stage, you should not use `throw_if()/throw_unless()`, because then the Jettons will simply be lost, and the request will not be executed. It's worth using the try-catch statements [available starting from FunC v0.4.0](https://docs.ton.org/v3/documentation/smart-contracts/func/docs/statements#try-catch-statements).
+There you need to figure out what kind of request it was, whether there is enough gas to complete it, and whether everything is correct in the payload. At this stage, you should not use `throw_if()/throw_unless()`, because then the Jettons will simply be lost, and the request will not be executed. It's worth using the try-catch statements [available starting from FunC v0.4.0](v3/documentation/smart-contracts/func/docs/statements#try-catch-statements).
If something does not meet the expectations of your contract, the Jettons must be returned.
diff --git a/docs/v3/guidelines/smart-contracts/security/things-to-focus.md b/docs/v3/guidelines/smart-contracts/security/things-to-focus.md
index bba7717487..9b07e5ac8f 100644
--- a/docs/v3/guidelines/smart-contracts/security/things-to-focus.md
+++ b/docs/v3/guidelines/smart-contracts/security/things-to-focus.md
@@ -63,7 +63,7 @@ Smart contracts addresses in TON blockchain are deterministic and can be precomp
TON addresses may have three representations.
A full representation can either be "raw" (`workchain:address`) or "user-friendly". The last one is the one users encounter most often. It contains a tag byte, indicating whether the address is `bounceable` or `not bounceable`, and a workchain id byte. This information should be noted.
-- [Raw and User-Friendly Addresses](https://docs.ton.org/v3/documentation/smart-contracts/addresses#raw-and-user-friendly-addresses)
+- [Raw and User-Friendly Addresses](v3/documentation/smart-contracts/addresses#raw-and-user-friendly-addresses)
### 12. Keep track of the flaws in code execution
@@ -87,8 +87,8 @@ You may receive bounced messages (error notifications), which should be handled.
There are two custom solutions for wallets (smart contracts, storing users money): `seqno-based` (check the counter not to process message twice) and `high-load` (storing processes identifiers and its expirations).
-- [Seqno-based wallets](/develop/dapps/asset-processing/#seqno-based-wallets)
-- [High-load wallets](/develop/dapps/asset-processing/#high-load-wallets)
+- [Seqno-based wallets](/v3/guidelines/dapps/asset-processing/payments-processing/#seqno-based-wallets)
+- [High-load wallets](/v3/guidelines/dapps/asset-processing/payments-processing/#high-load-wallets)
## References
diff --git a/docs/v3/guidelines/smart-contracts/security/ton-hack-challenge-1.md b/docs/v3/guidelines/smart-contracts/security/ton-hack-challenge-1.md
index 7e8222c0d5..a02fed4878 100644
--- a/docs/v3/guidelines/smart-contracts/security/ton-hack-challenge-1.md
+++ b/docs/v3/guidelines/smart-contracts/security/ton-hack-challenge-1.md
@@ -93,7 +93,7 @@ The wallet was protected with password, it's hash was stored in contract data. H
### 6. Vault
:::note SECURITY RULE
-Always check for [bounced](/v3/guidelines/smart-contracts/guidelines/non-bouncable-messages) messages.
+Always check for [bounced](/v3/documentation/smart-contracts/message-management/non-bounceable-messages) messages.
Don't forget about errors caused by [standard](/v3/documentation/smart-contracts/func/docs/stdlib/) functions.
Make your conditions as strict as possible.
:::
diff --git a/docs/v3/guidelines/smart-contracts/testing/overview.mdx b/docs/v3/guidelines/smart-contracts/testing/overview.mdx
index ec8b04a088..ca16464fd2 100644
--- a/docs/v3/guidelines/smart-contracts/testing/overview.mdx
+++ b/docs/v3/guidelines/smart-contracts/testing/overview.mdx
@@ -136,4 +136,3 @@ Check test suites used for TON Ecosystem contracts and learn by examples.
## See Also
* [Blueprint](/v3/documentation/smart-contracts/getting-started/javascript)
-* [toncli](/v3/guidelines/smart-contracts/testing/toncli)
diff --git a/docs/v3/guidelines/ton-connect/business/ton-connect-comparison.md b/docs/v3/guidelines/ton-connect/business/ton-connect-comparison.md
index 71f8d4305a..bdf1a8778b 100644
--- a/docs/v3/guidelines/ton-connect/business/ton-connect-comparison.md
+++ b/docs/v3/guidelines/ton-connect/business/ton-connect-comparison.md
@@ -17,4 +17,4 @@ Please see the comparison between both versions below:
| Realtime UX | | ✔︎ |
| Switching accounts | | soon |
| Messages sending between app and user | | soon |
-| Wallet compatibility | Tonkeeper | Tonkeeper, OpenMask, MyTonWallet TonHub (soon) and [others](/v3/concepts/dive-into-ton/ton-blockchain/wallet-apps#basics-features) |
+| Wallet compatibility | Tonkeeper | Tonkeeper, OpenMask, MyTonWallet TonHub (soon) and [others](/v3/concepts/dive-into-ton/ton-ecosystem/wallet-apps#basics-features) |
diff --git a/docs/v3/guidelines/ton-connect/frameworks/react.mdx b/docs/v3/guidelines/ton-connect/frameworks/react.mdx
index b5e7167766..495c997452 100644
--- a/docs/v3/guidelines/ton-connect/frameworks/react.mdx
+++ b/docs/v3/guidelines/ton-connect/frameworks/react.mdx
@@ -269,7 +269,7 @@ export const Settings = () => {
### Understanding Transaction Status by Hash
-The principle is located in Payment Processing (using tonweb). [See more](/develop/dapps/asset-processing/#checking-contracts-transactions)
+The principle is located in Payment Processing (using tonweb). [See more](/v3/guidelines/dapps/asset-processing/payments-processing/#checking-contracts-transactions)
### Optional Check (ton_proof) on the Backend
diff --git a/docs/v3/guidelines/ton-connect/frameworks/vue.mdx b/docs/v3/guidelines/ton-connect/frameworks/vue.mdx
index 627ce6cc3f..86f22d8cf3 100644
--- a/docs/v3/guidelines/ton-connect/frameworks/vue.mdx
+++ b/docs/v3/guidelines/ton-connect/frameworks/vue.mdx
@@ -337,7 +337,7 @@ export default {
```
### Understanding Transaction Status by Hash
-The principle located in Payment Processing (using tonweb). [See more](/develop/dapps/asset-processing/#checking-contracts-transactions)
+The principle located in Payment Processing (using tonweb). [See more](/v3/guidelines/dapps/asset-processing/payments-processing/#checking-contracts-transactions)
### Add connect request parameters (ton_proof)
diff --git a/docs/v3/guidelines/ton-connect/frameworks/web.mdx b/docs/v3/guidelines/ton-connect/frameworks/web.mdx
index 1ba689f8b2..9d9ad239bd 100644
--- a/docs/v3/guidelines/ton-connect/frameworks/web.mdx
+++ b/docs/v3/guidelines/ton-connect/frameworks/web.mdx
@@ -138,7 +138,7 @@ const result = await tonConnectUI.sendTransaction(transaction)
### Understanding Transaction Status by Hash
-The principle located in Payment Processing (using tonweb). [See more](/develop/dapps/asset-processing/#checking-contracts-transactions)
+The principle located in Payment Processing (using tonweb). [See more](/v3/guidelines/dapps/asset-processing/payments-processing/#checking-contracts-transactions)
### Signing and Verification
diff --git a/docs/v3/guidelines/ton-connect/guidelines/integration-with-javascript-sdk.md b/docs/v3/guidelines/ton-connect/guidelines/integration-with-javascript-sdk.md
index 4fccdf2a41..bf5a2ade78 100644
--- a/docs/v3/guidelines/ton-connect/guidelines/integration-with-javascript-sdk.md
+++ b/docs/v3/guidelines/ton-connect/guidelines/integration-with-javascript-sdk.md
@@ -6,7 +6,7 @@ In this tutorial, we’ll create a sample web app that supports TON Connect 2.0
1. [@tonconnect/sdk documentation](https://www.npmjs.com/package/@tonconnect/sdk)
2. [Wallet-application message exchange protocol](https://github.com/ton-connect/docs/blob/main/requests-responses.md)
-3. [Tonkeeper implementation of wallet side](https://github.com/tonkeeper/wallet/tree/main/src/tonconnect)
+3. [Tonkeeper implementation of wallet side](https://github.com/tonkeeper/wallet/tree/main/packages/mobile/src/tonconnect)
## Prerequisites
diff --git a/docs/v3/guidelines/ton-connect/guidelines/verifying-signed-in-users.mdx b/docs/v3/guidelines/ton-connect/guidelines/verifying-signed-in-users.mdx
index dcd65366ca..8fa0251869 100644
--- a/docs/v3/guidelines/ton-connect/guidelines/verifying-signed-in-users.mdx
+++ b/docs/v3/guidelines/ton-connect/guidelines/verifying-signed-in-users.mdx
@@ -56,7 +56,7 @@ type TonProofItemReplySuccess = {
5. Assemble a message according to the [message scheme](/v3/guidelines/ton-connect/guidelines/verifying-signed-in-users#concept-explanation).
6. Retrieve `public_key` either from API (a) or via back-end logic (b)
- 6a:
- - Retrieve `{public_key, address}` from the `walletStateInit` with [TON API](https://docs.tonconsole.com/tonapi/api-v2#:~:text=/v2/-,tonconnect,-/stateinit) method `POST /v2/tonconnect/stateinit`.
+ - Retrieve `{public_key, address}` from the `walletStateInit` with [TON API](https://docs.tonconsole.com/tonapi#:~:text=/v2/-,tonconnect,-/stateinit) method `POST /v2/tonconnect/stateinit`.
- Check that the `address` extracted from `walletStateInit` corresponds to wallet `address` declared by user.
- 6b:
- Obtain the wallet `public_key` via the wallet contract [get method](https://github.com/ton-blockchain/wallet-contract/blob/main/func/wallet-v4-code.fc#L174).
diff --git a/docs/v3/guidelines/ton-connect/overview.mdx b/docs/v3/guidelines/ton-connect/overview.mdx
index df3637d075..e50a2fcb38 100644
--- a/docs/v3/guidelines/ton-connect/overview.mdx
+++ b/docs/v3/guidelines/ton-connect/overview.mdx
@@ -69,7 +69,6 @@ If you are a wallet developer, you can connect your wallet to TON Connect and en
* [fragment.com](https://fragment.com/) (Ton Connect v.1)
* [ston.fi](https://ston.fi/)
* [ton.diamonds](https://ton.diamonds/)
- * [beta.disintar.io](https://beta.disintar.io/)
* [tegro.finance](https://tegro.finance/liquidity)
* [minter.ton.org](https://minter.ton.org/)
* [libermall.com](https://libermall.com/)
@@ -78,30 +77,19 @@ If you are a wallet developer, you can connect your wallet to TON Connect and en
* [cryptomus.com](https://cryptomus.com/)
* [avanchange.com](https://avanchange.com/)
* [wton.dev](https://wton.dev/)
- * [mint.spiroverse.io/shop](https://mint.spiroverse.io/shop)
* [vk.com/vk_nft_hub](https://vk.com/vk_nft_hub)
* [tonverifier.live](https://verifier.ton.org/)
- * [stickerface.io/member](https://stickerface.io/member)
* [tonstarter.com](https://tonstarter.com/)
- * [cryptogas.shop/ton](https://cryptogas.shop/ton)
* [megaton.fi](https://megaton.fi/)
* [dns.ton.org](https://dns.ton.org/)
* [coinpaymaster.com](https://coinpaymaster.com/)
- * [ton.gagarin.world/app/](https://ton.gagarin.world/app)
* [daolama.co](https://daolama.co/)
- * [marketplace.playmuse.org](http://marketplace.playmuse.org/)
* [ton.vote](https://ton.vote/)
- * [plane.tonfancy.io](https://plane.tonfancy.io/)
- * [pi.oberton.io](https://pi.oberton.io/)
* [business.thetonpay.app](https://business.thetonpay.app/)
* [bridge.orbitchain.io](https://bridge.orbitchain.io/)
- * [connecton-web-new.vercel.app](https://connecton-web-new.vercel.app/)
* [app.fanz.ee/staking](https://app.fanz.ee/staking)
* [testnet.pton.fi](https://testnet.pton.fi/)
- * [tonft.app](https://tonft.app/)
* [cardify.casino](https://cardify.casino/)
- * [4riends.org](https://4riends.org/#/)
- * [tonflex.fi](https://tonflex.fi/swap)
* [soquest.xyz](https://soquest.xyz/)
* [app.evaa.finance](https://app.evaa.finance/)
@@ -113,4 +101,4 @@ To connect your service with the TON Ecosystem, you need to implement the follow
- **TON Connect**. Incorporate the TON Connect protocol within your application.
- **Transactions**. Create specified transaction messages using TON libraries. Dive into the process of [sending messages](/v3/guidelines/ton-connect/guidelines/preparing-messages) with our comprehensive guide.
-- **Payments**. Process payments via the public API ([tonapi](https://tonapi.io/)) or your own indexer, for instance, [gobycicle](http://github.com/gobicycle/bicycle). Learn more from our extensive guide on [asset processing](/develop/dapps/asset-processing).
+- **Payments**. Process payments via the public API ([tonapi](https://tonapi.io/)) or your own indexer, for instance, [gobycicle](http://github.com/gobicycle/bicycle). Learn more from our extensive guide on [asset processing](/v3/guidelines/dapps/asset-processing/payments-processing).
diff --git a/docs/v3/guidelines/ton-connect/wallet.mdx b/docs/v3/guidelines/ton-connect/wallet.mdx
index 2c175f2d83..dd1afe8712 100644
--- a/docs/v3/guidelines/ton-connect/wallet.mdx
+++ b/docs/v3/guidelines/ton-connect/wallet.mdx
@@ -8,12 +8,12 @@ If you're a wallet developer, you can connect your wallet to TON Connect, allowi
Follow these steps to connect your wallet to TON Connect:
-1. Carefully read the [Protocol specifications](/develop/dapps/ton-connect/protocol/).
+1. Carefully read the [Protocol specifications](/v3/guidelines/ton-connect/overview/).
2. Implement the protocol using one of the [SDKs](/v3/guidelines/ton-connect/guidelines/developers).
3. Add your wallet to the [wallets-list](https://github.com/ton-blockchain/wallets-list) with a pull request.
-
+
Start Integration
diff --git a/docs/v3/guidelines/web3/ton-proxy-sites/how-to-open-any-ton-site.md b/docs/v3/guidelines/web3/ton-proxy-sites/how-to-open-any-ton-site.md
index 9514e335de..3a78937835 100644
--- a/docs/v3/guidelines/web3/ton-proxy-sites/how-to-open-any-ton-site.md
+++ b/docs/v3/guidelines/web3/ton-proxy-sites/how-to-open-any-ton-site.md
@@ -10,7 +10,7 @@ we will start with the simplest methods and finish with the most advanced ones.
### Browse through the ton.run or tonp.io
-The simplest way to open a TON Site is through sites like [ton.run](https://ton.run) or [tonp.io](https://tonp.io). You don't need to install or set up anything on your device - just open the **ton.run** or **tonp.io** and you're ready to explore TON Sites.
+The simplest way to open a TON Site is through sites like [ton.run](https://ton.run). You don't need to install or set up anything on your device - just open the **ton.run** or **tonp.io** and you're ready to explore TON Sites.
This method may be suitable for casual browsing of TON Sites or for some checks, but not for regular use, because it also has its drawbacks:
diff --git a/docs/v3/guidelines/web3/ton-proxy-sites/running-your-own-ton-proxy.md b/docs/v3/guidelines/web3/ton-proxy-sites/running-your-own-ton-proxy.md
index 9af4a22888..90faffc5a8 100644
--- a/docs/v3/guidelines/web3/ton-proxy-sites/running-your-own-ton-proxy.md
+++ b/docs/v3/guidelines/web3/ton-proxy-sites/running-your-own-ton-proxy.md
@@ -2,7 +2,7 @@
The aim of this document is to provide a gentle introduction into TON Sites, which are websites accessed through the TON Network. TON Sites may be used as a convenient entry point for other TON Services. In particular, HTML pages downloaded from TON Sites may contain links to `ton://...` URIs representing payments that can be performed by the user by clicking on the link, provided a TON Wallet is installed on the user's device.
-From the technical perspective, TON Sites are very much like standard websites, but they are accessed through the [TON Network](/v3/concepts/dive-into-ton/ton-blockchain/ton-networking) (which is an overlay network inside the Internet) instead of the Internet. More specifically, they have an [ADNL](/v3/documentation/network/protocols/adnl/overview) Address (instead of a more customary IPv4 or IPv6 address) and they accept HTTP queries via a [RLDP](/learn/networking/rldp) protocol (which is a higher-level RPC protocol built upon ADNL, the main protocol of TON Network) instead of the usual TCP/IP. All encryption is handled by ADNL, so there is no need to use HTTPS (i.e. TLS) in case the entry proxy is hosted locally on the user's device.
+From the technical perspective, TON Sites are very much like standard websites, but they are accessed through the [TON Network](/v3/concepts/dive-into-ton/ton-blockchain/ton-networking) (which is an overlay network inside the Internet) instead of the Internet. More specifically, they have an [ADNL](/v3/documentation/network/protocols/adnl/overview) Address (instead of a more customary IPv4 or IPv6 address) and they accept HTTP queries via a [RLDP](/v3/documentation/network/protocols/rldp) protocol (which is a higher-level RPC protocol built upon ADNL, the main protocol of TON Network) instead of the usual TCP/IP. All encryption is handled by ADNL, so there is no need to use HTTPS (i.e. TLS) in case the entry proxy is hosted locally on the user's device.
In order to access existing sites and create new TON Sites one needs special gateways between the "ordinary" internet and the TON Network. Essentially, TON Sites are accessed with the aid of a HTTP->RLDP proxy running locally on the client's machine and they are created by means of a reverse RLDP->HTTP proxy running on a remote web server.
diff --git a/docs/v3/guidelines/web3/ton-storage/storage-daemon.md b/docs/v3/guidelines/web3/ton-storage/storage-daemon.md
index 57dbea4038..154d22fc4a 100644
--- a/docs/v3/guidelines/web3/ton-storage/storage-daemon.md
+++ b/docs/v3/guidelines/web3/ton-storage/storage-daemon.md
@@ -21,7 +21,7 @@ You can compile `storage-daemon` and `storage-damon-cli` from sources using this
## Key concepts
* *Bag of files* or *Bag* - a collection of files distributed through TON Storage
-* TON Storage's network part is based on technology similar to torrents, so the terms *Torrent*, *Bag of files*, and *Bag* will be used interchangeably. It's important to note some differences, however: TON Storage transfers data over [ADNL](/v3/documentation/network/protocols/adnl/overview) by [RLDP](/learn/networking/rldp) protocol, each *Bag* is distributed through its own network overlay, the merkle structure can exist in two versions - with large chunks for efficient downloading and small ones for efficient ownership proof, and [TON DHT](/v3/documentation/network/protocols/dht/ton-dht) network is used for finding peers.
+* TON Storage's network part is based on technology similar to torrents, so the terms *Torrent*, *Bag of files*, and *Bag* will be used interchangeably. It's important to note some differences, however: TON Storage transfers data over [ADNL](/v3/documentation/network/protocols/adnl/overview) by [RLDP](/v3/documentation/network/protocols/rldp) protocol, each *Bag* is distributed through its own network overlay, the merkle structure can exist in two versions - with large chunks for efficient downloading and small ones for efficient ownership proof, and [TON DHT](/v3/documentation/network/protocols/dht/ton-dht) network is used for finding peers.
* A *Bag of files* consists of *torrent info* and a data block.
* The data block starts with a *torrent header* - a structure that contains a list of files with their names and sizes. The files themselves follow in the data block.
* The data block is divided into chunks (128 KB by default), and a *merkle tree* (made of TVM cells) is built on the SHA256 hashes of these chunks. This allows building and verifying *merkle proofs* of individual chunks, as well as efficiently recreating the *Bag* by exchanging only the proof of the modified chunk.
diff --git a/docs/v3/learn/addresses.md b/docs/v3/learn/addresses.md
deleted file mode 100644
index d5b89d9e89..0000000000
--- a/docs/v3/learn/addresses.md
+++ /dev/null
@@ -1,224 +0,0 @@
-# Smart Contract Addresses
-
-This section will describe the specifics of smart contract addresses on TON Blockchain. It will also explain how actors are synonymous with smart contracts on TON.
-
-## Everything is a Smart Contract
-
-On TON, smart contracts are built using the [Actor model](/learn/overviews/ton-blockchain#single-actor). In fact, actors in TON are technically represented as smart contracts. This means that even your wallet is a simple actor (and a smart contract).
-
-Typically, actors process incoming messages, change their internal state, and generate outbound messages as a result. That's why every actor (i.e., smart contract) on TON Blockchain must have an address, so it is able to receive messages from other actors.
-
-:::info EVM EXPERIENCE
-On the Ethereum Virtual Machine (EVM), addresses are completely separate from smart contracts. Feel free to learn more about the differences by reading our article ["Six unique aspects of TON Blockchain that will surprise Solidity developers"](https://blog.ton.org/six-unique-aspects-of-ton-blockchain-that-will-surprise-solidity-developers) by Tal Kol.
-:::
-
-## Address of Smart Contract
-
-Smart contract addresses operating on TON typically consist of two main components:
-
-* **(workchain_id)**: denotes the workchain ID (a signed 32-bit integer)
-
-* **(account_id)** denotes the address of the account (64-512 bits, depending on the workchain)
-
-In the raw address overview section of this documentation, we'll discuss how **(workchain_id, account_id)** pairs present themselves.
-
-### Workchain ID and Account ID
-
-#### Workchain ID
-
-[As we've seen before](/learn/overviews/ton-blockchain#workchain-blockchain-with-your-own-rules), it is possible to create as many as `2^32` workchains operating on TON Blockchain. We also noted how 32-bit prefix smart contract addresses identify and are linked to smart contract addresses within different workchains. This allows smart contracts to send and receive messages to and from different workchains on TON Blockchain.
-
-Nowadays, only the Masterchain (workchain_id=-1) and occasionally the basic workchain (workchain_id=0) are running in TON Blockchain.
-
-Both of them have 256-bit addresses, therefore, we assume that the workchain_id is either 0 or -1, and the address within the workchain is precisely 256 bits.
-
-#### Account ID
-
-All account IDs on TON make use of 256-bit addresses on the Masterchain and Basechain (or basic workchain).
-
-In fact, Account ID’s **(account_id)** defined as hash functions for smart contract objects (particular, the SHA-256). Every smart contract operating on TON Blockchain stores two main components. These include:
-
-1. _Compiled code_. Logic of the smart contract compiled in the form of bytecode.
-2. _Initial state_. The contract's values at the moment of its deployment on-chain.
-
-
-Finally, to accurately derive the contract's address, it is necessary to calculate the hash corresponding to the pair **(Initial code, Initial state)** object. At this time, we won't take a deep dive into how the [TVM](/learn/tvm-instructions/tvm-overview) works, but it's important to understand that account IDs on TON are determined using this formula:
-:
-**account_id = hash(initial code, initial state)**
-
-In time, throughout this documentation, we'll dive deeper into the technical specifications and overview of the TVM and TL-B scheme. Now that we are familiar with the generation of the **account_id** and their interaction with smart contract addresses on TON, let’s explain Raw and User-Friendly addresses.
-
-## Addresses state
-
-Each address can be in one of possible states:
-
-- `nonexist` - there were no accepted transactions on this address, so it doesn't have any data (or the contract was deleted). We can say that initially all 2256 address are in this state.
-- `uninit` - address has some data, which contains balance and meta info. At this state address doesn't have any smart contract code/persistent data yet. An address enters this state, for example, when it was nonexist and some other address sent some tokens to it.
-- `active` - address has smart contract code, persistent data and balance. At this state it can perform some logic during the transaction and change its persistent data. An address enters this state when it was `uninit` and there was an incoming message with state_init param (note, that to be able to deploy this address, hash of `state_init` and `code` must be equal to address).
-- `frozen` - address cannot perform any operations, this state contains only two hashes of the previous state (code and state cells respectively). When an address's storage charge exceeds its balance, it goes into this state. To unfreeze it, you can send an internal message with `state_init` and `code` which store the hashes described earlier and some Toncoin. It can be difficult to recover it, so you should not allow this situation. There is a project to unfreeze the address, which you can find [here](https://unfreezer.ton.org/).
-
-## Raw and User-Friendly Addresses
-
-After providing a brief overview of how smart contract addresses on TON leverage workchains and account IDs (for the Masterchain and Basechain specifically), it is important to understand that these addresses are expressed in two main formats:
-
-* **Raw addresses**: Original full representation of smart contract addresses.
-* **User-friendly addresses**: User-friendly addresses are an enhanced format of raw address that employ better security and ease of use.
-
-Below, we’ll explain more about the differences between these two address types and dive deeper into why user-friendly addresses are used on TON.
-
-### Raw address
-
-Raw smart contract addresses consist of a workchain ID and account ID *(workchain_id, account_id)* and are displayed in the following format:
-
-* [decimal workchain_id\]:[64 hexadecimal digits with account_id\]
-
-
-Provided below, is an example of a raw smart contract address using a workchain ID and account ID together (expressed as **workchain_id** and **account_id**):
-
-`-1:fcb91a3a3816d0f7b8c2c76108b8a9bc5a6b7a55bd79f8ab101c52db29232260`
-
-Notice the `-1` at the start of the address string, which denotes a _workchain_id_ that belongs to the Masterchain.
-
-:::note
-Uppercase letters (such as 'A', ‘B’, ‘C’, ‘D’ etc.) may be used in address strings instead of their lower-case counterparts (such as 'a', ‘b’, ’c’ 'd' etc.).
-:::
-
-#### Issues With Raw Addresses
-
-Using the Raw Address form presents two main issues:
-
-1. When using the raw address format, it's not possible to verify addresses to eliminate errors prior to sending a transaction.
- This means that if you accidentally add or remove characters in the address string prior to sending the transaction, your transaction will be sent to the wrong destination, resulting in loss of funds.
-2. When using the raw address format, it's impossible to add special flags like those used when sending transactions that employ user-friendly addresses.
- To help you better understand this concept, we’ll explain which flags can be used below.
-
-### User-Friendly Address
-
-User-friendly addresses were developed to secure and simplify the experience for TON users who share addresses on the internet (for example, on public messaging platforms or via their email service providers), as well as in the real world.
-
-#### User-Friendly Address Structure
-
-User-friendly addresses are made up of 36 bytes in total and are obtained by generating the following components in order:
-
-1. _[flags - 1 byte]_ — Flags that are pinned to addresses change the way smart contracts react to the received message.
- Flags types that employ the user-friendly address format include:
-
- - isBounceable. Denotes a bounceable or non-bounceable address type. (_0x11_ for "bounceable", _0x51_ for "non-bounceable")
- - isTestnetOnly. Denotes an address type used for testnet purposes only. Addresses beginning with _0x80_ should not be accepted by software running on the production network
- - isUrlSafe. Denotes a deprecated flag that is defined as URL-safe for an address. All addresses are then considered URL-safe.
-2. _\[workchain_id - 1 byte]_ — The workchain ID (_workchain_id_) is defined by a signed 8-bit integer _workchain_id_.
-(_0x00_ for the BaseChain, _0xff_ for the MasterChain)
-3. _\[account_id - 32 byte]_ — The account ID is made up of a ([big-endian](https://www.freecodecamp.org/news/what-is-endianness-big-endian-vs-little-endian/)) 256-bit address in the workchain.
-4. _\[address verification - 2 bytes]_ — In user-friendly addresses, address verification is composed of a CRC16-CCITT signature from the previous 34 bytes. ([Example](https://github.com/andreypfau/ton-kotlin/blob/ce9595ec9e2ad0eb311351c8a270ef1bd2f4363e/ton-kotlin-crypto/common/src/crc32.kt))
- In fact, the idea pertaining to verification for user-friendly addresses is quite similar to the [Luhn algorithm](https://en.wikipedia.org/wiki/Luhn_algorithm), which is used on all credit cards to prevent users from entering non-existing card numbers by mistake.
-
-The addition of these 4 main components means that: `1 + 1 + 32 + 2 = 36` bytes in total (per user-friendly address).
-
-To generate a user-friendly address, the developer must encode all 36 bytes using either:
-- _base64_ (i.e., with digits, upper and lowercase Latin letters, '/' and '+')
-- _base64url_ (with '_' and '-' instead of '/' and '+')
-
-After this process is complete, the generation of a user-friendly address with a length of 48 non-spaced characters is finalized.
-
-:::info DNS ADDRESS FLAGS
-On TON, DNS addresses such as mywallet.ton are sometimes used instead of raw and user-friendly addresses. In fact, DNS addresses are made up of user-friendly addresses and include all the required flags that allow developers to access all the flags from the DNS record within the TON domain.
-:::
-
-#### User-Friendly Address Encoding Examples
-
-For example, the "test giver" smart contract (a special smart contract residing in the testnet masterchain that sends 2 test tokens to anyone who requests them) makes use of the following raw address:
-
-`-1:fcb91a3a3816d0f7b8c2c76108b8a9bc5a6b7a55bd79f8ab101c52db29232260`
-
-The above "test giver" raw address must be converted into the user-friendly address form. This is obtained using either the base64 or base64url forms (that we introduced previously) as follows:
-
-* `kf/8uRo6OBbQ97jCx2EIuKm8Wmt6Vb15+KsQHFLbKSMiYIny` (base64)
-* `kf_8uRo6OBbQ97jCx2EIuKm8Wmt6Vb15-KsQHFLbKSMiYIny` (base64url)
-
-:::info
-Notice that both forms (_base64_ and _base64url_) are valid and must be accepted!
-:::
-
-#### Bounceable vs Non-Bounceable Addresses
-
-The core idea behind the bounceable address flag is sender's funds security.
-
-For example, if the destination smart contract does not exist, or if some issue happens during the transaction, the message will be "bounced" back to the sender and constitute the remainder of the original value of the transaction (minus all transfer and gas fees). This ensures the sender doesn't lose their funds that were sent by accident to an address that cannot accept the transaction.
-
-In relation to bounceable addresses specifically:
-
-1. The **bounceable=false** flag generally means the receiver is a wallet.
-2. The **bounceable=true** flag typically denotes a custom smart contract with its own application logic (for example, a DEX). In this example, non-bounceable messages should not be sent because of security reasons.
-
-Feel free to read more on this topic in our documentation to gain a better understanding of [non-bounceable messages](/develop/smart-contracts/guidelines/non-bouncable-messages).
-
-#### Armored base64 Representations
-
-Additional binary data related to TON Blockchain employs similar "armored" base64 user-friendly address representations. These differentiate from one another depending on the first 4 characters of their byte tag. For example, 256-bit Ed25519 public keys are represented by first creating a 36-byte sequence using the below process in order:
-
-- A single byte tag using the _0x3E_ format denotes a public key
-- A single byte tag using the _0xE6_ format denotes a Ed25519 public key
-- 32 bytes containing the standard binary representation of the Ed25519 public key
-- 2 bytes containing the big-endian representation of CRC16-CCITT of the previous 34 bytes
-
-
-The resulting 36-byte sequence is converted into a 48-character base64 or base64url string in the standard fashion. For example, the Ed25519 public key `E39ECDA0A7B0C60A7107EC43967829DBE8BC356A49B9DFC6186B3EAC74B5477D` (usually represented by a sequence of 32 bytes such as: `0xE3, 0x9E, ..., 0x7D`) presents itself through the "armored" representation as follows:
-
-`Pubjns2gp7DGCnEH7EOWeCnb6Lw1akm538YYaz6sdLVHfRB2`
-
-
-### Converting User-Friendly Addresses and Raw Addresses
-
-The simplest way to convert user-friendly and raw addresses is to use one of several TON APIs and other tools, including:
-
-* [ton.org/address](https://ton.org/address)
-* [dton.io API method](https://dton.io/api/address/0:867ac2b47d1955de6c8e23f57994fad507ea3bcfe2a7d76ff38f29ec46729627)
-* [toncenter API methods in mainnet](https://toncenter.com/api/v2/#/accounts/pack_address_packAddress_get)
-* [toncenter API methods in testnet](https://testnet.toncenter.com/api/v2/#/accounts/pack_address_packAddress_get)
-
-Additionally, there are two ways to convert user-friendly and raw addresses for wallets using JavaScript:
-
-* [Convert address from/to user-friendly or raw form using ton.js](https://github.com/ton-org/ton-core/blob/main/src/address/Address.spec.ts)
-* [Convert address from/to user-friendly or raw form using tonweb](https://github.com/toncenter/tonweb/tree/master/src/utils#address-class)
-
-It's also possible to make use of similar mechanisms using [SDKs](/develop/dapps/apis/sdk).
-
-### Address Examples
-
-Learn more examples on TON Addresses in the [TON Cookbook](/develop/dapps/cookbook#working-with-contracts-addresses).
-
-## Possible problems
-
-When interacting with the TON blockchain, it's crucial to understand the implications of transferring TON coins to `uninit` wallet addresses. This section outlines the various scenarios and their outcomes to provide clarity on how such transactions are handled.
-
-### What happens when you transfer Toncoin to an uninit address?
-
-#### Transaction with `state_init` included
-
-If you include the `state_init` (which consists of the wallet or smart contract's code and data) with your transaction. The smart contract is deployed first using the provided `state_init`. After deployment, the incoming message is processed, similar to sending to an already initialized account.
-
-#### Transaction without `state_init` and `bounce` flag set
-
-The message cannot be delivered to the `uninit` smart contract, and it will be bounced back to the sender. After deducting the consumed gas fees, the remaining amount is returned to the sender's address.
-
-#### Transaction without `state_init` and `bounce` flag unset
-
-The message cannot be delivered, but it will not bounce back to the sender. Instead, the sent amount will be credited to the receiving address, increasing its balance even though the wallet is not yet initialized. They will be stored there until the address holder deploys a smart wallet contract and then they can access the balance.
-
-#### How to do it right
-
-The best way to deploy a wallet is to send some TON to its address (which is not yet initialized) with the `bounce` flag cleared. After this step, the owner can deploy and initialize the wallet using funds at the current uninitialized address. This step usually occurs on the first wallet operation.
-
-### The TON blockchain implements protection against erroneous transactions
-
-In the TON blockchain, standard wallets and apps automatically manage the complexities of transactions to uninitialized addresses by using bounceable and non-bounceable address, which are described [here](#bounceable-vs-non-bounceable-addresses). It is common practice for wallets, when sending coins to non-initialized addresses, to send coins to both bounceable and non-bounceable addresses without return.
-
-If there is a need to quickly get an address in bounceable/non-bounceable form this can be done [here](https://ton.org/address/).
-
-### Responsibility for custom products
-
-If you are developing a custom product on the TON blockchain, it is essential to implement similar checks and logic:
-
-Ensure your application verifies whether the recipient address is initialized before sending funds.
-Based on the address state, use bounceable addresses for user smart contracts with custom application logic to ensure funds are returned. Use non-bounceable addresses for wallets.
-
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/develop/overview.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/develop/overview.mdx
index 55c892419c..298026af5f 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/develop/overview.mdx
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/develop/overview.mdx
@@ -134,7 +134,7 @@ RU
### API 和 SDK
-- [API](/develop/dapps/apis)
+- [API](/v3/guidelines/dapps/apis-sdks/api-types)
- [SDK](/develop/dapps/apis/sdk)
## 常见问题解答
diff --git a/navbar.js b/navbar.js
index 05a1c4b5f2..bca24a72c8 100644
--- a/navbar.js
+++ b/navbar.js
@@ -50,7 +50,7 @@ module.exports = {
// },
{
type: 'dropdown',
- to: 'develop/dapps',
+ to: '/v3/guidelines/dapps/overview',
position: 'left',
label: 'DApps',
items: [
@@ -167,7 +167,7 @@ module.exports = {
label: 'Smart Contracts',
},
{
- to: '/develop/dapps/',
+ to: '/v3/guidelines/dapps/overview',
label: 'DApps',
},
{
diff --git a/package-lock.json b/package-lock.json
index 9626228493..614dff4233 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,9 +18,11 @@
"@easyops-cn/docusaurus-search-local": "^0.44.5",
"@mdx-js/react": "^3.0.1",
"@saucelabs/theme-github-codeblock": "^0.1.1",
+ "axios": "^1.7.7",
"clsx": "^2.1.1",
"docusaurus-plugin-sass": "^0.2.5",
"dotenv": "^16.4.5",
+ "markdown-link-extractor": "^4.0.2",
"markdown-to-jsx": "^7.5.0",
"prism-react-renderer": "^2.4.0",
"react": "^18.3.1",
@@ -6046,6 +6048,12 @@
"astring": "bin/astring"
}
},
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "license": "MIT"
+ },
"node_modules/at-least-node": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
@@ -6092,6 +6100,17 @@
"postcss": "^8.1.0"
}
},
+ "node_modules/axios": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
+ "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
"node_modules/babel-loader": {
"version": "9.2.1",
"resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz",
@@ -6863,6 +6882,18 @@
"node": ">=10"
}
},
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "license": "MIT",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/comma-separated-tokens": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
@@ -7981,6 +8012,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -9373,6 +9413,20 @@
"node": ">=6"
}
},
+ "node_modules/form-data": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
+ "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/form-data-encoder": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
@@ -10201,6 +10255,15 @@
"integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
"license": "MIT"
},
+ "node_modules/html-link-extractor": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/html-link-extractor/-/html-link-extractor-1.0.5.tgz",
+ "integrity": "sha512-ADd49pudM157uWHwHQPUSX4ssMsvR/yHIswOR5CUfBdK9g9ZYGMhVSE6KZVHJ6kCkR0gH4htsfzU6zECDNVwyw==",
+ "license": "MIT",
+ "dependencies": {
+ "cheerio": "^1.0.0-rc.10"
+ }
+ },
"node_modules/html-minifier-terser": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz",
@@ -11403,6 +11466,16 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/markdown-link-extractor": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/markdown-link-extractor/-/markdown-link-extractor-4.0.2.tgz",
+ "integrity": "sha512-5cUOu4Vwx1wenJgxaudsJ8xwLUMN7747yDJX3V/L7+gi3e4MsCm7w5nbrDQQy8nEfnl4r5NV3pDXMAjhGXYXAw==",
+ "license": "ISC",
+ "dependencies": {
+ "html-link-extractor": "^1.0.5",
+ "marked": "^12.0.1"
+ }
+ },
"node_modules/markdown-table": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz",
@@ -11425,6 +11498,18 @@
"react": ">= 0.14.0"
}
},
+ "node_modules/marked": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz",
+ "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==",
+ "license": "MIT",
+ "bin": {
+ "marked": "bin/marked.js"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
"node_modules/mdast-util-directive": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz",
@@ -15401,6 +15486,12 @@
"node": ">= 0.10"
}
},
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "license": "MIT"
+ },
"node_modules/punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
diff --git a/package.json b/package.json
index 1b70c8da4b..74fcd3a472 100644
--- a/package.json
+++ b/package.json
@@ -31,9 +31,11 @@
"@easyops-cn/docusaurus-search-local": "^0.44.5",
"@mdx-js/react": "^3.0.1",
"@saucelabs/theme-github-codeblock": "^0.1.1",
+ "axios": "^1.7.7",
"clsx": "^2.1.1",
"docusaurus-plugin-sass": "^0.2.5",
"dotenv": "^16.4.5",
+ "markdown-link-extractor": "^4.0.2",
"markdown-to-jsx": "^7.5.0",
"prism-react-renderer": "^2.4.0",
"react": "^18.3.1",
@@ -49,8 +51,8 @@
"@typescript-eslint/parser": "^6.19.0",
"cspell": "^8.14.2",
"eslint": "^8.56.0",
- "typescript": "^5.6.2",
- "husky": "^9.1.6"
+ "husky": "^9.1.6",
+ "typescript": "^5.6.2"
},
"browserslist": {
"production": [
diff --git a/redirects/redirects.json b/redirects/redirects.json
index ad016641d7..98d95724b3 100644
--- a/redirects/redirects.json
+++ b/redirects/redirects.json
@@ -810,5 +810,9 @@
{
"from": "/develop/smart-contracts/README",
"to": "/v3/documentation/smart-contracts/overview"
+ },
+ {
+ "from": "/develop/dapps/README",
+ "to": "/v3/guidelines/dapps/overview"
}
-]
+]
\ No newline at end of file
diff --git a/mv.py b/scripts/handle_moves.py
similarity index 98%
rename from mv.py
rename to scripts/handle_moves.py
index 8effa94726..d3ba56eef9 100644
--- a/mv.py
+++ b/scripts/handle_moves.py
@@ -60,9 +60,6 @@ def replace_word_in_file(file_path, target, replacement):
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
- target = target.split("README")[0]
- replacement = replacement.split("README")[0]
-
if target[0] == "/" and replacement[0] == "/":
target = target[1:]
replacement = replacement[1:]
diff --git a/sidebars/develop.js b/sidebars/develop.js
deleted file mode 100644
index ba00749466..0000000000
--- a/sidebars/develop.js
+++ /dev/null
@@ -1,386 +0,0 @@
-/**
- * @type {import('@docusaurus/plugin-content-docs').SidebarConfig}
- */
-module.exports = [
- 'develop/overview',
- 'develop/howto/faq',
- {
- 'type': 'html',
- 'value': ' ',
- },
- {
- 'type': 'html',
- 'value': '',
- },
- 'develop/smart-contracts/README',
- 'learn/overviews/addresses',
- 'develop/blockchain/shards',
- 'develop/blockchain/sharding-lifecycle',
- {
- type: 'category',
- label: 'Getting Started',
- items: [
- 'develop/smart-contracts/sdk/javascript',
- 'develop/smart-contracts/environment/ide-plugins',
- 'develop/smart-contracts/environment/testnet',
- ],
- },
- {
- type: 'category',
- label: 'Message Management',
- items: [
- 'develop/smart-contracts/guidelines/ecosystem-messages-layout',
- 'develop/smart-contracts/guidelines/message-delivery-guarantees',
- 'develop/smart-contracts/messages',
- 'develop/smart-contracts/guidelines/message-modes-cookbook',
- 'develop/smart-contracts/guidelines/internal-messages',
- 'develop/smart-contracts/guidelines/external-messages',
- 'develop/smart-contracts/guidelines/non-bounceable-messages',
- ],
- },
- {
- type: 'category',
- label: 'Transaction Fees',
- items: [
- 'develop/smart-contracts/fees',
- 'develop/howto/fees-low-level',
- 'develop/smart-contracts/guidelines/accept',
- 'develop/smart-contracts/guidelines/processing',
- ],
- },
- {
- type: 'category',
- label: 'Contracts Specification',
- items: [
- 'participate/wallets/contracts',
- 'participate/wallets/highload',
- 'participate/network-maintenance/vesting-contract',
- 'develop/smart-contracts/governance',
- 'participate/network-maintenance/nominator-pool',
- 'participate/network-maintenance/single-nominator',
- 'develop/smart-contracts/core-contracts/precompiled',
- 'develop/research-and-development/minter-flow',
- 'develop/smart-contracts/examples',
- ],
- },
- {
- type: 'category',
- label: 'FunC language',
- items: [
- {
- type: 'doc',
- id: 'develop/func/overview',
- },
- {
- type: 'doc',
- id: 'develop/func/cookbook',
- },
- {
- type: 'category',
- label: 'Documentation',
- items: [
- 'develop/func/types',
- 'develop/func/comments',
- 'develop/func/literals_identifiers',
- 'develop/func/functions',
- 'develop/func/global_variables',
- 'develop/func/compiler_directives',
- 'develop/func/statements',
- 'develop/func/builtins',
- 'develop/func/dictionaries',
- 'develop/func/stdlib',
- ],
- },
- 'develop/smart-contracts/libraries',
- ],
- },
- {
- type: 'category',
- label: 'Fift language',
- items: [
- 'develop/fift/overview',
- 'develop/fift/fift-and-tvm-assembly',
- 'develop/fift/fift-deep-dive',
- ],
- },
- {
- 'type': 'html',
- 'value': ' ',
- },
- {
- 'type': 'html',
- 'value': '',
- },
- {
- type: 'category',
- label: 'DeFi Principles',
- items: [
- 'develop/dapps/defi/coins',
- 'develop/dapps/defi/tokens',
- {
- type: 'doc',
- label: 'NFT Use Cases in TON',
- id: 'develop/dapps/defi/nft',
- },
- 'develop/dapps/defi/subscriptions',
- 'develop/dapps/defi/ton-payments',
- ],
- },
- {
- type: 'category',
- label: 'Assets',
- items: [
- 'develop/dapps/asset-processing/overview',
- // 'develop/dapps/asset-processing/README', // TODO: divide
- // 'develop/dapps/asset-processing/jettons', // TODO: divide
- // 'develop/dapps/asset-processing/mintless-jettons', // TODO: divide
- 'develop/dapps/asset-processing/usdt',
- // 'develop/dapps/asset-processing/nfts', // TODO: divide
- ],
- },
- {
- type: 'category',
- label: 'Oracles',
- items: [
- 'develop/oracles/about_blockchain_oracles',
- {
- type: 'category',
- label: 'Oracles in TON',
- items: [
- 'develop/oracles/red_stone',
- ],
- },
- ],
- },
- {
- type: 'link',
- label: 'Open-Source and Decentralization in TON',
- href: 'https://defi.org/ton/',
- },
- {
- 'type': 'html',
- 'value': ' ',
- },
- {
- 'type': 'html',
- 'value': '',
- },
- 'participate/explorers',
- {
- type: 'category',
- label: 'Cross-chain Bridges',
- items: [
- {
- type: 'doc',
- label: 'Overview',
- id: 'participate/crosschain/overview',
- },
- {
- type: 'doc',
- label: 'Bridges Addresses',
- id: 'participate/crosschain/bridge-addresses',
- },
- ],
- },
- {
- type: 'category',
- label: 'Blockchain Nodes',
- items: [
- 'participate/nodes/node-types',
- {
- type: 'category',
- label: 'MyTonCtrl',
- items: [
- 'participate/run-nodes/mytonctrl',
- 'participate/run-nodes/alerting',
- 'participate/run-nodes/mytonctrl-status',
- ],
- },
- 'participate/run-nodes/node-commands',
- {
- type: 'category',
- label: 'Validation',
- items: [
- {
- type: 'doc',
- label: 'Proof of Stake',
- id: 'participate/network-maintenance/staking-incentives',
- },
- 'participate/nodes/collators',
- ],
- },
- ],
- },
- {
- 'type': 'html',
- 'value': ' ',
- },
- {
- 'type': 'html',
- 'value': '',
- },
- {
- type: 'category',
- label: 'Network Configurations',
- items: [
- 'develop/howto/network-configs',
- 'develop/howto/blockchain-configs',
- 'develop/howto/config-params',
- ],
- },
- {
- type: 'category',
- label: 'Network Protocols',
- items: [
- {
- type: 'category',
- label: 'ADNL',
- items: [
- {
- type: 'doc',
- label: 'Overview',
- id: 'learn/networking/adnl',
- },
- 'learn/networking/low-level-adnl', // TODO: MERGE ADNL
- 'develop/network/adnl-tcp',
- 'develop/network/adnl-udp',
- ],
- },
- {
- type: 'category',
- label: 'DHT',
- items: [
- {
- type: 'doc',
- label: 'Overview',
- id: 'learn/networking/ton-dht',
- },
- 'develop/network/dht',
- ]
- },
- 'develop/network/rldp',
- 'develop/network/overlay',
- ],
- },
- {
- 'type': 'html',
- 'value': ' ',
- },
- {
- 'type': 'html',
- 'value': '',
- },
- {
- type: 'category',
- label: 'TL-B',
- items: [
- 'develop/data-formats/cell-boc',
- 'develop/data-formats/exotic-cells',
- 'develop/data-formats/library-cells',
- 'develop/data-formats/proofs',
- 'develop/data-formats/tl-b-language',
- 'develop/data-formats/tl-b-types',
- 'develop/research-and-development/boc',
- 'develop/data-formats/msg-tlb',
- 'develop/data-formats/block-layout',
- 'develop/data-formats/transaction-layout',
- 'develop/data-formats/crc32',
- 'develop/data-formats/tlb-ide',
- 'develop/data-formats/tlb-tools',
- ],
- },
- 'develop/data-formats/tl',
- {
- 'type': 'html',
- 'value': ' ',
- },
- {
- 'type': 'html',
- 'value': '',
- },
- 'learn/tvm-instructions/tvm-overview',
- 'learn/tvm-instructions/tvm-initialization',
- 'learn/tvm-instructions/tvm-exit-codes',
- {
- type: 'link',
- label: 'TVM Instructions',
- href: '/learn/tvm-instructions/instructions',
- },
- {
- type: 'category',
- label: 'TVM Changelog',
- items: [
- 'learn/tvm-instructions/fee-calculation-instructions',
- 'learn/tvm-instructions/tvm-upgrade-2023-07',
- ],
- },
- {
- 'type': 'html',
- 'value': ' ',
- },
- {
- 'type': 'html',
- 'value': '',
- },
- 'develop/companies/auditors',
- 'develop/companies/outsource',
- {
- 'type': 'html',
- 'value': ' ',
- },
- {
- 'type': 'html',
- 'value': '',
- },
- {
- type: 'doc',
- label: 'Overview',
- id: 'learn/docs',
- },
- {
- type: 'link',
- label: 'TON',
- href: 'https://docs.ton.org/ton.pdf',
- },
- {
- type: 'link',
- label: 'TON Virtual Machine',
- href: 'https://docs.ton.org/tvm.pdf',
- },
- {
- type: 'link',
- label: 'TON Blockchain',
- href: 'https://docs.ton.org/tblkch.pdf',
- },
- {
- type: 'link',
- label: 'Catchain Consensus Protocol',
- href: 'https://docs.ton.org/catchain.pdf',
- },
- {
- 'type': 'html',
- 'value': ' ',
- },
- {
- 'type': 'html',
- 'value': '',
- },
- {
- type: 'category',
- label: 'Archived',
- link: {
- type: 'generated-index',
- title: 'Archive',
- slug: '/develop/archive',
- keywords: ['archive'],
- },
- items: [
- 'develop/archive/pow-givers',
- 'develop/archive/mining',
- 'develop/archive/tg-bot-integration',
- 'develop/archive/tg-bot-integration-py',
- 'develop/smart-contracts/compile/README',
- 'develop/smart-contracts/environment/installation',
- ]
- }
-];
diff --git a/sidebars/guidelines.js b/sidebars/guidelines.js
index a7468db0c7..baa54b2502 100644
--- a/sidebars/guidelines.js
+++ b/sidebars/guidelines.js
@@ -106,7 +106,7 @@ module.exports = [
'type': 'html',
'value': '',
},
- 'develop/dapps/README',
+ 'v3/guidelines/dapps/overview',
'v3/guidelines/dapps/cookbook',
{
type: 'category',
diff --git a/sidebars/learn.js b/sidebars/learn.js
deleted file mode 100644
index 6e60790ecc..0000000000
--- a/sidebars/learn.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * @type {import('@docusaurus/plugin-content-docs').SidebarConfig}
- */
-module.exports = [
- 'learn/introduction', // TODO: Change to
- 'learn/glossary',
- {
- 'type': 'html',
- 'value': ' ',
- },
- {
- 'type': 'html',
- 'value': '',
- },
- 'learn/introduction',
- {
- type: 'category',
- label: 'TON Blockchain',
- items: [
- 'learn/overviews/ton-blockchain',
- 'v3/concepts/ton-blockchain/smart-contract-addresses',
- 'participate/wallets/apps',
- 'learn/overviews/cells',
- 'learn/networking/overview',
- 'learn/overviews/blockchain-comparison',
- ],
- },
- {
- type: 'category',
- label: 'Go from Ethereum?',
- items: [
- 'develop/ethereum-to-ton/difference-of-blockchains',
- 'develop/ethereum-to-ton/tvm-vs-evm',
- 'develop/ethereum-to-ton/solidity-vs-func',
- 'develop/ethereum-to-ton/blockchain-services',
- ]
- },
- 'learn/academy/academy-overview',
-];
diff --git a/src/theme/Footer/config.ts b/src/theme/Footer/config.ts
index 7f72491dd1..fec62a81e3 100644
--- a/src/theme/Footer/config.ts
+++ b/src/theme/Footer/config.ts
@@ -54,7 +54,7 @@ const DNS_URL = "https://dns.ton.org/";
const CAREERS_URL = "https://jobs.ton.org/jobs";
const BUG_BOUNTY_URL = "https://github.com/ton-blockchain/bug-bounty";
const TON_OVERFLOW_URL = "https://tonresear.ch";
-const TON_CONCEPT_URL = "https://docs.ton.org/v3/concepts/dive-into-ton/introduction";
+const TON_CONCEPT_URL = "v3/concepts/dive-into-ton/introduction";
const TON_FOOTSTEPS = "https://github.com/ton-society/ton-footsteps";
const TON_BLOG_PRESS_RELEASES_URL = "https://blog.ton.org/category/news";
const TONSTAT_URL = "https://www.tonstat.com/";
@@ -96,7 +96,7 @@ export const FOOTER_COLUMN_LINKS_EN = [
{
headerLangKey: "Learn",
links: [
- { langKey: "TON Concept", url: FOOTER_TON_CONCEPT_URL }, // it doesn't work, cause we use updated doc URL
+ { langKey: "TON Concept", url: FOOTER_TON_CONCEPT_URL }, // it doesn't work, cause we use updated doc URL
{ langKey: "Decentralized Network", url: FOOTER_DECENTRALIZED_NETWORK },
{ langKey: "Roadmap", url: PAGE_ROADMAP },
{ langKey: "TonStat", url: TONSTAT_URL },