diff --git a/docs/architecture.md b/docs/architecture.md
index 7db03db85..febff8845 100644
--- a/docs/architecture.md
+++ b/docs/architecture.md
@@ -74,7 +74,7 @@ This protocol is responsible for interpreting the operations in each block.
It also provides the logic that identifies erroneous blocks.
Updates to the protocol can change this logic through a voting process, using dedicated voting operations such as protocol proposals or protocol upvotes.
-For information about the voting process, see [Governance](./architecture/governance).
+For information about the voting process, see [Governance](/architecture/governance).
The protocol has constants such as the time between blocks and the amount of tez that an account must stake to be a baker.
These constants can be different for different Tezos networks.
@@ -116,7 +116,7 @@ For example, different bakers may implement different transaction selection stra
The node accepts calls from clients through its RPC interface.
It has control over which clients to accept calls from, which calls to accept, or whether to accept RPC calls at all.
-For more information on the RPC interface, see [The RPC interface](./architecture/rpc).
+For more information on the RPC interface, see [The RPC interface](/architecture/rpc).
### The baker daemon
@@ -167,9 +167,9 @@ They are an important part of block explorers, which are applications that provi
For more information about the architecture of Tezos, see:
-- [Accounts and addresses](./architecture/accounts)
-- [Tokens](./architecture/tokens)
-- [Smart Optimistic Rollups](./architecture/smart-rollups)
-- [Governance](./architecture/governance)
-- [Indexers](./developing/information/indexers)
-- [Block explorers](./developing/information/block-explorers)
+- [Accounts and addresses](/architecture/accounts)
+- [Tokens](/architecture/tokens)
+- [Smart Optimistic Rollups](/architecture/smart-rollups)
+- [Governance](/architecture/governance)
+- [Indexers](/developing/information/indexers)
+- [Block explorers](/developing/information/block-explorers)
diff --git a/docs/architecture/accounts.md b/docs/architecture/accounts.md
index bcf1c8647..ca975e1ba 100644
--- a/docs/architecture/accounts.md
+++ b/docs/architecture/accounts.md
@@ -13,7 +13,7 @@ Tezos uses these types of accounts:
Any wallet application or the Octez command-line tool can create user accounts.
- Smart contract accounts (sometimes known as _originated accounts_) store immutable code, mutable storage, tez (ꜩ), and tickets.
-See [Smart contracts](../smart-contracts).
+See [Smart contracts](/smart-contracts).
### Revealing accounts
@@ -31,4 +31,4 @@ To reveal an account, send any transaction from it, such as calling a smart cont
- Smart Rollups have addresses, but are not accounts because they cannot store tez.
Their addresses start with "SR1".
They have a tree of commitments attached to them.
-See [Smart Optimistic Rollups](./smart-rollups).
+See [Smart Optimistic Rollups](/architecture/smart-rollups).
diff --git a/docs/architecture/data-availability-layer.md b/docs/architecture/data-availability-layer.md
index ee8e26f46..951a23ecf 100644
--- a/docs/architecture/data-availability-layer.md
+++ b/docs/architecture/data-availability-layer.md
@@ -8,7 +8,7 @@ last_update:
The Data Availability Layer (DAL) is a companion peer-to-peer network for the Tezos blockchain, designed to provide additional data bandwidth to Smart Rollups.
It allows users to share large amounts of data in a way that is decentralized and permissionless, because anyone can join the network and post and read data on it.
-For a tutorial on how to use the DAL, see [Implement a file archive with the DAL and a Smart Rollup](../tutorials/build-files-archive-with-dal).
+For a tutorial on how to use the DAL, see [Implement a file archive with the DAL and a Smart Rollup](/tutorials/build-files-archive-with-dal).
## How the DAL works
@@ -108,7 +108,7 @@ Sending data to the DAL is a two-step process:
with proof "${proof}"
```
-For an example of sending larger amounts of data, see [Implement a file archive with the DAL and a Smart Rollup](../tutorials/build-files-archive-with-dal).
+For an example of sending larger amounts of data, see [Implement a file archive with the DAL and a Smart Rollup](/tutorials/build-files-archive-with-dal).
## Getting data from the DAL
diff --git a/docs/architecture/governance.md b/docs/architecture/governance.md
index aed2b6f71..6d92288cb 100644
--- a/docs/architecture/governance.md
+++ b/docs/architecture/governance.md
@@ -5,10 +5,10 @@ last_update:
---
Tezos incorporates a built-in, on-chain mechanism for proposing, selecting, testing, and activating protocol upgrades without the need to hard fork.
-This mechanism makes Tezos a self-amending blockchain and allows any user to propose changes to the [economic protocol](../architecture#the-tezos-self-amending-protocol), which defines the possible blockchain operations and how they are processed.
+This mechanism makes Tezos a self-amending blockchain and allows any user to propose changes to the [economic protocol](/architecture#the-tezos-self-amending-protocol), which defines the possible blockchain operations and how they are processed.
-This self-amendment process is separate from the less formal [Tezos Improvement Process](./governance/improvement-process).
+This self-amendment process is separate from the less formal [Tezos Improvement Process](/architecture/governance/improvement-process).
## Amendment periods
diff --git a/docs/architecture/governance/amendment-history.md b/docs/architecture/governance/amendment-history.md
index e9f4258ae..720af6993 100644
--- a/docs/architecture/governance/amendment-history.md
+++ b/docs/architecture/governance/amendment-history.md
@@ -5,7 +5,7 @@ last_update:
date: 6 June 2024
---
-As presented in [Governance](../governance), the Tezos blockchain is constantly evolving, through new amendments.
+As presented in [Governance](/architecture/governance), the Tezos blockchain is constantly evolving, through new amendments.
These approved amendments form the history of the Tezos protocol:
diff --git a/docs/architecture/smart-rollups.md b/docs/architecture/smart-rollups.md
index d98d8d6fe..e06ce2e3e 100644
--- a/docs/architecture/smart-rollups.md
+++ b/docs/architecture/smart-rollups.md
@@ -18,7 +18,7 @@ During normal execution, the Smart Rollup can use any virtual machine that is co
Using the PVM and optionally a compatible VM guarantees that if a divergence in results is found, it can be tracked down to a single elementary step that was not executed correctly by some node.
In this way, multiple nodes can run the same rollup and each node can verify the state of the rollup.
-For a tutorial on Smart Rollups, see [Deploy a Smart Rollup](../tutorials/smart-rollup).
+For a tutorial on Smart Rollups, see [Deploy a Smart Rollup](/tutorials/smart-rollup).
For reference on Smart Rollups, see [Smart Optimistic Rollups](https://tezos.gitlab.io/active/smart_rollups.html) in the Octez documentation.
@@ -46,7 +46,7 @@ Smart Rollups are limited to information from these sources:
- The Smart Rollup inbox, which contains messages from layer 1 to all rollups
- The reveal data channel, which allows Smart Rollups to request information from outside sources
-- The [Data availability layer](./data-availability-layer)
+- The [Data availability layer](/architecture/data-availability-layer)
These are the only sources of information that rollups can use.
In particular, Smart Rollup nodes cannot communicate directly with each other; they do not have a peer-to-peer communication channel like layer 1 nodes.
diff --git a/docs/architecture/tokens.md b/docs/architecture/tokens.md
index 8c17af75f..93a68e840 100644
--- a/docs/architecture/tokens.md
+++ b/docs/architecture/tokens.md
@@ -30,8 +30,8 @@ However, Tezos also offers a built-in abstraction called tickets, which are fung
To start right away using tokens, see these tutorials:
-- [Create an NFT](../tutorials/create-an-nft)
-- [Build a simple web application](../tutorials/build-your-first-app)
+- [Create an NFT](/tutorials/create-an-nft)
+- [Build a simple web application](/tutorials/build-your-first-app)
## Fungible tokens
@@ -113,9 +113,9 @@ Tezos provides two standards for tokens.
The standard that you use for your tokens depends on the kind of tokens that you want to create.
These standards are named with the prefix FA, which stands for _financial application_.
-- [FA1.2](./tokens/FA1.2) tokens are fungible tokens
-- [FA2](./tokens/FA2) tokens can be multiple types of tokens, including fungible and non-fungible tokens, and a single smart contract that follows this standard can create multiple types of tokens
-- [FA2.1](./tokens/FA2.1) tokens can be multiple types of tokens like FA2 tokens, and they include features of FA1.2 tokens and of tickets
+- [FA1.2](/architecture/tokens/FA1.2) tokens are fungible tokens
+- [FA2](/architecture/tokens/FA2) tokens can be multiple types of tokens, including fungible and non-fungible tokens, and a single smart contract that follows this standard can create multiple types of tokens
+- [FA2.1](/architecture/tokens/FA2.1) tokens can be multiple types of tokens like FA2 tokens, and they include features of FA1.2 tokens and of tickets
You can use templates for smart contracts adhering to these standards, instead of writing your own contract from scratch:
diff --git a/docs/architecture/tokens/FA2.1.md b/docs/architecture/tokens/FA2.1.md
index 6eeca35f6..908142d1c 100644
--- a/docs/architecture/tokens/FA2.1.md
+++ b/docs/architecture/tokens/FA2.1.md
@@ -15,9 +15,9 @@ For the full details of the FA2.1 standard, see [Tezos Improvement Proposal 26 (
- FA2.1 allows contracts to export tokens as tickets, use those tickets outside of the contract, and import those tickets back into the contract.
-- FA2.1 includes on-chain [views](../../smart-contracts/views) that allow contracts to provide information to on-chain and off-chain applications.
+- FA2.1 includes on-chain [views](/smart-contracts/views) that allow contracts to provide information to on-chain and off-chain applications.
-- FA2.1 includes [events](../../smart-contracts/events), which provide notifications of token-related activity to off-chain applications.
+- FA2.1 includes [events](/smart-contracts/events), which provide notifications of token-related activity to off-chain applications.
- FA2.1 adds the concept of allowances from FA1.2 so contracts can use operators or allowances to control access to tokens.
@@ -30,11 +30,11 @@ For examples of FA2.1 contracts, see the [Implementation](https://gitlab.com/tez
Like FA2 tokens, each FA2.1 token has metadata that describes what the token represents.
The standard provides multiple options for the structure of the metadata and it refers to other standards for how the metadata is stored.
FA2.1 suggests that contracts store metadata according to [TZIP-21](https://gitlab.com/tezos/tzip/-/blob/master/proposals/tzip-21/tzip-21.md), which is an extension of the TZIP-16 metadata standard used in FA2.
-For examples of working with metadata, see the NFT-related tutorials at [Create an NFT](../../tutorials/create-an-nft).
+For examples of working with metadata, see the NFT-related tutorials at [Create an NFT](/tutorials/create-an-nft).
## Tickets
-A major change in FA2.1 is that contracts can optionally export [tickets](../../smart-contracts/data-types/complex-data-types#tickets) that represent tokens.
+A major change in FA2.1 is that contracts can optionally export [tickets](/smart-contracts/data-types/complex-data-types#tickets) that represent tokens.
In this case, the contract decreases an owner's balance of tokens and creates a ticket that represents those tokens.
It keeps the total balance of the tokens in its ledger the same.
Then the ticket owner can transfer the ticket without using the original contract, similar to a wrapped token.
diff --git a/docs/architecture/tokens/FA2.md b/docs/architecture/tokens/FA2.md
index 138174353..1ad37893c 100644
--- a/docs/architecture/tokens/FA2.md
+++ b/docs/architecture/tokens/FA2.md
@@ -17,14 +17,14 @@ For the full details of the FA2 standard, see [Tezos Improvement Proposal 12 (TZ
## Examples
-For examples of FA2 contracts, see [Sample smart contracts](../../smart-contracts/samples).
+For examples of FA2 contracts, see [Sample smart contracts](/smart-contracts/samples).
## Metadata
Any FA2 token has some metadata that describes what the token represents.
The standard provides multiple options for the structure of the metadata and it refers to other standards for how the metadata is stored.
FA2 suggests that contracts store metadata according to [TZIP-16](https://gitlab.com/tezos/tzip/-/blob/master/proposals/tzip-16/tzip-16.md).
-For examples of working with metadata, see the NFT-related tutorials at [Create an NFT](../../tutorials/create-an-nft).
+For examples of working with metadata, see the NFT-related tutorials at [Create an NFT](/tutorials/create-an-nft).
## Operators
diff --git a/docs/dApps.md b/docs/dApps.md
index aac7fbb84..baafce594 100644
--- a/docs/dApps.md
+++ b/docs/dApps.md
@@ -11,8 +11,8 @@ Decentralized applications (dApps or Dapps) take advantage of these features to
In general, dApps have these parts:
- **Frontend**: An off-chain component that can act as a user interface to simplify interaction with the on-chain component, run off-chain processing, and get information from sources that are not available to the on-chain component
-- **Middleware**: Optionally, an [indexer](./developing/information/indexers) to interpret the backend information and provide it in a more convenient format for the front-end component
-- **Backend**: An on-chain component that consists of one or more [smart contracts](./smart-contracts)
+- **Middleware**: Optionally, an [indexer](/developing/information/indexers) to interpret the backend information and provide it in a more convenient format for the front-end component
+- **Backend**: An on-chain component that consists of one or more [smart contracts](/smart-contracts)
The off-chain component can be nearly any kind of program, including a web application, mobile or desktop app, or command-line interface.
It relies on wallets and tools to interact with the smart contracts on behalf of a user's Tezos account.
@@ -22,16 +22,16 @@ It relies on wallets and tools to interact with the smart contracts on behalf of
Some of these tools that allow an off-chain component to interact with smart contracts include:
-- [Taquito](./dApps/taquito), an SDK for JavaScript/TypeScript applications
-- The [Tezos Unity SDK](./unity), a toolkit for the [Unity](https://unity.com/) game development platform
+- [Taquito](/dApps/taquito), an SDK for JavaScript/TypeScript applications
+- The [Tezos Unity SDK](/unity), a toolkit for the [Unity](https://unity.com/) game development platform
- [Taqueria](https://taqueria.io/), a development platform for dApps
-The next pages in this section illustrate dApps with [examples](./dApps/samples), detail the main steps when developing dApps such as [Connecting to wallets](./dApps/wallets) and [Sending transactions](./dApps/sending-transactions), and introduce some [best practices](./dApps/best-practices)
+The next pages in this section illustrate dApps with [examples](/dApps/samples), detail the main steps when developing dApps such as [Connecting to wallets](/dApps/wallets) and [Sending transactions](/dApps/sending-transactions), and introduce some [best practices](/dApps/best-practices)
## Tutorials
These tutorials cover dApps of different complexities:
-- For a simple dApp, see [Build a simple web application](./tutorials/build-your-first-app)
-- For a dApp that mints NFTs, see [Mint NFTs from a web app](./tutorials/create-an-nft/nft-web-app)
-- For a large dApp that allows users to buy and sell NFTs, see [Build an NFT marketplace](./tutorials/build-an-nft-marketplace)
+- For a simple dApp, see [Build a simple web application](/tutorials/build-your-first-app)
+- For a dApp that mints NFTs, see [Mint NFTs from a web app](/tutorials/create-an-nft/nft-web-app)
+- For a large dApp that allows users to buy and sell NFTs, see [Build an NFT marketplace](/tutorials/build-an-nft-marketplace)
diff --git a/docs/dApps/samples.md b/docs/dApps/samples.md
index 42508880d..fb396a234 100644
--- a/docs/dApps/samples.md
+++ b/docs/dApps/samples.md
@@ -7,6 +7,6 @@ last_update:
Here are some sample web applications that access Tezos:
-- Completed applications from the [tutorials on this website](../tutorials/) are in the repository https://github.com/trilitech/tutorial-applications
+- Completed applications from the [tutorials on this website](/tutorials/) are in the repository https://github.com/trilitech/tutorial-applications
- Example applications that use Taquito: https://tezostaquito.io/docs/contracts_collection/
- A sample application that uses Taqueria: https://taqueria.io/docs/scaffolds/taco-shop/
diff --git a/docs/dApps/sending-transactions.md b/docs/dApps/sending-transactions.md
index 0ed227daa..b65df3bb0 100644
--- a/docs/dApps/sending-transactions.md
+++ b/docs/dApps/sending-transactions.md
@@ -26,12 +26,12 @@ These calls can include:
Tools can originate a smart contract from source code.
-For information about calling contracts from other contracts, see [Operations](../smart-contracts/logic/operations).
+For information about calling contracts from other contracts, see [Operations](/smart-contracts/logic/operations).
## Taquito
You can use the Taquito SDK to send transactions from JavaScript/TypeScript applications.
-For more information about Taquito, see [Taquito](./taquito).
+For more information about Taquito, see [Taquito](/dApps/taquito).
### Sending tez
@@ -94,7 +94,7 @@ console.log(parameterSchema.ExtractSignatures());
The response shows the entrypoints in the contract and the parameters that they accept.
-For example, the [FA2](../architecture/tokens/FA2) `transfer` entrypoint appears like this:
+For example, the [FA2](/architecture/tokens/FA2) `transfer` entrypoint appears like this:
```json
[
@@ -181,7 +181,7 @@ console.log(
);
```
-For more examples of calling smart contracts, see tutorials such as [Build a simple web application](../tutorials/build-your-first-app) or [Create a contract and web app that mints NFTs](../tutorials/create-an-nft/nft-taquito).
+For more examples of calling smart contracts, see tutorials such as [Build a simple web application](/tutorials/build-your-first-app) or [Create a contract and web app that mints NFTs](/tutorials/create-an-nft/nft-taquito).
For more information about using Taquito, see [Smart contracts](https://tezostaquito.io/docs/smartcontracts) in the Taquito documentation.
@@ -234,4 +234,4 @@ const result = await dAppClient.requestOperation({
## Octez
The Octez command-line client can send tez and call contracts from the command line.
-See [Interacting with contracts](../developing/octez-client/transactions).
+See [Interacting with contracts](/developing/octez-client/transactions).
diff --git a/docs/dApps/wallets.md b/docs/dApps/wallets.md
index 4c8ddbc05..5292f2064 100644
--- a/docs/dApps/wallets.md
+++ b/docs/dApps/wallets.md
@@ -24,12 +24,12 @@ The primary tools that dApps use to connect to wallets are:
Taquito provides a wrapper for Beacon so dApps can interact with wallets and with Tezos with the same code.
- For more information about Taquito, see [Taquito](./taquito).
+ For more information about Taquito, see [Taquito](/dApps/taquito).
## Beacon and Taquito
Most of the time, dApps use Beacon and Taquito together for a straightforward way to connect to wallets and submit transactions.
-For an example, see the tutorial [Build a simple web application](../tutorials/build-your-first-app).
+For an example, see the tutorial [Build a simple web application](/tutorials/build-your-first-app).
### Connecting to wallets
@@ -49,7 +49,7 @@ const address = await wallet.getPKH();
When this code runs, Beacon opens a popup window that guides the user through connecting their wallet.
Then the application can send transactions to Tezos.
-See [Part 3: Sending transactions](../tutorials/build-your-first-app/sending-transactions) in the tutorial [Build a simple web application](../tutorials/build-your-first-app).
+See [Part 3: Sending transactions](/tutorials/build-your-first-app/sending-transactions) in the tutorial [Build a simple web application](/tutorials/build-your-first-app).
### Reconnecting to wallets
diff --git a/docs/developing.md b/docs/developing.md
index 14c5f538a..001c024e0 100644
--- a/docs/developing.md
+++ b/docs/developing.md
@@ -13,12 +13,12 @@ Developing dApps on Tezos is not very different from developing other types of c
Wallets maintain a user's credentials and signs transactions on their behalf.
In most cases, Tezos developers need a wallet to submit transactions to their dApps.
-See [Installing and funding a wallet](developing/wallet-setup).
+See [Installing and funding a wallet](/developing/wallet-setup).
### The Octez client
The Octez client lets you work with accounts and smart contracts from the command line.
-For more information, see [The Octez client](developing/octez-client).
+For more information, see [The Octez client](/developing/octez-client).
## IDEs and extensions
@@ -62,6 +62,6 @@ To test smart contracts and dApps, you can use these test environments:
- Sandbox environments like [Flextesa](https://tezos.gitlab.io/flextesa/) run Tezos nodes locally on your computer in a sandbox mode.
- You can also set up your own private test network.
-For more information about test environments, see [Testing on sandboxes and testnets](developing/testnets).
+For more information about test environments, see [Testing on sandboxes and testnets](/developing/testnets).
LIGO and SmartPy also have built-in testing capabilities.
diff --git a/docs/developing/information.md b/docs/developing/information.md
index 0ea27f890..7c5a10530 100644
--- a/docs/developing/information.md
+++ b/docs/developing/information.md
@@ -9,7 +9,7 @@ Developers and dApps can get information about the Tezos blockchain, such as acc
## The Octez client
-The [The Octez client](./octez-client) provides information about accounts, addresses, and many other things.
+The [The Octez client](/developing/octez-client) provides information about accounts, addresses, and many other things.
For example, you can get the balance of an account with this command:
```bash
@@ -18,7 +18,7 @@ octez-client get balance for tz1QCVQinE8iVj1H2fckqx6oiM85CNJSK9Sx
## The RPC interface
-[The RPC interface](../architecture/rpc) provides information about the blockchain that nodes use to communicate with each other.
+[The RPC interface](/architecture/rpc) provides information about the blockchain that nodes use to communicate with each other.
This data is not always in the format that developers and dApps need.
For example, the RPC interface does not provide a way to get information about a specific operation by its hash.
@@ -38,11 +38,11 @@ For example, you can use the [TZKT API](https://api.tzkt.io/) to get the recent
curl -X GET https://api.ghostnet.tzkt.io/v1/accounts/tz1QCVQinE8iVj1H2fckqx6oiM85CNJSK9Sx/operations
```
-For more information, see [Indexers](./information/indexers).
+For more information, see [Indexers](/developing/information/indexers).
## Block explorers
Block explorers use data from indexers to show information in a human-friendly interface.
For example, this link shows information about a contract, including its current storage, entrypoints, and transaction history: https://better-call.dev/ghostnet/KT1R4i4qEaxF7v3zg1M8nTeyrqk8JFmdGLuu/operations
-For more information about block explorers, see [Block explorers](./information/block-explorers).
+For more information about block explorers, see [Block explorers](/developing/information/block-explorers).
diff --git a/docs/developing/information/block-explorers/tzstats.mdx b/docs/developing/information/block-explorers/tzstats.mdx
index 9cae8802c..b0d98d568 100644
--- a/docs/developing/information/block-explorers/tzstats.mdx
+++ b/docs/developing/information/block-explorers/tzstats.mdx
@@ -7,7 +7,7 @@ last_update:
import Figure from '@site/src/components/Figure';
-In this chapter, we will use the [TzStats](https://tzstats.com/) explorer to illustrate the different features of an explorer, but similar features are usually available on others. Concerning the observation of smart contracts, the different aspects are discussed in the [following chapter](./inspect-contract-tzstats).
+In this chapter, we will use the [TzStats](https://tzstats.com/) explorer to illustrate the different features of an explorer, but similar features are usually available on others. Concerning the observation of smart contracts, the different aspects are discussed in the [following chapter](/developing/information/block-explorers/inspect-contract-tzstats).
[TzStats](https://tzstats.com/) is developed by _Blockwatch Data Inc._ It is a block explorer for public and private Tezos networks and it is based on the [TzIndex indexer](https://github.com/blockwatch-cc/tzindex).
@@ -45,12 +45,12 @@ TzStats has a complete guide available [here](https://tzstats.com/docs/guide).
alt="tzstats-bakers-page"
caption="Figure 5: TzStats Bakers Page" />
-- [Protocols](https://tzstats.com/protocols): This page shows the past and current protocol used by Tezos and the overall age of the Tezos blockchain. See [History of amendments](../../../architecture/governance/amendment-history) to understand each protocol.
+- [Protocols](https://tzstats.com/protocols): This page shows the past and current protocol used by Tezos and the overall age of the Tezos blockchain. See [History of amendments](/architecture/governance/amendment-history) to understand each protocol.
-- [Voting](https://tzstats.com/election/head): This page shows the past and current elections and indicates when it ends. See [Governance](../../../architecture/governance) to understand the voting process.
+- [Voting](https://tzstats.com/election/head): This page shows the past and current elections and indicates when it ends. See [Governance](/architecture/governance) to understand the voting process.
diff --git a/docs/developing/information/indexers.md b/docs/developing/information/indexers.md
index 922b349e7..816534c97 100644
--- a/docs/developing/information/indexers.md
+++ b/docs/developing/information/indexers.md
@@ -6,13 +6,13 @@ last_update:
---
Indexers are off-chain applications that retrieve blockchain data, process it, and store it in a way that makes it easier to search and use.
-Indexers are an important component of [Block explorers](./block-explorers).
+Indexers are an important component of [Block explorers](/developing/information/block-explorers).
You can use indexers to provide the data that you need for your dApps.
## Why indexers are needed
-Tezos nodes store copies of blocks, but they provide only certain information about those blocks through the [RPC interface](../../architecture/rpc).
+Tezos nodes store copies of blocks, but they provide only certain information about those blocks through the [RPC interface](/architecture/rpc).
For example, assume that you want information about an operation and all you have is its hash.
The RPC interface can't provide this information directly, so you would have to search each block until you found the block with this operation, which is very inefficient.
diff --git a/docs/developing/octez-client/accounts.md b/docs/developing/octez-client/accounts.md
index 91a14c58a..122070698 100644
--- a/docs/developing/octez-client/accounts.md
+++ b/docs/developing/octez-client/accounts.md
@@ -24,7 +24,7 @@ octez-client show address local_account
The account address (technically the hash of the public key) starts with `tz1`, `tz2`, or `tz3`.
You can use this address to send tez to this account, such as from a faucet if you are using a testnet.
-See [Testing on sandboxes and testnets](../testnets).
+See [Testing on sandboxes and testnets](/developing/testnets).
+import GlossaryAnchorScript from '@site/src/components/GlossaryAnchorScript';
-
This glossary is divided in two sections, the first one concerns Tezos, and the second one concerns the economic protocol. The definitions in the latter section may be different for other protocol versions.
Tezos
Block
The Tezos blockchain is a linked list of blocks (or actually, a tree when several competing branches exist). Blocks conceptually contain a header and a list of operations, which are specific to the economic protocol.
The header itself decomposes into a shell header (common to all Tezos economic protocols), and a protocol-specific header. The shell header contains protocol-agnostic data such as the predecessor’s block hash and the block’s timestamp.
Context
The state of the blockchain. The context is defined by the economic protocol and typically includes information such as “this account is credited with this many tez” and “this is the code for that smart contract.”
The context is modified by operations. For example, an operation can transfer tez from one account to another, which modifies the part of the context that tracks account credit.
Economic protocol
The economic protocol is the set of rules defining valid operations and blocks, how the network agrees on the next block to build (the consensus algorithm), and how operations update the blockchain state, also called context.
In Tezos, the economic protocol can be upgraded without interruption or forking of the blockchain. This is because the procedure for an upgrade is also defined within the economic protocol, which can thus update itself.
Fitness (a.k.a. score, weight)
For each block, the consensus algotrithm can compute a score called fitness which determines the quality of the chain leading to that block. The shell changes the head of the chain to the valid block that has the highest fitness.
The position of a block in the blockchain, that is, the number of blocks since the genesis block, where the genesis block is at level 0.
Mempool
A pool (set) of operations maintained by a node and not yet included in a block.
Metadata
A (block or operation) metadata is a piece of data computed as a result of the application of the block or operation on an associated context. The metadata consists of many pieces of information such as the operation receipts, rewards updates, voting period, etc.
A block’s metadata is the collections of operations metadata for all the operations included in the block (if the validation was successful).
For a detailed metadata content check the Paris RPCs - Reference under the prefix ../<block_id>/metadata.
Node
A peer in the P2P network. It maintains a local state and propagates blocks and operations.
Operation
An operation transforms the context; this is what makes the state of the chain change. Operations are grouped into blocks; thus, the chain progresses in batches. For the different kinds of operations defined by the protocol, see operation kinds.
The shell is a software component of the node. It is parameterized by a specific economic protocol. It serves as the bridge between the P2P layer (handling communication between nodes) and the economic protocol layer (handling the context, operation application, scoring, etc.).
When a delegate attempts double signing (or when it tries to abuse the network in another similar way), another delegate can make an accusation, by providing evidence of the offense. The delegate injecting the accusation in a newly baked block is called the accuser.
The accuser is awarded some funds from the security deposit of the accused.
When using Octez, accusation operations are emitted by the accuser daemon. Note that this daemon is not associated to a delegate: accusation operations are anonymous, and any delegate can include them in a block.
Account
An account is an address managed by the protocol. In the context, each account is associated with a balance (an amount of tez available).
When a delegate creates a new block, it is called the baker of this block. Baking rights are distributed to different delegates based on their available stake. Only a delegate with baking rights is allowed to bake. The baker selects transactions from the mempool to be included in the block it bakes.
When using Octez, baking and other consensus actions are handled by the baker daemon, on behalf of one or more delegate accounts. By extension, a baker designates the owner of such a delegate account, typically running the baker daemon on its behalf.
Baking/attesting a block can only be done by a delegate who holds the baking/attesting right for that block level and round. At the start of a cycle, baking and attesting rights are computed for all the block levels and rounds in the cycle, based on the proportion of the stake of each delegate.
For each block level and round, there is exactly one account that is allowed to bake, but several accounts are allowed to attest.
Burn
To ensure responsible use of the storage space on the public blockchain, there are some costs charged to users for consuming storage. These costs are burnt (i.e., the amount of tez is destroyed). For example, a per-byte storage cost is burnt for increasing the storage space of a smart contract; a fixed amount is burnt for allocating a new contract (which consumes space by storing its address on the blockchain).
Protocols are parameterized by several parameters called protocol constants, which may vary from one protocol to another or from one network to another.
A cycle is a sequence of consecutive blocks of fixed length (given by a protocol constant). E.g., cycle 12 started at block level 49152 and ended at block level 53248.
Cycles are used as a unit of “time” in the block chain. For example, the different phases in the amendment voting procedures are defined based on numbers of cycles.
The length of a cycle is a (parametric) protocol constant, and thus might change across different Tezos protocols.
Delegate
An implicit account that can participate in consensus and in governance. Actual participation is under further provisions, like having a minimal stake. An implicit account becomes a delegate by registering as such. Through delegation, other accounts can delegate their rights to a delegate account. The delegate’s rights are calculated based on its stake. Note that tz4 accounts cannot be delegates.
The situation when a baker signs two different blocks at the same level and same round, is called double baking. Double baking is detrimental to the network and might be indicative of an attempt to double spend. The same goes for signing two different attestations at the same level and the same round. As such, double signing (i.e., double baking or double attesting) is punished by the network: an accuser can provide proof of the double signing to be awarded part of the double signer’s deposit – see Slashing.
Failing Noop
The Failing_noop operation implements a No-op, which always fails at application time, and should never appear in applied blocks. This operation allows end-users to sign arbitrary messages which have no computational semantics.
Attesting
When a block is created and propagated on the network, delegates that have attesting rights for the matching block level and round can emit an attestation operation. Attestation operations are included in the next block.
To ensure responsible use of computation resources of other nodes, and also to encourage active participation in the consensus protocol, users pay fees to bakers for including their operations in blocks. For example, fees are paid to a baker for operations such as a transaction or a revelation of a public key.
A measure of the number of elementary steps performed during the execution of a smart contract. Gas is used to measure how much computing power is used to execute a smart contract.
Implicit account
An account that is linked to a public key. Contrary to a smart contract, an implicit account cannot include a script and it cannot reject incoming transactions.
The address of an implicit account always starts with the letters tz followed by 1, 2, 3, or 4 (depending on the signature scheme) and finally the hash of the public key. See Accounts and addresses for a more detailed explanation on addresses.
Layer 1
The primary blockchain i.e. the Tezos chain. Within any blockchain ecosystem, Layer 1 (L1) refers to the main chain to which side chains, rollups, or other protocols connect and settle to. The Layer 1 chain is deemed to be most secure, since it has the most value (or stake) tied to it, and be most decentralized and censorship resistant. However, transaction space is limited leading to low throughput and possibly high transaction costs. See Layer 2.
Layer 2
Layer 2 (L2) includes sidechains, rollups, payment channels, etc. that batch their transactions and write to the Layer 1 chain. By processing transactions on layer 2 networks, greater scalability in speed and throughput can be achieved by the ecosystem overall, since the number of transactions the Layer 1 can process directly is limited. By cementing transactions from a L2 to L1, the security of the L1 chain backs those operations. Currently, Layer 2 solutions on Tezos are built as smart rollups.
An amount of tez (e.g., 6000ꜩ) serving as a minimal amount for a delegate to have baking rights and voting rights in a cycle.
Operation kinds
The main kinds of operations in the protocol are transactions (to transfer funds or to execute smart contracts), accusations, activations, delegations, attestations, and originations. For the full list of operations, see Blocks and Operations.
A manager operation whose purpose is to create – that is, to deploy – a smart contract on the Tezos blockchain.
PVM
A PVM (Proof-generating Virtual Machine) is a reference implementation for a device on top of which a smart rollup can be executed. This reference implementation is part of the economic protocol and is the unique source of truth regarding the semantics of rollups. The PVM is able to produce proofs enforcing this truth. This ability is used during the final step of a refutation game.
Refutation game
A process by which the economic protocol solves a conflict between two rollup committers. Note that the refutation mechanism used in Tezos smart rollups corresponds to the notion of fraud proofs used in other blockchain/Layer 2 ecosystems.
A claim that the interpretation of all rollup inbox messages published during a given period, and applied on the state of a parent rollup commitment, led to a given new state by performing a given number of execution steps of the PVM.
Rollup commitment period
A period of roughly 15 minutes during which all rollup inboxmessages must be processed by the rollup node state to compute a rollup commitment. A commitment must be published for each commitment period.
A sequence of messages from the Layer 1 to all the smart rollups. The contents of the inbox are determined by the consensus of the economic protocol.
Rollup node
A daemon required for deploying and operating smart rollups. The rollup node is responsible for making the rollup progress by publishing rollup commitments and by playing refutation games.
Rollup outbox
A sequence of messages from a smart rollup to the Layer 1. Messages are smart contract calls, potentially containing tickets. These calls can be triggered only when the related rollup commitment is cemented (hence, at least two weeks after the actual execution of the operation).
Round
An attempt to reach consensus on a block at a given level. A round is represented by an index, starting with 0. Each round corresponds to a time span. A baker with baking rights at a given round is only allowed to bake during the round’s corresponding time span. Baking outside of one’s designated round results in an invalid block.
Smart contract
Account which is associated to a Michelson script. They are created with an explicit origination operation and are therefore sometimes called originated accounts. The address of a smart contract always starts with the letters KT1.
Smart Rollup
Smart rollups constitute a Layer 2 solution that can be used to deploy either a general-purpose polyvalent Layer 2 blockchain (e.g., an EVM-compatible one), or an application-specific DApp. See Smart Optimistic Rollups.
Stake
The amount of tokens that determines a delegate’s weight in the governance process and in the selection of its baking and attesting rights. A delegate’s stake is usually given by the delegate’s own tokens plus the sum of tokens delegated to it. However, there are cases when this is not the case, see here for details.
Staker
An implicit account that made a security deposit. The implicit account must have set a delegate. The security deposit accrues to the stake of the implicit account’s delegate and is subject to slashing in case the delegate misbehaves – see Slashing.
An index (a natural number) associated with a particular kind of operations, allowing to group them into classes. Validation passes enable prioritizing the validation and application of certain classes of operations.
Voting period
Any of the proposal, exploration, cooldown, promotion or adoption stages in the voting procedure when amending the economic protocol.
Voting listings
The list calculated at the beginning of each voting period that contains the staking balance (in number of mutez) of each delegate that owns more than the minimal stake at that moment. For each delegate, the voting listings reflect the weight of the vote emitted by the delegate when amending the economic protocol.
\ No newline at end of file
diff --git a/docs/overview/resources.md b/docs/overview/resources.md
index c6c670cc1..9ddcfb660 100644
--- a/docs/overview/resources.md
+++ b/docs/overview/resources.md
@@ -18,7 +18,7 @@ More detailed developer and user documentation on Tezos in general or on specifi
- https://ligolang.org/docs/intro/introduction is the official documentation of the [LIGO](https://ligolang.org/) language for writing Tezos smart contracts
- https://smartpy.io/manual/introduction/overview is the official documentation of the [SmartPy](https://smartpy.io/) language for writing Tezos smart contracts
- https://archetype-lang.org/docs/introduction/ is the official documentation of the Archetype language for writing Tezos smart contracts
-- https://docs.etherlink.com/ is the official documentation for [Etherlink](https://www.etherlink.com), an EVM-compatible layer-2 blockchain running on Tezos, implemented as a [smart rollup](../architecture/smart-rollups)
+- https://docs.etherlink.com/ is the official documentation for [Etherlink](https://www.etherlink.com), an EVM-compatible layer-2 blockchain running on Tezos, implemented as a [smart rollup](/architecture/smart-rollups)
## Social media
diff --git a/docs/overview/tezos-different.md b/docs/overview/tezos-different.md
index 26dbfa372..319391606 100644
--- a/docs/overview/tezos-different.md
+++ b/docs/overview/tezos-different.md
@@ -28,4 +28,4 @@ For more information about how Tezos handles proof of stake, see https://tezos.g
## Tezos accepts multiple languages
-Tezos provides a few different languages for developers to choose from, according to their use case, including versions of Python and JavaScript/TypeScript. For more information, see [Languages](../smart-contracts/languages/).
+Tezos provides a few different languages for developers to choose from, according to their use case, including versions of Python and JavaScript/TypeScript. For more information, see [Languages](/smart-contracts/languages/).
diff --git a/docs/reference/style-guide.md b/docs/reference/style-guide.md
index 4fbcecf37..678a87254 100644
--- a/docs/reference/style-guide.md
+++ b/docs/reference/style-guide.md
@@ -2,7 +2,7 @@
title: Documentation style guide
authors: Tim McMackin
last_update:
- date: 15 January 2024
+ date: 23 August 2024
---
## Overall Tezos-related issues
@@ -66,7 +66,7 @@ Use emphasis sparingly to avoid making the page too visually busy or complex.
- Buttons or links that the user must click or interact with
- - Very sparingly, to highlight important words and phrases, such as the words at the beginning of a definition list, such as in the [Glossary](../overview/glossary)
+ - Very sparingly, to highlight important words and phrases, such as the words at the beginning of a definition list, such as in the [Glossary](/overview/glossary)
- Do not emphasize the names of web sites, pages, or UI elements that the user sees but does not interact with directly
@@ -110,3 +110,7 @@ For example, instead of "We will see how you can deploy smart contracts to Tezos
- Structure lists and headings in a consistent way.
For example, make sure each list item is capitalized and punctuated in the same way.
List items should be all complete sentences or all sentence fragments, not a mix.
+
+## Links
+
+- Use root-relative links, as in `[Target page](/folder/folder/target)`, because the target path of relative links as in `[Target page](./target)` can change based on whether the user's browser has a trailing slash in the URL.
diff --git a/docs/smart-contracts.mdx b/docs/smart-contracts.mdx
index 8a4bf62ea..9178600c0 100644
--- a/docs/smart-contracts.mdx
+++ b/docs/smart-contracts.mdx
@@ -31,11 +31,11 @@ Notice that a smart contract can only run and interact with the blockchain it's
A smart contract is composed of three elements:
- Its balance: a contract is a kind of account, and can receive and send tez
-- Its [storage](./smart-contracts/storage): data that is dedicated to and can be read and written by the contract
-- Its code: one or more [entrypoints](./smart-contracts/entrypoints), which are a kind of function that can be called either from outside the chain or from other contracts
+- Its [storage](/smart-contracts/storage): data that is dedicated to and can be read and written by the contract
+- Its code: one or more [entrypoints](/smart-contracts/entrypoints), which are a kind of function that can be called either from outside the chain or from other contracts
The smart contract code is in the Michelson language, but several high-level languages exist to make it easier to write the code.
-See [Languages](./smart-contracts/languages).
+See [Languages](/smart-contracts/languages).
:::note VisualTez
[VisualTez](https://visualtez.com/editor) allows you to visualize the fundamental logic of a smart contract without relying on any specific syntax.
@@ -47,27 +47,27 @@ All a contract can do can be summarized as:
- Performing computations
- Reading or updating the value of its own storage
-- Generating a list of operations, such as calls to other contracts (see [Operations](./smart-contracts/logic/operations))
+- Generating a list of operations, such as calls to other contracts (see [Operations](/smart-contracts/logic/operations))
Smart contracts can't do these things:
- Access programs outside the blockchain, including calling external APIs
- Access other contracts' storage
- Change their code
-- Catch and respond to errors (see [Handling errors](./smart-contracts/logic/errors))
+- Catch and respond to errors (see [Handling errors](/smart-contracts/logic/errors))
## Features of Tezos smart contracts
Tezos smart contracts support these features:
-- [Storage](./smart-contracts/storage) of data that the contract can read and write to
-- [Entrypoints](./smart-contracts/entrypoints) that users can call
-- [Data types](./smart-contracts/data-types) from simple to complex and logic that can be used on them, including [Comparing values](./smart-contracts/logic/comparing) and [Loops](./smart-contracts/logic/loops)
-- [Operations](./smart-contracts/logic/operations), which are calls to other smart contracts
-- [Views](./smart-contracts/views), which expose data to other contracts
-- [Handling errors](./smart-contracts/logic/errors), although error handling in Tezos is very different from other platforms
-- [Constants](./smart-contracts/constants) that are available to all contracts
-- [Sapling](./smart-contracts/sapling), a way to run private transactions
+- [Storage](/smart-contracts/storage) of data that the contract can read and write to
+- [Entrypoints](/smart-contracts/entrypoints) that users can call
+- [Data types](/smart-contracts/data-types) from simple to complex and logic that can be used on them, including [Comparing values](/smart-contracts/logic/comparing) and [Loops](/smart-contracts/logic/loops)
+- [Operations](/smart-contracts/logic/operations), which are calls to other smart contracts
+- [Views](/smart-contracts/views), which expose data to other contracts
+- [Handling errors](/smart-contracts/logic/errors), although error handling in Tezos is very different from other platforms
+- [Constants](/smart-contracts/constants) that are available to all contracts
+- [Sapling](/smart-contracts/sapling), a way to run private transactions
## Lifecycle of a Tezos smart contract
@@ -94,7 +94,7 @@ The origination of a Tezos smart contract must define:
After the contract is deployed, it cannot be changed or removed from the blockchain.
-{/* TODO link to ./smart-contracts/deploying */}
+For more information about deploying smart contracts, see [Deploying smart contracts](/smart-contracts/deploying).
### Call of a Tezos smart contract
diff --git a/docs/smart-contracts/creating.md b/docs/smart-contracts/creating.md
index 9ac1013a3..2467205dd 100644
--- a/docs/smart-contracts/creating.md
+++ b/docs/smart-contracts/creating.md
@@ -5,10 +5,10 @@ last_update:
date: 6 November 2023
---
## Introduction
-This documentation provides step-by-step instructions for creating smart contracts on Tezos. After creating the contract, you can find the resources on [testing](../developing/testing) and [deploying](deploying.md).
+This documentation provides step-by-step instructions for creating smart contracts on Tezos. After creating the contract, you can find the resources on [testing](/developing/testing) and [deploying](/smart-contracts/deploying).
## Choosing your smart contract language
-Tezos supports a variety of smart contract [languages](./languages): Michelson, SmartPy, LIGO, Archetype.
+Tezos supports a variety of smart contract [languages](/smart-contracts/languages): Michelson, SmartPy, LIGO, Archetype.
You can select a language based on your familiarity with programming paradigms, the complexity of the contract you want to deploy, and the specific features you require. Here's a more detailed table for each language:
diff --git a/docs/smart-contracts/data-types.md b/docs/smart-contracts/data-types.md
index f477cfd53..994dfafa9 100644
--- a/docs/smart-contracts/data-types.md
+++ b/docs/smart-contracts/data-types.md
@@ -7,8 +7,8 @@ last_update:
See these pages for information about the data types that Tezos supports:
-- [Primitive data types](./data-types/primitive-data-types)
-- [Complex data types](./data-types/complex-data-types)
-- [Cryptographic data types](./data-types/crypto-data-types)
+- [Primitive data types](/smart-contracts/data-types/primitive-data-types)
+- [Complex data types](/smart-contracts/data-types/complex-data-types)
+- [Cryptographic data types](/smart-contracts/data-types/crypto-data-types)
Higher-level languages may treat data types differently, but they all behave the same way when they are compiled to Michelson and run on Tezos.
diff --git a/docs/smart-contracts/data-types/complex-data-types.md b/docs/smart-contracts/data-types/complex-data-types.md
index a3ef804cb..8fdf031db 100644
--- a/docs/smart-contracts/data-types/complex-data-types.md
+++ b/docs/smart-contracts/data-types/complex-data-types.md
@@ -318,7 +318,7 @@ In general, use big-maps to store large amounts of data.
## Sets {#sets}
Like lists, sets contain elements of the same data type, but in sets, each element can be present only once.
-Sets are ordered, and the order is the natural order of the values in the set; see [Comparing values](../logic/comparing).
+Sets are ordered, and the order is the natural order of the values in the set; see [Comparing values](/smart-contracts/logic/comparing).
The main operations available on sets are:
diff --git a/docs/smart-contracts/data-types/crypto-data-types.md b/docs/smart-contracts/data-types/crypto-data-types.md
index 788363bd0..4a06b50d0 100644
--- a/docs/smart-contracts/data-types/crypto-data-types.md
+++ b/docs/smart-contracts/data-types/crypto-data-types.md
@@ -41,7 +41,7 @@ It can also be used for identity-based cryptography, single-round multi-party ke
A `timelock` is a cryptographic primitive that can be used as part of a commit-and-reveal scheme, to provide a guarantee that the information associated to the commit is eventually revealed.
-For information about using time-locks, see [Timelocks](../timelocks).
+For information about using time-locks, see [Timelocks](/smart-contracts/timelocks).
## Implementation details
diff --git a/docs/smart-contracts/data-types/primitive-data-types.md b/docs/smart-contracts/data-types/primitive-data-types.md
index 2ef3f15e0..1d22a6a87 100644
--- a/docs/smart-contracts/data-types/primitive-data-types.md
+++ b/docs/smart-contracts/data-types/primitive-data-types.md
@@ -50,7 +50,7 @@ You can perform bitwise logical operations: the usual `OR`, `AND`, `XOR`, `NOT`.
You can also perform bitwise left and right shifts (`LSL` and `LSR`), with a parameter that indicates by how many bits you shift the value.
-For information about comparing values, see [Comparing values](../logic/comparing).
+For information about comparing values, see [Comparing values](/smart-contracts/logic/comparing).
Finally, you can convert an `int` to a `nat` or vice versa:
@@ -92,7 +92,7 @@ You can do these arithmetic operations on `mutez`:
- Multiplying a `mutez` value with a `nat` (`MUL`), which returns a result in `mutez`
- Performing an integer division (`EDIV`)
-For information about comparing values, see [Comparing values](../logic/comparing).
+For information about comparing values, see [Comparing values](/smart-contracts/logic/comparing).
## Strings {#strings}
@@ -108,7 +108,7 @@ You can do these operations on strings:
- Concatenate two `string` types (`CONCAT`)
- Get the size of a `string` (`SIZE`), which returns a `nat`
- Extract a substring of a `string` (`SLICE`)
-- Compare two `string` types based on their lexicographical order; see [Comparing values](../logic/comparing)
+- Compare two `string` types based on their lexicographical order; see [Comparing values](/smart-contracts/logic/comparing)
## Bytes {#bytes}
@@ -120,7 +120,7 @@ This type has no limits on its size other than the indirect limits caused by the
- Concatenate two `bytes` types (`CONCAT`)
- Get the size of a `bytes` (`SIZE`), which returns a `nat`
- Extract a substring of a `bytes` (`SLICE`)
-- Compare two `bytes` types based on their lexicographical order; see [Comparing values](../logic/comparing)
+- Compare two `bytes` types based on their lexicographical order; see [Comparing values](/smart-contracts/logic/comparing)
To save space, you can store most other data types in a `bytes` type.
To convert
@@ -137,9 +137,9 @@ Serialization is also useful in applying cryptographic functions to data, as in
- Checking that a sequence of `bytes` has been signed with a given key
- Applying elliptic-curve cryptographic primitives (`BLS12-381`)
-For more information about serialization, see [Serialization](../serialization).
+For more information about serialization, see [Serialization](/smart-contracts/serialization).
-`bytes` are also used in [Sapling](../sapling).
+`bytes` are also used in [Sapling](/smart-contracts/sapling).
## Booleans {#booleans}
@@ -164,7 +164,7 @@ The following operations are supported on timestamps:
- Adding a number of seconds to a `timestamp` (`ADD`)
- Subtracting a number of seconds from a `timestamp` (`SUB`)
- Computing the difference in seconds between two `timestamp` values (`SUB`)
-- Comparing two `timestamps` (`COMPARE`); see [Comparing values](../logic/comparing)
+- Comparing two `timestamps` (`COMPARE`); see [Comparing values](/smart-contracts/logic/comparing)
## Addresses {#addresses}
diff --git a/docs/smart-contracts/entrypoints.md b/docs/smart-contracts/entrypoints.md
index 77ddfb3bb..ef381ae8c 100644
--- a/docs/smart-contracts/entrypoints.md
+++ b/docs/smart-contracts/entrypoints.md
@@ -15,11 +15,11 @@ The entrypoints in a Tezos smart contract must meet these specifications:
Unlike functions and API endpoints, entrypoints do not return a value directly to the caller.
To return data from a smart contract, you can use one of these methods:
-- Use [Views](./views) to return data to smart contracts or off-chain applications
-- Use [Events](./events) to return data to off-chain applications
-- Include a callback parameter that sends information to another smart contract, as in the `getAllowance`, `getBalance`, and `getTotalSupply` entrypoints of [FA1.2](../architecture/tokens/FA1.2) contracts
+- Use [Views](/smart-contracts/views) to return data to smart contracts or off-chain applications
+- Use [Events](/smart-contracts/events) to return data to off-chain applications
+- Include a callback parameter that sends information to another smart contract, as in the `getAllowance`, `getBalance`, and `getTotalSupply` entrypoints of [FA1.2](/architecture/tokens/FA1.2) contracts
-For an example of a simple contract, see the tutorial [Create a smart contract](../tutorials/smart-contract).
+For an example of a simple contract, see the tutorial [Create a smart contract](/tutorials/smart-contract).
For examples of more complex contracts, see [Examples of contracts](https://opentezos.com/smart-contracts/simplified-contracts/) on opentezos.com.
@@ -34,14 +34,14 @@ An entrypoint may run logic based on:
Entrypoints cannot access information outside of Tezos, such as calling external APIs.
-If an entrypoint needs information from outside Tezos it must use oracles; see [Oracles](./oracles) and [Using and trusting Oracles](https://opentezos.com/smart-contracts/oracles/) on opentezos.com.
+If an entrypoint needs information from outside Tezos it must use oracles; see [Oracles](/smart-contracts/oracles) and [Using and trusting Oracles](https://opentezos.com/smart-contracts/oracles/) on opentezos.com.
The only effects that an entrypoint can have are changes to its storage and new operations that are run after the entrypoint completes.
An entrypoint can call other entrypoints in its contract or entrypoints in other contracts.
## Example entrypoints
-The contract in the tutorial [Create a smart contract](../tutorials/smart-contract) has three entrypoints:
+The contract in the tutorial [Create a smart contract](/tutorials/smart-contract) has three entrypoints:
| Entrypoint | Description |
| --- | --- |
@@ -57,7 +57,7 @@ This default entrypoint uses the parameter that clients pass to decide which cod
In most cases, developers can ignore the default entrypoint and imagine that the compiled Michelson code has multiple entrypoints like the higher-level code.
However, in some cases, you may need to consider how the contract actually decides which code to run and how clients trigger this code.
-For example, when you compile the contract in the tutorial [Create a smart contract](../tutorials/smart-contract) to Michelson, its first line defines the parameter type that the contract accepts:
+For example, when you compile the contract in the tutorial [Create a smart contract](/tutorials/smart-contract) to Michelson, its first line defines the parameter type that the contract accepts:
```
parameter (or (unit %reset) (or (int %decrement) (int %increment)))
diff --git a/docs/smart-contracts/languages.md b/docs/smart-contracts/languages.md
index 37edfb1d0..4b98f963c 100644
--- a/docs/smart-contracts/languages.md
+++ b/docs/smart-contracts/languages.md
@@ -7,10 +7,10 @@ last_update:
You can write Tezos smart contracts in any of these high-level languages:
-- [LIGO](./languages/ligo), which has versions with syntaxes similar to JavaScript/TypeScript and OCaml
-- [SmartPy](./languages/smartpy), which has a syntax similar to Python
-- [Archetype](./languages/archetype), which is a high-level language developed specifically for Tezos
+- [LIGO](/smart-contracts/languages/ligo), which has versions with syntaxes similar to JavaScript/TypeScript and OCaml
+- [SmartPy](/smart-contracts/languages/smartpy), which has a syntax similar to Python
+- [Archetype](/smart-contracts/languages/archetype), which is a high-level language developed specifically for Tezos
Each of these languages is eventually compiled to Michelson, the base language for Tezos smart contracts.
That means that the high-level languages have limitations caused by how Michelson works.
-For information about Michelson, see [Michelson](./languages/michelson).
+For information about Michelson, see [Michelson](/smart-contracts/languages/michelson).
diff --git a/docs/smart-contracts/languages/ligo.md b/docs/smart-contracts/languages/ligo.md
index 430e59747..177ac0793 100644
--- a/docs/smart-contracts/languages/ligo.md
+++ b/docs/smart-contracts/languages/ligo.md
@@ -15,8 +15,8 @@ You can use either syntax and compile to Michelson to run on Tezos.
To learn LIGO, see these tutorials:
-- [Deploy a smart contract with CameLIGO](../../tutorials/smart-contract/cameligo)
-- [Deploy a smart contract with JsLIGO](../../tutorials/smart-contract/jsligo)
+- [Deploy a smart contract with CameLIGO](/tutorials/smart-contract/cameligo)
+- [Deploy a smart contract with JsLIGO](/tutorials/smart-contract/jsligo)
Here are examples of straightforward LIGO contracts.
Each contract stores an integer and provides entrypoints that increase or decrease the integer or reset it to zero.
diff --git a/docs/smart-contracts/languages/michelson.mdx b/docs/smart-contracts/languages/michelson.mdx
index f54246429..fc2d1dde2 100644
--- a/docs/smart-contracts/languages/michelson.mdx
+++ b/docs/smart-contracts/languages/michelson.mdx
@@ -7,7 +7,7 @@ last_update:
import Figure from '@site/src/components/Figure';
Michelson is the domain-specific language used to write smart contracts on the Tezos blockchain.
-Users can write Michelson directly, but most of them use a high-level language for a more approachable syntax and for more user-friendly programming features; see [Languages](../languages).
+Users can write Michelson directly, but most of them use a high-level language for a more approachable syntax and for more user-friendly programming features; see [Languages](/smart-contracts/languages).
## Features
@@ -60,7 +60,7 @@ Below is another illustration of this process:
-For more information, see [Entrypoints](../entrypoints).
+For more information, see [Entrypoints](/smart-contracts/entrypoints).
## Further reading
diff --git a/docs/smart-contracts/languages/smartpy.md b/docs/smart-contracts/languages/smartpy.md
index e3d67a426..599440524 100644
--- a/docs/smart-contracts/languages/smartpy.md
+++ b/docs/smart-contracts/languages/smartpy.md
@@ -7,7 +7,7 @@ last_update:
SmartPy is a comprehensive solution for developing, testing, and deploying smart contracts on Tezos. With its easy-to-use Python syntax, developers can create contracts in a familiar and intuitive way, while SmartPy's type inference provides added safety.
-To get started with SmartPy, see the tutorial [Deploy a smart contract with SmartPy](../../tutorials/smart-contract/smartpy), the [tutorial](https://smartpy.io/guides/tutorial) on smartpy.io, or [Smart contract development with SmartPy](https://opentezos.com/smartpy/write-contract-smartpy/) on opentezos.com.
+To get started with SmartPy, see the tutorial [Deploy a smart contract with SmartPy](/tutorials/smart-contract/smartpy), the [tutorial](https://smartpy.io/guides/tutorial) on smartpy.io, or [Smart contract development with SmartPy](https://opentezos.com/smartpy/write-contract-smartpy/) on opentezos.com.
## Test scenarios
diff --git a/docs/smart-contracts/multisig.md b/docs/smart-contracts/multisig.md
index dd0cf792e..5964d3877 100644
--- a/docs/smart-contracts/multisig.md
+++ b/docs/smart-contracts/multisig.md
@@ -75,7 +75,7 @@ if (
## Using multi-signature operations
You can also require operations to be signed by multiple accounts.
-For example, the [Octez client](../developing/octez-client) has a built-in multisig contract that you can use.
+For example, the [Octez client](/developing/octez-client) has a built-in multisig contract that you can use.
The contract requires signatures from multiple accounts before running transactions such as :
- Distributing tez
diff --git a/docs/smart-contracts/storage.md b/docs/smart-contracts/storage.md
index 1020eba17..c38049f09 100644
--- a/docs/smart-contracts/storage.md
+++ b/docs/smart-contracts/storage.md
@@ -7,7 +7,7 @@ last_update:
Each contract has associated storage, which is persistent internal data that it can read and write to.
Contracts can access only their own storage; they can't access the storage of other contracts.
-To provide information to other contracts, use [Views](./views).
+To provide information to other contracts, use [Views](/smart-contracts/views).
However, the content of the storage of a contract is public, like everything else in the state of the blockchain.
Therefore, you can see the current value of the storage of any contract using an explorer such as [Better Call Dev](https://better-call.dev/).
diff --git a/docs/tutorials/build-an-nft-marketplace.md b/docs/tutorials/build-an-nft-marketplace.md
index 8241e96fa..1589febc4 100644
--- a/docs/tutorials/build-an-nft-marketplace.md
+++ b/docs/tutorials/build-an-nft-marketplace.md
@@ -18,10 +18,10 @@ You will learn:
## Prerequisites
-1. Optional: If you haven't worked with Tezos NFTs before, consider doing the tutorial [Create an NFT](./create-an-nft) first.
+1. Optional: If you haven't worked with Tezos NFTs before, consider doing the tutorial [Create an NFT](/tutorials/create-an-nft) first.
1. Set up an account with Pinata if you don't have one already and get an API key and API secret.
- For instructions, see the [Configure IPFS storage](./create-an-nft/nft-taquito#configure-ipfs-storage) section of the tutorial [Create a contract and web app that mints NFTs](./create-an-nft/nft-taquito).
+ For instructions, see the [Configure IPFS storage](/tutorials/create-an-nft/nft-taquito#configure-ipfs-storage) section of the tutorial [Create a contract and web app that mints NFTs](/tutorials/create-an-nft/nft-taquito).
1. Make sure that you have installed these tools:
@@ -39,10 +39,10 @@ You will learn:
## What are FA2 tokens?
-If you've gone through the tutorials under [Create an NFT](./create-an-nft) you know that NFTs are blockchain tokens that represent unique assets, usually created under the FA2 token standard.
+If you've gone through the tutorials under [Create an NFT](/tutorials/create-an-nft) you know that NFTs are blockchain tokens that represent unique assets, usually created under the FA2 token standard.
However, the Tezos FA2 token standard allows you to create multiple types of tokens, and even more than one kind of token within the same smart contract.
When you create tokens, it's important to follow one of the token standards because then tools like wallets and block explorers can automatically work with those tokens.
-For more information about Tezos token standards, see [Token standards](../architecture/tokens).
+For more information about Tezos token standards, see [Token standards](/architecture/tokens).
In this tutorial, you use the LIGO template for FA2 tokens to create these types of tokens:
@@ -82,4 +82,4 @@ You can see a running version of this application here: https://demo.winefactory
This application is made up of a smart contract that handles the tokens and a frontend web application that handles the user interface and sends transactions to the backend.
As you work through the tutorial, you will use different smart contracts and upgrade the web application to work with them.
-When you're ready, go to [Part 1: Minting tokens](./build-an-nft-marketplace/part-1) to begin.
+When you're ready, go to [Part 1: Minting tokens](/tutorials/build-an-nft-marketplace/part-1) to begin.
diff --git a/docs/tutorials/build-an-nft-marketplace/part-1.md b/docs/tutorials/build-an-nft-marketplace/part-1.md
index 7bbc44248..5f3e8ea74 100644
--- a/docs/tutorials/build-an-nft-marketplace/part-1.md
+++ b/docs/tutorials/build-an-nft-marketplace/part-1.md
@@ -8,7 +8,7 @@ last_update:
To start working with the application, you create a Taqueria project and use it to deploy an FA2 contract.
Then you set up a web application to mint NFTs by calling the contract's mint endpoint and uploading an image and metadata to IPFS.
-Before you begin, make sure that you have installed the tools in the [Prerequisites](../build-an-nft-marketplace#prerequisites) section.
+Before you begin, make sure that you have installed the tools in the [Prerequisites](/tutorials/build-an-nft-marketplace#prerequisites) section.
## Creating a Taqueria project
@@ -366,7 +366,7 @@ To save time, this tutorial provides a starter React application.
```
This application contains basic navigation and the ability to connect to wallets.
- For a tutorial that includes connecting to wallets, see [Build a simple web application](../build-your-first-app).
+ For a tutorial that includes connecting to wallets, see [Build a simple web application](/tutorials/build-your-first-app).
Because Taqueria automatically keeps track of your deployed contract, the application automatically accesses the contract and shows that there are no NFTs in it yet.
The application looks like this:
@@ -719,7 +719,7 @@ The mint page uses a form that accepts information and an image and sends a tran
For the complete content of the mint page, see the completed part 1 app at https://github.com/marigold-dev/training-nft-1.
1. In the file `app/.env`, replace the default `VITE_PINATA_API_KEY` and `VITE_PINATA_API_SECRET` values with your Pinata API key and API secret.
- If you don't have a Pinata API key, see the [Configure IPFS storage](../create-an-nft/nft-taquito#configure-ipfs-storage) section of the tutorial [Create a contract and web app that mints NFTs](../create-an-nft/nft-taquito).
+ If you don't have a Pinata API key, see the [Configure IPFS storage](/tutorials/create-an-nft/nft-taquito#configure-ipfs-storage) section of the tutorial [Create a contract and web app that mints NFTs](/tutorials/create-an-nft/nft-taquito).
Now the form has a working mint page.
In the next section, you use it to mint NFTs.
@@ -919,4 +919,4 @@ Now you can create FA2-compatible NFTs with the `@ligo/fa` library and show them
In the next section, you add the buy and sell functions to the smart contract and update the frontend application to allow these actions.
-When you are ready, continue to [Part 2: Buying and selling tokens](./part-2).
+When you are ready, continue to [Part 2: Buying and selling tokens](/tutorials/build-an-nft-marketplace/part-2).
diff --git a/docs/tutorials/build-an-nft-marketplace/part-2.md b/docs/tutorials/build-an-nft-marketplace/part-2.md
index fb07b6ffb..9b1af154d 100644
--- a/docs/tutorials/build-an-nft-marketplace/part-2.md
+++ b/docs/tutorials/build-an-nft-marketplace/part-2.md
@@ -835,4 +835,4 @@ Instead of creating multiple token types with a quantity of exactly 1 as with th
For the complete content of the contract and web app at the end of this part, see the completed part 2 app at https://github.com/marigold-dev/training-nft-2.
-To continue, go to [Part 3: Managing tokens with quantities](./part-3).
+To continue, go to [Part 3: Managing tokens with quantities](/tutorials/build-an-nft-marketplace/part-3).
diff --git a/docs/tutorials/build-an-nft-marketplace/part-3.md b/docs/tutorials/build-an-nft-marketplace/part-3.md
index 7aa8306c6..08b292338 100644
--- a/docs/tutorials/build-an-nft-marketplace/part-3.md
+++ b/docs/tutorials/build-an-nft-marketplace/part-3.md
@@ -1390,4 +1390,4 @@ For the complete content of the contract and web app at the end of this part, se
In the next part, you update the application to create a multi-asset contract that can handle multiple types of tokens with different quantities.
-To continue, go to [Part 4: Handling multi-asset tokens](./part-4).
+To continue, go to [Part 4: Handling multi-asset tokens](/tutorials/build-an-nft-marketplace/part-4).
diff --git a/docs/tutorials/build-files-archive-with-dal.md b/docs/tutorials/build-files-archive-with-dal.md
index 5d097dae1..8198d6c42 100644
--- a/docs/tutorials/build-files-archive-with-dal.md
+++ b/docs/tutorials/build-files-archive-with-dal.md
@@ -47,7 +47,7 @@ Here is a diagram that shows the components that you set up in this tutorial in
## Prerequisites
This article assumes some familiarity with Smart Rollups.
-If you are new to Smart Rollups, see the tutorial [Deploy a Smart Rollup](./smart-rollup).
+If you are new to Smart Rollups, see the tutorial [Deploy a Smart Rollup](/tutorials/smart-rollup).
## Why the DAL?
@@ -106,4 +106,4 @@ When you install a Smart Rollup, you provide only the installer kernel on layer
Currently, you cannot send the full kernel data over the Data Availability Layer, so this tutorial relies on the reveal data channel to install the kernel as usual.
:::
-When you are ready, get started by going to [Part 1: Setting up an environment](./build-files-archive-with-dal/set-up-environment).
+When you are ready, get started by going to [Part 1: Setting up an environment](/tutorials/build-files-archive-with-dal/set-up-environment).
diff --git a/docs/tutorials/build-files-archive-with-dal/get-dal-params.md b/docs/tutorials/build-files-archive-with-dal/get-dal-params.md
index 4fd156bcb..00d2db895 100644
--- a/docs/tutorials/build-files-archive-with-dal/get-dal-params.md
+++ b/docs/tutorials/build-files-archive-with-dal/get-dal-params.md
@@ -15,7 +15,7 @@ These commitments refer to the data that is stored on the DAL, which stores the
The data is broken into pages to ensure that each piece of data can fit in a single Tezos operation.
This data must fit in a single operation to allow the Smart Rollup refutation game to work, in which every execution step of the Smart Rollup must be provable to layer 1.
-For more information about Smart Rollups, see [Smart Rollups](../../architecture/smart-rollups).
+For more information about Smart Rollups, see [Smart Rollups](/architecture/smart-rollups).
When clients add data, they must specify which slot to add it to.
Note that because the DAL is permissionless, clients may try to add data to the same slot in the same block.
@@ -31,7 +31,7 @@ In these steps, you set up a simple Smart Rollup to get the current DAL paramete
## Prerequisites
-Before you begin, make sure that you have installed the prerequisites and set up an environment and an account as described in [Part 1: Setting up an environment](./set-up-environment).
+Before you begin, make sure that you have installed the prerequisites and set up an environment and an account as described in [Part 1: Setting up an environment](/tutorials/build-files-archive-with-dal/set-up-environment).
## Fetching the DAL parameters in a kernel
@@ -92,7 +92,7 @@ To get the DAL parameters, you can use built-in functions in the Tezos [Rust SDK
-o installer.hex
```
- For more information about optimizing the kernel and using installer kernels, see the tutorial [Deploy a Smart Rollup](../smart-rollup).
+ For more information about optimizing the kernel and using installer kernels, see the tutorial [Deploy a Smart Rollup](/tutorials/smart-rollup).
Now the Smart Rollup is ready to deploy.
@@ -188,4 +188,4 @@ For example, if you are using the Tezos Docker image, the path is `/bin/sh`, so
Then try the command `./deploy_smart_rollup.sh $MY_ACCOUNT` again.
In the next section, you will get information about the state of slots in the DAL.
-See [Part 3: Getting slot information](./get-slot-info).
+See [Part 3: Getting slot information](/tutorials/build-files-archive-with-dal/get-slot-info).
diff --git a/docs/tutorials/build-files-archive-with-dal/get-slot-info.md b/docs/tutorials/build-files-archive-with-dal/get-slot-info.md
index 798b71228..d920b11f2 100644
--- a/docs/tutorials/build-files-archive-with-dal/get-slot-info.md
+++ b/docs/tutorials/build-files-archive-with-dal/get-slot-info.md
@@ -127,7 +127,7 @@ Follow these steps to update the Smart Rollup to access information about slot 0
1. Run the commands to build and deploy the Smart Rollup and start the node.
- If you set up the deployment script as described in [Part 2: Getting the DAL parameters](./get-dal-params), you can run `./deploy_smart_rollup.sh $MY_ACCOUNT`.
+ If you set up the deployment script as described in [Part 2: Getting the DAL parameters](/tutorials/build-files-archive-with-dal/get-dal-params), you can run `./deploy_smart_rollup.sh $MY_ACCOUNT`.
If not, run these commands, using your account alias for `MY_ACCOUNT`:
@@ -170,4 +170,4 @@ This is why you must wait for 4 blocks before seeing slot page contents being
logged.
Now that you can see the state of the slots, you can find an unused slot and publish data to it.
-When you are ready, continue to [Part 3: Publishing on the DAL](./publishing-on-the-dal).
+When you are ready, continue to [Part 3: Publishing on the DAL](/tutorials/build-files-archive-with-dal/publishing-on-the-dal).
diff --git a/docs/tutorials/build-files-archive-with-dal/publishing-on-the-dal.md b/docs/tutorials/build-files-archive-with-dal/publishing-on-the-dal.md
index 327ed8be6..c9e992b78 100644
--- a/docs/tutorials/build-files-archive-with-dal/publishing-on-the-dal.md
+++ b/docs/tutorials/build-files-archive-with-dal/publishing-on-the-dal.md
@@ -39,7 +39,7 @@ For example, this command uses slot 10:
```
1. Run the commands to build and deploy the Smart Rollup and start the node.
-You can use the script in [Part 2: Getting the DAL parameters](./get-dal-params) to simplify the process.
+You can use the script in [Part 2: Getting the DAL parameters](/tutorials/build-files-archive-with-dal/get-dal-params) to simplify the process.
## Publishing messages
@@ -178,4 +178,4 @@ If you are using the Tezos Docker image, you can run `sudo apk add jq xxd`.
Now you can publish data to the DAL and use it in a Smart Rollup.
In the next section, you write to and retrieve the entire slot.
-When you are ready, go to [Part 4: Using the entire slot](./using-full-slot).
+When you are ready, go to [Part 4: Using the entire slot](/tutorials/build-files-archive-with-dal/using-full-slot).
diff --git a/docs/tutorials/build-files-archive-with-dal/set-up-environment.md b/docs/tutorials/build-files-archive-with-dal/set-up-environment.md
index 4c764f336..9f5f43d80 100644
--- a/docs/tutorials/build-files-archive-with-dal/set-up-environment.md
+++ b/docs/tutorials/build-files-archive-with-dal/set-up-environment.md
@@ -150,4 +150,4 @@ After you run these commands, run `$CC --version` to verify that you have versio
Also, ensure that your version of Clang `wasm32` target with by running the command `$CC -print-targets | grep wasm32` and verifying that the results include `wasm32`.
-When your environment is ready, continue to [Part 2: Getting the DAL parameters](./get-dal-params).
+When your environment is ready, continue to [Part 2: Getting the DAL parameters](/tutorials/build-files-archive-with-dal/get-dal-params).
diff --git a/docs/tutorials/build-your-first-app/getting-information.md b/docs/tutorials/build-your-first-app/getting-information.md
index eba83abf2..ad8dfae2f 100644
--- a/docs/tutorials/build-your-first-app/getting-information.md
+++ b/docs/tutorials/build-your-first-app/getting-information.md
@@ -88,4 +88,4 @@ Here are some ideas:
- Show toasts or messages on the page to notify the user when transactions complete.
You can also deploy your own smart contracts to use from your applications.
-For a tutorial on deploying a simple smart contract, see [Deploy a smart contract](../smart-contract).
+For a tutorial on deploying a simple smart contract, see [Deploy a smart contract](/tutorials/smart-contract).
diff --git a/docs/tutorials/create-an-nft.md b/docs/tutorials/create-an-nft.md
index 35a4d6210..d9a29d8bd 100644
--- a/docs/tutorials/create-an-nft.md
+++ b/docs/tutorials/create-an-nft.md
@@ -5,6 +5,6 @@ title: Create an NFT
There are many ways to create (or "mint") NFTs; in particular, you can create all of the NFTs in a collection at once or set up an application that can create NFTs as users request them.
Try one of these tutorials to see different ways of minting NFTs:
-- [Create NFTs from the command line](./create-an-nft/nft-tznft): Create metadata files to describe NFTs and then use a command-line tool to mint them and manipulate them
-- [Mint NFTs from a web app](./create-an-nft/nft-web-app): Use a pre-existing contract to create NFTs from a web application
-- [Create a contract and web app that mints NFTs](./create-an-nft/nft-taquito): Set up a web application that authorized users can use to create NFTs and all users can use to see the NFTs in a collection
+- [Create NFTs from the command line](/tutorials/create-an-nft/nft-tznft): Create metadata files to describe NFTs and then use a command-line tool to mint them and manipulate them
+- [Mint NFTs from a web app](/tutorials/create-an-nft/nft-web-app): Use a pre-existing contract to create NFTs from a web application
+- [Create a contract and web app that mints NFTs](/tutorials/create-an-nft/nft-taquito): Set up a web application that authorized users can use to create NFTs and all users can use to see the NFTs in a collection
diff --git a/docs/tutorials/create-an-nft/nft-taquito.md b/docs/tutorials/create-an-nft/nft-taquito.md
index bf26180a6..e37ee967e 100644
--- a/docs/tutorials/create-an-nft/nft-taquito.md
+++ b/docs/tutorials/create-an-nft/nft-taquito.md
@@ -228,7 +228,7 @@ For this contract, the initial storage state is in the comment at the end of the
## Originate (deploy) the smart contract to the testnet
There are many ways to originate a contract on Tezos.
-For a tutorial on using the command line, see [Deploy a smart contract](../smart-contract/).
+For a tutorial on using the command line, see [Deploy a smart contract](/tutorials/smart-contract/).
Before you originate your contract to the main Tezos network (referred to as *Mainnet*), you can originate it to a testnet.
Testnets are useful for testing Tezos operations because testnets provide tokens for free so you can work with Tezos without spending real tokens.
@@ -663,4 +663,4 @@ You can also optimize the application by generating the IPFS hashes on the clien
If the mint transaction fails, it may leave unused metadata in your IPFS account.
To avoid this problem, you can start an IPFS node in the browser, pin the metadata there, mint the NFT, and pin the metadata to your Pinata account only if the mint transaction succeeds.
-If you want to continue working with NFTs in a more complex way, try creating a marketplace for tokens as described in the tutorial [Build an NFT Marketplace](../build-an-nft-marketplace).
+If you want to continue working with NFTs in a more complex way, try creating a marketplace for tokens as described in the tutorial [Build an NFT Marketplace](/tutorials/build-an-nft-marketplace).
diff --git a/docs/tutorials/create-an-nft/nft-tznft.md b/docs/tutorials/create-an-nft/nft-tznft.md
index 3b5ffea1f..ae369cd35 100644
--- a/docs/tutorials/create-an-nft/nft-tznft.md
+++ b/docs/tutorials/create-an-nft/nft-tznft.md
@@ -518,4 +518,4 @@ tznft transfer --nft my_collection --signer my-account --batch 'my-account, othe
Now you can create, test, and deploy NFTs locally and to testnets.
The process for minting NFTs to Tezos Mainnet is the same, but you must use an account with real XTZ in it to pay the transaction fees.
-If you want to continue working with NFTs, try creating a marketplace for tokens as described in the tutorial [Build an NFT Marketplace](../build-an-nft-marketplace).
+If you want to continue working with NFTs, try creating a marketplace for tokens as described in the tutorial [Build an NFT Marketplace](/tutorials/build-an-nft-marketplace).
diff --git a/docs/tutorials/create-an-nft/nft-web-app.md b/docs/tutorials/create-an-nft/nft-web-app.md
index 56008ef9b..05f31f471 100644
--- a/docs/tutorials/create-an-nft/nft-web-app.md
+++ b/docs/tutorials/create-an-nft/nft-web-app.md
@@ -20,11 +20,11 @@ This tutorial uses [JavaScript](https://www.javascript.com/), so it will be easi
- You do not need any familiarity with any of the libraries in the tutorial, including [Taquito](https://tezostaquito.io/), a JavaScript library that helps developers access Tezos.
-Before start creating this dApp, we will need a [wallet](../../dApps/wallets) and some ghostnet tez(ꜩ).
+Before start creating this dApp, we will need a [wallet](/dApps/wallets) and some ghostnet tez(ꜩ).
## The smart contract
-The backbone of this application is the smart contract deployed on the Tezos blockchain. The contract we'll be using is already deployed and is written in [SmartPy](../../smart-contracts/languages/smartpy). It defines the rules and processes for interactions with the Tezos blockchain, such as minting NFTs. All you need to do is integrate it into your web app.
+The backbone of this application is the smart contract deployed on the Tezos blockchain. The contract we'll be using is already deployed and is written in [SmartPy](/smart-contracts/languages/smartpy). It defines the rules and processes for interactions with the Tezos blockchain, such as minting NFTs. All you need to do is integrate it into your web app.
## The tutorial application
diff --git a/docs/tutorials/create-an-nft/nft-web-app/defining-functions.md b/docs/tutorials/create-an-nft/nft-web-app/defining-functions.md
index f3981a784..e1aaa7cd1 100644
--- a/docs/tutorials/create-an-nft/nft-web-app/defining-functions.md
+++ b/docs/tutorials/create-an-nft/nft-web-app/defining-functions.md
@@ -169,7 +169,7 @@ For example, if the wallet is not connected, disable buttons for transactions th
}
```
Taquito can fetch the user's tez balance from the connected wallet.
- To get the tez balances, the app uses the [Beacon SDK](../../../dApps/wallets).
+ To get the tez balances, the app uses the [Beacon SDK](/../dApps/wallets).
The `mint` function takes two parameters: a metadata for the NFT and the user's wallet address.
You'll start the app and mint NFTs with your dApp in the next section!
diff --git a/docs/tutorials/create-an-nft/nft-web-app/lets-play.md b/docs/tutorials/create-an-nft/nft-web-app/lets-play.md
index 3912ec7ab..a046190ed 100644
--- a/docs/tutorials/create-an-nft/nft-web-app/lets-play.md
+++ b/docs/tutorials/create-an-nft/nft-web-app/lets-play.md
@@ -50,4 +50,4 @@ Once finished, if you wish to mint another NFT, simply click the "Mint another N
## Summary
Now you can use a web application to connect to a user's wallet, call a smart contract, and mint NFTs.
-If you want to expand your knowledge of NFTs, try the tutorial [Build an NFT marketplace](../../build-an-nft-marketplace).
+If you want to expand your knowledge of NFTs, try the tutorial [Build an NFT marketplace](/tutorials/build-an-nft-marketplace).
diff --git a/docs/tutorials/dapp.md b/docs/tutorials/dapp.md
index c5ffe475e..468f3d08c 100644
--- a/docs/tutorials/dapp.md
+++ b/docs/tutorials/dapp.md
@@ -53,4 +53,4 @@ The application looks like this:
The code for the completed application is in this GitHub repository: [solution](https://github.com/marigold-dev/training-dapp-1/tree/main/solution)
-When you're ready, move to the next section [Create your minimum dApp on Tezos](./dapp/part-1) to begin setting up the application.
+When you're ready, move to the next section [Create your minimum dApp on Tezos](/tutorials/dapp/part-1) to begin setting up the application.
diff --git a/docs/tutorials/dapp/part-1.md b/docs/tutorials/dapp/part-1.md
index 6895d9b89..267b8d4ee 100644
--- a/docs/tutorials/dapp/part-1.md
+++ b/docs/tutorials/dapp/part-1.md
@@ -8,7 +8,7 @@ last_update:
To start working with the application, you create a Taqueria project and use it to deploy the Poke contract.
Then you set up a web application to connect with a wallet, and then interact with your smart contract.
-Before you begin, make sure that you have installed the tools in the [Prerequisites](../dapp#prerequisites) section.
+Before you begin, make sure that you have installed the tools in the [Prerequisites](/tutorials/dapp#prerequisites) section.
## Creating a Taqueria project
@@ -661,4 +661,4 @@ Now, you can create any smart contract using LIGO and create a complete Dapp via
In the next section, you will learn how to call a Smart contract from a smart contract using callbacks and also write unit and mutation tests.
-When you are ready, continue to [Part 2: Inter-contract calls and testing](./part-2).
+When you are ready, continue to [Part 2: Inter-contract calls and testing](/tutorials/dapp/part-2).
diff --git a/docs/tutorials/dapp/part-2.md b/docs/tutorials/dapp/part-2.md
index 49d2fc1c9..9281f17f6 100644
--- a/docs/tutorials/dapp/part-2.md
+++ b/docs/tutorials/dapp/part-2.md
@@ -635,4 +635,4 @@ The higher the percentage of mutants killed, the more effective your tests are.
Now, you can call other contracts, use views, and test your smart contract before deploying it.
In the next training, you will learn how to use tickets.
-When you are ready, continue to [Part 3: Tickets](./part-3).
+When you are ready, continue to [Part 3: Tickets](/tutorials/dapp/part-3).
diff --git a/docs/tutorials/dapp/part-3.md b/docs/tutorials/dapp/part-3.md
index 4cf26f6cd..d7712e041 100644
--- a/docs/tutorials/dapp/part-3.md
+++ b/docs/tutorials/dapp/part-3.md
@@ -666,4 +666,4 @@ Now, you understand tickets. If you want to learn more about tickets, read this
In the next training, you will learn how to upgrade smart contracts.
-When you are ready, continue to [Part 4: Smart contract upgrades](./part-4).
+When you are ready, continue to [Part 4: Smart contract upgrades](/tutorials/dapp/part-4).
diff --git a/docs/tutorials/join-dal-baker.md b/docs/tutorials/join-dal-baker.md
index 56fe0204f..8bdcf642b 100644
--- a/docs/tutorials/join-dal-baker.md
+++ b/docs/tutorials/join-dal-baker.md
@@ -46,10 +46,10 @@ This tutorial requires a cloud-based computer or a computer that stays running c
## References
-- For an overview of the DAL, see [Data Availability Layer](../architecture/data-availability-layer).
-- For an introduction to how the DAL works, see the tutorial [Implement a file archive with the DAL and a Smart Rollup](./build-files-archive-with-dal).
+- For an overview of the DAL, see [Data Availability Layer](/architecture/data-availability-layer).
+- For an introduction to how the DAL works, see the tutorial [Implement a file archive with the DAL and a Smart Rollup](/tutorials/build-files-archive-with-dal).
- For technical information about the DAL, see [Data-Availability Layer](https://tezos.gitlab.io/shell/dal.html) in the Octez documentation.
## Getting started
-To get started, go to [Step 1: Run an Octez node](./join-dal-baker/run-node).
+To get started, go to [Step 1: Run an Octez node](/tutorials/join-dal-baker/run-node).
diff --git a/docs/tutorials/join-dal-baker/prepare-account.md b/docs/tutorials/join-dal-baker/prepare-account.md
index 4144fef62..f81c20cc2 100644
--- a/docs/tutorials/join-dal-baker/prepare-account.md
+++ b/docs/tutorials/join-dal-baker/prepare-account.md
@@ -87,4 +87,4 @@ This command creates an account and associates it with the `my_baker` alias:
Now the account has staked enough tez to earn the right to make attestations, including attestations that data is available on the DAL.
However, it does not receive these rights until the baking daemon is running and a certain amount of time has passed.
-While you wait for attestation rights, continue to [Step 3: Run an Octez DAL node](./run-dal-node).
+While you wait for attestation rights, continue to [Step 3: Run an Octez DAL node](/tutorials/join-dal-baker/run-dal-node).
diff --git a/docs/tutorials/join-dal-baker/run-baker.md b/docs/tutorials/join-dal-baker/run-baker.md
index e157ce599..ab3961a24 100644
--- a/docs/tutorials/join-dal-baker/run-baker.md
+++ b/docs/tutorials/join-dal-baker/run-baker.md
@@ -83,7 +83,7 @@ For example, if the delay is 307,200 seconds, that time is about 3.5 days.
The exact time depends on what time in the current cycle the account staked its tez.
-1. Wait for the attestation delay to be over and then proceed to [Step 5: Verify attestation rights](./verify-rights).
+1. Wait for the attestation delay to be over and then proceed to [Step 5: Verify attestation rights](/tutorials/join-dal-baker/verify-rights).
:::note
diff --git a/docs/tutorials/join-dal-baker/run-dal-node.md b/docs/tutorials/join-dal-baker/run-dal-node.md
index 302007578..1d20ac60b 100644
--- a/docs/tutorials/join-dal-baker/run-dal-node.md
+++ b/docs/tutorials/join-dal-baker/run-dal-node.md
@@ -69,4 +69,4 @@ You can also refer to [Run a persistent baking node](https://opentezos.com/node-
```
Now that you have a DAL node running, you can start a baking daemon that uses that DAL node.
-Continue to [Step 4: Run an Octez baking daemon](./run-baker).
+Continue to [Step 4: Run an Octez baking daemon](/tutorials/join-dal-baker/run-baker).
diff --git a/docs/tutorials/join-dal-baker/run-node.md b/docs/tutorials/join-dal-baker/run-node.md
index b771f5dc6..f1335763f 100644
--- a/docs/tutorials/join-dal-baker/run-node.md
+++ b/docs/tutorials/join-dal-baker/run-node.md
@@ -56,4 +56,4 @@ At first launch, the node generates a fresh identity file used to identify itsel
Then it bootstraps the chain, which takes a variable amount of time depending on how many blocks need to be loaded.
In the meantime, you can continue the baking infrastructure while the node is bootstrapping.
-Continue to [Step 2: Set up a baker account](./prepare-account).
+Continue to [Step 2: Set up a baker account](/tutorials/join-dal-baker/prepare-account).
diff --git a/docs/tutorials/mobile.md b/docs/tutorials/mobile.md
index 60ef34697..8a7875d6b 100644
--- a/docs/tutorials/mobile.md
+++ b/docs/tutorials/mobile.md
@@ -51,4 +51,4 @@ The application can be downloaded on [the Android store here](https://play.googl
The code for the completed application is in this GitHub repository: [solution](https://github.com/marigold-dev/training-dapp-shifumi/tree/main/solution)
-When you're ready, move to the next section [Part 1: Create the smart contract](./mobile/part-1) to begin setting up the application.
+When you're ready, move to the next section [Part 1: Create the smart contract](/tutorials/mobile/part-1) to begin setting up the application.
diff --git a/docs/tutorials/mobile/part-1.md b/docs/tutorials/mobile/part-1.md
index 99cb597aa..3385d2a57 100644
--- a/docs/tutorials/mobile/part-1.md
+++ b/docs/tutorials/mobile/part-1.md
@@ -122,4 +122,4 @@ On this first section, you will:
That's all for the smart contract. On the next section, you will create the mobile application and connect to your smart contract
-When you are ready, continue to [Part 2: Create an Ionic mobile application](./part-2).
+When you are ready, continue to [Part 2: Create an Ionic mobile application](/tutorials/mobile/part-2).
diff --git a/docs/tutorials/mobile/part-2.md b/docs/tutorials/mobile/part-2.md
index eda7a7d5e..0b508c236 100644
--- a/docs/tutorials/mobile/part-2.md
+++ b/docs/tutorials/mobile/part-2.md
@@ -1150,4 +1150,4 @@ A web3 mobile application is not different from a web2 one in terms of its basic
You have a mobile application where you can connect and disconnect a wallet, some default UI components and styles but not yet an interaction with your smart contract.
The next step is to be able to create a game, join a game and play a session.
-When you are ready, continue to [Part 3: Create the game pages](./part-3).
+When you are ready, continue to [Part 3: Create the game pages](/tutorials/mobile/part-3).
diff --git a/docs/tutorials/mobile/part-3.md b/docs/tutorials/mobile/part-3.md
index 2391571c4..4e80952cb 100644
--- a/docs/tutorials/mobile/part-3.md
+++ b/docs/tutorials/mobile/part-3.md
@@ -826,4 +826,4 @@ In this section, you will create the pages to:
You have successfully create a Web3 game that runs 100% on-chain.
The next step is to build and distribute your game as an Android app.
-When you are ready, continue to [Part 4: Publish on the Android store](./part-4).
+When you are ready, continue to [Part 4: Publish on the Android store](/tutorials/mobile/part-4).
diff --git a/docs/tutorials/security.md b/docs/tutorials/security.md
index 304df706f..8ce770c05 100644
--- a/docs/tutorials/security.md
+++ b/docs/tutorials/security.md
@@ -72,4 +72,4 @@ TAQ_LIGO_IMAGE=ligolang/ligo:1.1.0 taq compile .jsligo
---
-When you're ready, go to [Part 1: Programming errors](./security/part-1)
+When you're ready, go to [Part 1: Programming errors](/tutorials/security/part-1)
diff --git a/docs/tutorials/security/part-1.md b/docs/tutorials/security/part-1.md
index cda90228a..3d617592c 100644
--- a/docs/tutorials/security/part-1.md
+++ b/docs/tutorials/security/part-1.md
@@ -222,7 +222,7 @@ Due to the deterministic nature of blockchain execution, it is not possible to g
One of the possible scenarios in a blockchain smart contract is to have a blocked state where the contract execution is paused until a certain condition is met. For example, a contract that implements a simple escrow service might have a blocked state where the seller has to confirm the delivery of the goods before the buyer can release the payment. This way, the contract ensures that both parties are satisfied with the transaction and no one can cheat or withdraw from the agreement.
-Another example is in the tutorial [Create a mobile game](../mobile). The contract in this tutorial is blocked while the players make their decisions. However, if one of the players does not reveal their choice within 10 minutes, the other player can claim a resolution and win the game by calling an entrypoint on the contract. This way, the contract is not stuck indefinitely and the honest player is rewarded.
+Another example is in the tutorial [Create a mobile game](/tutorials/mobile). The contract in this tutorial is blocked while the players make their decisions. However, if one of the players does not reveal their choice within 10 minutes, the other player can claim a resolution and win the game by calling an entrypoint on the contract. This way, the contract is not stuck indefinitely and the honest player is rewarded.
→ **SOLUTION**:
@@ -234,4 +234,4 @@ Another example is in the tutorial [Create a mobile game](../mobile). The contra
---
-Go to [Part 2: Leaks](./part-2).
+Go to [Part 2: Leaks](/tutorials/security/part-2).
diff --git a/docs/tutorials/security/part-2.md b/docs/tutorials/security/part-2.md
index 8ff265cec..2e45608ef 100644
--- a/docs/tutorials/security/part-2.md
+++ b/docs/tutorials/security/part-2.md
@@ -266,4 +266,4 @@ Manipulating arithmetic operations can lead to overflows and underflows.
> Do not confuse the OCaml Zarith library with the [Ligo MathLib library](https://packages.ligolang.org/package/@ligo/math-lib), which provides manipulation of floats and rationals instead of using basic types.
-Go to [Part 3: User trust & management](./part-3).
+Go to [Part 3: User trust & management](/tutorials/security/part-3).
diff --git a/docs/tutorials/security/part-3.md b/docs/tutorials/security/part-3.md
index 0c2dd81e8..40ac88688 100644
--- a/docs/tutorials/security/part-3.md
+++ b/docs/tutorials/security/part-3.md
@@ -36,13 +36,13 @@ For example, if the lambda is called in a function to update a static data confi
> Other techniques exist to update a dApp, like the proxy pattern. It does not change the code of the smart contract, but deployed a new version of it and a proxy contract will redirect the user transaction to this new contract. The risk is located on the proxy contract. If this contract is hacked and badly protected, anyone can deploy a malicious contract and redirect to it.
-For an example of upgrading smart contracts with lambdas and proxies, see [Create your minimum dapp on Tezos](../dapp).
+For an example of upgrading smart contracts with lambdas and proxies, see [Create your minimum dapp on Tezos](/tutorials/dapp).
## (Trustable) oracles
Blockchain oracles are third-party services that provide smart contracts with external information. They serve as bridges between blockchains and the outside world, allowing smart contracts to access off-chain data. Oracles verify, query, and authenticate external data sources, and transmit any valuable data.
-An [Oracle](../../smart-contracts/oracles) is made of two parts:
+An [Oracle](/smart-contracts/oracles) is made of two parts:
- Off-chain: The data collector that pushes data to the on-chain contract
- On-chain: The contract that stores the data and exposes it to other contracts. Generally, a call for information involves monetization and so, some fees apply.
diff --git a/docs/tutorials/smart-contract.md b/docs/tutorials/smart-contract.md
index 84ee56f22..d5f6b6e50 100644
--- a/docs/tutorials/smart-contract.md
+++ b/docs/tutorials/smart-contract.md
@@ -23,7 +23,7 @@ This tutorial has different versions for different programming languages.
You can run the tutorial with the version of the language you are most familiar with or want to learn.
You do not need an experience in these languages to run the tutorial.
-- To use SmartPy, a language similar to Python, see [Deploy a smart contract with SmartPy](./smart-contract/smartpy)
-- To use JsLIGO, a language similar to JavaScript and TypeScript, see [Deploy a smart contract with JsLIGO](./smart-contract/jsligo)
-- To use CameLIGO, a language similar to OCaml, see [Deploy a smart contract with CameLIGO](./smart-contract/cameligo)
-- To learn the Archetype language, try [Deploy a smart contract with Archetype](./smart-contract/archetype).
+- To use SmartPy, a language similar to Python, see [Deploy a smart contract with SmartPy](/tutorials/smart-contract/smartpy)
+- To use JsLIGO, a language similar to JavaScript and TypeScript, see [Deploy a smart contract with JsLIGO](/tutorials/smart-contract/jsligo)
+- To use CameLIGO, a language similar to OCaml, see [Deploy a smart contract with CameLIGO](/tutorials/smart-contract/cameligo)
+- To learn the Archetype language, try [Deploy a smart contract with Archetype](/tutorials/smart-contract/archetype).
diff --git a/docs/tutorials/smart-contract/archetype.md b/docs/tutorials/smart-contract/archetype.md
index c25e0aa2e..64e35e9d8 100644
--- a/docs/tutorials/smart-contract/archetype.md
+++ b/docs/tutorials/smart-contract/archetype.md
@@ -8,9 +8,9 @@ last_update:
This tutorial covers writing a smart contract and deploying it to Tezos in the Archetype programming language.
It uses the completium-cli command-line tool, which lets you work with Archetype contracts and Tezos from the command line.
-- If you are more familiar with Python, try [Deploy a smart contract with SmartPy](./smartpy).
-- If you are more familiar with OCaml, try [Deploy a smart contract with CameLIGO](./cameligo).
-- If you are more familiar with JavaScript, try [Deploy a smart contract with JsLIGO](./jsligo).
+- If you are more familiar with Python, try [Deploy a smart contract with SmartPy](/tutorials/smart-contract/smartpy).
+- If you are more familiar with OCaml, try [Deploy a smart contract with CameLIGO](/tutorials/smart-contract/cameligo).
+- If you are more familiar with JavaScript, try [Deploy a smart contract with JsLIGO](/tutorials/smart-contract/jsligo).
In this tutorial, you will learn how to:
@@ -175,7 +175,7 @@ The contract that you will create has these basic parts:
- A variable that represents the contract's storage, in this case an integer.
Contracts can have storage in the form of primitive types such as an integer, string, or timestamp, or a complex data type that contains multiple values.
-For more information on contract data types, see [Data types](../../smart-contracts/data-types).
+For more information on contract data types, see [Data types](/smart-contracts/data-types).
- Internal functions called entrypoints that run code when clients call the contract.
@@ -336,4 +336,4 @@ If you want to continue working with this contract, here are some ideas:
- Change permissions for the contract so only your account can call its entrypoints
- Add your own entrypoints and originate a new contract; note that you cannot update the existing contract after it is deployed
-- Create a dApp to call the contract from a web application, similar to the dApp that you create in the tutorial [Build a simple web application](../build-your-first-app/)
+- Create a dApp to call the contract from a web application, similar to the dApp that you create in the tutorial [Build a simple web application](/tutorials/build-your-first-app/)
diff --git a/docs/tutorials/smart-contract/cameligo.mdx b/docs/tutorials/smart-contract/cameligo.mdx
index dd6da939f..a5f3c5cfa 100644
--- a/docs/tutorials/smart-contract/cameligo.mdx
+++ b/docs/tutorials/smart-contract/cameligo.mdx
@@ -8,9 +8,9 @@ last_update:
This tutorial covers writing and deploying a simple smart contract with the LIGO programming language.
Specifically, this tutorial uses the CameLIGO version of LIGO, which has syntax similar to OCaml, but you don't need any experience with OCaml or LIGO to do this tutorial.
-- If you are more familiar with JavaScript, try [Deploy a smart contract with JsLIGO](./jsligo).
-- If you are more familiar with Python, try [Deploy a smart contract with SmartPy](./smartpy).
-- To learn the Archetype language, try [Deploy a smart contract with Archetype](./archetype).
+- If you are more familiar with JavaScript, try [Deploy a smart contract with JsLIGO](/tutorials/smart-contract/jsligo).
+- If you are more familiar with Python, try [Deploy a smart contract with SmartPy](/tutorials/smart-contract/smartpy).
+- To learn the Archetype language, try [Deploy a smart contract with Archetype](/tutorials/smart-contract/archetype).
LIGO is a high-level programming language that you can use to write smart contracts for the Tezos blockchain.
It abstracts away the complexity of using Michelson (the smart contract language directly available on-chain) to make it easier to write smart contracts on Tezos.
@@ -94,7 +94,7 @@ The contract that you will create has these basic parts:
- A type that describes the contract's storage, in this case an integer.
The storage can be a primitive type such as an integer, string, or timestamp, or a complex data type that contains multiple values.
-For more information on contract data types, see [Data types](../../smart-contracts/data-types).
+For more information on contract data types, see [Data types](/smart-contracts/data-types).
- Functions called entrypoints that run code when clients call the contract.
@@ -259,7 +259,7 @@ You can ignore this warning because you can set the initial storage now.
Copy the contract address now, because it will not be shown again.
:::
-Now you can call the contract from any Tezos client, including web applications and command-line applications like [The Octez client](../../developing/octez-client).
+Now you can call the contract from any Tezos client, including web applications and command-line applications like [The Octez client](/developing/octez-client).
## Calling the contract
@@ -306,4 +306,4 @@ If you want to continue working with this contract, here are some ideas:
- Change permissions for the contract so only your account can call its entrypoints
- Add your own entrypoints and originate a new contract; note that you cannot update the existing contract after it is deployed
-- Create a dApp to call the contract from a web application, similar to the dApp that you create in the tutorial [Build a simple web application](../build-your-first-app/)
+- Create a dApp to call the contract from a web application, similar to the dApp that you create in the tutorial [Build a simple web application](/tutorials/build-your-first-app/)
diff --git a/docs/tutorials/smart-contract/jsligo.mdx b/docs/tutorials/smart-contract/jsligo.mdx
index bd35afd63..10169a700 100644
--- a/docs/tutorials/smart-contract/jsligo.mdx
+++ b/docs/tutorials/smart-contract/jsligo.mdx
@@ -8,9 +8,9 @@ last_update:
This tutorial covers writing and deploying a simple smart contract with the LIGO programming language.
Specifically, this tutorial uses the JsLIGO version of LIGO, which has syntax similar to JavaScript, but you don't need any experience with JavaScript or LIGO to do this tutorial.
-- If you are more familiar with Python, try [Deploy a smart contract with SmartPy](./smartpy).
-- If you are more familiar with OCaml, try [Deploy a smart contract with CameLIGO](./cameligo).
-- To learn the Archetype language, try [Deploy a smart contract with Archetype](./archetype).
+- If you are more familiar with Python, try [Deploy a smart contract with SmartPy](/tutorials/smart-contract/smartpy).
+- If you are more familiar with OCaml, try [Deploy a smart contract with CameLIGO](/tutorials/smart-contract/cameligo).
+- To learn the Archetype language, try [Deploy a smart contract with Archetype](/tutorials/smart-contract/archetype).
LIGO is a high-level programming language that you can use to write smart contracts for the Tezos blockchain.
It abstracts away the complexity of using Michelson (the smart contract language directly available on-chain) to make it easier to write smart contracts on Tezos.
@@ -94,7 +94,7 @@ The contract that you will create has these basic parts:
- A type that describes the contract's storage, in this case an integer.
The storage can be a primitive type such as an integer, string, or timestamp, or a complex data type that contains multiple values.
-For more information on contract data types, see [Data types](../../smart-contracts/data-types).
+For more information on contract data types, see [Data types](/smart-contracts/data-types).
- Functions called entrypoints that run code when clients call the contract.
@@ -274,7 +274,7 @@ You can ignore this warning because you can set the initial storage now.
Copy the contract address now, because it will not be shown again.
:::
-Now you can call the contract from any Tezos client, including web applications and command-line applications like [The Octez client](../../developing/octez-client).
+Now you can call the contract from any Tezos client, including web applications and command-line applications like [The Octez client](/developing/octez-client).
## Calling the contract
@@ -321,4 +321,4 @@ If you want to continue working with this contract, here are some ideas:
- Change permissions for the contract so only your account can call its entrypoints
- Add your own entrypoints and originate a new contract; note that you cannot update the existing contract after it is deployed
-- Create a dApp to call the contract from a web application, similar to the dApp that you create in the tutorial [Build a simple web application](../build-your-first-app/)
+- Create a dApp to call the contract from a web application, similar to the dApp that you create in the tutorial [Build a simple web application](/tutorials/build-your-first-app/)
diff --git a/docs/tutorials/smart-contract/smartpy.mdx b/docs/tutorials/smart-contract/smartpy.mdx
index eac8c85cc..a2f884388 100644
--- a/docs/tutorials/smart-contract/smartpy.mdx
+++ b/docs/tutorials/smart-contract/smartpy.mdx
@@ -8,9 +8,9 @@ last_update:
This tutorial covers writing and deploying a simple smart contract with the SmartPy programming language.
SmartPy has syntax similar to Python, but you don't need any experience with Python or SmartPy to do this tutorial.
-- If you are more familiar with OCaml, try [Deploy a smart contract with CameLIGO](./cameligo).
-- If you are more familiar with JavaScript, try [Deploy a smart contract with JsLIGO](./jsligo).
-- To learn the Archetype language, try [Deploy a smart contract with Archetype](./archetype).
+- If you are more familiar with OCaml, try [Deploy a smart contract with CameLIGO](/tutorials/smart-contract/cameligo).
+- If you are more familiar with JavaScript, try [Deploy a smart contract with JsLIGO](/tutorials/smart-contract/jsligo).
+- To learn the Archetype language, try [Deploy a smart contract with Archetype](/tutorials/smart-contract/archetype).
SmartPy is a high-level programming language that you can use to write smart contracts for the Tezos blockchain.
It abstracts away the complexity of using Michelson (the smart contract language directly available on-chain) to make it easier to write smart contracts on Tezos.
@@ -137,7 +137,7 @@ You can work with SmartPy code in any IDE, but this online IDE keeps you from ha
The contract has an `__init__` function, which runs when the contract is deployed.
In this case, the function sets the initial value of the storage to a parameter that you pass when you deploy the contract.
This storage value is a string, but the storage can be another primitive type such as an integer or timestamp, or a complex data type that contains multiple values.
- For more information on contract data types, see [Data types](../../smart-contracts/data-types).
+ For more information on contract data types, see [Data types](/smart-contracts/data-types).
1. Add this code, which creates automated tests:
@@ -317,4 +317,4 @@ If you want to continue working with this contract, here are some ideas:
- Change permissions for the contract so only your account can call its entrypoints
- Add your own entrypoints and originate a new contract; note that you cannot update the existing contract after it is deployed
-- Create a dApp to call the contract from a web application, similar to the dApp that you create in the tutorial [Build a simple web application](../build-your-first-app/)
\ No newline at end of file
+- Create a dApp to call the contract from a web application, similar to the dApp that you create in the tutorial [Build a simple web application](/tutorials/build-your-first-app/)
\ No newline at end of file
diff --git a/docs/tutorials/smart-rollup.md b/docs/tutorials/smart-rollup.md
index 4a59a13b7..91db62e9a 100644
--- a/docs/tutorials/smart-rollup.md
+++ b/docs/tutorials/smart-rollup.md
@@ -21,7 +21,7 @@ Smart Rollups use Tezos for information and transactions but can run large appli
In this way, Smart Rollups allow Tezos to scale to support large, complex applications without slowing Tezos itself or incurring large transaction and storage fees.
The processing that runs on Tezos itself via smart contracts is referred to as _layer 1_ and the processing that Smart Rollups run is referred to as _layer 2_.
-To learn about running code in smart contracts, see the tutorial [Deploy a smart contract](./smart-contract).
+To learn about running code in smart contracts, see the tutorial [Deploy a smart contract](/tutorials/smart-contract).
Rollups also have an outbox, which consists of calls to smart contracts on layer 1.
These calls are how rollups send messages back to layer 1.
@@ -39,7 +39,7 @@ TODO Should this intro discuss the reveal data channel?
Rollups maintain consensus by publishing the hash of their state to Tezos, which other nodes can use to verify the rollup's behavior.
The specific way that rollups publish their states and maintain consensus is beyond the scope of this tutorial.
-For more information about rollups and their consensus mechanism, see [Smart Optimistic Rollups](../architecture/smart-rollups).
+For more information about rollups and their consensus mechanism, see [Smart Optimistic Rollups](/architecture/smart-rollups).
This diagram shows a Smart Rollup interacting with layer 1 by receiving a message, running processing based on that message, and sending a transaction to layer 1:
diff --git a/docs/tutorials/smart-rollup/run.md b/docs/tutorials/smart-rollup/run.md
index 1c2ee02ba..a8d340d62 100644
--- a/docs/tutorials/smart-rollup/run.md
+++ b/docs/tutorials/smart-rollup/run.md
@@ -92,7 +92,7 @@ Now you can send messages to this rollup via Tezos layer 1 and act on them in th
Commenting this out because there's not enough info for a tutorial user to do this without further information; consider adding this because it would be good to be able to send messages (that is, call contracts) from the rollup, and I don't know how you'd do that in the sandbox.
Currently, your rollup and kernel are running in sandbox mode.
-If you want to explore further, you can try deploying the rollup to a testnet as you do in the [Deploy a smart contract](../deploy-your-first-smart-contract/) tutorial.
+If you want to explore further, you can try deploying the rollup to a testnet as you do in the [Deploy a smart contract](/tutorialsdeploy-your-first-smart-contract/) tutorial.
The workflow for deploying to a testnet is similar to the workflow that you used to deploy to the sandbox:
1. Configure the network to use the testnet
diff --git a/docs/tutorials/smartpy-fa2-fungible.md b/docs/tutorials/smartpy-fa2-fungible.md
index a16643ab9..2db977899 100644
--- a/docs/tutorials/smartpy-fa2-fungible.md
+++ b/docs/tutorials/smartpy-fa2-fungible.md
@@ -34,7 +34,7 @@ Therefore, only one account can own a specific NFT at one time.
The term "NFT" is often misused when assets are represented on blockchains, and is often confused with a fungible token.
Make sure that you understand the difference.
-For more information about types of tokens, see [Tokens](../architecture/tokens).
+For more information about types of tokens, see [Tokens](/architecture/tokens).
## What is the FA2 standard?
@@ -44,7 +44,7 @@ It supports several different token types, including fungible and non-fungible t
Adhering to the FA2 standard allows developers to create new types of tokens while ensuring that the tokens work with existing wallets and applications.
The FA2 standard leaves enough freedom for developers to define rules for transferring tokens and for how tokens behave.
-For more information about FA2 tokens, see [FA2 tokens](../architecture/tokens/FA2).
+For more information about FA2 tokens, see [FA2 tokens](/architecture/tokens/FA2).
## What is the SmartPy FA2 library?
diff --git a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md
index f52edef14..18c69acb6 100644
--- a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md
+++ b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md
@@ -105,7 +105,7 @@ It is still advisable to save a local copy of your metadata, just as you would w
This metadata describes who is allowed to transfer tokens.
The permissions in this code allow token owners and operators to transfer tokens.
- For more information about operators, see [FA2 tokens](../../architecture/tokens/FA2).
+ For more information about operators, see [FA2 tokens](/architecture/tokens/FA2).
1. Pin the metadata to IPFS and get its URI with this code:
diff --git a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md
index 75b0f8044..5d44af682 100644
--- a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md
+++ b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md
@@ -429,7 +429,7 @@ The Octez client provides a few local sandbox modes that you can use to test con
Follow these steps to set up the Octez client mockup mode and deploy the contract to it:
-1. Install the Octez client by following the steps in [Installing the Octez client](../../developing/octez-client/installing).
+1. Install the Octez client by following the steps in [Installing the Octez client](/developing/octez-client/installing).
1. Set up the Octez client mockup mode:
diff --git a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md
index cbe707ae8..1dfc91e4a 100644
--- a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md
+++ b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md
@@ -19,7 +19,7 @@ To convert one token into another, the entrypoint follows these general steps:
1. Mint the target tokens by increasing the amount in the ledger for the account.
The burn and mint steps are straightforward as long as you understand how FA2 contracts store information in their ledger.
-As described in [Part 1](./basic-fa2-token), the contract stores information about who owns tokens in a key-value store:
+As described in [Part 1](/tutorials/smartpy-fa2-fungible/basic-fa2-token), the contract stores information about who owns tokens in a key-value store:
- The key is a pair that contains the address of the owner and the ID of the token
- The value is the quantity of tokens
@@ -179,5 +179,5 @@ That's all that's necessary to convert one fungible token into another.
If you wanted to extend this feature, you could implement an exchange rate, take a fee for converting tokens, or allow only certain accounts to convert tokens.
You could also test the entrypoint more thoroughly, such as testing that a user can't convert more tokens than they have.
-If you want to, you can deploy this new contract to the mockup mode with the same commands as in [Part 1: Setting up a simple FA2 token](./basic-fa2-token) and try it out locally.
+If you want to, you can deploy this new contract to the mockup mode with the same commands as in [Part 1: Setting up a simple FA2 token](/tutorials/smartpy-fa2-fungible/basic-fa2-token) and try it out locally.
In the next section, you deploy it to a test network.
diff --git a/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md b/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md
index 4c83f2ceb..2c6051aa6 100644
--- a/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md
+++ b/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md
@@ -8,7 +8,7 @@ last_update:
So far you have used the token in the SmartPy test scenario and in the Octez client local sandbox.
To test it on a live network, you can use the Ghostnet test network.
-For more information about testnets, see [Testing on sandboxes and testnets](../../developing/testnets).
+For more information about testnets, see [Testing on sandboxes and testnets](/developing/testnets).
## Configuring the Octez client for Ghostnet
@@ -22,7 +22,7 @@ Follow these steps to set up your installation of the Octez client to work with
octez-client -E https://rpc.ghostnet.teztnets.com config update
```
-1. If you don't have an account on Ghostnet, create or import one with the instructions in [Creating accounts](../../developing/octez-client/accounts).
+1. If you don't have an account on Ghostnet, create or import one with the instructions in [Creating accounts](/developing/octez-client/accounts).
1. Use the [Ghostnet faucet](https://faucet.ghostnet.teztnets.com/) to get some tez for the account.
diff --git a/docs/unity.md b/docs/unity.md
index 737dafabd..b4c964b0d 100644
--- a/docs/unity.md
+++ b/docs/unity.md
@@ -16,21 +16,21 @@ You can use Tezos via the SDK to:
## Installation and use
-For a walkthrough of installing and using the SDK in an existing Unity project, see [Quickstart](./unity/quickstart).
+For a walkthrough of installing and using the SDK in an existing Unity project, see [Quickstart](/unity/quickstart).
## Tutorial scenes
The SDK includes tutorial scenes that demonstrate how to use the SDK.
-For information about setting up and using the scenes, see [Tutorial scenes](./unity/scenes).
+For information about setting up and using the scenes, see [Tutorial scenes](/unity/scenes).
## Sample game
-For information about a complete sample game that you can load locally and explore, see [Sample game](./unity/sample-game).
+For information about a complete sample game that you can load locally and explore, see [Sample game](/unity/sample-game).
## SDK objects
The SDK provides objects that you can use to interact with user wallets and with Tezos.
-See [Unity SDK reference](./unity/reference).
+See [Unity SDK reference](/unity/reference).
## Dependencies
diff --git a/docs/unity/connecting-accounts.md b/docs/unity/connecting-accounts.md
index 3d4b292db..6b7513643 100644
--- a/docs/unity/connecting-accounts.md
+++ b/docs/unity/connecting-accounts.md
@@ -12,13 +12,13 @@ Users still confirm or reject all transactions in their wallet application, so y
Using a wallet application in this way saves you from having to implement payment processing and security in your application.
Game developers can also use the wallet and its account as a unique account identifier and as the user's inventory.
-For an example of connecting to wallets, see the [WalletConnection tutorial scene](./scenes#wallet-connection-scene).
+For an example of connecting to wallets, see the [WalletConnection tutorial scene](/unity/scenes#wallet-connection-scene).
-For more information about Tezos wallets, see [Installing and funding a wallet](../developing/wallet-setup).
+For more information about Tezos wallets, see [Installing and funding a wallet](/developing/wallet-setup).
## Best practices
-When working with wallets, be sure to follow the advice in [Best practices and avoiding flaws](../dApps/best-practices) for wallet connections.
+When working with wallets, be sure to follow the advice in [Best practices and avoiding flaws](/dApps/best-practices) for wallet connections.
For example, don't force the user to connect their wallet as soon as the application loads.
Instead, let them see the application first.
Also, provide a prominent disconnect button to allow users to disconnect one account and connect a different one.
@@ -39,7 +39,7 @@ Deep link | The application opens the user's wallet app directly | Yes | Yes | N
Social wallets | The application opens the user's Kukai web-based wallet | Yes | No | No
Regardless of the connection method, the Tezos Unity SDK runs the `WalletConnected` or `WalletConnectionFailed` event, as appropriate.
-For more information about events, see the [Unity SDK EventManager object](./reference/EventManager).
+For more information about events, see the [Unity SDK EventManager object](/unity/reference/EventManager).
@@ -48,7 +48,7 @@ For more information about events, see the [Unity SDK EventManager object](./ref
This method generates a QR code that a user scans with their wallet application:
-1. The Unity application calls the [`Wallet.Connect()`](./reference/Wallet#connect) method with the `walletProvider` parameter set to `WalletProviderType.beacon` to send a connection request to a wallet application via the [TZIP-10 protocol](https://gitlab.com/tezos/tzip/-/tree/master/proposals/tzip-10).
+1. The Unity application calls the [`Wallet.Connect()`](/unity/reference/Wallet#connect) method with the `walletProvider` parameter set to `WalletProviderType.beacon` to send a connection request to a wallet application via the [TZIP-10 protocol](https://gitlab.com/tezos/tzip/-/tree/master/proposals/tzip-10).
1. The wallet returns a handshake that includes pairing information for the wallet, which triggers the `HandshakeReceived` event.
1. From the handshake information, the SDK generates a QR code.
The `TezosAuthenticator` prefab handles the QR code generation with the `QrCodeGenerator` class.
@@ -60,7 +60,7 @@ The `TezosAuthenticator` prefab handles the QR code generation with the `QrCodeG
Deep link connections open the user's wallet app directly, which can be a mobile app or a browser extension.
This method relies on the Beacon SDK to interact with wallet apps:
-1. The Unity WebGL application calls the [`Wallet.Connect()`](./reference/Wallet#connect) method with the `walletProvider` parameter set to `WalletProviderType.beacon`.
+1. The Unity WebGL application calls the [`Wallet.Connect()`](/unity/reference/Wallet#connect) method with the `walletProvider` parameter set to `WalletProviderType.beacon`.
The Beacon SDK detects that it is running in a web application and opens a popup window with the wallets that Beacon can connect to:
@@ -72,11 +72,11 @@ The Beacon SDK detects that it is running in a web application and opens a popup
Social wallets exist as accounts managed by web apps such as [Kukai](https://kukai.app/).
-To connect to a social wallet, the Unity WebGL application calls [`Wallet.Connect()`](./reference/Wallet#connect) with the `walletProvider` parameter set to `WalletProviderType.kukai`.
+To connect to a social wallet, the Unity WebGL application calls [`Wallet.Connect()`](/unity/reference/Wallet#connect) with the `walletProvider` parameter set to `WalletProviderType.kukai`.
## Disconnecting
It's important to provide a disconnect button so the user can disconnect when they are finished with the application or if they want to connect with a different account.
-To disconnect the active wallet, call the [`Wallet.Disconnect()`](./reference/Wallet#disconnect) method.
+To disconnect the active wallet, call the [`Wallet.Disconnect()`](/unity/reference/Wallet#disconnect) method.
diff --git a/docs/unity/managing-contracts.md b/docs/unity/managing-contracts.md
index 0c9904512..81e7d912a 100644
--- a/docs/unity/managing-contracts.md
+++ b/docs/unity/managing-contracts.md
@@ -11,7 +11,7 @@ Smart contracts can do many tasks, but for gaming they have two main purposes:
- They handle tokens, which are digital assets stored on the blockchain
- They provide backend logic that users can trust because it cannot change
-For more information about contracts, see [Smart contracts](../smart-contracts).
+For more information about contracts, see [Smart contracts](/smart-contracts).
You can create your own smart contracts or use the built-in contract that the SDK provides for managing tokens in Unity projects.
@@ -22,15 +22,15 @@ The Contract tutorial scene shows how to deploy a copy of the built-in contract
The SDK includes a built-in contract that you can use to manage tokens for your Unity projects.
The contract has entrypoints that allow you to create and transfer tokens.
-See [Managing tokens](./managing-tokens).
+See [Managing tokens](/unity/managing-tokens).
The Michelson source code of the built-in contract is in the `Resources/Contracts` folder of the SDK, but it isn't very human-readable.
-For a list of the entrypoints in the contract, see [TokenContract object](./reference/TokenContract).
+For a list of the entrypoints in the contract, see [TokenContract object](/unity/reference/TokenContract).
For an example of a deployed contract, see https://ghostnet.tzkt.io/KT1Nhr9Bmhy7kcUmezRxbbDybh5buNnrVLTY/entrypoints.
## Deploying the built-in contract
-To deploy the built-in contract, call the [`TokenContract.Deploy()`](./reference/TokenContract#deploy) method and pass a callback function:
+To deploy the built-in contract, call the [`TokenContract.Deploy()`](/unity/reference/TokenContract#deploy) method and pass a callback function:
```csharp
public void DeployContract()
@@ -54,28 +54,28 @@ It can take a few minutes for the contract to deploy and be confirmed in multipl
The address that deployed the contract becomes the administrator of the contract and is the only account that can create tokens.
-The SDK provides information about the contract such as its address in the [`TokenContract`](./reference/TokenContract) object.
+The SDK provides information about the contract such as its address in the [`TokenContract`](/unity/reference/TokenContract) object.
You can use block explorers such as [Better Call Dev](https://better-call.dev/) to see information about the deployed contract.
-For information about using the built-in contract, see [Managing tokens](./managing-tokens).
+For information about using the built-in contract, see [Managing tokens](/unity/managing-tokens).
## Getting the contract address
-When you deploy a contract with the [`TokenContract.Deploy()`](./reference/TokenContract#deploy) method, the SDK saves the contract address by running this code:
+When you deploy a contract with the [`TokenContract.Deploy()`](/unity/reference/TokenContract#deploy) method, the SDK saves the contract address by running this code:
```csharp
PlayerPrefs.SetString("CurrentContract:" + Tezos.Wallet.GetActiveAddress(), contractAddress);
```
-Then during SDK initialization, the SDK saves the address to the [`TokenContract.Address`](./reference/TokenContract) property.
+Then during SDK initialization, the SDK saves the address to the [`TokenContract.Address`](/unity/reference/TokenContract) property.
-To retrieve the address of contracts that you haven't deployed through the project, you can use the [`API.GetOriginatedContractsForOwner()`](./reference/API#getoriginatedcontractsforowner) method.
+To retrieve the address of contracts that you haven't deployed through the project, you can use the [`API.GetOriginatedContractsForOwner()`](/unity/reference/API#getoriginatedcontractsforowner) method.
## Calling contracts
-The built-in contract has convenience methods for minting and transferring tokens; see [Managing tokens](./managing-tokens).
+The built-in contract has convenience methods for minting and transferring tokens; see [Managing tokens](/unity/managing-tokens).
-To call the contract's other entrypoints, use the [`Wallet.CallContract()`](./reference/Wallet#callcontract) method.
+To call the contract's other entrypoints, use the [`Wallet.CallContract()`](/unity/reference/Wallet#callcontract) method.
For example, to call the contract's `set_administrator` entrypoint to set a new administrator account, use this code:
```csharp
@@ -86,7 +86,7 @@ TezosManager.Instance.Tezos.Wallet.CallContract(
);
```
-For information about the entrypoints in the built-in contract, see [Unity SDK TokenContract object](./reference/TokenContract#entrypoints).
+For information about the entrypoints in the built-in contract, see [Unity SDK TokenContract object](/unity/reference/TokenContract#entrypoints).
You can call any other contract by using its address, entrypoint name, and parameter value, as in this example:
@@ -185,7 +185,7 @@ This is the Michelson parameter type for the endpoint:
```
In this case, you set the "add_operator" value by passing a `PrimType.Left` Michelson primitive or the "remove_operator" value by passing a `PrimType.Right` primitive.
-The values in the primitive are a series of nested pairs called a [right comb](../smart-contracts/data-types/complex-data-types#right-combs), as in this example:
+The values in the primitive are a series of nested pairs called a [right comb](/smart-contracts/data-types/complex-data-types#right-combs), as in this example:
```json
{
@@ -285,7 +285,7 @@ Then, ensure that the code of the code and initial storage value of the contract
}
```
-To deploy the contract from the Unity project, use the [`Wallet.OriginateContract()`](./reference/Wallet#originatecontract) method, as in this example:
+To deploy the contract from the Unity project, use the [`Wallet.OriginateContract()`](/unity/reference/Wallet#originatecontract) method, as in this example:
```csharp
var contractJSON = Resources.Load("Contracts/MyContract").text;
diff --git a/docs/unity/managing-tokens.md b/docs/unity/managing-tokens.md
index e91cc7dce..e18f06914 100644
--- a/docs/unity/managing-tokens.md
+++ b/docs/unity/managing-tokens.md
@@ -5,7 +5,7 @@ last_update:
date: 11 January 2024
---
-The SDK's built-in contract is compatible with the [FA2 token standard](../architecture/tokens/FA2), which means that you can use a single smart contract to manage any number of types of tokens, including:
+The SDK's built-in contract is compatible with the [FA2 token standard](/architecture/tokens/FA2), which means that you can use a single smart contract to manage any number of types of tokens, including:
- Fungible tokens, which are collections of interchangeable tokens with a quantity that you define.
Fungible tokens can be quantifiable commodities like in-game currency, fuel, ammunition, or energy, or they can be identical items with a limited quantity.
@@ -97,7 +97,7 @@ For a complete example, see the Transfer tutorial scene.
## Getting token balances
-To get the tokens that the connected account owns, call the [`API.GetTokensForOwner()`](./reference/API#gettokensforowner) method in a coroutine.
+To get the tokens that the connected account owns, call the [`API.GetTokensForOwner()`](/unity/reference/API#gettokensforowner) method in a coroutine.
This example prints information about the tokens that the account owns to the log:
```csharp
diff --git a/docs/unity/prefabs.md b/docs/unity/prefabs.md
index 515ae12b6..e7e44d2b5 100644
--- a/docs/unity/prefabs.md
+++ b/docs/unity/prefabs.md
@@ -11,7 +11,7 @@ The Tezos Unity SDK provides these prefabs:
## TezosManager
This prefab sets the metadata for the scene, such as the application name that users see in their wallet applications before connecting to the project.
-It also initializes the Tezos SDK for use in the scene and creates an instance of the `TezosSDK.Tezos.Tezos` class, which provides access to the SDK objects such as the [Wallet](./reference/Wallet) and [EventManager](./reference/EventManager) objects.
+It also initializes the Tezos SDK for use in the scene and creates an instance of the `TezosSDK.Tezos.Tezos` class, which provides access to the SDK objects such as the [Wallet](/unity/reference/Wallet) and [EventManager](/unity/reference/EventManager) objects.
Its fields control what users see in their wallet applications before connecting to the project, as shown in this picture of the Inspector panel:
@@ -33,4 +33,4 @@ The prefab's `LoginPanel` object includes objects that connect to wallets in dif
For details about how the prefab works, see the file `TezosAuthenticator.cs`.
-For an example of the prefab in use, see the [WalletConnection tutorial scene](./scenes#wallet-connection-scene).
+For an example of the prefab in use, see the [WalletConnection tutorial scene](/unity/scenes#wallet-connection-scene).
diff --git a/docs/unity/quickstart.md b/docs/unity/quickstart.md
index f3472d52e..b0cad6f10 100644
--- a/docs/unity/quickstart.md
+++ b/docs/unity/quickstart.md
@@ -25,11 +25,11 @@ These instructions cover:
You can see its assets in the Project panel under Packages > Tezos Unity SDK.
1. Ensure that you have a Tezos-compatible wallet configured for the Ghostnet testnet on your mobile device.
-For instructions, see [Installing and funding a wallet](../developing/wallet-setup).
+For instructions, see [Installing and funding a wallet](/developing/wallet-setup).
1. If you want to publish the project to WebGL, follow the steps in [Enabling WebGL support](#enabling-webgl-support).
-1. To import the tutorial scenes, see [Scenes](./scenes).
+1. To import the tutorial scenes, see [Scenes](/unity/scenes).
## Enabling WebGL support
@@ -63,7 +63,7 @@ Game developers can also use the wallet and its account as a unique account iden
1. Copy the `TezosAuthenticator` and `TezosManager` prefabs to your scene.
These prefabs provide prerequisites to use Tezos in a scene and help connect to accounts.
-For more information about them, see [Prefabs](./prefabs).
+For more information about them, see [Prefabs](/unity/prefabs).
The `TezosAuthenticator` prefab automatically adds features that connect to users' wallets.
If you copy these prefabs into your scene and run it, it shows a QR code or connection buttons that Tezos wallet applications can scan to connect with the application.
@@ -100,9 +100,9 @@ You can use this event to get the address of the connected account, as in this c
You can use this address as a user's account ID because Tezos account addresses are unique.
1. To respond to other events, add listeners for the events that the SDK provides.
-You can see these events and their return values in the [EventManager object](./reference/EventManager).
+You can see these events and their return values in the [EventManager object](/unity/reference/EventManager).
-For an example, see the [WalletConnection tutorial scene](./scenes#wallet-connection-scene).
+For an example, see the [WalletConnection tutorial scene](/unity/scenes#wallet-connection-scene).
## Deploying contracts
@@ -117,7 +117,7 @@ The ContractAndMinting tutorial scene shows how to deploy a contract from a Unit
The SDK provides a built-in contract that you can use instead of writing your own.
This contract manages different kinds of tokens.
-To deploy the built-in contract, call the [`TokenContract.Deploy()`](./reference/TokenContract#deploy) method and pass a callback function:
+To deploy the built-in contract, call the [`TokenContract.Deploy()`](/unity/reference/TokenContract#deploy) method and pass a callback function:
```csharp
public void DeployContract()
@@ -136,9 +136,9 @@ private void OnContractDeployed(string contractAddress)
```
The project sends the deployment transaction to the connected wallet, which must approve the transaction and pay the related fees.
-The SDK stores the address of the contract as [`TokenContract.address`](./reference/TokenContract).
+The SDK stores the address of the contract as [`TokenContract.address`](/unity/reference/TokenContract).
-For an example, see the [ContractAndMinting tutorial scene](./scenes#contractandminting-scene).
+For an example, see the [ContractAndMinting tutorial scene](/unity/scenes#contractandminting-scene).
## Creating tokens
@@ -192,7 +192,7 @@ private void OnTokenMinted(TokenBalance tokenBalance)
}
```
-For an example, see the [ContractAndMinting tutorial scene](./scenes#contractandminting-scene).
+For an example, see the [ContractAndMinting tutorial scene](/unity/scenes#contractandminting-scene).
## Transferring tokens
@@ -225,11 +225,11 @@ private void TransferCompleted(string txHash)
}
```
-For a complete example, see the [Transfer tutorial scene](./scenes#transfer-scene).
+For a complete example, see the [Transfer tutorial scene](/unity/scenes#transfer-scene).
## Getting token balances
-To get the tokens that the connected account owns, call the [`API.GetTokensForOwner()`](./reference/API#gettokensforowner) method in a coroutine.
+To get the tokens that the connected account owns, call the [`API.GetTokensForOwner()`](/unity/reference/API#gettokensforowner) method in a coroutine.
This example prints information about the tokens that the account owns to the log:
```csharp
@@ -309,7 +309,7 @@ public void HandleUploadClick()
}
```
-For a complete example, see the [IPFSUpload tutorial scene](./scenes#ipfsupload-scene).
+For a complete example, see the [IPFSUpload tutorial scene](/unity/scenes#ipfsupload-scene).
## Signing messages
@@ -342,14 +342,14 @@ private void OnPayloadSigned(SignResult obj)
## Changing the RPC node
-As described in [The RPC interface](../architecture/rpc), Tezos clients including the Unity SDK send transactions to RPC nodes.
+As described in [The RPC interface](/architecture/rpc), Tezos clients including the Unity SDK send transactions to RPC nodes.
By default, the SDK sends requests to a public RPC node that uses the Ghostnet test network, where you can test transactions without spending real tez.
-For more information about test networks, see [Testing on sandboxes and testnets](../developing/testnets).
+For more information about test networks, see [Testing on sandboxes and testnets](/developing/testnets).
-If you need to change the RPC node that the SDK uses, such as if the default node is overloaded or if you are ready to send transactions to Mainnet, you can set the RPC node by creating an instance of the [TezosConfigSO scriptable object](./reference/TezosConfigSO) and setting the node in the **Rpc Url Format** field, as in this picture:
+If you need to change the RPC node that the SDK uses, such as if the default node is overloaded or if you are ready to send transactions to Mainnet, you can set the RPC node by creating an instance of the [TezosConfigSO scriptable object](/unity/reference/TezosConfigSO) and setting the node in the **Rpc Url Format** field, as in this picture:
Then, drag this instance of the TezosConfigSO scriptable object to the Config field of the TezosManager prefab.
-For more examples of how to work with the SDK, see [Tutorial scenes](./scenes).
+For more examples of how to work with the SDK, see [Tutorial scenes](/unity/scenes).
diff --git a/docs/unity/reference.md b/docs/unity/reference.md
index 04d78be37..f2a0cf744 100644
--- a/docs/unity/reference.md
+++ b/docs/unity/reference.md
@@ -9,12 +9,12 @@ last_update:
The Tezos Unity SDK provides several objects that your Unity project can use to work with Tezos.
These pages provide reference for the most important of these objects:
-- [API object](./reference/API): Provides information about the Tezos blockchain, such as what tokens accounts or contracts control
-- [DAppMetadata object](./reference/DAppMetadata): Provides read-only properties that describe the project
-- [DataProviderConfigSO scriptable object](./reference/DataProviderConfigSO): Sets the indexer to get information about Tezos from
-- [EventManager object](./reference/EventManager): Provides events that you can add listeners to, such as when users connect their wallets
-- [TezosConfigSO scriptable object](./reference/TezosConfigSO): Stores information about connecting to Tezos, including the RPC node and Pinata API key to use
-- [TokenContract object](./reference/TokenContract): Provides a built-in FA2-compatible smart contract and convenience methods to work with it
-- [Wallet object](./reference/Wallet): Provides methods to connect to wallets and send transactions from the connected account
+- [API object](/unity/reference/API): Provides information about the Tezos blockchain, such as what tokens accounts or contracts control
+- [DAppMetadata object](/unity/reference/DAppMetadata): Provides read-only properties that describe the project
+- [DataProviderConfigSO scriptable object](/unity/reference/DataProviderConfigSO): Sets the indexer to get information about Tezos from
+- [EventManager object](/unity/reference/EventManager): Provides events that you can add listeners to, such as when users connect their wallets
+- [TezosConfigSO scriptable object](/unity/reference/TezosConfigSO): Stores information about connecting to Tezos, including the RPC node and Pinata API key to use
+- [TokenContract object](/unity/reference/TokenContract): Provides a built-in FA2-compatible smart contract and convenience methods to work with it
+- [Wallet object](/unity/reference/Wallet): Provides methods to connect to wallets and send transactions from the connected account
-The SDK also provides Unity prefabs that are prerequisites for the SDK; see [Prefabs](./prefabs).
+The SDK also provides Unity prefabs that are prerequisites for the SDK; see [Prefabs](/unity/prefabs).
diff --git a/docs/unity/reference/API.md b/docs/unity/reference/API.md
index 4279c61e3..0b6c325a9 100644
--- a/docs/unity/reference/API.md
+++ b/docs/unity/reference/API.md
@@ -51,7 +51,7 @@ IEnumerator ReadView(
Action callback);
```
-Returns the response from a contract [view](../../smart-contracts/views).
+Returns the response from a contract [view](/smart-contracts/views).
Note that the `input` parameter must be a Michelson-encoded object, as in the following example, which passes an integer and string parameter to the view:
Example:
@@ -505,7 +505,7 @@ IEnumerator GetOriginatedContractsForOwner(
Gets the contracts that the specified account deployed (originated).
Optionally, you can pass the hash of a contract to return only contracts that match that hash.
-For example, the hash of the contract in the [`TokenContract`](./TokenContract) object is in the `Resources/Contracts/FA2TokenContractCodeHash.txt` file.
+For example, the hash of the contract in the [`TokenContract`](/unity/reference/TokenContract) object is in the `Resources/Contracts/FA2TokenContractCodeHash.txt` file.
Example:
diff --git a/docs/unity/reference/DataProviderConfigSO.md b/docs/unity/reference/DataProviderConfigSO.md
index 8f179966b..8456f2a60 100644
--- a/docs/unity/reference/DataProviderConfigSO.md
+++ b/docs/unity/reference/DataProviderConfigSO.md
@@ -8,7 +8,7 @@ last_update:
The DataProviderConfigSO scriptable object sets the indexer that the SDK uses to get information about Tezos, such as an account's token balances.
Some Tezos dApps use a custom indexer to provide specific information that they need.
-To use this object, create an instance of it, put your information in its fields, and then drag this instance to the Data Provider Config field of the [TezosConfigSO scriptable object](./TezosConfigSO) object, as in this picture:
+To use this object, create an instance of it, put your information in its fields, and then drag this instance to the Data Provider Config field of the [TezosConfigSO scriptable object](/unity/reference/TezosConfigSO) object, as in this picture:
@@ -20,4 +20,4 @@ To use this object, create an instance of it, put your information in its fields
- `Request Timeout Seconds`: The time in seconds to wait for a response from the indexer
- `Documentation Url`: A link to the API reference for the indexer
-For more information about indexers, see [Indexers](../../developing/information/indexers).
+For more information about indexers, see [Indexers](/developing/information/indexers).
diff --git a/docs/unity/reference/TezosConfigSO.md b/docs/unity/reference/TezosConfigSO.md
index e60d3db91..f011e7264 100644
--- a/docs/unity/reference/TezosConfigSO.md
+++ b/docs/unity/reference/TezosConfigSO.md
@@ -18,6 +18,6 @@ To use this object, create an instance of it, put your information in its fields
- `RPC Url Format`: The URL of the RPC node to use; this value replaces the variable `{network}` with the value of the `Network` field
- `Request Timeout Seconds`: The time in seconds to wait for a response from the indexer
- `Pinata Api Key`: The Pinata JWT (not the API key or secret key) to use to upload files and data to IPFS
-- `Data Provider Config`: The instance of the [DataProviderConfig](./DataProviderConfigSO) scriptable object to use
+- `Data Provider Config`: The instance of the [DataProviderConfig](/unity/reference/DataProviderConfigSO) scriptable object to use
-For more information about RPC nodes, see [The RPC interface](../../architecture/rpc).
+For more information about RPC nodes, see [The RPC interface](/architecture/rpc).
diff --git a/docs/unity/reference/TokenContract.md b/docs/unity/reference/TokenContract.md
index 669a0eb47..3a3a84046 100644
--- a/docs/unity/reference/TokenContract.md
+++ b/docs/unity/reference/TokenContract.md
@@ -8,7 +8,7 @@ last_update:
The Unity SDK class `TezosSDK.Tezos.API.Models.TokenContract`, which is available at runtime as the `TezosManager.Instance.Tezos.TokenContract` object, provides a built-in FA2-compatible smart contract and convenience methods to work with it.
-For information about FA2 contracts and tokens, see [FA2 tokens](../../architecture/tokens/FA2).
+For information about FA2 contracts and tokens, see [FA2 tokens](/architecture/tokens/FA2).
The Michelson source code of the built-in contract is in the `Resources/Contracts` folder of the SDK.
@@ -35,11 +35,11 @@ For a simpler way to create tokens, see the [`Mint()`](#mint) method.
- `balance_of`: Sends information about an owner's token balance to another contract.
Its parameters are a callback contract that accepts a list of token IDs and the amount that the specified account owns.
-For a simpler way to get information about token ownership, see the [`API.GetTokensForOwner()`](./API#gettokensforowner) method.
+For a simpler way to get information about token ownership, see the [`API.GetTokensForOwner()`](/unity/reference/API#gettokensforowner) method.
- `update_operators`: Adds or removes operators for the specified token owners and token IDs.
Its parameters are a list of commands to add or remove operators for token owners and IDs.
-For information about operators, see [Operators](../../architecture/tokens/FA2#operators).
+For information about operators, see [Operators](/architecture/tokens/FA2#operators).
- `set_administrator`: Changes the account that can mint tokens.
Its parameter is the address of the new administrator account.
@@ -47,14 +47,14 @@ This entrypoint can be called only by the current administrator account.
- `set_metadata`: Creates or changes a metadata field in the specified contract's storage.
Its parameters are a key-value pair for the new or updated metadata value.
-This metadata is a value in the contract's storage, which is different from the metadata returned by the [`API.GetContractMetadata()`](./API#getcontractmetadata) method.
+This metadata is a value in the contract's storage, which is different from the metadata returned by the [`API.GetContractMetadata()`](/unity/reference/API#getcontractmetadata) method.
This entrypoint can be called only by the current administrator account.
- `set_pause`: Sets the value of the `paused` storage field.
When this field is set to true, tokens can be minted but not transferred between accounts.
This entrypoint can be called only by the current administrator account.
-For examples of calling these entrypoints, see [Calling the built-in contract](../managing-contracts#calling-contracts).
+For examples of calling these entrypoints, see [Calling the built-in contract](/unity/managing-contracts#calling-contracts).
### Constructors
diff --git a/docs/unity/reference/Wallet.md b/docs/unity/reference/Wallet.md
index 7a9c8c8d1..59b62c70b 100644
--- a/docs/unity/reference/Wallet.md
+++ b/docs/unity/reference/Wallet.md
@@ -138,7 +138,7 @@ To use this method, you must compile a contract to Michelson in a JSON file.
For an example, see the code of the built-in contract in `Resources/Contracts`.
The optional `delegateAddress` parameter is the address of the account to delegate the contract's tez to.
-For more information, see [Delegation](../../smart-contracts/delegation).
+For more information, see [Delegation](/smart-contracts/delegation).
This method triggers the `ContractCallInjected` event if the call is successfully sent to Tezos.
Then it triggers `ContractCallCompleted` or `ContractCallFailed` events, depending on whether the origination operation succeeded or failed.
diff --git a/docs/unity/sample-game.md b/docs/unity/sample-game.md
index 376f08af7..64ff6efe6 100644
--- a/docs/unity/sample-game.md
+++ b/docs/unity/sample-game.md
@@ -28,7 +28,7 @@ The sample game uses these main components:
- **User wallets** as a source of user identity and authentication.
The user doesn't make any direct transactions from the wallet and pays no tez to the application or in fees.
-For more information about Tezos wallets, see [Installing and funding a wallet](../developing/wallet-setup).
+For more information about Tezos wallets, see [Installing and funding a wallet](/developing/wallet-setup).
- The **Unity WebGL application** is the front end of the application.
It connects to the user wallet, sends the sign request, runs the game interface, and sends requests to the backend.
@@ -51,7 +51,7 @@ The Unity application calls it from the `Assets/Scripts/Api/GameApi.cs` file for
- The **smart contract** is a program that runs on the Tezos blockchain to manage tokens that represent in-game items.
It maintains a ledger of tokens and owners and allows the backend's administrator account to transfer them to players.
-The sample game uses a custom contract, but you can use the SDK's built-in FA2-compliant contract; see [Managing contracts](./managing-contracts).
+The sample game uses a custom contract, but you can use the SDK's built-in FA2-compliant contract; see [Managing contracts](/unity/managing-contracts).
You can view and interact with the contract on a block explorer, such as tzkt.io: https://tzkt.io/KT1TSZfPJ5uZW1GjcnXmvt1npAQ2nh5S1FAj/operations.
- The **Interplanetary File System (IPFS)** stores metadata for the tokens, including pictures and descriptions.
@@ -65,7 +65,7 @@ This diagram shows the basic interaction between these components:
The game uses the user's Tezos account as a source of authentication.
It prompts the user to connect their Tezos wallet so it can retrieve the user's account address.
-For more information about connecting to user wallets, see [Connecting accounts](./connecting-accounts).
+For more information about connecting to user wallets, see [Connecting accounts](/unity/connecting-accounts).
When the wallet is connected, the game prompts the user to sign a payload to prove that they have the key for the account.
The process follows these general steps:
@@ -83,12 +83,12 @@ Here is a diagram of the process:
![Authentication flow diagram](/img/unity/unity-sample-game-authentication.png)
-For more information about signing messages, see [Signing messages](./quickstart#signing-messages) in the Unity SDK quickstart.
+For more information about signing messages, see [Signing messages](/unity/quickstart#signing-messages) in the Unity SDK quickstart.
## Tokens
The game uses Tezos tokens to represent in-game items, such as weapons, armor, and power-ups.
-Because these tokens are compliant with the [FA2](../architecture/tokens/FA2) standard, players can see their tokens in their wallets and in applications such as block explorers.
+Because these tokens are compliant with the [FA2](/architecture/tokens/FA2) standard, players can see their tokens in their wallets and in applications such as block explorers.
They could also set up a third-party platform to show and trade their tokens.
The smart contract that manages the tokens has one [token type](https://better-call.dev/mainnet/KT1TSZfPJ5uZW1GjcnXmvt1npAQ2nh5S1FAj/tokens) for each in-game item.
@@ -128,7 +128,7 @@ The [`UserDataManager.cs`](https://github.com/baking-bad/tezos-unity-game/blob/m
Some of this information (such as the tokens that the player owns) comes from Tezos and other information (such as the player's statistics) comes from the backend.
Information about the current game session and pending rewards are non-persistent data that are stored by the Unity application.
-The `UserDataManager` class responds to [events](./reference/EventManager) such as when the user connects their wallet and then loads information from the backend and from Tezos directly.
+The `UserDataManager` class responds to [events](/unity/reference/EventManager) such as when the user connects their wallet and then loads information from the backend and from Tezos directly.
## Opening the sample game
diff --git a/docs/unity/scenes.md b/docs/unity/scenes.md
index 92baeed59..8fead719f 100644
--- a/docs/unity/scenes.md
+++ b/docs/unity/scenes.md
@@ -9,11 +9,11 @@ last_update:
The SDK includes tutorial scenes that demonstrate how to use the SDK.
Before using any of the scenes, install a Tezos-compatible wallet on a mobile device and get some test tez tokens that you can use to pay transaction fees.
-For instructions, see [Installing and funding a wallet](../developing/wallet-setup).
+For instructions, see [Installing and funding a wallet](/developing/wallet-setup).
## Setup instructions
-After you have installed the SDK according to the instructions in the [Quickstart](./quickstart), you can import the tutorial scenes from the Package Manager panel:
+After you have installed the SDK according to the instructions in the [Quickstart](/unity/quickstart), you can import the tutorial scenes from the Package Manager panel:
1. In the Package Manager panel, click the Tezos Unity SDK package.
@@ -97,7 +97,7 @@ This picture of the Wallet Connection scene in WebGL mode shows the deep link an
-These UI elements call the [`Wallet.Connect()`](./reference/Wallet#connect) method with the `walletProvider` parameter set to `WalletProviderType.beacon` for the direct links or QR code connections and the `walletProvider` parameter set to `WalletProviderType.kukai` for the social wallet connections.
+These UI elements call the [`Wallet.Connect()`](/unity/reference/Wallet#connect) method with the `walletProvider` parameter set to `WalletProviderType.beacon` for the direct links or QR code connections and the `walletProvider` parameter set to `WalletProviderType.kukai` for the social wallet connections.
After the user approves the connection in the wallet, the scene shows the address of the connected account and its balance, as in the following picture.
At the bottom of the scene there is a logout button that closes the connection.
@@ -115,7 +115,7 @@ In this case, the smart contract keeps track of tokens, their metadata, and who
The SDK comes with a sample smart contract that allows a Unity project to create tokens.
You can customize these tokens, give them to users, and treat them like the players' in-game inventories.
The Michelson source code of the built-in contract is in the `Resources/Contracts` folder of the SDK, but it isn't very human-readable.
-For a list of the entrypoints in the contract, see [TokenContract object](./reference/TokenContract).
+For a list of the entrypoints in the contract, see [TokenContract object](/unity/reference/TokenContract).
For an example of a deployed contract, see https://ghostnet.tzkt.io/KT1Nhr9Bmhy7kcUmezRxbbDybh5buNnrVLTY/entrypoints.
Like the Wallet Connection scene, you must first connect to a wallet.
@@ -125,7 +125,7 @@ When you click "Deploy Contract," your connected wallet prompts you to confirm t
Because you are connected to the test network, these are worthless testnet tokens and not real currency.
This process can take some time.
-The scene calls the [`TokenContract.Deploy()`](./reference/TokenContract#deploy) method to deploy the contract to Tezos.
+The scene calls the [`TokenContract.Deploy()`](/unity/reference/TokenContract#deploy) method to deploy the contract to Tezos.
When you confirm the transaction in the wallet app, you must wait for the contract to be deployed on Tezos.
The log in the Console panel shows a message that looks like `Received operation with hash oopFjLYGTbZTEFsTh4p1YPnHR1Up1SNnvE5xk2SRaGH6PZ4ry56`, which is the address of the Tezos transaction that deployed the contract.
@@ -159,7 +159,7 @@ Because the contract follows the FA2 standard for tokens, the block explorer als
The tokens that this scene creates have randomly generated metadata.
To change the metadata, open the `TezosSDK/Examples/Contract/Scripts/MintToken.cs` file.
-The file's `HandleMint` function creates the token by generating random numbers, creating a metadata object for the token, and using the [`TokenContract.Mint()`](./reference/TokenContract#mint) method to send the mint transaction to the contract:
+The file's `HandleMint` function creates the token by generating random numbers, creating a metadata object for the token, and using the [`TokenContract.Mint()`](/unity/reference/TokenContract#mint) method to send the mint transaction to the contract:
```csharp
public void HandleMint()
@@ -173,7 +173,7 @@ public void HandleMint()
```
In your projects, you can set the metadata to store information about what the token represents.
-For more information about working with Tokens, see [Managing tokens](./managing-tokens) and the tutorials [Create an NFT](../tutorials/create-an-nft) and [Build an NFT marketplace](../../tutorials/build-an-nft-marketplace).
+For more information about working with Tokens, see [Managing tokens](/unity/managing-tokens) and the tutorials [Create an NFT](/tutorials/create-an-nft) and [Build an NFT marketplace](/tutorials/build-an-nft-marketplace).
## Transfer scene
@@ -196,7 +196,7 @@ For example, this entry shows that the account that ends in `2zD` owns 9 of the
-The transfer tutorial scene uses the [`TokenContract.Transfer()`](./reference/TokenContract#transfer) method to transfer the token:
+The transfer tutorial scene uses the [`TokenContract.Transfer()`](/unity/reference/TokenContract#transfer) method to transfer the token:
```csharp
public void HandleTransfer()