diff --git a/docs/developer-docs/defi/tokens/token-standards.mdx b/docs/developer-docs/defi/tokens/token-standards.mdx
index d93cb5ead8..7dbbe456a2 100644
--- a/docs/developer-docs/defi/tokens/token-standards.mdx
+++ b/docs/developer-docs/defi/tokens/token-standards.mdx
@@ -20,7 +20,7 @@ In the past, the [DIP-721](#dip-721) standard was promoted and used by projects
### How standards are created
-- The [ICRC working group](https://github.com/dfinity/ICRC) creates an initial proposal for an ICRC standard.
+- The [ICRC working group](https://github.com/dfinity/ICRC) creates an initial proposal for an ICRC standard.
- The proposal is agreed upon through a rough consensus of the working group as a starting point for the standard.
@@ -28,13 +28,13 @@ In the past, the [DIP-721](#dip-721) standard was promoted and used by projects
- Once the proposal is deemed ready for implementation by the working group, it is proposed to the NNS through an NNS proposal.
-- The ICRC standard is either adopted or rejected by the NNS.
+- The ICRC standard is either adopted or rejected by the NNS.
## ICP tokens
The ICP token is the network's native token used for various utility and governance functions, such as:
-- Paying for a canister's resources by being converted into cycles.
+- Using tokens and cycles by being converted into cycles.
- Rewarding node providers for contributing resources to the network.
diff --git a/docs/developer-docs/getting-started/deploy-and-manage.mdx b/docs/developer-docs/getting-started/deploy-and-manage.mdx
index 4aeea36a88..d1fbfb890f 100644
--- a/docs/developer-docs/getting-started/deploy-and-manage.mdx
+++ b/docs/developer-docs/getting-started/deploy-and-manage.mdx
@@ -10,17 +10,15 @@ import { BetaChip } from "/src/components/Chip/BetaChip";
import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip";
-# Deploy and manage
+# Deploying and managing canisters
-
-
Once a canister's code has been written, it must be compiled into Wasm, installed into the canister itself, and then deployed to a network. The `dfx deploy` command executes each of these tasks as part of the deployment process; however, `dfx` commands also exist for running each step individually.
It is recommended to deploy canisters locally or to the temporary [playground](/docs/current/developer-docs/smart-contracts/deploy/overview#deploying-to-playground) network to test canister functionality and make adjustments before considering the canister production-ready and deploying it to the mainnet. Deploying canisters locally and to the playground is free and does not cost cycles. Once a canister is deployed to the mainnet, it will consistently consume cycles and will need to be topped up periodically.
-## Start the local replica
+## Starting the local replica
To deploy your canister locally, first start the local replica. This simulates the mainnet environment with a single node for local development and testing.
@@ -29,7 +27,7 @@ To deploy your canister locally, first start the local replica. This simulates t
- `dfx start --background`: Runs the processes in the background and allows you to continue running commands in the current terminal.
-## Deploy locally
+## Deploying the project locally
Deploy the backend canister that you have written code for:
@@ -73,7 +71,7 @@ Your deployed canister will now be executing two timers and printing the output
You can interact with the canister's public methods either in your web browser through the [Candid UI](/docs/current/developer-docs/smart-contracts/candid/candid-concepts) URL that was returned in the deployment output or using the command line. Candid is an interface description language used to interact with a canister's public methods.
-## Upgrades
+## Upgrading canisters
Canisters can be upgraded, allowing the same canister ID to be retained for an application. Upgrades preserve the state of a canister while allowing you to change the code. However, canister upgrades clear the canister's Wasm memory. Any data not stored in [stable memory](/docs/current/developer-docs/smart-contracts/maintain/storage) will be removed.
@@ -106,7 +104,7 @@ Confirm that the change you made results in the expected functionality or behavi
dfx canister stop PROJECT_NAME_backend --network=local
```
-## Deploy to the mainnet
+## Deploying your project to the mainnet
Now that the canister has been tested, you can deploy it to the mainnet. **Deploying to the mainnet costs [cycles](/docs/current/developer-docs/getting-started/tokens-and-cycles).**
@@ -142,7 +140,7 @@ URLs:
When a canister is running on the mainnet, you will always need to pass the `--network=ic` flag to interact with it.
:::
-## Settings
+## Canister settings
After a canister is deployed to the mainnet, it will constantly be consuming resources and cycles. To view information about how many resources and cycles currently being used, along with other information, view the canister's settings:
@@ -210,7 +208,7 @@ Log visibility: controllers
-## Topping up
+## Topping up canisters
A canister will burn cycles even in an idle state to pay for the network storage it uses. Additional costs will be charged whenever the canister sends and receives messages, uses compute resources, or uses special features like HTTPS outcalls and threshold signatures.
@@ -236,7 +234,7 @@ Manually monitoring canisters to determine when they are getting close to the fr
- [ICPTopup.com](https://www.icptopup.com/): A simplified version of CycleOps that allows you to top up several canisters (up to 50) at one time.
-### Freezing threshold
+### Cycles freezing threshold
To prevent a canister from running out of cycles and being deleted, you can set what is known as a **freezing threshold**. This threshold is a duration of time set in seconds, indicating the minimum duration that the canister should exist without running out of cycles. Once a canister hits this threshold, it will not execute messages. It will only pay for the network resources it uses, such as compute allocation, memory usage, and storage allocation.
@@ -251,7 +249,7 @@ If you set a freezing threshold longer than 1.5 years, you will need to include
:::
-## Logging
+## Canister logging
[Canister logs](/docs/current/developer-docs/smart-contracts/maintain/logs) can be used to gain insight into a canister's behavior and assist with debugging situations such as when a canister traps.
@@ -267,7 +265,7 @@ By default, canister logs are only visible to the canister's controllers, but th
dfx canister update-settings PROJECT_NAME_backend --network=ic --log-visibility public
```
-## Snapshots
+## Canister snapshots
Canister snapshots are used as a checkpoint that can be used to roll back your canister to a previous version in the event that the latest upgraded version becomes unresponsive or stops working as expected.
@@ -329,16 +327,12 @@ Any cycles remaining in the canister's balance will be returned to your develope
dfx canister delete PROJECT_NAME_backend --network=ic
```
-## Stopping `dfx`
+## Stopping the local replica
-To stop `dfx`, simply use the `dfx stop` command.
+To stop the local replica, simply use the `dfx stop` command.
For unresponsive `dfx` processes that are not stopped by `dfx stop`, you can use `dfx killall` to forcibly end them.
## Getting help
To view help information for `dfx`, you can use the `dfx help` command or view the [`dfx` reference documentation](/docs/current/developer-docs/developer-tools/cli-tools/cli-reference/).
-
-## Next steps
-
-- [x] View the [developer next steps](/docs/current/developer-docs/getting-started/next-steps).
diff --git a/docs/developer-docs/getting-started/deploy/local.mdx b/docs/developer-docs/getting-started/deploy/local.mdx
deleted file mode 100644
index fa4cde87ed..0000000000
--- a/docs/developer-docs/getting-started/deploy/local.mdx
+++ /dev/null
@@ -1,235 +0,0 @@
----
-keywords: [beginner, tutorial, local deployment, deploy]
----
-
-
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip";
-
-
-# Local deployment
-
-
-
-
-
-When developing canisters and projects, it is recommended to first deploy your project to the local development environment. This is so you can fabricate cycles in your local development environment, which you cannot do on the mainnet. Cycles are charged for the resources used by your canister. [Learn more about cycles](/docs/current/developer-docs/gas-cost).
-
-Deploying to your local development environment is similar to deploying to a testnet. ICP does not have a testnet available for developers to deploy to. Instead, the IC SDK runs a local version of the ICP node software known as the **replica** and provides a single-node environment on your local machine for you to deploy canisters to.
-
-## Prerequisites
-
-Before you create your first canister, verify the following:
-
-- [x] You have an internet connection and access to a shell terminal on your local computer.
-
-- [x] You have `Node.js` `16.0.0` or newer installed if you want to include the default template files for frontend development in your project.
-
-- [x] You have downloaded and installed the IC SDK package as described in the [installing the IC SDK](/docs/current/developer-docs/getting-started/install/) page.
-
-## Start the local deployment
-
-Before you can build your first project, you need to connect to the local replica. As a best practice, this step requires you to have **two terminal shells** open, so that you can start and see canister execution operations in one terminal and manage your project in another.
-
-To prepare the local replica:
-
-- #### Step 1: Open a new second terminal window or tab on your local computer.
-
-- #### Step 2: Navigate to the root directory for your project, if necessary.
-
-You should now have **two terminals** open with your **project directory** as your **current working directory** in both terminals.
-
-- #### Step 3: Start the local replica on your computer in your second terminal by running the following command:
-
-```
-dfx start
-```
-
-Depending on your platform and local security settings, you might see a warning displayed. If you are prompted to allow or deny incoming network connections, click **Allow**.
-
-- #### Step 4: Leave the terminal window that displays canister execution operations open and switch your focus to the first terminal window where you created your new project.
-
-You should perform the remaining steps in the terminal that doesn’t display canister execution operations.
-
-## Register, build, and deploy the application
-
-After you connect to the local canister execution environment, you can register, build, and deploy your dapp locally.
-
-To deploy your first canister locally:
-
-- #### Step 1: Check that you are still in the root directory for your project, if needed.
-
-It is recommended to follow the [creating your first canister](/docs/current/developer-docs/getting-started/default-template) guide to have a simple 'Hello, world!' canister ready to deploy.
-
-- #### Step 2: Ensure that `node` modules are available in your project directory, if needed, by running the following command:
-
-```
-npm install
-```
-
-For more information about this step, see [ensuring node is available in a project](/docs/current/developer-docs/getting-started/install/#nodejs-is-not-properly-installed).
-
-- #### Step 3: Register, build, and deploy your first dapp by running the following command:
-
-```
-dfx deploy
-```
-
-The `dfx deploy` command output displays information about the operations it performs. For example, this step registers two identifiers. One is for the `hello_backend` main program, and the other is for the `hello_frontend` frontend user interface and installation information similar to the following:
-
-```
-Creating a wallet canister on the local network.
-The wallet canister on the "local" network for user "mainnet" is "rwlgt-iiaaa-aaaaa-aaaaa-cai"
-Deploying all canisters.
-Creating canisters...
-Creating canister hello_backend...
-hello_backend canister created with canister id: rrkah-fqaaa-aaaaa-aaaaq-cai
-Creating canister hello_frontend...
-hello_frontend canister created with canister id: ryjl3-tyaaa-aaaaa-aaaba-cai
-Building canisters...
-Building frontend...
-Installing canisters...
-Creating UI canister on the local network.
-The UI canister on the "local" network is "r7inp-6aaaa-aaaaa-aaabq-cai"
-Installing code for canister hello_backend, with canister ID rrkah-fqaaa-aaaaa-aaaaq-cai
-Installing code for canister hello_frontend, with canister ID ryjl3-tyaaa-aaaaa-aaaba-cai
-Uploading assets to asset canister...
-Starting batch.
-Staging contents of new and changed assets:
- /sample-asset.txt 1/1 (24 bytes)
- /logo2.svg 1/1 (15139 bytes)
- /index.js.map 1/1 (681670 bytes)
- /index.js.map (gzip) 1/1 (156940 bytes)
- /favicon.ico 1/1 (15406 bytes)
- /main.css 1/1 (537 bytes)
- /main.css (gzip) 1/1 (297 bytes)
- /index.html 1/1 (690 bytes)
- /index.html (gzip) 1/1 (386 bytes)
- /index.js (gzip) 1/1 (152884 bytes)
- /index.js 1/1 (637230 bytes)
-Committing batch.
-Deployed canisters.
-URLs:
- Frontend canister via browser
- hello_frontend: http://127.0.0.1:4943/?canisterId=ryjl3-tyaaa-aaaaa-aaaba-cai
- Backend canister via Candid interface:
- hello_backend: http://127.0.0.1:4943/?canisterId=r7inp-6aaaa-aaaaa-aaabq-cai&id=rrkah-fqaaa-aaaaa-aaaaq-cai
-```
-
-If you create a project with a different name, however, your canister names will match your project name instead of `hello_backend` and `hello_frontend`.
-
-## Call the canister from the CLI
-
-Call the `hello_backend` canister and the predefined `greet` function by running the following command:
-
-```
-dfx canister call hello_backend greet everyone
-```
-
-Let’s take a closer look at this example command:
-
-- The `dfx canister call` command requires you to specify a canister name and a method or function to call.
-
-- `hello_backend` specifies the name of the **canister** you want to call.
-
-- `greet` specifies the name of the **function** you want to call in the `hello` canister.
-
-- `everyone` is the text data type argument that you want to pass to the `greet` function.
-
-Remember, however, that if you create a project with a different name, the canister name will match your project name, and you’ll need to modify the command line to match the name you used instead of `hello_backend`. If you were to choose `test` as the project name, your backend canister would be called `test_backend` and the frontend canister `test_frontend`.
-
-Verify the command displays the return value of the `greet` function. For example:
-
-```
-("Hello, everyone!")
-```
-
-## Call the canister from the browser
-
-It is possible to access the frontend canister directly from the browser. You will need to navigate to the URL that was printed in the output of the `dfx deploy` command (your URL might differ):
-
-```
-Frontend canister via browser
- hello_frontend: http://127.0.0.1:4943/?canisterId=bd3sg-teaaa-aaaaa-qaaba-cai
-```
-
-This will render a webpage with a form that accepts a string and sends it to the backend canister.
-
-The source code of the webpage is defined in the `src/hello_frontend/src/index.{html,js}` files.
-
-```html title="src/hello_frontend/src/index.html"
-
-
-
-
-
- hello
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-```javascript title="src/hello_frontend/src/index.js"
-import { hello_backend } from "../../declarations/hello_backend";
-
-document.querySelector("form").addEventListener("submit", async (e) => {
- e.preventDefault();
- const button = e.target.querySelector("button");
-
- const name = document.getElementById("name").value.toString();
-
- button.setAttribute("disabled", true);
-
- // Interact with foo actor, calling the greet method
- const greeting = await hello_backend.greet(name);
-
- button.removeAttribute("disabled");
-
- document.getElementById("greeting").innerText = greeting;
-
- return false;
-});
-```
-
-The JavaScript code running in the browser uses the [ICP JavaScript agent](/docs/current/developer-docs/developer-tools/off-chain/agents/javascript-agent) library to interact with the backend canister. The library creates a wrapper JavaScript object based on the interface of the canister. That wrapper object provides convenience methods for calling the canister functions as if they were JavaScript functions:
-
-```
-const greeting = await hello_backend.greet(name);
-```
-
-## Stop the local canister execution environment
-
-After testing the application in the browser, you can stop the local canister execution environment so that it doesn’t continue running in the background.
-
-To stop the local deployment:
-
-- #### Step 1: In the terminal that displays the development server, press Control-C to interrupt the development server process.
-
-- #### Step 2: In the terminal that displays canister execution operations, press Control-C to interrupt the local network process.
-
-- #### Step 3: Stop the local replica running on your local computer by running the following command:
-
-```
-dfx stop
-```
-
-## Next steps
-
-Next, you can deploy your canister on the playground.
-
-- [Testnet deployment](/docs/current/developer-docs/getting-started/deploy/testnet)
\ No newline at end of file
diff --git a/docs/developer-docs/getting-started/deploy/mainnet.mdx b/docs/developer-docs/getting-started/deploy/mainnet.mdx
deleted file mode 100644
index de8e60cf48..0000000000
--- a/docs/developer-docs/getting-started/deploy/mainnet.mdx
+++ /dev/null
@@ -1,186 +0,0 @@
----
-keywords: [beginner, tutorial, mainnet deployment, deploy]
----
-
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip";
-
-
-# Mainnet deployment
-
-
-
-
-
-To make your canister available to others, you must deploy it to the mainnet.
-
-If you are only deploying projects in a local development environment, see the [local development](/docs/current/developer-docs/getting-started/deploy/local) scenario.
-
-## Prerequisites
-
-Before you download and install this release of the IC SDK, verify the following:
-
-- [x] You have an internet connection and access to a shell terminal on your local computer.
-
-- [x] You have `Node.js` `16.0.0` or newer installed if you want to access the default frontend for the default project.
-
-- [x] You have ICP tokens or cycles available for you to use.
-
-:::info
-You must have **cycles** available to complete this guide. To get cycles, you must either convert ICP tokens to cycles or be provided cycles from another source, for example, from a canister controlled by another developer or from a third-party cycles provider. This guide assumes that you have an account with ICP tokens available and illustrates how to convert ICP tokens into cycles.
-
-For information about how to get ICP tokens, see [how you can get ICP tokens](/docs/current/developer-docs/defi/cycles/converting_icp_tokens_into_cycles).
-
-For an introduction to using the Network Nervous System application to manage ICP tokens, see [Network Nervous System dapp quickstart](/docs/current/developer-docs/daos/nns/using-the-nns-dapp/nns-app-quickstart).
-:::
-
-## Check the connection to the mainnet
-
-There is a reserved network alias that you can use to access the mainnet. The network alias is a system setting that’s defined internally, so there’s nothing you need to configure in your projects by default.
-
-To check your connection to ICP:
-
-- #### Step 1: Check that you are in the root directory for your project, if needed.
-
-- #### Step 2: Check the current status of ICP and your ability to connect to it by running the following command for the network alias `ic`:
-
-```
-dfx ping ic
-```
-
-- #### Step 3: Verify that the `dfx ping ic` command returns information about ICP.
-
- For example, you should see output similar to the following:
-```
-{
- "ic_api_version": "0.18.0" "impl_hash": "d639545e0f38e075ad240fd4ec45d4eeeb11e1f67a52cdd449cd664d825e7fec" "impl_version": "8dc1a28b4fb9605558c03121811c9af9701a6142" "replica_health_status": "healthy" "root_key": [48, 129, 130, 48, 29, 6, 13, 43, 6, 1, 4, 1, 130, 220, 124, 5, 3, 1, 2, 1, 6, 12, 43, 6, 1, 4, 1, 130, 220, 124, 5, 3, 2, 1, 3, 97, 0, 129, 76, 14, 110, 199, 31, 171, 88, 59, 8, 189, 129, 55, 60, 37, 92, 60, 55, 27, 46, 132, 134, 60, 152, 164, 241, 224, 139, 116, 35, 93, 20, 251, 93, 156, 12, 213, 70, 217, 104, 95, 145, 58, 12, 11, 44, 197, 52, 21, 131, 191, 75, 67, 146, 228, 103, 219, 150, 214, 91, 155, 180, 203, 113, 113, 18, 248, 71, 46, 13, 90, 77, 20, 80, 95, 253, 116, 132, 176, 18, 145, 9, 28, 95, 135, 185, 136, 131, 70, 63, 152, 9, 26, 11, 170, 174]
-}
-```
-
-## Register, build, and deploy the application
-
-After you have a [cycles balance](/docs/current/developer-docs/getting-started/tokens-and-cycles), you can register, build, and deploy your sample application.
-
-To deploy your first application on the mainnet:
-
-- #### Step 1: In your terminal shell, check that you are still in the root directory for your project.
-
-- #### Step 2: Ensure that `node` modules are available in your project directory, if needed, by running the following command:
-
-```
-npm install
-```
-
-For more information about this step, see [ensuring node is available in a project](/docs/current/developer-docs/getting-started/install).
-
-- #### Step 3: Register, build, and deploy your first application by running the following command:
-
-```
-dfx deploy --network ic
-```
-
-The `--network` option specifies the network alias or URL for deploying the dapp. This option is required to deploy your canister on the mainnet.
-
-The `dfx deploy` command output displays information about the operations it performs.
-
-For example, this step registers two identifiers—one for the `hello_backend` main program and one for the `hello_frontend` frontend user interface—and installation information similar to the following:
-
-```
-Deploying all canisters.
-Creating canisters...
-Creating canister "hello_backend"...
-"hello" canister created on network "ic" with canister id: "5o6tz-saaaa-aaaaa-qaacq-cai"
-Creating canister "hello_frontend"...
-"hello_assets" canister created on network "ic" with canister id: "5h5yf-eiaaa-aaaaa-qaada-cai"
-Building canisters...
-Building frontend...
-Installing canisters...
-Installing code for canister hello_backend, with canister_id 5o6tz-saaaa-aaaaa-qaacq-cai
-Installing code for canister hello_frontend, with canister_id 5h5yf-eiaaa-aaaaa-qaada-cai
-Authorizing our identity (default) to the asset canister...
-Uploading assets to asset canister...
- /index.html 1/1 (472 bytes)
- /index.html (gzip) 1/1 (314 bytes)
- /index.js 1/1 (260215 bytes)
- /index.js (gzip) 1/1 (87776 bytes)
- /main.css 1/1 (484 bytes)
- /main.css (gzip) 1/1 (263 bytes)
- /sample-asset.txt 1/1 (24 bytes)
- /logo.png 1/1 (25397 bytes)
- /index.js.map 1/1 (842511 bytes)
- /index.js.map (gzip) 1/1 (228404 bytes)
- /index.js.LICENSE.txt 1/1 (499 bytes)
- /index.js.LICENSE.txt (gzip) 1/1 (285 bytes)
-Deployed canisters.
-```
-
-If you didn’t convert enough ICP tokens to cycles to complete the operation, you can add cycles to your balance by running a command similar to the following:
-
-```
-dfx cycles convert 1.005 --network ic
-```
-
-This command converts an additional `1.005` ICP tokens to cycles. The command returns output similar to the following:
-
-```
-Transfer sent at BlockHeight: 81520
-Canister was topped up!
-```
-
-- #### Step 4: Call the `hello_backend` canister and the predefined `greet` function by running the following command:
-
-```
-dfx canister --network ic call hello_backend greet '("everyone": text)'
-```
-
-Let’s take a closer look at this example:
-
-- Using the `--network ic` option indicates that the canister you want to call is deployed on the `ic`. The `ic` network alias is an internally-reserved alias for accessing the Internet Computer blockchain mainnet.
-
-- Note that the `--network ic` option must precede the operation subcommand, which, in this case, is the `dfx canister call` command.
-
-- The `hello_backend` argument specifies the name of the canister you want to call.
-
-- The `greet` argument specifies the name of the function you want to call in the `hello` canister.
-
-- The text string `everyone` is the argument that you want to pass to the `greet` function.
-
-- #### Step 5: Verify the command displays the return value of the `greet` function. For example:
-
-```
-("Hello, everyone!")
-```
-
-- #### Step 6: Rerun the `dfx cycles balance --network ic` command or refresh the browser to see your new cycle balance and recent activity.
-
-## Test the dapp frontend
-
-Now that you have verified that your dapp has been deployed and tested its operation using the command line, let’s verify that you can access the frontend using your web browser.
-
-To access the dapp frontend:
-
-- #### Step 1: Open a browser.
-
-- #### Step 2: Navigate to the frontend for the dapp using a URL that consists of the `hello_frontend` identifier and the `boundary.icp0.io` suffix.
-
-If you didn’t make a note of the canister identifier, you can look it up by running the following command:
-
-```
-dfx canister --network ic id hello_assets
-```
-
-For example, the full URL should look similar to the following:
-
-```
-https://gsueu-yaaaa-aaaae-aaagq-cai.icp0.io
-```
-
-Navigating to this URL displays the HTML entry page for the template application. For example:
-
-
-
-- #### Step 3: Type a greeting, then click **Click Me** to return the greeting.
-
-## Next steps
-
-Want to go further? [Start the developer journey series](/docs/current/tutorials/developer-journey/).
diff --git a/docs/developer-docs/getting-started/deploy/testnet.mdx b/docs/developer-docs/getting-started/deploy/testnet.mdx
deleted file mode 100644
index cf980def0d..0000000000
--- a/docs/developer-docs/getting-started/deploy/testnet.mdx
+++ /dev/null
@@ -1,83 +0,0 @@
----
-keywords: [beginner, tutorial, testnet, testnet deployment, deploy]
----
-
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip";
-
-
-# Testnet deployment
-
-
-
-
-
-In contrast to other blockchain networks, ICP does not have a testnet network where smart contract developers can deploy their projects to test functionality.
-
-This is because canister smart contracts can be upgraded and changed once they have been deployed on the mainnet, and mainnet deployment is fairly cheap.
-
-For developers who are looking for a testnet environment, however, ICP offers the [playground](https://m7sm4-2iaaa-aaaab-qabra-cai.ic0.app/) that allows for simple, small-scale, temporary testing for free. It can be used to build and deploy canisters directly in the [web browser](/docs/current/developer-docs/developer-tools/ide/playground), or it can be utilized through the `dfx deploy --playground` command via the CLI.
-
-Canisters deployed to the playground use resources that are borrowed from a canister pool. Each canister has an initial amount of 0.5T cycles that it receives from the resource pool and can be used for 20 minutes once the canister has been deployed. Note that there are function [limitations and restrictions](/docs/current/developer-docs/smart-contracts/deploy/custom-testnets) imposed on canisters deployed to the playground.
-
-For advanced developers and use cases, there are [custom testnet options](/docs/current/developer-docs/smart-contracts/deploy/custom-testnets).
-
-## Deploying to the playground
-
-Through `dfx`, canisters can be deployed directly from the CLI to the playground using the `--playground` flag. When this flag is used, the specified canister is deployed to the playground canister pool, and a canister URL will be returned to the developer. If no canister is specified, all canisters within the project's `dfx.json` file will be deployed to the playground.
-
-This workflow enables developers to test canister functionality without needing to obtain cycles or configure other parameters that are required for deployment to the mainnet.
-
-### Prerequisites
-
-Before you start, verify the following:
-
-- [x] You have an internet connection and access to a shell terminal on your local macOS or Linux computer.
-
-- [x] You have a command line interface (CLI) window open. This window is also referred to as the 'terminal' window.
-
-- [x] You have downloaded and installed the IC SDK package as described in the [installing the IC SDK](/docs/current/developer-docs/getting-started/install/) page.
-
-:::info
-`dfx deploy --playground` is available in `dfx` versions v0.15.1 and above.
-:::
-
-To deploy a canister to the playground, first create a new `dfx` project with the command:
-
-```
-dfx new hello_world
-```
-
-This command will create a new default `dfx` project that contains a simple 'Hello, world!' sample that includes a `hello_world_backend` canister with a predefined `greet` function.
-
-Then, to deploy this canister to the playground, run the command:
-
-```
-dfx deploy hello_world_backend --playground
-```
-
-Once deployed, the canister can be interacted with using a command such as:
-
-```
-dfx canister call hello_world_backend greet '("everyone")' --network playground
-```
-
-This command calls the `hello_world_backend` canister that has been deployed to the playground using the `--network` flag since the playground is classified as a deployment network.
-
-:::info
-Any commands that intend to target a canister deployed to the playground must use the `--playground` or `--network playground` flag in order to target the borrowed canister(s).
-:::
-
-Verify the command displays the return value of the `greet` function.
-
-For example:
-
-```
-("Hello, everyone!")
-```
-
-## Next steps
-
-Next, you can deploy your canister on the mainnet.
-
-- [Mainnet deployment](/docs/current/developer-docs/getting-started/deploy/mainnet)
\ No newline at end of file
diff --git a/docs/developer-docs/getting-started/explore-examples.mdx b/docs/developer-docs/getting-started/explore-examples.mdx
index 57b194cff4..7bb6f0b9e8 100644
--- a/docs/developer-docs/getting-started/explore-examples.mdx
+++ b/docs/developer-docs/getting-started/explore-examples.mdx
@@ -11,8 +11,6 @@ import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip";
-
-
[ICP Ninja](https://icp.ninja) is a web-based integrated development environment (IDE) for creating and deploying decentralized applications (dapps) on the Internet Computer (ICP).
ICP Ninja provides a gallery of example projects you can explore to learn about different application types, architectures, and use cases. Example projects can be edited and then deployed to ICP directly from your web browser. Once deployed, you can open the application's frontend in your browser, share the public link to your new onchain dapp, or make calls directly to the backend through the [Candid UI](/docs/current/developer-docs/smart-contracts/candid/candid-concepts).
@@ -25,7 +23,6 @@ ICP Ninja serves as an introduction to developing on ICP and learning about:
- ICP's unique features, such as [randomness](/docs/current/developer-docs/smart-contracts/advanced-features/randomness), [timers](/docs/current/developer-docs/smart-contracts/advanced-features/periodic-tasks), and [HTTPS outcalls](/docs/current/developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-overview).
-
:::info
Want to skip directly to using CLI tools in a local dev environment? [Get started with the IC SDK](/docs/current/developer-docs/getting-started/install).
@@ -91,4 +88,4 @@ Once you are ready to either deploy your ICP Ninja project longer than the tempo
- [x] Download the ICP Ninja project files by selecting the dropdown menu next to the "Deploy" button, then select "Download files." **If you want to start a new project instead, you can skip this step.**
-- [x] [Install tools.](/docs/current/developer-docs/getting-started/install)
+- [x] [Installing developer tools.](/docs/current/developer-docs/getting-started/install)
diff --git a/docs/developer-docs/getting-started/identities.mdx b/docs/developer-docs/getting-started/identities.mdx
index 2490f0c01f..15a9040b3a 100644
--- a/docs/developer-docs/getting-started/identities.mdx
+++ b/docs/developer-docs/getting-started/identities.mdx
@@ -5,12 +5,10 @@ keywords: [beginner, getting started, tutorial, accounts, developer account]
import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip";
-# Create a developer identity
+# Creating a developer identity
-
-
On the Internet Computer (ICP), a developer **identity** is essential to developing canisters. Developer identities use a private/public key pair for authentication. The public key can be distributed openly as it will be used to encrypt messages. The private key must be kept secret and stored securely.
Developer identities have a **principal**, a generic identifier value used to identify users, canisters, and potentially other entities on the network in the future. Each developer identity's principal value is derived from the identity's public key.
@@ -41,8 +39,6 @@ Developer identities are not the only form of identity on ICP. Other ICP identit
:::
-## Creating your identity
-
By default, `dfx` will create and use the `default` identity. ***This identity is not stored securely. It is recommended you create your own personal identity.***
First, use `dfx` to list all current identities. If none exist, it will automatically create the `default` identity.
@@ -77,7 +73,7 @@ Identity names must use the characters `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn
To recover an identity, use `dfx identity import --seed-file seedphrase.txt`, where `seedphrase.txt` contains the seed phrase shown when you created your identity.
:::
-### Storing the identity's private key
+### Storing the developer identity's private key
The private key for an identity is stored in the `~/.config/dfx/identity/IDENTITY_NAME/identity.pem`. ***This file should be backed up to a secure location.***
@@ -85,7 +81,7 @@ The private key for an identity is stored in the `~/.config/dfx/identity/IDENTIT
By default, `dfx` will store your identity in the local keyring/keychain. If a keyring/keychain is unavailable, it will prompt you to choose a password, then store your private key locally in a password-protected PEM file at `~/.config/dfx/identity/IDENTITY_NAME/identity.pem.encrypted`.
:::
-## Using your identity
+## Using your developer identity
Once your identity is created, you must tell `dfx` that this is the identity you want to use. If you do not, the `default` identity will be used, and any canister creation and management you execute will not be secure.
@@ -125,4 +121,4 @@ aez2y-7yvs5-e6dpq-gwlld-t6ozx-l5hoo-j4vwr-mimoy-me2xq-yrxkx-rae
Next, you must obtain cycles. Cycles are required to pay for the resources a canister consumes.
-- [x] [Tokens and cycles](/docs/current/developer-docs/getting-started/tokens-and-cycles)
+- [x] [Using tokens and cycles](/docs/current/developer-docs/getting-started/tokens-and-cycles)
diff --git a/docs/developer-docs/getting-started/install.mdx b/docs/developer-docs/getting-started/install.mdx
index 192f198f8f..920558e46e 100644
--- a/docs/developer-docs/getting-started/install.mdx
+++ b/docs/developer-docs/getting-started/install.mdx
@@ -7,12 +7,10 @@ import { AdornedTabs } from "/src/components/Tabs/AdornedTabs";
import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip";
-# Install tools
+# Installing developer tools
-
-
The IC SDK is a software development kit used to develop and deploy applications on the Internet Computer (ICP) from a local developer environment. It is comprised of several tools.
## Installing the IC SDK
@@ -144,4 +142,4 @@ For troubleshooting common `dfx` errors, see [IC SDK troubleshooting](troublesho
Next, you must create a developer identity. This identity will be used to control and manage your project's canisters.
-- [x] [Create a developer identity](/docs/current/developer-docs/getting-started/identities).
+- [x] [Creating a developer identity](/docs/current/developer-docs/getting-started/identities).
diff --git a/docs/developer-docs/getting-started/next-steps.mdx b/docs/developer-docs/getting-started/next-steps.mdx
deleted file mode 100644
index fb87240ab7..0000000000
--- a/docs/developer-docs/getting-started/next-steps.mdx
+++ /dev/null
@@ -1,20 +0,0 @@
----
-keywords: [beginner, getting started, user journeys, developer paths, features, application types]
----
-
-import useBaseUrl from "@docusaurus/useBaseUrl";
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip";
-import NextSteps from "@site/src/components/Card/NextSteps";
-
-# Next steps
-
-
-
-Continue building with these suggested next steps.
-
-
-
-
-
-
diff --git a/docs/developer-docs/getting-started/quickstart/first-smart-contract.mdx b/docs/developer-docs/getting-started/quickstart/first-smart-contract.mdx
index 05ca775b97..1b9c9f8e6f 100644
--- a/docs/developer-docs/getting-started/quickstart/first-smart-contract.mdx
+++ b/docs/developer-docs/getting-started/quickstart/first-smart-contract.mdx
@@ -7,7 +7,7 @@ import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
import TabItem from "@theme/TabItem";
import { OsType, useOs } from "/src/hooks/useOs";
-# Quick start
+# First smart contract
diff --git a/docs/developer-docs/getting-started/quickstart/react-quickstart.mdx b/docs/developer-docs/getting-started/quickstart/react-quickstart.mdx
index a014f52bd3..69ff57bcd1 100644
--- a/docs/developer-docs/getting-started/quickstart/react-quickstart.mdx
+++ b/docs/developer-docs/getting-started/quickstart/react-quickstart.mdx
@@ -7,7 +7,7 @@ import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
import TabItem from "@theme/TabItem";
import { AdornedTabs } from "/src/components/Tabs/AdornedTabs";
-# React quick start
+# First web app
@@ -129,4 +129,4 @@ dfx deploy --playground
Open the `frontend` URL in a web browser. You'll see the template React frontend interface.
-*Congratulations, you just created your first internet-native React dapp!*
\ No newline at end of file
+*Congratulations, you just created your first internet-native React app!*
diff --git a/docs/developer-docs/getting-started/tokens-and-cycles.mdx b/docs/developer-docs/getting-started/tokens-and-cycles.mdx
index b9c746864a..df76bc0aee 100644
--- a/docs/developer-docs/getting-started/tokens-and-cycles.mdx
+++ b/docs/developer-docs/getting-started/tokens-and-cycles.mdx
@@ -7,12 +7,10 @@ import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip";
import TabItem from "@theme/TabItem";
import { AdornedTabs } from "/src/components/Tabs/AdornedTabs";
-# Tokens and cycles
+# Using tokens and cycles
-
-
On the Internet Computer, there are three types of token assets: ICP tokens, cycles, and ICRC tokens. ICP and cycles are the most important for every developer to understand and use, as they are necessary for deploying and maintaining a canister.
ICP tokens are important because they can be converted into cycles and used to pay for a canister's resource consumption. Cycles reflect the real cost of operations for resources such as physical hardware, rack space, energy, storage devices, and bandwidth.
@@ -85,7 +83,7 @@ b0d7beee54be8679a42e999218a16a0d396f223d7e44d259ac089848c1b820bf
You can obtain [ICP tokens](https://internetcomputer.org/icp-tokens) from an [exchange](https://coinmarketcap.com/currencies/internet-computer/markets) or through a [developer grant](https://dfinity.org/grants). If you are using an exchange, initiate a withdrawal transaction, then enter the ledger account ID as the "destination" address to send ICP tokens to.
-### 3. Check the balance.
+### 3. Check the ICP balance.
```
dfx ledger balance --network=ic
@@ -135,7 +133,7 @@ The amount of cycles that your canister will use depends on a variety of factors
:::
-### 5. Confirm the balance.
+### 5. Confirm the cycles balance.
```
dfx cycles balance --network=ic
@@ -154,4 +152,4 @@ dfx cycles balance --network=ic
Next, it's time to write the code for a smart contract.
-- [x] [Write smart contracts](/docs/current/developer-docs/getting-started/write-smart-contracts).
+- [x] [Writing smart contracts](/docs/current/developer-docs/getting-started/write-smart-contracts).
diff --git a/docs/developer-docs/getting-started/troubleshooting.mdx b/docs/developer-docs/getting-started/troubleshooting.mdx
index 566ff20393..773c5d7d9b 100644
--- a/docs/developer-docs/getting-started/troubleshooting.mdx
+++ b/docs/developer-docs/getting-started/troubleshooting.mdx
@@ -8,8 +8,6 @@ import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-
-
This section provides information to help you troubleshoot and resolve or work around common issues that are related to the following tasks:
- Downloading and installing the IC SDK.
diff --git a/docs/developer-docs/getting-started/write-smart-contracts.mdx b/docs/developer-docs/getting-started/write-smart-contracts.mdx
index a5a56d4f95..593fa82ddf 100644
--- a/docs/developer-docs/getting-started/write-smart-contracts.mdx
+++ b/docs/developer-docs/getting-started/write-smart-contracts.mdx
@@ -10,12 +10,10 @@ import { BetaChip } from "/src/components/Chip/BetaChip";
import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip";
-# Write smart contracts
+# Writing smart contracts
-
-
Canisters are an enhanced type of smart contract. Before a canister is deployed to ICP, the canister's code is compiled into a WebAssembly (Wasm) program, enabling it to store persistent data, be managed by entities such as DAOs, host entire applications, and more. Each canister has the following components:
@@ -121,7 +119,7 @@ The `frontend` canister stores the app's frontend assets, including files such a
/>
-## Writing code
+## Writing canister code
:::danger
@@ -292,14 +290,14 @@ fn get_current_number() -> Nat {
}>
-Azle code coming soon.
+
[Learn more about Azle](https://demergent-labs.github.io/azle/).
}>
-Kybra code coming soon.
+
[Learn more about Kybra](https://demergent-labs.github.io/kybra/).
@@ -413,21 +411,17 @@ fn get_current_number() -> Nat {
}>
-Azle code coming soon.
-
[Learn more about Azle](https://demergent-labs.github.io/azle/).
}>
-Kybra code coming soon.
-
[Learn more about Kybra](https://demergent-labs.github.io/kybra/).
-### 4. Retrieve data.
+### 4. Retrieve external data.
HTTPS outcalls can obtain data from any external source, including other blockchains, traditional Web2 APIs, and other web services. When HTTPS outcalls are used locally, the returned result is not validated since the local replica is only a single node. HTTPS outcalls used on the mainnet validate the returned result through the subnet's consensus, providing security that the data obtained has not been maliciously tampered with during transport.
@@ -676,14 +670,12 @@ fn transform(raw: TransformArgs) -> HttpResponse {
}>
-Azle code coming soon.
-
[Learn more about Azle](https://demergent-labs.github.io/azle/).
}>
-Kybra code coming soon.
+
[Learn more about Kybra](https://demergent-labs.github.io/kybra/).
@@ -898,15 +890,13 @@ fn print_results() {
}>
-Azle code coming soon.
-
[Learn more about Azle](https://demergent-labs.github.io/azle/).
+
}>
-Kybra code coming soon.
-
[Learn more about Kybra](https://demergent-labs.github.io/kybra/).
+
@@ -914,4 +904,4 @@ Kybra code coming soon.
Now that you have written the canister's code, the canister needs to be deployed.
-- [x] [Deploy and manage](/docs/current/developer-docs/getting-started/deploy-and-manage).
+- [x] [Deploying and managing dapps](/docs/current/developer-docs/getting-started/deploy-and-manage).
diff --git a/sidebars.js b/sidebars.js
index bbff85da62..64b175562f 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -14,7 +14,7 @@ const sidebars = {
},
{
type: "doc",
- label: "React",
+ label: "First web app",
id: "developer-docs/getting-started/quickstart/react-quickstart",
},
],
@@ -35,34 +35,29 @@ const sidebars = {
},
{
type: "doc",
- label: "Install tools",
+ label: "Installing developer tools",
id: "developer-docs/getting-started/install",
},
{
type: "doc",
- label: "Create an identity",
+ label: "Creating a developer identity",
id: "developer-docs/getting-started/identities",
},
{
type: "doc",
- label: "Tokens and cycles",
+ label: "Using tokens and cycles",
id: "developer-docs/getting-started/tokens-and-cycles",
},
{
type: "doc",
- label: "Write smart contracts",
+ label: "Writing smart contracts",
id: "developer-docs/getting-started/write-smart-contracts",
},
{
type: "doc",
- label: "Deploy and manage",
+ label: "Deploying and managing dapps",
id: "developer-docs/getting-started/deploy-and-manage",
},
- {
- type: "doc",
- label: "Next steps",
- id: "developer-docs/getting-started/next-steps",
- },
],
},
{