diff --git a/.vale/config/vocabularies/Custom/accept.txt b/.vale/config/vocabularies/Custom/accept.txt
index 3d51dc0c..fb55bfe1 100644
--- a/.vale/config/vocabularies/Custom/accept.txt
+++ b/.vale/config/vocabularies/Custom/accept.txt
@@ -30,6 +30,7 @@ Brodie
Brujn
Buildx
Burnosov
+Buterin
CEX(s|es)?
CLion
CMake
@@ -99,6 +100,7 @@ Interchain
Jetbrains
Jettons
Kademlia
+Kelmer
Kiayas
Kol
Kolya
@@ -115,6 +117,7 @@ MTProto
MTon
Mainnet
Masterchain
+Maymounkov
Memoizing
Merkle
Metaverse
@@ -144,6 +147,7 @@ PRNGs
Pavel
Pease
Permissionless
+Peyton
Phaser
Precompiled
Preloads
@@ -171,6 +175,7 @@ Schnorr
Sedov
Serializable
Sharding
+Shokrollahi
Shostak
Singlechain
Snarkjs
@@ -178,6 +183,7 @@ Solana
Soulbound
Spellbook
Stablecoins?
+Syverson
TEPs
TMAs
TVM('s|s)?
@@ -207,6 +213,7 @@ Unary
Underload
Uninit
Universa
+Upgradability
VMs
VPNs
VSCodium
@@ -371,6 +378,7 @@ codepages?
codepoints?
codespaces?
codomain
+cofactors?
combinator('s|s)?
componentwise
composable
@@ -481,6 +489,7 @@ Gigatons
Gilmanova
Gitpod
globals
+Goldschlag
Golev
Grafana
globals
@@ -538,7 +547,9 @@ Kol
Kol
Kolya
kTon
+Larimer
Latinisms
+Luby
leaderboard
leaderboard
linkability
@@ -601,6 +612,7 @@ multisignature
mytoncore
mytonctrl
namespace
+Nakamoto
Namespace
namespace
namespaces?
@@ -773,6 +785,7 @@ stdlib
STON.fi
styleguide
subarrays
+subcases?
subcell
subcolumn
subcolumnTblkch
diff --git a/language/fift/whitepaper.mdx b/language/fift/whitepaper.mdx
index 4f43d371..da36bbea 100644
--- a/language/fift/whitepaper.mdx
+++ b/language/fift/whitepaper.mdx
@@ -7,7 +7,9 @@ noindex: "true"
import { Aside } from '/snippets/aside.jsx';
-> Nikolai Durov. July 4, 2019
+**Author**: Nikolai Durov
+**Date**: July 4, 2019
+: [Original whitepaper, PDF](/resources/pdfs/fiftbase.pdf)
## Introduction
diff --git a/ton/catchain.mdx b/ton/catchain.mdx
index 1e9708b9..7a76169e 100644
--- a/ton/catchain.mdx
+++ b/ton/catchain.mdx
@@ -1,11 +1,12 @@
---
title: "Catchain consensus: an outline"
-sidebarTitle: "Catchain Consensus"
+sidebarTitle: "Catchain consensus"
description: "Whitepaper by Dr. Nikolai Durov"
---
-**Nikolai Durov**
-_February 19, 2020_
+**Authors**: Nikolai Durov
+**Date**: February 19, 2020
+: [Original whitepaper, PDF](/resources/pdfs/catchain.pdf)
## Abstract
diff --git a/ton/tblkch.mdx b/ton/tblkch.mdx
index 032db947..9ddf92b7 100644
--- a/ton/tblkch.mdx
+++ b/ton/tblkch.mdx
@@ -4,8 +4,9 @@ sidebarTitle: "TON Blockchain"
description: "Whitepaper by Dr. Nikolai Durov"
---
-**Nikolai Durov**
-*February 8, 2020*
+**Authors**: Nikolai Durov
+**Date**: February 8, 2020
+: [Original whitepaper, PDF](/resources/pdfs/tblkch.pdf)
## Abstract
diff --git a/ton/ton.mdx b/ton/ton.mdx
index fde43c6e..ca687a08 100644
--- a/ton/ton.mdx
+++ b/ton/ton.mdx
@@ -4,9 +4,9 @@ sidebarTitle: "The Open Network"
description: "Whitepaper by Dr. Nikolai Durov"
---
-based on the work of Dr. Nikolai Durov
-
-**July 26, 2021**
+**Authors**: Nikolai Durov, TON Core
+**Date**: July 26, 2021
+: [Original whitepaper, PDF](/resources/pdfs/ton.pdf)
## Abstract
diff --git a/ton/tvm.mdx b/ton/tvm.mdx
index 953e1cff..925c0d94 100644
--- a/ton/tvm.mdx
+++ b/ton/tvm.mdx
@@ -4,8 +4,9 @@ sidebarTitle: "TVM"
description: "Whitepaper by Dr. Nikolai Durov"
---
-*Nikolai Durov*
-*March 23, 2020*
+**Author**: Nikolai Durov
+**Date**: March 23, 2020
+: [Original whitepaper, PDF](/resources/pdfs/tvm.pdf)
## Abstract
@@ -643,7 +644,7 @@ Other cell creation primitives serialize bitstrings (i.e., cell slices without r
In addition to the cell serialization primitives for certain built-in value types described above, there are simple primitives that create a new empty Builder and push it into the stack (`NEWC`), or transform a Builder into a Cell (`ENDC`), thus finishing the cell creation process. An `ENDC` can be combined with a `STREF` into a single instruction `ENDCST`, which finishes the creation of a cell and immediately stores a reference to it in an “outer” Builder. There are also primitives that obtain the quantity of data bits or references already stored in a Builder, and check how many data bits or references can be stored.
-### 3.2.11 Taxonomy of cell deserialisation primitives
+### 3.2.11 Taxonomy of cell deserialization primitives
Cell parsing, or deserialization, primitives can be classified as described in [3.2.6](#3-2-6-taxonomy-of-cell-creation-serialization-primitives), with the following modifications:
@@ -658,7 +659,7 @@ Again, more detailed information about these instructions is provided in [A.7.2]
### 3.2.12 Other cell slice primitives
-In addition to the cell deserialisation primitives outlined above, TVM provides some obvious primitives for initializing and completing the cell deserialization process. For instance, one can convert a Cell into a Slice (`CTOS`), so that its deserialisation might begin; or check whether a Slice is empty, and generate an exception if it is not (`ENDS`); or deserialize a cell reference and immediately convert it into a Slice (`LDREFTOS`, equivalent to two instructions `LDREF` and `CTOS`).
+In addition to the cell deserialization primitives outlined above, TVM provides some obvious primitives for initializing and completing the cell deserialization process. For instance, one can convert a Cell into a Slice (`CTOS`), so that its deserialization might begin; or check whether a Slice is empty, and generate an exception if it is not (`ENDS`); or deserialize a cell reference and immediately convert it into a Slice (`LDREFTOS`, equivalent to two instructions `LDREF` and `CTOS`).
### 3.2.13 Modifying a serialized value in a cell
@@ -967,7 +968,7 @@ The “current continuation” `cc` is an important part of the total state of T
TVM usually performs the following operations:
-If the current continuation `cc` is an ordinary one, it decodes the first instruction from the Slice `code`, similarly to the way other cells are deserialized by TVM `LD*` primitives (cf. [3.2](#3-2-data-manipulation-instructions-and-cells) and [3.2.11](#3-2-11-taxonomy-of-cell-deserialisation-primitives)): it decodes the opcode first, and then the parameters of the instruction (e.g., 4-bit fields indicating “stack registers” involved for stack manipulation primitives, or constant values for “push constant” or “literal” primitives). The remainder of the Slice is then put into the code of the new `cc`, and the decoded operation is executed on the current stack. This entire process is repeated until there are no operations left in `cc.code`.
+If the current continuation `cc` is an ordinary one, it decodes the first instruction from the Slice `code`, similarly to the way other cells are deserialized by TVM `LD*` primitives (cf. [3.2](#3-2-data-manipulation-instructions-and-cells) and [3.2.11](#3-2-11-taxonomy-of-cell-deserialization-primitives)): it decodes the opcode first, and then the parameters of the instruction (e.g., 4-bit fields indicating “stack registers” involved for stack manipulation primitives, or constant values for “push constant” or “literal” primitives). The remainder of the Slice is then put into the code of the new `cc`, and the decoded operation is executed on the current stack. This entire process is repeated until there are no operations left in `cc.code`.
If the code is empty (i.e., contains no bits of data and no references), or if a (rarely needed) explicit subroutine return (`RET`) instruction is encountered, the current continuation is discarded, and the “return continuation” from control register `c0` is loaded into `cc` instead (this process is discussed in more detail starting in [4.1.6](#4-1-6-switching-to-another-continuation%3A-jmp-and-ret)).[20](#footnote-20) Then the execution continues by parsing operations from the new current continuation.
@@ -1445,7 +1446,7 @@ In most cases, simple encodings of complete instructions are used. Simple encodi
If a (generic) instruction uses a simple encoding with an `ℓ`-bit opcode, then the instruction will utilize `2⁻ℓ` portion of the opcode space. This observation might be useful for considerations described in [5.2.9](#5-2-9-almost-optimal-encodings) and [5.2.10](#5-2-10-example-stack-manipulation-primitives).
### 5.2.12 Optimizing code density further: Huffman codes
-One might construct optimally dense binary code for the set of all complete instructions, provided their probabilities or frequences in real code are known. This is the well-known Huffman code (for the given probability distribution). However, such code would be highly unsystematic and hard to decode.
+One might construct optimally dense binary code for the set of all complete instructions, provided their probabilities or frequencies in real code are known. This is the well-known Huffman code (for the given probability distribution). However, such code would be highly unsystematic and hard to decode.
### 5.2.13 Practical instruction encodings
In practice, instruction encodings used in TVM and other virtual machines offer a compromise between code density and ease of encoding and decoding. Such a compromise may be achieved by selecting simple encodings (cf. [5.2.11](#5-2-11-simple-encodings-of-instructions)) for all instructions (maybe with separate simple encodings for some often used variants, such as `XCHG s0,s(i)` among all `XCHG s(i),s(j)`), and allocating opcode space for such simple encodings using the heuristics outlined in [5.2.9](#5-2-9-almost-optimal-encodings) and [5.2.10](#5-2-10-example-stack-manipulation-primitives); this is the approach currently used in TVM.
@@ -2412,7 +2413,7 @@ $0 \leq x \leq 127$, and removes `sss` from `s` on success.
returns 0 on failure.
* `D741` — `SCHKBITS (sl– )`, checks whether there are at least `l` data bits
- in Slice s. If this is not the case, throws a cell deserialisation (i.e., cell
+ in Slice s. If this is not the case, throws a cell deserialization (i.e., cell
underflow) exception.
* `D742` — `SCHKREFS (sr–)`, checks whether there are at least `r` references
diff --git a/ton/whitepapers.mdx b/ton/whitepapers.mdx
index 5fa087fe..aed08bf8 100644
--- a/ton/whitepapers.mdx
+++ b/ton/whitepapers.mdx
@@ -1,6 +1,6 @@
---
title: "Whitepapers"
-sidebar: "Overview"
+sidebarTitle: "Overview"
---
import { Aside } from '/snippets/aside.jsx';
diff --git a/tvm/instructions.mdx b/tvm/instructions.mdx
index d84a2d5e..7a44aafa 100644
--- a/tvm/instructions.mdx
+++ b/tvm/instructions.mdx
@@ -2280,7 +2280,7 @@ Category: cell_parse Cell Parse
#### `D741` SCHKBITS
Fift: SCHKBITS
-Description: Checks whether there are at least `l` data bits in _Slice_ `s`. If this is not the case, throws a cell deserialisation (i.e., cell underflow) exception.
+Description: Checks whether there are at least `l` data bits in _Slice_ `s`. If this is not the case, throws a cell deserialization (i.e., cell underflow) exception.
Category: cell_parse Cell Parse
#### `D742` SCHKREFS