diff --git a/.ai/categories/smart-contracts.md b/.ai/categories/smart-contracts.md index 1e901e36e..dfd3931b5 100644 --- a/.ai/categories/smart-contracts.md +++ b/.ai/categories/smart-contracts.md @@ -4439,6 +4439,280 @@ By defining weights, you can trade-off the number of transactions per second and Westend is a Parity-maintained, Polkadot SDK-based blockchain that serves as a test network for the [Polkadot](#polkadot) network. +--- + +Page Title: hardhat + +- Source (raw): https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-contract-deploy-basic-hardhat.md +- Canonical (HTML): https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic-contract/deploy-basic-hardhat/ +- Summary: Learn how to deploy a basic smart contract to Polkadot Hub using Hardhat, Perfect for professional workflows requiring comprehensive testing and debugging. + +[Hardhat](https://hardhat.org/){target=\_blank} provides a comprehensive development environment with built-in testing, debugging, and deployment capabilities. It's ideal for professional development workflows and team projects. + +**Prerequisites:** + +- Basic understanding of Solidity programming. +- [Node.js](https://nodejs.org/en/download){target=\_blank} v22.13.1 or later. +- Test tokens for gas fees (available from the [Polkadot faucet](https://faucet.polkadot.io/){target=\_blank}). +- A wallet with a private key for signing transactions. + +### Setup + +Initialize your Hardhat project: + +```bash +mkdir hardhat-deployment +cd hardhat-deployment +npx hardhat --init +``` + +### Configure Hardhat + +Edit `hardhat.config.js`: + +```javascript title="hardhat.config.js" hl_lines="39-43" +import type { HardhatUserConfig } from "hardhat/config"; + +import hardhatToolboxViemPlugin from "@nomicfoundation/hardhat-toolbox-viem"; +import { configVariable } from "hardhat/config"; + +const config: HardhatUserConfig = { + plugins: [hardhatToolboxViemPlugin], + solidity: { + profiles: { + default: { + version: "0.8.28", + }, + production: { + version: "0.8.28", + settings: { + optimizer: { + enabled: true, + runs: 200, + }, + }, + }, + }, + }, + networks: { + hardhatMainnet: { + type: "edr-simulated", + chainType: "l1", + }, + hardhatOp: { + type: "edr-simulated", + chainType: "op", + }, + sepolia: { + type: "http", + chainType: "l1", + url: configVariable("SEPOLIA_RPC_URL"), + accounts: [configVariable("SEPOLIA_PRIVATE_KEY")], + }, + polkadotHubTestnet: { + url: 'https://testnet-passet-hub-eth-rpc.polkadot.io', + chainId: 420420422, + accounts: [configVariable("PRIVATE_KEY")], + }, + }, +}; + +export default config; + +``` + +### Create Your Contract + +Replace the default contract in `contracts/Storage.sol`: + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +contract Storage { + uint256 private storedNumber; + + function store(uint256 num) public { + storedNumber = num; + } + + function retrieve() public view returns (uint256) { + return storedNumber; + } +} +``` + +### Compile + +```bash +npx hardhat build +``` + +### Set Up Deployment + +Create a deployment module in `ignition/modules/Storage.ts`: + +```typescript title="ignition/modules/Storage.ts" +import { buildModule } from '@nomicfoundation/hardhat-ignition/modules'; + +export default buildModule('StorageModule', (m) => { + const storage = m.contract('Storage'); + return { storage }; +}); +``` + +### Deploy + +Deploy to Polkadot Hub TestNet: + +```bash +npx hardhat ignition deploy ignition/modules/Storage.ts --network polkadotHubTestnet +``` + +### Next Steps + +- Deploy an ERC-20 token on Polkadot Hub, either using the [Deploy an ERC-20](/smart-contracts/cookbook/smart-contracts/deploy-erc20) guide or the [Deploy an ERC-20 to Polkadot Hub](/smart-contracts/cookbook/smart-contracts/deploy-erc20) guide. +- Deploy an NFT on Polkadot Hub, either using the [Deploy an NFT](/smart-contracts/cookbook/smart-contracts/deploy-nft) guide or the [Deploy an NFT to Polkadot Hub](/smart-contracts/cookbook/smart-contracts/deploy-nft) guide. +- Check out in details each [development environment](/smart-contracts/dev-environments/). + + +--- + +Page Title: hardhat + +- Source (raw): https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-contract-evm-deploy-basic-hardhat.md +- Canonical (HTML): https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic-contract-evm/deploy-basic-hardhat/ +- Summary: Learn how to deploy a basic smart contract to Polkadot Hub using Hardhat, Perfect for professional workflows requiring comprehensive testing and debugging. + +[Hardhat](https://hardhat.org/){target=\_blank} provides a comprehensive development environment with built-in testing, debugging, and deployment capabilities. It's ideal for professional development workflows and team projects. + +**Prerequisites:** + +- Basic understanding of Solidity programming. +- [Node.js](https://nodejs.org/en/download){target=\_blank} v22.13.1 or later. +- Test tokens for gas fees (available from the [Polkadot faucet](https://faucet.polkadot.io/){target=\_blank}). +- A wallet with a private key for signing transactions. + +### Setup + +Initialize your Hardhat project: + +```bash +mkdir hardhat-deployment +cd hardhat-deployment +npx hardhat --init +``` + +### Configure Hardhat + +Edit `hardhat.config.js`: + +```javascript title="hardhat.config.js" hl_lines="39-43" +import type { HardhatUserConfig } from "hardhat/config"; + +import hardhatToolboxViemPlugin from "@nomicfoundation/hardhat-toolbox-viem"; +import { configVariable } from "hardhat/config"; + +const config: HardhatUserConfig = { + plugins: [hardhatToolboxViemPlugin], + solidity: { + profiles: { + default: { + version: "0.8.28", + }, + production: { + version: "0.8.28", + settings: { + optimizer: { + enabled: true, + runs: 200, + }, + }, + }, + }, + }, + networks: { + hardhatMainnet: { + type: "edr-simulated", + chainType: "l1", + }, + hardhatOp: { + type: "edr-simulated", + chainType: "op", + }, + sepolia: { + type: "http", + chainType: "l1", + url: configVariable("SEPOLIA_RPC_URL"), + accounts: [configVariable("SEPOLIA_PRIVATE_KEY")], + }, + polkadotHubTestnet: { + url: 'https://testnet-passet-hub-eth-rpc.polkadot.io', + chainId: 420420422, + accounts: [configVariable("PRIVATE_KEY")], + }, + }, +}; + +export default config; + +``` + +### Create Your Contract + +Replace the default contract in `contracts/Storage.sol`: + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +contract Storage { + uint256 private storedNumber; + + function store(uint256 num) public { + storedNumber = num; + } + + function retrieve() public view returns (uint256) { + return storedNumber; + } +} +``` + +### Compile + +```bash +npx hardhat build +``` + +### Set Up Deployment + +Create a deployment module in `ignition/modules/Storage.ts`: + +```typescript title="ignition/modules/Storage.ts" +import { buildModule } from '@nomicfoundation/hardhat-ignition/modules'; + +export default buildModule('StorageModule', (m) => { + const storage = m.contract('Storage'); + return { storage }; +}); +``` + +### Deploy + +Deploy to Polkadot Hub TestNet: + +```bash +npx hardhat ignition deploy ignition/modules/Storage.ts --network polkadotHubTestnet +``` + +### Next Steps + +- Deploy an ERC-20 token on Polkadot Hub, either using the [Deploy an ERC-20](/smart-contracts/cookbook/smart-contracts/deploy-erc20) guide or the [Deploy an ERC-20 to Polkadot Hub](/smart-contracts/cookbook/smart-contracts/deploy-erc20) guide. +- Deploy an NFT on Polkadot Hub, either using the [Deploy an NFT](/smart-contracts/cookbook/smart-contracts/deploy-nft) guide or the [Deploy an NFT to Polkadot Hub](/smart-contracts/cookbook/smart-contracts/deploy-nft) guide. +- Check out in details each [development environment](/smart-contracts/dev-environments/). + + --- Page Title: Install Polkadot SDK @@ -4860,6 +5134,16 @@ To stop the node, press `Control-C` in the terminal. +- __Get Started with Parachain Development__ + + --- + + Practical examples and tutorials for building and deploying Polkadot parachains, covering everything from launch to customization and cross-chain messaging. + + [:octicons-arrow-right-24: Get Started](/parachains/get-started/) + + + --- @@ -6218,48 +6502,202 @@ The node will begin producing blocks immediately and display initialization logs 2025-05-29 10:42:42 🏆 Imported #1 (0x1ae1…b8b4 → 0xa88d…e36a) -For debugging purposes or to monitor low-level operations, you can enable detailed logging by setting environment variables before running the command: +For debugging purposes or to monitor low-level operations, you can enable detailed logging by setting environment variables before running the command: + +```bash +RUST_LOG="error,evm=debug,sc_rpc_server=info,runtime::revive=debug" ./target/release/revive-dev-node --dev +``` + +Once the node is running, open a new terminal window and start the ETH-RPC adapter. This component translates Ethereum JSON-RPC calls into Substrate-compatible requests, allowing you to use familiar Ethereum tools like MetaMask, Hardhat, or Ethers.js: + +```bash +./target/release/eth-rpc --dev +``` + +You should see logs indicating that the adapter is ready to accept connections: + +
+ ./target/release/eth-rpc --dev +
+ 2025-05-29 10:48:48 Running in --dev mode, RPC CORS has been disabled. + 2025-05-29 10:48:48 Running in --dev mode, RPC CORS has been disabled. + 2025-05-29 10:48:48 🌐 Connecting to node at: ws://127.0.0.1:9944 ... + 2025-05-29 10:48:48 🌟 Connected to node at: ws://127.0.0.1:9944 + 2025-05-29 10:48:48 💾 Using in-memory database, keeping only 256 blocks in memory + 2025-05-29 10:48:48 〽️ Prometheus exporter started at 127.0.0.1:9616 + 2025-05-29 10:48:48 Running JSON-RPC server: addr=127.0.0.1:8545,[::1]:8545 + 2025-05-29 10:48:48 🔌 Subscribing to new blocks (BestBlocks) + 2025-05-29 10:48:48 🔌 Subscribing to new blocks (FinalizedBlocks) +
+ +Similar to the Revive Dev node, you can enable detailed logging for the ETH-RPC adapter to troubleshoot issues: + +```bash +RUST_LOG="info,eth-rpc=debug" ./target/release/eth-rpc --dev +``` + +Your local development environment is now active and accessible at `http://localhost:8545`. This endpoint accepts standard Ethereum JSON-RPC requests, enabling seamless integration with existing Ethereum development tools and workflows. + +You can connect wallets, deploy contracts using Remix or Hardhat, and interact with your smart contracts as you would on any Ethereum-compatible network. + + +--- + +Page Title: Migration FAQs and Considerations + +- Source (raw): https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-for-eth-devs-migration.md +- Canonical (HTML): https://docs.polkadot.com/smart-contracts/for-eth-devs/migration/ +- Summary: Learn how to migrate your existing Ethereum contracts to the Polkadot Hub using REVM and PolkaVM by following these considerations. + +# Migration FAQs and Considerations + +## Introduction + +This guide helps Ethereum developers migrate their smart contracts to Polkadot Hub. Most contracts work without modifications on the REVM backend, while the PolkaVM backend offers enhanced performance with minimal adaptation for standard patterns. + +## Migration Considerations + +Take into account the following considerations before migrating your contracts: + +- Standard ERC-20, ERC-721, ERC-1155 tokens work without changes. +- DeFi protocols, DEXs, and AMMs migrate seamlessly. +- DAOs and governance contracts are fully compatible. +- Most Solidity contracts deploy identically to Ethereum. + +## Migration Checklist + +Before migrating your contracts, review this checklist: + +- Factory contracts using PVM bytecode need pre-uploaded dependencies. +- Contracts using `EXTCODECOPY` for runtime manipulation require review (for projects that will use PVM bytecode, not EVM bytecode). +- Replace `transfer()` and `send()` with proper reentrancy guards (for projects that will use PVM bytecode, not EVM bytecode). + +## Migration FAQs + +### Which backend should I choose? + +- Choose REVM if you want: + + - Zero-modification deployment of existing Ethereum contracts. + - Exact EVM behavior for audited code. + - Compatibility with tools that inspect EVM bytecode. + - Rapid deployment without optimization. + +- Choose PolkaVM if you want: + + - Better performance for computation-heavy applications. + - Lower execution costs for intensive operations. + - Access to next-generation smart contract features. + +If you are unsure which to choose, start with REVM for immediate compatibility, then consider PolkaVM for performance optimization once deployed. + +### Do I need to rewrite my Solidity code? + +No, for most contracts. Standard Solidity patterns work on both backends. + +### What about factory contracts? + +- **REVM**: Factory contracts work identically to Ethereum with no changes needed. + + The original factory pattern is: + + ```solidity + contract TokenFactory { + function createToken(string memory name) public returns (address) { + // Creates new contract at runtime + Token newToken = new Token(name); + return address(newToken); + } + } + ``` + +- **PolkaVM**: Factory contracts require pre-uploading dependent contracts. + + Here's how to adapt the original factory pattern: + + ```solidity + contract TokenFactory { + // Reference pre-uploaded Token contract by hash + bytes32 public tokenCodeHash; + + constructor(bytes32 _tokenCodeHash) { + tokenCodeHash = _tokenCodeHash; + } + + function createToken(string memory name) public returns (address) { + // Instantiate from pre-uploaded code + Token newToken = new Token{salt: keccak256(abi.encode(name))}(name); + return address(newToken); + } + } + ``` + +The deployment steps for PolkaVM factories are: + +1. Upload the contract code to the chain. +2. Note the returned code hash. +3. Deploy the Factory contract with the contract code hash. +4. Factory can now instantiate contracts using the pre-uploaded code. + +### How do gas costs compare? -```bash -RUST_LOG="error,evm=debug,sc_rpc_server=info,runtime::revive=debug" ./target/release/revive-dev-node --dev -``` +For more information on gas costs, see the [Gas Model](/smart-contracts/for-eth-devs/gas-model/){target=\_blank} page. -Once the node is running, open a new terminal window and start the ETH-RPC adapter. This component translates Ethereum JSON-RPC calls into Substrate-compatible requests, allowing you to use familiar Ethereum tools like MetaMask, Hardhat, or Ethers.js: +### Which Solidity features are not supported? -```bash -./target/release/eth-rpc --dev -``` +For REVM, any Solidity feature will function smoothly without requiring changes or adaptations. For PVM, there are considerations, as was mentioned above. -You should see logs indicating that the adapter is ready to accept connections: +For PolkaVM, there are some considerations: -
- ./target/release/eth-rpc --dev -
- 2025-05-29 10:48:48 Running in --dev mode, RPC CORS has been disabled. - 2025-05-29 10:48:48 Running in --dev mode, RPC CORS has been disabled. - 2025-05-29 10:48:48 🌐 Connecting to node at: ws://127.0.0.1:9944 ... - 2025-05-29 10:48:48 🌟 Connected to node at: ws://127.0.0.1:9944 - 2025-05-29 10:48:48 💾 Using in-memory database, keeping only 256 blocks in memory - 2025-05-29 10:48:48 〽️ Prometheus exporter started at 127.0.0.1:9616 - 2025-05-29 10:48:48 Running JSON-RPC server: addr=127.0.0.1:8545,[::1]:8545 - 2025-05-29 10:48:48 🔌 Subscribing to new blocks (BestBlocks) - 2025-05-29 10:48:48 🔌 Subscribing to new blocks (FinalizedBlocks) -
+- `EXTCODECOPY`: Only works in constructor code. +- Runtime code modification: Use on-chain constructors instead. +- **Gas stipends**: `address.send()` and `address.transfer()` don't provide reentrancy protection. +- **Unsupported operations**: `pc`, `extcodecopy`, `selfdestruct`, `blobhash`, and `blobbasefee` (blob-related operations). -Similar to the Revive Dev node, you can enable detailed logging for the ETH-RPC adapter to troubleshoot issues: +### How do I handle the existential deposit? -```bash -RUST_LOG="info,eth-rpc=debug" ./target/release/eth-rpc --dev -``` +Polkadot requires accounts to maintain a minimum balance (existential deposit or ED) to remain active. -Your local development environment is now active and accessible at `http://localhost:8545`. This endpoint accepts standard Ethereum JSON-RPC requests, enabling seamless integration with existing Ethereum development tools and workflows. +This is handled automatically for you: -You can connect wallets, deploy contracts using Remix or Hardhat, and interact with your smart contracts as you would on any Ethereum-compatible network. +- Balance queries via Ethereum RPC automatically deduct the ED. +- New account transfers include ED in transaction fees. +- Contract-to-contract transfers draw ED from the transaction signer. + +You typically don't need to do anything special, but be aware: + +- Accounts below ED threshold are automatically deleted. +- ED is around 0.01 DOT (varies by network). +- Your contracts don't need to manage this explicitly. + +### Can I use my existing development tools? + +Yes. Both backends support: + +- **Wallets**: [MetaMask](https://metamask.io/){target=\_blank}, [Talisman](https://talisman.xyz/){target=\_blank}, [SubWallet](https://www.subwallet.app/){target=\_blank} +- **Development frameworks**: [Hardhat](/smart-contracts/cookbook/smart-contracts/deploy-basic/hardhat/){target=\_blank}, [Foundry](/smart-contracts/cookbook/smart-contracts/deploy-basic/foundry/){target=\_blank}, [Remix](/smart-contracts/cookbook/smart-contracts/deploy-basic/remix/){target=\_blank} (just consider that for PVM bytecode, you will use the Polkadot version of the tooling) +- **Libraries**: [ethers.js](/smart-contracts/libraries/ethers-js/){target=\_blank}, [web3.js](/smart-contracts/libraries/web3-js/){target=\_blank}, [viem](/smart-contracts/libraries/viem/){target=\_blank} +- **Testing tools**: Your existing test suites work + +Connect to Polkadot Hub's Ethereum JSON-RPC endpoint and use your familiar workflow. + +## Conclusion + +Most Ethereum contracts migrate to Polkadot Hub with minimal or no changes. Use REVM for seamless compatibility or PolkaVM for enhanced performance. + +There are a few key points to keep in mind during migration: + +- Replace `transfer()` and `send()` with `.call{value}("")` and use reentrancy guards (for projects that will use PVM bytecode, not EVM bytecode). +- PolkaVM factory contracts using PVM bytecode need pre-uploaded dependencies. +- Don't hardcode gas values. +- Test thoroughly on [TestNet](/smart-contracts/connect/#__tabbed_1_1){target=\_blank} before mainnet deployment. + +Your existing Solidity knowledge and tooling transfer directly to Polkadot Hub, making migration straightforward for standard smart contract patterns. --- -Page Title: Migration FAQs and Considerations +Page Title: Networks - Source (raw): https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-for-eth-devs-migration.md - Canonical (HTML): https://docs.polkadot.com/smart-contracts/for-eth-devs/migration/ @@ -8976,464 +9414,150 @@ Page Title: Use Hardhat with Polkadot Hub - Source (raw): https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-get-started.md - Canonical (HTML): https://docs.polkadot.com/smart-contracts/dev-environments/hardhat/get-started/ -- Summary: Learn how to create, compile, test, and deploy smart contracts on Polkadot Hub using Hardhat, a powerful development environment for blockchain developers. +- Summary: Overview of Hardhat, a powerful development environment for creating, compiling, testing, and deploying smart contracts on Polkadot Hub. # Hardhat -!!! smartcontract "PolkaVM Preview Release" - PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. -
-- :octicons-code-16:{ .lg .middle } __Test and Deploy with Hardhat__ - - --- - - Master Solidity smart contract development with Hardhat. Learn testing, deployment, and network interaction in one comprehensive tutorial. - -
- [:octicons-arrow-right-24: Get Started](/tutorials/smart-contracts/launch-your-first-project/test-and-deploy-with-hardhat){target=\_blank} - -
- -!!! note "Contracts Code Blob Size Disclaimer" - The maximum contract code blob size on Polkadot Hub networks is _100 kilobytes_, significantly larger than Ethereum’s EVM limit of 24 kilobytes. - - For detailed comparisons and migration guidelines, see the [EVM vs. PolkaVM](/polkadot-protocol/smart-contract-basics/evm-vs-polkavm/#current-memory-limits){target=\_blank} documentation page. - ## Overview -Hardhat is a robust development environment for Ethereum-compatible chains that makes smart contract development more efficient. This guide walks you through the essentials of using Hardhat to create, compile, test, and deploy smart contracts on Polkadot Hub. - -## Prerequisites - -Before getting started, ensure you have: - -- [Node.js](https://nodejs.org/){target=\_blank} (v16.0.0 or later) and npm installed. - - Note: Use Node.js 22.5+ and npm version 10.9.0+ to avoid issues with the Polkadot plugin. -- Basic understanding of Solidity programming. -- Some PAS test tokens to cover transaction fees (easily obtainable from the [Polkadot faucet](https://faucet.polkadot.io/?parachain=1111){target=\_blank}). To learn how to get test tokens, check out the [Test Tokens](/smart-contracts/connect/#test-tokens){target=\_blank} section. - -## Set Up Hardhat - -1. Create a new directory for your project and navigate into it: - - ```bash - mkdir hardhat-example - cd hardhat-example - ``` - -2. Initialize a new npm project: - - ```bash - npm init -y - ``` - -3. To interact with Polkadot, Hardhat requires the following plugin to compile contracts to PolkaVM bytecode and to spawn a local node compatible with PolkaVM: - - ```bash - npm install --save-dev @parity/hardhat-polkadot@0.1.9 - ``` - -4. Create a Hardhat project: - - ```bash - npx hardhat-polkadot init - ``` - - Select **Create a JavaScript project** when prompted and follow the instructions. After that, your project will be created with three main folders: - - - **`contracts`**: Where your Solidity smart contracts live. - - **`test`**: Contains your test files that validate contract functionality. - - **`ignition`**: Deployment modules for safely deploying your contracts to various networks. - -5. Add the following folder to the `.gitignore` file if it is not already there: - - ```bash - echo '/ignition/deployments/' >> .gitignore - ``` - -6. Finish the setup by installing all the dependencies: - - ```bash - npm install - ``` - - !!! note - This last step is needed to set up the `hardhat-polkadot` plugin. It will install the `@parity/hardhat-polkadot` package and all its dependencies. In the future, the plugin will handle this automatically. - -## Compile Your Contract - -The plugin will compile your Solidity contracts for Solidity versions `0.8.0` and higher to be PolkaVM compatible. When compiling your contract, there are two ways to configure your compilation process: +Building on Polkadot Hub often starts with a Solidity codebase, and Hardhat keeps that workflow familiar while giving teams repeatable scripts, rich debugging, and CLI automation suited to the network's Ethereum-compatible execution layer. -- **npm compiler**: Uses library [@parity/resolc](https://www.npmjs.com/package/@parity/resolc){target=\_blank} for simplicity and ease of use. -- **Binary compiler**: Uses your local `resolc` binary directly for more control and configuration options. +Hardhat is a comprehensive development environment for building, testing, and deploying smart contracts. It provides developers with a complete toolkit including compilation, local testing nodes, debugging tools, and deployment automation. -To compile your project, follow these instructions: +## Hardhat Workflow -1. Modify your Hardhat configuration file to specify which compilation process you will be using and activate the `polkavm` flag in the Hardhat network: +From the first sketch of a contract to ongoing operations, Hardhat encourages a repeatable cycle: define the functionality you need, scaffold the workspace, write and refine Solidity code, compile it into deployable artifacts, validate behavior with automated tests, deploy confidently to the target network, and keep iterating with scripts that monitor and interact with what you shipped. - === "npm Configuration" - - ```javascript title="hardhat.config.js" hl_lines="9-11 14" - // hardhat.config.js - require('@nomicfoundation/hardhat-toolbox'); - - require('@parity/hardhat-polkadot'); - - /** @type import('hardhat/config').HardhatUserConfig */ - module.exports = { - solidity: '0.8.28', - resolc: { - compilerSource: 'npm', - }, - networks: { - hardhat: { - polkavm: true, - }, - }, - }; - ``` - - === "Binary Configuration" - - ```javascript title="hardhat.config.js" hl_lines="9-14 17" - // hardhat.config.js - require('@nomicfoundation/hardhat-toolbox'); - - require('@parity/hardhat-polkadot'); - - /** @type import('hardhat/config').HardhatUserConfig */ - module.exports = { - solidity: '0.8.28', - resolc: { - compilerSource: 'binary', - settings: { - compilerPath: 'INSERT_PATH_TO_RESOLC_COMPILER', - }, - }, - networks: { - hardhat: { - polkavm: true, - }, - }, - }; - ``` - - For the binary configuration, replace `INSERT_PATH_TO_RESOLC_COMPILER` with the proper path to the binary. To obtain the binary, check the [releases](https://github.com/paritytech/revive/releases){target=\_blank} section of the `resolc` compiler, and download the latest version. - - The default settings used can be found in the [`constants.ts`](https://github.com/paritytech/hardhat-polkadot/blob/v0.1.5/packages/hardhat-polkadot-resolc/src/constants.ts#L8-L23){target=\_blank} file of the `hardhat-polkadot` source code. You can change them according to your project needs. Generally, the recommended settings for optimized outputs are the following: - - ```javascript title="hardhat.config.js" hl_lines="4-10" - resolc: { - ... - settings: { - optimizer: { - enabled: true, - parameters: 'z', - fallbackOz: true, - runs: 200, - }, - standardJson: true, - }, - ... - } - ``` - - You can check the [`ResolcConfig`](https://github.com/paritytech/hardhat-polkadot/blob/v0.1.5/packages/hardhat-polkadot-resolc/src/types.ts#L26){target=\_blank} for more information about compilation settings. - -2. Compile the contract with Hardhat: - - ```bash - npx hardhat compile - ``` - -3. After successful compilation, you'll see the artifacts generated in the `artifacts-pvm` directory: - - ```bash - ls artifacts-pvm/contracts/*.sol/ - ``` - - You should see JSON files containing the contract ABI and bytecode of the contracts you compiled. - -## Set Up a Testing Environment - -Hardhat allows you to spin up a local testing environment to test and validate your smart contract functionalities before deploying to live networks. The `hardhat-polkadot` plugin provides the possibility to spin up a local node with an ETH-RPC adapter for running local tests. - -For complete isolation and control over the testing environment, you can configure Hardhat to work with a fresh local Substrate node. This approach is ideal when you want to test in a clean environment without any existing state or when you need specific node configurations. - -Configure a local node setup by adding the node binary path along with the ETH-RPC adapter path: - -```javascript title="hardhat.config.js" hl_lines="12-20" -// hardhat.config.js -require('@nomicfoundation/hardhat-toolbox'); +```mermaid +flowchart LR + plan[Plan Contract] + scaffold[Scaffold Project] + develop[Write & Update Contracts] + compile[Compile Sources] + test[Run Automated Tests] + deploy[Deploy to Target Network] + operate[Interact & Monitor] -require('@parity/hardhat-polkadot'); -/** @type import('hardhat/config').HardhatUserConfig */ -module.exports = { - ... - networks: { - hardhat: { - polkavm: true, - nodeConfig: { - nodeBinaryPath: 'INSERT_PATH_TO_SUBSTRATE_NODE', - rpcPort: 8000, - dev: true, - }, - adapterConfig: { - adapterBinaryPath: 'INSERT_PATH_TO_ETH_RPC_ADAPTER', - dev: true, - }, - }, - }, -}; + plan --> scaffold --> develop --> compile --> test --> deploy --> operate ``` -Replace `INSERT_PATH_TO_SUBSTRATE_NODE` and `INSERT_PATH_TO_ETH_RPC_ADAPTER` with the actual paths to your compiled binaries. The `dev: true` flag configures both the node and adapter for development mode. To obtain these binaries, check the [Installation](/smart-contracts/dev-environments/local-dev-node/#install-the-substrate-node-and-eth-rpc-adapter){target=\_blank} section on the Local Development Node page. +## Project Anatomy -!!! warning - If you're using the default `hardhat.config.js` created by the `hardhat-polkadot` plugin, it includes a `forking` section pointing to the Polkadot Hub TestNet. When you run `npx hardhat node`, Hardhat will start a fork of that network. To use your local node instead, comment out the `forking` section; otherwise, `npx hardhat node` will continue to use the forked network even if a local node is defined in the configuration. - -Once configured, start your chosen testing environment with: +A freshly initialized Hardhat project keeps code, configuration, and automation neatly separated: -```bash -npx hardhat node +``` +. +├── contracts/ +│ └── MyContract.sol +├── ignition/ +│ └── modules/ +├── scripts/ +│ └── interact.js +├── test/ +│ └── MyContract.test.js +└── hardhat.config.js ``` -This command will launch either the forked network or local node (depending on your configuration) along with the ETH-RPC adapter, providing you with a complete testing environment ready for contract deployment and interaction. By default, the Substrate node will be running on `localhost:8000` and the ETH-RPC adapter on `localhost:8545`. - -The output will be something like this: - -
- npx hardhat node -
- Starting server at 127.0.0.1:8000 - ../bin/substrate-node --rpc-port=8000 --dev - Starting the Eth RPC Adapter at 127.0.0.1:8545 - ../bin/eth-rpc --node-rpc-url=ws://localhost:8000 --dev - 2025-05-29 13:00:32 Running in --dev mode, RPC CORS has been disabled. - 2025-05-29 13:00:32 Running in --dev mode, RPC CORS has been disabled. - 2025-05-29 13:00:32 🌐 Connecting to node at: ws://localhost:8000 ... - 2025-05-29 13:00:32 Substrate Node - 2025-05-29 13:00:32 ✌️ version 3.0.0-dev-f73c228b7a1 - 2025-05-29 13:00:32 ❤️ by Parity Technologies <admin@parity.io>, 2017-2025 - 2025-05-29 13:00:32 📋 Chain specification: Development - 2025-05-29 13:00:32 🏷 Node name: electric-activity-4221 - 2025-05-29 13:00:32 👤 Role: AUTHORITY - 2025-05-29 13:00:32 💾 Database: RocksDb at /var/folders/f4/7rdt2m9d7j361dm453cpggbm0000gn/T/substrateOaoecu/chains/dev/db/full - 2025-05-29 13:00:36 [0] 💸 generated 1 npos voters, 1 from validators and 0 nominators - ... -
- -## Test Your Contract - -When testing your contract, be aware that [`@nomicfoundation/hardhat-toolbox/network-helpers`](https://hardhat.org/hardhat-network-helpers/docs/overview){target=\_blank} is not fully compatible with Polkadot Hub's available RPCs. Specifically, Hardhat-only helpers like `time` and `loadFixture` may not work due to missing RPC calls in the node. For more details, refer to the [Compatibility](https://github.com/paritytech/hardhat-polkadot/tree/main/packages/hardhat-polkadot-node#compatibility){target=\_blank} section in the `hardhat-revive` docs. You should avoid using helpers like `time` and `loadFixture` when writing tests. - -To run your test: - -1. Update the `hardhat.config.js` file accordingly to the [Set Up a Testing Environment](#set-up-a-testing-environment) section. - -2. Execute the following command to run your tests: - - ```bash - npx hardhat test - ``` - -## Deploy to a Local Node - -Before deploying to a live network, you can deploy your contract to a local node using [Ignition](https://hardhat.org/ignition/docs/getting-started#overview){target=\_blank} modules: - -1. Update the Hardhat configuration file to add the local network as a target for local deployment: - - ```javascript title="hardhat.config.js" hl_lines="13-16" - // hardhat.config.js - require('@nomicfoundation/hardhat-toolbox'); - - require('@parity/hardhat-polkadot'); - /** @type import('hardhat/config').HardhatUserConfig */ - module.exports = { - ... - networks: { - hardhat: { - ... - }, - localNode: { - polkavm: true, - url: `http://127.0.0.1:8545`, - }, - }, - }, - }; - ``` - -2. Start a local node: - - ```bash - npx hardhat node - ``` - - This command will spawn a local Substrate node along with the ETH-RPC adapter. - -3. In a new terminal window, deploy the contract using Ignition: - - ```bash - npx hardhat ignition deploy ./ignition/modules/MyToken.js --network localNode - ``` - -## Deploying to a Live Network - -After testing your contract locally, you can deploy it to a live network. This guide will use the Polkadot Hub TestNet as the target network. Here's how to configure and deploy: - -1. Fund your deployment account with enough tokens to cover gas fees. In this case, the needed tokens are PAS (on Polkadot Hub TestNet). You can use the [Polkadot faucet](https://faucet.polkadot.io/?parachain=1111){target=\_blank} to obtain testing tokens. +- `contracts/`: Solidity sources that define your smart contracts. +- `test/`: Automated tests written in JavaScript or TypeScript. +- `ignition/`: Deployment modules that orchestrate repeatable rollouts. +- `scripts/`: Utility scripts for deploying, validating, or interacting with contracts. +- `hardhat.config.js`: Central configuration for networks, compilers, and tooling. -2. Export your private key and save it in your Hardhat environment: +## Core Functionalities - ```bash - npx hardhat vars set PRIVATE_KEY "INSERT_PRIVATE_KEY" - ``` +### Project Setup - Replace `INSERT_PRIVATE_KEY` with your actual private key. For further details on private key exportation, refer to the article [How to export an account's private key](https://support.metamask.io/configure/accounts/how-to-export-an-accounts-private-key/){target=\_blank}. +Hardhat provides a structured project initialization with organized folders for contracts, tests, deployment scripts, and automation. Scaffold a workspace quickly and keep configuration in a single `hardhat.config.js` file. - !!! warning - Never reveal your private key, otherwise anyone with access to it can control your wallet and steal your funds. Store it securely and never share it publicly or commit it to version control systems. +- Learn more in the [Install and Configure](/smart-contracts/dev-environments/hardhat/install-and-config/){target=\_blank} guide. -3. Check that your private key has been set up successfully by running: +### Contract Compilation - ```bash - npx hardhat vars get PRIVATE_KEY - ``` +Compile your Solidity smart contracts with configurable compiler versions and optimization settings. Hardhat captures build artifacts—ABI, bytecode, metadata—so you can deploy or interact with contracts from scripts and frontends. -4. Update your Hardhat configuration file with network settings for the Polkadot network you want to target: +- Deep dive into compilation in [Compile Smart Contracts](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\_blank}. - ```javascript title="hardhat.config.js" hl_lines="18-22" - // hardhat.config.js - require('@nomicfoundation/hardhat-toolbox'); +### Testing Environment - require('@parity/hardhat-polkadot'); - const { vars } = require('hardhat/config'); +Run automated tests against a local Hardhat node, simulate transactions, and debug contract behavior before deploying to public networks. The built-in testing stack uses familiar JavaScript tooling such as Mocha and Chai. - /** @type import('hardhat/config').HardhatUserConfig */ - module.exports = { - ... - networks: { - hardhat: { - ... - }, - localNode: { - ... - }, - polkadotHubTestnet: { - polkavm: true, - url: 'https://testnet-passet-hub-eth-rpc.polkadot.io', - accounts: [vars.get('PRIVATE_KEY')], - }, - }, - }, - }; - ``` +- Master testing capabilities in [Test Your Smart Contracts](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\_blank}. -6. Deploy your contract using Ignition: +### Deployment - ```bash - npx hardhat ignition deploy ./ignition/modules/MyToken.js --network polkadotHubTestnet - ``` +Ship your contracts with reusable deployment scripts or Hardhat Ignition modules. Manage credentials securely, target multiple networks, and repeat deployments with confidence. -## Interacting with Your Contract +- Follow deployment steps in [Deploy Smart Contracts](/smart-contracts/dev-environments/hardhat/deploy-a-contract/){target=\_blank}. -Once deployed, you can create a script to interact with your contract. To do so, create a file called `scripts/interact.js` and add some logic to interact with the contract. +### Contract Interaction -For example, for the default `MyToken.sol` contract, you can use the following file that connects to the contract at its address and retrieves the `unlockTime`, which represents when funds can be withdrawn. The script converts this timestamp into a readable date and logs it. It then checks the contract's balance and displays it. Finally, it attempts to call the withdrawal function on the contract, but it catches and logs the error message if the withdrawal is not yet allowed (e.g., before `unlockTime`). +Create scripts to interact with deployed contracts, read state, execute transactions, and automate maintenance tasks using your generated ABI. -```javascript title="interact.js" -const hre = require('hardhat'); +- See practical tips in [Interact with Smart Contracts](/smart-contracts/dev-environments/hardhat/interact-with-a-contract/){target=\_blank}. -async function main() { - // Get the contract factory - const MyToken = await hre.ethers.getContractFactory('MyToken'); - // Replace with your deployed contract address - const contractAddress = 'INSERT_CONTRACT_ADDRESS'; +## Where to Go Next - // Attach to existing contract - const token = await MyToken.attach(contractAddress); +Ready to explore the specifics? Dive into these guides to continue your Hardhat journey: - // Get signers - const [deployer] = await hre.ethers.getSigners(); +
- // Read contract state - const name = await token.name(); - const symbol = await token.symbol(); - const totalSupply = await token.totalSupply(); - const balance = await token.balanceOf(deployer.address); +- Guide __Install and Configure Hardhat__ - console.log(`Token: ${name} (${symbol})`); - console.log( - `Total Supply: ${hre.ethers.formatUnits(totalSupply, 18)} tokens`, - ); - console.log( - `Deployer Balance: ${hre.ethers.formatUnits(balance, 18)} tokens`, - ); -} + --- -main().catch((error) => { - console.error(error); - process.exitCode = 1; -}); + Initialize your workspace and adjust project settings for this toolchain. -``` + [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/install-and-config/){target=\_blank} -Run your interaction script: +- Guide __Compile Smart Contracts__ -```bash -npx hardhat run scripts/interact.js --network polkadotHubTestnet -``` + --- -## Upgrading the Plugin + Configure compiler options and generate deployable artifacts. -If you already have a Hardhat Polkadot project and want to upgrade to a newer version of the plugin, to avoid errors (for example, `Cannot find module 'run-container'`), you can clean your dependencies by running the following commands: + [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\_blank} -```bash -rm -rf node_modules package-lock.json -``` +- Guide __Test Your Smart Contracts__ -After that, you can upgrade the plugin to the latest version by running the following commands: + --- -```bash -npm install --save-dev @parity/hardhat-polkadot@latest -npm install -``` + Build automated tests and run them against a local node. -Consider using [Node.js](https://nodejs.org/){target=\_blank} 22.18+ and [npm](https://www.npmjs.com/){target=\_blank} version 10.9.0+ to avoid issues with the plugin. + [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\_blank} -## Where to Go Next +- Guide __Deploy Smart Contracts__ -Hardhat provides a powerful environment for developing, testing, and deploying smart contracts on Polkadot Hub. Its plugin architecture allows seamless integration with PolkaVM through the `hardhat-resolc` and `hardhat-revive-node` plugins. + --- -Explore more about smart contracts through these resources: + Roll out contracts to local, test, or production networks with repeatable scripts. -
+ [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/deploy-a-contract/){target=\_blank} -- Guide __Get Started with Smart Contracts__ +- Guide __Interact with Smart Contracts__ --- - Learn how to get started with smart contracts + Script on-chain interactions and automate maintenance tasks. - [:octicons-arrow-right-24: Get Started](/smart-contracts/get-started/) + [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/interact-with-a-contract/){target=\_blank} - External __Hardhat Documentation__ --- - Learn more about Hardhat's advanced features and best practices. + Explore Hardhat's official documentation for advanced features and best practices. - [:octicons-arrow-right-24: Get Started](https://hardhat.org/docs){target=\_blank} + [:octicons-arrow-right-24: Learn More](https://hardhat.org/docs){target=\_blank} - External __OpenZeppelin Contracts__ --- - Test your skills by deploying contracts with prebuilt templates. + Use prebuilt, audited contract templates to bootstrap your projects. - [:octicons-arrow-right-24: Get Started](https://www.openzeppelin.com/solidity-contracts){target=\_blank} + [:octicons-arrow-right-24: Explore](https://www.openzeppelin.com/solidity-contracts){target=\_blank}
diff --git a/.ai/categories/tooling.md b/.ai/categories/tooling.md index d5f748831..8364c8937 100644 --- a/.ai/categories/tooling.md +++ b/.ai/categories/tooling.md @@ -10983,464 +10983,150 @@ Page Title: Use Hardhat with Polkadot Hub - Source (raw): https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-get-started.md - Canonical (HTML): https://docs.polkadot.com/smart-contracts/dev-environments/hardhat/get-started/ -- Summary: Learn how to create, compile, test, and deploy smart contracts on Polkadot Hub using Hardhat, a powerful development environment for blockchain developers. +- Summary: Overview of Hardhat, a powerful development environment for creating, compiling, testing, and deploying smart contracts on Polkadot Hub. # Hardhat -!!! smartcontract "PolkaVM Preview Release" - PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. -
-- :octicons-code-16:{ .lg .middle } __Test and Deploy with Hardhat__ - - --- - - Master Solidity smart contract development with Hardhat. Learn testing, deployment, and network interaction in one comprehensive tutorial. - -
- [:octicons-arrow-right-24: Get Started](/tutorials/smart-contracts/launch-your-first-project/test-and-deploy-with-hardhat){target=\_blank} - -
- -!!! note "Contracts Code Blob Size Disclaimer" - The maximum contract code blob size on Polkadot Hub networks is _100 kilobytes_, significantly larger than Ethereum’s EVM limit of 24 kilobytes. - - For detailed comparisons and migration guidelines, see the [EVM vs. PolkaVM](/polkadot-protocol/smart-contract-basics/evm-vs-polkavm/#current-memory-limits){target=\_blank} documentation page. - ## Overview -Hardhat is a robust development environment for Ethereum-compatible chains that makes smart contract development more efficient. This guide walks you through the essentials of using Hardhat to create, compile, test, and deploy smart contracts on Polkadot Hub. - -## Prerequisites - -Before getting started, ensure you have: - -- [Node.js](https://nodejs.org/){target=\_blank} (v16.0.0 or later) and npm installed. - - Note: Use Node.js 22.5+ and npm version 10.9.0+ to avoid issues with the Polkadot plugin. -- Basic understanding of Solidity programming. -- Some PAS test tokens to cover transaction fees (easily obtainable from the [Polkadot faucet](https://faucet.polkadot.io/?parachain=1111){target=\_blank}). To learn how to get test tokens, check out the [Test Tokens](/smart-contracts/connect/#test-tokens){target=\_blank} section. - -## Set Up Hardhat - -1. Create a new directory for your project and navigate into it: - - ```bash - mkdir hardhat-example - cd hardhat-example - ``` - -2. Initialize a new npm project: - - ```bash - npm init -y - ``` - -3. To interact with Polkadot, Hardhat requires the following plugin to compile contracts to PolkaVM bytecode and to spawn a local node compatible with PolkaVM: - - ```bash - npm install --save-dev @parity/hardhat-polkadot@0.1.9 - ``` - -4. Create a Hardhat project: - - ```bash - npx hardhat-polkadot init - ``` - - Select **Create a JavaScript project** when prompted and follow the instructions. After that, your project will be created with three main folders: - - - **`contracts`**: Where your Solidity smart contracts live. - - **`test`**: Contains your test files that validate contract functionality. - - **`ignition`**: Deployment modules for safely deploying your contracts to various networks. - -5. Add the following folder to the `.gitignore` file if it is not already there: - - ```bash - echo '/ignition/deployments/' >> .gitignore - ``` - -6. Finish the setup by installing all the dependencies: - - ```bash - npm install - ``` - - !!! note - This last step is needed to set up the `hardhat-polkadot` plugin. It will install the `@parity/hardhat-polkadot` package and all its dependencies. In the future, the plugin will handle this automatically. - -## Compile Your Contract - -The plugin will compile your Solidity contracts for Solidity versions `0.8.0` and higher to be PolkaVM compatible. When compiling your contract, there are two ways to configure your compilation process: - -- **npm compiler**: Uses library [@parity/resolc](https://www.npmjs.com/package/@parity/resolc){target=\_blank} for simplicity and ease of use. -- **Binary compiler**: Uses your local `resolc` binary directly for more control and configuration options. - -To compile your project, follow these instructions: - -1. Modify your Hardhat configuration file to specify which compilation process you will be using and activate the `polkavm` flag in the Hardhat network: - - === "npm Configuration" - - ```javascript title="hardhat.config.js" hl_lines="9-11 14" - // hardhat.config.js - require('@nomicfoundation/hardhat-toolbox'); - - require('@parity/hardhat-polkadot'); - - /** @type import('hardhat/config').HardhatUserConfig */ - module.exports = { - solidity: '0.8.28', - resolc: { - compilerSource: 'npm', - }, - networks: { - hardhat: { - polkavm: true, - }, - }, - }; - ``` - - === "Binary Configuration" - - ```javascript title="hardhat.config.js" hl_lines="9-14 17" - // hardhat.config.js - require('@nomicfoundation/hardhat-toolbox'); - - require('@parity/hardhat-polkadot'); - - /** @type import('hardhat/config').HardhatUserConfig */ - module.exports = { - solidity: '0.8.28', - resolc: { - compilerSource: 'binary', - settings: { - compilerPath: 'INSERT_PATH_TO_RESOLC_COMPILER', - }, - }, - networks: { - hardhat: { - polkavm: true, - }, - }, - }; - ``` - - For the binary configuration, replace `INSERT_PATH_TO_RESOLC_COMPILER` with the proper path to the binary. To obtain the binary, check the [releases](https://github.com/paritytech/revive/releases){target=\_blank} section of the `resolc` compiler, and download the latest version. - - The default settings used can be found in the [`constants.ts`](https://github.com/paritytech/hardhat-polkadot/blob/v0.1.5/packages/hardhat-polkadot-resolc/src/constants.ts#L8-L23){target=\_blank} file of the `hardhat-polkadot` source code. You can change them according to your project needs. Generally, the recommended settings for optimized outputs are the following: - - ```javascript title="hardhat.config.js" hl_lines="4-10" - resolc: { - ... - settings: { - optimizer: { - enabled: true, - parameters: 'z', - fallbackOz: true, - runs: 200, - }, - standardJson: true, - }, - ... - } - ``` - - You can check the [`ResolcConfig`](https://github.com/paritytech/hardhat-polkadot/blob/v0.1.5/packages/hardhat-polkadot-resolc/src/types.ts#L26){target=\_blank} for more information about compilation settings. - -2. Compile the contract with Hardhat: - - ```bash - npx hardhat compile - ``` - -3. After successful compilation, you'll see the artifacts generated in the `artifacts-pvm` directory: - - ```bash - ls artifacts-pvm/contracts/*.sol/ - ``` - - You should see JSON files containing the contract ABI and bytecode of the contracts you compiled. - -## Set Up a Testing Environment +Building on Polkadot Hub often starts with a Solidity codebase, and Hardhat keeps that workflow familiar while giving teams repeatable scripts, rich debugging, and CLI automation suited to the network's Ethereum-compatible execution layer. -Hardhat allows you to spin up a local testing environment to test and validate your smart contract functionalities before deploying to live networks. The `hardhat-polkadot` plugin provides the possibility to spin up a local node with an ETH-RPC adapter for running local tests. +Hardhat is a comprehensive development environment for building, testing, and deploying smart contracts. It provides developers with a complete toolkit including compilation, local testing nodes, debugging tools, and deployment automation. -For complete isolation and control over the testing environment, you can configure Hardhat to work with a fresh local Substrate node. This approach is ideal when you want to test in a clean environment without any existing state or when you need specific node configurations. +## Hardhat Workflow -Configure a local node setup by adding the node binary path along with the ETH-RPC adapter path: +From the first sketch of a contract to ongoing operations, Hardhat encourages a repeatable cycle: define the functionality you need, scaffold the workspace, write and refine Solidity code, compile it into deployable artifacts, validate behavior with automated tests, deploy confidently to the target network, and keep iterating with scripts that monitor and interact with what you shipped. -```javascript title="hardhat.config.js" hl_lines="12-20" -// hardhat.config.js -require('@nomicfoundation/hardhat-toolbox'); +```mermaid +flowchart LR + plan[Plan Contract] + scaffold[Scaffold Project] + develop[Write & Update Contracts] + compile[Compile Sources] + test[Run Automated Tests] + deploy[Deploy to Target Network] + operate[Interact & Monitor] -require('@parity/hardhat-polkadot'); -/** @type import('hardhat/config').HardhatUserConfig */ -module.exports = { - ... - networks: { - hardhat: { - polkavm: true, - nodeConfig: { - nodeBinaryPath: 'INSERT_PATH_TO_SUBSTRATE_NODE', - rpcPort: 8000, - dev: true, - }, - adapterConfig: { - adapterBinaryPath: 'INSERT_PATH_TO_ETH_RPC_ADAPTER', - dev: true, - }, - }, - }, -}; + plan --> scaffold --> develop --> compile --> test --> deploy --> operate ``` -Replace `INSERT_PATH_TO_SUBSTRATE_NODE` and `INSERT_PATH_TO_ETH_RPC_ADAPTER` with the actual paths to your compiled binaries. The `dev: true` flag configures both the node and adapter for development mode. To obtain these binaries, check the [Installation](/smart-contracts/dev-environments/local-dev-node/#install-the-substrate-node-and-eth-rpc-adapter){target=\_blank} section on the Local Development Node page. - -!!! warning - If you're using the default `hardhat.config.js` created by the `hardhat-polkadot` plugin, it includes a `forking` section pointing to the Polkadot Hub TestNet. When you run `npx hardhat node`, Hardhat will start a fork of that network. To use your local node instead, comment out the `forking` section; otherwise, `npx hardhat node` will continue to use the forked network even if a local node is defined in the configuration. +## Project Anatomy -Once configured, start your chosen testing environment with: +A freshly initialized Hardhat project keeps code, configuration, and automation neatly separated: -```bash -npx hardhat node +``` +. +├── contracts/ +│ └── MyContract.sol +├── ignition/ +│ └── modules/ +├── scripts/ +│ └── interact.js +├── test/ +│ └── MyContract.test.js +└── hardhat.config.js ``` -This command will launch either the forked network or local node (depending on your configuration) along with the ETH-RPC adapter, providing you with a complete testing environment ready for contract deployment and interaction. By default, the Substrate node will be running on `localhost:8000` and the ETH-RPC adapter on `localhost:8545`. - -The output will be something like this: - -
- npx hardhat node -
- Starting server at 127.0.0.1:8000 - ../bin/substrate-node --rpc-port=8000 --dev - Starting the Eth RPC Adapter at 127.0.0.1:8545 - ../bin/eth-rpc --node-rpc-url=ws://localhost:8000 --dev - 2025-05-29 13:00:32 Running in --dev mode, RPC CORS has been disabled. - 2025-05-29 13:00:32 Running in --dev mode, RPC CORS has been disabled. - 2025-05-29 13:00:32 🌐 Connecting to node at: ws://localhost:8000 ... - 2025-05-29 13:00:32 Substrate Node - 2025-05-29 13:00:32 ✌️ version 3.0.0-dev-f73c228b7a1 - 2025-05-29 13:00:32 ❤️ by Parity Technologies <admin@parity.io>, 2017-2025 - 2025-05-29 13:00:32 📋 Chain specification: Development - 2025-05-29 13:00:32 🏷 Node name: electric-activity-4221 - 2025-05-29 13:00:32 👤 Role: AUTHORITY - 2025-05-29 13:00:32 💾 Database: RocksDb at /var/folders/f4/7rdt2m9d7j361dm453cpggbm0000gn/T/substrateOaoecu/chains/dev/db/full - 2025-05-29 13:00:36 [0] 💸 generated 1 npos voters, 1 from validators and 0 nominators - ... -
- -## Test Your Contract - -When testing your contract, be aware that [`@nomicfoundation/hardhat-toolbox/network-helpers`](https://hardhat.org/hardhat-network-helpers/docs/overview){target=\_blank} is not fully compatible with Polkadot Hub's available RPCs. Specifically, Hardhat-only helpers like `time` and `loadFixture` may not work due to missing RPC calls in the node. For more details, refer to the [Compatibility](https://github.com/paritytech/hardhat-polkadot/tree/main/packages/hardhat-polkadot-node#compatibility){target=\_blank} section in the `hardhat-revive` docs. You should avoid using helpers like `time` and `loadFixture` when writing tests. - -To run your test: - -1. Update the `hardhat.config.js` file accordingly to the [Set Up a Testing Environment](#set-up-a-testing-environment) section. - -2. Execute the following command to run your tests: - - ```bash - npx hardhat test - ``` - -## Deploy to a Local Node - -Before deploying to a live network, you can deploy your contract to a local node using [Ignition](https://hardhat.org/ignition/docs/getting-started#overview){target=\_blank} modules: - -1. Update the Hardhat configuration file to add the local network as a target for local deployment: - - ```javascript title="hardhat.config.js" hl_lines="13-16" - // hardhat.config.js - require('@nomicfoundation/hardhat-toolbox'); - - require('@parity/hardhat-polkadot'); - /** @type import('hardhat/config').HardhatUserConfig */ - module.exports = { - ... - networks: { - hardhat: { - ... - }, - localNode: { - polkavm: true, - url: `http://127.0.0.1:8545`, - }, - }, - }, - }; - ``` - -2. Start a local node: - - ```bash - npx hardhat node - ``` - - This command will spawn a local Substrate node along with the ETH-RPC adapter. - -3. In a new terminal window, deploy the contract using Ignition: - - ```bash - npx hardhat ignition deploy ./ignition/modules/MyToken.js --network localNode - ``` - -## Deploying to a Live Network - -After testing your contract locally, you can deploy it to a live network. This guide will use the Polkadot Hub TestNet as the target network. Here's how to configure and deploy: +- `contracts/`: Solidity sources that define your smart contracts. +- `test/`: Automated tests written in JavaScript or TypeScript. +- `ignition/`: Deployment modules that orchestrate repeatable rollouts. +- `scripts/`: Utility scripts for deploying, validating, or interacting with contracts. +- `hardhat.config.js`: Central configuration for networks, compilers, and tooling. -1. Fund your deployment account with enough tokens to cover gas fees. In this case, the needed tokens are PAS (on Polkadot Hub TestNet). You can use the [Polkadot faucet](https://faucet.polkadot.io/?parachain=1111){target=\_blank} to obtain testing tokens. +## Core Functionalities -2. Export your private key and save it in your Hardhat environment: +### Project Setup - ```bash - npx hardhat vars set PRIVATE_KEY "INSERT_PRIVATE_KEY" - ``` +Hardhat provides a structured project initialization with organized folders for contracts, tests, deployment scripts, and automation. Scaffold a workspace quickly and keep configuration in a single `hardhat.config.js` file. - Replace `INSERT_PRIVATE_KEY` with your actual private key. For further details on private key exportation, refer to the article [How to export an account's private key](https://support.metamask.io/configure/accounts/how-to-export-an-accounts-private-key/){target=\_blank}. +- Learn more in the [Install and Configure](/smart-contracts/dev-environments/hardhat/install-and-config/){target=\_blank} guide. - !!! warning - Never reveal your private key, otherwise anyone with access to it can control your wallet and steal your funds. Store it securely and never share it publicly or commit it to version control systems. +### Contract Compilation -3. Check that your private key has been set up successfully by running: +Compile your Solidity smart contracts with configurable compiler versions and optimization settings. Hardhat captures build artifacts—ABI, bytecode, metadata—so you can deploy or interact with contracts from scripts and frontends. - ```bash - npx hardhat vars get PRIVATE_KEY - ``` +- Deep dive into compilation in [Compile Smart Contracts](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\_blank}. -4. Update your Hardhat configuration file with network settings for the Polkadot network you want to target: +### Testing Environment - ```javascript title="hardhat.config.js" hl_lines="18-22" - // hardhat.config.js - require('@nomicfoundation/hardhat-toolbox'); +Run automated tests against a local Hardhat node, simulate transactions, and debug contract behavior before deploying to public networks. The built-in testing stack uses familiar JavaScript tooling such as Mocha and Chai. - require('@parity/hardhat-polkadot'); - const { vars } = require('hardhat/config'); - - /** @type import('hardhat/config').HardhatUserConfig */ - module.exports = { - ... - networks: { - hardhat: { - ... - }, - localNode: { - ... - }, - polkadotHubTestnet: { - polkavm: true, - url: 'https://testnet-passet-hub-eth-rpc.polkadot.io', - accounts: [vars.get('PRIVATE_KEY')], - }, - }, - }, - }; - ``` +- Master testing capabilities in [Test Your Smart Contracts](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\_blank}. -6. Deploy your contract using Ignition: +### Deployment - ```bash - npx hardhat ignition deploy ./ignition/modules/MyToken.js --network polkadotHubTestnet - ``` +Ship your contracts with reusable deployment scripts or Hardhat Ignition modules. Manage credentials securely, target multiple networks, and repeat deployments with confidence. -## Interacting with Your Contract +- Follow deployment steps in [Deploy Smart Contracts](/smart-contracts/dev-environments/hardhat/deploy-a-contract/){target=\_blank}. -Once deployed, you can create a script to interact with your contract. To do so, create a file called `scripts/interact.js` and add some logic to interact with the contract. +### Contract Interaction -For example, for the default `MyToken.sol` contract, you can use the following file that connects to the contract at its address and retrieves the `unlockTime`, which represents when funds can be withdrawn. The script converts this timestamp into a readable date and logs it. It then checks the contract's balance and displays it. Finally, it attempts to call the withdrawal function on the contract, but it catches and logs the error message if the withdrawal is not yet allowed (e.g., before `unlockTime`). +Create scripts to interact with deployed contracts, read state, execute transactions, and automate maintenance tasks using your generated ABI. -```javascript title="interact.js" -const hre = require('hardhat'); +- See practical tips in [Interact with Smart Contracts](/smart-contracts/dev-environments/hardhat/interact-with-a-contract/){target=\_blank}. -async function main() { - // Get the contract factory - const MyToken = await hre.ethers.getContractFactory('MyToken'); - // Replace with your deployed contract address - const contractAddress = 'INSERT_CONTRACT_ADDRESS'; +## Where to Go Next - // Attach to existing contract - const token = await MyToken.attach(contractAddress); +Ready to explore the specifics? Dive into these guides to continue your Hardhat journey: - // Get signers - const [deployer] = await hre.ethers.getSigners(); +
- // Read contract state - const name = await token.name(); - const symbol = await token.symbol(); - const totalSupply = await token.totalSupply(); - const balance = await token.balanceOf(deployer.address); +- Guide __Install and Configure Hardhat__ - console.log(`Token: ${name} (${symbol})`); - console.log( - `Total Supply: ${hre.ethers.formatUnits(totalSupply, 18)} tokens`, - ); - console.log( - `Deployer Balance: ${hre.ethers.formatUnits(balance, 18)} tokens`, - ); -} + --- -main().catch((error) => { - console.error(error); - process.exitCode = 1; -}); + Initialize your workspace and adjust project settings for this toolchain. -``` + [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/install-and-config/){target=\_blank} -Run your interaction script: +- Guide __Compile Smart Contracts__ -```bash -npx hardhat run scripts/interact.js --network polkadotHubTestnet -``` + --- -## Upgrading the Plugin + Configure compiler options and generate deployable artifacts. -If you already have a Hardhat Polkadot project and want to upgrade to a newer version of the plugin, to avoid errors (for example, `Cannot find module 'run-container'`), you can clean your dependencies by running the following commands: + [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\_blank} -```bash -rm -rf node_modules package-lock.json -``` +- Guide __Test Your Smart Contracts__ -After that, you can upgrade the plugin to the latest version by running the following commands: + --- -```bash -npm install --save-dev @parity/hardhat-polkadot@latest -npm install -``` + Build automated tests and run them against a local node. -Consider using [Node.js](https://nodejs.org/){target=\_blank} 22.18+ and [npm](https://www.npmjs.com/){target=\_blank} version 10.9.0+ to avoid issues with the plugin. + [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\_blank} -## Where to Go Next +- Guide __Deploy Smart Contracts__ -Hardhat provides a powerful environment for developing, testing, and deploying smart contracts on Polkadot Hub. Its plugin architecture allows seamless integration with PolkaVM through the `hardhat-resolc` and `hardhat-revive-node` plugins. + --- -Explore more about smart contracts through these resources: + Roll out contracts to local, test, or production networks with repeatable scripts. -
+ [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/deploy-a-contract/){target=\_blank} -- Guide __Get Started with Smart Contracts__ +- Guide __Interact with Smart Contracts__ --- - Learn how to get started with smart contracts + Script on-chain interactions and automate maintenance tasks. - [:octicons-arrow-right-24: Get Started](/smart-contracts/get-started/) + [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/interact-with-a-contract/){target=\_blank} - External __Hardhat Documentation__ --- - Learn more about Hardhat's advanced features and best practices. + Explore Hardhat's official documentation for advanced features and best practices. - [:octicons-arrow-right-24: Get Started](https://hardhat.org/docs){target=\_blank} + [:octicons-arrow-right-24: Learn More](https://hardhat.org/docs){target=\_blank} - External __OpenZeppelin Contracts__ --- - Test your skills by deploying contracts with prebuilt templates. + Use prebuilt, audited contract templates to bootstrap your projects. - [:octicons-arrow-right-24: Get Started](https://www.openzeppelin.com/solidity-contracts){target=\_blank} + [:octicons-arrow-right-24: Explore](https://www.openzeppelin.com/solidity-contracts){target=\_blank}
diff --git a/.ai/pages/smart-contracts-dev-environments-hardhat-get-started.md b/.ai/pages/smart-contracts-dev-environments-hardhat-get-started.md index 2cfb71e8c..08e237fa1 100644 --- a/.ai/pages/smart-contracts-dev-environments-hardhat-get-started.md +++ b/.ai/pages/smart-contracts-dev-environments-hardhat-get-started.md @@ -1,465 +1,151 @@ --- title: Use Hardhat with Polkadot Hub -description: Learn how to create, compile, test, and deploy smart contracts on Polkadot Hub using Hardhat, a powerful development environment for blockchain developers. +description: Overview of Hardhat, a powerful development environment for creating, compiling, testing, and deploying smart contracts on Polkadot Hub. categories: Smart Contracts, Tooling url: https://docs.polkadot.com/smart-contracts/dev-environments/hardhat/get-started/ --- # Hardhat -!!! smartcontract "PolkaVM Preview Release" - PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. -
-- :octicons-code-16:{ .lg .middle } __Test and Deploy with Hardhat__ - - --- - - Master Solidity smart contract development with Hardhat. Learn testing, deployment, and network interaction in one comprehensive tutorial. - -
- [:octicons-arrow-right-24: Get Started](/tutorials/smart-contracts/launch-your-first-project/test-and-deploy-with-hardhat){target=\_blank} - -
- -!!! note "Contracts Code Blob Size Disclaimer" - The maximum contract code blob size on Polkadot Hub networks is _100 kilobytes_, significantly larger than Ethereum’s EVM limit of 24 kilobytes. - - For detailed comparisons and migration guidelines, see the [EVM vs. PolkaVM](/polkadot-protocol/smart-contract-basics/evm-vs-polkavm/#current-memory-limits){target=\_blank} documentation page. - ## Overview -Hardhat is a robust development environment for Ethereum-compatible chains that makes smart contract development more efficient. This guide walks you through the essentials of using Hardhat to create, compile, test, and deploy smart contracts on Polkadot Hub. - -## Prerequisites - -Before getting started, ensure you have: - -- [Node.js](https://nodejs.org/){target=\_blank} (v16.0.0 or later) and npm installed. - - Note: Use Node.js 22.5+ and npm version 10.9.0+ to avoid issues with the Polkadot plugin. -- Basic understanding of Solidity programming. -- Some PAS test tokens to cover transaction fees (easily obtainable from the [Polkadot faucet](https://faucet.polkadot.io/?parachain=1111){target=\_blank}). To learn how to get test tokens, check out the [Test Tokens](/smart-contracts/connect/#test-tokens){target=\_blank} section. - -## Set Up Hardhat - -1. Create a new directory for your project and navigate into it: - - ```bash - mkdir hardhat-example - cd hardhat-example - ``` - -2. Initialize a new npm project: - - ```bash - npm init -y - ``` - -3. To interact with Polkadot, Hardhat requires the following plugin to compile contracts to PolkaVM bytecode and to spawn a local node compatible with PolkaVM: - - ```bash - npm install --save-dev @parity/hardhat-polkadot@0.1.9 - ``` - -4. Create a Hardhat project: - - ```bash - npx hardhat-polkadot init - ``` - - Select **Create a JavaScript project** when prompted and follow the instructions. After that, your project will be created with three main folders: - - - **`contracts`**: Where your Solidity smart contracts live. - - **`test`**: Contains your test files that validate contract functionality. - - **`ignition`**: Deployment modules for safely deploying your contracts to various networks. - -5. Add the following folder to the `.gitignore` file if it is not already there: - - ```bash - echo '/ignition/deployments/' >> .gitignore - ``` - -6. Finish the setup by installing all the dependencies: - - ```bash - npm install - ``` - - !!! note - This last step is needed to set up the `hardhat-polkadot` plugin. It will install the `@parity/hardhat-polkadot` package and all its dependencies. In the future, the plugin will handle this automatically. - -## Compile Your Contract - -The plugin will compile your Solidity contracts for Solidity versions `0.8.0` and higher to be PolkaVM compatible. When compiling your contract, there are two ways to configure your compilation process: - -- **npm compiler**: Uses library [@parity/resolc](https://www.npmjs.com/package/@parity/resolc){target=\_blank} for simplicity and ease of use. -- **Binary compiler**: Uses your local `resolc` binary directly for more control and configuration options. - -To compile your project, follow these instructions: - -1. Modify your Hardhat configuration file to specify which compilation process you will be using and activate the `polkavm` flag in the Hardhat network: - - === "npm Configuration" - - ```javascript title="hardhat.config.js" hl_lines="9-11 14" - // hardhat.config.js - require('@nomicfoundation/hardhat-toolbox'); +Building on Polkadot Hub often starts with a Solidity codebase, and Hardhat keeps that workflow familiar while giving teams repeatable scripts, rich debugging, and CLI automation suited to the network's Ethereum-compatible execution layer. - require('@parity/hardhat-polkadot'); +Hardhat is a comprehensive development environment for building, testing, and deploying smart contracts. It provides developers with a complete toolkit including compilation, local testing nodes, debugging tools, and deployment automation. - /** @type import('hardhat/config').HardhatUserConfig */ - module.exports = { - solidity: '0.8.28', - resolc: { - compilerSource: 'npm', - }, - networks: { - hardhat: { - polkavm: true, - }, - }, - }; - ``` +## Hardhat Workflow - === "Binary Configuration" +From the first sketch of a contract to ongoing operations, Hardhat encourages a repeatable cycle: define the functionality you need, scaffold the workspace, write and refine Solidity code, compile it into deployable artifacts, validate behavior with automated tests, deploy confidently to the target network, and keep iterating with scripts that monitor and interact with what you shipped. - ```javascript title="hardhat.config.js" hl_lines="9-14 17" - // hardhat.config.js - require('@nomicfoundation/hardhat-toolbox'); +```mermaid +flowchart LR + plan[Plan Contract] + scaffold[Scaffold Project] + develop[Write & Update Contracts] + compile[Compile Sources] + test[Run Automated Tests] + deploy[Deploy to Target Network] + operate[Interact & Monitor] - require('@parity/hardhat-polkadot'); - - /** @type import('hardhat/config').HardhatUserConfig */ - module.exports = { - solidity: '0.8.28', - resolc: { - compilerSource: 'binary', - settings: { - compilerPath: 'INSERT_PATH_TO_RESOLC_COMPILER', - }, - }, - networks: { - hardhat: { - polkavm: true, - }, - }, - }; - ``` - - For the binary configuration, replace `INSERT_PATH_TO_RESOLC_COMPILER` with the proper path to the binary. To obtain the binary, check the [releases](https://github.com/paritytech/revive/releases){target=\_blank} section of the `resolc` compiler, and download the latest version. - - The default settings used can be found in the [`constants.ts`](https://github.com/paritytech/hardhat-polkadot/blob/v0.1.5/packages/hardhat-polkadot-resolc/src/constants.ts#L8-L23){target=\_blank} file of the `hardhat-polkadot` source code. You can change them according to your project needs. Generally, the recommended settings for optimized outputs are the following: - - ```javascript title="hardhat.config.js" hl_lines="4-10" - resolc: { - ... - settings: { - optimizer: { - enabled: true, - parameters: 'z', - fallbackOz: true, - runs: 200, - }, - standardJson: true, - }, - ... - } - ``` - - You can check the [`ResolcConfig`](https://github.com/paritytech/hardhat-polkadot/blob/v0.1.5/packages/hardhat-polkadot-resolc/src/types.ts#L26){target=\_blank} for more information about compilation settings. - -2. Compile the contract with Hardhat: - - ```bash - npx hardhat compile - ``` - -3. After successful compilation, you'll see the artifacts generated in the `artifacts-pvm` directory: - - ```bash - ls artifacts-pvm/contracts/*.sol/ - ``` - - You should see JSON files containing the contract ABI and bytecode of the contracts you compiled. - -## Set Up a Testing Environment - -Hardhat allows you to spin up a local testing environment to test and validate your smart contract functionalities before deploying to live networks. The `hardhat-polkadot` plugin provides the possibility to spin up a local node with an ETH-RPC adapter for running local tests. - -For complete isolation and control over the testing environment, you can configure Hardhat to work with a fresh local Substrate node. This approach is ideal when you want to test in a clean environment without any existing state or when you need specific node configurations. - -Configure a local node setup by adding the node binary path along with the ETH-RPC adapter path: - -```javascript title="hardhat.config.js" hl_lines="12-20" -// hardhat.config.js -require('@nomicfoundation/hardhat-toolbox'); - -require('@parity/hardhat-polkadot'); -/** @type import('hardhat/config').HardhatUserConfig */ -module.exports = { - ... - networks: { - hardhat: { - polkavm: true, - nodeConfig: { - nodeBinaryPath: 'INSERT_PATH_TO_SUBSTRATE_NODE', - rpcPort: 8000, - dev: true, - }, - adapterConfig: { - adapterBinaryPath: 'INSERT_PATH_TO_ETH_RPC_ADAPTER', - dev: true, - }, - }, - }, -}; + plan --> scaffold --> develop --> compile --> test --> deploy --> operate ``` -Replace `INSERT_PATH_TO_SUBSTRATE_NODE` and `INSERT_PATH_TO_ETH_RPC_ADAPTER` with the actual paths to your compiled binaries. The `dev: true` flag configures both the node and adapter for development mode. To obtain these binaries, check the [Installation](/smart-contracts/dev-environments/local-dev-node/#install-the-substrate-node-and-eth-rpc-adapter){target=\_blank} section on the Local Development Node page. - -!!! warning - If you're using the default `hardhat.config.js` created by the `hardhat-polkadot` plugin, it includes a `forking` section pointing to the Polkadot Hub TestNet. When you run `npx hardhat node`, Hardhat will start a fork of that network. To use your local node instead, comment out the `forking` section; otherwise, `npx hardhat node` will continue to use the forked network even if a local node is defined in the configuration. +## Project Anatomy -Once configured, start your chosen testing environment with: +A freshly initialized Hardhat project keeps code, configuration, and automation neatly separated: -```bash -npx hardhat node +``` +. +├── contracts/ +│ └── MyContract.sol +├── ignition/ +│ └── modules/ +├── scripts/ +│ └── interact.js +├── test/ +│ └── MyContract.test.js +└── hardhat.config.js ``` -This command will launch either the forked network or local node (depending on your configuration) along with the ETH-RPC adapter, providing you with a complete testing environment ready for contract deployment and interaction. By default, the Substrate node will be running on `localhost:8000` and the ETH-RPC adapter on `localhost:8545`. - -The output will be something like this: - -
- npx hardhat node -
- Starting server at 127.0.0.1:8000 - ../bin/substrate-node --rpc-port=8000 --dev - Starting the Eth RPC Adapter at 127.0.0.1:8545 - ../bin/eth-rpc --node-rpc-url=ws://localhost:8000 --dev - 2025-05-29 13:00:32 Running in --dev mode, RPC CORS has been disabled. - 2025-05-29 13:00:32 Running in --dev mode, RPC CORS has been disabled. - 2025-05-29 13:00:32 🌐 Connecting to node at: ws://localhost:8000 ... - 2025-05-29 13:00:32 Substrate Node - 2025-05-29 13:00:32 ✌️ version 3.0.0-dev-f73c228b7a1 - 2025-05-29 13:00:32 ❤️ by Parity Technologies <admin@parity.io>, 2017-2025 - 2025-05-29 13:00:32 📋 Chain specification: Development - 2025-05-29 13:00:32 🏷 Node name: electric-activity-4221 - 2025-05-29 13:00:32 👤 Role: AUTHORITY - 2025-05-29 13:00:32 💾 Database: RocksDb at /var/folders/f4/7rdt2m9d7j361dm453cpggbm0000gn/T/substrateOaoecu/chains/dev/db/full - 2025-05-29 13:00:36 [0] 💸 generated 1 npos voters, 1 from validators and 0 nominators - ... -
- -## Test Your Contract - -When testing your contract, be aware that [`@nomicfoundation/hardhat-toolbox/network-helpers`](https://hardhat.org/hardhat-network-helpers/docs/overview){target=\_blank} is not fully compatible with Polkadot Hub's available RPCs. Specifically, Hardhat-only helpers like `time` and `loadFixture` may not work due to missing RPC calls in the node. For more details, refer to the [Compatibility](https://github.com/paritytech/hardhat-polkadot/tree/main/packages/hardhat-polkadot-node#compatibility){target=\_blank} section in the `hardhat-revive` docs. You should avoid using helpers like `time` and `loadFixture` when writing tests. - -To run your test: - -1. Update the `hardhat.config.js` file accordingly to the [Set Up a Testing Environment](#set-up-a-testing-environment) section. - -2. Execute the following command to run your tests: - - ```bash - npx hardhat test - ``` - -## Deploy to a Local Node - -Before deploying to a live network, you can deploy your contract to a local node using [Ignition](https://hardhat.org/ignition/docs/getting-started#overview){target=\_blank} modules: - -1. Update the Hardhat configuration file to add the local network as a target for local deployment: - - ```javascript title="hardhat.config.js" hl_lines="13-16" - // hardhat.config.js - require('@nomicfoundation/hardhat-toolbox'); - - require('@parity/hardhat-polkadot'); - /** @type import('hardhat/config').HardhatUserConfig */ - module.exports = { - ... - networks: { - hardhat: { - ... - }, - localNode: { - polkavm: true, - url: `http://127.0.0.1:8545`, - }, - }, - }, - }; - ``` - -2. Start a local node: - - ```bash - npx hardhat node - ``` - - This command will spawn a local Substrate node along with the ETH-RPC adapter. - -3. In a new terminal window, deploy the contract using Ignition: - - ```bash - npx hardhat ignition deploy ./ignition/modules/MyToken.js --network localNode - ``` - -## Deploying to a Live Network - -After testing your contract locally, you can deploy it to a live network. This guide will use the Polkadot Hub TestNet as the target network. Here's how to configure and deploy: - -1. Fund your deployment account with enough tokens to cover gas fees. In this case, the needed tokens are PAS (on Polkadot Hub TestNet). You can use the [Polkadot faucet](https://faucet.polkadot.io/?parachain=1111){target=\_blank} to obtain testing tokens. +- `contracts/`: Solidity sources that define your smart contracts. +- `test/`: Automated tests written in JavaScript or TypeScript. +- `ignition/`: Deployment modules that orchestrate repeatable rollouts. +- `scripts/`: Utility scripts for deploying, validating, or interacting with contracts. +- `hardhat.config.js`: Central configuration for networks, compilers, and tooling. -2. Export your private key and save it in your Hardhat environment: +## Core Functionalities - ```bash - npx hardhat vars set PRIVATE_KEY "INSERT_PRIVATE_KEY" - ``` +### Project Setup - Replace `INSERT_PRIVATE_KEY` with your actual private key. For further details on private key exportation, refer to the article [How to export an account's private key](https://support.metamask.io/configure/accounts/how-to-export-an-accounts-private-key/){target=\_blank}. +Hardhat provides a structured project initialization with organized folders for contracts, tests, deployment scripts, and automation. Scaffold a workspace quickly and keep configuration in a single `hardhat.config.js` file. - !!! warning - Never reveal your private key, otherwise anyone with access to it can control your wallet and steal your funds. Store it securely and never share it publicly or commit it to version control systems. +- Learn more in the [Install and Configure](/smart-contracts/dev-environments/hardhat/install-and-config/){target=\_blank} guide. -3. Check that your private key has been set up successfully by running: +### Contract Compilation - ```bash - npx hardhat vars get PRIVATE_KEY - ``` +Compile your Solidity smart contracts with configurable compiler versions and optimization settings. Hardhat captures build artifacts—ABI, bytecode, metadata—so you can deploy or interact with contracts from scripts and frontends. -4. Update your Hardhat configuration file with network settings for the Polkadot network you want to target: +- Deep dive into compilation in [Compile Smart Contracts](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\_blank}. - ```javascript title="hardhat.config.js" hl_lines="18-22" - // hardhat.config.js - require('@nomicfoundation/hardhat-toolbox'); +### Testing Environment - require('@parity/hardhat-polkadot'); - const { vars } = require('hardhat/config'); +Run automated tests against a local Hardhat node, simulate transactions, and debug contract behavior before deploying to public networks. The built-in testing stack uses familiar JavaScript tooling such as Mocha and Chai. - /** @type import('hardhat/config').HardhatUserConfig */ - module.exports = { - ... - networks: { - hardhat: { - ... - }, - localNode: { - ... - }, - polkadotHubTestnet: { - polkavm: true, - url: 'https://testnet-passet-hub-eth-rpc.polkadot.io', - accounts: [vars.get('PRIVATE_KEY')], - }, - }, - }, - }; - ``` +- Master testing capabilities in [Test Your Smart Contracts](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\_blank}. -6. Deploy your contract using Ignition: +### Deployment - ```bash - npx hardhat ignition deploy ./ignition/modules/MyToken.js --network polkadotHubTestnet - ``` +Ship your contracts with reusable deployment scripts or Hardhat Ignition modules. Manage credentials securely, target multiple networks, and repeat deployments with confidence. -## Interacting with Your Contract +- Follow deployment steps in [Deploy Smart Contracts](/smart-contracts/dev-environments/hardhat/deploy-a-contract/){target=\_blank}. -Once deployed, you can create a script to interact with your contract. To do so, create a file called `scripts/interact.js` and add some logic to interact with the contract. +### Contract Interaction -For example, for the default `MyToken.sol` contract, you can use the following file that connects to the contract at its address and retrieves the `unlockTime`, which represents when funds can be withdrawn. The script converts this timestamp into a readable date and logs it. It then checks the contract's balance and displays it. Finally, it attempts to call the withdrawal function on the contract, but it catches and logs the error message if the withdrawal is not yet allowed (e.g., before `unlockTime`). +Create scripts to interact with deployed contracts, read state, execute transactions, and automate maintenance tasks using your generated ABI. -```javascript title="interact.js" -const hre = require('hardhat'); +- See practical tips in [Interact with Smart Contracts](/smart-contracts/dev-environments/hardhat/interact-with-a-contract/){target=\_blank}. -async function main() { - // Get the contract factory - const MyToken = await hre.ethers.getContractFactory('MyToken'); - // Replace with your deployed contract address - const contractAddress = 'INSERT_CONTRACT_ADDRESS'; +## Where to Go Next - // Attach to existing contract - const token = await MyToken.attach(contractAddress); +Ready to explore the specifics? Dive into these guides to continue your Hardhat journey: - // Get signers - const [deployer] = await hre.ethers.getSigners(); +
- // Read contract state - const name = await token.name(); - const symbol = await token.symbol(); - const totalSupply = await token.totalSupply(); - const balance = await token.balanceOf(deployer.address); +- Guide __Install and Configure Hardhat__ - console.log(`Token: ${name} (${symbol})`); - console.log( - `Total Supply: ${hre.ethers.formatUnits(totalSupply, 18)} tokens`, - ); - console.log( - `Deployer Balance: ${hre.ethers.formatUnits(balance, 18)} tokens`, - ); -} + --- -main().catch((error) => { - console.error(error); - process.exitCode = 1; -}); + Initialize your workspace and adjust project settings for this toolchain. -``` + [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/install-and-config/){target=\_blank} -Run your interaction script: +- Guide __Compile Smart Contracts__ -```bash -npx hardhat run scripts/interact.js --network polkadotHubTestnet -``` + --- -## Upgrading the Plugin + Configure compiler options and generate deployable artifacts. -If you already have a Hardhat Polkadot project and want to upgrade to a newer version of the plugin, to avoid errors (for example, `Cannot find module 'run-container'`), you can clean your dependencies by running the following commands: + [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\_blank} -```bash -rm -rf node_modules package-lock.json -``` +- Guide __Test Your Smart Contracts__ -After that, you can upgrade the plugin to the latest version by running the following commands: + --- -```bash -npm install --save-dev @parity/hardhat-polkadot@latest -npm install -``` + Build automated tests and run them against a local node. -Consider using [Node.js](https://nodejs.org/){target=\_blank} 22.18+ and [npm](https://www.npmjs.com/){target=\_blank} version 10.9.0+ to avoid issues with the plugin. + [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\_blank} -## Where to Go Next +- Guide __Deploy Smart Contracts__ -Hardhat provides a powerful environment for developing, testing, and deploying smart contracts on Polkadot Hub. Its plugin architecture allows seamless integration with PolkaVM through the `hardhat-resolc` and `hardhat-revive-node` plugins. + --- -Explore more about smart contracts through these resources: + Roll out contracts to local, test, or production networks with repeatable scripts. -
+ [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/deploy-a-contract/){target=\_blank} -- Guide __Get Started with Smart Contracts__ +- Guide __Interact with Smart Contracts__ --- - Learn how to get started with smart contracts + Script on-chain interactions and automate maintenance tasks. - [:octicons-arrow-right-24: Get Started](/smart-contracts/get-started/) + [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/interact-with-a-contract/){target=\_blank} - External __Hardhat Documentation__ --- - Learn more about Hardhat's advanced features and best practices. + Explore Hardhat's official documentation for advanced features and best practices. - [:octicons-arrow-right-24: Get Started](https://hardhat.org/docs){target=\_blank} + [:octicons-arrow-right-24: Learn More](https://hardhat.org/docs){target=\_blank} - External __OpenZeppelin Contracts__ --- - Test your skills by deploying contracts with prebuilt templates. + Use prebuilt, audited contract templates to bootstrap your projects. - [:octicons-arrow-right-24: Get Started](https://www.openzeppelin.com/solidity-contracts){target=\_blank} + [:octicons-arrow-right-24: Explore](https://www.openzeppelin.com/solidity-contracts){target=\_blank}
diff --git a/.ai/pages/smart-contracts-for-eth-devs-migration.md b/.ai/pages/smart-contracts-for-eth-devs-migration.md index 1586dde8f..58c91eb15 100644 --- a/.ai/pages/smart-contracts-for-eth-devs-migration.md +++ b/.ai/pages/smart-contracts-for-eth-devs-migration.md @@ -131,8 +131,8 @@ You typically don't need to do anything special, but be aware: Yes. Both backends support: - **Wallets**: [MetaMask](https://metamask.io/){target=\_blank}, [Talisman](https://talisman.xyz/){target=\_blank}, [SubWallet](https://www.subwallet.app/){target=\_blank} -- **Development frameworks**: [Hardhat](/smart-contracts/cookbook/smart-contracts/deploy-basic/hardhat/){target=\_blank}, [Remix](/smart-contracts/cookbook/smart-contracts/deploy-basic/remix/){target=\_blank} -- **Libraries**: [Ethers.js](/smart-contracts/libraries/ethers-js/){target=\_blank}, [Web3.js](/smart-contracts/libraries/web3-js/){target=\_blank}, [viem](/smart-contracts/libraries/viem/){target=\_blank} +- **Development frameworks**: [Hardhat](/smart-contracts/cookbook/smart-contracts/deploy-basic/hardhat/){target=\_blank}, [Foundry](/smart-contracts/cookbook/smart-contracts/deploy-basic/foundry/){target=\_blank}, [Remix](/smart-contracts/cookbook/smart-contracts/deploy-basic/remix/){target=\_blank} (just consider that for PVM bytecode, you will use the Polkadot version of the tooling) +- **Libraries**: [ethers.js](/smart-contracts/libraries/ethers-js/){target=\_blank}, [web3.js](/smart-contracts/libraries/web3-js/){target=\_blank}, [viem](/smart-contracts/libraries/viem/){target=\_blank} - **Testing tools**: Your existing test suites work Connect to Polkadot Hub's Ethereum JSON-RPC endpoint and use your familiar workflow. diff --git a/.ai/site-index.json b/.ai/site-index.json index 66fe0f3ff..0673effd0 100644 --- a/.ai/site-index.json +++ b/.ai/site-index.json @@ -671,7 +671,28 @@ ], "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/chain-interactions.md", "html_url": "https://docs.polkadot.com/chain-interactions/", - "preview": "Chain interactions form the foundation of building applications on Polkadot. Whether you're querying on-chain data, executing transactions, enabling cross-chain communication, or managing accounts, understanding how to interact with Polkadot-based chains is essential for application developers.", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-interoperability-send-messages", + "title": "Send XCM Messages", + "slug": "develop-interoperability-send-messages", + "categories": [ + "Basics", + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-send-messages.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/send-messages/", + "preview": "One of the core FRAME pallets that enables parachains to engage in cross-chain communication using the Cross-Consensus Message (XCM) format is [`pallet-xcm`](https://paritytech.github.io/polkadot-sdk/master/pallet_xcm/pallet/index.html){target=\\_blank}. It facilitates the sending, execution, and management of XCM messages, thereby allowing parachains to interact with other chains within the ecosystem. Additionally, `pallet-xcm`, also referred to as the XCM pallet, supports essential operations l", "outline": [ { "depth": 2, @@ -695,436 +716,515 @@ }, { "depth": 3, - "title": "Send Cross-Chain Transactions", - "anchor": "send-cross-chain-transactions" - }, - { - "depth": 3, - "title": "Manage Tokens", - "anchor": "manage-tokens" - }, - { - "depth": 3, - "title": "Manage Accounts", - "anchor": "manage-accounts" + "title": "Send", + "anchor": "send" }, { "depth": 2, - "title": "Development Tools and SDKs", - "anchor": "development-tools-and-sdks" - }, - { - "depth": 2, - "title": "Next Steps", - "anchor": "next-steps" + "title": "XCM Router", + "anchor": "xcm-router" } ], "stats": { - "chars": 6632, - "words": 831, - "headings": 9, - "estimated_token_count_total": 1488 + "chars": 7146, + "words": 978, + "headings": 7, + "estimated_token_count_total": 1635 }, - "hash": "sha256:ff1d106bd19f80de0c8108b0a658cfef83d73a4560a012ace9c842acdeefd1a5", + "hash": "sha256:46252e238b0b51105148dc622da6d8809c55ec11da7ec7b2953c35ca52f5f585", "token_estimator": "heuristic-v1" }, { - "id": "get-support-ai-ready-docs", - "title": "AI Ready Docs", - "slug": "get-support-ai-ready-docs", + "id": "develop-interoperability-test-and-debug", + "title": "Testing and Debugging", + "slug": "develop-interoperability-test-and-debug", "categories": [ - "Uncategorized" + "Basics", + "Polkadot Protocol" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/get-support-ai-ready-docs.md", - "html_url": "https://docs.polkadot.com/get-support/ai-ready-docs/", - "preview": "Polkadot provides files to make documentation content available in a structure optimized for use with large language models (LLMs) and AI tools. These resources help build AI assistants, power code search, or enable custom tooling trained on Polkadot’s documentation.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-test-and-debug.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/test-and-debug/", + "preview": "Cross-Consensus Messaging (XCM) is a core feature of the Polkadot ecosystem, enabling communication between parachains, relay chains, and system chains. To ensure the reliability of XCM-powered blockchains, thorough testing and debugging are essential before production deployment.", "outline": [ { "depth": 2, - "title": "How to Use These Files", - "anchor": "how-to-use-these-files" + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Download LLM Files", - "anchor": "download-llm-files" + "title": "XCM Emulator", + "anchor": "xcm-emulator" + }, + { + "depth": 3, + "title": "Manage Tokens", + "anchor": "manage-tokens" + }, + { + "depth": 3, + "title": "How Does It Work?", + "anchor": "how-does-it-work" } ], "stats": { - "chars": 7998, - "words": 825, - "headings": 2, - "estimated_token_count_total": 2232 + "chars": 7750, + "words": 838, + "headings": 4, + "estimated_token_count_total": 1491 }, - "hash": "sha256:5a8da69a5cea8bd598ee4d102b9abed5d1a29153802a567e22bb4ee720410b32", + "hash": "sha256:db37b2f5888f283b5eb5bd84a5f8c81fc66b2313e3f94f510a73dfeb310ae3f0", "token_estimator": "heuristic-v1" }, { - "id": "get-support-explore-resources", - "title": "Subscribe to Updates", - "slug": "get-support-explore-resources", + "id": "develop-interoperability-versions-v5-asset-claimer", + "title": "Asset claimer", + "slug": "develop-interoperability-versions-v5-asset-claimer", "categories": [ "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/get-support-explore-resources.md", - "html_url": "https://docs.polkadot.com/get-support/explore-resources/", - "preview": "Looking for answers beyond the documentation? These platforms are full of useful content and experienced developers sharing insights.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-versions-v5-asset-claimer.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/versions/v5/asset-claimer/", + "preview": "XCMv5 introduces the [`AssetClaimer`](https://paritytech.github.io/polkadot-sdk/master/staging_xcm/v5/enum.Hint.html#variant.AssetClaimer){target=\\_blank} execution hint through [`SetHints`](https://paritytech.github.io/polkadot-sdk/master/staging_xcm/v5/enum.Instruction.html#variant.SetHints){target=\\_blank}, which significantly simplifies the process of recovering trapped assets when XCM execution fails.", "outline": [ { "depth": 2, - "title": "🧠 Stack Exchange", - "anchor": "stack-exchange" + "title": "The problem before v5", + "anchor": "the-problem-before-v5" }, { "depth": 2, - "title": "🧵 Reddit: r/Polkadot", - "anchor": "reddit-rpolkadot" + "title": "The V5 Solution: `AssetClaimer` Hint", + "anchor": "the-v5-solution-assetclaimer-hint" }, { "depth": 2, - "title": "💬 Discord (Community Threads Only)", - "anchor": "discord-community-threads-only" + "title": "How it Improves the Situation", + "anchor": "how-it-improves-the-situation" }, { "depth": 2, - "title": "🎥 YouTube: @PolkadotNetwork", - "anchor": "youtube-polkadotnetwork" + "title": "Key Improvements", + "anchor": "key-improvements" }, { "depth": 2, - "title": "Community-Led Platforms and Ecosystem Updates", - "anchor": "community-led-platforms-and-ecosystem-updates" - }, - { - "depth": 3, - "title": "🔷 X (Twitter): Official Accounts", - "anchor": "x-twitter-official-accounts" + "title": "Best Practices", + "anchor": "best-practices" }, { "depth": 3, - "title": "🔁 X (Twitter): Community Accounts", - "anchor": "x-twitter-community-accounts" + "title": "Set Hint Early", + "anchor": "set-hint-early" }, { "depth": 3, - "title": "🗣️ Polkadot Forum", - "anchor": "polkadot-forum" + "title": "Use for Cross-Chain Transfers", + "anchor": "use-for-cross-chain-transfers" }, { "depth": 3, - "title": "🧑‍⚖️ Polkassembly: OpenGov", - "anchor": "polkassembly-opengov" + "title": "Consider Origin Preservation", + "anchor": "consider-origin-preservation" }, { - "depth": 3, - "title": "📸 Instagram", - "anchor": "instagram" + "depth": 2, + "title": "Migration Impact", + "anchor": "migration-impact" } ], "stats": { - "chars": 2426, - "words": 295, - "headings": 10, - "estimated_token_count_total": 579 + "chars": 5080, + "words": 582, + "headings": 9, + "estimated_token_count_total": 955 }, - "hash": "sha256:670221ac20ab1f1b550ba2a1db06cd924c24bd3afc4d8a768b617d8a409243cb", + "hash": "sha256:72ee7394fd1308c111a8d548cb4dc63c6b9bc5b6e2bb556dd1baacbaedb92286", "token_estimator": "heuristic-v1" }, { - "id": "get-support-get-in-touch", - "title": "Get in Touch", - "slug": "get-support-get-in-touch", + "id": "develop-interoperability-versions-v5-fees", + "title": "Fees", + "slug": "develop-interoperability-versions-v5-fees", "categories": [ "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/get-support-get-in-touch.md", - "html_url": "https://docs.polkadot.com/get-support/get-in-touch/", - "preview": "Use one of the channels below to get live technical support or ask questions.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-versions-v5-fees.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/versions/v5/fees/", + "preview": "XCM V5 introduces a new fee payment mechanism that simplifies and unifies the handling of fees across various XCM operations.", "outline": [ { "depth": 2, - "title": "Need Help Fast?", - "anchor": "need-help-fast" + "title": "Key Changes from V4", + "anchor": "key-changes-from-v4" + }, + { + "depth": 3, + "title": "BuyExecution vs. PayFees", + "anchor": "buyexecution-vs-payfees" + }, + { + "depth": 3, + "title": "PayFees Instruction", + "anchor": "payfees-instruction" }, { "depth": 2, - "title": "📱 Telegram: Polkadot Developer Support", - "anchor": "telegram-polkadot-developer-support" + "title": "Backward Compatibility", + "anchor": "backward-compatibility" }, { "depth": 2, - "title": "🔌 Discord: Polkadot Official Server", - "anchor": "discord-polkadot-official-server" + "title": "Migration Considerations", + "anchor": "migration-considerations" }, { "depth": 2, - "title": "🧬 Matrix: Polkadot Developer Support", - "anchor": "matrix-polkadot-developer-support" + "title": "`RefundSurplus` Instruction", + "anchor": "refundsurplus-instruction" } ], "stats": { - "chars": 1949, - "words": 258, - "headings": 4, - "estimated_token_count_total": 557 + "chars": 4145, + "words": 531, + "headings": 6, + "estimated_token_count_total": 876 }, - "hash": "sha256:993e93b05c8fbdfc2f7510c61ac86bc4c2ff0f03e573695b2f260933c8b62f78", + "hash": "sha256:d6cb22337280a19bdf24981dcba98f337d48ee4f79ce7ac040466ef1cb4b330b", "token_estimator": "heuristic-v1" }, { - "id": "get-support", - "title": "Support", - "slug": "get-support", + "id": "develop-interoperability-versions-v5-migration-guide", + "title": "Migration Guide (XCM V4 → XCM V5)", + "slug": "develop-interoperability-versions-v5-migration-guide", "categories": [ "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/get-support.md", - "html_url": "https://docs.polkadot.com/get-support/", - "preview": "Use one of the channels below to get live technical support or ask questions.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-versions-v5-migration-guide.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/versions/v5/migration-guide/", + "preview": "This guide helps migrate existing code that uses XCM from XCM V4 to XCM V5. Most XCM V4 code continues to work, but XCM V5 introduces powerful new patterns that improve flexibility and developer experience.", "outline": [ { "depth": 2, - "title": "Need More than Just Documentation?", - "anchor": "need-more-than-just-documentation" + "title": "When to migrate", + "anchor": "when-to-migrate" }, { "depth": 2, - "title": "What You Can Do Here", - "anchor": "what-you-can-do-here" + "title": "Key Changes", + "anchor": "key-changes" + }, + { + "depth": 3, + "title": "From Dedicated Extrinsics to Raw XCMs", + "anchor": "from-dedicated-extrinsics-to-raw-xcms" + }, + { + "depth": 3, + "title": "Unified Transfer Instructions", + "anchor": "unified-transfer-instructions" + }, + { + "depth": 3, + "title": "Predictable fee payment", + "anchor": "predictable-fee-payment" }, { "depth": 2, - "title": "Help Us Improve", - "anchor": "help-us-improve" + "title": "Migration Examples", + "anchor": "migration-examples" + }, + { + "depth": 3, + "title": "Simple Teleport", + "anchor": "simple-teleport" + }, + { + "depth": 3, + "title": "Example 2: Multi-Asset Transfer and a Transact", + "anchor": "example-2-multi-asset-transfer-and-a-transact" + }, + { + "depth": 2, + "title": "Breaking Changes to Watch Out For", + "anchor": "breaking-changes-to-watch-out-for" + }, + { + "depth": 3, + "title": "`fallback_max_weight` in `Transact`", + "anchor": "fallback_max_weight-in-transact" + }, + { + "depth": 3, + "title": "Network IDs Cleanup", + "anchor": "network-ids-cleanup" + }, + { + "depth": 2, + "title": "Next Steps", + "anchor": "next-steps" } ], "stats": { - "chars": 1658, - "words": 244, - "headings": 3, - "estimated_token_count_total": 280 + "chars": 13459, + "words": 1562, + "headings": 12, + "estimated_token_count_total": 2744 }, - "hash": "sha256:5bdc575ac798a971867a15651c2b4d5139bf0b1fe6854d1865deff280ae6d7f6", + "hash": "sha256:1a2d34ccab19bd71263763bbc294977acf34f5800398f51398753594cfc7d7a6", "token_estimator": "heuristic-v1" }, { - "id": "index", - "title": "Polkadot Developer Docs", - "slug": "index", + "id": "develop-interoperability-versions-v5-transact", + "title": "Transact", + "slug": "develop-interoperability-versions-v5-transact", "categories": [ "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/index.md", - "html_url": "https://docs.polkadot.com/index/", - "preview": "Explore everything you need to start building on top of Polkadot, a protocol that provides parachains with shared security and interoperability using XCM.", - "outline": [], - "stats": { - "chars": 0, - "words": 0, - "headings": 0, - "estimated_token_count_total": 0 - }, - "hash": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "token_estimator": "heuristic-v1" - }, - { - "id": "nodes-and-validators-run-a-node-bootnode", - "title": "Set Up a Bootnode", - "slug": "nodes-and-validators-run-a-node-bootnode", - "categories": [ - "Infrastructure" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-node-bootnode.md", - "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-node/bootnode/", - "preview": "Bootnodes are essential for helping blockchain nodes discover peers and join the network. When a node starts, it needs to find other nodes, and bootnodes provide an initial point of contact. Once connected, a node can expand its peer connections and play its role in the network, like participating as a validator.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-versions-v5-transact.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/versions/v5/transact/", + "preview": "XCM V5 improves the [`Transact`](https://paritytech.github.io/polkadot-sdk/master/staging_xcm/v5/enum.Instruction.html#variant.Transact){target=\\_blank} instruction by introducing optional weight specification through the `fallback_max_weight` parameter, making cross-chain calls more flexible and reliable.", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "Changes from V4", + "anchor": "changes-from-v4" }, { - "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "depth": 3, + "title": "Weight Parameter Evolution", + "anchor": "weight-parameter-evolution" }, { "depth": 2, - "title": "Accessing the Bootnode", - "anchor": "accessing-the-bootnode" + "title": "The `fallback_max_weight` Parameter", + "anchor": "the-fallback_max_weight-parameter" }, { - "depth": 2, - "title": "Node Key", - "anchor": "node-key" + "depth": 3, + "title": "When to Use `undefined`", + "anchor": "when-to-use-undefined" }, { - "depth": 2, - "title": "Running the Bootnode", - "anchor": "running-the-bootnode" + "depth": 3, + "title": "When to Specify Weight", + "anchor": "when-to-specify-weight" }, { "depth": 2, - "title": "Testing Bootnode Connection", - "anchor": "testing-bootnode-connection" + "title": "Benefits of the New Approach", + "anchor": "benefits-of-the-new-approach" }, { "depth": 3, - "title": "P2P", - "anchor": "p2p" + "title": "Problems Solved", + "anchor": "problems-solved" }, { "depth": 3, - "title": "P2P/WS", - "anchor": "p2pws" + "title": "XCM V5 Improvements", + "anchor": "xcm-v5-improvements" }, { - "depth": 3, - "title": "P2P/WSS", - "anchor": "p2pwss" + "depth": 2, + "title": "Migration Strategy", + "anchor": "migration-strategy" + }, + { + "depth": 2, + "title": "Fee Implications", + "anchor": "fee-implications" } ], "stats": { - "chars": 4538, - "words": 647, - "headings": 9, - "estimated_token_count_total": 1044 + "chars": 3637, + "words": 370, + "headings": 10, + "estimated_token_count_total": 608 }, - "hash": "sha256:d84a5af1a0237a911d25a68c077f508ebbce608f673ef4f9055e8e434daa96b9", + "hash": "sha256:7bba6105d99721373aa6f494627d20af97b1851c19703f26be26c32f0c83524b", "token_estimator": "heuristic-v1" }, { - "id": "nodes-and-validators-run-a-node-full-node", - "title": "Set Up a Node", - "slug": "nodes-and-validators-run-a-node-full-node", + "id": "develop-interoperability-versions-v5-transfers", + "title": "Transfers", + "slug": "develop-interoperability-versions-v5-transfers", "categories": [ - "Infrastructure" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-node-full-node.md", - "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-node/full-node/", - "preview": "Running a node on Polkadot provides direct interaction with the network, enhanced privacy, and full control over RPC requests, transactions, and data queries. As the backbone of the network, nodes ensure decentralized data propagation, transaction validation, and seamless communication across the ecosystem.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-versions-v5-transfers.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/versions/v5/transfers/", + "preview": "XCM V5 introduces the unified [`InitiateTransfer`](https://paritytech.github.io/polkadot-sdk/master/staging_xcm/v5/enum.Instruction.html#variant.InitiateTransfer){target=\\_blank} instruction that consolidates and enhances cross-chain transfer capabilities.", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "Changes from v4", + "anchor": "changes-from-v4" }, { - "depth": 2, - "title": "Set Up a Node", - "anchor": "set-up-a-node" + "depth": 3, + "title": "Instruction Consolidation", + "anchor": "instruction-consolidation" }, { "depth": 3, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "Enhanced Transfer Specification", + "anchor": "enhanced-transfer-specification" }, { - "depth": 3, - "title": "Install and Build the Polkadot Binary", - "anchor": "install-and-build-the-polkadot-binary" + "depth": 2, + "title": "Key Enhancements", + "anchor": "key-enhancements" }, { "depth": 3, - "title": "Use Docker", - "anchor": "use-docker" + "title": "Mixed Transfer Types", + "anchor": "mixed-transfer-types" }, { - "depth": 2, - "title": "Configure and Run Your Node", - "anchor": "configure-and-run-your-node" + "depth": 3, + "title": "Origin Preservation", + "anchor": "origin-preservation" }, { "depth": 3, - "title": "RPC Configurations", - "anchor": "rpc-configurations" + "title": "Integrated Fee Handling", + "anchor": "integrated-fee-handling" }, { "depth": 2, - "title": "Sync Your Node", - "anchor": "sync-your-node" + "title": "Backward Compatibility", + "anchor": "backward-compatibility" }, { - "depth": 3, - "title": "Connect to Your Node", - "anchor": "connect-to-your-node" + "depth": 2, + "title": "Migration Benefits", + "anchor": "migration-benefits" } ], "stats": { - "chars": 15944, - "words": 2481, + "chars": 3243, + "words": 336, "headings": 9, - "estimated_token_count_total": 4196 + "estimated_token_count_total": 1488 }, - "hash": "sha256:924fab837818610c825be5cefde0a7bacd46985b4fa05cfa0376a941105b9869", + "hash": "sha256:b79fe56c9604712825bdf30d17667fd8f237fce9691be0d8d042d38691dbba7a", "token_estimator": "heuristic-v1" }, { - "id": "nodes-and-validators-run-a-node-secure-wss", - "title": "Set Up Secure WebSocket", - "slug": "nodes-and-validators-run-a-node-secure-wss", + "id": "develop-interoperability-versions-v5-writing-xcm-programs", + "title": "Writing XCM Programs", + "slug": "develop-interoperability-versions-v5-writing-xcm-programs", "categories": [ - "Infrastructure" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-node-secure-wss.md", - "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-node/secure-wss/", - "preview": "Ensuring secure WebSocket communication is crucial for maintaining the integrity and security of a Polkadot or Kusama node when interacting with remote clients. This guide walks you through setting up a secure WebSocket (WSS) connection for your node by leveraging SSL encryption with popular web server proxies like nginx or Apache.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-versions-v5-writing-xcm-programs.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/versions/v5/writing-xcm-programs/", + "preview": "XCM V5 shifts the recommended approach from using dedicated extrinsics to executing raw XCM programs directly.", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "The Paradigm Shift", + "anchor": "the-paradigm-shift" }, { - "depth": 2, - "title": "Secure a WebSocket Port", - "anchor": "secure-a-websocket-port" + "depth": 3, + "title": "Previous Approach", + "anchor": "previous-approach" }, { "depth": 3, - "title": "Obtain an SSL Certificate", - "anchor": "obtain-an-ssl-certificate" + "title": "XCM V5 Recommendation", + "anchor": "xcm-v5-recommendation" }, { "depth": 2, - "title": "Install a Proxy Server", - "anchor": "install-a-proxy-server" + "title": "Execution Approach", + "anchor": "execution-approach" }, { - "depth": 3, - "title": "Use nginx", - "anchor": "use-nginx" + "depth": 2, + "title": "Benefits of Direct Execution", + "anchor": "benefits-of-direct-execution" }, { - "depth": 3, - "title": "Use Apache2", - "anchor": "use-apache2" - }, + "depth": 2, + "title": "Migration Considerations", + "anchor": "migration-considerations" + } + ], + "stats": { + "chars": 1830, + "words": 215, + "headings": 6, + "estimated_token_count_total": 348 + }, + "hash": "sha256:11cd8d428fa9c3e70490da5c63ce4597cd89ec46306d2bb49b016ced6aa68c3d", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-interoperability-versions-v5", + "title": "XCMv5", + "slug": "develop-interoperability-versions-v5", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-versions-v5.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/versions/v5/", + "preview": "The latest iteration of XCM is version 5. The main RFCs defining the changes in version 5 are the following:", + "outline": [ { "depth": 2, - "title": "Connect to the Node", - "anchor": "connect-to-the-node" + "title": "In This Section", + "anchor": "in-this-section" } ], "stats": { - "chars": 5568, - "words": 774, - "headings": 7, - "estimated_token_count_total": 1280 + "chars": 2970, + "words": 438, + "headings": 1, + "estimated_token_count_total": 12 }, - "hash": "sha256:992082e4ad87348b283f6c37ea886ae0e7bf016852b6470000876f3d169c65a4", + "hash": "sha256:3821c2ef97699091b76e1de58e6d95e866df69d39fca16f2a15c156b71da5b22", "token_estimator": "heuristic-v1" }, { - "id": "nodes-and-validators-run-a-validator-onboarding-and-offboarding-key-management", - "title": "Validator Key Management", - "slug": "nodes-and-validators-run-a-validator-onboarding-and-offboarding-key-management", + "id": "develop-interoperability-versions", + "title": "XCM Versions", + "slug": "develop-interoperability-versions", "categories": [ - "Infrastructure" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-key-management.md", - "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/onboarding-and-offboarding/key-management/", - "preview": "After setting up your node environment as shown in the [Setup](/nodes-and-validators/run-a-validator/onboarding-and-offboarding/set-up-validator/){target=\\_blank} section, you'll need to configure multiple keys for your validator to operate properly. This includes setting up session keys, which are essential for participating in the consensus process, and configuring a node key that maintains a stable network identity. This guide walks you through the key management process, showing you how to g", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-versions.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/versions/", + "preview": "XCM is a versioned language that evolves to meet the growing needs of cross-chain communication in the Polkadot ecosystem. Understanding XCM versioning is essential for developers building interoperable applications to keep up with the latest improvements.", + "outline": [ + { + "depth": 2, + "title": "In This Section", + "anchor": "in-this-section" + } + ], + "stats": { + "chars": 835, + "words": 114, + "headings": 1, + "estimated_token_count_total": 12 + }, + "hash": "sha256:634e299f347beb8ad690697943bb7f99915d62d40cda4227179619ed18abe2ff", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-interoperability-xcm-channels", + "title": "XCM Channels", + "slug": "develop-interoperability-xcm-channels", + "categories": [ + "Basics", + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-xcm-channels.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/xcm-channels/", + "preview": "Polkadot is designed to enable interoperability between its connected parachains. At the core of this interoperability is the [Cross-Consensus Message Format (XCM)](/parachains/interoperability/get-started/){target=\\_blank}, a standard language that allows parachains to communicate and interact with each other.", "outline": [ { "depth": 2, @@ -1133,59 +1233,45 @@ }, { "depth": 2, - "title": "Set Session Keys", - "anchor": "set-session-keys" - }, - { - "depth": 3, - "title": "Generate Session Keys", - "anchor": "generate-session-keys" + "title": "Establishing HRMP Channels", + "anchor": "establishing-hrmp-channels" }, { "depth": 3, - "title": "Submit Transaction to Set Keys", - "anchor": "submit-transaction-to-set-keys" + "title": "Relay Chain Parameters", + "anchor": "relay-chain-parameters" }, { "depth": 3, - "title": "Verify Session Key Setup", - "anchor": "verify-session-key-setup" + "title": "Dispatching Extrinsics", + "anchor": "dispatching-extrinsics" }, { "depth": 2, - "title": "Set the Node Key", - "anchor": "set-the-node-key" - }, - { - "depth": 3, - "title": "Generate the Node Key", - "anchor": "generate-the-node-key" - }, - { - "depth": 3, - "title": "Set Node Key", - "anchor": "set-node-key" + "title": "Where to Go Next", + "anchor": "where-to-go-next" } ], "stats": { - "chars": 8227, - "words": 1183, - "headings": 8, - "estimated_token_count_total": 1840 + "chars": 6422, + "words": 870, + "headings": 5, + "estimated_token_count_total": 1365 }, - "hash": "sha256:0fb5a83835aab263c0b9aa886028c8aa8a2d6d0897d7b9fff4b5258835d30dfe", + "hash": "sha256:5f8fa89fc725c5c559975012fe2f9ae92c3b62f10024b5688dcd118331118f1a", "token_estimator": "heuristic-v1" }, { - "id": "nodes-and-validators-run-a-validator-onboarding-and-offboarding-set-up-validator", - "title": "Set Up a Validator", - "slug": "nodes-and-validators-run-a-validator-onboarding-and-offboarding-set-up-validator", + "id": "develop-interoperability-xcm-config", + "title": "XCM Config", + "slug": "develop-interoperability-xcm-config", "categories": [ - "Infrastructure" + "Reference", + "Polkadot Protocol" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-set-up-validator.md", - "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/onboarding-and-offboarding/set-up-validator/", - "preview": "Setting up a Polkadot validator node is essential for securing the network and earning staking rewards. This guide walks you through the technical steps to set up a validator, from installing the necessary software to managing keys and synchronizing your node with the chain.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-xcm-config.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/xcm-config/", + "preview": "The [XCM executor](https://paritytech.github.io/polkadot-sdk/master/staging_xcm_executor/index.html){target=\\_blank} is a crucial component responsible for interpreting and executing XCM messages (XCMs) with Polkadot SDK-based chains. It processes and manages XCM instructions, ensuring they are executed correctly and in sequentially. Adhering to the [Cross-Consensus Virtual Machine (XCVM) specification](https://paritytech.github.io/xcm-docs/overview/xcvm.html#the-xcvm){target=\\_blank}, the XCM e", "outline": [ { "depth": 2, @@ -1194,79 +1280,49 @@ }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" - }, - { - "depth": 2, - "title": "Initial Setup", - "anchor": "initial-setup" - }, - { - "depth": 3, - "title": "Install Network Time Protocol Client", - "anchor": "install-network-time-protocol-client" - }, - { - "depth": 3, - "title": "Verify Landlock is Activated", - "anchor": "verify-landlock-is-activated" + "title": "XCM Executor Configuration", + "anchor": "xcm-executor-configuration" }, { "depth": 2, - "title": "Install the Polkadot Binaries", - "anchor": "install-the-polkadot-binaries" - }, - { - "depth": 3, - "title": "Install from Official Releases", - "anchor": "install-from-official-releases" - }, - { - "depth": 3, - "title": "Install with Package Managers", - "anchor": "install-with-package-managers" - }, - { - "depth": 3, - "title": "Install with Ansible", - "anchor": "install-with-ansible" + "title": "Config Items", + "anchor": "config-items" }, { "depth": 3, - "title": "Install with Docker", - "anchor": "install-with-docker" + "title": "Inner Config", + "anchor": "inner-config" }, { "depth": 3, - "title": "Build from Sources", - "anchor": "build-from-sources" + "title": "Outer Config", + "anchor": "outer-config" }, { "depth": 2, - "title": "Verify Installation", - "anchor": "verify-installation" + "title": "Multiple Implementations", + "anchor": "multiple-implementations" } ], "stats": { - "chars": 11921, - "words": 1678, - "headings": 12, - "estimated_token_count_total": 2592 + "chars": 21710, + "words": 2458, + "headings": 6, + "estimated_token_count_total": 4979 }, - "hash": "sha256:d2c1c91734bc8185057d8eeec6829ea91e0316f7ba884c5dc3922a5e5778815e", + "hash": "sha256:ed3b7c8101b69f9c907cca7c5edfef67fdb5e7bc3c8df8d9fbad297f9dd3c80a", "token_estimator": "heuristic-v1" }, { - "id": "nodes-and-validators-run-a-validator-onboarding-and-offboarding-start-validating", - "title": "Start Validating", - "slug": "nodes-and-validators-run-a-validator-onboarding-and-offboarding-start-validating", + "id": "develop-interoperability-xcm-guides-from-apps-claiming-trapped-assets", + "title": "Claiming Trapped Assets", + "slug": "develop-interoperability-xcm-guides-from-apps-claiming-trapped-assets", "categories": [ - "Infrastructure" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-start-validating.md", - "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/onboarding-and-offboarding/start-validating/", - "preview": "After configuring your node keys as shown in the [Key Management](/nodes-and-validators/run-a-validator/onboarding-and-offboarding/key-management/){target=\\_blank} section and ensuring your system is set up, you're ready to begin the validator setup process. This guide will walk you through choosing a network, synchronizing your node with the blockchain, bonding your DOT tokens, and starting your validator.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-xcm-guides-from-apps-claiming-trapped-assets.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/xcm-guides/from-apps/claiming-trapped-assets/", + "preview": "When XCM execution fails or succeeds, leftover assets can become \"trapped\" on the destination chain. These assets are held by the system but are not accessible through normal means. XCM provides mechanisms to claim these trapped assets and recover them. This guide details the process and required steps to claim trapped assets.", "outline": [ { "depth": 2, @@ -1275,84 +1331,54 @@ }, { "depth": 2, - "title": "Choose a Network", - "anchor": "choose-a-network" + "title": "Trapped Assets Causes", + "anchor": "trapped-assets-causes" }, { "depth": 2, - "title": "Synchronize Chain Data", - "anchor": "synchronize-chain-data" + "title": "The `ClaimAsset` Instruction", + "anchor": "the-claimasset-instruction" }, { "depth": 3, - "title": "Database Snapshot Services", - "anchor": "database-snapshot-services" - }, - { - "depth": 2, - "title": "Bond DOT", - "anchor": "bond-dot" + "title": "Parameters", + "anchor": "parameters" }, { "depth": 3, - "title": "Bonding DOT on Polkadot.js Apps", - "anchor": "bonding-dot-on-polkadotjs-apps" + "title": "Basic Claiming Process", + "anchor": "basic-claiming-process" }, { "depth": 2, - "title": "Validate", - "anchor": "validate" - }, - { - "depth": 3, - "title": "Verify Sync via Telemetry", - "anchor": "verify-sync-via-telemetry" - }, - { - "depth": 3, - "title": "Activate using Polkadot.js Apps", - "anchor": "activate-using-polkadotjs-apps" - }, - { - "depth": 3, - "title": "Monitor Validation Status and Slots", - "anchor": "monitor-validation-status-and-slots" + "title": "The `AssetClaimer` Hint", + "anchor": "the-assetclaimer-hint" }, { "depth": 2, - "title": "Run a Validator Using Systemd", - "anchor": "run-a-validator-using-systemd" - }, - { - "depth": 3, - "title": "Create the Systemd Service File", - "anchor": "create-the-systemd-service-file" - }, - { - "depth": 3, - "title": "Run the Service", - "anchor": "run-the-service" + "title": "Best practices", + "anchor": "best-practices" } ], "stats": { - "chars": 15820, - "words": 2446, - "headings": 13, - "estimated_token_count_total": 3861 + "chars": 8821, + "words": 958, + "headings": 7, + "estimated_token_count_total": 1781 }, - "hash": "sha256:67a43e787805244196e1e9cb962069292c69ed5fdb1110df57c942019892b953", + "hash": "sha256:35c71a215558cd0642d363e4515ad240093995d42720e6495cd2994c859243e4", "token_estimator": "heuristic-v1" }, { - "id": "nodes-and-validators-run-a-validator-onboarding-and-offboarding-stop-validating", - "title": "Stop Validating", - "slug": "nodes-and-validators-run-a-validator-onboarding-and-offboarding-stop-validating", + "id": "develop-interoperability-xcm-guides-from-apps-fees", + "title": "Fees", + "slug": "develop-interoperability-xcm-guides-from-apps-fees", "categories": [ - "Infrastructure" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-stop-validating.md", - "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/onboarding-and-offboarding/stop-validating/", - "preview": "If you're ready to stop validating on Polkadot, there are essential steps to ensure a smooth transition while protecting your funds and account integrity. Whether you're taking a break for maintenance or unbonding entirely, you'll need to chill your validator, purge session keys, and unbond your tokens. This guide explains how to use Polkadot's tools and extrinsics to safely withdraw from validation activities, safeguarding your account's future usability.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-xcm-guides-from-apps-fees.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/xcm-guides/from-apps/fees/", + "preview": "In blockchain systems, fees are crucial. They prevent malicious actors from exhausting the results of the network, making such attacks expensive. The XCM subsystem has its own way of dealing with fees, flexible enough to allow feeless execution in situations that warrant it.", "outline": [ { "depth": 2, @@ -1361,44 +1387,44 @@ }, { "depth": 2, - "title": "Pause Versus Stop", - "anchor": "pause-versus-stop" + "title": "Execution", + "anchor": "execution" }, { "depth": 2, - "title": "Chill Validator", - "anchor": "chill-validator" + "title": "Delivery", + "anchor": "delivery" }, { "depth": 2, - "title": "Purge Validator Session Keys", - "anchor": "purge-validator-session-keys" + "title": "PayFees", + "anchor": "payfees" }, { "depth": 2, - "title": "Unbond Your Tokens", - "anchor": "unbond-your-tokens" + "title": "Estimations", + "anchor": "estimations" } ], "stats": { - "chars": 3230, - "words": 500, + "chars": 6291, + "words": 925, "headings": 5, - "estimated_token_count_total": 629 + "estimated_token_count_total": 1447 }, - "hash": "sha256:0d6db361bfa7a3022849bbe39989bfdac0429537498d7f534adadec131afca98", + "hash": "sha256:0e39aee80fbcf3dfaa19133f31d664914ed45b42a1a929270f05d8ae876b89e2", "token_estimator": "heuristic-v1" }, { - "id": "nodes-and-validators-run-a-validator-operational-tasks-general-management", - "title": "General Management", - "slug": "nodes-and-validators-run-a-validator-operational-tasks-general-management", + "id": "develop-interoperability-xcm-guides-from-apps-transact", + "title": "Transact", + "slug": "develop-interoperability-xcm-guides-from-apps-transact", "categories": [ - "Infrastructure" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-operational-tasks-general-management.md", - "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/operational-tasks/general-management/", - "preview": "Validator performance is pivotal in maintaining the security and stability of the Polkadot network. As a validator, optimizing your setup ensures efficient transaction processing, minimizes latency, and maintains system reliability during high-demand periods. Proper configuration and proactive monitoring also help mitigate risks like slashing and service interruptions.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-xcm-guides-from-apps-transact.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/xcm-guides/from-apps/transact/", + "preview": "The [`Transact`](https://paritytech.github.io/polkadot-sdk/master/staging_xcm/v5/opaque/type.Instruction.html#variant.Transact){target=\\_blank} instruction enables arbitrary cross-chain execution of pallet calls or smart contract functions. It's one of the most powerful XCM instructions because it allows you to perform any operation that would normally be done locally on a remote chain. However, it requires knowing the implementation details of the destination chain.", "outline": [ { "depth": 2, @@ -1407,83 +1433,214 @@ }, { "depth": 2, - "title": "Configuration Optimization", - "anchor": "configuration-optimization" + "title": "Chain-Specific Knowledge Required", + "anchor": "chain-specific-knowledge-required" }, { "depth": 3, - "title": "Deactivate Simultaneous Multithreading", - "anchor": "deactivate-simultaneous-multithreading" + "title": "Required Knowledge", + "anchor": "required-knowledge" }, { "depth": 3, - "title": "Deactivate Automatic NUMA Balancing", - "anchor": "deactivate-automatic-numa-balancing" + "title": "Examples of Chain-Specific Requirements", + "anchor": "examples-of-chain-specific-requirements" }, { - "depth": 3, - "title": "Spectre and Meltdown Mitigations", - "anchor": "spectre-and-meltdown-mitigations" + "depth": 2, + "title": "Origin Considerations", + "anchor": "origin-considerations" + } + ], + "stats": { + "chars": 4444, + "words": 562, + "headings": 5, + "estimated_token_count_total": 1082 + }, + "hash": "sha256:ec82957c768c2c07a272e7a28659c812b223df836e21372b1642f0bb249d7b39", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-interoperability-xcm-guides-from-apps-transfers", + "title": "Transfers", + "slug": "develop-interoperability-xcm-guides-from-apps-transfers", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-xcm-guides-from-apps-transfers.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/xcm-guides/from-apps/transfers/", + "preview": "The [`InitiateTransfer`](https://paritytech.github.io/polkadot-sdk/master/staging_xcm/v5/enum.Instruction.html#variant.InitiateTransfer){target=\\_blank} instruction is the primary mechanism for cross-chain transfers in XCM. It provides a unified interface for different types of transfers and brings additional functionalities not possible with previous instruction versions.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Monitor Your Node", - "anchor": "monitor-your-node" + "title": "Transfer Types", + "anchor": "transfer-types" }, { - "depth": 3, - "title": "Environment Setup", - "anchor": "environment-setup" + "depth": 2, + "title": "Remote Fees", + "anchor": "remote-fees" }, { - "depth": 3, - "title": "Install and Configure Prometheus", - "anchor": "install-and-configure-prometheus" + "depth": 2, + "title": "Origin Preservation", + "anchor": "origin-preservation" + } + ], + "stats": { + "chars": 20264, + "words": 2291, + "headings": 4, + "estimated_token_count_total": 4178 + }, + "hash": "sha256:d480791a76082937b47c77f7cf3794e701f193452ed347fcb1c04c3c67577bf5", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-interoperability-xcm-guides-from-apps", + "title": "From Apps", + "slug": "develop-interoperability-xcm-guides-from-apps", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-xcm-guides-from-apps.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/xcm-guides/from-apps/", + "preview": "This section shows how to interact with XCM from applications, providing practical guidance for implementing cross-chain functionality in your dApps and services.", + "outline": [ + { + "depth": 2, + "title": "In This Section", + "anchor": "in-this-section" + } + ], + "stats": { + "chars": 511, + "words": 70, + "headings": 1, + "estimated_token_count_total": 12 + }, + "hash": "sha256:63584f5b1dab7b67b18b35b47dfc19d00ad5c013804772f0d653a11ac3fca38d", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-interoperability-xcm-guides", + "title": "XCM Guides", + "slug": "develop-interoperability-xcm-guides", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-xcm-guides.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/xcm-guides/", + "preview": "This section provides comprehensive guides for implementing XCM functionality, including application development patterns, fee management, asset transfers, and cross-chain transaction handling.", + "outline": [ + { + "depth": 2, + "title": "In This Section", + "anchor": "in-this-section" }, { - "depth": 3, - "title": "Start Prometheus", - "anchor": "start-prometheus" + "depth": 2, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 1663, + "words": 215, + "headings": 2, + "estimated_token_count_total": 340 + }, + "hash": "sha256:d4c2d7fd46ddf60f638f948c88ba3940de6d69f140923ba8df52ed787b0afede", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-interoperability-xcm-runtime-apis", + "title": "XCM Runtime APIs", + "slug": "develop-interoperability-xcm-runtime-apis", + "categories": [ + "Reference", + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability-xcm-runtime-apis.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/xcm-runtime-apis/", + "preview": "Runtime APIs allow node-side code to extract information from the runtime state. While simple storage access retrieves stored values directly, runtime APIs enable arbitrary computation, making them a powerful tool for interacting with the chain's state.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Dry Run API", + "anchor": "dry-run-api" }, { "depth": 3, - "title": "Install and Configure Grafana", - "anchor": "install-and-configure-grafana" + "title": "Dry Run Call", + "anchor": "dry-run-call" }, { "depth": 3, - "title": "Install and Configure Alertmanager", - "anchor": "install-and-configure-alertmanager" + "title": "Dry Run XCM", + "anchor": "dry-run-xcm" }, { "depth": 2, - "title": "Secure Your Validator", - "anchor": "secure-your-validator" + "title": "XCM Payment API", + "anchor": "xcm-payment-api" }, { "depth": 3, - "title": "Key Management", - "anchor": "key-management" + "title": "Query Acceptable Payment Assets", + "anchor": "query-acceptable-payment-assets" }, { "depth": 3, - "title": "Signing Outside the Client", - "anchor": "signing-outside-the-client" + "title": "Query XCM Weight", + "anchor": "query-xcm-weight" }, { "depth": 3, - "title": "Secure-Validator Mode", - "anchor": "secure-validator-mode" + "title": "Query Weight to Asset Fee", + "anchor": "query-weight-to-asset-fee" }, { "depth": 3, - "title": "Linux Best Practices", - "anchor": "linux-best-practices" - }, + "title": "Query Delivery Fees", + "anchor": "query-delivery-fees" + } + ], + "stats": { + "chars": 33176, + "words": 3163, + "headings": 9, + "estimated_token_count_total": 6510 + }, + "hash": "sha256:353ad782303ef79bce1262bfa945e6f11b3c3c9ca1edf5705b778c46bada6200", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-interoperability", + "title": "Interoperability", + "slug": "develop-interoperability", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-interoperability.md", + "html_url": "https://docs.polkadot.com/develop/interoperability/", + "preview": "This section covers everything you need to know about building and implementing [Cross-Consensus Messaging (XCM)](/parachains/interoperability/get-started/){target=\\_blank} solutions in the Polkadot ecosystem. Whether you're working on establishing cross-chain channels, sending and receiving XCM messages, or testing and debugging your cross-chain configurations, you'll find the essential resources and tools here to support your interoperability needs, regardless of your development focus.", + "outline": [ { - "depth": 3, - "title": "Validator Best Practices", - "anchor": "validator-best-practices" + "depth": 2, + "title": "In This Section", + "anchor": "in-this-section" }, { "depth": 2, @@ -1492,24 +1649,25 @@ } ], "stats": { - "chars": 26673, - "words": 3357, - "headings": 18, - "estimated_token_count_total": 5866 + "chars": 2363, + "words": 323, + "headings": 2, + "estimated_token_count_total": 402 }, - "hash": "sha256:81eb0fe77f05155f1ec0511cd066120fc9994961e9d91e21b6666377e65b4586", + "hash": "sha256:5da6bdeec1deee5ef3d7ab1a43f546067bcef91acdc67df4ce114ee8f8669e82", "token_estimator": "heuristic-v1" }, { - "id": "nodes-and-validators-run-a-validator-operational-tasks-pause-validating", - "title": "Pause Validating", - "slug": "nodes-and-validators-run-a-validator-operational-tasks-pause-validating", + "id": "develop-networks", + "title": "Networks", + "slug": "develop-networks", "categories": [ - "Infrastructure" + "Basics", + "Networks" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-operational-tasks-pause-validating.md", - "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/operational-tasks/pause-validating/", - "preview": "If you need to temporarily stop participating in Polkadot staking activities without fully unbonding your funds, chilling your account allows you to do so efficiently. Chilling removes your node from active validation or nomination in the next era while keeping your funds bonded, making it ideal for planned downtimes or temporary pauses.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-networks.md", + "html_url": "https://docs.polkadot.com/develop/networks/", + "preview": "The Polkadot ecosystem consists of multiple networks designed to support different stages of blockchain development, from main networks to test networks. Each network serves a unique purpose, providing developers with flexible environments for building, testing, and deploying blockchain applications.", "outline": [ { "depth": 2, @@ -1518,49 +1676,60 @@ }, { "depth": 2, - "title": "Chilling Your Node", - "anchor": "chilling-your-node" + "title": "Production Networks", + "anchor": "production-networks" }, { - "depth": 2, - "title": "Staking Election Timing Considerations", - "anchor": "staking-election-timing-considerations" + "depth": 3, + "title": "Polkadot", + "anchor": "polkadot" }, { - "depth": 2, - "title": "Chilling as a Nominator", - "anchor": "chilling-as-a-nominator" + "depth": 3, + "title": "Kusama", + "anchor": "kusama" }, { "depth": 2, - "title": "Chilling as a Validator", - "anchor": "chilling-as-a-validator" + "title": "Test Networks", + "anchor": "test-networks" + }, + { + "depth": 3, + "title": "Westend", + "anchor": "westend" + }, + { + "depth": 3, + "title": "Paseo", + "anchor": "paseo" }, { "depth": 2, - "title": "Chill Other", - "anchor": "chill-other" + "title": "Additional Resources", + "anchor": "additional-resources" } ], "stats": { - "chars": 4439, - "words": 679, - "headings": 6, - "estimated_token_count_total": 861 + "chars": 6097, + "words": 664, + "headings": 8, + "estimated_token_count_total": 1520 }, - "hash": "sha256:1af153570ce57bd5b52d08493a300996765686f2a6d04519a2e0aa91191612c1", + "hash": "sha256:ed09ef7a6abe21204006186fd5791ada7597688fad67e30244dc449c51330309", "token_estimator": "heuristic-v1" }, { - "id": "nodes-and-validators-run-a-validator-operational-tasks-upgrade-your-node", - "title": "Upgrade a Validator Node", - "slug": "nodes-and-validators-run-a-validator-operational-tasks-upgrade-your-node", + "id": "develop-parachains-customize-parachain-overview", + "title": "Overview of FRAME", + "slug": "develop-parachains-customize-parachain-overview", "categories": [ - "Infrastructure" + "Basics", + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-operational-tasks-upgrade-your-node.md", - "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/operational-tasks/upgrade-your-node/", - "preview": "Upgrading a Polkadot validator node is essential for staying current with network updates and maintaining optimal performance. This guide covers routine and extended maintenance scenarios, including software upgrades and major server changes. Following these steps, you can manage session keys and transition smoothly between servers without risking downtime, slashing, or network disruptions. The process requires strategic planning, especially if you need to perform long-lead maintenance, ensuring", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-parachains-customize-parachain-overview.md", + "html_url": "https://docs.polkadot.com/develop/parachains/customize-parachain/overview/", + "preview": "The runtime is the heart of any Polkadot SDK-based blockchain, handling the essential logic that governs state changes and transaction processing. With Polkadot SDK’s [FRAME (Framework for Runtime Aggregation of Modularized Entities)](/reference/glossary/#frame-framework-for-runtime-aggregation-of-modularized-entities){target=\\_bank}, developers gain access to a powerful suite of tools for building custom blockchain runtimes. FRAME offers a modular architecture, featuring reusable pallets and su", "outline": [ { "depth": 2, @@ -1569,54 +1738,95 @@ }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "FRAME Runtime Architecture", + "anchor": "frame-runtime-architecture" }, { - "depth": 2, - "title": "Session Keys", - "anchor": "session-keys" + "depth": 3, + "title": "Pallets", + "anchor": "pallets" + }, + { + "depth": 3, + "title": "Support Libraries", + "anchor": "support-libraries" }, { "depth": 2, - "title": "Keystore", - "anchor": "keystore" + "title": "Compose a Runtime with Pallets", + "anchor": "compose-a-runtime-with-pallets" }, { "depth": 2, - "title": "Upgrade Using Backup Validator", - "anchor": "upgrade-using-backup-validator" + "title": "Starting from Templates", + "anchor": "starting-from-templates" }, { "depth": 3, - "title": "Session `N`", - "anchor": "session-n" + "title": "Solochain Templates", + "anchor": "solochain-templates" }, { "depth": 3, - "title": "Session `N+3`", - "anchor": "session-n3" + "title": "Parachain Templates", + "anchor": "parachain-templates" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" } ], "stats": { - "chars": 5650, - "words": 851, - "headings": 7, - "estimated_token_count_total": 1185 + "chars": 9427, + "words": 1267, + "headings": 9, + "estimated_token_count_total": 2019 }, - "hash": "sha256:888230b128d8c648c4f06a18d3b1d1b06dd1bf22a0de4add1f28210ffccb2549", + "hash": "sha256:d03ea172f2af9f4648e730d60033a80c2c1e64efa9241fed0c1ba40a5f846ae5", "token_estimator": "heuristic-v1" }, { - "id": "nodes-and-validators-run-a-validator-requirements", - "title": "Validator Requirements", - "slug": "nodes-and-validators-run-a-validator-requirements", + "id": "develop-parachains-customize-parachain", + "title": "Customize Your Parachain", + "slug": "develop-parachains-customize-parachain", "categories": [ - "Infrastructure" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-requirements.md", - "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/requirements/", - "preview": "Running a validator in the Polkadot ecosystem is essential for maintaining network security and decentralization. Validators are responsible for validating transactions and adding new blocks to the chain, ensuring the system operates smoothly. In return for their services, validators earn rewards. However, the role comes with inherent risks, such as slashing penalties for misbehavior or technical failures. If you’re new to validation, starting on Kusama provides a lower-stakes environment to gai", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-parachains-customize-parachain.md", + "html_url": "https://docs.polkadot.com/develop/parachains/customize-parachain/", + "preview": "Learn how to build a custom parachain with Polkadot SDK's FRAME framework, which includes pallet development, testing, smart contracts, and runtime customization. Pallets are modular components within the FRAME ecosystem that contain specific blockchain functionalities. This modularity grants developers increased flexibility and control around which behaviors to include in the core logic of their parachain.", + "outline": [ + { + "depth": 2, + "title": "In This Section", + "anchor": "in-this-section" + }, + { + "depth": 2, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 1899, + "words": 259, + "headings": 2, + "estimated_token_count_total": 335 + }, + "hash": "sha256:9a08b66442c564c7116c686d8914b74ad617326f450d0894b05e753462f69aac", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-parachains-deployment-build-deterministic-runtime", + "title": "Build a deterministic runtime", + "slug": "develop-parachains-deployment-build-deterministic-runtime", + "categories": [ + "Parachains" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-parachains-deployment-build-deterministic-runtime.md", + "html_url": "https://docs.polkadot.com/develop/parachains/deployment/build-deterministic-runtime/", + "preview": "By default, the Rust compiler produces optimized Wasm binaries. These binaries are suitable for working in an isolated environment, such as local development. However, the Wasm binaries the compiler builds by default aren't guaranteed to be deterministically reproducible. Each time the compiler generates the Wasm runtime, it might produce a slightly different Wasm byte code. This is problematic in a blockchain network where all nodes must use exactly the same raw chain specification file.", "outline": [ { "depth": 2, @@ -1630,105 +1840,59 @@ }, { "depth": 2, - "title": "Minimum Hardware Requirements", - "anchor": "minimum-hardware-requirements" + "title": "Tooling for Wasm Runtime", + "anchor": "tooling-for-wasm-runtime" }, { "depth": 2, - "title": "VPS Provider List", - "anchor": "vps-provider-list" + "title": "Working with the Docker Container", + "anchor": "working-with-the-docker-container" }, { "depth": 2, - "title": "Minimum Bond Requirement", - "anchor": "minimum-bond-requirement" - } - ], - "stats": { - "chars": 6842, - "words": 944, - "headings": 5, - "estimated_token_count_total": 1485 - }, - "hash": "sha256:46435b97c37ef6798d2c75c69df31c5e5f07e04b218c370ec5af6b1838d43aac", - "token_estimator": "heuristic-v1" - }, - { - "id": "nodes-and-validators-run-a-validator-staking-mechanics-offenses-and-slashes", - "title": "Offenses and Slashes", - "slug": "nodes-and-validators-run-a-validator-staking-mechanics-offenses-and-slashes", - "categories": [ - "Infrastructure" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-staking-mechanics-offenses-and-slashes.md", - "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/staking-mechanics/offenses-and-slashes/", - "preview": "In Polkadot's Nominated Proof of Stake (NPoS) system, validator misconduct is deterred through a combination of slashing, disabling, and reputation penalties. Validators and nominators who stake tokens face consequences for validator misbehavior, which range from token slashes to restrictions on network participation.", - "outline": [ - { - "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "Prepare the Environment", + "anchor": "prepare-the-environment" }, { "depth": 2, - "title": "Offenses", - "anchor": "offenses" - }, - { - "depth": 3, - "title": "Invalid Votes", - "anchor": "invalid-votes" - }, - { - "depth": 3, - "title": "Equivocations", - "anchor": "equivocations" + "title": "Start a Deterministic Build", + "anchor": "start-a-deterministic-build" }, { "depth": 2, - "title": "Penalties", - "anchor": "penalties" + "title": "Use srtool in GitHub Actions", + "anchor": "use-srtool-in-github-actions" }, { - "depth": 3, - "title": "Slashing", - "anchor": "slashing" - }, - { - "depth": 3, - "title": "Disabling", - "anchor": "disabling" - }, - { - "depth": 3, - "title": "Reputation Changes", - "anchor": "reputation-changes" + "depth": 2, + "title": "Use the srtool Image via Docker Hub", + "anchor": "use-the-srtool-image-via-docker-hub" }, { "depth": 3, - "title": "Penalties by Offense", - "anchor": "penalties-by-offense" + "title": "Naming Convention for Images", + "anchor": "naming-convention-for-images" } ], "stats": { - "chars": 15427, - "words": 2103, + "chars": 8470, + "words": 1227, "headings": 9, - "estimated_token_count_total": 3409 + "estimated_token_count_total": 1944 }, - "hash": "sha256:abe6bedab04f463ec07f554977b8d6355a5d2fad9bcda01cbe58568152295daa", + "hash": "sha256:4fc8cab40e982e860b64d9aede1058fe7fa82ec321ac215b919db00c4df0a9c0", "token_estimator": "heuristic-v1" }, { - "id": "nodes-and-validators-run-a-validator-staking-mechanics-rewards", - "title": "Rewards Payout", - "slug": "nodes-and-validators-run-a-validator-staking-mechanics-rewards", + "id": "develop-parachains-deployment-coretime-renewal", + "title": "Coretime Renewal", + "slug": "develop-parachains-deployment-coretime-renewal", "categories": [ - "Infrastructure" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-staking-mechanics-rewards.md", - "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/staking-mechanics/rewards/", - "preview": "Understanding how rewards are distributed to validators and nominators is essential for network participants. In Polkadot and Kusama, validators earn rewards based on their era points, which are accrued through actions like block production and parachain validation.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-parachains-deployment-coretime-renewal.md", + "html_url": "https://docs.polkadot.com/develop/parachains/deployment/coretime-renewal/", + "preview": "Coretime can be purchased in bulk for a period of 28 days, providing access to Polkadot's shared security and interoperability for Polkadot parachains. The bulk purchase of coretime includes a rent-control mechanism that keeps future purchases within a predictable price range of the initial purchase. This allows cores to be renewed at a known price without competing against other participants in the open market.", "outline": [ { "depth": 2, @@ -1737,49 +1901,69 @@ }, { "depth": 2, - "title": "Era Points", - "anchor": "era-points" + "title": "Bulk Sale Phases", + "anchor": "bulk-sale-phases" }, { "depth": 2, - "title": "Reward Variance", - "anchor": "reward-variance" + "title": "Renewal Timing", + "anchor": "renewal-timing" }, { "depth": 2, - "title": "Payout Scheme", - "anchor": "payout-scheme" + "title": "Manual Renewal", + "anchor": "manual-renewal" }, { "depth": 2, - "title": "Running Multiple Validators", - "anchor": "running-multiple-validators" + "title": "Auto-Renewal", + "anchor": "auto-renewal" }, { - "depth": 2, - "title": "Nominators and Validator Payments", - "anchor": "nominators-and-validator-payments" + "depth": 3, + "title": "Set Up an HRMP Channel", + "anchor": "set-up-an-hrmp-channel" + }, + { + "depth": 3, + "title": "Fund Sovereign Account", + "anchor": "fund-sovereign-account" + }, + { + "depth": 3, + "title": "Auto-Renewal Configuration Extrinsics", + "anchor": "auto-renewal-configuration-extrinsics" + }, + { + "depth": 3, + "title": "Construct the Enable Auto-Renewal Extrinsic", + "anchor": "construct-the-enable-auto-renewal-extrinsic" + }, + { + "depth": 3, + "title": "Submit the XCM from Your Parachain", + "anchor": "submit-the-xcm-from-your-parachain" } ], "stats": { - "chars": 10976, - "words": 1753, - "headings": 6, - "estimated_token_count_total": 2588 + "chars": 13912, + "words": 1894, + "headings": 10, + "estimated_token_count_total": 3068 }, - "hash": "sha256:d5d6d72eb2cf10f624d84c65f2274f7df90acb5d071bf170bc8eae8d98a810a5", + "hash": "sha256:9918593a46c12a1756552ddfaf7421ad6262600735b6f1fec030911420fe1736", "token_estimator": "heuristic-v1" }, { - "id": "parachains-customize-runtime-add-existing-pallets", - "title": "Add an Existing Pallet to the Runtime", - "slug": "parachains-customize-runtime-add-existing-pallets", + "id": "develop-parachains-deployment-generate-chain-specs", + "title": "Generate Chain Specs", + "slug": "develop-parachains-deployment-generate-chain-specs", "categories": [ "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime-add-existing-pallets.md", - "html_url": "https://docs.polkadot.com/parachains/customize-runtime/add-existing-pallets/", - "preview": "The [Polkadot SDK Parachain Template](https://github.com/paritytech/polkadot-sdk-parachain-template){target=\\_blank} provides a functional runtime that includes default [FRAME](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/polkadot_sdk/frame_runtime/index.html){target=\\_blank} development modules ([pallets](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/polkadot_sdk/frame_runtime/pallet/index.html){target=\\_blank}) to help you get started building a custo", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-parachains-deployment-generate-chain-specs.md", + "html_url": "https://docs.polkadot.com/develop/parachains/deployment/generate-chain-specs/", + "preview": "A chain specification collects information that describes a Polkadot SDK-based network. A chain specification is a crucial parameter when starting a node, providing the genesis configurations, bootnodes, and other parameters relating to that particular network. It identifies the network a blockchain node connects to, the other nodes it initially communicates with, and the initial state that nodes must agree on to produce blocks.", "outline": [ { "depth": 2, @@ -1788,63 +1972,53 @@ }, { "depth": 2, - "title": "Check Prerequisites", - "anchor": "check-prerequisites" + "title": "Node Settings Customization", + "anchor": "node-settings-customization" }, { "depth": 2, - "title": "Add an Existing Polkadot SDK Pallet to Your Runtime", - "anchor": "add-an-existing-polkadot-sdk-pallet-to-your-runtime" - }, - { - "depth": 3, - "title": "Add an Existing Pallet as a Dependency", - "anchor": "add-an-existing-pallet-as-a-dependency" + "title": "Genesis Configuration Customization", + "anchor": "genesis-configuration-customization" }, { - "depth": 3, - "title": "Enable Standard Library Features", - "anchor": "enable-standard-library-features" + "depth": 2, + "title": "Declaring Storage Items for a Runtime", + "anchor": "declaring-storage-items-for-a-runtime" }, { - "depth": 3, - "title": "Review the Config Trait", - "anchor": "review-the-config-trait" + "depth": 2, + "title": "Chain Specification JSON Format", + "anchor": "chain-specification-json-format" }, { - "depth": 3, - "title": "Implement the Config Trait", - "anchor": "implement-the-config-trait" + "depth": 2, + "title": "Creating a Custom Chain Specification", + "anchor": "creating-a-custom-chain-specification" }, { "depth": 3, - "title": "Add to Runtime Construct", - "anchor": "add-to-runtime-construct" + "title": "Plain Chain Specifications", + "anchor": "plain-chain-specifications" }, { "depth": 3, - "title": "Verify the Runtime Compiles", - "anchor": "verify-the-runtime-compiles" + "title": "Raw Chain Specifications", + "anchor": "raw-chain-specifications" }, { "depth": 2, - "title": "Run Your Chain Locally", - "anchor": "run-your-chain-locally" - }, - { - "depth": 3, - "title": "Generate a Chain Specification", - "anchor": "generate-a-chain-specification" + "title": "Generate Custom Keys for Your Collator", + "anchor": "generate-custom-keys-for-your-collator" }, { "depth": 3, - "title": "Start the Parachain Node", - "anchor": "start-the-parachain-node" + "title": "Add Invulnerables", + "anchor": "add-invulnerables" }, { "depth": 3, - "title": "Interact with the Pallet", - "anchor": "interact-with-the-pallet" + "title": "Add Session Keys", + "anchor": "add-session-keys" }, { "depth": 2, @@ -1853,24 +2027,24 @@ } ], "stats": { - "chars": 11924, - "words": 1585, - "headings": 14, - "estimated_token_count_total": 2724 + "chars": 14573, + "words": 1931, + "headings": 12, + "estimated_token_count_total": 3025 }, - "hash": "sha256:93d123cbaaccc2515b4a70be8e1327b4f75b1051d16c5e3daf5a2035af7b7ca3", + "hash": "sha256:a60fe36a5ba6d1cafe12eab75300afd24a46d3ace1e791087adb7e3e538afcc3", "token_estimator": "heuristic-v1" }, { - "id": "parachains-customize-runtime-add-pallet-instances", - "title": "Add Multiple Pallet Instances", - "slug": "parachains-customize-runtime-add-pallet-instances", + "id": "develop-parachains-deployment-manage-coretime", + "title": "Manage Coretime", + "slug": "develop-parachains-deployment-manage-coretime", "categories": [ "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime-add-pallet-instances.md", - "html_url": "https://docs.polkadot.com/parachains/customize-runtime/add-pallet-instances/", - "preview": "The [Polkadot SDK Parachain Template](https://github.com/paritytech/polkadot-sdk-parachain-template){target=\\_blank} provides a solid foundation for building custom parachains. While most pallets are typically included as single instances within a runtime, some scenarios benefit from running multiple instances of the same pallet with different configurations. This approach lets you reuse pallet logic without reimplementing it, enabling diverse functionality from a single codebase.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-parachains-deployment-manage-coretime.md", + "html_url": "https://docs.polkadot.com/develop/parachains/deployment/manage-coretime/", + "preview": "Coretime management involves manipulating [bulk coretime](/parachains/launch-a-parachain/obtain-coretime/#bulk-coretime){target=\\_blank} regions to optimize resource allocation and usage. Regions represent allocated computational resources on cores and can be modified through various operations to meet different project requirements. This guide covers the essential operations for managing your coretime regions effectively.", "outline": [ { "depth": 2, @@ -1879,98 +2053,300 @@ }, { "depth": 2, - "title": "Check Prerequisites", - "anchor": "check-prerequisites" + "title": "Transfer", + "anchor": "transfer" }, { "depth": 2, - "title": "Understanding Instantiable Pallets", - "anchor": "understanding-instantiable-pallets" + "title": "Partition", + "anchor": "partition" }, { - "depth": 3, - "title": "Identifying an Instantiable Pallet", - "anchor": "identifying-an-instantiable-pallet" + "depth": 2, + "title": "Interlace", + "anchor": "interlace" }, { - "depth": 3, - "title": "How Instance Generics Work", - "anchor": "how-instance-generics-work" + "depth": 2, + "title": "Assign", + "anchor": "assign" }, { "depth": 2, - "title": "Add Multiple Instances of a Pallet to Your Runtime", - "anchor": "add-multiple-instances-of-a-pallet-to-your-runtime" - }, + "title": "Pool", + "anchor": "pool" + } + ], + "stats": { + "chars": 5736, + "words": 841, + "headings": 6, + "estimated_token_count_total": 1289 + }, + "hash": "sha256:39c58dbe2ddcd542d7074d08d72f1811318dc8a3130419025480fd5cbe9fc3e7", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-parachains-deployment", + "title": "Deployment", + "slug": "develop-parachains-deployment", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-parachains-deployment.md", + "html_url": "https://docs.polkadot.com/develop/parachains/deployment/", + "preview": "Learn how to prepare your blockchain for deployment using the Polkadot SDK, including building deterministic Wasm runtimes and generating chain specifications.", + "outline": [ { - "depth": 3, - "title": "Add the Pallet as a Dependency", - "anchor": "add-the-pallet-as-a-dependency" + "depth": 2, + "title": "Deployment Process", + "anchor": "deployment-process" }, { - "depth": 3, - "title": "Enable Standard Library Features", - "anchor": "enable-standard-library-features" + "depth": 2, + "title": "In This Section", + "anchor": "in-this-section" }, { - "depth": 3, - "title": "Review the Config Trait", - "anchor": "review-the-config-trait" - }, + "depth": 2, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 4818, + "words": 659, + "headings": 3, + "estimated_token_count_total": 966 + }, + "hash": "sha256:b25618dc598f4f946da06f854211645768214e0b51d06b684b0cab668b66124c", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-parachains-maintenance-configure-asynchronous-backing", + "title": "Configure Asynchronous Backing", + "slug": "develop-parachains-maintenance-configure-asynchronous-backing", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-parachains-maintenance-configure-asynchronous-backing.md", + "html_url": "https://docs.polkadot.com/develop/parachains/maintenance/configure-asynchronous-backing/", + "preview": "This guide applies to parachain projects based on Cumulus that started in 2023 or earlier, where the backing process was synchronous, allowing parablocks to be built only on the latest relay chain block. In contrast, async backing will enable collators to build parablocks on older relay chain blocks and create pipelines of multiple pending parablocks. This parallel block generation increases efficiency and throughput.", + "outline": [ { - "depth": 3, - "title": "Define Pallet Parameters", - "anchor": "define-pallet-parameters" + "depth": 2, + "title": "Introduction", + "anchor": "introduction" }, { - "depth": 3, - "title": "Create Instance Type Definitions", - "anchor": "create-instance-type-definitions" + "depth": 2, + "title": "Prerequisite", + "anchor": "prerequisite" }, { - "depth": 3, - "title": "Implement Config Trait for First Instance", - "anchor": "implement-config-trait-for-first-instance" + "depth": 2, + "title": "Phase 1 - Update Parachain Runtime", + "anchor": "phase-1-update-parachain-runtime" }, { - "depth": 3, - "title": "Implement Config Trait for Second Instance", - "anchor": "implement-config-trait-for-second-instance" + "depth": 2, + "title": "Phase 2 - Update Parachain Nodes", + "anchor": "phase-2-update-parachain-nodes" }, { - "depth": 3, - "title": "Add Instances to Runtime Construct", - "anchor": "add-instances-to-runtime-construct" + "depth": 2, + "title": "Phase 3 - Activate Async Backing", + "anchor": "phase-3-activate-async-backing" }, { - "depth": 3, - "title": "Verify the Runtime Compiles", - "anchor": "verify-the-runtime-compiles" + "depth": 2, + "title": "Timing by Block Number", + "anchor": "timing-by-block-number" + } + ], + "stats": { + "chars": 20813, + "words": 2382, + "headings": 6, + "estimated_token_count_total": 4719 + }, + "hash": "sha256:bfad885d8053d052c55dbffc3c09e6196586795c3a1d07ab6ad58f9006ec3345", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-parachains-maintenance-runtime-metrics-monitoring", + "title": "Runtime Metrics and Monitoring", + "slug": "develop-parachains-maintenance-runtime-metrics-monitoring", + "categories": [ + "Parachains" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-parachains-maintenance-runtime-metrics-monitoring.md", + "html_url": "https://docs.polkadot.com/develop/parachains/maintenance/runtime-metrics-monitoring/", + "preview": "Maintaining a stable, secure, and efficient network requires continuous monitoring. Polkadot SDK-based nodes are equipped with built-in telemetry components that automatically collect and transmit detailed data about node performance in real-time. This telemetry system is a core feature of the Substrate framework, allowing for easy monitoring of network health without complex setup.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Run Your Chain Locally", - "anchor": "run-your-chain-locally" + "title": "Runtime Metrics", + "anchor": "runtime-metrics" }, { - "depth": 3, - "title": "Generate a Chain Specification", - "anchor": "generate-a-chain-specification" + "depth": 2, + "title": "Visual Monitoring", + "anchor": "visual-monitoring" }, { - "depth": 3, - "title": "Start the Parachain Node", - "anchor": "start-the-parachain-node" + "depth": 2, + "title": "Displaying Network-Wide Statistics", + "anchor": "displaying-network-wide-statistics" }, { - "depth": 3, - "title": "Interact with Both Pallet Instances", - "anchor": "interact-with-both-pallet-instances" + "depth": 2, + "title": "Customizing Monitoring Tools", + "anchor": "customizing-monitoring-tools" }, { "depth": 3, - "title": "Test Instance Independence", - "anchor": "test-instance-independence" + "title": "On-Chain Activity", + "anchor": "on-chain-activity" + }, + { + "depth": 2, + "title": "Monitoring Tools", + "anchor": "monitoring-tools" + }, + { + "depth": 3, + "title": "Change the Telemetry Server", + "anchor": "change-the-telemetry-server" + } + ], + "stats": { + "chars": 8458, + "words": 1202, + "headings": 8, + "estimated_token_count_total": 1819 + }, + "hash": "sha256:b0c1535fa8e969a9bdeee426a5a35a42b4649121fb8ce6fd2b15fdeba35b5d5f", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-parachains-maintenance", + "title": "Maintenance", + "slug": "develop-parachains-maintenance", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-parachains-maintenance.md", + "html_url": "https://docs.polkadot.com/develop/parachains/maintenance/", + "preview": "Learn how to maintain Polkadot SDK-based networks, focusing on runtime monitoring, upgrades, and storage migrations for optimal performance. Proper maintenance ensures your blockchain remains secure, efficient, and adaptable to changing needs. These sections will guide you through monitoring your network, using runtime versioning, and performing forkless upgrades to keep your blockchain secure and up-to-date without downtime.", + "outline": [ + { + "depth": 2, + "title": "In This Section", + "anchor": "in-this-section" + }, + { + "depth": 2, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 1372, + "words": 174, + "headings": 2, + "estimated_token_count_total": 236 + }, + "hash": "sha256:3b0a9e8037c7634c33ac6674170bd763599fca914855d9d2fbf490d359140130", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-parachains-testing", + "title": "Testing Your Polkadot SDK-Based Blockchain", + "slug": "develop-parachains-testing", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-parachains-testing.md", + "html_url": "https://docs.polkadot.com/develop/parachains/testing/", + "preview": "Explore comprehensive testing strategies for Polkadot SDK-based blockchains, from setting up test environments to verifying runtime and pallet interactions. Testing is essential to feeling confident your network will behave the way you intend upon deployment.", + "outline": [ + { + "depth": 2, + "title": "In This Section", + "anchor": "in-this-section" + }, + { + "depth": 2, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 1243, + "words": 157, + "headings": 2, + "estimated_token_count_total": 211 + }, + "hash": "sha256:0ce1fe38de00827a0735b9fa8076492205c2450c61da9fbd1937d9f38cfe7825", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-parachains", + "title": "Parachains", + "slug": "develop-parachains", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-parachains.md", + "html_url": "https://docs.polkadot.com/develop/parachains/", + "preview": "This section provides a complete guide to working with the Polkadot SDK, from getting started to long-term network maintenance. Discover how to create custom blockchains, test and deploy your parachains, and ensure their continued performance and reliability.", + "outline": [ + { + "depth": 2, + "title": "Building Parachains with the Polkadot SDK", + "anchor": "building-parachains-with-the-polkadot-sdk" + }, + { + "depth": 2, + "title": "In This Section", + "anchor": "in-this-section" + } + ], + "stats": { + "chars": 1994, + "words": 264, + "headings": 2, + "estimated_token_count_total": 330 + }, + "hash": "sha256:75a6fa2f21b67009be62e07bab01655a10b2c35a5292dc1f7ca57df846d709f3", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-smart-contracts-connect-to-kusama", + "title": "Connect to Kusama", + "slug": "develop-smart-contracts-connect-to-kusama", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-smart-contracts-connect-to-kusama.md", + "html_url": "https://docs.polkadot.com/develop/smart-contracts/connect-to-kusama/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ", + "outline": [ + { + "depth": 2, + "title": "Networks Details", + "anchor": "networks-details" + }, + { + "depth": 2, + "title": "Important Deployment Considerations", + "anchor": "important-deployment-considerations" }, { "depth": 2, @@ -1979,177 +2355,232 @@ } ], "stats": { - "chars": 17923, - "words": 2203, - "headings": 21, - "estimated_token_count_total": 3811 + "chars": 3601, + "words": 476, + "headings": 3, + "estimated_token_count_total": 514 }, - "hash": "sha256:d83e574726c524fa017236eb5e3b8a0676d598be4da1ce4fe25a60141baeee49", + "hash": "sha256:e8ffeaa3a17e20437a59f2c95a63821eb75bf3c33001e748c23958b2b99ac3c2", "token_estimator": "heuristic-v1" }, { - "id": "parachains-customize-runtime-add-smart-contract-functionality", - "title": "Add Smart Contract Functionality", - "slug": "parachains-customize-runtime-add-smart-contract-functionality", + "id": "develop-smart-contracts-dev-environments", + "title": "Dev Environments", + "slug": "develop-smart-contracts-dev-environments", "categories": [ - "Parachains" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime-add-smart-contract-functionality.md", - "html_url": "https://docs.polkadot.com/parachains/customize-runtime/add-smart-contract-functionality/", - "preview": "When building your custom blockchain with the Polkadot SDK, you can add smart contract capabilities through specialized pallets. These pallets enable users to deploy and execute smart contracts, enhancing your chain's programmability and allowing developers to build decentralized applications on your network.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-smart-contracts-dev-environments.md", + "html_url": "https://docs.polkadot.com/develop/smart-contracts/dev-environments/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. Explore the tools and frameworks available for building and testing smart contracts on the Polkadot network. These environments streamline the development process, from writing and compiling to testing and deploying smart contracts. The guides in this section will help you evaluate each tool's strengths, making it easier to choose t", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "What to Consider", + "anchor": "what-to-consider" }, { "depth": 2, - "title": "pallet-revive", - "anchor": "pallet-revive" + "title": "In This Section", + "anchor": "in-this-section" + } + ], + "stats": { + "chars": 1601, + "words": 154, + "headings": 2, + "estimated_token_count_total": 323 + }, + "hash": "sha256:5c3a10769e30b4da62e6c188e99310354e6e9af4595c7920c2977a54b8e1853c", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-smart-contracts-faqs", + "title": "Polkadot Hub Smart Contract FAQs", + "slug": "develop-smart-contracts-faqs", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-smart-contracts-faqs.md", + "html_url": "https://docs.polkadot.com/develop/smart-contracts/faqs/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. !!! note For a list of known incompatibilities, please refer to the [Solidity and Yul IR translation incompatibilities](/polkadot-protocol/smart-contract-basics/evm-vs-polkavm/#solidity-and-yul-ir-translation-incompatibilities){target=\\_blank} section.", + "outline": [ + { + "depth": 2, + "title": "General Questions", + "anchor": "general-questions" }, { "depth": 3, - "title": "Core Components", - "anchor": "core-components" + "title": "What are the different types of smart contracts I can build on Polkadot?", + "anchor": "what-are-the-different-types-of-smart-contracts-i-can-build-on-polkadot" }, { "depth": 3, - "title": "Supported Languages and Compilers", - "anchor": "supported-languages-and-compilers" + "title": "Should I build a smart contract or a parachain?", + "anchor": "should-i-build-a-smart-contract-or-a-parachain" }, { "depth": 3, - "title": "How It Works", - "anchor": "how-it-works" + "title": "What's the difference between Polkadot Hub smart contracts and other EVM chains?", + "anchor": "whats-the-difference-between-polkadot-hub-smart-contracts-and-other-evm-chains" + }, + { + "depth": 2, + "title": "Development Environment", + "anchor": "development-environment" }, { "depth": 3, - "title": "Key Benefits", - "anchor": "key-benefits" + "title": "Can I use my existing Ethereum development tools?", + "anchor": "can-i-use-my-existing-ethereum-development-tools" }, { "depth": 3, - "title": "Implementation Examples", - "anchor": "implementation-examples" + "title": "How do I set up local development?", + "anchor": "how-do-i-set-up-local-development" + }, + { + "depth": 3, + "title": "What networks are available for testing and deployment?", + "anchor": "what-networks-are-available-for-testing-and-deployment" }, { "depth": 2, - "title": "Frontier", - "anchor": "frontier" + "title": "Technical Implementation", + "anchor": "technical-implementation" }, { "depth": 3, - "title": "Integration Options", - "anchor": "integration-options" + "title": "How do Ethereum addresses work on Polkadot?", + "anchor": "how-do-ethereum-addresses-work-on-polkadot" }, { "depth": 3, - "title": "EVM Execution Only", - "anchor": "evm-execution-only" + "title": "What are the key differences in the gas model?", + "anchor": "what-are-the-key-differences-in-the-gas-model" }, { "depth": 3, - "title": "Full Ethereum Compatibility", - "anchor": "full-ethereum-compatibility" + "title": "How does contract deployment work?", + "anchor": "how-does-contract-deployment-work" }, { "depth": 3, - "title": "Key Benefits", - "anchor": "key-benefits-2" + "title": "Which Solidity features are not supported?", + "anchor": "which-solidity-features-are-not-supported" }, { "depth": 3, - "title": "Implementation Examples", - "anchor": "implementation-examples-2" + "title": "How do I handle the existential deposit requirement?", + "anchor": "how-do-i-handle-the-existential-deposit-requirement" }, { "depth": 2, - "title": "pallet-contracts (Legacy)", - "anchor": "pallet-contracts-legacy" + "title": "Migration and Compatibility", + "anchor": "migration-and-compatibility" }, { "depth": 3, - "title": "Implementation Example", - "anchor": "implementation-example" + "title": "Can I migrate my existing Ethereum contracts?", + "anchor": "can-i-migrate-my-existing-ethereum-contracts" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" - } - ], - "stats": { - "chars": 6655, - "words": 833, - "headings": 16, - "estimated_token_count_total": 1631 - }, - "hash": "sha256:6297bb5e0809fdd0585d6170054599f7ab4a3ce7c687ad03ae43092057c493b7", - "token_estimator": "heuristic-v1" - }, - { - "id": "parachains-customize-runtime-pallet-development-add-pallet-to-runtime", - "title": "Add Pallets to the Runtime", - "slug": "parachains-customize-runtime-pallet-development-add-pallet-to-runtime", - "categories": [ - "Basics", - "Parachains" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime-pallet-development-add-pallet-to-runtime.md", - "html_url": "https://docs.polkadot.com/parachains/customize-runtime/pallet-development/add-pallet-to-runtime/", - "preview": "In previous tutorials, you learned how to [create a custom pallet](/tutorials/polkadot-sdk/parachains/zero-to-hero/build-custom-pallet/){target=\\_blank} and [test it](/tutorials/polkadot-sdk/parachains/zero-to-hero/pallet-unit-testing/){target=\\_blank}. The next step is to include this pallet in your runtime, integrating it into the core logic of your blockchain.", - "outline": [ + "title": "Troubleshooting", + "anchor": "troubleshooting" + }, { - "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "depth": 3, + "title": "Why are my gas calculations different?", + "anchor": "why-are-my-gas-calculations-different" }, { - "depth": 2, - "title": "Add the Pallets as Dependencies", - "anchor": "add-the-pallets-as-dependencies" + "depth": 3, + "title": "I deployed a contract with MetaMask, and got a `code size` error - why?", + "anchor": "i-deployed-a-contract-with-metamask-and-got-a-code-size-error-why" }, { "depth": 3, - "title": "Update the Runtime Configuration", - "anchor": "update-the-runtime-configuration" + "title": "I found a bug, where can I log it?", + "anchor": "i-found-a-bug-where-can-i-log-it" }, { "depth": 2, - "title": "Recompile the Runtime", - "anchor": "recompile-the-runtime" + "title": "Known Issues", + "anchor": "known-issues" + }, + { + "depth": 3, + "title": "Runtime Behavior", + "anchor": "runtime-behavior" + }, + { + "depth": 3, + "title": "Development Tools", + "anchor": "development-tools" + }, + { + "depth": 3, + "title": "Contract Patterns", + "anchor": "contract-patterns" }, + { + "depth": 3, + "title": "Compilation", + "anchor": "compilation" + } + ], + "stats": { + "chars": 7480, + "words": 984, + "headings": 25, + "estimated_token_count_total": 1618 + }, + "hash": "sha256:5cc63ff0a377ef0ec96a064748e13b88bc852bd1862c6e344066855a7fe93b19", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-smart-contracts-libraries", + "title": "Libraries", + "slug": "develop-smart-contracts-libraries", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-smart-contracts-libraries.md", + "html_url": "https://docs.polkadot.com/develop/smart-contracts/libraries/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. Explore the key libraries for interacting with smart contracts on Polkadot-based networks. These libraries simplify contract calls, event listening, and transaction handling.", + "outline": [ { "depth": 2, - "title": "Run Your Chain Locally", - "anchor": "run-your-chain-locally" + "title": "Library Comparison", + "anchor": "library-comparison" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "In This Section", + "anchor": "in-this-section" } ], "stats": { - "chars": 13091, - "words": 1522, - "headings": 6, - "estimated_token_count_total": 3091 + "chars": 2056, + "words": 203, + "headings": 2, + "estimated_token_count_total": 415 }, - "hash": "sha256:87add0ae178e4970601a27efccadb58eff1375d19819201034ba2829914f1cd5", + "hash": "sha256:23137f6c74412fd98c0b6aeee3ff59938e44b817ec42974c453f9b0f66e36513", "token_estimator": "heuristic-v1" }, { - "id": "parachains-customize-runtime-pallet-development-benchmark-pallet", - "title": "Benchmarking FRAME Pallets", - "slug": "parachains-customize-runtime-pallet-development-benchmark-pallet", + "id": "develop-smart-contracts-precompiles-interact-with-precompiles", + "title": "Interact with Precompiles", + "slug": "develop-smart-contracts-precompiles-interact-with-precompiles", "categories": [ - "Parachains" + "Smart Contracts" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime-pallet-development-benchmark-pallet.md", - "html_url": "https://docs.polkadot.com/parachains/customize-runtime/pallet-development/benchmark-pallet/", - "preview": "Benchmarking is a critical component of developing efficient and secure blockchain runtimes. In the Polkadot ecosystem, accurately benchmarking your custom pallets ensures that each extrinsic has a precise [weight](/reference/glossary/#weight){target=\\_blank}, representing its computational and storage demands. This process is vital for maintaining the blockchain's performance and preventing potential vulnerabilities, such as Denial of Service (DoS) attacks.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-smart-contracts-precompiles-interact-with-precompiles.md", + "html_url": "https://docs.polkadot.com/develop/smart-contracts/precompiles/interact-with-precompiles/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", "outline": [ { "depth": 2, @@ -2158,275 +2589,444 @@ }, { "depth": 2, - "title": "The Case for Benchmarking", - "anchor": "the-case-for-benchmarking" + "title": "Basic Precompile Interaction Pattern", + "anchor": "basic-precompile-interaction-pattern" }, { - "depth": 3, - "title": "Benchmarking and Weight", - "anchor": "benchmarking-and-weight" + "depth": 2, + "title": "ECRecover (0x01)", + "anchor": "ecrecover-0x01" }, { "depth": 2, - "title": "Benchmarking Process", - "anchor": "benchmarking-process" + "title": "SHA-256 (0x02)", + "anchor": "sha-256-0x02" }, { - "depth": 3, - "title": "Prepare Your Environment", - "anchor": "prepare-your-environment" + "depth": 2, + "title": "RIPEMD-160 (0x03)", + "anchor": "ripemd-160-0x03" }, { - "depth": 3, - "title": "Write Benchmark Tests", - "anchor": "write-benchmark-tests" + "depth": 2, + "title": "Identity (Data Copy) (0x04)", + "anchor": "identity-data-copy-0x04" }, { - "depth": 3, - "title": "Add Benchmarks to Runtime", - "anchor": "add-benchmarks-to-runtime" + "depth": 2, + "title": "Modular Exponentiation (0x05)", + "anchor": "modular-exponentiation-0x05" }, { - "depth": 3, - "title": "Run Benchmarks", - "anchor": "run-benchmarks" + "depth": 2, + "title": "BN128 Addition (0x06)", + "anchor": "bn128-addition-0x06" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" - } - ], - "stats": { - "chars": 14715, - "words": 1879, - "headings": 9, - "estimated_token_count_total": 3338 - }, - "hash": "sha256:915bc91edd56cdedd516e871dbe450d70c9f99fb467cc00ff231ea3a74f61d96", - "token_estimator": "heuristic-v1" - }, - { - "id": "parachains-customize-runtime-pallet-development-create-a-pallet", - "title": "Create a Custom Pallet", - "slug": "parachains-customize-runtime-pallet-development-create-a-pallet", - "categories": [ - "Parachains" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime-pallet-development-create-a-pallet.md", - "html_url": "https://docs.polkadot.com/parachains/customize-runtime/pallet-development/create-a-pallet/", - "preview": "[Framework for Runtime Aggregation of Modular Entities (FRAME)](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/polkadot_sdk/frame_runtime/index.html){target=\\_blank} provides a powerful set of tools for blockchain development through modular components called [pallets](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/polkadot_sdk/frame_runtime/pallet/index.html){target=\\_blank}. These Rust-based runtime modules allow you to build custom blockchain functional", - "outline": [ + "title": "BN128 Scalar Multiplication (0x07)", + "anchor": "bn128-scalar-multiplication-0x07" + }, { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "BN128 Pairing Check (0x08)", + "anchor": "bn128-pairing-check-0x08" }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "Blake2F (0x09)", + "anchor": "blake2f-0x09" }, { "depth": 2, - "title": "Core Pallet Components", - "anchor": "core-pallet-components" - }, + "title": "Conclusion", + "anchor": "conclusion" + } + ], + "stats": { + "chars": 18054, + "words": 2190, + "headings": 12, + "estimated_token_count_total": 3847 + }, + "hash": "sha256:4b705b8dbe9b0ad8d19a897d91f3c64dbc4541297dadacbea2a31b4778e50a46", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-smart-contracts", + "title": "Smart Contracts", + "slug": "develop-smart-contracts", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-smart-contracts.md", + "html_url": "https://docs.polkadot.com/develop/smart-contracts/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. Polkadot allows scalable execution of smart contracts, offering cross-chain compatibility and lower fees than legacy L1 platforms. Polkadot provides developers with flexibility in building smart contracts, supporting both Solidity contracts executed by the [PolkaVM](/smart-contracts/for-eth-devs/#polkavm){target=\\_blank} (a Polkadot", + "outline": [ { "depth": 2, - "title": "Create the Pallet Project", - "anchor": "create-the-pallet-project" + "title": "Smart Contract Development Process", + "anchor": "smart-contract-development-process" }, { "depth": 2, - "title": "Configure Dependencies", - "anchor": "configure-dependencies" - }, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 1867, + "words": 247, + "headings": 2, + "estimated_token_count_total": 189 + }, + "hash": "sha256:4b56a119cbc63d87de98554cf4019e48ddb4f7cee11a51553ea234f91d78f8b8", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-toolkit-api-libraries", + "title": "API Libraries", + "slug": "develop-toolkit-api-libraries", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-api-libraries.md", + "html_url": "https://docs.polkadot.com/develop/toolkit/api-libraries/", + "preview": "Explore the powerful API libraries designed for interacting with the Polkadot network. These libraries offer developers versatile tools to build, query, and manage blockchain interactions. Whether you’re working with JavaScript, TypeScript, Python, or RESTful services, they provide the flexibility to efficiently interact with and retrieve data from Polkadot-based chains.", + "outline": [ { "depth": 2, - "title": "Initialize the Pallet Structure", - "anchor": "initialize-the-pallet-structure" + "title": "In This Section", + "anchor": "in-this-section" }, { "depth": 2, - "title": "Configure the Pallet", - "anchor": "configure-the-pallet" - }, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 1082, + "words": 139, + "headings": 2, + "estimated_token_count_total": 187 + }, + "hash": "sha256:746788d1068fe3eaafc34eb461566d1682c27fcad7d448e65810b9662b45dd85", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-toolkit-integrations-storage", + "title": "Storage", + "slug": "develop-toolkit-integrations-storage", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-integrations-storage.md", + "html_url": "https://docs.polkadot.com/develop/toolkit/integrations/storage/", + "preview": "Polkadot offers developers a range of decentralized storage solutions to manage dApp data, host front ends, and store large files in a censorship-resistant and resilient manner. These integrations are essential for building fully decentralized applications, ensuring that all components of your dApp, from the front end to the data, are not reliant on centralized servers.", + "outline": [ { "depth": 2, - "title": "Define Events", - "anchor": "define-events" + "title": "Key Storage Solutions", + "anchor": "key-storage-solutions" }, { "depth": 2, - "title": "Define Errors", - "anchor": "define-errors" + "title": "Crust Network", + "anchor": "crust-network" }, { - "depth": 2, - "title": "Add Storage Items", - "anchor": "add-storage-items" + "depth": 3, + "title": "Key Features of Crust", + "anchor": "key-features-of-crust" }, { - "depth": 2, - "title": "Configure Genesis State", - "anchor": "configure-genesis-state" + "depth": 3, + "title": "Use Cases", + "anchor": "use-cases" }, { "depth": 2, - "title": "Implement Dispatchable Functions", - "anchor": "implement-dispatchable-functions" + "title": "IPFS", + "anchor": "ipfs" }, { "depth": 3, - "title": "Dispatchable Function Details", - "anchor": "dispatchable-function-details" + "title": "Using IPFS with Polkadot", + "anchor": "using-ipfs-with-polkadot" }, { "depth": 2, - "title": "Verify Pallet Compilation", - "anchor": "verify-pallet-compilation" + "title": "Other Solutions", + "anchor": "other-solutions" + } + ], + "stats": { + "chars": 4369, + "words": 642, + "headings": 7, + "estimated_token_count_total": 847 + }, + "hash": "sha256:a206dd86fc3d80aed22384000839ca0c9c75c69ad461abd9810d96c03cf6a3bd", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-toolkit-integrations-transaction-construction", + "title": "Transaction Construction", + "slug": "develop-toolkit-integrations-transaction-construction", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-integrations-transaction-construction.md", + "html_url": "https://docs.polkadot.com/develop/toolkit/integrations/transaction-construction/", + "preview": "This page will discuss the transaction format in Polkadot and how to create, sign, and broadcast transactions, as well as highlight some of the commands and tools available for integrators.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Add the Pallet to Your Runtime", - "anchor": "add-the-pallet-to-your-runtime" + "title": "Transaction Format", + "anchor": "transaction-format" }, { "depth": 3, - "title": "Add Runtime Dependency", - "anchor": "add-runtime-dependency" + "title": "Mode and Metadata Hash", + "anchor": "mode-and-metadata-hash" }, { "depth": 3, - "title": "Implement the Config Trait", - "anchor": "implement-the-config-trait" + "title": "Serialized Transactions and Metadata", + "anchor": "serialized-transactions-and-metadata" }, { "depth": 3, - "title": "Add to Runtime Construct", - "anchor": "add-to-runtime-construct" + "title": "Transaction Flow", + "anchor": "transaction-flow" }, { - "depth": 3, - "title": "Configure Genesis for Your Runtime", - "anchor": "configure-genesis-for-your-runtime" + "depth": 2, + "title": "Polkadot-JS Tools", + "anchor": "polkadot-js-tools" }, { "depth": 3, - "title": "Verify Runtime Compilation", - "anchor": "verify-runtime-compilation" + "title": "Creating a Transaction, Signing, and Submitting", + "anchor": "creating-a-transaction-signing-and-submitting" }, { "depth": 2, - "title": "Run Your Chain Locally", - "anchor": "run-your-chain-locally" + "title": "Txwrapper", + "anchor": "txwrapper" }, { "depth": 3, - "title": "Generate a Chain Specification", - "anchor": "generate-a-chain-specification" + "title": "Creating a Transaction, Signing, and Submitting", + "anchor": "creating-a-transaction-signing-and-submitting-2" }, { - "depth": 3, - "title": "Start the Parachain Node", - "anchor": "start-the-parachain-node" - }, + "depth": 2, + "title": "Additional Libraries for Submitting a Transaction", + "anchor": "additional-libraries-for-submitting-a-transaction" + } + ], + "stats": { + "chars": 27671, + "words": 2949, + "headings": 10, + "estimated_token_count_total": 6280 + }, + "hash": "sha256:9b03477d13a285fced6bf845c3827084f790a626989dc2c09ef9ff53643045f4", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-toolkit-integrations", + "title": "Integrations", + "slug": "develop-toolkit-integrations", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-integrations.md", + "html_url": "https://docs.polkadot.com/develop/toolkit/integrations/", + "preview": "Polkadot offers a wide range of integrations that allow developers to enhance their decentralized applications (dApps) and leverage the full capabilities of the ecosystem. Whether you’re looking to extend your application’s functionality, integrate with other chains, or access specialized services, these integrations provide the tools and resources you need to build efficiently and effectively. Explore the available options to find the solutions that best suit your development needs.", + "outline": [ { "depth": 2, - "title": "Interact with Your Pallet", - "anchor": "interact-with-your-pallet" + "title": "Key Integration Solutions", + "anchor": "key-integration-solutions" }, { "depth": 2, - "title": "Key Takeaways", - "anchor": "key-takeaways" - }, + "title": "In This Section", + "anchor": "in-this-section" + } + ], + "stats": { + "chars": 988, + "words": 135, + "headings": 2, + "estimated_token_count_total": 92 + }, + "hash": "sha256:0de8c1655a1524784010b6cec5fa522b2f764e32f18913f0d262283e0ec0779e", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-toolkit-interoperability", + "title": "Interoperability", + "slug": "develop-toolkit-interoperability", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-interoperability.md", + "html_url": "https://docs.polkadot.com/develop/toolkit/interoperability/", + "preview": "Polkadot's XCM tooling ecosystem redefines the boundaries of cross-chain communication and asset movement. With unparalleled flexibility and scalability, these advanced tools empower developers to build decentralized applications that connect parachains, relay chains, and external networks. By bridging siloed blockchains, Polkadot paves the way for a unified, interoperable ecosystem that accelerates innovation and collaboration.", + "outline": [ { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "In This Section", + "anchor": "in-this-section" } ], "stats": { - "chars": 26671, - "words": 3041, - "headings": 26, - "estimated_token_count_total": 6113 + "chars": 1010, + "words": 128, + "headings": 1, + "estimated_token_count_total": 12 }, - "hash": "sha256:607e283aaa1295de0af191d97de7f6f87afb722c601a447821fde6a09b97f1af", + "hash": "sha256:c72d7d30a019fe1db8ab3993f91dfd4f1bdb4a932aaa685d3baaa0578091d5ce", "token_estimator": "heuristic-v1" }, { - "id": "parachains-customize-runtime-pallet-development-mock-runtime", - "title": "Mock Your Runtime", - "slug": "parachains-customize-runtime-pallet-development-mock-runtime", + "id": "develop-toolkit-parachains-e2e-testing", + "title": "E2E Testing on Polkadot SDK Chains", + "slug": "develop-toolkit-parachains-e2e-testing", "categories": [ - "Parachains" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime-pallet-development-mock-runtime.md", - "html_url": "https://docs.polkadot.com/parachains/customize-runtime/pallet-development/mock-runtime/", - "preview": "Testing is a critical part of pallet development. Before integrating your pallet into a full runtime, you need a way to test its functionality in isolation. A mock runtime provides a minimal, simulated blockchain environment where you can verify your pallet's logic without the overhead of running a full node.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-parachains-e2e-testing.md", + "html_url": "https://docs.polkadot.com/develop/toolkit/parachains/e2e-testing/", + "preview": ":::INSERT_IN_THIS_SECTION:::", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" - }, + "title": "In This Section", + "anchor": "in-this-section" + } + ], + "stats": { + "chars": 64, + "words": 6, + "headings": 1, + "estimated_token_count_total": 12 + }, + "hash": "sha256:cc49fdcc63a43247d80de2f309b9c7501d3054782746d80c003d95f3c43da90d", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-toolkit-parachains-fork-chains-chopsticks", + "title": "Chopsticks", + "slug": "develop-toolkit-parachains-fork-chains-chopsticks", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-parachains-fork-chains-chopsticks.md", + "html_url": "https://docs.polkadot.com/develop/toolkit/parachains/fork-chains/chopsticks/", + "preview": "Chopsticks is a powerful tool that lets you create local copies of running Polkadot SDK-based networks. By forking live chains locally, you can safely test features, analyze network behavior, and simulate complex scenarios without affecting production networks.", + "outline": [ { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "What Can I Do with Chopsticks?", + "anchor": "what-can-i-do-with-chopsticks" }, { "depth": 2, - "title": "Understand Mock Runtimes", - "anchor": "understand-mock-runtimes" + "title": "In This Section", + "anchor": "in-this-section" }, { "depth": 2, - "title": "Create the Mock Runtime Module", - "anchor": "create-the-mock-runtime-module" - }, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 1495, + "words": 201, + "headings": 3, + "estimated_token_count_total": 291 + }, + "hash": "sha256:b568596033cdf68e60d72bcb7ee62a794def2bd3ff5b3317ef15895f58a12c57", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-toolkit-parachains-fork-chains", + "title": "Fork Chains for Testing", + "slug": "develop-toolkit-parachains-fork-chains", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-parachains-fork-chains.md", + "html_url": "https://docs.polkadot.com/develop/toolkit/parachains/fork-chains/", + "preview": "Explore tools for forking live blockchain networks. These tools enable you to replicate real-world conditions in a local environment for accurate testing and debugging. They also allow you to analyze network behavior, test new features, and simulate complex scenarios in a controlled environment without affecting production systems.", + "outline": [ { "depth": 2, - "title": "Set Up Basic Mock", - "anchor": "set-up-basic-mock" + "title": "Why Fork a Live Chain?", + "anchor": "why-fork-a-live-chain" }, { "depth": 2, - "title": "Implement Essential Configuration", - "anchor": "implement-essential-configuration" + "title": "In This Section", + "anchor": "in-this-section" }, { "depth": 2, - "title": "Implement Your Pallet's Configuration", - "anchor": "implement-your-pallets-configuration" - }, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 1269, + "words": 173, + "headings": 3, + "estimated_token_count_total": 183 + }, + "hash": "sha256:d29a845b00b24e03f9877a5331c33619918decf453657969115d5ec18033ba28", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-toolkit-parachains-quickstart-pop-cli", + "title": "Quickstart Parachain Development with Pop CLI", + "slug": "develop-toolkit-parachains-quickstart-pop-cli", + "categories": [ + "Parachains", + "Tooling" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-parachains-quickstart-pop-cli.md", + "html_url": "https://docs.polkadot.com/develop/toolkit/parachains/quickstart/pop-cli/", + "preview": "[Pop CLI](https://onpop.io/cli/){target=\\_blank} is a powerful command-line tool designed explicitly for rapid parachain development within the Polkadot ecosystem. It addresses essential developer needs by providing streamlined commands to set up development environments, scaffold parachain templates, and manage local blockchain networks.", + "outline": [ { "depth": 2, - "title": "Configure Genesis Storage", - "anchor": "configure-genesis-storage" + "title": "Introduction", + "anchor": "introduction" }, { "depth": 3, - "title": "Basic Test Environment", - "anchor": "basic-test-environment" + "title": "Install Pop CLI", + "anchor": "install-pop-cli" }, { "depth": 3, - "title": "Custom Genesis Configurations", - "anchor": "custom-genesis-configurations" + "title": "Set Up Your Development Environment", + "anchor": "set-up-your-development-environment" }, { - "depth": 2, - "title": "Verify Mock Compilation", - "anchor": "verify-mock-compilation" - }, - { - "depth": 2, - "title": "Key Takeaways", - "anchor": "key-takeaways" + "depth": 3, + "title": "Initialize a Project", + "anchor": "initialize-a-project" }, { "depth": 2, @@ -2435,24 +3035,50 @@ } ], "stats": { - "chars": 11766, - "words": 1369, - "headings": 13, - "estimated_token_count_total": 2514 + "chars": 4236, + "words": 610, + "headings": 5, + "estimated_token_count_total": 999 }, - "hash": "sha256:dd784a5d2daebb9a885fe09f6a967e6c84958d96ddb38d8366eabe9d860fa539", + "hash": "sha256:6d6c66430a7302f29113924c5208e64d7c244497e50c61ab2f45c4b5141620e4", "token_estimator": "heuristic-v1" }, { - "id": "parachains-customize-runtime-pallet-development-pallet-testing", - "title": "Pallet Testing", - "slug": "parachains-customize-runtime-pallet-development-pallet-testing", + "id": "develop-toolkit-parachains-quickstart", + "title": "Quickstart Parachain Development", + "slug": "develop-toolkit-parachains-quickstart", "categories": [ - "Parachains" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime-pallet-development-pallet-testing.md", - "html_url": "https://docs.polkadot.com/parachains/customize-runtime/pallet-development/pallet-testing/", - "preview": "Unit testing in the Polkadot SDK helps ensure that the functions provided by a pallet behave as expected. It also confirms that data and events associated with a pallet are processed correctly during interactions. The Polkadot SDK offers a set of APIs to create a test environment to simulate runtime and mock transaction execution for extrinsics and queries.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-parachains-quickstart.md", + "html_url": "https://docs.polkadot.com/develop/toolkit/parachains/quickstart/", + "preview": ":::INSERT_IN_THIS_SECTION:::", + "outline": [ + { + "depth": 2, + "title": "In This Section", + "anchor": "in-this-section" + } + ], + "stats": { + "chars": 85, + "words": 7, + "headings": 1, + "estimated_token_count_total": 12 + }, + "hash": "sha256:91de375b7f822ed56b5e6b4d609d0d36e806d3f77041b4e180b6679b10a3e1c8", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-toolkit-parachains-remote-proxies", + "title": "Remote Proxies", + "slug": "develop-toolkit-parachains-remote-proxies", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-parachains-remote-proxies.md", + "html_url": "https://docs.polkadot.com/develop/toolkit/parachains/remote-proxies/", + "preview": "!!!warning \"Kusama Implementation Only\" Remote proxies are currently only available on Kusama and its parachains (such as Kusama Asset Hub). This feature is not yet deployed on Polkadot MainNet. The examples and implementations described in this guide are specific to the Kusama ecosystem.", "outline": [ { "depth": 2, @@ -2461,55 +3087,59 @@ }, { "depth": 2, - "title": "Writing Unit Tests", - "anchor": "writing-unit-tests" + "title": "Remote Proxy Architecture", + "anchor": "remote-proxy-architecture" }, { - "depth": 3, - "title": "Test Initialization", - "anchor": "test-initialization" + "depth": 2, + "title": "Implementation Workflow", + "anchor": "implementation-workflow" + }, + { + "depth": 2, + "title": "Practical Implementation", + "anchor": "practical-implementation" }, { "depth": 3, - "title": "Function Call Testing", - "anchor": "function-call-testing" + "title": "Prerequisites", + "anchor": "prerequisites" }, { "depth": 3, - "title": "Storage Testing", - "anchor": "storage-testing" + "title": "Installation and Setup", + "anchor": "installation-and-setup" }, { "depth": 3, - "title": "Event Testing", - "anchor": "event-testing" + "title": "Implementation Example", + "anchor": "implementation-example" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "Resources", + "anchor": "resources" } ], "stats": { - "chars": 6892, - "words": 911, - "headings": 7, - "estimated_token_count_total": 1563 + "chars": 9063, + "words": 1113, + "headings": 8, + "estimated_token_count_total": 1863 }, - "hash": "sha256:8568dfa238b9a649a4e6e60510625c2e7879b76a93187b0b8b8dccf6bc467ae6", + "hash": "sha256:7086406b31e7aa9089b221ffaa548ee5540a3d147ec1e93136f481c883f2e434", "token_estimator": "heuristic-v1" }, { - "id": "parachains-customize-runtime", - "title": "Overview of FRAME", - "slug": "parachains-customize-runtime", + "id": "develop-toolkit-parachains-rpc-calls", + "title": "RPC Calls to Polkadot SDK chains.", + "slug": "develop-toolkit-parachains-rpc-calls", "categories": [ - "Basics", - "Parachains" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime.md", - "html_url": "https://docs.polkadot.com/parachains/customize-runtime/", - "preview": "A blockchain runtime is more than just a fixed set of rules—it's a dynamic foundation that you can shape to match your specific needs. With Polkadot SDK's [FRAME (Framework for Runtime Aggregation of Modularized Entities)](/reference/glossary/#frame-framework-for-runtime-aggregation-of-modularized-entities){target=\\_blank}, customizing your runtime is straightforward and modular. Instead of building everything from scratch, you combine pre-built pallets with your own custom logic to create a run", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-parachains-rpc-calls.md", + "html_url": "https://docs.polkadot.com/develop/toolkit/parachains/rpc-calls/", + "preview": "[Remote Procedure Call](https://en.wikipedia.org/wiki/Remote_procedure_call){target=\\_blank} (RPC) interfaces are the primary way to interact programmatically with Polkadot SDK-based parachains and relay chains. RPC calls allow you to query chain state, submit transactions, and monitor network health from external applications or scripts.", "outline": [ { "depth": 2, @@ -2518,105 +3148,156 @@ }, { "depth": 2, - "title": "Understanding Your Runtime", - "anchor": "understanding-your-runtime" + "title": "How Do RPC Calls Work?", + "anchor": "how-do-rpc-calls-work" }, { "depth": 2, - "title": "Runtime Architecture", - "anchor": "runtime-architecture" + "title": "Making RPC Calls with Curl", + "anchor": "making-rpc-calls-with-curl" }, { "depth": 2, - "title": "Building Blocks: Pallets", - "anchor": "building-blocks-pallets" + "title": "Essential RPC Methods", + "anchor": "essential-rpc-methods" }, { "depth": 3, - "title": "Pre-Built Pallets vs. Custom Pallets", - "anchor": "pre-built-pallets-vs-custom-pallets" + "title": "system_health", + "anchor": "system_health" }, { "depth": 3, - "title": "Pallet Structure", - "anchor": "pallet-structure" + "title": "chain_getBlock", + "anchor": "chain_getblock" }, { - "depth": 2, - "title": "How Runtime Customization Works", - "anchor": "how-runtime-customization-works" + "depth": 3, + "title": "state_getStorage", + "anchor": "state_getstorage" + }, + { + "depth": 3, + "title": "author_submitExtrinsic", + "anchor": "author_submitextrinsic" + }, + { + "depth": 3, + "title": "state_getMetadata", + "anchor": "state_getmetadata" }, { "depth": 2, - "title": "Starting Templates", - "anchor": "starting-templates" + "title": "Check Available RPC Calls", + "anchor": "check-available-rpc-calls" + }, + { + "depth": 3, + "title": "Using curl", + "anchor": "using-curl" + }, + { + "depth": 3, + "title": "Using Polkadot.js Apps", + "anchor": "using-polkadotjs-apps" }, { "depth": 2, - "title": "Key Customization Scenarios", - "anchor": "key-customization-scenarios" + "title": "Resources", + "anchor": "resources" } ], "stats": { - "chars": 8237, - "words": 1101, - "headings": 9, - "estimated_token_count_total": 1828 + "chars": 6496, + "words": 909, + "headings": 13, + "estimated_token_count_total": 1870 }, - "hash": "sha256:28501589d5290f932b55cd3319f6a3fd78d7297ba42810da5ad2784a297224fd", + "hash": "sha256:3b766e00e55a224201bc6744386a6dabc7da54ed9199b16abab3b94cff449eca", "token_estimator": "heuristic-v1" }, { - "id": "parachains-get-started", - "title": "Get Started with Parachain Development", - "slug": "parachains-get-started", + "id": "develop-toolkit-parachains-spawn-chains-zombienet-write-tests", + "title": "Write Tests", + "slug": "develop-toolkit-parachains-spawn-chains-zombienet-write-tests", "categories": [ - "Basics", - "Parachains" + "Parachains", + "Tooling" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-get-started.md", - "html_url": "https://docs.polkadot.com/parachains/get-started/", - "preview": "The following sections provide practical recipes for building parachains on Polkadot—each focused on specific development scenarios with step-by-step, hands-on examples.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-parachains-spawn-chains-zombienet-write-tests.md", + "html_url": "https://docs.polkadot.com/develop/toolkit/parachains/spawn-chains/zombienet/write-tests/", + "preview": "Testing is a critical step in blockchain development, ensuring reliability, performance, and security. Zombienet simplifies this process with its intuitive Domain Specific Language (DSL), enabling developers to write natural-language test scripts tailored to their network needs.", "outline": [ { "depth": 2, - "title": "Quick Start Guides", - "anchor": "quick-start-guides" + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Launch a Simple Parachain", - "anchor": "launch-a-simple-parachain" + "title": "Testing DSL", + "anchor": "testing-dsl" }, { "depth": 2, - "title": "Customize Your Runtime", - "anchor": "customize-your-runtime" + "title": "The Test File", + "anchor": "the-test-file" }, { "depth": 3, - "title": "Pallet Development", - "anchor": "pallet-development" + "title": "Name", + "anchor": "name" }, { - "depth": 2, - "title": "Testing", - "anchor": "testing" + "depth": 3, + "title": "Assertions", + "anchor": "assertions" + }, + { + "depth": 3, + "title": "Commands", + "anchor": "commands" }, { "depth": 2, - "title": "Runtime Upgrades and Maintenance", - "anchor": "runtime-upgrades-and-maintenance" + "title": "Running a Test", + "anchor": "running-a-test" }, { "depth": 2, - "title": "Interoperability", - "anchor": "interoperability" + "title": "Example Test Files", + "anchor": "example-test-files" + } + ], + "stats": { + "chars": 11297, + "words": 1491, + "headings": 8, + "estimated_token_count_total": 2661 + }, + "hash": "sha256:04e85c4cddb58252f8253d78a3924bb56952dac2a3e9a057704a91a0d1f21d75", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-toolkit-parachains-spawn-chains-zombienet", + "title": "Zombienet", + "slug": "develop-toolkit-parachains-spawn-chains-zombienet", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-parachains-spawn-chains-zombienet.md", + "html_url": "https://docs.polkadot.com/develop/toolkit/parachains/spawn-chains/zombienet/", + "preview": "Zombienet is a testing framework that lets you quickly spin up ephemeral blockchain networks for development and testing. With support for multiple deployment targets, such as Kubernetes, Podman, and native environments, Zombienet makes it easy to validate your blockchain implementation in a controlled environment.", + "outline": [ + { + "depth": 2, + "title": "What Can I Do with Zombienet?", + "anchor": "what-can-i-do-with-zombienet" }, { "depth": 2, - "title": "Integrations", - "anchor": "integrations" + "title": "In This Section", + "anchor": "in-this-section" }, { "depth": 2, @@ -2625,436 +3306,367 @@ } ], "stats": { - "chars": 7941, - "words": 631, - "headings": 9, - "estimated_token_count_total": 2292 + "chars": 1237, + "words": 164, + "headings": 3, + "estimated_token_count_total": 193 }, - "hash": "sha256:759ed27cf3d473445e33141089b652082c42a2c59eb822d6b506146fd9555e13", + "hash": "sha256:1355969b6b0e723b42815b960c15eb128e4d936d0d707cd66e43820cff765ee3", "token_estimator": "heuristic-v1" }, { - "id": "parachains-install-polkadot-sdk", - "title": "Install Polkadot SDK", - "slug": "parachains-install-polkadot-sdk", + "id": "develop-toolkit-parachains-spawn-chains", + "title": "Spawn Networks for Testing", + "slug": "develop-toolkit-parachains-spawn-chains", "categories": [ - "Basics", - "Tooling" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-install-polkadot-sdk.md", - "html_url": "https://docs.polkadot.com/parachains/install-polkadot-sdk/", - "preview": "This guide provides step-by-step instructions for installing the Polkadot SDK on macOS, Linux, and Windows. The installation process consists of two main parts:", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-parachains-spawn-chains.md", + "html_url": "https://docs.polkadot.com/develop/toolkit/parachains/spawn-chains/", + "preview": "Testing blockchain networks in a controlled environment is essential for development and validation. The Polkadot ecosystem provides specialized tools that enable you to spawn test networks, helping you verify functionality and catch issues before deploying to production.", "outline": [ { "depth": 2, - "title": "Install Dependencies: macOS", - "anchor": "install-dependencies-macos" - }, - { - "depth": 3, - "title": "Before You Begin {: #before-you-begin-mac-os }", - "anchor": "before-you-begin-before-you-begin-mac-os" + "title": "Why Spawn a Network?", + "anchor": "why-spawn-a-network" }, { - "depth": 3, - "title": "Install Homebrew", - "anchor": "install-homebrew" + "depth": 2, + "title": "In This Section", + "anchor": "in-this-section" }, { - "depth": 3, - "title": "Support for Apple Silicon", - "anchor": "support-for-apple-silicon" - }, + "depth": 2, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 1180, + "words": 155, + "headings": 3, + "estimated_token_count_total": 171 + }, + "hash": "sha256:f11bfd20cb9a0932ce263b2dd763729320261bb25e1fa0039a45ccc609541391", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-toolkit-parachains", + "title": "Parachains", + "slug": "develop-toolkit-parachains", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-parachains.md", + "html_url": "https://docs.polkadot.com/develop/toolkit/parachains/", + "preview": "Within the Polkadot ecosystem, you'll find a robust set of development tools that empower developers to build, test, and deploy blockchain applications efficiently. Whether you're designing a custom parachain, testing new features, or validating network configurations, these tools streamline the development process and ensure your blockchain setup is secure and optimized.", + "outline": [ { - "depth": 3, - "title": "Install Required Packages and Rust {: #install-required-packages-and-rust-mac-os }", - "anchor": "install-required-packages-and-rust-install-required-packages-and-rust-mac-os" + "depth": 2, + "title": "Quick Links", + "anchor": "quick-links" }, { "depth": 2, - "title": "Install Dependencies: Linux", - "anchor": "install-dependencies-linux" - }, + "title": "In This Section", + "anchor": "in-this-section" + } + ], + "stats": { + "chars": 986, + "words": 136, + "headings": 2, + "estimated_token_count_total": 106 + }, + "hash": "sha256:88dda8aeab06294ccb773d8732d4791b052351ed0b1307d62019a637c9be341a", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop-toolkit", + "title": "Toolkit", + "slug": "develop-toolkit", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit.md", + "html_url": "https://docs.polkadot.com/develop/toolkit/", + "preview": "Explore Polkadot's core development toolkit, designed to support a variety of developers and use cases within the ecosystem. Whether you're building blockchain infrastructure, developing cross-chain applications, or integrating with external services, this section offers essential tools and resources to help you succeed.", + "outline": [ { - "depth": 3, - "title": "Before You Begin {: #before-you-begin-linux }", - "anchor": "before-you-begin-before-you-begin-linux" - }, + "depth": 2, + "title": "In This Section", + "anchor": "in-this-section" + } + ], + "stats": { + "chars": 902, + "words": 113, + "headings": 1, + "estimated_token_count_total": 12 + }, + "hash": "sha256:20c667a337791538e3997f1f449bf69b248ccc4cc806e22615075f24fd3f0202", + "token_estimator": "heuristic-v1" + }, + { + "id": "develop", + "title": "Develop", + "slug": "develop", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop.md", + "html_url": "https://docs.polkadot.com/develop/", + "preview": "This guide is a starting point for developers who wish to build in the Polkadot ecosystem. To get the most from this section:", + "outline": [ { - "depth": 3, - "title": "Install Required Packages and Rust {: #install-required-packages-and-rust-linux }", - "anchor": "install-required-packages-and-rust-install-required-packages-and-rust-linux" + "depth": 2, + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Install Dependencies: Windows (WSL)", - "anchor": "install-dependencies-windows-wsl" + "title": "Development Pathways", + "anchor": "development-pathways" }, { "depth": 3, - "title": "Before You Begin {: #before-you-begin-windows-wls }", - "anchor": "before-you-begin-before-you-begin-windows-wls" + "title": "Parachain Developers", + "anchor": "parachain-developers" }, { "depth": 3, - "title": "Set Up Windows Subsystem for Linux", - "anchor": "set-up-windows-subsystem-for-linux" + "title": "Smart Contract Developers", + "anchor": "smart-contract-developers" }, { "depth": 3, - "title": "Install Required Packages and Rust {: #install-required-packages-and-rust-windows-wls }", - "anchor": "install-required-packages-and-rust-install-required-packages-and-rust-windows-wls" + "title": "Application Developers", + "anchor": "application-developers" }, { "depth": 2, - "title": "Build the Polkadot SDK", - "anchor": "build-the-polkadot-sdk" - }, - { - "depth": 3, - "title": "Clone the Polkadot SDK", - "anchor": "clone-the-polkadot-sdk" - }, - { - "depth": 3, - "title": "Compile the Polkadot SDK", - "anchor": "compile-the-polkadot-sdk" - }, - { - "depth": 3, - "title": "Verify the Build", - "anchor": "verify-the-build" - }, - { - "depth": 2, - "title": "Optional: Run the Kitchensink Node", - "anchor": "optional-run-the-kitchensink-node" - }, - { - "depth": 3, - "title": "Run the Kitchensink Node in Development Mode", - "anchor": "run-the-kitchensink-node-in-development-mode" - }, - { - "depth": 3, - "title": "Interact with the Kitchensink Node", - "anchor": "interact-with-the-kitchensink-node" - }, - { - "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" - } - ], - "stats": { - "chars": 16051, - "words": 2312, - "headings": 20, - "estimated_token_count_total": 3345 - }, - "hash": "sha256:a52c05b623f3780f14be3a5f36b3d79a6c1965c2fbfd6864b512a9a70c47cd60", - "token_estimator": "heuristic-v1" - }, - { - "id": "parachains-integrations-indexers", - "title": "Indexers", - "slug": "parachains-integrations-indexers", - "categories": [ - "Tooling", - "Dapps" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-integrations-indexers.md", - "html_url": "https://docs.polkadot.com/parachains/integrations/indexers/", - "preview": "Blockchain data is inherently sequential and distributed, with information stored chronologically across numerous blocks. While retrieving data from a single block through JSON-RPC API calls is straightforward, more complex queries that span multiple blocks present significant challenges:", - "outline": [ - { - "depth": 2, - "title": "The Challenge of Blockchain Data Access", - "anchor": "the-challenge-of-blockchain-data-access" - }, - { - "depth": 2, - "title": "What is a Blockchain Indexer?", - "anchor": "what-is-a-blockchain-indexer" - }, - { - "depth": 2, - "title": "Indexer Implementations", - "anchor": "indexer-implementations" + "title": "In This Section", + "anchor": "in-this-section" } ], "stats": { - "chars": 2230, - "words": 302, - "headings": 3, - "estimated_token_count_total": 428 + "chars": 6923, + "words": 882, + "headings": 6, + "estimated_token_count_total": 1843 }, - "hash": "sha256:cfcc76bb24779c9b613f2c046b6f99a0f2529c25fd82287d804f6b945b936227", + "hash": "sha256:1784f7b9e0552ab893c9d7d252299d53e36b6f57ef57c49cd5e36805399675ab", "token_estimator": "heuristic-v1" }, { - "id": "parachains-integrations-oracles", - "title": "Oracles", - "slug": "parachains-integrations-oracles", + "id": "get-support-ai-ready-docs", + "title": "AI Ready Docs", + "slug": "get-support-ai-ready-docs", "categories": [ - "Tooling", - "Dapps" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-integrations-oracles.md", - "html_url": "https://docs.polkadot.com/parachains/integrations/oracles/", - "preview": "Oracles enable blockchains to access external data sources. Since blockchains operate as isolated networks, they cannot natively interact with external systems - this limitation is known as the \"blockchain oracle problem.\" Oracles solves this by extracting data from external sources (like APIs, IoT devices, or other blockchains), validating it, and submitting it on-chain.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/get-support-ai-ready-docs.md", + "html_url": "https://docs.polkadot.com/get-support/ai-ready-docs/", + "preview": "Polkadot provides files to make documentation content available in a structure optimized for use with large language models (LLMs) and AI tools. These resources help build AI assistants, power code search, or enable custom tooling trained on Polkadot’s documentation.", "outline": [ { "depth": 2, - "title": "What is a Blockchain Oracle?", - "anchor": "what-is-a-blockchain-oracle" + "title": "How to Use These Files", + "anchor": "how-to-use-these-files" }, { "depth": 2, - "title": "Oracle Implementations", - "anchor": "oracle-implementations" + "title": "Download LLM Files", + "anchor": "download-llm-files" } ], "stats": { - "chars": 1343, - "words": 181, + "chars": 7998, + "words": 825, "headings": 2, - "estimated_token_count_total": 245 + "estimated_token_count_total": 2232 }, - "hash": "sha256:6d8e01281a5895fd2bc4438b24c170c72a496de0b838626a53e87685aea4aa25", + "hash": "sha256:5a8da69a5cea8bd598ee4d102b9abed5d1a29153802a567e22bb4ee720410b32", "token_estimator": "heuristic-v1" }, { - "id": "parachains-integrations-wallets", - "title": "Wallets", - "slug": "parachains-integrations-wallets", + "id": "get-support-explore-resources", + "title": "Subscribe to Updates", + "slug": "get-support-explore-resources", "categories": [ - "Tooling", - "Dapps" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-integrations-wallets.md", - "html_url": "https://docs.polkadot.com/parachains/integrations/wallets/", - "preview": "A wallet serves as your gateway to interacting with blockchain networks. Rather than storing funds, wallets secure your private keys, controlling access to your blockchain assets. Your private key provides complete control over all permitted transactions on your blockchain account, making it essential to keep it secure.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/get-support-explore-resources.md", + "html_url": "https://docs.polkadot.com/get-support/explore-resources/", + "preview": "Looking for answers beyond the documentation? These platforms are full of useful content and experienced developers sharing insights.", "outline": [ { "depth": 2, - "title": "What is a Blockchain Wallet?", - "anchor": "what-is-a-blockchain-wallet" - }, - { - "depth": 2, - "title": "Hot Wallets", - "anchor": "hot-wallets" + "title": "🧠 Stack Exchange", + "anchor": "stack-exchange" }, { "depth": 2, - "title": "Cold Wallets", - "anchor": "cold-wallets" + "title": "🧵 Reddit: r/Polkadot", + "anchor": "reddit-rpolkadot" }, { "depth": 2, - "title": "Wallet Tools", - "anchor": "wallet-tools" - } - ], - "stats": { - "chars": 3588, - "words": 489, - "headings": 4, - "estimated_token_count_total": 786 - }, - "hash": "sha256:1c65342056983806d639fb8393fdfbdf2ef644ffd41ed749947a16fb3839753d", - "token_estimator": "heuristic-v1" - }, - { - "id": "parachains-interoperability-channels-between-parachains", - "title": "Opening HRMP Channels Between Parachains", - "slug": "parachains-interoperability-channels-between-parachains", - "categories": [ - "Parachains" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-interoperability-channels-between-parachains.md", - "html_url": "https://docs.polkadot.com/parachains/interoperability/channels-between-parachains/", - "preview": "For establishing communication channels between parachains on the Polkadot network using the Horizontal Relay-routed Message Passing (HRMP) protocol, the following steps are required:", - "outline": [ - { - "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "💬 Discord (Community Threads Only)", + "anchor": "discord-community-threads-only" }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "🎥 YouTube: @PolkadotNetwork", + "anchor": "youtube-polkadotnetwork" }, { "depth": 2, - "title": "Procedure to Initiate an HRMP Channel", - "anchor": "procedure-to-initiate-an-hrmp-channel" - }, - { - "depth": 3, - "title": "Fund Sender Sovereign Account", - "anchor": "fund-sender-sovereign-account" + "title": "Community-Led Platforms and Ecosystem Updates", + "anchor": "community-led-platforms-and-ecosystem-updates" }, { "depth": 3, - "title": "Create Channel Opening Extrinsic", - "anchor": "create-channel-opening-extrinsic" + "title": "🔷 X (Twitter): Official Accounts", + "anchor": "x-twitter-official-accounts" }, { "depth": 3, - "title": "Craft and Submit the XCM Message from the Sender", - "anchor": "craft-and-submit-the-xcm-message-from-the-sender" - }, - { - "depth": 2, - "title": "Procedure to Accept an HRMP Channel", - "anchor": "procedure-to-accept-an-hrmp-channel" + "title": "🔁 X (Twitter): Community Accounts", + "anchor": "x-twitter-community-accounts" }, { "depth": 3, - "title": "Fund Receiver Sovereign Account", - "anchor": "fund-receiver-sovereign-account" + "title": "🗣️ Polkadot Forum", + "anchor": "polkadot-forum" }, { "depth": 3, - "title": "Create Channel Accepting Extrinsic", - "anchor": "create-channel-accepting-extrinsic" + "title": "🧑‍⚖️ Polkassembly: OpenGov", + "anchor": "polkassembly-opengov" }, { "depth": 3, - "title": "Craft and Submit the XCM Message from the Receiver", - "anchor": "craft-and-submit-the-xcm-message-from-the-receiver" + "title": "📸 Instagram", + "anchor": "instagram" } ], "stats": { - "chars": 10934, - "words": 1549, + "chars": 2426, + "words": 295, "headings": 10, - "estimated_token_count_total": 2285 + "estimated_token_count_total": 579 }, - "hash": "sha256:b8de1228b9976765accd18ff724038bed6f2449367f500bc3177ab2a053abe63", + "hash": "sha256:4c33d0ec5026128b3bfdb1dfc1f4b29487404eaa8043071d536e8638356c6e1f", "token_estimator": "heuristic-v1" }, { - "id": "parachains-interoperability-channels-with-system-parachains", - "title": "Opening HRMP Channels with System Parachains", - "slug": "parachains-interoperability-channels-with-system-parachains", + "id": "get-support-get-in-touch", + "title": "Get in Touch", + "slug": "get-support-get-in-touch", "categories": [ - "Parachains" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-interoperability-channels-with-system-parachains.md", - "html_url": "https://docs.polkadot.com/parachains/interoperability/channels-with-system-parachains/", - "preview": "While establishing Horizontal Relay-routed Message Passing (HRMP) channels between regular parachains involves a two-step request and acceptance procedure, opening channels with system parachains follows a more straightforward approach.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/get-support-get-in-touch.md", + "html_url": "https://docs.polkadot.com/get-support/get-in-touch/", + "preview": "Use one of the channels below to get live technical support or ask questions.", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "Need Help Fast?", + "anchor": "need-help-fast" }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "📱 Telegram: Polkadot Developer Support", + "anchor": "telegram-polkadot-developer-support" }, { "depth": 2, - "title": "Procedure to Establish an HRMP Channel", - "anchor": "procedure-to-establish-an-hrmp-channel" - }, - { - "depth": 3, - "title": "Fund Parachain Sovereign Account", - "anchor": "fund-parachain-sovereign-account" - }, - { - "depth": 3, - "title": "Create Establish Channel with System Extrinsic", - "anchor": "create-establish-channel-with-system-extrinsic" + "title": "🔌 Discord: Polkadot Official Server", + "anchor": "discord-polkadot-official-server" }, { - "depth": 3, - "title": "Craft and Submit the XCM Message", - "anchor": "craft-and-submit-the-xcm-message" + "depth": 2, + "title": "🧬 Matrix: Polkadot Developer Support", + "anchor": "matrix-polkadot-developer-support" } ], "stats": { - "chars": 7203, - "words": 889, - "headings": 6, - "estimated_token_count_total": 1427 + "chars": 1949, + "words": 258, + "headings": 4, + "estimated_token_count_total": 557 }, - "hash": "sha256:b501d99c464fb049d46676827b6a325a195c90617becc4a7db305441c115350a", + "hash": "sha256:993e93b05c8fbdfc2f7510c61ac86bc4c2ff0f03e573695b2f260933c8b62f78", "token_estimator": "heuristic-v1" }, { - "id": "parachains-interoperability-get-started", - "title": "Introduction to XCM", - "slug": "parachains-interoperability-get-started", + "id": "get-support", + "title": "Support", + "slug": "get-support", "categories": [ - "Basics", - "Polkadot Protocol" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-interoperability-get-started.md", - "html_url": "https://docs.polkadot.com/parachains/interoperability/get-started/", - "preview": "Polkadot’s unique value lies in its ability to enable interoperability between parachains and other blockchain systems. At the core of this capability is XCM (Cross-Consensus Messaging)—a flexible messaging format that facilitates communication and collaboration between independent consensus systems.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/get-support.md", + "html_url": "https://docs.polkadot.com/get-support/", + "preview": "Use one of the channels below to get live technical support or ask questions.", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" - }, - { - "depth": 2, - "title": "Messaging Format", - "anchor": "messaging-format" - }, - { - "depth": 2, - "title": "The Four Principles of XCM", - "anchor": "the-four-principles-of-xcm" - }, - { - "depth": 2, - "title": "The XCM Tech Stack", - "anchor": "the-xcm-tech-stack" - }, - { - "depth": 2, - "title": "Core Functionalities of XCM", - "anchor": "core-functionalities-of-xcm" + "title": "Need More than Just Documentation?", + "anchor": "need-more-than-just-documentation" }, { "depth": 2, - "title": "XCM Example", - "anchor": "xcm-example" + "title": "What You Can Do Here", + "anchor": "what-you-can-do-here" }, { "depth": 2, - "title": "Overview", - "anchor": "overview" + "title": "Help Us Improve", + "anchor": "help-us-improve" } ], "stats": { - "chars": 7450, - "words": 974, - "headings": 7, - "estimated_token_count_total": 1501 + "chars": 1658, + "words": 244, + "headings": 3, + "estimated_token_count_total": 280 }, - "hash": "sha256:3b26606dd5310c4b8ade5d05270ebf1e06f59afcda4ca2b985e07948215a197e", + "hash": "sha256:5bdc575ac798a971867a15651c2b4d5139bf0b1fe6854d1865deff280ae6d7f6", "token_estimator": "heuristic-v1" }, { - "id": "parachains-launch-a-parachain-deploy-to-polkadot", - "title": "Deploy on Polkadot", - "slug": "parachains-launch-a-parachain-deploy-to-polkadot", + "id": "index", + "title": "Polkadot Developer Docs", + "slug": "index", "categories": [ - "Parachains" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-launch-a-parachain-deploy-to-polkadot.md", - "html_url": "https://docs.polkadot.com/parachains/launch-a-parachain/deploy-to-polkadot/", - "preview": "Previously, you learned how to [choose and set up a parachain template](/parachains/launch-a-parachain/choose-a-template/){target=\\_blank}. Now, you'll take the next step towards a production-like environment by deploying your parachain to the Polkadot TestNet. Deploying to a TestNet is a crucial step for validating your parachain's functionality and preparing it for eventual MainNet deployment.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/index.md", + "html_url": "https://docs.polkadot.com/index/", + "preview": "Explore everything you need to start building on top of Polkadot, a protocol that provides parachains with shared security and interoperability using XCM.", + "outline": [], + "stats": { + "chars": 0, + "words": 0, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "token_estimator": "heuristic-v1" + }, + { + "id": "nodes-and-validators-run-a-node-bootnode", + "title": "Set Up a Bootnode", + "slug": "nodes-and-validators-run-a-node-bootnode", + "categories": [ + "Infrastructure" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-node-bootnode.md", + "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-node/bootnode/", + "preview": "Bootnodes are essential for helping blockchain nodes discover peers and join the network. When a node starts, it needs to find other nodes, and bootnodes provide an initial point of contact. Once connected, a node can expand its peer connections and play its role in the network, like participating as a validator.", "outline": [ { "depth": 2, @@ -3063,64 +3675,64 @@ }, { "depth": 2, - "title": "Get Started with an Account and Tokens", - "anchor": "get-started-with-an-account-and-tokens" + "title": "Prerequisites", + "anchor": "prerequisites" }, { "depth": 2, - "title": "Reserve a Parachain Identifier", - "anchor": "reserve-a-parachain-identifier" + "title": "Accessing the Bootnode", + "anchor": "accessing-the-bootnode" }, { "depth": 2, - "title": "Generate Custom Keys for Your Collators", - "anchor": "generate-custom-keys-for-your-collators" + "title": "Node Key", + "anchor": "node-key" }, { "depth": 2, - "title": "Generate the Chain Specification", - "anchor": "generate-the-chain-specification" + "title": "Running the Bootnode", + "anchor": "running-the-bootnode" }, { "depth": 2, - "title": "Export Required Files", - "anchor": "export-required-files" + "title": "Testing Bootnode Connection", + "anchor": "testing-bootnode-connection" }, { - "depth": 2, - "title": "Register a Parathread", - "anchor": "register-a-parathread" + "depth": 3, + "title": "P2P", + "anchor": "p2p" }, { - "depth": 2, - "title": "Start the Collator Node", - "anchor": "start-the-collator-node" + "depth": 3, + "title": "P2P/WS", + "anchor": "p2pws" }, { - "depth": 2, - "title": "Producing Blocks", - "anchor": "producing-blocks" + "depth": 3, + "title": "P2P/WSS", + "anchor": "p2pwss" } ], "stats": { - "chars": 20252, - "words": 2357, + "chars": 4538, + "words": 647, "headings": 9, - "estimated_token_count_total": 4129 + "estimated_token_count_total": 1044 }, - "hash": "sha256:7309d3487c653951bf264013eb3402a72a1cbb5e0b6f89ae4e678f239cd63b80", + "hash": "sha256:d84a5af1a0237a911d25a68c077f508ebbce608f673ef4f9055e8e434daa96b9", "token_estimator": "heuristic-v1" }, { - "id": "parachains-launch-a-parachain-obtain-coretime", - "title": "Obtain Coretime", - "slug": "parachains-launch-a-parachain-obtain-coretime", + "id": "nodes-and-validators-run-a-node-full-node", + "title": "Set Up a Node", + "slug": "nodes-and-validators-run-a-node-full-node", "categories": [ - "Parachains" + "Infrastructure" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-launch-a-parachain-obtain-coretime.md", - "html_url": "https://docs.polkadot.com/parachains/launch-a-parachain/obtain-coretime/", - "preview": "After deploying a parachain to Paseo in the [Deploy on Polkadot](/parachains/launch-a-parachain/deploy-to-polkadot/){target=\\_blank} tutorial, the next critical step is obtaining coretime. Coretime is the mechanism through which validation resources are allocated from the relay chain to your parachain. Your parachain can only produce and finalize blocks on the relay chain by obtaining coretime.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-node-full-node.md", + "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-node/full-node/", + "preview": "Running a node on Polkadot provides direct interaction with the network, enhanced privacy, and full control over RPC requests, transactions, and data queries. As the backbone of the network, nodes ensure decentralized data propagation, transaction validation, and seamless communication across the ecosystem.", "outline": [ { "depth": 2, @@ -3129,80 +3741,64 @@ }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" - }, - { - "depth": 2, - "title": "Order On-Demand Coretime", - "anchor": "order-on-demand-coretime" + "title": "Set Up a Node", + "anchor": "set-up-a-node" }, { "depth": 3, - "title": "On-Demand Extrinsics", - "anchor": "on-demand-extrinsics" + "title": "Prerequisites", + "anchor": "prerequisites" }, { "depth": 3, - "title": "Place an On-Demand Order", - "anchor": "place-an-on-demand-order" - }, - { - "depth": 2, - "title": "Purchase Bulk Coretime", - "anchor": "purchase-bulk-coretime" + "title": "Install and Build the Polkadot Binary", + "anchor": "install-and-build-the-polkadot-binary" }, { "depth": 3, - "title": "Connect Your Wallet to RegionX", - "anchor": "connect-your-wallet-to-regionx" + "title": "Use Docker", + "anchor": "use-docker" }, { - "depth": 3, - "title": "Obtain Coretime Chain Funds", - "anchor": "obtain-coretime-chain-funds" + "depth": 2, + "title": "Configure and Run Your Node", + "anchor": "configure-and-run-your-node" }, { "depth": 3, - "title": "Purchase a Core", - "anchor": "purchase-a-core" + "title": "RPC Configurations", + "anchor": "rpc-configurations" }, { - "depth": 3, - "title": "Verify Your Purchase", - "anchor": "verify-your-purchase" + "depth": 2, + "title": "Sync Your Node", + "anchor": "sync-your-node" }, { "depth": 3, - "title": "Assign Your Parachain to the Core", - "anchor": "assign-your-parachain-to-the-core" - }, - { - "depth": 2, - "title": "Next Steps", - "anchor": "next-steps" + "title": "Connect to Your Node", + "anchor": "connect-to-your-node" } ], "stats": { - "chars": 9049, - "words": 1345, - "headings": 12, - "estimated_token_count_total": 2103 + "chars": 15944, + "words": 2481, + "headings": 9, + "estimated_token_count_total": 4196 }, - "hash": "sha256:15154f211753665d9af70dc81d15ceb3f0954e3febf9282c68c0074881d620c6", + "hash": "sha256:b83e3f77bd30ac8c8fb00a193bbec33cd641d94f1a37ac611dea32326c3d77b0", "token_estimator": "heuristic-v1" }, { - "id": "parachains-launch-a-parachain-set-up-the-parachain-template", - "title": "Set Up the Polkadot SDK Parachain Template", - "slug": "parachains-launch-a-parachain-set-up-the-parachain-template", + "id": "nodes-and-validators-run-a-node-secure-wss", + "title": "Set Up Secure WebSocket", + "slug": "nodes-and-validators-run-a-node-secure-wss", "categories": [ - "Basics", - "Parachains" + "Infrastructure" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-launch-a-parachain-set-up-the-parachain-template.md", - "html_url": "https://docs.polkadot.com/parachains/launch-a-parachain/set-up-the-parachain-template/", - "preview": "The [Polkadot SDK](https://github.com/paritytech/polkadot-sdk){target=\\_blank} includes several [templates](/parachains/customize-runtime/#starting-templates){target=\\_blank} designed to help you quickly start building your own blockchain. Each template offers a different level of configuration, from minimal setups to feature-rich environments, allowing you to choose the foundation that best fits your project's needs.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-node-secure-wss.md", + "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-node/secure-wss/", + "preview": "Ensuring secure WebSocket communication is crucial for maintaining the integrity and security of a Polkadot or Kusama node when interacting with remote clients. This guide walks you through setting up a secure WebSocket (WSS) connection for your node by leveraging SSL encryption with popular web server proxies like nginx or Apache.", "outline": [ { "depth": 2, @@ -3211,74 +3807,54 @@ }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" - }, - { - "depth": 2, - "title": "Polkadot SDK Utility Tools", - "anchor": "polkadot-sdk-utility-tools" + "title": "Secure a WebSocket Port", + "anchor": "secure-a-websocket-port" }, { - "depth": 2, - "title": "Clone the Template", - "anchor": "clone-the-template" + "depth": 3, + "title": "Obtain an SSL Certificate", + "anchor": "obtain-an-ssl-certificate" }, { "depth": 2, - "title": "Explore the Project Structure", - "anchor": "explore-the-project-structure" + "title": "Install a Proxy Server", + "anchor": "install-a-proxy-server" }, { - "depth": 2, - "title": "Compile the Runtime", - "anchor": "compile-the-runtime" + "depth": 3, + "title": "Use nginx", + "anchor": "use-nginx" }, { - "depth": 2, - "title": "Verify the Build", - "anchor": "verify-the-build" + "depth": 3, + "title": "Use Apache2", + "anchor": "use-apache2" }, { "depth": 2, - "title": "Run the Node Locally", - "anchor": "run-the-node-locally" - }, - { - "depth": 2, - "title": "Interact with the Node", - "anchor": "interact-with-the-node" - }, - { - "depth": 2, - "title": "Stop the Node", - "anchor": "stop-the-node" - }, - { - "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "Connect to the Node", + "anchor": "connect-to-the-node" } ], "stats": { - "chars": 10588, - "words": 1510, - "headings": 11, - "estimated_token_count_total": 2375 + "chars": 5568, + "words": 774, + "headings": 7, + "estimated_token_count_total": 1280 }, - "hash": "sha256:380063fe7c00ae8bde05fa76688b8ae4902e6566147f1cfe0e0260ad1aa05aa6", + "hash": "sha256:992082e4ad87348b283f6c37ea886ae0e7bf016852b6470000876f3d169c65a4", "token_estimator": "heuristic-v1" }, { - "id": "parachains-runtime-maintenance-runtime-upgrades", - "title": "Runtime Upgrades", - "slug": "parachains-runtime-maintenance-runtime-upgrades", + "id": "nodes-and-validators-run-a-validator-onboarding-and-offboarding-key-management", + "title": "Validator Key Management", + "slug": "nodes-and-validators-run-a-validator-onboarding-and-offboarding-key-management", "categories": [ - "Parachains" + "Infrastructure" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-runtime-maintenance-runtime-upgrades.md", - "html_url": "https://docs.polkadot.com/parachains/runtime-maintenance/runtime-upgrades/", - "preview": "One of the defining features of Polkadot SDK-based blockchains is the ability to perform forkless runtime upgrades. Unlike traditional blockchains, which require hard forks and node coordination for upgrades, Polkadot networks enable seamless updates without network disruption.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-key-management.md", + "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/onboarding-and-offboarding/key-management/", + "preview": "After setting up your node environment as shown in the [Setup](/nodes-and-validators/run-a-validator/onboarding-and-offboarding/set-up-validator/){target=\\_blank} section, you'll need to configure multiple keys for your validator to operate properly. This includes setting up session keys, which are essential for participating in the consensus process, and configuring a node key that maintains a stable network identity. This guide walks you through the key management process, showing you how to g", "outline": [ { "depth": 2, @@ -3287,44 +3863,59 @@ }, { "depth": 2, - "title": "How Runtime Upgrades Work", - "anchor": "how-runtime-upgrades-work" + "title": "Set Session Keys", + "anchor": "set-session-keys" }, { "depth": 3, - "title": "Runtime Versioning", - "anchor": "runtime-versioning" + "title": "Generate Session Keys", + "anchor": "generate-session-keys" }, { "depth": 3, - "title": "Accessing the Runtime Version", - "anchor": "accessing-the-runtime-version" + "title": "Submit Transaction to Set Keys", + "anchor": "submit-transaction-to-set-keys" + }, + { + "depth": 3, + "title": "Verify Session Key Setup", + "anchor": "verify-session-key-setup" }, { "depth": 2, - "title": "Storage Migrations", - "anchor": "storage-migrations" + "title": "Set the Node Key", + "anchor": "set-the-node-key" + }, + { + "depth": 3, + "title": "Generate the Node Key", + "anchor": "generate-the-node-key" + }, + { + "depth": 3, + "title": "Set Node Key", + "anchor": "set-node-key" } ], "stats": { - "chars": 5837, - "words": 811, - "headings": 5, - "estimated_token_count_total": 1161 + "chars": 8227, + "words": 1183, + "headings": 8, + "estimated_token_count_total": 1840 }, - "hash": "sha256:ec31270001a6cd9d0a8ecb7974ad161d5c1ef4d3023d5a6af9fbc5a6ca46cbca", + "hash": "sha256:0fb5a83835aab263c0b9aa886028c8aa8a2d6d0897d7b9fff4b5258835d30dfe", "token_estimator": "heuristic-v1" }, { - "id": "parachains-runtime-maintenance-storage-migrations", - "title": "Storage Migrations", - "slug": "parachains-runtime-maintenance-storage-migrations", + "id": "nodes-and-validators-run-a-validator-onboarding-and-offboarding-set-up-validator", + "title": "Set Up a Validator", + "slug": "nodes-and-validators-run-a-validator-onboarding-and-offboarding-set-up-validator", "categories": [ - "Parachains" + "Infrastructure" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-runtime-maintenance-storage-migrations.md", - "html_url": "https://docs.polkadot.com/parachains/runtime-maintenance/storage-migrations/", - "preview": "Storage migrations are a crucial part of the runtime upgrade process. They allow you to update the [storage items](https://paritytech.github.io/polkadot-sdk/master/frame_support/pallet_macros/attr.storage.html){target=\\_blank} of your blockchain, adapting to changes in the runtime. Whenever you change the encoding or data types used to represent data in storage, you'll need to provide a storage migration to ensure the runtime can correctly interpret the existing stored values in the new runtime", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-set-up-validator.md", + "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/onboarding-and-offboarding/set-up-validator/", + "preview": "Setting up a Polkadot validator node is essential for securing the network and earning staking rewards. This guide walks you through the technical steps to set up a validator, from installing the necessary software to managing keys and synchronizing your node with the chain.", "outline": [ { "depth": 2, @@ -3333,69 +3924,79 @@ }, { "depth": 2, - "title": "Storage Migration Scenarios", - "anchor": "storage-migration-scenarios" + "title": "Prerequisites", + "anchor": "prerequisites" }, { "depth": 2, - "title": "Implement Storage Migrations", - "anchor": "implement-storage-migrations" + "title": "Initial Setup", + "anchor": "initial-setup" }, { "depth": 3, - "title": "Core Migration Function", - "anchor": "core-migration-function" + "title": "Install Network Time Protocol Client", + "anchor": "install-network-time-protocol-client" }, { "depth": 3, - "title": "Migration Testing Hooks", - "anchor": "migration-testing-hooks" + "title": "Verify Landlock is Activated", + "anchor": "verify-landlock-is-activated" + }, + { + "depth": 2, + "title": "Install the Polkadot Binaries", + "anchor": "install-the-polkadot-binaries" }, { "depth": 3, - "title": "Migration Structure", - "anchor": "migration-structure" + "title": "Install from Official Releases", + "anchor": "install-from-official-releases" }, { "depth": 3, - "title": "Migration Organization", - "anchor": "migration-organization" + "title": "Install with Package Managers", + "anchor": "install-with-package-managers" }, { "depth": 3, - "title": "Scheduling Migrations", - "anchor": "scheduling-migrations" + "title": "Install with Ansible", + "anchor": "install-with-ansible" }, { - "depth": 2, - "title": "Single-Block Migrations", - "anchor": "single-block-migrations" + "depth": 3, + "title": "Install with Docker", + "anchor": "install-with-docker" + }, + { + "depth": 3, + "title": "Build from Sources", + "anchor": "build-from-sources" }, { "depth": 2, - "title": "Multi Block Migrations", - "anchor": "multi-block-migrations" + "title": "Verify Installation", + "anchor": "verify-installation" } ], "stats": { - "chars": 18500, - "words": 2363, - "headings": 10, - "estimated_token_count_total": 4014 + "chars": 11921, + "words": 1678, + "headings": 12, + "estimated_token_count_total": 2592 }, - "hash": "sha256:55dc252fdecf1590048ce8d009b822e90231442abe81e9593cf1635944a31336", + "hash": "sha256:d2c1c91734bc8185057d8eeec6829ea91e0316f7ba884c5dc3922a5e5778815e", "token_estimator": "heuristic-v1" }, { - "id": "parachains-runtime-maintenance-unlock-parachains", - "title": "Unlock a Parachain", - "slug": "parachains-runtime-maintenance-unlock-parachains", + "id": "nodes-and-validators-run-a-validator-onboarding-and-offboarding-start-validating", + "title": "Start Validating", + "slug": "nodes-and-validators-run-a-validator-onboarding-and-offboarding-start-validating", "categories": [ - "Parachains" + "Infrastructure" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-runtime-maintenance-unlock-parachains.md", - "html_url": "https://docs.polkadot.com/parachains/runtime-maintenance/unlock-parachains/", - "preview": "Parachain locks are a critical security mechanism in the Polkadot ecosystem designed to maintain decentralization during the parachain lifecycle. These locks prevent potential centralization risks that could emerge during the early stages of parachain operation.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-start-validating.md", + "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/onboarding-and-offboarding/start-validating/", + "preview": "After configuring your node keys as shown in the [Key Management](/nodes-and-validators/run-a-validator/onboarding-and-offboarding/key-management/){target=\\_blank} section and ensuring your system is set up, you're ready to begin the validator setup process. This guide will walk you through choosing a network, synchronizing your node with the blockchain, bonding your DOT tokens, and starting your validator.", "outline": [ { "depth": 2, @@ -3404,122 +4005,84 @@ }, { "depth": 2, - "title": "Check If the Parachain Is Locked", - "anchor": "check-if-the-parachain-is-locked" + "title": "Choose a Network", + "anchor": "choose-a-network" }, { "depth": 2, - "title": "How to Unlock a Parachain", - "anchor": "how-to-unlock-a-parachain" + "title": "Synchronize Chain Data", + "anchor": "synchronize-chain-data" }, { "depth": 3, - "title": "Prepare the Unlock Call", - "anchor": "prepare-the-unlock-call" + "title": "Database Snapshot Services", + "anchor": "database-snapshot-services" }, { - "depth": 3, - "title": "Fund the Sovereign Account", - "anchor": "fund-the-sovereign-account" + "depth": 2, + "title": "Bond DOT", + "anchor": "bond-dot" }, { "depth": 3, - "title": "Craft and Submit the XCM", - "anchor": "craft-and-submit-the-xcm" - } - ], - "stats": { - "chars": 9232, - "words": 1276, - "headings": 6, - "estimated_token_count_total": 2028 - }, - "hash": "sha256:e408d05199cc184fc6fe8bb212efb3c9aa6cb79258977e07566692176c912def", - "token_estimator": "heuristic-v1" - }, - { - "id": "parachains-testing-fork-a-parachain", - "title": "Get Started", - "slug": "parachains-testing-fork-a-parachain", - "categories": [ - "Parachains", - "Tooling" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-testing-fork-a-parachain.md", - "html_url": "https://docs.polkadot.com/parachains/testing/fork-a-parachain/", - "preview": "[Chopsticks](https://github.com/AcalaNetwork/chopsticks/){target=\\_blank}, developed by the [Acala Foundation](https://github.com/AcalaNetwork){target=\\_blank}, is a versatile tool tailored for developers working on Polkadot SDK-based blockchains. With Chopsticks, you can fork live chains locally, replay blocks to analyze extrinsics, and simulate complex scenarios like XCM interactions all without deploying to a live network.", - "outline": [ - { - "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "Bonding DOT on Polkadot.js Apps", + "anchor": "bonding-dot-on-polkadotjs-apps" }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "Validate", + "anchor": "validate" }, { - "depth": 2, - "title": "Install Chopsticks", - "anchor": "install-chopsticks" + "depth": 3, + "title": "Verify Sync via Telemetry", + "anchor": "verify-sync-via-telemetry" }, { "depth": 3, - "title": "Global Installation", - "anchor": "global-installation" + "title": "Activate using Polkadot.js Apps", + "anchor": "activate-using-polkadotjs-apps" }, { "depth": 3, - "title": "Local Installation", - "anchor": "local-installation" + "title": "Monitor Validation Status and Slots", + "anchor": "monitor-validation-status-and-slots" }, { "depth": 2, - "title": "Configure Chopsticks", - "anchor": "configure-chopsticks" + "title": "Run a Validator Using Systemd", + "anchor": "run-a-validator-using-systemd" }, { "depth": 3, - "title": "Configuration File", - "anchor": "configuration-file" + "title": "Create the Systemd Service File", + "anchor": "create-the-systemd-service-file" }, { "depth": 3, - "title": "CLI Flags", - "anchor": "cli-flags" - }, - { - "depth": 2, - "title": "WebSocket Commands", - "anchor": "websocket-commands" - }, - { - "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "Run the Service", + "anchor": "run-the-service" } ], "stats": { - "chars": 10894, - "words": 1330, - "headings": 10, - "estimated_token_count_total": 2614 + "chars": 15820, + "words": 2446, + "headings": 13, + "estimated_token_count_total": 3861 }, - "hash": "sha256:4325cdd697814b8043db808da3dee86d3d9c6fc7dd523aae7fe8914d59d1b39c", + "hash": "sha256:c74cfa542fe7a5235b81120f0004576aea83e0d35458201689b68d87f2969749", "token_estimator": "heuristic-v1" }, { - "id": "parachains-testing-run-a-parachain-network", - "title": "Get Started", - "slug": "parachains-testing-run-a-parachain-network", + "id": "nodes-and-validators-run-a-validator-onboarding-and-offboarding-stop-validating", + "title": "Stop Validating", + "slug": "nodes-and-validators-run-a-validator-onboarding-and-offboarding-stop-validating", "categories": [ - "Parachains", - "Tooling" + "Infrastructure" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-testing-run-a-parachain-network.md", - "html_url": "https://docs.polkadot.com/parachains/testing/run-a-parachain-network/", - "preview": "Zombienet is a robust testing framework designed for Polkadot SDK-based blockchain networks. It enables developers to efficiently deploy and test ephemeral blockchain environments on platforms like Kubernetes, Podman, and native setups. With its simple and versatile CLI, Zombienet provides an all-in-one solution for spawning networks, running tests, and validating performance.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-stop-validating.md", + "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/onboarding-and-offboarding/stop-validating/", + "preview": "If you're ready to stop validating on Polkadot, there are essential steps to ensure a smooth transition while protecting your funds and account integrity. Whether you're taking a break for maintenance or unbonding entirely, you'll need to chill your validator, purge session keys, and unbond your tokens. This guide explains how to use Polkadot's tools and extrinsics to safely withdraw from validation activities, safeguarding your account's future usability.", "outline": [ { "depth": 2, @@ -3528,534 +4091,642 @@ }, { "depth": 2, - "title": "Install Zombienet", - "anchor": "install-zombienet" + "title": "Pause Versus Stop", + "anchor": "pause-versus-stop" }, { "depth": 2, - "title": "Providers", - "anchor": "providers" + "title": "Chill Validator", + "anchor": "chill-validator" + }, + { + "depth": 2, + "title": "Purge Validator Session Keys", + "anchor": "purge-validator-session-keys" + }, + { + "depth": 2, + "title": "Unbond Your Tokens", + "anchor": "unbond-your-tokens" + } + ], + "stats": { + "chars": 3230, + "words": 500, + "headings": 5, + "estimated_token_count_total": 629 + }, + "hash": "sha256:0d6db361bfa7a3022849bbe39989bfdac0429537498d7f534adadec131afca98", + "token_estimator": "heuristic-v1" + }, + { + "id": "nodes-and-validators-run-a-validator-operational-tasks-general-management", + "title": "General Management", + "slug": "nodes-and-validators-run-a-validator-operational-tasks-general-management", + "categories": [ + "Infrastructure" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-operational-tasks-general-management.md", + "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/operational-tasks/general-management/", + "preview": "Validator performance is pivotal in maintaining the security and stability of the Polkadot network. As a validator, optimizing your setup ensures efficient transaction processing, minimizes latency, and maintains system reliability during high-demand periods. Proper configuration and proactive monitoring also help mitigate risks like slashing and service interruptions.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Configuration Optimization", + "anchor": "configuration-optimization" }, { "depth": 3, - "title": "Kubernetes", - "anchor": "kubernetes" + "title": "Deactivate Simultaneous Multithreading", + "anchor": "deactivate-simultaneous-multithreading" }, { "depth": 3, - "title": "Podman", - "anchor": "podman" + "title": "Deactivate Automatic NUMA Balancing", + "anchor": "deactivate-automatic-numa-balancing" }, { "depth": 3, - "title": "Local Provider", - "anchor": "local-provider" + "title": "Spectre and Meltdown Mitigations", + "anchor": "spectre-and-meltdown-mitigations" }, { "depth": 2, - "title": "Configure Zombienet", - "anchor": "configure-zombienet" + "title": "Monitor Your Node", + "anchor": "monitor-your-node" }, { "depth": 3, - "title": "Configuration Files", - "anchor": "configuration-files" + "title": "Environment Setup", + "anchor": "environment-setup" }, { "depth": 3, - "title": "CLI Usage", - "anchor": "cli-usage" + "title": "Install and Configure Prometheus", + "anchor": "install-and-configure-prometheus" }, { "depth": 3, - "title": "Settings", - "anchor": "settings" + "title": "Start Prometheus", + "anchor": "start-prometheus" }, { "depth": 3, - "title": "Relay Chain Configuration", - "anchor": "relay-chain-configuration" + "title": "Install and Configure Grafana", + "anchor": "install-and-configure-grafana" }, { "depth": 3, - "title": "Parachain Configuration", - "anchor": "parachain-configuration" + "title": "Install and Configure Alertmanager", + "anchor": "install-and-configure-alertmanager" + }, + { + "depth": 2, + "title": "Secure Your Validator", + "anchor": "secure-your-validator" }, { "depth": 3, - "title": "XCM Configuration", - "anchor": "xcm-configuration" + "title": "Key Management", + "anchor": "key-management" + }, + { + "depth": 3, + "title": "Signing Outside the Client", + "anchor": "signing-outside-the-client" + }, + { + "depth": 3, + "title": "Secure-Validator Mode", + "anchor": "secure-validator-mode" + }, + { + "depth": 3, + "title": "Linux Best Practices", + "anchor": "linux-best-practices" + }, + { + "depth": 3, + "title": "Validator Best Practices", + "anchor": "validator-best-practices" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "Additional Resources", + "anchor": "additional-resources" } ], "stats": { - "chars": 41636, - "words": 4599, - "headings": 14, - "estimated_token_count_total": 9871 + "chars": 26673, + "words": 3357, + "headings": 18, + "estimated_token_count_total": 5866 }, - "hash": "sha256:0d7e04fd952cc9d5bd8cdbfd87cc4004c5f95e896a16bc7f89dfc4caeac8f371", + "hash": "sha256:81eb0fe77f05155f1ec0511cd066120fc9994961e9d91e21b6666377e65b4586", "token_estimator": "heuristic-v1" }, { - "id": "reference-glossary", - "title": "Glossary", - "slug": "reference-glossary", + "id": "nodes-and-validators-run-a-validator-operational-tasks-pause-validating", + "title": "Pause Validating", + "slug": "nodes-and-validators-run-a-validator-operational-tasks-pause-validating", "categories": [ - "Reference" + "Infrastructure" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-glossary.md", - "html_url": "https://docs.polkadot.com/reference/glossary/", - "preview": "Key definitions, concepts, and terminology specific to the Polkadot ecosystem are included here.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-operational-tasks-pause-validating.md", + "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/operational-tasks/pause-validating/", + "preview": "If you need to temporarily stop participating in Polkadot staking activities without fully unbonding your funds, chilling your account allows you to do so efficiently. Chilling removes your node from active validation or nomination in the next era while keeping your funds bonded, making it ideal for planned downtimes or temporary pauses.", "outline": [ { "depth": 2, - "title": "Authority", - "anchor": "authority" + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Authority Round (Aura)", - "anchor": "authority-round-aura" + "title": "Chilling Your Node", + "anchor": "chilling-your-node" }, { "depth": 2, - "title": "Blind Assignment of Blockchain Extension (BABE)", - "anchor": "blind-assignment-of-blockchain-extension-babe" + "title": "Staking Election Timing Considerations", + "anchor": "staking-election-timing-considerations" }, { "depth": 2, - "title": "Block Author", - "anchor": "block-author" + "title": "Chilling as a Nominator", + "anchor": "chilling-as-a-nominator" }, { "depth": 2, - "title": "Byzantine Fault Tolerance (BFT)", - "anchor": "byzantine-fault-tolerance-bft" - }, - { - "depth": 3, - "title": "Byzantine Failure", - "anchor": "byzantine-failure" - }, - { - "depth": 3, - "title": "Practical Byzantine Fault Tolerance (pBFT)", - "anchor": "practical-byzantine-fault-tolerance-pbft" - }, - { - "depth": 3, - "title": "Preimage", - "anchor": "preimage" + "title": "Chilling as a Validator", + "anchor": "chilling-as-a-validator" }, { "depth": 2, - "title": "Call", - "anchor": "call" - }, + "title": "Chill Other", + "anchor": "chill-other" + } + ], + "stats": { + "chars": 4439, + "words": 679, + "headings": 6, + "estimated_token_count_total": 861 + }, + "hash": "sha256:1af153570ce57bd5b52d08493a300996765686f2a6d04519a2e0aa91191612c1", + "token_estimator": "heuristic-v1" + }, + { + "id": "nodes-and-validators-run-a-validator-operational-tasks-upgrade-your-node", + "title": "Upgrade a Validator Node", + "slug": "nodes-and-validators-run-a-validator-operational-tasks-upgrade-your-node", + "categories": [ + "Infrastructure" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-operational-tasks-upgrade-your-node.md", + "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/operational-tasks/upgrade-your-node/", + "preview": "Upgrading a Polkadot validator node is essential for staying current with network updates and maintaining optimal performance. This guide covers routine and extended maintenance scenarios, including software upgrades and major server changes. Following these steps, you can manage session keys and transition smoothly between servers without risking downtime, slashing, or network disruptions. The process requires strategic planning, especially if you need to perform long-lead maintenance, ensuring", + "outline": [ { "depth": 2, - "title": "Chain Specification", - "anchor": "chain-specification" + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Collator", - "anchor": "collator" + "title": "Prerequisites", + "anchor": "prerequisites" }, { "depth": 2, - "title": "Collective", - "anchor": "collective" + "title": "Session Keys", + "anchor": "session-keys" }, { "depth": 2, - "title": "Consensus", - "anchor": "consensus" + "title": "Keystore", + "anchor": "keystore" }, { "depth": 2, - "title": "Consensus Algorithm", - "anchor": "consensus-algorithm" + "title": "Upgrade Using Backup Validator", + "anchor": "upgrade-using-backup-validator" }, { - "depth": 2, - "title": "Consensus Engine", - "anchor": "consensus-engine" + "depth": 3, + "title": "Session `N`", + "anchor": "session-n" }, { - "depth": 2, - "title": "Coretime", - "anchor": "coretime" - }, + "depth": 3, + "title": "Session `N+3`", + "anchor": "session-n3" + } + ], + "stats": { + "chars": 5650, + "words": 851, + "headings": 7, + "estimated_token_count_total": 1185 + }, + "hash": "sha256:888230b128d8c648c4f06a18d3b1d1b06dd1bf22a0de4add1f28210ffccb2549", + "token_estimator": "heuristic-v1" + }, + { + "id": "nodes-and-validators-run-a-validator-requirements", + "title": "Validator Requirements", + "slug": "nodes-and-validators-run-a-validator-requirements", + "categories": [ + "Infrastructure" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-requirements.md", + "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/requirements/", + "preview": "Running a validator in the Polkadot ecosystem is essential for maintaining network security and decentralization. Validators are responsible for validating transactions and adding new blocks to the chain, ensuring the system operates smoothly. In return for their services, validators earn rewards. However, the role comes with inherent risks, such as slashing penalties for misbehavior or technical failures. If you’re new to validation, starting on Kusama provides a lower-stakes environment to gai", + "outline": [ { "depth": 2, - "title": "Development Phrase", - "anchor": "development-phrase" + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Digest", - "anchor": "digest" + "title": "Prerequisites", + "anchor": "prerequisites" }, { "depth": 2, - "title": "Dispatchable", - "anchor": "dispatchable" + "title": "Minimum Hardware Requirements", + "anchor": "minimum-hardware-requirements" }, { "depth": 2, - "title": "Events", - "anchor": "events" + "title": "VPS Provider List", + "anchor": "vps-provider-list" }, { "depth": 2, - "title": "Executor", - "anchor": "executor" - }, + "title": "Minimum Bond Requirement", + "anchor": "minimum-bond-requirement" + } + ], + "stats": { + "chars": 6842, + "words": 944, + "headings": 5, + "estimated_token_count_total": 1485 + }, + "hash": "sha256:46435b97c37ef6798d2c75c69df31c5e5f07e04b218c370ec5af6b1838d43aac", + "token_estimator": "heuristic-v1" + }, + { + "id": "nodes-and-validators-run-a-validator-staking-mechanics-offenses-and-slashes", + "title": "Offenses and Slashes", + "slug": "nodes-and-validators-run-a-validator-staking-mechanics-offenses-and-slashes", + "categories": [ + "Infrastructure" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-staking-mechanics-offenses-and-slashes.md", + "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/staking-mechanics/offenses-and-slashes/", + "preview": "In Polkadot's Nominated Proof of Stake (NPoS) system, validator misconduct is deterred through a combination of slashing, disabling, and reputation penalties. Validators and nominators who stake tokens face consequences for validator misbehavior, which range from token slashes to restrictions on network participation.", + "outline": [ { "depth": 2, - "title": "Existential Deposit", - "anchor": "existential-deposit" + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Extrinsic", - "anchor": "extrinsic" + "title": "Offenses", + "anchor": "offenses" }, { - "depth": 2, - "title": "Fork Choice Rule/Strategy", - "anchor": "fork-choice-rulestrategy" + "depth": 3, + "title": "Invalid Votes", + "anchor": "invalid-votes" }, { - "depth": 2, - "title": "FRAME (Framework for Runtime Aggregation of Modularized Entities)", - "anchor": "frame-framework-for-runtime-aggregation-of-modularized-entities" + "depth": 3, + "title": "Equivocations", + "anchor": "equivocations" }, { "depth": 2, - "title": "Full Node", - "anchor": "full-node" + "title": "Penalties", + "anchor": "penalties" }, { - "depth": 2, - "title": "Genesis Configuration", - "anchor": "genesis-configuration" + "depth": 3, + "title": "Slashing", + "anchor": "slashing" }, { - "depth": 2, - "title": "GRANDPA", - "anchor": "grandpa" + "depth": 3, + "title": "Disabling", + "anchor": "disabling" }, { - "depth": 2, - "title": "Header", - "anchor": "header" + "depth": 3, + "title": "Reputation Changes", + "anchor": "reputation-changes" }, + { + "depth": 3, + "title": "Penalties by Offense", + "anchor": "penalties-by-offense" + } + ], + "stats": { + "chars": 15427, + "words": 2103, + "headings": 9, + "estimated_token_count_total": 3409 + }, + "hash": "sha256:abe6bedab04f463ec07f554977b8d6355a5d2fad9bcda01cbe58568152295daa", + "token_estimator": "heuristic-v1" + }, + { + "id": "nodes-and-validators-run-a-validator-staking-mechanics-rewards", + "title": "Rewards Payout", + "slug": "nodes-and-validators-run-a-validator-staking-mechanics-rewards", + "categories": [ + "Infrastructure" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-staking-mechanics-rewards.md", + "html_url": "https://docs.polkadot.com/nodes-and-validators/run-a-validator/staking-mechanics/rewards/", + "preview": "Understanding how rewards are distributed to validators and nominators is essential for network participants. In Polkadot and Kusama, validators earn rewards based on their era points, which are accrued through actions like block production and parachain validation.", + "outline": [ { "depth": 2, - "title": "Hybrid Consensus", - "anchor": "hybrid-consensus" + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Inherent Transactions", - "anchor": "inherent-transactions" + "title": "Era Points", + "anchor": "era-points" }, { "depth": 2, - "title": "JSON-RPC", - "anchor": "json-rpc" + "title": "Reward Variance", + "anchor": "reward-variance" }, { "depth": 2, - "title": "Keystore", - "anchor": "keystore" + "title": "Payout Scheme", + "anchor": "payout-scheme" }, { "depth": 2, - "title": "Kusama", - "anchor": "kusama" + "title": "Running Multiple Validators", + "anchor": "running-multiple-validators" }, { "depth": 2, - "title": "libp2p", - "anchor": "libp2p" - }, + "title": "Nominators and Validator Payments", + "anchor": "nominators-and-validator-payments" + } + ], + "stats": { + "chars": 10976, + "words": 1753, + "headings": 6, + "estimated_token_count_total": 2588 + }, + "hash": "sha256:d5d6d72eb2cf10f624d84c65f2274f7df90acb5d071bf170bc8eae8d98a810a5", + "token_estimator": "heuristic-v1" + }, + { + "id": "parachains-customize-runtime-add-existing-pallets", + "title": "Add an Existing Pallet to the Runtime", + "slug": "parachains-customize-runtime-add-existing-pallets", + "categories": [ + "Parachains" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime-add-existing-pallets.md", + "html_url": "https://docs.polkadot.com/parachains/customize-runtime/add-existing-pallets/", + "preview": "The [Polkadot SDK Parachain Template](https://github.com/paritytech/polkadot-sdk-parachain-template){target=\\_blank} provides a functional runtime that includes default [FRAME](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/polkadot_sdk/frame_runtime/index.html){target=\\_blank} development modules ([pallets](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/polkadot_sdk/frame_runtime/pallet/index.html){target=\\_blank}) to help you get started building a custo", + "outline": [ { "depth": 2, - "title": "Light Client", - "anchor": "light-client" + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Metadata", - "anchor": "metadata" + "title": "Check Prerequisites", + "anchor": "check-prerequisites" }, { "depth": 2, - "title": "Nominated Proof of Stake (NPoS)", - "anchor": "nominated-proof-of-stake-npos" + "title": "Add an Existing Polkadot SDK Pallet to Your Runtime", + "anchor": "add-an-existing-polkadot-sdk-pallet-to-your-runtime" }, { - "depth": 2, - "title": "Oracle", - "anchor": "oracle" + "depth": 3, + "title": "Add an Existing Pallet as a Dependency", + "anchor": "add-an-existing-pallet-as-a-dependency" }, { - "depth": 2, - "title": "Origin", - "anchor": "origin" + "depth": 3, + "title": "Enable Standard Library Features", + "anchor": "enable-standard-library-features" }, { - "depth": 2, - "title": "Pallet", - "anchor": "pallet" + "depth": 3, + "title": "Review the Config Trait", + "anchor": "review-the-config-trait" }, { - "depth": 2, - "title": "Parachain", - "anchor": "parachain" + "depth": 3, + "title": "Implement the Config Trait", + "anchor": "implement-the-config-trait" }, { - "depth": 2, - "title": "Paseo", - "anchor": "paseo" + "depth": 3, + "title": "Add to Runtime Construct", + "anchor": "add-to-runtime-construct" }, { - "depth": 2, - "title": "Polkadot", - "anchor": "polkadot" + "depth": 3, + "title": "Verify the Runtime Compiles", + "anchor": "verify-the-runtime-compiles" }, { "depth": 2, - "title": "Polkadot Cloud", - "anchor": "polkadot-cloud" + "title": "Run Your Chain Locally", + "anchor": "run-your-chain-locally" }, { - "depth": 2, - "title": "Polkadot Hub", - "anchor": "polkadot-hub" + "depth": 3, + "title": "Generate a Chain Specification", + "anchor": "generate-a-chain-specification" }, { - "depth": 2, - "title": "PolkaVM", - "anchor": "polkavm" + "depth": 3, + "title": "Start the Parachain Node", + "anchor": "start-the-parachain-node" }, { - "depth": 2, - "title": "Relay Chain", - "anchor": "relay-chain" + "depth": 3, + "title": "Interact with the Pallet", + "anchor": "interact-with-the-pallet" }, { "depth": 2, - "title": "Rococo", - "anchor": "rococo" - }, - { - "depth": 2, - "title": "Runtime", - "anchor": "runtime" - }, - { - "depth": 2, - "title": "Slot", - "anchor": "slot" - }, - { - "depth": 2, - "title": "Sovereign Account", - "anchor": "sovereign-account" - }, - { - "depth": 2, - "title": "SS58 Address Format", - "anchor": "ss58-address-format" - }, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 11924, + "words": 1585, + "headings": 14, + "estimated_token_count_total": 2724 + }, + "hash": "sha256:93d123cbaaccc2515b4a70be8e1327b4f75b1051d16c5e3daf5a2035af7b7ca3", + "token_estimator": "heuristic-v1" + }, + { + "id": "parachains-customize-runtime-add-pallet-instances", + "title": "Add Multiple Pallet Instances", + "slug": "parachains-customize-runtime-add-pallet-instances", + "categories": [ + "Parachains" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime-add-pallet-instances.md", + "html_url": "https://docs.polkadot.com/parachains/customize-runtime/add-pallet-instances/", + "preview": "The [Polkadot SDK Parachain Template](https://github.com/paritytech/polkadot-sdk-parachain-template){target=\\_blank} provides a solid foundation for building custom parachains. While most pallets are typically included as single instances within a runtime, some scenarios benefit from running multiple instances of the same pallet with different configurations. This approach lets you reuse pallet logic without reimplementing it, enabling diverse functionality from a single codebase.", + "outline": [ { "depth": 2, - "title": "State Transition Function (STF)", - "anchor": "state-transition-function-stf" + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Storage Item", - "anchor": "storage-item" + "title": "Check Prerequisites", + "anchor": "check-prerequisites" }, { "depth": 2, - "title": "Substrate", - "anchor": "substrate" + "title": "Understanding Instantiable Pallets", + "anchor": "understanding-instantiable-pallets" }, { - "depth": 2, - "title": "Transaction", - "anchor": "transaction" + "depth": 3, + "title": "Identifying an Instantiable Pallet", + "anchor": "identifying-an-instantiable-pallet" }, { - "depth": 2, - "title": "Transaction Era", - "anchor": "transaction-era" + "depth": 3, + "title": "How Instance Generics Work", + "anchor": "how-instance-generics-work" }, { "depth": 2, - "title": "Trie (Patricia Merkle Tree)", - "anchor": "trie-patricia-merkle-tree" + "title": "Add Multiple Instances of a Pallet to Your Runtime", + "anchor": "add-multiple-instances-of-a-pallet-to-your-runtime" }, { - "depth": 2, - "title": "Validator", - "anchor": "validator" + "depth": 3, + "title": "Add the Pallet as a Dependency", + "anchor": "add-the-pallet-as-a-dependency" }, { - "depth": 2, - "title": "WebAssembly (Wasm)", - "anchor": "webassembly-wasm" + "depth": 3, + "title": "Enable Standard Library Features", + "anchor": "enable-standard-library-features" }, { - "depth": 2, - "title": "Weight", - "anchor": "weight" + "depth": 3, + "title": "Review the Config Trait", + "anchor": "review-the-config-trait" }, { - "depth": 2, - "title": "Westend", - "anchor": "westend" - } - ], - "stats": { - "chars": 24739, - "words": 3626, - "headings": 63, - "estimated_token_count_total": 5273 - }, - "hash": "sha256:40bd67811e7eabc79ca5d105eae388b19380d9f035022da17fc0d6bb173c817c", - "token_estimator": "heuristic-v1" - }, - { - "id": "reference-governance-origins-tracks", - "title": "Origins and Tracks", - "slug": "reference-governance-origins-tracks", - "categories": [ - "Polkadot Protocol" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-governance-origins-tracks.md", - "html_url": "https://docs.polkadot.com/reference/governance/origins-tracks/", - "preview": "Polkadot's OpenGov system empowers decentralized decision-making and active community participation by tailoring the governance process to the impact of proposed changes. Through a system of origins and tracks, OpenGov ensures that every referendum receives the appropriate scrutiny, balancing security, inclusivity, and efficiency.", - "outline": [ - { - "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "depth": 3, + "title": "Define Pallet Parameters", + "anchor": "define-pallet-parameters" }, { - "depth": 2, - "title": "Origins", - "anchor": "origins" + "depth": 3, + "title": "Create Instance Type Definitions", + "anchor": "create-instance-type-definitions" }, { - "depth": 2, - "title": "Tracks", - "anchor": "tracks" + "depth": 3, + "title": "Implement Config Trait for First Instance", + "anchor": "implement-config-trait-for-first-instance" }, { - "depth": 2, - "title": "Additional Resources", - "anchor": "additional-resources" - } - ], - "stats": { - "chars": 3333, - "words": 469, - "headings": 4, - "estimated_token_count_total": 631 - }, - "hash": "sha256:baba9dd41091b792d09005d55d3df0bf65b35f42b40ebe63caf425a0978a22b0", - "token_estimator": "heuristic-v1" - }, - { - "id": "reference-governance", - "title": "On-Chain Governance Overview", - "slug": "reference-governance", - "categories": [ - "Basics", - "Polkadot Protocol" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-governance.md", - "html_url": "https://docs.polkadot.com/reference/governance/", - "preview": "Polkadot’s governance system exemplifies decentralized decision-making, empowering its community of stakeholders to shape the network’s future through active participation. The latest evolution, OpenGov, builds on Polkadot’s foundation by providing a more inclusive and efficient governance model.", - "outline": [ - { - "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "depth": 3, + "title": "Implement Config Trait for Second Instance", + "anchor": "implement-config-trait-for-second-instance" }, { - "depth": 2, - "title": "Governance Evolution", - "anchor": "governance-evolution" + "depth": 3, + "title": "Add Instances to Runtime Construct", + "anchor": "add-instances-to-runtime-construct" }, { - "depth": 2, - "title": "OpenGov Key Features", - "anchor": "opengov-key-features" + "depth": 3, + "title": "Verify the Runtime Compiles", + "anchor": "verify-the-runtime-compiles" }, { "depth": 2, - "title": "Origins and Tracks", - "anchor": "origins-and-tracks" + "title": "Run Your Chain Locally", + "anchor": "run-your-chain-locally" }, { - "depth": 2, - "title": "Referendums", - "anchor": "referendums" + "depth": 3, + "title": "Generate a Chain Specification", + "anchor": "generate-a-chain-specification" }, { "depth": 3, - "title": "Vote on Referendums", - "anchor": "vote-on-referendums" + "title": "Start the Parachain Node", + "anchor": "start-the-parachain-node" }, { "depth": 3, - "title": "Delegate Voting Power", - "anchor": "delegate-voting-power" + "title": "Interact with Both Pallet Instances", + "anchor": "interact-with-both-pallet-instances" }, { "depth": 3, - "title": "Cancel a Referendum", - "anchor": "cancel-a-referendum" + "title": "Test Instance Independence", + "anchor": "test-instance-independence" }, { "depth": 2, - "title": "Additional Resources", - "anchor": "additional-resources" + "title": "Where to Go Next", + "anchor": "where-to-go-next" } ], "stats": { - "chars": 7493, - "words": 1019, - "headings": 9, - "estimated_token_count_total": 1611 + "chars": 17923, + "words": 2203, + "headings": 21, + "estimated_token_count_total": 3811 }, - "hash": "sha256:62beec261e72529f70e07a641177d489d2c8872f9c9d618cbadf1ac0fd881986", + "hash": "sha256:d83e574726c524fa017236eb5e3b8a0676d598be4da1ce4fe25a60141baeee49", "token_estimator": "heuristic-v1" }, { - "id": "reference-parachains-accounts", - "title": "Polkadot SDK Accounts", - "slug": "reference-parachains-accounts", + "id": "parachains-customize-runtime-add-smart-contract-functionality", + "title": "Add Smart Contract Functionality", + "slug": "parachains-customize-runtime-add-smart-contract-functionality", "categories": [ - "Basics", - "Polkadot Protocol" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-accounts.md", - "html_url": "https://docs.polkadot.com/reference/parachains/accounts/", - "preview": "Accounts are essential for managing identity, transactions, and governance on the network in the Polkadot SDK. Understanding these components is critical for seamless development and operation on the network, whether you're building or interacting with Polkadot-based chains.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime-add-smart-contract-functionality.md", + "html_url": "https://docs.polkadot.com/parachains/customize-runtime/add-smart-contract-functionality/", + "preview": "When building your custom blockchain with the Polkadot SDK, you can add smart contract capabilities through specialized pallets. These pallets enable users to deploy and execute smart contracts, enhancing your chain's programmability and allowing developers to build decentralized applications on your network.", "outline": [ { "depth": 2, @@ -4064,95 +4735,100 @@ }, { "depth": 2, - "title": "Account Data Structure", - "anchor": "account-data-structure" + "title": "pallet-revive", + "anchor": "pallet-revive" }, { "depth": 3, - "title": "Account", - "anchor": "account" + "title": "Core Components", + "anchor": "core-components" }, { "depth": 3, - "title": "Account Info", - "anchor": "account-info" + "title": "Supported Languages and Compilers", + "anchor": "supported-languages-and-compilers" }, { "depth": 3, - "title": "Account Reference Counters", - "anchor": "account-reference-counters" - }, - { - "depth": 2, - "title": "Account Balance Types", - "anchor": "account-balance-types" + "title": "How It Works", + "anchor": "how-it-works" }, { "depth": 3, - "title": "Balance Types", - "anchor": "balance-types" + "title": "Key Benefits", + "anchor": "key-benefits" }, { "depth": 3, - "title": "Locks", - "anchor": "locks" + "title": "Implementation Examples", + "anchor": "implementation-examples" }, { - "depth": 3, - "title": "Balance Types on Polkadot.js", - "anchor": "balance-types-on-polkadotjs" + "depth": 2, + "title": "Frontier", + "anchor": "frontier" }, { - "depth": 2, - "title": "Address Formats", - "anchor": "address-formats" + "depth": 3, + "title": "Integration Options", + "anchor": "integration-options" }, { "depth": 3, - "title": "Basic Format", - "anchor": "basic-format" + "title": "EVM Execution Only", + "anchor": "evm-execution-only" }, { "depth": 3, - "title": "Address Type", - "anchor": "address-type" + "title": "Full Ethereum Compatibility", + "anchor": "full-ethereum-compatibility" }, { "depth": 3, - "title": "Address Length", - "anchor": "address-length" + "title": "Key Benefits", + "anchor": "key-benefits-2" }, { "depth": 3, - "title": "Checksum Types", - "anchor": "checksum-types" + "title": "Implementation Examples", + "anchor": "implementation-examples-2" + }, + { + "depth": 2, + "title": "pallet-contracts (Legacy)", + "anchor": "pallet-contracts-legacy" }, { "depth": 3, - "title": "Validating Addresses", - "anchor": "validating-addresses" + "title": "Implementation Example", + "anchor": "implementation-example" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" } ], "stats": { - "chars": 29604, - "words": 4194, - "headings": 15, - "estimated_token_count_total": 6507 + "chars": 6655, + "words": 833, + "headings": 16, + "estimated_token_count_total": 1631 }, - "hash": "sha256:0104a9132a69345a2faac37fca0e2853a2ded1efb009511a83a98d44509ab887", + "hash": "sha256:6297bb5e0809fdd0585d6170054599f7ab4a3ce7c687ad03ae43092057c493b7", "token_estimator": "heuristic-v1" }, { - "id": "reference-parachains-blocks-transactions-fees-blocks", - "title": "Blocks", - "slug": "reference-parachains-blocks-transactions-fees-blocks", + "id": "parachains-customize-runtime-pallet-development-add-pallet-to-runtime", + "title": "Add Pallets to the Runtime", + "slug": "parachains-customize-runtime-pallet-development-add-pallet-to-runtime", "categories": [ "Basics", - "Polkadot Protocol" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-blocks-transactions-fees-blocks.md", - "html_url": "https://docs.polkadot.com/reference/parachains/blocks-transactions-fees/blocks/", - "preview": "In the Polkadot SDK, blocks are fundamental to the functioning of the blockchain, serving as containers for [transactions](/reference/parachains/blocks-transactions-fees/transactions/){target=\\_blank} and changes to the chain's state. Blocks consist of headers and an array of transactions, ensuring the integrity and validity of operations on the network. This guide explores the essential components of a block, the process of block production, and how blocks are validated and imported across the", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime-pallet-development-add-pallet-to-runtime.md", + "html_url": "https://docs.polkadot.com/parachains/customize-runtime/pallet-development/add-pallet-to-runtime/", + "preview": "In previous tutorials, you learned how to [create a custom pallet](/tutorials/polkadot-sdk/parachains/zero-to-hero/build-custom-pallet/){target=\\_blank} and [test it](/tutorials/polkadot-sdk/parachains/zero-to-hero/pallet-unit-testing/){target=\\_blank}. The next step is to include this pallet in your runtime, integrating it into the core logic of your blockchain.", "outline": [ { "depth": 2, @@ -4161,157 +4837,115 @@ }, { "depth": 2, - "title": "What is a Block?", - "anchor": "what-is-a-block" - }, - { - "depth": 2, - "title": "Block Production", - "anchor": "block-production" - }, - { - "depth": 3, - "title": "Initialize Block", - "anchor": "initialize-block" + "title": "Add the Pallets as Dependencies", + "anchor": "add-the-pallets-as-dependencies" }, { "depth": 3, - "title": "Finalize Block", - "anchor": "finalize-block" + "title": "Update the Runtime Configuration", + "anchor": "update-the-runtime-configuration" }, { "depth": 2, - "title": "Block Authoring and Import", - "anchor": "block-authoring-and-import" + "title": "Recompile the Runtime", + "anchor": "recompile-the-runtime" }, { - "depth": 3, - "title": "Block Import Queue", - "anchor": "block-import-queue" + "depth": 2, + "title": "Run Your Chain Locally", + "anchor": "run-your-chain-locally" }, { "depth": 2, - "title": "Additional Resources", - "anchor": "additional-resources" + "title": "Where to Go Next", + "anchor": "where-to-go-next" } ], "stats": { - "chars": 6252, - "words": 910, - "headings": 8, - "estimated_token_count_total": 1395 + "chars": 13091, + "words": 1522, + "headings": 6, + "estimated_token_count_total": 3091 }, - "hash": "sha256:424783c102bea5dae5b8749635858c6c59055563442a98f57521f0027dafa8d3", + "hash": "sha256:87add0ae178e4970601a27efccadb58eff1375d19819201034ba2829914f1cd5", "token_estimator": "heuristic-v1" }, { - "id": "reference-parachains-blocks-transactions-fees-fees", - "title": "Transactions Weights and Fees", - "slug": "reference-parachains-blocks-transactions-fees-fees", + "id": "parachains-customize-runtime-pallet-development-benchmark-pallet", + "title": "Benchmarking FRAME Pallets", + "slug": "parachains-customize-runtime-pallet-development-benchmark-pallet", "categories": [ - "Basics", - "Polkadot Protocol" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-blocks-transactions-fees-fees.md", - "html_url": "https://docs.polkadot.com/reference/parachains/blocks-transactions-fees/fees/", - "preview": "When transactions are executed, or data is stored on-chain, the activity changes the chain's state and consumes blockchain resources. Because the resources available to a blockchain are limited, managing how operations on-chain consume them is important. In addition to being limited in practical terms, such as storage capacity, blockchain resources represent a potential attack vector for malicious users. For example, a malicious user might attempt to overload the network with messages to stop th", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime-pallet-development-benchmark-pallet.md", + "html_url": "https://docs.polkadot.com/parachains/customize-runtime/pallet-development/benchmark-pallet/", + "preview": "Benchmarking is a critical component of developing efficient and secure blockchain runtimes. In the Polkadot ecosystem, accurately benchmarking your custom pallets ensures that each extrinsic has a precise [weight](/reference/glossary/#weight){target=\\_blank}, representing its computational and storage demands. This process is vital for maintaining the blockchain's performance and preventing potential vulnerabilities, such as Denial of Service (DoS) attacks.", "outline": [ { "depth": 2, - "title": "Introductions", - "anchor": "introductions" - }, - { - "depth": 2, - "title": "How Fees are Calculated", - "anchor": "how-fees-are-calculated" + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Using the Transaction Payment Pallet", - "anchor": "using-the-transaction-payment-pallet" - }, - { - "depth": 3, - "title": "Understanding the Inclusion Fee", - "anchor": "understanding-the-inclusion-fee" - }, - { - "depth": 3, - "title": "Accounts with an Insufficient Balance", - "anchor": "accounts-with-an-insufficient-balance" + "title": "The Case for Benchmarking", + "anchor": "the-case-for-benchmarking" }, { "depth": 3, - "title": "Fee Multipliers", - "anchor": "fee-multipliers" - }, - { - "depth": 2, - "title": "Transactions with Special Requirements", - "anchor": "transactions-with-special-requirements" + "title": "Benchmarking and Weight", + "anchor": "benchmarking-and-weight" }, { "depth": 2, - "title": "Default Weight Annotations", - "anchor": "default-weight-annotations" + "title": "Benchmarking Process", + "anchor": "benchmarking-process" }, { "depth": 3, - "title": "Weights and Database Read/Write Operations", - "anchor": "weights-and-database-readwrite-operations" + "title": "Prepare Your Environment", + "anchor": "prepare-your-environment" }, { "depth": 3, - "title": "Dispatch Classes", - "anchor": "dispatch-classes" + "title": "Write Benchmark Tests", + "anchor": "write-benchmark-tests" }, { "depth": 3, - "title": "Dynamic Weights", - "anchor": "dynamic-weights" - }, - { - "depth": 2, - "title": "Post Dispatch Weight Correction", - "anchor": "post-dispatch-weight-correction" - }, - { - "depth": 2, - "title": "Custom Fees", - "anchor": "custom-fees" + "title": "Add Benchmarks to Runtime", + "anchor": "add-benchmarks-to-runtime" }, { "depth": 3, - "title": "Custom Weights", - "anchor": "custom-weights" + "title": "Run Benchmarks", + "anchor": "run-benchmarks" }, { "depth": 2, - "title": "Additional Resources", - "anchor": "additional-resources" + "title": "Where to Go Next", + "anchor": "where-to-go-next" } ], "stats": { - "chars": 20800, - "words": 2917, - "headings": 15, - "estimated_token_count_total": 4464 + "chars": 14715, + "words": 1879, + "headings": 9, + "estimated_token_count_total": 3338 }, - "hash": "sha256:7d0c3fa7982b3e1843adb8f27422456397580b3a3eba5047b381da8517742536", + "hash": "sha256:915bc91edd56cdedd516e871dbe450d70c9f99fb467cc00ff231ea3a74f61d96", "token_estimator": "heuristic-v1" }, { - "id": "reference-parachains-blocks-transactions-fees-transactions", - "title": "Transactions", - "slug": "reference-parachains-blocks-transactions-fees-transactions", + "id": "parachains-customize-runtime-pallet-development-create-a-pallet", + "title": "Create a Custom Pallet", + "slug": "parachains-customize-runtime-pallet-development-create-a-pallet", "categories": [ - "Basics", - "Polkadot Protocol" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-blocks-transactions-fees-transactions.md", - "html_url": "https://docs.polkadot.com/reference/parachains/blocks-transactions-fees/transactions/", - "preview": "Transactions are essential components of blockchain networks, enabling state changes and the execution of key operations. In the Polkadot SDK, transactions, often called extrinsics, come in multiple forms, including signed, unsigned, and inherent transactions.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime-pallet-development-create-a-pallet.md", + "html_url": "https://docs.polkadot.com/parachains/customize-runtime/pallet-development/create-a-pallet/", + "preview": "[Framework for Runtime Aggregation of Modular Entities (FRAME)](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/polkadot_sdk/frame_runtime/index.html){target=\\_blank} provides a powerful set of tools for blockchain development through modular components called [pallets](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/polkadot_sdk/frame_runtime/pallet/index.html){target=\\_blank}. These Rust-based runtime modules allow you to build custom blockchain functional", "outline": [ { "depth": 2, @@ -4320,130 +4954,149 @@ }, { "depth": 2, - "title": "What Is a Transaction?", - "anchor": "what-is-a-transaction" + "title": "Prerequisites", + "anchor": "prerequisites" }, { - "depth": 3, - "title": "Signed Transactions", - "anchor": "signed-transactions" + "depth": 2, + "title": "Core Pallet Components", + "anchor": "core-pallet-components" }, { - "depth": 3, - "title": "Unsigned Transactions", - "anchor": "unsigned-transactions" + "depth": 2, + "title": "Create the Pallet Project", + "anchor": "create-the-pallet-project" }, { - "depth": 3, - "title": "Inherent Transactions", - "anchor": "inherent-transactions" + "depth": 2, + "title": "Configure Dependencies", + "anchor": "configure-dependencies" }, { "depth": 2, - "title": "Transaction Formats", - "anchor": "transaction-formats" + "title": "Initialize the Pallet Structure", + "anchor": "initialize-the-pallet-structure" }, { - "depth": 3, - "title": "Types of Transaction Formats", - "anchor": "types-of-transaction-formats" + "depth": 2, + "title": "Configure the Pallet", + "anchor": "configure-the-pallet" }, { - "depth": 3, - "title": "Signed Transaction Data Structure", - "anchor": "signed-transaction-data-structure" + "depth": 2, + "title": "Define Events", + "anchor": "define-events" }, { - "depth": 3, - "title": "Signed Extensions", - "anchor": "signed-extensions" + "depth": 2, + "title": "Define Errors", + "anchor": "define-errors" }, { "depth": 2, - "title": "Transaction Construction", - "anchor": "transaction-construction" + "title": "Add Storage Items", + "anchor": "add-storage-items" }, { - "depth": 3, - "title": "Construct a Signed Transaction", - "anchor": "construct-a-signed-transaction" + "depth": 2, + "title": "Configure Genesis State", + "anchor": "configure-genesis-state" }, { - "depth": 3, - "title": "Transaction Encoding", - "anchor": "transaction-encoding" + "depth": 2, + "title": "Implement Dispatchable Functions", + "anchor": "implement-dispatchable-functions" }, { "depth": 3, - "title": "Customize Transaction Construction", - "anchor": "customize-transaction-construction" + "title": "Dispatchable Function Details", + "anchor": "dispatchable-function-details" }, { "depth": 2, - "title": "Lifecycle of a Transaction", - "anchor": "lifecycle-of-a-transaction" + "title": "Verify Pallet Compilation", + "anchor": "verify-pallet-compilation" + }, + { + "depth": 2, + "title": "Add the Pallet to Your Runtime", + "anchor": "add-the-pallet-to-your-runtime" }, { "depth": 3, - "title": "Define Transaction Properties", - "anchor": "define-transaction-properties" + "title": "Add Runtime Dependency", + "anchor": "add-runtime-dependency" }, { "depth": 3, - "title": "Process on a Block Authoring Node", - "anchor": "process-on-a-block-authoring-node" + "title": "Implement the Config Trait", + "anchor": "implement-the-config-trait" }, { "depth": 3, - "title": "Validate and Queue", - "anchor": "validate-and-queue" + "title": "Add to Runtime Construct", + "anchor": "add-to-runtime-construct" }, { "depth": 3, - "title": "Transaction Ordering and Priority", - "anchor": "transaction-ordering-and-priority" + "title": "Configure Genesis for Your Runtime", + "anchor": "configure-genesis-for-your-runtime" }, { "depth": 3, - "title": "Transaction Execution", - "anchor": "transaction-execution" + "title": "Verify Runtime Compilation", + "anchor": "verify-runtime-compilation" }, { "depth": 2, - "title": "Transaction Mortality", - "anchor": "transaction-mortality" + "title": "Run Your Chain Locally", + "anchor": "run-your-chain-locally" + }, + { + "depth": 3, + "title": "Generate a Chain Specification", + "anchor": "generate-a-chain-specification" + }, + { + "depth": 3, + "title": "Start the Parachain Node", + "anchor": "start-the-parachain-node" }, { "depth": 2, - "title": "Unique Identifiers for Extrinsics", - "anchor": "unique-identifiers-for-extrinsics" + "title": "Interact with Your Pallet", + "anchor": "interact-with-your-pallet" }, { "depth": 2, - "title": "Additional Resources", - "anchor": "additional-resources" + "title": "Key Takeaways", + "anchor": "key-takeaways" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" } ], "stats": { - "chars": 23610, - "words": 3333, - "headings": 22, - "estimated_token_count_total": 4708 + "chars": 26671, + "words": 3041, + "headings": 26, + "estimated_token_count_total": 6113 }, - "hash": "sha256:66726634d3a51cd9c471621054a6e5f09c8061dca6144b64c8bcf45626359617", + "hash": "sha256:607e283aaa1295de0af191d97de7f6f87afb722c601a447821fde6a09b97f1af", "token_estimator": "heuristic-v1" }, { - "id": "reference-parachains-chain-data", - "title": "Chain Data", - "slug": "reference-parachains-chain-data", + "id": "parachains-customize-runtime-pallet-development-mock-runtime", + "title": "Mock Your Runtime", + "slug": "parachains-customize-runtime-pallet-development-mock-runtime", "categories": [ - "Basics", - "Polkadot Protocol" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-chain-data.md", - "html_url": "https://docs.polkadot.com/reference/parachains/chain-data/", - "preview": "Understanding and leveraging on-chain data is a fundamental aspect of blockchain development. Whether you're building frontend applications or backend systems, accessing and decoding runtime metadata is vital to interacting with the blockchain. This guide introduces you to the tools and processes for generating and retrieving metadata, explains its role in application development, and outlines the additional APIs available for interacting with a Polkadot node. By mastering these components, you", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime-pallet-development-mock-runtime.md", + "html_url": "https://docs.polkadot.com/parachains/customize-runtime/pallet-development/mock-runtime/", + "preview": "Testing is a critical part of pallet development. Before integrating your pallet into a full runtime, you need a way to test its functionality in isolation. A mock runtime provides a minimal, simulated blockchain environment where you can verify your pallet's logic without the overhead of running a full node.", "outline": [ { "depth": 2, @@ -4452,114 +5105,84 @@ }, { "depth": 2, - "title": "Application Development", - "anchor": "application-development" + "title": "Prerequisites", + "anchor": "prerequisites" }, { "depth": 2, - "title": "Understand Metadata", - "anchor": "understand-metadata" + "title": "Understand Mock Runtimes", + "anchor": "understand-mock-runtimes" }, { "depth": 2, - "title": "Expose Runtime Information as Metadata", - "anchor": "expose-runtime-information-as-metadata" + "title": "Create the Mock Runtime Module", + "anchor": "create-the-mock-runtime-module" }, { "depth": 2, - "title": "Generate Metadata", - "anchor": "generate-metadata" + "title": "Set Up Basic Mock", + "anchor": "set-up-basic-mock" }, { "depth": 2, - "title": "Retrieve Runtime Metadata", - "anchor": "retrieve-runtime-metadata" - }, - { - "depth": 3, - "title": "Use Polkadot.js", - "anchor": "use-polkadotjs" - }, - { - "depth": 3, - "title": "Use Curl", - "anchor": "use-curl" - }, - { - "depth": 3, - "title": "Use Subxt", - "anchor": "use-subxt" + "title": "Implement Essential Configuration", + "anchor": "implement-essential-configuration" }, { "depth": 2, - "title": "Client Applications and Metadata", - "anchor": "client-applications-and-metadata" + "title": "Implement Your Pallet's Configuration", + "anchor": "implement-your-pallets-configuration" }, { "depth": 2, - "title": "Metadata Format", - "anchor": "metadata-format" + "title": "Configure Genesis Storage", + "anchor": "configure-genesis-storage" }, { "depth": 3, - "title": "Pallets", - "anchor": "pallets" + "title": "Basic Test Environment", + "anchor": "basic-test-environment" }, { "depth": 3, - "title": "Extrinsic", - "anchor": "extrinsic" + "title": "Custom Genesis Configurations", + "anchor": "custom-genesis-configurations" }, { "depth": 2, - "title": "Included RPC APIs", - "anchor": "included-rpc-apis" + "title": "Verify Mock Compilation", + "anchor": "verify-mock-compilation" }, { "depth": 2, - "title": "Additional Resources", - "anchor": "additional-resources" + "title": "Key Takeaways", + "anchor": "key-takeaways" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" } ], "stats": { - "chars": 18650, - "words": 2216, - "headings": 15, - "estimated_token_count_total": 3774 - }, - "hash": "sha256:49238d1e9e2c33e0fcd3a84b5e30f0d3840d7d23a783b538875e0a23f38efc1d", - "token_estimator": "heuristic-v1" - }, - { - "id": "reference-parachains-consensus-async-backing", - "title": "reference-parachains-consensus-async-backing", - "slug": "reference-parachains-consensus-async-backing", - "categories": [ - "Uncategorized" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-consensus-async-backing.md", - "html_url": "https://docs.polkadot.com/reference/parachains/consensus/async-backing/", - "preview": "TODO", - "outline": [], - "stats": { - "chars": 5, - "words": 1, - "headings": 0, - "estimated_token_count_total": 0 + "chars": 11766, + "words": 1369, + "headings": 13, + "estimated_token_count_total": 2514 }, - "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "hash": "sha256:dd784a5d2daebb9a885fe09f6a967e6c84958d96ddb38d8366eabe9d860fa539", "token_estimator": "heuristic-v1" }, { - "id": "reference-parachains-consensus-elastic-scaling", - "title": "Elastic Scaling", - "slug": "reference-parachains-consensus-elastic-scaling", + "id": "parachains-customize-runtime-pallet-development-pallet-testing", + "title": "Pallet Testing", + "slug": "parachains-customize-runtime-pallet-development-pallet-testing", "categories": [ - "Polkadot Protocol" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-consensus-elastic-scaling.md", - "html_url": "https://docs.polkadot.com/reference/parachains/consensus/elastic-scaling/", - "preview": "Polkadot's architecture delivers scalability and security through its shared security model, where the relay chain coordinates and validates multiple parallel chains.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime-pallet-development-pallet-testing.md", + "html_url": "https://docs.polkadot.com/parachains/customize-runtime/pallet-development/pallet-testing/", + "preview": "Unit testing in the Polkadot SDK helps ensure that the functions provided by a pallet behave as expected. It also confirms that data and events associated with a pallet are processed correctly during interactions. The Polkadot SDK offers a set of APIs to create a test environment to simulate runtime and mock transaction execution for extrinsics and queries.", "outline": [ { "depth": 2, @@ -4568,80 +5191,55 @@ }, { "depth": 2, - "title": "How Elastic Scaling Works", - "anchor": "how-elastic-scaling-works" - }, - { - "depth": 2, - "title": "Benefits of Elastic Scaling", - "anchor": "benefits-of-elastic-scaling" + "title": "Writing Unit Tests", + "anchor": "writing-unit-tests" }, { - "depth": 2, - "title": "Use Cases", - "anchor": "use-cases" + "depth": 3, + "title": "Test Initialization", + "anchor": "test-initialization" }, { "depth": 3, - "title": "Handling Sudden Traffic Spikes", - "anchor": "handling-sudden-traffic-spikes" + "title": "Function Call Testing", + "anchor": "function-call-testing" }, { "depth": 3, - "title": "Supporting Early-Stage Growth", - "anchor": "supporting-early-stage-growth" + "title": "Storage Testing", + "anchor": "storage-testing" }, { "depth": 3, - "title": "Scaling Massive IoT Networks", - "anchor": "scaling-massive-iot-networks" + "title": "Event Testing", + "anchor": "event-testing" }, { - "depth": 3, - "title": "Powering Real-Time, Low-Latency Systems", - "anchor": "powering-real-time-low-latency-systems" + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" } ], "stats": { - "chars": 7871, - "words": 1047, - "headings": 8, - "estimated_token_count_total": 1440 + "chars": 6892, + "words": 911, + "headings": 7, + "estimated_token_count_total": 1563 }, - "hash": "sha256:2d228c52844df8952520fafdd3e6f0e26bfd2f32b5ee60c6241cf7d38603643c", - "token_estimator": "heuristic-v1" - }, - { - "id": "reference-parachains-consensus", - "title": "reference-parachains-consensus", - "slug": "reference-parachains-consensus", - "categories": [ - "Uncategorized" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-consensus.md", - "html_url": "https://docs.polkadot.com/reference/parachains/consensus/", - "preview": "TODO", - "outline": [], - "stats": { - "chars": 5, - "words": 1, - "headings": 0, - "estimated_token_count_total": 0 - }, - "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "hash": "sha256:8568dfa238b9a649a4e6e60510625c2e7879b76a93187b0b8b8dccf6bc467ae6", "token_estimator": "heuristic-v1" }, { - "id": "reference-parachains-cryptography", - "title": "Cryptography", - "slug": "reference-parachains-cryptography", + "id": "parachains-customize-runtime", + "title": "Overview of FRAME", + "slug": "parachains-customize-runtime", "categories": [ "Basics", - "Polkadot Protocol" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-cryptography.md", - "html_url": "https://docs.polkadot.com/reference/parachains/cryptography/", - "preview": "Cryptography forms the backbone of blockchain technology, providing the mathematical verifiability crucial for consensus systems, data integrity, and user security. While a deep understanding of the underlying mathematical processes isn't necessary for most blockchain developers, grasping the fundamental applications of cryptography is essential. This page comprehensively overviews cryptographic implementations used across Polkadot SDK-based chains and the broader blockchain ecosystem.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-customize-runtime.md", + "html_url": "https://docs.polkadot.com/parachains/customize-runtime/", + "preview": "A blockchain runtime is more than just a fixed set of rules—it's a dynamic foundation that you can shape to match your specific needs. With Polkadot SDK's [FRAME (Framework for Runtime Aggregation of Modularized Entities)](/reference/glossary/#frame-framework-for-runtime-aggregation-of-modularized-entities){target=\\_blank}, customizing your runtime is straightforward and modular. Instead of building everything from scratch, you combine pre-built pallets with your own custom logic to create a run", "outline": [ { "depth": 2, @@ -4650,457 +5248,364 @@ }, { "depth": 2, - "title": "Hash Functions", - "anchor": "hash-functions" - }, - { - "depth": 3, - "title": "Key Properties of Hash Functions", - "anchor": "key-properties-of-hash-functions" - }, - { - "depth": 3, - "title": "Blake2", - "anchor": "blake2" + "title": "Understanding Your Runtime", + "anchor": "understanding-your-runtime" }, { "depth": 2, - "title": "Types of Cryptography", - "anchor": "types-of-cryptography" + "title": "Runtime Architecture", + "anchor": "runtime-architecture" }, { - "depth": 3, - "title": "Symmetric Cryptography", - "anchor": "symmetric-cryptography" + "depth": 2, + "title": "Building Blocks: Pallets", + "anchor": "building-blocks-pallets" }, { "depth": 3, - "title": "Asymmetric Cryptography", - "anchor": "asymmetric-cryptography" + "title": "Pre-Built Pallets vs. Custom Pallets", + "anchor": "pre-built-pallets-vs-custom-pallets" }, { "depth": 3, - "title": "Trade-offs and Compromises", - "anchor": "trade-offs-and-compromises" + "title": "Pallet Structure", + "anchor": "pallet-structure" }, { "depth": 2, - "title": "Digital Signatures", - "anchor": "digital-signatures" - }, - { - "depth": 3, - "title": "Example of Creating a Digital Signature", - "anchor": "example-of-creating-a-digital-signature" + "title": "How Runtime Customization Works", + "anchor": "how-runtime-customization-works" }, { "depth": 2, - "title": "Elliptic Curve", - "anchor": "elliptic-curve" + "title": "Starting Templates", + "anchor": "starting-templates" }, { - "depth": 3, - "title": "Various Implementations", - "anchor": "various-implementations" + "depth": 2, + "title": "Key Customization Scenarios", + "anchor": "key-customization-scenarios" } ], "stats": { - "chars": 8860, - "words": 1293, - "headings": 12, - "estimated_token_count_total": 1797 + "chars": 8236, + "words": 1101, + "headings": 9, + "estimated_token_count_total": 1828 }, - "hash": "sha256:259dcef86aadc513675258b665cc3940db65af6eb32a5db85da6ac339966fa60", + "hash": "sha256:ad58d1c942b567acc4519abc35c0a049ab3e04711c2a49089ceba6324a5aa7ea", "token_estimator": "heuristic-v1" }, { - "id": "reference-parachains-data-encoding", - "title": "Data Encoding", - "slug": "reference-parachains-data-encoding", + "id": "parachains-get-started", + "title": "Get Started with Parachain Development", + "slug": "parachains-get-started", "categories": [ "Basics", - "Polkadot Protocol" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-data-encoding.md", - "html_url": "https://docs.polkadot.com/reference/parachains/data-encoding/", - "preview": "The Polkadot SDK uses a lightweight and efficient encoding/decoding mechanism to optimize data transmission across the network. This mechanism, known as the _SCALE_ codec, is used for serializing and deserializing data.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-get-started.md", + "html_url": "https://docs.polkadot.com/parachains/get-started/", + "preview": "The following sections provide practical recipes for building parachains on Polkadot—each focused on specific development scenarios with step-by-step, hands-on examples.", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "Quick Start Guides", + "anchor": "quick-start-guides" }, { "depth": 2, - "title": "SCALE Codec", - "anchor": "scale-codec" - }, - { - "depth": 3, - "title": "Encode", - "anchor": "encode" + "title": "Launch a Simple Parachain", + "anchor": "launch-a-simple-parachain" }, { - "depth": 3, - "title": "Decode", - "anchor": "decode" + "depth": 2, + "title": "Customize Your Runtime", + "anchor": "customize-your-runtime" }, { "depth": 3, - "title": "CompactAs", - "anchor": "compactas" + "title": "Pallet Development", + "anchor": "pallet-development" }, { - "depth": 3, - "title": "HasCompact", - "anchor": "hascompact" + "depth": 2, + "title": "Testing", + "anchor": "testing" }, { - "depth": 3, - "title": "EncodeLike", - "anchor": "encodelike" + "depth": 2, + "title": "Runtime Upgrades and Maintenance", + "anchor": "runtime-upgrades-and-maintenance" }, { - "depth": 3, - "title": "Data Types", - "anchor": "data-types" + "depth": 2, + "title": "Interoperability", + "anchor": "interoperability" }, { "depth": 2, - "title": "Encode and Decode Rust Trait Implementations", - "anchor": "encode-and-decode-rust-trait-implementations" + "title": "Integrations", + "anchor": "integrations" }, { "depth": 2, - "title": "SCALE Codec Libraries", - "anchor": "scale-codec-libraries" + "title": "Additional Resources", + "anchor": "additional-resources" } ], "stats": { - "chars": 13629, - "words": 1314, - "headings": 10, - "estimated_token_count_total": 3213 + "chars": 7941, + "words": 631, + "headings": 9, + "estimated_token_count_total": 2292 }, - "hash": "sha256:e448294b6e52291ac0add5fa6533572814e6cd27af42bdaccc2000b86f52d775", + "hash": "sha256:759ed27cf3d473445e33141089b652082c42a2c59eb822d6b506146fd9555e13", "token_estimator": "heuristic-v1" }, { - "id": "reference-parachains-interoperability", - "title": "Interoperability", - "slug": "reference-parachains-interoperability", + "id": "parachains-install-polkadot-sdk", + "title": "Install Polkadot SDK", + "slug": "parachains-install-polkadot-sdk", "categories": [ "Basics", - "Polkadot Protocol" + "Tooling" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-interoperability.md", - "html_url": "https://docs.polkadot.com/reference/parachains/interoperability/", - "preview": "Interoperability lies at the heart of the Polkadot ecosystem, enabling communication and collaboration across a diverse range of blockchains. By bridging the gaps between parachains, relay chains, and even external networks, Polkadot unlocks the potential for truly decentralized applications, efficient resource sharing, and scalable solutions.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-install-polkadot-sdk.md", + "html_url": "https://docs.polkadot.com/parachains/install-polkadot-sdk/", + "preview": "This guide provides step-by-step instructions for installing the Polkadot SDK on macOS, Linux, and Windows. The installation process consists of two main parts:", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "Install Dependencies: macOS", + "anchor": "install-dependencies-macos" }, { - "depth": 2, - "title": "Why Interoperability Matters", - "anchor": "why-interoperability-matters" + "depth": 3, + "title": "Before You Begin {: #before-you-begin-mac-os }", + "anchor": "before-you-begin-before-you-begin-mac-os" }, { - "depth": 2, - "title": "Key Mechanisms for Interoperability", - "anchor": "key-mechanisms-for-interoperability" + "depth": 3, + "title": "Install Homebrew", + "anchor": "install-homebrew" }, { "depth": 3, - "title": "Cross-Consensus Messaging (XCM): The Backbone of Communication", - "anchor": "cross-consensus-messaging-xcm-the-backbone-of-communication" + "title": "Support for Apple Silicon", + "anchor": "support-for-apple-silicon" }, { "depth": 3, - "title": "Bridges: Connecting External Networks", - "anchor": "bridges-connecting-external-networks" + "title": "Install Required Packages and Rust {: #install-required-packages-and-rust-mac-os }", + "anchor": "install-required-packages-and-rust-install-required-packages-and-rust-mac-os" }, { "depth": 2, - "title": "The Polkadot Advantage", - "anchor": "the-polkadot-advantage" + "title": "Install Dependencies: Linux", + "anchor": "install-dependencies-linux" }, { - "depth": 2, - "title": "Looking Ahead", - "anchor": "looking-ahead" - } - ], - "stats": { - "chars": 4635, - "words": 584, - "headings": 7, - "estimated_token_count_total": 772 - }, - "hash": "sha256:11bb4f113bdda5852a3115e64d5ba47f8eccd4e3619a05ad960ab3a541f31346", - "token_estimator": "heuristic-v1" - }, - { - "id": "reference-parachains-networks", - "title": "Networks", - "slug": "reference-parachains-networks", - "categories": [ - "Basics", - "Polkadot Protocol", - "Networks" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-networks.md", - "html_url": "https://docs.polkadot.com/reference/parachains/networks/", - "preview": "The Polkadot ecosystem is built on a robust set of networks designed to enable secure and scalable development. Whether you are testing new features or deploying to live production, Polkadot offers several layers of networks tailored for each stage of the development process. From local environments to experimental networks like Kusama and community-run TestNets such as Paseo, developers can thoroughly test, iterate, and validate their applications. This guide will introduce you to Polkadot's va", - "outline": [ - { - "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "depth": 3, + "title": "Before You Begin {: #before-you-begin-linux }", + "anchor": "before-you-begin-before-you-begin-linux" }, { - "depth": 2, - "title": "Network Overview", - "anchor": "network-overview" + "depth": 3, + "title": "Install Required Packages and Rust {: #install-required-packages-and-rust-linux }", + "anchor": "install-required-packages-and-rust-install-required-packages-and-rust-linux" }, { "depth": 2, - "title": "Polkadot Development Networks", - "anchor": "polkadot-development-networks" + "title": "Install Dependencies: Windows (WSL)", + "anchor": "install-dependencies-windows-wsl" }, { - "depth": 2, - "title": "Kusama Network", - "anchor": "kusama-network" - }, - { - "depth": 2, - "title": "Test Networks", - "anchor": "test-networks" + "depth": 3, + "title": "Before You Begin {: #before-you-begin-windows-wls }", + "anchor": "before-you-begin-before-you-begin-windows-wls" }, { "depth": 3, - "title": "Westend", - "anchor": "westend" + "title": "Set Up Windows Subsystem for Linux", + "anchor": "set-up-windows-subsystem-for-linux" }, { "depth": 3, - "title": "Paseo", - "anchor": "paseo" + "title": "Install Required Packages and Rust {: #install-required-packages-and-rust-windows-wls }", + "anchor": "install-required-packages-and-rust-install-required-packages-and-rust-windows-wls" }, { "depth": 2, - "title": "Local Test Networks", - "anchor": "local-test-networks" + "title": "Build the Polkadot SDK", + "anchor": "build-the-polkadot-sdk" }, { "depth": 3, - "title": "Zombienet", - "anchor": "zombienet" + "title": "Clone the Polkadot SDK", + "anchor": "clone-the-polkadot-sdk" }, { "depth": 3, - "title": "Chopsticks", - "anchor": "chopsticks" - } - ], - "stats": { - "chars": 7834, - "words": 1111, - "headings": 10, - "estimated_token_count_total": 1473 - }, - "hash": "sha256:e49e063a2cc0fb5a48c6cdc3de266bb6e025a006940fea8e90cc4d5f9884900f", - "token_estimator": "heuristic-v1" - }, - { - "id": "reference-parachains-node-and-runtime", - "title": "Node and Runtime", - "slug": "reference-parachains-node-and-runtime", - "categories": [ - "Basics", - "Polkadot Protocol" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-node-and-runtime.md", - "html_url": "https://docs.polkadot.com/reference/parachains/node-and-runtime/", - "preview": "Every blockchain platform relies on a decentralized network of computers, called nodes, that communicate with each other about transactions and blocks. In this context, a node refers to the software running on the connected devices rather than the physical or virtual machines in the network.", - "outline": [ - { - "depth": 2, - "title": "Introduction", - "anchor": "introduction" - }, - { - "depth": 2, - "title": "Architectural Principles", - "anchor": "architectural-principles" + "title": "Compile the Polkadot SDK", + "anchor": "compile-the-polkadot-sdk" }, { "depth": 3, - "title": "Advantages of this Architecture", - "anchor": "advantages-of-this-architecture" - }, - { - "depth": 2, - "title": "Node (Client)", - "anchor": "node-client" + "title": "Verify the Build", + "anchor": "verify-the-build" }, { "depth": 2, - "title": "Runtime", - "anchor": "runtime" + "title": "Optional: Run the Kitchensink Node", + "anchor": "optional-run-the-kitchensink-node" }, { "depth": 3, - "title": "Characteristics", - "anchor": "characteristics" + "title": "Run the Kitchensink Node in Development Mode", + "anchor": "run-the-kitchensink-node-in-development-mode" }, { "depth": 3, - "title": "Key Functions", - "anchor": "key-functions" + "title": "Interact with the Kitchensink Node", + "anchor": "interact-with-the-kitchensink-node" }, { "depth": 2, - "title": "Communication Between Node and Runtime", - "anchor": "communication-between-node-and-runtime" - }, - { - "depth": 3, - "title": "Runtime APIs", - "anchor": "runtime-apis" - }, - { - "depth": 3, - "title": "Host Functions", - "anchor": "host-functions" + "title": "Where to Go Next", + "anchor": "where-to-go-next" } ], "stats": { - "chars": 4937, - "words": 628, - "headings": 10, - "estimated_token_count_total": 914 + "chars": 16051, + "words": 2312, + "headings": 20, + "estimated_token_count_total": 3345 }, - "hash": "sha256:8122e21c149d0863cfe3b37fc5606bcdb91668e9d265f0f05451a61ff70e4e93", + "hash": "sha256:a52c05b623f3780f14be3a5f36b3d79a6c1965c2fbfd6864b512a9a70c47cd60", "token_estimator": "heuristic-v1" }, { - "id": "reference-parachains-randomness", - "title": "Randomness", - "slug": "reference-parachains-randomness", + "id": "parachains-integrations-indexers", + "title": "Indexers", + "slug": "parachains-integrations-indexers", "categories": [ - "Basics", - "Polkadot Protocol" + "Tooling", + "Dapps" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-randomness.md", - "html_url": "https://docs.polkadot.com/reference/parachains/randomness/", - "preview": "Randomness is crucial in Proof of Stake (PoS) blockchains to ensure a fair and unpredictable distribution of validator duties. However, computers are inherently deterministic, meaning the same input always produces the same output. What we typically refer to as \"random\" numbers on a computer are actually pseudo-random. These numbers rely on an initial \"seed,\" which can come from external sources like [atmospheric noise](https://www.random.org/randomness/){target=\\_blank}, [heart rates](https://m", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-integrations-indexers.md", + "html_url": "https://docs.polkadot.com/parachains/integrations/indexers/", + "preview": "Blockchain data is inherently sequential and distributed, with information stored chronologically across numerous blocks. While retrieving data from a single block through JSON-RPC API calls is straightforward, more complex queries that span multiple blocks present significant challenges:", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "The Challenge of Blockchain Data Access", + "anchor": "the-challenge-of-blockchain-data-access" }, { "depth": 2, - "title": "VRF", - "anchor": "vrf" - }, - { - "depth": 3, - "title": "How VRF Works", - "anchor": "how-vrf-works" + "title": "What is a Blockchain Indexer?", + "anchor": "what-is-a-blockchain-indexer" }, { "depth": 2, - "title": "RANDAO", - "anchor": "randao" - }, + "title": "Indexer Implementations", + "anchor": "indexer-implementations" + } + ], + "stats": { + "chars": 2230, + "words": 302, + "headings": 3, + "estimated_token_count_total": 428 + }, + "hash": "sha256:cfcc76bb24779c9b613f2c046b6f99a0f2529c25fd82287d804f6b945b936227", + "token_estimator": "heuristic-v1" + }, + { + "id": "parachains-integrations-oracles", + "title": "Oracles", + "slug": "parachains-integrations-oracles", + "categories": [ + "Tooling", + "Dapps" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-integrations-oracles.md", + "html_url": "https://docs.polkadot.com/parachains/integrations/oracles/", + "preview": "Oracles enable blockchains to access external data sources. Since blockchains operate as isolated networks, they cannot natively interact with external systems - this limitation is known as the \"blockchain oracle problem.\" Oracles solves this by extracting data from external sources (like APIs, IoT devices, or other blockchains), validating it, and submitting it on-chain.", + "outline": [ { "depth": 2, - "title": "VDFs", - "anchor": "vdfs" + "title": "What is a Blockchain Oracle?", + "anchor": "what-is-a-blockchain-oracle" }, { "depth": 2, - "title": "Additional Resources", - "anchor": "additional-resources" + "title": "Oracle Implementations", + "anchor": "oracle-implementations" } ], "stats": { - "chars": 6503, - "words": 1005, - "headings": 6, - "estimated_token_count_total": 1388 + "chars": 1343, + "words": 181, + "headings": 2, + "estimated_token_count_total": 245 }, - "hash": "sha256:c7d8a5a4263fd21af458ab0bd102377104affdf2431b4fe74eeff4ebe62a4a81", + "hash": "sha256:6d8e01281a5895fd2bc4438b24c170c72a496de0b838626a53e87685aea4aa25", "token_estimator": "heuristic-v1" }, { - "id": "reference-parachains", - "title": "Parachains Overview", - "slug": "reference-parachains", + "id": "parachains-integrations-wallets", + "title": "Wallets", + "slug": "parachains-integrations-wallets", "categories": [ - "Basics", - "Parachains" + "Tooling", + "Dapps" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains.md", - "html_url": "https://docs.polkadot.com/reference/parachains/", - "preview": "A parachain is a specialized blockchain that connects to the Polkadot relay chain, benefiting from shared security, interoperability, and scalability. Parachains are built using the [Polkadot SDK](https://github.com/paritytech/polkadot-sdk){target=\\_blank}, a powerful toolkit written in Rust that provides everything needed to create custom blockchain logic while integrating seamlessly with the Polkadot network.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-integrations-wallets.md", + "html_url": "https://docs.polkadot.com/parachains/integrations/wallets/", + "preview": "A wallet serves as your gateway to interacting with blockchain networks. Rather than storing funds, wallets secure your private keys, controlling access to your blockchain assets. Your private key provides complete control over all permitted transactions on your blockchain account, making it essential to keep it secure.", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "What is a Blockchain Wallet?", + "anchor": "what-is-a-blockchain-wallet" }, { "depth": 2, - "title": "Polkadot SDK: Parachain Architecture", - "anchor": "polkadot-sdk-parachain-architecture" - }, - { - "depth": 3, - "title": "Substrate: The Foundation", - "anchor": "substrate-the-foundation" - }, - { - "depth": 3, - "title": "FRAME: Building Blocks for Your Runtime", - "anchor": "frame-building-blocks-for-your-runtime" + "title": "Hot Wallets", + "anchor": "hot-wallets" }, { - "depth": 3, - "title": "Cumulus: Parachain-Specific Functionality", - "anchor": "cumulus-parachain-specific-functionality" + "depth": 2, + "title": "Cold Wallets", + "anchor": "cold-wallets" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "Wallet Tools", + "anchor": "wallet-tools" } ], "stats": { - "chars": 8495, - "words": 1029, - "headings": 6, - "estimated_token_count_total": 1759 + "chars": 3588, + "words": 489, + "headings": 4, + "estimated_token_count_total": 786 }, - "hash": "sha256:ecb0d9459e08920db7d2d59dc7c01aba7a91ce8c9e39256bd0c3efa473dbaa17", + "hash": "sha256:62c5ad101282227f79eac0e30a3ba9ce3ae1bf9e358bd58c0b17ef45db29c2ff", "token_estimator": "heuristic-v1" }, { - "id": "reference-polkadot-hub-assets-and-smart-contracts", - "title": "Asset Hub", - "slug": "reference-polkadot-hub-assets-and-smart-contracts", + "id": "parachains-interoperability-channels-between-parachains", + "title": "Opening HRMP Channels Between Parachains", + "slug": "parachains-interoperability-channels-between-parachains", "categories": [ - "Polkadot Protocol" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-polkadot-hub-assets-and-smart-contracts.md", - "html_url": "https://docs.polkadot.com/reference/polkadot-hub/assets-and-smart-contracts/", - "preview": "The Asset Hub is a critical component in the Polkadot ecosystem, enabling the management of fungible and non-fungible assets across the network. Since the relay chain focuses on maintaining security and consensus without direct asset management, Asset Hub provides a streamlined platform for creating, managing, and using on-chain assets in a fee-efficient manner. This guide outlines the core features of Asset Hub, including how it handles asset operations, cross-chain transfers, and asset integra", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-interoperability-channels-between-parachains.md", + "html_url": "https://docs.polkadot.com/parachains/interoperability/channels-between-parachains/", + "preview": "For establishing communication channels between parachains on the Polkadot network using the Horizontal Relay-routed Message Passing (HRMP) protocol, the following steps are required:", "outline": [ { "depth": 2, @@ -5109,124 +5614,69 @@ }, { "depth": 2, - "title": "Assets Basics", - "anchor": "assets-basics" + "title": "Prerequisites", + "anchor": "prerequisites" }, { "depth": 2, - "title": "Assets Pallet", - "anchor": "assets-pallet" + "title": "Procedure to Initiate an HRMP Channel", + "anchor": "procedure-to-initiate-an-hrmp-channel" }, { "depth": 3, - "title": "Key Features", - "anchor": "key-features" - }, - { - "depth": 3, - "title": "Main Functions", - "anchor": "main-functions" - }, - { - "depth": 3, - "title": "Querying Functions", - "anchor": "querying-functions" - }, - { - "depth": 3, - "title": "Permission Models and Roles", - "anchor": "permission-models-and-roles" - }, - { - "depth": 3, - "title": "Asset Freezing", - "anchor": "asset-freezing" - }, - { - "depth": 3, - "title": "Non-Custodial Transfers (Approval API)", - "anchor": "non-custodial-transfers-approval-api" - }, - { - "depth": 2, - "title": "Foreign Assets", - "anchor": "foreign-assets" - }, - { - "depth": 3, - "title": "Handling Foreign Assets", - "anchor": "handling-foreign-assets" - }, - { - "depth": 2, - "title": "Integration", - "anchor": "integration" - }, - { - "depth": 3, - "title": "API Sidecar", - "anchor": "api-sidecar" + "title": "Fund Sender Sovereign Account", + "anchor": "fund-sender-sovereign-account" }, { "depth": 3, - "title": "TxWrapper", - "anchor": "txwrapper" + "title": "Create Channel Opening Extrinsic", + "anchor": "create-channel-opening-extrinsic" }, { "depth": 3, - "title": "Parachain Node", - "anchor": "parachain-node" + "title": "Craft and Submit the XCM Message from the Sender", + "anchor": "craft-and-submit-the-xcm-message-from-the-sender" }, { "depth": 2, - "title": "XCM Transfer Monitoring", - "anchor": "xcm-transfer-monitoring" - }, - { - "depth": 3, - "title": "Monitor XCM Deposits", - "anchor": "monitor-xcm-deposits" + "title": "Procedure to Accept an HRMP Channel", + "anchor": "procedure-to-accept-an-hrmp-channel" }, { "depth": 3, - "title": "Track XCM Information Back to the Source", - "anchor": "track-xcm-information-back-to-the-source" + "title": "Fund Receiver Sovereign Account", + "anchor": "fund-receiver-sovereign-account" }, { "depth": 3, - "title": "Practical Monitoring Examples", - "anchor": "practical-monitoring-examples" + "title": "Create Channel Accepting Extrinsic", + "anchor": "create-channel-accepting-extrinsic" }, { "depth": 3, - "title": "Monitor for Failed XCM Transfers", - "anchor": "monitor-for-failed-xcm-transfers" - }, - { - "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "Craft and Submit the XCM Message from the Receiver", + "anchor": "craft-and-submit-the-xcm-message-from-the-receiver" } ], "stats": { - "chars": 18211, - "words": 2649, - "headings": 21, - "estimated_token_count_total": 3678 + "chars": 10934, + "words": 1549, + "headings": 10, + "estimated_token_count_total": 2285 }, - "hash": "sha256:3d10c04cffc5f737ff75b079d661c2c1904629d23ae1e415e64fd6ae4e98759e", + "hash": "sha256:b8de1228b9976765accd18ff724038bed6f2449367f500bc3177ab2a053abe63", "token_estimator": "heuristic-v1" }, { - "id": "reference-polkadot-hub-bridging", - "title": "Bridge Hub", - "slug": "reference-polkadot-hub-bridging", + "id": "parachains-interoperability-channels-with-system-parachains", + "title": "Opening HRMP Channels with System Parachains", + "slug": "parachains-interoperability-channels-with-system-parachains", "categories": [ - "Polkadot Protocol" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-polkadot-hub-bridging.md", - "html_url": "https://docs.polkadot.com/reference/polkadot-hub/bridging/", - "preview": "The Bridge Hub system parachain plays a crucial role in facilitating trustless interactions between Polkadot, Kusama, Ethereum, and other blockchain ecosystems. By implementing on-chain light clients and supporting protocols like BEEFY and GRANDPA, Bridge Hub ensures seamless message transmission and state verification across chains. It also provides essential [pallets](/reference/glossary/#pallet){target=\\_blank} for sending and receiving messages, making it a cornerstone of Polkadot’s interope", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-interoperability-channels-with-system-parachains.md", + "html_url": "https://docs.polkadot.com/parachains/interoperability/channels-with-system-parachains/", + "preview": "While establishing Horizontal Relay-routed Message Passing (HRMP) channels between regular parachains involves a two-step request and acceptance procedure, opening channels with system parachains follows a more straightforward approach.", "outline": [ { "depth": 2, @@ -5235,49 +5685,50 @@ }, { "depth": 2, - "title": "Trustless Bridging", - "anchor": "trustless-bridging" + "title": "Prerequisites", + "anchor": "prerequisites" }, { "depth": 2, - "title": "Bridging Components", - "anchor": "bridging-components" + "title": "Procedure to Establish an HRMP Channel", + "anchor": "procedure-to-establish-an-hrmp-channel" }, { "depth": 3, - "title": "Ethereum-Specific Support", - "anchor": "ethereum-specific-support" + "title": "Fund Parachain Sovereign Account", + "anchor": "fund-parachain-sovereign-account" }, { - "depth": 2, - "title": "Deployed Bridges", - "anchor": "deployed-bridges" + "depth": 3, + "title": "Create Establish Channel with System Extrinsic", + "anchor": "create-establish-channel-with-system-extrinsic" }, { - "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "depth": 3, + "title": "Craft and Submit the XCM Message", + "anchor": "craft-and-submit-the-xcm-message" } ], "stats": { - "chars": 5467, - "words": 776, + "chars": 7203, + "words": 889, "headings": 6, - "estimated_token_count_total": 1220 + "estimated_token_count_total": 1427 }, - "hash": "sha256:86734ba8bcdea7913f488edf666a6104bed0a18649d57abde82c149c41c2b871", + "hash": "sha256:b501d99c464fb049d46676827b6a325a195c90617becc4a7db305441c115350a", "token_estimator": "heuristic-v1" }, { - "id": "reference-polkadot-hub-collectives-and-daos", - "title": "Collectives Chain", - "slug": "reference-polkadot-hub-collectives-and-daos", + "id": "parachains-interoperability-get-started", + "title": "Introduction to XCM", + "slug": "parachains-interoperability-get-started", "categories": [ + "Basics", "Polkadot Protocol" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-polkadot-hub-collectives-and-daos.md", - "html_url": "https://docs.polkadot.com/reference/polkadot-hub/collectives-and-daos/", - "preview": "Established through [Referendum 81](https://polkadot-old.polkassembly.io/referendum/81){target=\\_blank}, the Collectives chain operates as a dedicated parachain exclusive to the Polkadot network with no counterpart on Kusama. This specialized infrastructure provides a foundation for various on-chain governance groups essential to Polkadot's ecosystem.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-interoperability-get-started.md", + "html_url": "https://docs.polkadot.com/parachains/interoperability/get-started/", + "preview": "Polkadot’s unique value lies in its ability to enable interoperability between parachains and other blockchain systems. At the core of this capability is XCM (Cross-Consensus Messaging)—a flexible messaging format that facilitates communication and collaboration between independent consensus systems.", "outline": [ { "depth": 2, @@ -5286,75 +5737,54 @@ }, { "depth": 2, - "title": "Key Collectives", - "anchor": "key-collectives" - } - ], - "stats": { - "chars": 2288, - "words": 293, - "headings": 2, - "estimated_token_count_total": 424 - }, - "hash": "sha256:59ec351fbb8d3a392e90f4f5bf6b62f58b21d6d7a900c5e367e5d2e09ecb3aca", - "token_estimator": "heuristic-v1" - }, - { - "id": "reference-polkadot-hub-consensus-and-security-agile-coretime", - "title": "Agile Coretime", - "slug": "reference-polkadot-hub-consensus-and-security-agile-coretime", - "categories": [ - "Polkadot Protocol" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-polkadot-hub-consensus-and-security-agile-coretime.md", - "html_url": "https://docs.polkadot.com/reference/polkadot-hub/consensus-and-security/agile-coretime/", - "preview": "Agile Coretime is the [scheduling](https://en.wikipedia.org/wiki/Scheduling_(computing)){target=\\_blank} framework on Polkadot that lets parachains efficiently access cores, which comprise an active validator set tasked with parablock validation. As the first blockchain to enable a flexible scheduling system for blockspace production, Polkadot offers unparalleled adaptability for parachains.", - "outline": [ + "title": "Messaging Format", + "anchor": "messaging-format" + }, { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "The Four Principles of XCM", + "anchor": "the-four-principles-of-xcm" }, { "depth": 2, - "title": "Bulk Coretime", - "anchor": "bulk-coretime" + "title": "The XCM Tech Stack", + "anchor": "the-xcm-tech-stack" }, { - "depth": 3, - "title": "Coretime Interlacing", - "anchor": "coretime-interlacing" + "depth": 2, + "title": "Core Functionalities of XCM", + "anchor": "core-functionalities-of-xcm" }, { - "depth": 3, - "title": "Coretime Splitting", - "anchor": "coretime-splitting" + "depth": 2, + "title": "XCM Example", + "anchor": "xcm-example" }, { "depth": 2, - "title": "On-Demand Coretime", - "anchor": "on-demand-coretime" + "title": "Overview", + "anchor": "overview" } ], "stats": { - "chars": 3028, - "words": 452, - "headings": 5, - "estimated_token_count_total": 619 + "chars": 7450, + "words": 974, + "headings": 7, + "estimated_token_count_total": 1501 }, - "hash": "sha256:00be43ac8d666bbe15c5c2fa5a5085697d0bb5a6f341ebbb943a209f0be355df", + "hash": "sha256:3b26606dd5310c4b8ade5d05270ebf1e06f59afcda4ca2b985e07948215a197e", "token_estimator": "heuristic-v1" }, { - "id": "reference-polkadot-hub-consensus-and-security-pos-consensus", - "title": "Proof of Stake Consensus", - "slug": "reference-polkadot-hub-consensus-and-security-pos-consensus", + "id": "parachains-launch-a-parachain-deploy-to-polkadot", + "title": "Deploy on Polkadot", + "slug": "parachains-launch-a-parachain-deploy-to-polkadot", "categories": [ - "Polkadot Protocol" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-polkadot-hub-consensus-and-security-pos-consensus.md", - "html_url": "https://docs.polkadot.com/reference/polkadot-hub/consensus-and-security/pos-consensus/", - "preview": "Polkadot's Proof of Stake consensus model leverages a unique hybrid approach by design to promote decentralized and secure network operations. In traditional Proof of Stake (PoS) systems, a node's ability to validate transactions is tied to its token holdings, which can lead to centralization risks and limited validator participation. Polkadot addresses these concerns through its [Nominated Proof of Stake (NPoS)](/reference/glossary/#nominated-proof-of-stake-npos){target=\\_blank} model and a com", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-launch-a-parachain-deploy-to-polkadot.md", + "html_url": "https://docs.polkadot.com/parachains/launch-a-parachain/deploy-to-polkadot/", + "preview": "Previously, you learned how to [choose and set up a parachain template](/parachains/launch-a-parachain/choose-a-template/){target=\\_blank}. Now, you'll take the next step towards a production-like environment by deploying your parachain to the Polkadot TestNet. Deploying to a TestNet is a crucial step for validating your parachain's functionality and preparing it for eventual MainNet deployment.", "outline": [ { "depth": 2, @@ -5363,86 +5793,64 @@ }, { "depth": 2, - "title": "Nominated Proof of Stake", - "anchor": "nominated-proof-of-stake" + "title": "Get Started with an Account and Tokens", + "anchor": "get-started-with-an-account-and-tokens" }, { "depth": 2, - "title": "Hybrid Consensus", - "anchor": "hybrid-consensus" + "title": "Reserve a Parachain Identifier", + "anchor": "reserve-a-parachain-identifier" }, { "depth": 2, - "title": "Block Production - BABE", - "anchor": "block-production-babe" + "title": "Generate Custom Keys for Your Collators", + "anchor": "generate-custom-keys-for-your-collators" }, { - "depth": 3, - "title": "Validator Participation", - "anchor": "validator-participation" + "depth": 2, + "title": "Generate the Chain Specification", + "anchor": "generate-the-chain-specification" }, { - "depth": 3, - "title": "Additional Resources", - "anchor": "additional-resources" + "depth": 2, + "title": "Export Required Files", + "anchor": "export-required-files" }, { "depth": 2, - "title": "Finality Gadget - GRANDPA", - "anchor": "finality-gadget-grandpa" - }, - { - "depth": 3, - "title": "Probabilistic vs. Provable Finality", - "anchor": "probabilistic-vs-provable-finality" - }, - { - "depth": 3, - "title": "Additional Resources", - "anchor": "additional-resources-2" + "title": "Register a Parathread", + "anchor": "register-a-parathread" }, { "depth": 2, - "title": "Fork Choice", - "anchor": "fork-choice" - }, - { - "depth": 3, - "title": "Additional Resources", - "anchor": "additional-resources-3" + "title": "Start the Collator Node", + "anchor": "start-the-collator-node" }, { "depth": 2, - "title": "Bridging - BEEFY", - "anchor": "bridging-beefy" - }, - { - "depth": 3, - "title": "Additional Resources", - "anchor": "additional-resources-4" + "title": "Producing Blocks", + "anchor": "producing-blocks" } ], "stats": { - "chars": 12753, - "words": 1834, - "headings": 13, - "estimated_token_count_total": 2526 + "chars": 20252, + "words": 2357, + "headings": 9, + "estimated_token_count_total": 4129 }, - "hash": "sha256:231fc555eefe5f910fb36e0c03945147d0fb235272850797391751f4444b0a9c", + "hash": "sha256:fde940bced4380fc01b1840907059d03f6d47b6cb54bf78c95269ac57adbc99e", "token_estimator": "heuristic-v1" }, { - "id": "reference-polkadot-hub-consensus-and-security-relay-chain", - "title": "Overview of the Polkadot Relay Chain", - "slug": "reference-polkadot-hub-consensus-and-security-relay-chain", + "id": "parachains-launch-a-parachain-obtain-coretime", + "title": "Obtain Coretime", + "slug": "parachains-launch-a-parachain-obtain-coretime", "categories": [ - "Basics", - "Polkadot Protocol", "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-polkadot-hub-consensus-and-security-relay-chain.md", - "html_url": "https://docs.polkadot.com/reference/polkadot-hub/consensus-and-security/relay-chain/", - "preview": "Polkadot is a next-generation blockchain protocol designed to support a multi-chain future by enabling secure communication and interoperability between different blockchains. Built as a Layer-0 protocol, Polkadot introduces innovations like application-specific Layer-1 chains ([parachains](/polkadot-protocol/architecture/parachains/){targe=\\_blank}), shared security through [Nominated Proof of Stake (NPoS)](/reference/glossary/#nominated-proof-of-stake-npos){target=\\_blank}, and cross-chain int", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-launch-a-parachain-obtain-coretime.md", + "html_url": "https://docs.polkadot.com/parachains/launch-a-parachain/obtain-coretime/", + "preview": "After deploying a parachain to Paseo in the [Deploy on Polkadot](/parachains/launch-a-parachain/deploy-to-polkadot/){target=\\_blank} tutorial, the next critical step is obtaining coretime. Coretime is the mechanism through which validation resources are allocated from the relay chain to your parachain. Your parachain can only produce and finalize blocks on the relay chain by obtaining coretime.", "outline": [ { "depth": 2, @@ -5451,74 +5859,80 @@ }, { "depth": 2, - "title": "Polkadot 1.0", - "anchor": "polkadot-10" + "title": "Prerequisites", + "anchor": "prerequisites" }, { - "depth": 3, - "title": "High-Level Architecture", - "anchor": "high-level-architecture" + "depth": 2, + "title": "Order On-Demand Coretime", + "anchor": "order-on-demand-coretime" }, { "depth": 3, - "title": "Polkadot's Additional Functionalities", - "anchor": "polkadots-additional-functionalities" + "title": "On-Demand Extrinsics", + "anchor": "on-demand-extrinsics" }, { "depth": 3, - "title": "Polkadot's Resilience", - "anchor": "polkadots-resilience" + "title": "Place an On-Demand Order", + "anchor": "place-an-on-demand-order" + }, + { + "depth": 2, + "title": "Purchase Bulk Coretime", + "anchor": "purchase-bulk-coretime" }, { "depth": 3, - "title": "Polkadot's Blockspace", - "anchor": "polkadots-blockspace" + "title": "Connect Your Wallet to RegionX", + "anchor": "connect-your-wallet-to-regionx" }, { - "depth": 2, - "title": "DOT Token", - "anchor": "dot-token" + "depth": 3, + "title": "Obtain Coretime Chain Funds", + "anchor": "obtain-coretime-chain-funds" }, { "depth": 3, - "title": "Redenomination of DOT", - "anchor": "redenomination-of-dot" + "title": "Purchase a Core", + "anchor": "purchase-a-core" }, { "depth": 3, - "title": "The Planck Unit", - "anchor": "the-planck-unit" + "title": "Verify Your Purchase", + "anchor": "verify-your-purchase" }, { "depth": 3, - "title": "Uses for DOT", - "anchor": "uses-for-dot" + "title": "Assign Your Parachain to the Core", + "anchor": "assign-your-parachain-to-the-core" }, { "depth": 2, - "title": "JAM and the Road Ahead", - "anchor": "jam-and-the-road-ahead" + "title": "Next Steps", + "anchor": "next-steps" } ], "stats": { - "chars": 12458, - "words": 1774, - "headings": 11, - "estimated_token_count_total": 2580 + "chars": 9049, + "words": 1345, + "headings": 12, + "estimated_token_count_total": 2103 }, - "hash": "sha256:60f5ac9f67fb9f2188121219830538d334028b3b9e85d42bd1e7279043654e39", + "hash": "sha256:15154f211753665d9af70dc81d15ceb3f0954e3febf9282c68c0074881d620c6", "token_estimator": "heuristic-v1" }, { - "id": "reference-polkadot-hub-people-and-identity", - "title": "People Chain", - "slug": "reference-polkadot-hub-people-and-identity", + "id": "parachains-launch-a-parachain-set-up-the-parachain-template", + "title": "Set Up the Polkadot SDK Parachain Template", + "slug": "parachains-launch-a-parachain-set-up-the-parachain-template", "categories": [ - "Polkadot Protocol" + "Basics", + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-polkadot-hub-people-and-identity.md", - "html_url": "https://docs.polkadot.com/reference/polkadot-hub/people-and-identity/", - "preview": "People chain is a specialized parachain within the Polkadot ecosystem dedicated to secure, decentralized identity management.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-launch-a-parachain-set-up-the-parachain-template.md", + "html_url": "https://docs.polkadot.com/parachains/launch-a-parachain/set-up-the-parachain-template/", + "preview": "The [Polkadot SDK](https://github.com/paritytech/polkadot-sdk){target=\\_blank} includes several [templates](/parachains/customize-runtime/#starting-templates){target=\\_blank} designed to help you quickly start building your own blockchain. Each template offers a different level of configuration, from minimal setups to feature-rich environments, allowing you to choose the foundation that best fits your project's needs.", "outline": [ { "depth": 2, @@ -5527,33 +5941,48 @@ }, { "depth": 2, - "title": "Identity Management System", - "anchor": "identity-management-system" + "title": "Prerequisites", + "anchor": "prerequisites" }, { - "depth": 3, - "title": "Sub-Identities", - "anchor": "sub-identities" + "depth": 2, + "title": "Polkadot SDK Utility Tools", + "anchor": "polkadot-sdk-utility-tools" }, { "depth": 2, - "title": "Verification Process", - "anchor": "verification-process" + "title": "Clone the Template", + "anchor": "clone-the-template" }, { - "depth": 3, - "title": "Judgment Requests", - "anchor": "judgment-requests" + "depth": 2, + "title": "Explore the Project Structure", + "anchor": "explore-the-project-structure" }, { - "depth": 3, - "title": "Judgment Classifications", - "anchor": "judgment-classifications" + "depth": 2, + "title": "Compile the Runtime", + "anchor": "compile-the-runtime" }, { - "depth": 3, - "title": "Registrars", - "anchor": "registrars" + "depth": 2, + "title": "Verify the Build", + "anchor": "verify-the-build" + }, + { + "depth": 2, + "title": "Run the Node Locally", + "anchor": "run-the-node-locally" + }, + { + "depth": 2, + "title": "Interact with the Node", + "anchor": "interact-with-the-node" + }, + { + "depth": 2, + "title": "Stop the Node", + "anchor": "stop-the-node" }, { "depth": 2, @@ -5562,132 +5991,70 @@ } ], "stats": { - "chars": 4750, - "words": 606, - "headings": 8, - "estimated_token_count_total": 876 - }, - "hash": "sha256:8239d1e8d8642cb7c10e9e5f971c99b999e9e4a87373b50bf4a691225c1e4702", - "token_estimator": "heuristic-v1" - }, - { - "id": "reference-polkadot-hub", - "title": "reference-polkadot-hub", - "slug": "reference-polkadot-hub", - "categories": [ - "Uncategorized" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-polkadot-hub.md", - "html_url": "https://docs.polkadot.com/reference/polkadot-hub/", - "preview": "TODO", - "outline": [], - "stats": { - "chars": 5, - "words": 1, - "headings": 0, - "estimated_token_count_total": 0 - }, - "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", - "token_estimator": "heuristic-v1" - }, - { - "id": "reference-tools-chopsticks", - "title": "reference-tools-chopsticks", - "slug": "reference-tools-chopsticks", - "categories": [ - "Uncategorized" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-chopsticks.md", - "html_url": "https://docs.polkadot.com/reference/tools/chopsticks/", - "preview": "TODO", - "outline": [], - "stats": { - "chars": 5, - "words": 1, - "headings": 0, - "estimated_token_count_total": 0 + "chars": 10591, + "words": 1510, + "headings": 11, + "estimated_token_count_total": 2377 }, - "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "hash": "sha256:1277261cb3de71cac194f26e765124ea9f3e09cffdcd94bb717965a11cb7f374", "token_estimator": "heuristic-v1" }, { - "id": "reference-tools-dedot", - "title": "Dedot", - "slug": "reference-tools-dedot", + "id": "parachains-runtime-maintenance-runtime-upgrades", + "title": "Runtime Upgrades", + "slug": "parachains-runtime-maintenance-runtime-upgrades", "categories": [ - "Tooling", - "Dapps" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-dedot.md", - "html_url": "https://docs.polkadot.com/reference/tools/dedot/", - "preview": "[Dedot](https://github.com/dedotdev/dedot){target=\\_blank} is a next-generation JavaScript client for Polkadot and Polkadot SDK-based blockchains. Designed to elevate the dApp development experience, Dedot is built and optimized to be lightweight and tree-shakable, offering precise types and APIs suggestions for individual Polkadot SDK-based blockchains and [ink! smart contracts](https://use.ink/){target=\\_blank}.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-runtime-maintenance-runtime-upgrades.md", + "html_url": "https://docs.polkadot.com/parachains/runtime-maintenance/runtime-upgrades/", + "preview": "One of the defining features of Polkadot SDK-based blockchains is the ability to perform forkless runtime upgrades. Unlike traditional blockchains, which require hard forks and node coordination for upgrades, Polkadot networks enable seamless updates without network disruption.", "outline": [ { "depth": 2, "title": "Introduction", "anchor": "introduction" }, - { - "depth": 3, - "title": "Key Features", - "anchor": "key-features" - }, - { - "depth": 2, - "title": "Installation", - "anchor": "installation" - }, { "depth": 2, - "title": "Get Started", - "anchor": "get-started" + "title": "How Runtime Upgrades Work", + "anchor": "how-runtime-upgrades-work" }, { "depth": 3, - "title": "Initialize a Client Instance", - "anchor": "initialize-a-client-instance" + "title": "Runtime Versioning", + "anchor": "runtime-versioning" }, { "depth": 3, - "title": "Enable Type and API Suggestions", - "anchor": "enable-type-and-api-suggestions" - }, - { - "depth": 3, - "title": "Read On-Chain Data", - "anchor": "read-on-chain-data" - }, - { - "depth": 3, - "title": "Sign and Send Transactions", - "anchor": "sign-and-send-transactions" + "title": "Accessing the Runtime Version", + "anchor": "accessing-the-runtime-version" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "Storage Migrations", + "anchor": "storage-migrations" } ], "stats": { - "chars": 8855, - "words": 1100, - "headings": 9, - "estimated_token_count_total": 2300 + "chars": 5837, + "words": 811, + "headings": 5, + "estimated_token_count_total": 1161 }, - "hash": "sha256:ba24e31e2ad94fbf1d73f1878da92dd2e1476db00170780bbdf0e65ab18bc961", + "hash": "sha256:ec31270001a6cd9d0a8ecb7974ad161d5c1ef4d3023d5a6af9fbc5a6ca46cbca", "token_estimator": "heuristic-v1" }, { - "id": "reference-tools-light-clients", - "title": "Light Clients", - "slug": "reference-tools-light-clients", + "id": "parachains-runtime-maintenance-storage-migrations", + "title": "Storage Migrations", + "slug": "parachains-runtime-maintenance-storage-migrations", "categories": [ - "Parachains", - "Tooling" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-light-clients.md", - "html_url": "https://docs.polkadot.com/reference/tools/light-clients/", - "preview": "Light clients enable secure and efficient blockchain interaction without running a full node. They provide a trust-minimized alternative to JSON-RPC by verifying data through cryptographic proofs rather than blindly trusting remote nodes.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-runtime-maintenance-storage-migrations.md", + "html_url": "https://docs.polkadot.com/parachains/runtime-maintenance/storage-migrations/", + "preview": "Storage migrations are a crucial part of the runtime upgrade process. They allow you to update the [storage items](https://paritytech.github.io/polkadot-sdk/master/frame_support/pallet_macros/attr.storage.html){target=\\_blank} of your blockchain, adapting to changes in the runtime. Whenever you change the encoding or data types used to represent data in storage, you'll need to provide a storage migration to ensure the runtime can correctly interpret the existing stored values in the new runtime", "outline": [ { "depth": 2, @@ -5696,55 +6063,69 @@ }, { "depth": 2, - "title": "Light Clients Workflow", - "anchor": "light-clients-workflow" + "title": "Storage Migration Scenarios", + "anchor": "storage-migration-scenarios" }, { "depth": 2, - "title": "JSON-RPC and Light Client Comparison", - "anchor": "json-rpc-and-light-client-comparison" + "title": "Implement Storage Migrations", + "anchor": "implement-storage-migrations" }, { - "depth": 2, - "title": "Using Light Clients", - "anchor": "using-light-clients" + "depth": 3, + "title": "Core Migration Function", + "anchor": "core-migration-function" }, { "depth": 3, - "title": "PAPI Light Client Support", - "anchor": "papi-light-client-support" + "title": "Migration Testing Hooks", + "anchor": "migration-testing-hooks" }, { "depth": 3, - "title": "Substrate Connect - Browser Extension", - "anchor": "substrate-connect-browser-extension" + "title": "Migration Structure", + "anchor": "migration-structure" + }, + { + "depth": 3, + "title": "Migration Organization", + "anchor": "migration-organization" + }, + { + "depth": 3, + "title": "Scheduling Migrations", + "anchor": "scheduling-migrations" }, { "depth": 2, - "title": "Resources", - "anchor": "resources" + "title": "Single-Block Migrations", + "anchor": "single-block-migrations" + }, + { + "depth": 2, + "title": "Multi Block Migrations", + "anchor": "multi-block-migrations" } ], "stats": { - "chars": 6490, - "words": 870, - "headings": 7, - "estimated_token_count_total": 1430 + "chars": 18500, + "words": 2363, + "headings": 10, + "estimated_token_count_total": 4014 }, - "hash": "sha256:1284c42be692167e01bcc44e2e134ec20615402675fac26df246c00aa1588d80", + "hash": "sha256:55dc252fdecf1590048ce8d009b822e90231442abe81e9593cf1635944a31336", "token_estimator": "heuristic-v1" }, { - "id": "reference-tools-moonwall", - "title": "E2E Testing with Moonwall", - "slug": "reference-tools-moonwall", + "id": "parachains-runtime-maintenance-unlock-parachains", + "title": "Unlock a Parachain", + "slug": "parachains-runtime-maintenance-unlock-parachains", "categories": [ - "Parachains", - "Tooling" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-moonwall.md", - "html_url": "https://docs.polkadot.com/reference/tools/moonwall/", - "preview": "Moonwall is an end-to-end testing framework designed explicitly for Polkadot SDK-based blockchain networks. It addresses one of the most significant challenges in blockchain development: managing complex test environments and network configurations.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-runtime-maintenance-unlock-parachains.md", + "html_url": "https://docs.polkadot.com/parachains/runtime-maintenance/unlock-parachains/", + "preview": "Parachain locks are a critical security mechanism in the Polkadot ecosystem designed to maintain decentralization during the parachain lifecycle. These locks prevent potential centralization risks that could emerge during the early stages of parachain operation.", "outline": [ { "depth": 2, @@ -5753,65 +6134,50 @@ }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "Check If the Parachain Is Locked", + "anchor": "check-if-the-parachain-is-locked" }, { "depth": 2, - "title": "Install Moonwall", - "anchor": "install-moonwall" + "title": "How to Unlock a Parachain", + "anchor": "how-to-unlock-a-parachain" }, { "depth": 3, - "title": "Global Installation", - "anchor": "global-installation" + "title": "Prepare the Unlock Call", + "anchor": "prepare-the-unlock-call" }, { "depth": 3, - "title": "Local Installation", - "anchor": "local-installation" - }, - { - "depth": 2, - "title": "Initialize Moonwall", - "anchor": "initialize-moonwall" - }, - { - "depth": 2, - "title": "Writing Tests", - "anchor": "writing-tests" - }, - { - "depth": 2, - "title": "Running the Tests", - "anchor": "running-the-tests" + "title": "Fund the Sovereign Account", + "anchor": "fund-the-sovereign-account" }, { - "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "depth": 3, + "title": "Craft and Submit the XCM", + "anchor": "craft-and-submit-the-xcm" } ], "stats": { - "chars": 10240, - "words": 1295, - "headings": 9, - "estimated_token_count_total": 2453 + "chars": 9232, + "words": 1276, + "headings": 6, + "estimated_token_count_total": 2028 }, - "hash": "sha256:2c77cfb38bb2e466a8f56dabbb706fcd2e90cf1634fc9beb7f0ee95a75735653", + "hash": "sha256:e408d05199cc184fc6fe8bb212efb3c9aa6cb79258977e07566692176c912def", "token_estimator": "heuristic-v1" }, { - "id": "reference-tools-omninode", - "title": "Polkadot Omni Node", - "slug": "reference-tools-omninode", + "id": "parachains-testing-fork-a-parachain", + "title": "Get Started", + "slug": "parachains-testing-fork-a-parachain", "categories": [ "Parachains", "Tooling" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-omninode.md", - "html_url": "https://docs.polkadot.com/reference/tools/omninode/", - "preview": "The [`polkadot-omni-node`](https://crates.io/crates/polkadot-omni-node/0.7.0){target=\\_blank} crate is a versatile, pre-built binary designed to simplify running parachains in the Polkadot ecosystem. Unlike traditional node binaries that are tightly coupled to specific runtime code, the `polkadot-omni-node` operates using an external [chain specification](/polkadot-protocol/glossary#chain-specification){target=\\_blank} file, allowing it to adapt dynamically to different parachains.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-testing-fork-a-parachain.md", + "html_url": "https://docs.polkadot.com/parachains/testing/fork-a-parachain/", + "preview": "[Chopsticks](https://github.com/AcalaNetwork/chopsticks/){target=\\_blank}, developed by the [Acala Foundation](https://github.com/AcalaNetwork){target=\\_blank}, is a versatile tool tailored for developers working on Polkadot SDK-based blockchains. With Chopsticks, you can fork live chains locally, replay blocks to analyze extrinsics, and simulate complex scenarios like XCM interactions all without deploying to a live network.", "outline": [ { "depth": 2, @@ -5825,60 +6191,65 @@ }, { "depth": 2, - "title": "Install Polkadot Omni Node", - "anchor": "install-polkadot-omni-node" + "title": "Install Chopsticks", + "anchor": "install-chopsticks" }, { - "depth": 2, - "title": "Obtain Chain Specifications", - "anchor": "obtain-chain-specifications" + "depth": 3, + "title": "Global Installation", + "anchor": "global-installation" }, { - "depth": 2, - "title": "Run a Parachain Full Node", - "anchor": "run-a-parachain-full-node" + "depth": 3, + "title": "Local Installation", + "anchor": "local-installation" }, { "depth": 2, - "title": "Interact with the Node", - "anchor": "interact-with-the-node" + "title": "Configure Chopsticks", + "anchor": "configure-chopsticks" }, { - "depth": 2, - "title": "Parachain Compatibility", - "anchor": "parachain-compatibility" + "depth": 3, + "title": "Configuration File", + "anchor": "configuration-file" }, { "depth": 3, - "title": "Required Runtime APIs", - "anchor": "required-runtime-apis" + "title": "CLI Flags", + "anchor": "cli-flags" }, { - "depth": 3, - "title": "Required Pallets", - "anchor": "required-pallets" + "depth": 2, + "title": "WebSocket Commands", + "anchor": "websocket-commands" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" } ], "stats": { - "chars": 8913, - "words": 1164, - "headings": 9, - "estimated_token_count_total": 2017 + "chars": 10894, + "words": 1330, + "headings": 10, + "estimated_token_count_total": 2614 }, - "hash": "sha256:7db2d31ba37abad20b026c875f632b89739b45707e58809e2e8b32a09715c6f9", + "hash": "sha256:4325cdd697814b8043db808da3dee86d3d9c6fc7dd523aae7fe8914d59d1b39c", "token_estimator": "heuristic-v1" }, { - "id": "reference-tools-papi", - "title": "Polkadot-API", - "slug": "reference-tools-papi", + "id": "parachains-testing-run-a-parachain-network", + "title": "Get Started", + "slug": "parachains-testing-run-a-parachain-network", "categories": [ - "Tooling", - "Dapps" + "Parachains", + "Tooling" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-papi.md", - "html_url": "https://docs.polkadot.com/reference/tools/papi/", - "preview": "[Polkadot-API](https://github.com/polkadot-api/polkadot-api){target=\\_blank} (PAPI) is a set of libraries built to be modular, composable, and grounded in a “light-client first” approach. Its primary aim is to equip dApp developers with an extensive toolkit for building fully decentralized applications.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-testing-run-a-parachain-network.md", + "html_url": "https://docs.polkadot.com/parachains/testing/run-a-parachain-network/", + "preview": "Zombienet is a robust testing framework designed for Polkadot SDK-based blockchain networks. It enables developers to efficiently deploy and test ephemeral blockchain environments on platforms like Kubernetes, Podman, and native setups. With its simple and versatile CLI, Zombienet provides an all-in-one solution for spawning networks, running tests, and validating performance.", "outline": [ { "depth": 2, @@ -5887,136 +6258,63 @@ }, { "depth": 2, - "title": "Get Started", - "anchor": "get-started" + "title": "Install Zombienet", + "anchor": "install-zombienet" + }, + { + "depth": 2, + "title": "Providers", + "anchor": "providers" }, { "depth": 3, - "title": "API Instantiation", - "anchor": "api-instantiation" + "title": "Kubernetes", + "anchor": "kubernetes" }, { "depth": 3, - "title": "Reading Chain Data", - "anchor": "reading-chain-data" + "title": "Podman", + "anchor": "podman" }, { "depth": 3, - "title": "Sending Transactions", - "anchor": "sending-transactions" + "title": "Local Provider", + "anchor": "local-provider" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" - } - ], - "stats": { - "chars": 8957, - "words": 1156, - "headings": 6, - "estimated_token_count_total": 1987 - }, - "hash": "sha256:2ca93b09d3bb9159bbf53816886a9b242bb3c13b996c51fd52962e049e2d5477", - "token_estimator": "heuristic-v1" - }, - { - "id": "reference-tools-paraspell", - "title": "ParaSpell XCM SDK", - "slug": "reference-tools-paraspell", - "categories": [ - "Uncategorized" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-paraspell.md", - "html_url": "https://docs.polkadot.com/reference/tools/paraspell/", - "preview": "[ParaSpell](https://paraspell.github.io/docs/){target=\\_blank} is a comprehensive suite of open-source tools designed to simplify cross-chain interactions within the Polkadot ecosystem. At its core, ParaSpell is dedicated to enhancing the functionality of the [XCM (Cross-Consensus Messaging)](/parachains/interoperability/get-started/){target=\\_blank} protocol by providing developers with a unified and streamlined experience for building interoperable decentralized applications (dApps).", - "outline": [ - { - "depth": 2, - "title": "Introduction", - "anchor": "introduction" - }, - { - "depth": 3, - "title": "ParaSpell XCM SDK", - "anchor": "paraspell-xcm-sdk" - }, - { - "depth": 2, - "title": "Install ParaSpell", - "anchor": "install-paraspell" - }, - { - "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" - } - ], - "stats": { - "chars": 4043, - "words": 562, - "headings": 4, - "estimated_token_count_total": 888 - }, - "hash": "sha256:c8741954ea656680aa3322c825e3f6acbaac369baaa42232b06af9e5e482f74f", - "token_estimator": "heuristic-v1" - }, - { - "id": "reference-tools-polkadart", - "title": "Polkadart", - "slug": "reference-tools-polkadart", - "categories": [ - "Tooling", - "Dapps" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-polkadart.md", - "html_url": "https://docs.polkadot.com/reference/tools/polkadart/", - "preview": "Polkadart is the most comprehensive Dart/Flutter SDK for interacting with Polkadot, Substrate, and other compatible blockchain networks. Designed with a Dart-first approach and type-safe APIs, it provides everything developers need to build powerful decentralized applications.", - "outline": [ - { - "depth": 2, - "title": "Installation", - "anchor": "installation" - }, - { - "depth": 2, - "title": "Get Started", - "anchor": "get-started" - }, - { - "depth": 3, - "title": "Type Generation", - "anchor": "type-generation" + "title": "Configure Zombienet", + "anchor": "configure-zombienet" }, { "depth": 3, - "title": "Run Generator", - "anchor": "run-generator" + "title": "Configuration Files", + "anchor": "configuration-files" }, { "depth": 3, - "title": "Use Generated Types", - "anchor": "use-generated-types" + "title": "CLI Usage", + "anchor": "cli-usage" }, { "depth": 3, - "title": "Creating an API Instance", - "anchor": "creating-an-api-instance" + "title": "Settings", + "anchor": "settings" }, { "depth": 3, - "title": "Reading Chain Data", - "anchor": "reading-chain-data" + "title": "Relay Chain Configuration", + "anchor": "relay-chain-configuration" }, { "depth": 3, - "title": "Subscribe to New Blocks", - "anchor": "subscribe-to-new-blocks" + "title": "Parachain Configuration", + "anchor": "parachain-configuration" }, { "depth": 3, - "title": "Send a Transaction", - "anchor": "send-a-transaction" + "title": "XCM Configuration", + "anchor": "xcm-configuration" }, { "depth": 2, @@ -6025,65 +6323,45 @@ } ], "stats": { - "chars": 5178, - "words": 624, - "headings": 10, - "estimated_token_count_total": 1084 + "chars": 41636, + "words": 4599, + "headings": 14, + "estimated_token_count_total": 9871 }, - "hash": "sha256:7f533abe61586af8438e350c41b741d74a8edb839f9dc4139bc4619ba3748258", + "hash": "sha256:0d7e04fd952cc9d5bd8cdbfd87cc4004c5f95e896a16bc7f89dfc4caeac8f371", "token_estimator": "heuristic-v1" }, { - "id": "reference-tools-polkadot-js-api", - "title": "Polkadot.js API", - "slug": "reference-tools-polkadot-js-api", + "id": "polkadot-protocol-architecture-parachains-consensus", + "title": "Parachain Consensus", + "slug": "polkadot-protocol-architecture-parachains-consensus", "categories": [ - "Tooling", - "Dapps" + "Polkadot Protocol", + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-polkadot-js-api.md", - "html_url": "https://docs.polkadot.com/reference/tools/polkadot-js-api/", - "preview": "!!! warning \"Maintenance Mode Only\" The Polkadot.js API is now in maintenance mode and is no longer actively developed. New projects should use [Dedot](/develop/toolkit/api-libraries/dedot){target=\\_blank} (TypeScript-first API) or [Polkadot API](/develop/toolkit/api-libraries/papi){target=\\_blank} (modern, type-safe API) as actively maintained alternatives.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/polkadot-protocol-architecture-parachains-consensus.md", + "html_url": "https://docs.polkadot.com/polkadot-protocol/architecture/parachains/consensus/", + "preview": "Parachains are independent blockchains built with the Polkadot SDK, designed to leverage Polkadot’s relay chain for shared security and transaction finality. These specialized chains operate as part of Polkadot’s execution sharding model, where each parachain manages its own state and transactions while relying on the relay chain for validation and consensus.", "outline": [ { "depth": 2, "title": "Introduction", "anchor": "introduction" }, - { - "depth": 3, - "title": "Dynamic API Generation", - "anchor": "dynamic-api-generation" - }, - { - "depth": 3, - "title": "Available API Categories", - "anchor": "available-api-categories" - }, { "depth": 2, - "title": "Installation", - "anchor": "installation" + "title": "The Role of Collators", + "anchor": "the-role-of-collators" }, { "depth": 2, - "title": "Get Started", - "anchor": "get-started" - }, - { - "depth": 3, - "title": "Creating an API Instance", - "anchor": "creating-an-api-instance" - }, - { - "depth": 3, - "title": "Reading Chain Data", - "anchor": "reading-chain-data" + "title": "Consensus and Validation", + "anchor": "consensus-and-validation" }, { "depth": 3, - "title": "Sending Transactions", - "anchor": "sending-transactions" + "title": "Path of a Parachain Block", + "anchor": "path-of-a-parachain-block" }, { "depth": 2, @@ -6092,25 +6370,26 @@ } ], "stats": { - "chars": 5042, - "words": 684, - "headings": 9, - "estimated_token_count_total": 1166 + "chars": 6150, + "words": 790, + "headings": 5, + "estimated_token_count_total": 1125 }, - "hash": "sha256:ed3986f30880fefca5975fcdc847c68b4aca65862c63e3002b25391b0521781d", + "hash": "sha256:9875239c6071033a37a0f67fabca5a6e840c4a287620309f47b4f29c5a95a1cb", "token_estimator": "heuristic-v1" }, { - "id": "reference-tools-py-substrate-interface", - "title": "Python Substrate Interface", - "slug": "reference-tools-py-substrate-interface", + "id": "polkadot-protocol-architecture-parachains-overview", + "title": "Overview", + "slug": "polkadot-protocol-architecture-parachains-overview", "categories": [ - "Tooling", - "Dapps" + "Basics", + "Polkadot Protocol", + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-py-substrate-interface.md", - "html_url": "https://docs.polkadot.com/reference/tools/py-substrate-interface/", - "preview": "The [Python Substrate Interface](https://github.com/polkascan/py-substrate-interface){target=\\_blank} is a powerful library that enables interaction with Polkadot SDK-based chains. It provides essential functionality for:", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/polkadot-protocol-architecture-parachains-overview.md", + "html_url": "https://docs.polkadot.com/polkadot-protocol/architecture/parachains/overview/", + "preview": "A [_parachain_](/polkadot-protocol/glossary#parachain){target=\\_blank} is a coherent, application-specific blockchain that derives security from its respective relay chain. Parachains on Polkadot are each their own separate, fully functioning blockchain. The primary difference between a parachain and a regular, \"solo\" blockchain is that the relay chain verifies the state of all parachains that are connected to it. In many ways, parachains can be thought of as a [\"cynical\" rollup](#cryptoeconomic", "outline": [ { "depth": 2, @@ -6119,28 +6398,33 @@ }, { "depth": 2, - "title": "Installation", - "anchor": "installation" + "title": "Coherent Systems", + "anchor": "coherent-systems" }, { "depth": 2, - "title": "Get Started", - "anchor": "get-started" + "title": "Flexible Ecosystem", + "anchor": "flexible-ecosystem" }, { - "depth": 3, - "title": "Establishing Connection", - "anchor": "establishing-connection" + "depth": 2, + "title": "State Transition Functions (Runtimes)", + "anchor": "state-transition-functions-runtimes" }, { - "depth": 3, - "title": "Reading Chain State", - "anchor": "reading-chain-state" + "depth": 2, + "title": "Shared Security: Validated by the Relay Chain", + "anchor": "shared-security-validated-by-the-relay-chain" }, { "depth": 3, - "title": "Submitting Transactions", - "anchor": "submitting-transactions" + "title": "Cryptoeconomic Security: ELVES Protocol", + "anchor": "cryptoeconomic-security-elves-protocol" + }, + { + "depth": 2, + "title": "Interoperability", + "anchor": "interoperability" }, { "depth": 2, @@ -6149,50 +6433,91 @@ } ], "stats": { - "chars": 4302, - "words": 541, - "headings": 7, - "estimated_token_count_total": 942 + "chars": 9561, + "words": 1321, + "headings": 8, + "estimated_token_count_total": 1861 }, - "hash": "sha256:8987fc35cd28602054ee018031f773e2e3837425107c51d0e2ac68a94b86e9c0", + "hash": "sha256:932c12e1af939698279ede2eacb2190e1f56119582adf2064d6cf86f7a4f3e3c", "token_estimator": "heuristic-v1" }, { - "id": "reference-tools-sidecar", - "title": "Sidecar REST API", - "slug": "reference-tools-sidecar", + "id": "polkadot-protocol-architecture-parachains", + "title": "Parachains", + "slug": "polkadot-protocol-architecture-parachains", "categories": [ - "Tooling", - "Dapps" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-sidecar.md", - "html_url": "https://docs.polkadot.com/reference/tools/sidecar/", - "preview": "The [Sidecar REST API](https://github.com/paritytech/substrate-api-sidecar){target=\\_blank} is a service that provides a REST interface for interacting with Polkadot SDK-based blockchains. With this API, developers can easily access a broad range of endpoints for nodes, accounts, transactions, parachains, and more.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/polkadot-protocol-architecture-parachains.md", + "html_url": "https://docs.polkadot.com/polkadot-protocol/architecture/parachains/", + "preview": "Discover how parachains secure their networks and reach consensus by harnessing Polkadot’s relay chain and its robust validator framework. This integrated architecture ensures shared security and seamless coordination across the entire ecosystem.", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" - }, + "title": "In This Section", + "anchor": "in-this-section" + } + ], + "stats": { + "chars": 725, + "words": 93, + "headings": 1, + "estimated_token_count_total": 12 + }, + "hash": "sha256:3b9160b166d9b42b124f3b07eb26bdc5499fbbace6f951095009a5eee7fccbb6", + "token_estimator": "heuristic-v1" + }, + { + "id": "polkadot-protocol-architecture-polkadot-chain", + "title": "The Polkadot Relay Chain", + "slug": "polkadot-protocol-architecture-polkadot-chain", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/polkadot-protocol-architecture-polkadot-chain.md", + "html_url": "https://docs.polkadot.com/polkadot-protocol/architecture/polkadot-chain/", + "preview": "Discover the central role of the Polkadot relay chain in securing the network and fostering interoperability. As the backbone of Polkadot, the relay chain provides shared security and ensures consensus across the ecosystem. It empowers parachains with flexible coretime allocation, enabling them to purchase blockspace on demand, ensuring efficiency and scalability for diverse blockchain applications.", + "outline": [ { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" - }, + "title": "In This Section", + "anchor": "in-this-section" + } + ], + "stats": { + "chars": 481, + "words": 63, + "headings": 1, + "estimated_token_count_total": 12 + }, + "hash": "sha256:c29356358f095b0d413e4c6525146b3f1b0b900853aada2168e7e55cd8dd6641", + "token_estimator": "heuristic-v1" + }, + { + "id": "polkadot-protocol-architecture-system-chains-coretime", + "title": "Coretime Chain", + "slug": "polkadot-protocol-architecture-system-chains-coretime", + "categories": [ + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/polkadot-protocol-architecture-system-chains-coretime.md", + "html_url": "https://docs.polkadot.com/polkadot-protocol/architecture/system-chains/coretime/", + "preview": "The Coretime system chain facilitates the allocation, procurement, sale, and scheduling of bulk [coretime](/reference/glossary/#coretime){target=\\_blank}, enabling tasks (such as [parachains](/reference/glossary/#parachain){target=\\_blank}) to utilize the computation and security provided by Polkadot.", + "outline": [ { "depth": 2, - "title": "Installation", - "anchor": "installation" + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Usage", - "anchor": "usage" + "title": "Bulk Coretime Assignment", + "anchor": "bulk-coretime-assignment" }, { - "depth": 3, - "title": "Endpoints", - "anchor": "endpoints" + "depth": 2, + "title": "On Demand Coretime", + "anchor": "on-demand-coretime" }, { "depth": 2, @@ -6201,25 +6526,25 @@ } ], "stats": { - "chars": 7309, - "words": 1033, - "headings": 6, - "estimated_token_count_total": 1945 + "chars": 5279, + "words": 772, + "headings": 4, + "estimated_token_count_total": 1230 }, - "hash": "sha256:0795462182cb97256bb5c2acb035855fe0d6557185de8ac99482725ecb4f94c1", + "hash": "sha256:8d186fa56ccbbf4b6c85cffc5521b9a99a20e9517f3b4a435730745803cbf2e8", "token_estimator": "heuristic-v1" }, { - "id": "reference-tools-subxt", - "title": "Subxt Rust API", - "slug": "reference-tools-subxt", + "id": "polkadot-protocol-architecture-system-chains-overview", + "title": "Overview of Polkadot's System Chains", + "slug": "polkadot-protocol-architecture-system-chains-overview", "categories": [ - "Tooling", - "Dapps" + "Basics", + "Polkadot Protocol" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-subxt.md", - "html_url": "https://docs.polkadot.com/reference/tools/subxt/", - "preview": "Subxt is a Rust library designed to interact with Polkadot SDK-based blockchains. It provides a type-safe interface for submitting transactions, querying on-chain state, and performing other blockchain interactions. By leveraging Rust's strong type system, subxt ensures that your code is validated at compile time, reducing runtime errors and improving reliability.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/polkadot-protocol-architecture-system-chains-overview.md", + "html_url": "https://docs.polkadot.com/polkadot-protocol/architecture/system-chains/overview/", + "preview": "Polkadot's relay chain is designed to secure parachains and facilitate seamless inter-chain communication. However, resource-intensive—tasks like governance, asset management, and bridging are more efficiently handled by system parachains. These specialized chains offload functionality from the relay chain, leveraging Polkadot's parallel execution model to improve performance and scalability. By distributing key functionalities across system parachains, Polkadot can maximize its relay chain's bl", "outline": [ { "depth": 2, @@ -6228,373 +6553,316 @@ }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "System Chains", + "anchor": "system-chains" }, { "depth": 2, - "title": "Installation", - "anchor": "installation" - }, - { - "depth": 2, - "title": "Get Started", - "anchor": "get-started" + "title": "Existing System Chains", + "anchor": "existing-system-chains" }, { "depth": 3, - "title": "Download Chain Metadata", - "anchor": "download-chain-metadata" + "title": "Asset Hub", + "anchor": "asset-hub" }, { "depth": 3, - "title": "Generate Type-Safe Interfaces", - "anchor": "generate-type-safe-interfaces" + "title": "Collectives", + "anchor": "collectives" }, { "depth": 3, - "title": "Initialize the Subxt Client", - "anchor": "initialize-the-subxt-client" + "title": "Bridge Hub", + "anchor": "bridge-hub" }, { "depth": 3, - "title": "Read Chain Data", - "anchor": "read-chain-data" + "title": "People Chain", + "anchor": "people-chain" }, { "depth": 3, - "title": "Submit Transactions", - "anchor": "submit-transactions" + "title": "Coretime Chain", + "anchor": "coretime-chain" }, { - "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "depth": 3, + "title": "Encointer", + "anchor": "encointer" } ], "stats": { - "chars": 9174, - "words": 1175, - "headings": 10, - "estimated_token_count_total": 2187 + "chars": 7727, + "words": 1105, + "headings": 9, + "estimated_token_count_total": 1643 }, - "hash": "sha256:56269d9ea47f5b4e92cd7d5a1e65ab06d181a9c380f90bb3ef285529b12299f7", + "hash": "sha256:100377787627052a29bd1173270b5ad307639b828c331e71c85d4c00bc5692d8", "token_estimator": "heuristic-v1" }, { - "id": "reference-tools-xcm-tools", - "title": "XCM Tools", - "slug": "reference-tools-xcm-tools", + "id": "polkadot-protocol-architecture-system-chains", + "title": "System Chains", + "slug": "polkadot-protocol-architecture-system-chains", "categories": [ - "Basics", - "Tooling", - "Dapps" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-xcm-tools.md", - "html_url": "https://docs.polkadot.com/reference/tools/xcm-tools/", - "preview": "As described in the [Interoperability](/develop/interoperability){target=\\_blank} section, XCM (Cross-Consensus Messaging) is a protocol used in the Polkadot and Kusama ecosystems to enable communication and interaction between chains. It facilitates cross-chain communication, allowing assets, data, and messages to flow seamlessly across the ecosystem.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/polkadot-protocol-architecture-system-chains.md", + "html_url": "https://docs.polkadot.com/polkadot-protocol/architecture/system-chains/", + "preview": "Explore the critical roles Polkadot’s system chains play in enhancing the network’s efficiency and scalability. From managing on-chain assets with the Asset Hub to enabling seamless Web3 integration through the Bridge Hub and facilitating coretime operations with the Coretime chain, each system chain is designed to offload specialized tasks from the relay chain, optimizing the entire ecosystem.", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" - }, - { - "depth": 2, - "title": "Popular XCM Tools", - "anchor": "popular-xcm-tools" - }, - { - "depth": 3, - "title": "Moonsong Labs XCM Tools", - "anchor": "moonsong-labs-xcm-tools" - }, - { - "depth": 3, - "title": "ParaSpell", - "anchor": "paraspell" - }, - { - "depth": 3, - "title": "Astar XCM Tools", - "anchor": "astar-xcm-tools" - }, - { - "depth": 3, - "title": "Chopsticks", - "anchor": "chopsticks" - }, - { - "depth": 3, - "title": "Moonbeam XCM SDK", - "anchor": "moonbeam-xcm-sdk" + "title": "In This Section", + "anchor": "in-this-section" } ], "stats": { - "chars": 6146, - "words": 852, - "headings": 7, - "estimated_token_count_total": 1377 + "chars": 929, + "words": 124, + "headings": 1, + "estimated_token_count_total": 12 }, - "hash": "sha256:674e4f60c82fc7544c7af8e09f1e0f677c9907cdff88b107f6c8489e97a43487", + "hash": "sha256:6ef13c197dd1865fcc1a405d67486f1d053534d576bb32fe47a442fd2c11b6cd", "token_estimator": "heuristic-v1" }, { - "id": "reference-tools-zombienet", - "title": "reference-tools-zombienet", - "slug": "reference-tools-zombienet", + "id": "polkadot-protocol-architecture", + "title": "Architecture", + "slug": "polkadot-protocol-architecture", "categories": [ "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-zombienet.md", - "html_url": "https://docs.polkadot.com/reference/tools/zombienet/", - "preview": "TODO", - "outline": [], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/polkadot-protocol-architecture.md", + "html_url": "https://docs.polkadot.com/polkadot-protocol/architecture/", + "preview": "Explore Polkadot's architecture, including the relay chain, parachains, and system chains, and discover the role each component plays in the broader ecosystem.", + "outline": [ + { + "depth": 2, + "title": "A Brief Look at Polkadot’s Chain Ecosystem", + "anchor": "a-brief-look-at-polkadots-chain-ecosystem" + }, + { + "depth": 2, + "title": "In This Section", + "anchor": "in-this-section" + } + ], "stats": { - "chars": 5, - "words": 1, - "headings": 0, - "estimated_token_count_total": 0 + "chars": 990, + "words": 132, + "headings": 2, + "estimated_token_count_total": 177 }, - "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "hash": "sha256:ffda04c93c70ec7204be28b642fa6e51f6bf9436d4792ecd25136696683f0902", "token_estimator": "heuristic-v1" }, { - "id": "reference", - "title": "Technical Reference Overview", - "slug": "reference", + "id": "polkadot-protocol-onchain-governance", + "title": "On-Chain Governance", + "slug": "polkadot-protocol-onchain-governance", "categories": [ - "Basics", - "Polkadot Protocol", - "Reference" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference.md", - "html_url": "https://docs.polkadot.com/reference/", - "preview": "The Technical Reference section provides comprehensive documentation of Polkadot's architecture, core concepts, and development tooling. Whether you're exploring how Polkadot's relay chain coordinates parachains, understanding governance mechanisms, or building applications on the network, this reference covers the technical foundations you need.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/polkadot-protocol-onchain-governance.md", + "html_url": "https://docs.polkadot.com/polkadot-protocol/onchain-governance/", + "preview": "Polkadot's on-chain governance system, OpenGov, enables decentralized decision-making across the network. It empowers stakeholders to propose, vote on, and enact changes with transparency and efficiency. This system ensures that governance is both flexible and inclusive, allowing developers to integrate custom governance solutions and mechanisms within the network. Understanding how OpenGov functions is crucial for anyone looking to engage with Polkadot’s decentralized ecosystem, whether you’re", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" - }, - { - "depth": 2, - "title": "Polkadot Hub", - "anchor": "polkadot-hub" - }, - { - "depth": 2, - "title": "Parachains", - "anchor": "parachains" + "title": "Start Building Governance Solutions", + "anchor": "start-building-governance-solutions" }, { "depth": 2, - "title": "On-Chain Governance", - "anchor": "on-chain-governance" - }, - { - "depth": 2, - "title": "Glossary", - "anchor": "glossary" - }, - { - "depth": 2, - "title": "Tools", - "anchor": "tools" - }, - { - "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "In This Section", + "anchor": "in-this-section" } ], "stats": { - "chars": 7648, - "words": 937, - "headings": 7, - "estimated_token_count_total": 1682 + "chars": 2114, + "words": 285, + "headings": 2, + "estimated_token_count_total": 233 }, - "hash": "sha256:9f71f3b4018f7a9e127cff51fab7cfe1168adcde2553cd1fc5dc8c25fb97a30d", + "hash": "sha256:58fd5c8c092ee748c2979164f985a67071a6ccb88492e79cdad536363364c858", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-connect", - "title": "Connect to Polkadot", - "slug": "smart-contracts-connect", + "id": "polkadot-protocol-parachain-basics-blocks-transactions-fees", + "title": "Blocks, Transactions, and Fees", + "slug": "polkadot-protocol-parachain-basics-blocks-transactions-fees", "categories": [ - "Smart Contracts" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-connect.md", - "html_url": "https://docs.polkadot.com/smart-contracts/connect/", - "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/polkadot-protocol-parachain-basics-blocks-transactions-fees.md", + "html_url": "https://docs.polkadot.com/polkadot-protocol/parachain-basics/blocks-transactions-fees/", + "preview": "Discover the inner workings of Polkadot’s blocks and transactions, including their structure, processing, and lifecycle within the network. Learn how blocks are authored, validated, and finalized, ensuring seamless operation and consensus across the ecosystem. Dive into the various types of transactions—signed, unsigned, and inherent—and understand how they are constructed, submitted, and validated.", "outline": [ { "depth": 2, - "title": "Networks Details", - "anchor": "networks-details" - }, - { - "depth": 2, - "title": "Test Tokens", - "anchor": "test-tokens" - }, - { - "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "In This Section", + "anchor": "in-this-section" } ], "stats": { - "chars": 3459, - "words": 476, - "headings": 3, - "estimated_token_count_total": 558 + "chars": 788, + "words": 105, + "headings": 1, + "estimated_token_count_total": 12 }, - "hash": "sha256:a2490223926957381913ae0ed22e2df3611a6713ec9d77a3015d1cd6a578b3f6", + "hash": "sha256:235f33cdb64494815dbb3eb58ea98c69935098684e1b34b6d15356bc54b082ea", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-cookbook-dapps-zero-to-hero", - "title": "Zero to Hero Smart Contract DApp", - "slug": "smart-contracts-cookbook-dapps-zero-to-hero", + "id": "polkadot-protocol-parachain-basics", + "title": "Parachain Basics", + "slug": "polkadot-protocol-parachain-basics", "categories": [ - "dApp", - "Tooling" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-dapps-zero-to-hero.md", - "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/dapps/zero-to-hero/", - "preview": "Decentralized applications (dApps) are a key component of the Web3 ecosystem, enabling developers to build applications that communicate directly with blockchain networks. Polkadot Hub, a blockchain with smart contract support, serves as a robust platform for deploying and interacting with dApps.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/polkadot-protocol-parachain-basics.md", + "html_url": "https://docs.polkadot.com/polkadot-protocol/parachain-basics/", + "preview": "This section equips developers with the essential knowledge to create, deploy, and enhance applications and blockchains within the Polkadot ecosystem. Gain a comprehensive understanding of Polkadot’s foundational components, including accounts, balances, and transactions, as well as advanced topics like data encoding and cryptographic methods. Mastering these concepts is vital for building robust and secure applications on Polkadot.", "outline": [ { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" - }, + "title": "In This Section", + "anchor": "in-this-section" + } + ], + "stats": { + "chars": 998, + "words": 130, + "headings": 1, + "estimated_token_count_total": 12 + }, + "hash": "sha256:1514316acba1e9bba82ae1c82b09481e9d03d286e6f5d93b66e5a85fd4be7bca", + "token_estimator": "heuristic-v1" + }, + { + "id": "polkadot-protocol-smart-contract-basics-evm-vs-polkavm", + "title": "EVM vs PolkaVM", + "slug": "polkadot-protocol-smart-contract-basics-evm-vs-polkavm", + "categories": [ + "Basics", + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/polkadot-protocol-smart-contract-basics-evm-vs-polkavm.md", + "html_url": "https://docs.polkadot.com/polkadot-protocol/smart-contract-basics/evm-vs-polkavm/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "outline": [ { "depth": 2, - "title": "Project Overview", - "anchor": "project-overview" + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Create and Deploy the Storage Contract", - "anchor": "create-and-deploy-the-storage-contract" - }, - { - "depth": 3, - "title": "Set Up Hardhat Project", - "anchor": "set-up-hardhat-project" - }, - { - "depth": 3, - "title": "Create the Storage Contract", - "anchor": "create-the-storage-contract" + "title": "Core Virtual Machine Architecture", + "anchor": "core-virtual-machine-architecture" }, { "depth": 3, - "title": "Configure Hardhat for Polkadot Hub", - "anchor": "configure-hardhat-for-polkadot-hub" + "title": "High-Level Architecture Comparison", + "anchor": "high-level-architecture-comparison" }, { - "depth": 3, - "title": "Compile the Contract", - "anchor": "compile-the-contract" + "depth": 2, + "title": "Gas Model", + "anchor": "gas-model" }, { "depth": 3, - "title": "Deploy the Contract", - "anchor": "deploy-the-contract" + "title": "Dynamic Gas Value Scaling", + "anchor": "dynamic-gas-value-scaling" }, { "depth": 3, - "title": "Export the Contract ABI", - "anchor": "export-the-contract-abi" - }, - { - "depth": 2, - "title": "Set Up the dApp Project", - "anchor": "set-up-the-dapp-project" + "title": "Multi-Dimensional Resource Metering", + "anchor": "multi-dimensional-resource-metering" }, { "depth": 2, - "title": "Install Dependencies", - "anchor": "install-dependencies" + "title": "Memory Management", + "anchor": "memory-management" }, { - "depth": 2, - "title": "Connect to Polkadot Hub", - "anchor": "connect-to-polkadot-hub" + "depth": 3, + "title": "Current Memory Limits", + "anchor": "current-memory-limits" }, { "depth": 2, - "title": "Set Up the Smart Contract Interface", - "anchor": "set-up-the-smart-contract-interface" + "title": "Account Management - Existential Deposit", + "anchor": "account-management-existential-deposit" }, { - "depth": 2, - "title": "Create the Wallet Connection Component", - "anchor": "create-the-wallet-connection-component" + "depth": 3, + "title": "Account Management Comparison", + "anchor": "account-management-comparison" }, { "depth": 2, - "title": "Create the Read Contract Component", - "anchor": "create-the-read-contract-component" + "title": "Contract Deployment", + "anchor": "contract-deployment" }, { "depth": 2, - "title": "Create the Write Contract Component", - "anchor": "create-the-write-contract-component" + "title": "Solidity and YUL IR Translation Incompatibilities", + "anchor": "solidity-and-yul-ir-translation-incompatibilities" }, { - "depth": 2, - "title": "How It Works", - "anchor": "how-it-works" + "depth": 3, + "title": "Contract Code Structure", + "anchor": "contract-code-structure" }, { "depth": 3, - "title": "Wallet Connection", - "anchor": "wallet-connection" + "title": "Solidity-Specific Differences", + "anchor": "solidity-specific-differences" }, { "depth": 3, - "title": "Data Reads", - "anchor": "data-reads" + "title": "YUL Function Translation Differences", + "anchor": "yul-function-translation-differences" }, { "depth": 3, - "title": "Data Writes", - "anchor": "data-writes" + "title": "Unsupported Operations", + "anchor": "unsupported-operations" }, { - "depth": 2, - "title": "Conclusion", - "anchor": "conclusion" + "depth": 3, + "title": "Compilation Pipeline Considerations", + "anchor": "compilation-pipeline-considerations" }, { - "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "depth": 3, + "title": "Memory Pointer Limitations", + "anchor": "memory-pointer-limitations" } ], "stats": { - "chars": 31207, - "words": 3688, - "headings": 22, - "estimated_token_count_total": 6967 + "chars": 27673, + "words": 3392, + "headings": 18, + "estimated_token_count_total": 5305 }, - "hash": "sha256:b200f93a9179f0b2588ba722dd4c118536136faf3c39eabccf4abf5c346f78a8", + "hash": "sha256:fe651be49fe0a9ae899b2cbf9c663325f407718dc63f1d2c6a2dc4931be751fa", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-cookbook-eth-dapps-uniswap-v2", - "title": "Deploying Uniswap V2 on Polkadot", - "slug": "smart-contracts-cookbook-eth-dapps-uniswap-v2", + "id": "polkadot-protocol-smart-contract-basics-networks", + "title": "Networks for Polkadot Hub Smart Contracts", + "slug": "polkadot-protocol-smart-contract-basics-networks", "categories": [ - "dApps", - "Tooling" + "Basics", + "Polkadot Protocol" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-eth-dapps-uniswap-v2.md", - "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/eth-dapps/uniswap-v2/", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/polkadot-protocol-smart-contract-basics-networks.md", + "html_url": "https://docs.polkadot.com/polkadot-protocol/smart-contract-basics/networks/", "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", "outline": [ { @@ -6604,54 +6872,65 @@ }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "Network Overview", + "anchor": "network-overview" }, { "depth": 2, - "title": "Set Up the Project", - "anchor": "set-up-the-project" + "title": "Local Development", + "anchor": "local-development" }, { "depth": 2, - "title": "Understanding Uniswap V2 Architecture", - "anchor": "understanding-uniswap-v2-architecture" + "title": "Test Networks", + "anchor": "test-networks" }, { - "depth": 2, - "title": "Test the Contracts", - "anchor": "test-the-contracts" + "depth": 3, + "title": "Passet Hub", + "anchor": "passet-hub" }, { - "depth": 2, - "title": "Deploy the Contracts", - "anchor": "deploy-the-contracts" + "depth": 3, + "title": "Westend Hub", + "anchor": "westend-hub" }, { "depth": 2, - "title": "Conclusion", - "anchor": "conclusion" + "title": "Production Networks", + "anchor": "production-networks" + }, + { + "depth": 3, + "title": "Polkadot Hub", + "anchor": "polkadot-hub" + }, + { + "depth": 3, + "title": "Kusama Hub", + "anchor": "kusama-hub" } ], "stats": { - "chars": 11280, - "words": 1560, - "headings": 7, - "estimated_token_count_total": 2671 + "chars": 5108, + "words": 696, + "headings": 9, + "estimated_token_count_total": 891 }, - "hash": "sha256:2a42198668c759f63aa602115bf2d290ec7d03bbc3a3df20e30e85027e1b1cc3", + "hash": "sha256:b5acdc9acf0e44836b8a4518155eba7d16cc3b103c557a00970ffb1c44c3e9f6", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-cookbook-smart-contracts-.deploy-basic-pvm", - "title": "Deploy a Basic Contract to Polkadot Hub", - "slug": "smart-contracts-cookbook-smart-contracts-.deploy-basic-pvm", + "id": "polkadot-protocol-smart-contract-basics-overview", + "title": "Smart Contracts Basics Overview", + "slug": "polkadot-protocol-smart-contract-basics-overview", "categories": [ - "Smart Contracts" + "Basics", + "Polkadot Protocol" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-.deploy-basic-pvm.md", - "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/.deploy-basic-pvm/", - "preview": "Deploying smart contracts to [Polkadot Hub](/smart-contracts/overview/#smart-contract-development){target=\\_blank} can be accomplished through various tools and environments, each suited to different development workflows. This guide demonstrates how to deploy a basic PolkaVM (PVM) smart contract using four popular approaches: JavaScript with [Ethers.js](https://docs.ethers.org/v6/){target=\\_blank}, [Remix IDE](https://remix.live/){target=\\_blank}, [Hardhat](https://hardhat.org/){target=\\_blank}", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/polkadot-protocol-smart-contract-basics-overview.md", + "html_url": "https://docs.polkadot.com/polkadot-protocol/smart-contract-basics/overview/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", "outline": [ { "depth": 2, @@ -6660,494 +6939,442 @@ }, { "depth": 2, - "title": "JavaScript with Ethers.js", - "anchor": "javascript-with-ethersjs" + "title": "Smart Contracts Versus Parachains", + "anchor": "smart-contracts-versus-parachains" + }, + { + "depth": 2, + "title": "Building a Smart Contract", + "anchor": "building-a-smart-contract" }, { "depth": 3, - "title": "Setup", - "anchor": "setup" + "title": "PolkaVM Contracts", + "anchor": "polkavm-contracts" }, { "depth": 3, - "title": "Create and Compile Your Contract", - "anchor": "create-and-compile-your-contract" + "title": "EVM Contracts", + "anchor": "evm-contracts" }, { "depth": 3, - "title": "Deploy the Contract", - "anchor": "deploy-the-contract" + "title": "Wasm Contracts", + "anchor": "wasm-contracts" + } + ], + "stats": { + "chars": 10854, + "words": 1559, + "headings": 6, + "estimated_token_count_total": 2550 + }, + "hash": "sha256:5d293525ce81d27e32c26938a029a6a82b137221a0630d084f528853ffaf798e", + "token_estimator": "heuristic-v1" + }, + { + "id": "polkadot-protocol-smart-contract-basics", + "title": "Smart Contract Basics", + "slug": "polkadot-protocol-smart-contract-basics", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/polkadot-protocol-smart-contract-basics.md", + "html_url": "https://docs.polkadot.com/polkadot-protocol/smart-contract-basics/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. Gain a deep understanding of smart contracts on Polkadot, from execution environments to transaction mechanics.", + "outline": [ + { + "depth": 2, + "title": "Key Topics", + "anchor": "key-topics" }, { "depth": 2, - "title": "Remix IDE", - "anchor": "remix-ide" + "title": "In This Section", + "anchor": "in-this-section" + } + ], + "stats": { + "chars": 1110, + "words": 136, + "headings": 2, + "estimated_token_count_total": 148 + }, + "hash": "sha256:e8dac01e89b7aac4b887e962e91084c253f5ea25c1abc3a56355390d0c3201c8", + "token_estimator": "heuristic-v1" + }, + { + "id": "polkadot-protocol", + "title": "Learn About the Polkadot Protocol", + "slug": "polkadot-protocol", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/polkadot-protocol.md", + "html_url": "https://docs.polkadot.com/polkadot-protocol/", + "preview": "The Polkadot protocol is designed to enable scalable, secure, and interoperable networks. It introduces a unique multichain architecture that allows independent blockchains, known as parachains, to operate seamlessly while benefiting from the shared security of the relay chain. Polkadot’s decentralized governance ensures that network upgrades and decisions are community-driven, while its cross-chain messaging and interoperability features make it a hub for multichain applications.", + "outline": [ + { + "depth": 2, + "title": "In This Section", + "anchor": "in-this-section" + } + ], + "stats": { + "chars": 1170, + "words": 150, + "headings": 1, + "estimated_token_count_total": 12 + }, + "hash": "sha256:49be4b4b5289572086eaaaf9ccff3bee7879b534188331c9a8052b3fe5aa4933", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-glossary", + "title": "Glossary", + "slug": "reference-glossary", + "categories": [ + "Reference" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-glossary.md", + "html_url": "https://docs.polkadot.com/reference/glossary/", + "preview": "Key definitions, concepts, and terminology specific to the Polkadot ecosystem are included here.", + "outline": [ + { + "depth": 2, + "title": "Authority", + "anchor": "authority" }, { - "depth": 3, - "title": "Access Remix", - "anchor": "access-remix" + "depth": 2, + "title": "Authority Round (Aura)", + "anchor": "authority-round-aura" }, { - "depth": 3, - "title": "Compile", - "anchor": "compile" + "depth": 2, + "title": "Blind Assignment of Blockchain Extension (BABE)", + "anchor": "blind-assignment-of-blockchain-extension-babe" }, { - "depth": 3, - "title": "Deploy", - "anchor": "deploy" + "depth": 2, + "title": "Block Author", + "anchor": "block-author" }, { "depth": 2, - "title": "Hardhat", - "anchor": "hardhat" + "title": "Byzantine Fault Tolerance (BFT)", + "anchor": "byzantine-fault-tolerance-bft" }, { "depth": 3, - "title": "Setup", - "anchor": "setup-2" + "title": "Byzantine Failure", + "anchor": "byzantine-failure" }, { "depth": 3, - "title": "Configure Hardhat", - "anchor": "configure-hardhat" + "title": "Practical Byzantine Fault Tolerance (pBFT)", + "anchor": "practical-byzantine-fault-tolerance-pbft" }, { "depth": 3, - "title": "Create Your Contract", - "anchor": "create-your-contract" + "title": "Preimage", + "anchor": "preimage" }, { - "depth": 3, - "title": "Compile", - "anchor": "compile-2" + "depth": 2, + "title": "Call", + "anchor": "call" }, { - "depth": 3, - "title": "Set Up Deployment", - "anchor": "set-up-deployment" + "depth": 2, + "title": "Chain Specification", + "anchor": "chain-specification" }, { - "depth": 3, - "title": "Deploy", - "anchor": "deploy-2" + "depth": 2, + "title": "Collator", + "anchor": "collator" }, { "depth": 2, - "title": "Foundry", - "anchor": "foundry" + "title": "Collective", + "anchor": "collective" }, { - "depth": 3, - "title": "Setup", - "anchor": "setup-3" + "depth": 2, + "title": "Consensus", + "anchor": "consensus" }, { - "depth": 3, - "title": "Configure Foundry", - "anchor": "configure-foundry" + "depth": 2, + "title": "Consensus Algorithm", + "anchor": "consensus-algorithm" }, { - "depth": 3, - "title": "Create Your Contract", - "anchor": "create-your-contract-2" + "depth": 2, + "title": "Consensus Engine", + "anchor": "consensus-engine" }, { - "depth": 3, - "title": "Compile", - "anchor": "compile-3" + "depth": 2, + "title": "Coretime", + "anchor": "coretime" }, { - "depth": 3, - "title": "Deploy", - "anchor": "deploy-3" + "depth": 2, + "title": "Development Phrase", + "anchor": "development-phrase" }, { "depth": 2, - "title": "Conclusion", - "anchor": "conclusion" + "title": "Digest", + "anchor": "digest" }, { - "depth": 3, - "title": "Next Steps", - "anchor": "next-steps" - } - ], - "stats": { - "chars": 13872, - "words": 1640, - "headings": 24, - "estimated_token_count_total": 3228 - }, - "hash": "sha256:8f29b0f0b56f8c136206211a858cdc5bc27bcd9119eab179a6cd306182d910cb", - "token_estimator": "heuristic-v1" - }, - { - "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-.foundry", - "title": "Deploy a Basic Contract with Foundry", - "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-.foundry", - "categories": [ - "Smart Contracts" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-.foundry.md", - "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic/.foundry/", - "preview": "This guide demonstrates how to deploy a basic Solidity smart contract to Polkadot Hub using [Foundry](https://getfoundry.sh/){target=\\_blank}, which offers a fast, modular toolkit written in Rust. It's perfect for developers who prefer command-line interfaces and need high-performance compilation and deployment.", - "outline": [ + "depth": 2, + "title": "Dispatchable", + "anchor": "dispatchable" + }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "Events", + "anchor": "events" }, { "depth": 2, - "title": "Set Up Your Project", - "anchor": "set-up-your-project" + "title": "Executor", + "anchor": "executor" }, { "depth": 2, - "title": "Configure Foundry", - "anchor": "configure-foundry" + "title": "Existential Deposit", + "anchor": "existential-deposit" }, { "depth": 2, - "title": "Create Your Contract", - "anchor": "create-your-contract" + "title": "Extrinsic", + "anchor": "extrinsic" }, { "depth": 2, - "title": "Compile", - "anchor": "compile" + "title": "Fork Choice Rule/Strategy", + "anchor": "fork-choice-rulestrategy" }, { "depth": 2, - "title": "Deploy", - "anchor": "deploy" + "title": "FRAME (Framework for Runtime Aggregation of Modularized Entities)", + "anchor": "frame-framework-for-runtime-aggregation-of-modularized-entities" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" - } - ], - "stats": { - "chars": 2731, - "words": 355, - "headings": 7, - "estimated_token_count_total": 598 - }, - "hash": "sha256:63defd84f302f0778c90129abbe69ecd2a5d9d83c622f2b7e5c2ffc9bcb3312f", - "token_estimator": "heuristic-v1" - }, - { - "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-hardhat", - "title": "Deploy a Basic Contract with Hardhat", - "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-hardhat", - "categories": [ - "Smart Contracts" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-hardhat.md", - "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic/hardhat/", - "preview": "This guide demonstrates how to deploy a basic Solidity smart contract to Polkadot Hub using [Hardhat](https://hardhat.org/){target=\\_blank}, which provides a comprehensive development environment with built-in testing, debugging, and deployment capabilities. It's ideal for professional development workflows and team projects.", - "outline": [ + "title": "Full Node", + "anchor": "full-node" + }, { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "Genesis Configuration", + "anchor": "genesis-configuration" }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "GRANDPA", + "anchor": "grandpa" }, { "depth": 2, - "title": "Set Up Your Project", - "anchor": "set-up-your-project" + "title": "Header", + "anchor": "header" }, { "depth": 2, - "title": "Configure Hardhat", - "anchor": "configure-hardhat" + "title": "Hybrid Consensus", + "anchor": "hybrid-consensus" }, { "depth": 2, - "title": "Create Your Contract", - "anchor": "create-your-contract" + "title": "Inherent Transactions", + "anchor": "inherent-transactions" }, { "depth": 2, - "title": "Compile", - "anchor": "compile" + "title": "JSON-RPC", + "anchor": "json-rpc" }, { "depth": 2, - "title": "Set Up Deployment", - "anchor": "set-up-deployment" + "title": "Keystore", + "anchor": "keystore" }, { "depth": 2, - "title": "Deploy the Contract", - "anchor": "deploy-the-contract" + "title": "Kusama", + "anchor": "kusama" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" - } - ], - "stats": { - "chars": 4051, - "words": 475, - "headings": 9, - "estimated_token_count_total": 981 - }, - "hash": "sha256:98f5c5c1a26db913e1c4c435062d214ca8c4b5f2dbed5b64d2e54c3435f06452", - "token_estimator": "heuristic-v1" - }, - { - "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-remix", - "title": "Deploy a Basic Contract with Remix IDE", - "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-remix", - "categories": [ - "Smart Contracts" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-remix.md", - "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic/remix/", - "preview": "This guide demonstrates how to deploy a basic Solidity smart contract to Polkadot Hub using [Remix IDE](https://remix.ethereum.org/){target=\\_blank}, which offers a visual, browser-based environment perfect for rapid prototyping and learning. It requires no local installation and provides an intuitive interface for contract development.", - "outline": [ + "title": "libp2p", + "anchor": "libp2p" + }, { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "Light Client", + "anchor": "light-client" }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "Metadata", + "anchor": "metadata" }, { "depth": 2, - "title": "Access Remix", - "anchor": "access-remix" + "title": "Nominated Proof of Stake (NPoS)", + "anchor": "nominated-proof-of-stake-npos" }, { "depth": 2, - "title": "Compile", - "anchor": "compile" + "title": "Oracle", + "anchor": "oracle" }, { "depth": 2, - "title": "Deploy", - "anchor": "deploy" + "title": "Origin", + "anchor": "origin" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" - } - ], - "stats": { - "chars": 2978, - "words": 430, - "headings": 6, - "estimated_token_count_total": 738 - }, - "hash": "sha256:0c00544ba0be9c0a6fa0c54bdb38045d64e95af714785b86e57f885a03b4b17a", - "token_estimator": "heuristic-v1" - }, - { - "id": "smart-contracts-cookbook-smart-contracts-deploy-erc20-erc20-hardhat", - "title": "Deploy an ERC-20 to Polkadot Hub", - "slug": "smart-contracts-cookbook-smart-contracts-deploy-erc20-erc20-hardhat", - "categories": [ - "Basics", - "Smart Contracts" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-erc20-erc20-hardhat.md", - "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-erc20/erc20-hardhat/", - "preview": "[ERC-20](https://eips.ethereum.org/EIPS/eip-20){target=\\_blank} tokens are fungible tokens commonly used for creating cryptocurrencies, governance tokens, and staking mechanisms. Polkadot Hub enables easy token deployment with Ethereum-compatible smart contracts and tools via the EVM backend.", - "outline": [ + "title": "Pallet", + "anchor": "pallet" + }, { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "Parachain", + "anchor": "parachain" }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "Paseo", + "anchor": "paseo" }, { "depth": 2, - "title": "Set Up Your Project", - "anchor": "set-up-your-project" + "title": "Polkadot", + "anchor": "polkadot" }, { "depth": 2, - "title": "Configure Hardhat", - "anchor": "configure-hardhat" + "title": "Polkadot Cloud", + "anchor": "polkadot-cloud" }, { "depth": 2, - "title": "Compile your Contract", - "anchor": "compile-your-contract" + "title": "Polkadot Hub", + "anchor": "polkadot-hub" }, { "depth": 2, - "title": "Test your Contract", - "anchor": "test-your-contract" + "title": "PolkaVM", + "anchor": "polkavm" }, { "depth": 2, - "title": "Deploy your Contract", - "anchor": "deploy-your-contract" + "title": "Relay Chain", + "anchor": "relay-chain" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" - } - ], - "stats": { - "chars": 8131, - "words": 1205, - "headings": 8, - "estimated_token_count_total": 2156 - }, - "hash": "sha256:4036cb47abaf081ce480654bece336f83bd043f5225d5d8d20f152fb91aa2157", - "token_estimator": "heuristic-v1" - }, - { - "id": "smart-contracts-cookbook-smart-contracts-deploy-erc20-erc20-remix", - "title": "Deploy an ERC-20 to Polkadot Hub", - "slug": "smart-contracts-cookbook-smart-contracts-deploy-erc20-erc20-remix", - "categories": [ - "Basics", - "Smart Contracts" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-erc20-erc20-remix.md", - "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-erc20/erc20-remix/", - "preview": "[ERC-20](https://eips.ethereum.org/EIPS/eip-20){target=\\_blank} tokens are fungible tokens commonly used for creating cryptocurrencies, governance tokens, and staking mechanisms. Polkadot Hub enables easy token deployment with Ethereum-compatible smart contracts and tools via the EVM backend.", - "outline": [ + "title": "Rococo", + "anchor": "rococo" + }, { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "Runtime", + "anchor": "runtime" }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "Slot", + "anchor": "slot" }, { "depth": 2, - "title": "Create Your Contract", - "anchor": "create-your-contract" + "title": "Sovereign Account", + "anchor": "sovereign-account" }, { "depth": 2, - "title": "Compile", - "anchor": "compile" + "title": "SS58 Address Format", + "anchor": "ss58-address-format" }, { "depth": 2, - "title": "Deploy", - "anchor": "deploy" + "title": "State Transition Function (STF)", + "anchor": "state-transition-function-stf" }, { "depth": 2, - "title": "Interact with Your Contract", - "anchor": "interact-with-your-contract" + "title": "Storage Item", + "anchor": "storage-item" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" - } - ], - "stats": { - "chars": 9121, - "words": 1261, - "headings": 7, - "estimated_token_count_total": 2183 - }, - "hash": "sha256:992767525da7c1323f28bcaee5b6d1256ee2c0c70dbd16ae521245299858d996", - "token_estimator": "heuristic-v1" - }, - { - "id": "smart-contracts-cookbook-smart-contracts-deploy-nft-.foundry", - "title": "Deploy an NFT to Polkadot Hub with Foundry", - "slug": "smart-contracts-cookbook-smart-contracts-deploy-nft-.foundry", - "categories": [ - "Basics", - "Smart Contracts" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-nft-.foundry.md", - "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-nft/.foundry/", - "preview": "Non-Fungible Tokens (NFTs) represent unique digital assets commonly used for digital art, collectibles, gaming, and identity verification.", - "outline": [ + "title": "Substrate", + "anchor": "substrate" + }, { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "Transaction", + "anchor": "transaction" }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "Transaction Era", + "anchor": "transaction-era" }, { "depth": 2, - "title": "Set Up Your Project", - "anchor": "set-up-your-project" + "title": "Trie (Patricia Merkle Tree)", + "anchor": "trie-patricia-merkle-tree" }, { "depth": 2, - "title": "Configure Foundry", - "anchor": "configure-foundry" + "title": "Validator", + "anchor": "validator" }, { "depth": 2, - "title": "Create Your Contract", - "anchor": "create-your-contract" + "title": "WebAssembly (Wasm)", + "anchor": "webassembly-wasm" }, { "depth": 2, - "title": "Compile", - "anchor": "compile" + "title": "Weight", + "anchor": "weight" }, { "depth": 2, - "title": "Deploy", - "anchor": "deploy" - }, - { - "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "Westend", + "anchor": "westend" } ], "stats": { - "chars": 3489, - "words": 438, - "headings": 8, - "estimated_token_count_total": 847 + "chars": 24739, + "words": 3626, + "headings": 63, + "estimated_token_count_total": 5273 }, - "hash": "sha256:c4b410125946db479b9c262a5132a31bb7730a778501c3a95910ad9d38007cf4", + "hash": "sha256:40bd67811e7eabc79ca5d105eae388b19380d9f035022da17fc0d6bb173c817c", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-cookbook-smart-contracts-deploy-nft-hardhat", - "title": "Deploy an NFT to Polkadot Hub with Hardhat", - "slug": "smart-contracts-cookbook-smart-contracts-deploy-nft-hardhat", + "id": "reference-governance-origins-tracks", + "title": "Origins and Tracks", + "slug": "reference-governance-origins-tracks", "categories": [ - "Basics", - "Smart Contracts" + "Polkadot Protocol" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-nft-hardhat.md", - "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-nft/hardhat/", - "preview": "Non-Fungible Tokens (NFTs) represent unique digital assets commonly used for digital art, collectibles, gaming, and identity verification.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-governance-origins-tracks.md", + "html_url": "https://docs.polkadot.com/reference/governance/origins-tracks/", + "preview": "Polkadot's OpenGov system empowers decentralized decision-making and active community participation by tailoring the governance process to the impact of proposed changes. Through a system of origins and tracks, OpenGov ensures that every referendum receives the appropriate scrutiny, balancing security, inclusivity, and efficiency.", "outline": [ { "depth": 2, @@ -7156,65 +7383,40 @@ }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" - }, - { - "depth": 2, - "title": "Set Up Your Project", - "anchor": "set-up-your-project" - }, - { - "depth": 2, - "title": "Configure Hardhat", - "anchor": "configure-hardhat" - }, - { - "depth": 2, - "title": "Create Your Contract", - "anchor": "create-your-contract" - }, - { - "depth": 2, - "title": "Compile", - "anchor": "compile" - }, - { - "depth": 2, - "title": "Set Up Deployment", - "anchor": "set-up-deployment" + "title": "Origins", + "anchor": "origins" }, { "depth": 2, - "title": "Deploy", - "anchor": "deploy" + "title": "Tracks", + "anchor": "tracks" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "Additional Resources", + "anchor": "additional-resources" } ], "stats": { - "chars": 4837, - "words": 565, - "headings": 9, - "estimated_token_count_total": 1152 + "chars": 3333, + "words": 469, + "headings": 4, + "estimated_token_count_total": 631 }, - "hash": "sha256:1e44c9df24715affa822f0df9680413cd995909f2c086d3a70499ee69901985e", + "hash": "sha256:baba9dd41091b792d09005d55d3df0bf65b35f42b40ebe63caf425a0978a22b0", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-cookbook-smart-contracts-deploy-nft-remix", - "title": "Deploy an NFT to Polkadot Hub with Remix", - "slug": "smart-contracts-cookbook-smart-contracts-deploy-nft-remix", + "id": "reference-governance", + "title": "On-Chain Governance Overview", + "slug": "reference-governance", "categories": [ "Basics", - "Smart Contracts" + "Polkadot Protocol" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-nft-remix.md", - "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-nft/remix/", - "preview": "Non-Fungible Tokens (NFTs) represent unique digital assets commonly used for digital art, collectibles, gaming, and identity verification.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-governance.md", + "html_url": "https://docs.polkadot.com/reference/governance/", + "preview": "Polkadot’s governance system exemplifies decentralized decision-making, empowering its community of stakeholders to shape the network’s future through active participation. The latest evolution, OpenGov, builds on Polkadot’s foundation by providing a more inclusive and efficient governance model.", "outline": [ { "depth": 2, @@ -7223,269 +7425,5980 @@ }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "Governance Evolution", + "anchor": "governance-evolution" }, { "depth": 2, - "title": "Access Remix", - "anchor": "access-remix" + "title": "OpenGov Key Features", + "anchor": "opengov-key-features" }, { "depth": 2, - "title": "Create Your Contract", - "anchor": "create-your-contract" + "title": "Origins and Tracks", + "anchor": "origins-and-tracks" }, { "depth": 2, - "title": "Compile", - "anchor": "compile" + "title": "Referendums", + "anchor": "referendums" }, { - "depth": 2, - "title": "Deploy", - "anchor": "deploy" + "depth": 3, + "title": "Vote on Referendums", + "anchor": "vote-on-referendums" }, { - "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" - } - ], - "stats": { - "chars": 3754, - "words": 505, - "headings": 7, - "estimated_token_count_total": 928 - }, - "hash": "sha256:12a8debfbc05c5ac0e2c94daa40167adab837dc4e1b2731f5b48ae8bc9bc2c93", - "token_estimator": "heuristic-v1" - }, - { - "id": "smart-contracts-cookbook", - "title": "Smart Contracts Cookbook Index", - "slug": "smart-contracts-cookbook", - "categories": [ - "Basics", - "dApps", - "Smart Contracts" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook.md", - "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/", - "preview": "Welcome to the Polkadot smart contracts cookbook index.", - "outline": [ - { - "depth": 2, - "title": "Get Tokens from the Faucet", - "anchor": "get-tokens-from-the-faucet" + "depth": 3, + "title": "Delegate Voting Power", + "anchor": "delegate-voting-power" }, { - "depth": 2, - "title": "EVM/PVM Smart Contracts", - "anchor": "evmpvm-smart-contracts" + "depth": 3, + "title": "Cancel a Referendum", + "anchor": "cancel-a-referendum" }, { "depth": 2, - "title": "Port Ethereum DApps", - "anchor": "port-ethereum-dapps" + "title": "Additional Resources", + "anchor": "additional-resources" } ], "stats": { - "chars": 2815, - "words": 206, - "headings": 3, - "estimated_token_count_total": 1014 - }, - "hash": "sha256:cea0745bf1f1ac5680690a78494977b5e111c33638f5ceaa2c19ce0804cc74ad", - "token_estimator": "heuristic-v1" - }, - { - "id": "smart-contracts-dev-environments-hardhat-compile-and-test", - "title": "smart-contracts-dev-environments-hardhat-compile-and-test", - "slug": "smart-contracts-dev-environments-hardhat-compile-and-test", - "categories": [ - "Uncategorized" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-compile-and-test.md", - "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/hardhat/compile-and-test/", - "preview": "TODO", - "outline": [], - "stats": { - "chars": 5, - "words": 1, - "headings": 0, - "estimated_token_count_total": 0 - }, - "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", - "token_estimator": "heuristic-v1" - }, - { - "id": "smart-contracts-dev-environments-hardhat-deploy-a-contract", - "title": "smart-contracts-dev-environments-hardhat-deploy-a-contract", - "slug": "smart-contracts-dev-environments-hardhat-deploy-a-contract", - "categories": [ - "Uncategorized" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-deploy-a-contract.md", - "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/hardhat/deploy-a-contract/", - "preview": "TODO", - "outline": [], - "stats": { - "chars": 5, - "words": 1, - "headings": 0, - "estimated_token_count_total": 0 + "chars": 7493, + "words": 1019, + "headings": 9, + "estimated_token_count_total": 1611 }, - "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "hash": "sha256:62beec261e72529f70e07a641177d489d2c8872f9c9d618cbadf1ac0fd881986", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-dev-environments-hardhat-get-started", - "title": "Use Hardhat with Polkadot Hub", - "slug": "smart-contracts-dev-environments-hardhat-get-started", + "id": "reference-parachains-accounts", + "title": "Polkadot SDK Accounts", + "slug": "reference-parachains-accounts", "categories": [ - "Smart Contracts", - "Tooling" + "Basics", + "Polkadot Protocol" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-get-started.md", - "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/hardhat/get-started/", - "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**.
- :octicons-code-16:{ .lg .middle } __Test and Deploy with Hardhat__", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-accounts.md", + "html_url": "https://docs.polkadot.com/reference/parachains/accounts/", + "preview": "Accounts are essential for managing identity, transactions, and governance on the network in the Polkadot SDK. Understanding these components is critical for seamless development and operation on the network, whether you're building or interacting with Polkadot-based chains.", "outline": [ { "depth": 2, - "title": "Overview", - "anchor": "overview" + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "Account Data Structure", + "anchor": "account-data-structure" }, { - "depth": 2, - "title": "Set Up Hardhat", - "anchor": "set-up-hardhat" + "depth": 3, + "title": "Account", + "anchor": "account" }, { - "depth": 2, - "title": "Compile Your Contract", - "anchor": "compile-your-contract" + "depth": 3, + "title": "Account Info", + "anchor": "account-info" }, { - "depth": 2, - "title": "Set Up a Testing Environment", - "anchor": "set-up-a-testing-environment" + "depth": 3, + "title": "Account Reference Counters", + "anchor": "account-reference-counters" }, { "depth": 2, - "title": "Test Your Contract", - "anchor": "test-your-contract" + "title": "Account Balance Types", + "anchor": "account-balance-types" }, { - "depth": 2, - "title": "Deploy to a Local Node", - "anchor": "deploy-to-a-local-node" + "depth": 3, + "title": "Balance Types", + "anchor": "balance-types" }, { - "depth": 2, - "title": "Deploying to a Live Network", - "anchor": "deploying-to-a-live-network" + "depth": 3, + "title": "Locks", + "anchor": "locks" }, { - "depth": 2, - "title": "Interacting with Your Contract", - "anchor": "interacting-with-your-contract" + "depth": 3, + "title": "Balance Types on Polkadot.js", + "anchor": "balance-types-on-polkadotjs" }, { "depth": 2, - "title": "Upgrading the Plugin", - "anchor": "upgrading-the-plugin" + "title": "Address Formats", + "anchor": "address-formats" }, { - "depth": 2, + "depth": 3, + "title": "Basic Format", + "anchor": "basic-format" + }, + { + "depth": 3, + "title": "Address Type", + "anchor": "address-type" + }, + { + "depth": 3, + "title": "Address Length", + "anchor": "address-length" + }, + { + "depth": 3, + "title": "Checksum Types", + "anchor": "checksum-types" + }, + { + "depth": 3, + "title": "Validating Addresses", + "anchor": "validating-addresses" + } + ], + "stats": { + "chars": 29604, + "words": 4194, + "headings": 15, + "estimated_token_count_total": 6507 + }, + "hash": "sha256:0104a9132a69345a2faac37fca0e2853a2ded1efb009511a83a98d44509ab887", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-parachains-blocks-transactions-fees-blocks", + "title": "Blocks", + "slug": "reference-parachains-blocks-transactions-fees-blocks", + "categories": [ + "Basics", + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-blocks-transactions-fees-blocks.md", + "html_url": "https://docs.polkadot.com/reference/parachains/blocks-transactions-fees/blocks/", + "preview": "In the Polkadot SDK, blocks are fundamental to the functioning of the blockchain, serving as containers for [transactions](/reference/parachains/blocks-transactions-fees/transactions/){target=\\_blank} and changes to the chain's state. Blocks consist of headers and an array of transactions, ensuring the integrity and validity of operations on the network. This guide explores the essential components of a block, the process of block production, and how blocks are validated and imported across the", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "What is a Block?", + "anchor": "what-is-a-block" + }, + { + "depth": 2, + "title": "Block Production", + "anchor": "block-production" + }, + { + "depth": 3, + "title": "Initialize Block", + "anchor": "initialize-block" + }, + { + "depth": 3, + "title": "Finalize Block", + "anchor": "finalize-block" + }, + { + "depth": 2, + "title": "Block Authoring and Import", + "anchor": "block-authoring-and-import" + }, + { + "depth": 3, + "title": "Block Import Queue", + "anchor": "block-import-queue" + }, + { + "depth": 2, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 6252, + "words": 910, + "headings": 8, + "estimated_token_count_total": 1395 + }, + "hash": "sha256:424783c102bea5dae5b8749635858c6c59055563442a98f57521f0027dafa8d3", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-parachains-blocks-transactions-fees-fees", + "title": "Transactions Weights and Fees", + "slug": "reference-parachains-blocks-transactions-fees-fees", + "categories": [ + "Basics", + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-blocks-transactions-fees-fees.md", + "html_url": "https://docs.polkadot.com/reference/parachains/blocks-transactions-fees/fees/", + "preview": "When transactions are executed, or data is stored on-chain, the activity changes the chain's state and consumes blockchain resources. Because the resources available to a blockchain are limited, managing how operations on-chain consume them is important. In addition to being limited in practical terms, such as storage capacity, blockchain resources represent a potential attack vector for malicious users. For example, a malicious user might attempt to overload the network with messages to stop th", + "outline": [ + { + "depth": 2, + "title": "Introductions", + "anchor": "introductions" + }, + { + "depth": 2, + "title": "How Fees are Calculated", + "anchor": "how-fees-are-calculated" + }, + { + "depth": 2, + "title": "Using the Transaction Payment Pallet", + "anchor": "using-the-transaction-payment-pallet" + }, + { + "depth": 3, + "title": "Understanding the Inclusion Fee", + "anchor": "understanding-the-inclusion-fee" + }, + { + "depth": 3, + "title": "Accounts with an Insufficient Balance", + "anchor": "accounts-with-an-insufficient-balance" + }, + { + "depth": 3, + "title": "Fee Multipliers", + "anchor": "fee-multipliers" + }, + { + "depth": 2, + "title": "Transactions with Special Requirements", + "anchor": "transactions-with-special-requirements" + }, + { + "depth": 2, + "title": "Default Weight Annotations", + "anchor": "default-weight-annotations" + }, + { + "depth": 3, + "title": "Weights and Database Read/Write Operations", + "anchor": "weights-and-database-readwrite-operations" + }, + { + "depth": 3, + "title": "Dispatch Classes", + "anchor": "dispatch-classes" + }, + { + "depth": 3, + "title": "Dynamic Weights", + "anchor": "dynamic-weights" + }, + { + "depth": 2, + "title": "Post Dispatch Weight Correction", + "anchor": "post-dispatch-weight-correction" + }, + { + "depth": 2, + "title": "Custom Fees", + "anchor": "custom-fees" + }, + { + "depth": 3, + "title": "Custom Weights", + "anchor": "custom-weights" + }, + { + "depth": 2, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 20800, + "words": 2917, + "headings": 15, + "estimated_token_count_total": 4464 + }, + "hash": "sha256:7d0c3fa7982b3e1843adb8f27422456397580b3a3eba5047b381da8517742536", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-parachains-blocks-transactions-fees-transactions", + "title": "Transactions", + "slug": "reference-parachains-blocks-transactions-fees-transactions", + "categories": [ + "Basics", + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-blocks-transactions-fees-transactions.md", + "html_url": "https://docs.polkadot.com/reference/parachains/blocks-transactions-fees/transactions/", + "preview": "Transactions are essential components of blockchain networks, enabling state changes and the execution of key operations. In the Polkadot SDK, transactions, often called extrinsics, come in multiple forms, including signed, unsigned, and inherent transactions.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "What Is a Transaction?", + "anchor": "what-is-a-transaction" + }, + { + "depth": 3, + "title": "Signed Transactions", + "anchor": "signed-transactions" + }, + { + "depth": 3, + "title": "Unsigned Transactions", + "anchor": "unsigned-transactions" + }, + { + "depth": 3, + "title": "Inherent Transactions", + "anchor": "inherent-transactions" + }, + { + "depth": 2, + "title": "Transaction Formats", + "anchor": "transaction-formats" + }, + { + "depth": 3, + "title": "Types of Transaction Formats", + "anchor": "types-of-transaction-formats" + }, + { + "depth": 3, + "title": "Signed Transaction Data Structure", + "anchor": "signed-transaction-data-structure" + }, + { + "depth": 3, + "title": "Signed Extensions", + "anchor": "signed-extensions" + }, + { + "depth": 2, + "title": "Transaction Construction", + "anchor": "transaction-construction" + }, + { + "depth": 3, + "title": "Construct a Signed Transaction", + "anchor": "construct-a-signed-transaction" + }, + { + "depth": 3, + "title": "Transaction Encoding", + "anchor": "transaction-encoding" + }, + { + "depth": 3, + "title": "Customize Transaction Construction", + "anchor": "customize-transaction-construction" + }, + { + "depth": 2, + "title": "Lifecycle of a Transaction", + "anchor": "lifecycle-of-a-transaction" + }, + { + "depth": 3, + "title": "Define Transaction Properties", + "anchor": "define-transaction-properties" + }, + { + "depth": 3, + "title": "Process on a Block Authoring Node", + "anchor": "process-on-a-block-authoring-node" + }, + { + "depth": 3, + "title": "Validate and Queue", + "anchor": "validate-and-queue" + }, + { + "depth": 3, + "title": "Transaction Ordering and Priority", + "anchor": "transaction-ordering-and-priority" + }, + { + "depth": 3, + "title": "Transaction Execution", + "anchor": "transaction-execution" + }, + { + "depth": 2, + "title": "Transaction Mortality", + "anchor": "transaction-mortality" + }, + { + "depth": 2, + "title": "Unique Identifiers for Extrinsics", + "anchor": "unique-identifiers-for-extrinsics" + }, + { + "depth": 2, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 23610, + "words": 3333, + "headings": 22, + "estimated_token_count_total": 4708 + }, + "hash": "sha256:66726634d3a51cd9c471621054a6e5f09c8061dca6144b64c8bcf45626359617", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-parachains-chain-data", + "title": "Chain Data", + "slug": "reference-parachains-chain-data", + "categories": [ + "Basics", + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-chain-data.md", + "html_url": "https://docs.polkadot.com/reference/parachains/chain-data/", + "preview": "Understanding and leveraging on-chain data is a fundamental aspect of blockchain development. Whether you're building frontend applications or backend systems, accessing and decoding runtime metadata is vital to interacting with the blockchain. This guide introduces you to the tools and processes for generating and retrieving metadata, explains its role in application development, and outlines the additional APIs available for interacting with a Polkadot node. By mastering these components, you", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Application Development", + "anchor": "application-development" + }, + { + "depth": 2, + "title": "Understand Metadata", + "anchor": "understand-metadata" + }, + { + "depth": 2, + "title": "Expose Runtime Information as Metadata", + "anchor": "expose-runtime-information-as-metadata" + }, + { + "depth": 2, + "title": "Generate Metadata", + "anchor": "generate-metadata" + }, + { + "depth": 2, + "title": "Retrieve Runtime Metadata", + "anchor": "retrieve-runtime-metadata" + }, + { + "depth": 3, + "title": "Use Polkadot.js", + "anchor": "use-polkadotjs" + }, + { + "depth": 3, + "title": "Use Curl", + "anchor": "use-curl" + }, + { + "depth": 3, + "title": "Use Subxt", + "anchor": "use-subxt" + }, + { + "depth": 2, + "title": "Client Applications and Metadata", + "anchor": "client-applications-and-metadata" + }, + { + "depth": 2, + "title": "Metadata Format", + "anchor": "metadata-format" + }, + { + "depth": 3, + "title": "Pallets", + "anchor": "pallets" + }, + { + "depth": 3, + "title": "Extrinsic", + "anchor": "extrinsic" + }, + { + "depth": 2, + "title": "Included RPC APIs", + "anchor": "included-rpc-apis" + }, + { + "depth": 2, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 18650, + "words": 2216, + "headings": 15, + "estimated_token_count_total": 3774 + }, + "hash": "sha256:49238d1e9e2c33e0fcd3a84b5e30f0d3840d7d23a783b538875e0a23f38efc1d", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-parachains-consensus-async-backing", + "title": "reference-parachains-consensus-async-backing", + "slug": "reference-parachains-consensus-async-backing", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-consensus-async-backing.md", + "html_url": "https://docs.polkadot.com/reference/parachains/consensus/async-backing/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-parachains-consensus-elastic-scaling", + "title": "Elastic Scaling", + "slug": "reference-parachains-consensus-elastic-scaling", + "categories": [ + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-consensus-elastic-scaling.md", + "html_url": "https://docs.polkadot.com/reference/parachains/consensus/elastic-scaling/", + "preview": "Polkadot's architecture delivers scalability and security through its shared security model, where the relay chain coordinates and validates multiple parallel chains.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "How Elastic Scaling Works", + "anchor": "how-elastic-scaling-works" + }, + { + "depth": 2, + "title": "Benefits of Elastic Scaling", + "anchor": "benefits-of-elastic-scaling" + }, + { + "depth": 2, + "title": "Use Cases", + "anchor": "use-cases" + }, + { + "depth": 3, + "title": "Handling Sudden Traffic Spikes", + "anchor": "handling-sudden-traffic-spikes" + }, + { + "depth": 3, + "title": "Supporting Early-Stage Growth", + "anchor": "supporting-early-stage-growth" + }, + { + "depth": 3, + "title": "Scaling Massive IoT Networks", + "anchor": "scaling-massive-iot-networks" + }, + { + "depth": 3, + "title": "Powering Real-Time, Low-Latency Systems", + "anchor": "powering-real-time-low-latency-systems" + } + ], + "stats": { + "chars": 7871, + "words": 1047, + "headings": 8, + "estimated_token_count_total": 1440 + }, + "hash": "sha256:2d228c52844df8952520fafdd3e6f0e26bfd2f32b5ee60c6241cf7d38603643c", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-parachains-consensus", + "title": "reference-parachains-consensus", + "slug": "reference-parachains-consensus", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-consensus.md", + "html_url": "https://docs.polkadot.com/reference/parachains/consensus/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-parachains-cryptography", + "title": "Cryptography", + "slug": "reference-parachains-cryptography", + "categories": [ + "Basics", + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-cryptography.md", + "html_url": "https://docs.polkadot.com/reference/parachains/cryptography/", + "preview": "Cryptography forms the backbone of blockchain technology, providing the mathematical verifiability crucial for consensus systems, data integrity, and user security. While a deep understanding of the underlying mathematical processes isn't necessary for most blockchain developers, grasping the fundamental applications of cryptography is essential. This page comprehensively overviews cryptographic implementations used across Polkadot SDK-based chains and the broader blockchain ecosystem.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Hash Functions", + "anchor": "hash-functions" + }, + { + "depth": 3, + "title": "Key Properties of Hash Functions", + "anchor": "key-properties-of-hash-functions" + }, + { + "depth": 3, + "title": "Blake2", + "anchor": "blake2" + }, + { + "depth": 2, + "title": "Types of Cryptography", + "anchor": "types-of-cryptography" + }, + { + "depth": 3, + "title": "Symmetric Cryptography", + "anchor": "symmetric-cryptography" + }, + { + "depth": 3, + "title": "Asymmetric Cryptography", + "anchor": "asymmetric-cryptography" + }, + { + "depth": 3, + "title": "Trade-offs and Compromises", + "anchor": "trade-offs-and-compromises" + }, + { + "depth": 2, + "title": "Digital Signatures", + "anchor": "digital-signatures" + }, + { + "depth": 3, + "title": "Example of Creating a Digital Signature", + "anchor": "example-of-creating-a-digital-signature" + }, + { + "depth": 2, + "title": "Elliptic Curve", + "anchor": "elliptic-curve" + }, + { + "depth": 3, + "title": "Various Implementations", + "anchor": "various-implementations" + } + ], + "stats": { + "chars": 8860, + "words": 1293, + "headings": 12, + "estimated_token_count_total": 1797 + }, + "hash": "sha256:259dcef86aadc513675258b665cc3940db65af6eb32a5db85da6ac339966fa60", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-parachains-data-encoding", + "title": "Data Encoding", + "slug": "reference-parachains-data-encoding", + "categories": [ + "Basics", + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-data-encoding.md", + "html_url": "https://docs.polkadot.com/reference/parachains/data-encoding/", + "preview": "The Polkadot SDK uses a lightweight and efficient encoding/decoding mechanism to optimize data transmission across the network. This mechanism, known as the _SCALE_ codec, is used for serializing and deserializing data.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "SCALE Codec", + "anchor": "scale-codec" + }, + { + "depth": 3, + "title": "Encode", + "anchor": "encode" + }, + { + "depth": 3, + "title": "Decode", + "anchor": "decode" + }, + { + "depth": 3, + "title": "CompactAs", + "anchor": "compactas" + }, + { + "depth": 3, + "title": "HasCompact", + "anchor": "hascompact" + }, + { + "depth": 3, + "title": "EncodeLike", + "anchor": "encodelike" + }, + { + "depth": 3, + "title": "Data Types", + "anchor": "data-types" + }, + { + "depth": 2, + "title": "Encode and Decode Rust Trait Implementations", + "anchor": "encode-and-decode-rust-trait-implementations" + }, + { + "depth": 2, + "title": "SCALE Codec Libraries", + "anchor": "scale-codec-libraries" + } + ], + "stats": { + "chars": 13629, + "words": 1314, + "headings": 10, + "estimated_token_count_total": 3213 + }, + "hash": "sha256:e448294b6e52291ac0add5fa6533572814e6cd27af42bdaccc2000b86f52d775", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-parachains-interoperability", + "title": "Interoperability", + "slug": "reference-parachains-interoperability", + "categories": [ + "Basics", + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-interoperability.md", + "html_url": "https://docs.polkadot.com/reference/parachains/interoperability/", + "preview": "Interoperability lies at the heart of the Polkadot ecosystem, enabling communication and collaboration across a diverse range of blockchains. By bridging the gaps between parachains, relay chains, and even external networks, Polkadot unlocks the potential for truly decentralized applications, efficient resource sharing, and scalable solutions.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Why Interoperability Matters", + "anchor": "why-interoperability-matters" + }, + { + "depth": 2, + "title": "Key Mechanisms for Interoperability", + "anchor": "key-mechanisms-for-interoperability" + }, + { + "depth": 3, + "title": "Cross-Consensus Messaging (XCM): The Backbone of Communication", + "anchor": "cross-consensus-messaging-xcm-the-backbone-of-communication" + }, + { + "depth": 3, + "title": "Bridges: Connecting External Networks", + "anchor": "bridges-connecting-external-networks" + }, + { + "depth": 2, + "title": "The Polkadot Advantage", + "anchor": "the-polkadot-advantage" + }, + { + "depth": 2, + "title": "Looking Ahead", + "anchor": "looking-ahead" + } + ], + "stats": { + "chars": 4635, + "words": 584, + "headings": 7, + "estimated_token_count_total": 772 + }, + "hash": "sha256:11bb4f113bdda5852a3115e64d5ba47f8eccd4e3619a05ad960ab3a541f31346", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-parachains-networks", + "title": "Networks", + "slug": "reference-parachains-networks", + "categories": [ + "Basics", + "Polkadot Protocol", + "Networks" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-networks.md", + "html_url": "https://docs.polkadot.com/reference/parachains/networks/", + "preview": "The Polkadot ecosystem is built on a robust set of networks designed to enable secure and scalable development. Whether you are testing new features or deploying to live production, Polkadot offers several layers of networks tailored for each stage of the development process. From local environments to experimental networks like Kusama and community-run TestNets such as Paseo, developers can thoroughly test, iterate, and validate their applications. This guide will introduce you to Polkadot's va", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Network Overview", + "anchor": "network-overview" + }, + { + "depth": 2, + "title": "Polkadot Development Networks", + "anchor": "polkadot-development-networks" + }, + { + "depth": 2, + "title": "Kusama Network", + "anchor": "kusama-network" + }, + { + "depth": 2, + "title": "Test Networks", + "anchor": "test-networks" + }, + { + "depth": 3, + "title": "Westend", + "anchor": "westend" + }, + { + "depth": 3, + "title": "Paseo", + "anchor": "paseo" + }, + { + "depth": 2, + "title": "Local Test Networks", + "anchor": "local-test-networks" + }, + { + "depth": 3, + "title": "Zombienet", + "anchor": "zombienet" + }, + { + "depth": 3, + "title": "Chopsticks", + "anchor": "chopsticks" + } + ], + "stats": { + "chars": 7834, + "words": 1111, + "headings": 10, + "estimated_token_count_total": 1473 + }, + "hash": "sha256:e49e063a2cc0fb5a48c6cdc3de266bb6e025a006940fea8e90cc4d5f9884900f", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-parachains-node-and-runtime", + "title": "Node and Runtime", + "slug": "reference-parachains-node-and-runtime", + "categories": [ + "Basics", + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-node-and-runtime.md", + "html_url": "https://docs.polkadot.com/reference/parachains/node-and-runtime/", + "preview": "Every blockchain platform relies on a decentralized network of computers, called nodes, that communicate with each other about transactions and blocks. In this context, a node refers to the software running on the connected devices rather than the physical or virtual machines in the network.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Architectural Principles", + "anchor": "architectural-principles" + }, + { + "depth": 3, + "title": "Advantages of this Architecture", + "anchor": "advantages-of-this-architecture" + }, + { + "depth": 2, + "title": "Node (Client)", + "anchor": "node-client" + }, + { + "depth": 2, + "title": "Runtime", + "anchor": "runtime" + }, + { + "depth": 3, + "title": "Characteristics", + "anchor": "characteristics" + }, + { + "depth": 3, + "title": "Key Functions", + "anchor": "key-functions" + }, + { + "depth": 2, + "title": "Communication Between Node and Runtime", + "anchor": "communication-between-node-and-runtime" + }, + { + "depth": 3, + "title": "Runtime APIs", + "anchor": "runtime-apis" + }, + { + "depth": 3, + "title": "Host Functions", + "anchor": "host-functions" + } + ], + "stats": { + "chars": 4937, + "words": 628, + "headings": 10, + "estimated_token_count_total": 914 + }, + "hash": "sha256:8122e21c149d0863cfe3b37fc5606bcdb91668e9d265f0f05451a61ff70e4e93", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-parachains-randomness", + "title": "Randomness", + "slug": "reference-parachains-randomness", + "categories": [ + "Basics", + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains-randomness.md", + "html_url": "https://docs.polkadot.com/reference/parachains/randomness/", + "preview": "Randomness is crucial in Proof of Stake (PoS) blockchains to ensure a fair and unpredictable distribution of validator duties. However, computers are inherently deterministic, meaning the same input always produces the same output. What we typically refer to as \"random\" numbers on a computer are actually pseudo-random. These numbers rely on an initial \"seed,\" which can come from external sources like [atmospheric noise](https://www.random.org/randomness/){target=\\_blank}, [heart rates](https://m", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "VRF", + "anchor": "vrf" + }, + { + "depth": 3, + "title": "How VRF Works", + "anchor": "how-vrf-works" + }, + { + "depth": 2, + "title": "RANDAO", + "anchor": "randao" + }, + { + "depth": 2, + "title": "VDFs", + "anchor": "vdfs" + }, + { + "depth": 2, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 6503, + "words": 1005, + "headings": 6, + "estimated_token_count_total": 1388 + }, + "hash": "sha256:c7d8a5a4263fd21af458ab0bd102377104affdf2431b4fe74eeff4ebe62a4a81", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-parachains", + "title": "Parachains Overview", + "slug": "reference-parachains", + "categories": [ + "Basics", + "Parachains" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-parachains.md", + "html_url": "https://docs.polkadot.com/reference/parachains/", + "preview": "A parachain is a specialized blockchain that connects to the Polkadot relay chain, benefiting from shared security, interoperability, and scalability. Parachains are built using the [Polkadot SDK](https://github.com/paritytech/polkadot-sdk){target=\\_blank}, a powerful toolkit written in Rust that provides everything needed to create custom blockchain logic while integrating seamlessly with the Polkadot network.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Polkadot SDK: Parachain Architecture", + "anchor": "polkadot-sdk-parachain-architecture" + }, + { + "depth": 3, + "title": "Substrate: The Foundation", + "anchor": "substrate-the-foundation" + }, + { + "depth": 3, + "title": "FRAME: Building Blocks for Your Runtime", + "anchor": "frame-building-blocks-for-your-runtime" + }, + { + "depth": 3, + "title": "Cumulus: Parachain-Specific Functionality", + "anchor": "cumulus-parachain-specific-functionality" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 8495, + "words": 1029, + "headings": 6, + "estimated_token_count_total": 1759 + }, + "hash": "sha256:ecb0d9459e08920db7d2d59dc7c01aba7a91ce8c9e39256bd0c3efa473dbaa17", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-polkadot-hub-assets-and-smart-contracts", + "title": "Asset Hub", + "slug": "reference-polkadot-hub-assets-and-smart-contracts", + "categories": [ + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-polkadot-hub-assets-and-smart-contracts.md", + "html_url": "https://docs.polkadot.com/reference/polkadot-hub/assets-and-smart-contracts/", + "preview": "The Asset Hub is a critical component in the Polkadot ecosystem, enabling the management of fungible and non-fungible assets across the network. Since the relay chain focuses on maintaining security and consensus without direct asset management, Asset Hub provides a streamlined platform for creating, managing, and using on-chain assets in a fee-efficient manner. This guide outlines the core features of Asset Hub, including how it handles asset operations, cross-chain transfers, and asset integra", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Assets Basics", + "anchor": "assets-basics" + }, + { + "depth": 2, + "title": "Assets Pallet", + "anchor": "assets-pallet" + }, + { + "depth": 3, + "title": "Key Features", + "anchor": "key-features" + }, + { + "depth": 3, + "title": "Main Functions", + "anchor": "main-functions" + }, + { + "depth": 3, + "title": "Querying Functions", + "anchor": "querying-functions" + }, + { + "depth": 3, + "title": "Permission Models and Roles", + "anchor": "permission-models-and-roles" + }, + { + "depth": 3, + "title": "Asset Freezing", + "anchor": "asset-freezing" + }, + { + "depth": 3, + "title": "Non-Custodial Transfers (Approval API)", + "anchor": "non-custodial-transfers-approval-api" + }, + { + "depth": 2, + "title": "Foreign Assets", + "anchor": "foreign-assets" + }, + { + "depth": 3, + "title": "Handling Foreign Assets", + "anchor": "handling-foreign-assets" + }, + { + "depth": 2, + "title": "Integration", + "anchor": "integration" + }, + { + "depth": 3, + "title": "API Sidecar", + "anchor": "api-sidecar" + }, + { + "depth": 3, + "title": "TxWrapper", + "anchor": "txwrapper" + }, + { + "depth": 3, + "title": "Parachain Node", + "anchor": "parachain-node" + }, + { + "depth": 2, + "title": "XCM Transfer Monitoring", + "anchor": "xcm-transfer-monitoring" + }, + { + "depth": 3, + "title": "Monitor XCM Deposits", + "anchor": "monitor-xcm-deposits" + }, + { + "depth": 3, + "title": "Track XCM Information Back to the Source", + "anchor": "track-xcm-information-back-to-the-source" + }, + { + "depth": 3, + "title": "Practical Monitoring Examples", + "anchor": "practical-monitoring-examples" + }, + { + "depth": 3, + "title": "Monitor for Failed XCM Transfers", + "anchor": "monitor-for-failed-xcm-transfers" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 18211, + "words": 2649, + "headings": 21, + "estimated_token_count_total": 3678 + }, + "hash": "sha256:3d10c04cffc5f737ff75b079d661c2c1904629d23ae1e415e64fd6ae4e98759e", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-polkadot-hub-bridging", + "title": "Bridge Hub", + "slug": "reference-polkadot-hub-bridging", + "categories": [ + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-polkadot-hub-bridging.md", + "html_url": "https://docs.polkadot.com/reference/polkadot-hub/bridging/", + "preview": "The Bridge Hub system parachain plays a crucial role in facilitating trustless interactions between Polkadot, Kusama, Ethereum, and other blockchain ecosystems. By implementing on-chain light clients and supporting protocols like BEEFY and GRANDPA, Bridge Hub ensures seamless message transmission and state verification across chains. It also provides essential [pallets](/reference/glossary/#pallet){target=\\_blank} for sending and receiving messages, making it a cornerstone of Polkadot’s interope", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Trustless Bridging", + "anchor": "trustless-bridging" + }, + { + "depth": 2, + "title": "Bridging Components", + "anchor": "bridging-components" + }, + { + "depth": 3, + "title": "Ethereum-Specific Support", + "anchor": "ethereum-specific-support" + }, + { + "depth": 2, + "title": "Deployed Bridges", + "anchor": "deployed-bridges" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 5467, + "words": 776, + "headings": 6, + "estimated_token_count_total": 1220 + }, + "hash": "sha256:86734ba8bcdea7913f488edf666a6104bed0a18649d57abde82c149c41c2b871", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-polkadot-hub-collectives-and-daos", + "title": "Collectives Chain", + "slug": "reference-polkadot-hub-collectives-and-daos", + "categories": [ + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-polkadot-hub-collectives-and-daos.md", + "html_url": "https://docs.polkadot.com/reference/polkadot-hub/collectives-and-daos/", + "preview": "Established through [Referendum 81](https://polkadot-old.polkassembly.io/referendum/81){target=\\_blank}, the Collectives chain operates as a dedicated parachain exclusive to the Polkadot network with no counterpart on Kusama. This specialized infrastructure provides a foundation for various on-chain governance groups essential to Polkadot's ecosystem.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Key Collectives", + "anchor": "key-collectives" + } + ], + "stats": { + "chars": 2288, + "words": 293, + "headings": 2, + "estimated_token_count_total": 424 + }, + "hash": "sha256:59ec351fbb8d3a392e90f4f5bf6b62f58b21d6d7a900c5e367e5d2e09ecb3aca", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-polkadot-hub-consensus-and-security-agile-coretime", + "title": "Agile Coretime", + "slug": "reference-polkadot-hub-consensus-and-security-agile-coretime", + "categories": [ + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-polkadot-hub-consensus-and-security-agile-coretime.md", + "html_url": "https://docs.polkadot.com/reference/polkadot-hub/consensus-and-security/agile-coretime/", + "preview": "Agile Coretime is the [scheduling](https://en.wikipedia.org/wiki/Scheduling_(computing)){target=\\_blank} framework on Polkadot that lets parachains efficiently access cores, which comprise an active validator set tasked with parablock validation. As the first blockchain to enable a flexible scheduling system for blockspace production, Polkadot offers unparalleled adaptability for parachains.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Bulk Coretime", + "anchor": "bulk-coretime" + }, + { + "depth": 3, + "title": "Coretime Interlacing", + "anchor": "coretime-interlacing" + }, + { + "depth": 3, + "title": "Coretime Splitting", + "anchor": "coretime-splitting" + }, + { + "depth": 2, + "title": "On-Demand Coretime", + "anchor": "on-demand-coretime" + } + ], + "stats": { + "chars": 3028, + "words": 452, + "headings": 5, + "estimated_token_count_total": 619 + }, + "hash": "sha256:00be43ac8d666bbe15c5c2fa5a5085697d0bb5a6f341ebbb943a209f0be355df", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-polkadot-hub-consensus-and-security-pos-consensus", + "title": "Proof of Stake Consensus", + "slug": "reference-polkadot-hub-consensus-and-security-pos-consensus", + "categories": [ + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-polkadot-hub-consensus-and-security-pos-consensus.md", + "html_url": "https://docs.polkadot.com/reference/polkadot-hub/consensus-and-security/pos-consensus/", + "preview": "Polkadot's Proof of Stake consensus model leverages a unique hybrid approach by design to promote decentralized and secure network operations. In traditional Proof of Stake (PoS) systems, a node's ability to validate transactions is tied to its token holdings, which can lead to centralization risks and limited validator participation. Polkadot addresses these concerns through its [Nominated Proof of Stake (NPoS)](/reference/glossary/#nominated-proof-of-stake-npos){target=\\_blank} model and a com", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Nominated Proof of Stake", + "anchor": "nominated-proof-of-stake" + }, + { + "depth": 2, + "title": "Hybrid Consensus", + "anchor": "hybrid-consensus" + }, + { + "depth": 2, + "title": "Block Production - BABE", + "anchor": "block-production-babe" + }, + { + "depth": 3, + "title": "Validator Participation", + "anchor": "validator-participation" + }, + { + "depth": 3, + "title": "Additional Resources", + "anchor": "additional-resources" + }, + { + "depth": 2, + "title": "Finality Gadget - GRANDPA", + "anchor": "finality-gadget-grandpa" + }, + { + "depth": 3, + "title": "Probabilistic vs. Provable Finality", + "anchor": "probabilistic-vs-provable-finality" + }, + { + "depth": 3, + "title": "Additional Resources", + "anchor": "additional-resources-2" + }, + { + "depth": 2, + "title": "Fork Choice", + "anchor": "fork-choice" + }, + { + "depth": 3, + "title": "Additional Resources", + "anchor": "additional-resources-3" + }, + { + "depth": 2, + "title": "Bridging - BEEFY", + "anchor": "bridging-beefy" + }, + { + "depth": 3, + "title": "Additional Resources", + "anchor": "additional-resources-4" + } + ], + "stats": { + "chars": 12753, + "words": 1834, + "headings": 13, + "estimated_token_count_total": 2526 + }, + "hash": "sha256:231fc555eefe5f910fb36e0c03945147d0fb235272850797391751f4444b0a9c", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-polkadot-hub-consensus-and-security-relay-chain", + "title": "Overview of the Polkadot Relay Chain", + "slug": "reference-polkadot-hub-consensus-and-security-relay-chain", + "categories": [ + "Basics", + "Polkadot Protocol", + "Parachains" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-polkadot-hub-consensus-and-security-relay-chain.md", + "html_url": "https://docs.polkadot.com/reference/polkadot-hub/consensus-and-security/relay-chain/", + "preview": "Polkadot is a next-generation blockchain protocol designed to support a multi-chain future by enabling secure communication and interoperability between different blockchains. Built as a Layer-0 protocol, Polkadot introduces innovations like application-specific Layer-1 chains ([parachains](/polkadot-protocol/architecture/parachains/){targe=\\_blank}), shared security through [Nominated Proof of Stake (NPoS)](/reference/glossary/#nominated-proof-of-stake-npos){target=\\_blank}, and cross-chain int", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Polkadot 1.0", + "anchor": "polkadot-10" + }, + { + "depth": 3, + "title": "High-Level Architecture", + "anchor": "high-level-architecture" + }, + { + "depth": 3, + "title": "Polkadot's Additional Functionalities", + "anchor": "polkadots-additional-functionalities" + }, + { + "depth": 3, + "title": "Polkadot's Resilience", + "anchor": "polkadots-resilience" + }, + { + "depth": 3, + "title": "Polkadot's Blockspace", + "anchor": "polkadots-blockspace" + }, + { + "depth": 2, + "title": "DOT Token", + "anchor": "dot-token" + }, + { + "depth": 3, + "title": "Redenomination of DOT", + "anchor": "redenomination-of-dot" + }, + { + "depth": 3, + "title": "The Planck Unit", + "anchor": "the-planck-unit" + }, + { + "depth": 3, + "title": "Uses for DOT", + "anchor": "uses-for-dot" + }, + { + "depth": 2, + "title": "JAM and the Road Ahead", + "anchor": "jam-and-the-road-ahead" + } + ], + "stats": { + "chars": 12458, + "words": 1774, + "headings": 11, + "estimated_token_count_total": 2580 + }, + "hash": "sha256:8a914e4309d4fe7070e62d7abe4665b6c76c8dc5ec3219332eccb16b77b0dd95", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-polkadot-hub-people-and-identity", + "title": "People Chain", + "slug": "reference-polkadot-hub-people-and-identity", + "categories": [ + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-polkadot-hub-people-and-identity.md", + "html_url": "https://docs.polkadot.com/reference/polkadot-hub/people-and-identity/", + "preview": "People chain is a specialized parachain within the Polkadot ecosystem dedicated to secure, decentralized identity management.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Identity Management System", + "anchor": "identity-management-system" + }, + { + "depth": 3, + "title": "Sub-Identities", + "anchor": "sub-identities" + }, + { + "depth": 2, + "title": "Verification Process", + "anchor": "verification-process" + }, + { + "depth": 3, + "title": "Judgment Requests", + "anchor": "judgment-requests" + }, + { + "depth": 3, + "title": "Judgment Classifications", + "anchor": "judgment-classifications" + }, + { + "depth": 3, + "title": "Registrars", + "anchor": "registrars" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 4750, + "words": 606, + "headings": 8, + "estimated_token_count_total": 876 + }, + "hash": "sha256:8239d1e8d8642cb7c10e9e5f971c99b999e9e4a87373b50bf4a691225c1e4702", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-polkadot-hub", + "title": "reference-polkadot-hub", + "slug": "reference-polkadot-hub", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-polkadot-hub.md", + "html_url": "https://docs.polkadot.com/reference/polkadot-hub/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-tools-chopsticks", + "title": "reference-tools-chopsticks", + "slug": "reference-tools-chopsticks", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-chopsticks.md", + "html_url": "https://docs.polkadot.com/reference/tools/chopsticks/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-tools-dedot", + "title": "Dedot", + "slug": "reference-tools-dedot", + "categories": [ + "Tooling", + "Dapps" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-dedot.md", + "html_url": "https://docs.polkadot.com/reference/tools/dedot/", + "preview": "[Dedot](https://github.com/dedotdev/dedot){target=\\_blank} is a next-generation JavaScript client for Polkadot and Polkadot SDK-based blockchains. Designed to elevate the dApp development experience, Dedot is built and optimized to be lightweight and tree-shakable, offering precise types and APIs suggestions for individual Polkadot SDK-based blockchains and [ink! smart contracts](https://use.ink/){target=\\_blank}.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 3, + "title": "Key Features", + "anchor": "key-features" + }, + { + "depth": 2, + "title": "Installation", + "anchor": "installation" + }, + { + "depth": 2, + "title": "Get Started", + "anchor": "get-started" + }, + { + "depth": 3, + "title": "Initialize a Client Instance", + "anchor": "initialize-a-client-instance" + }, + { + "depth": 3, + "title": "Enable Type and API Suggestions", + "anchor": "enable-type-and-api-suggestions" + }, + { + "depth": 3, + "title": "Read On-Chain Data", + "anchor": "read-on-chain-data" + }, + { + "depth": 3, + "title": "Sign and Send Transactions", + "anchor": "sign-and-send-transactions" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 8855, + "words": 1100, + "headings": 9, + "estimated_token_count_total": 2300 + }, + "hash": "sha256:ba24e31e2ad94fbf1d73f1878da92dd2e1476db00170780bbdf0e65ab18bc961", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-tools-light-clients", + "title": "Light Clients", + "slug": "reference-tools-light-clients", + "categories": [ + "Parachains", + "Tooling" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-light-clients.md", + "html_url": "https://docs.polkadot.com/reference/tools/light-clients/", + "preview": "Light clients enable secure and efficient blockchain interaction without running a full node. They provide a trust-minimized alternative to JSON-RPC by verifying data through cryptographic proofs rather than blindly trusting remote nodes.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Light Clients Workflow", + "anchor": "light-clients-workflow" + }, + { + "depth": 2, + "title": "JSON-RPC and Light Client Comparison", + "anchor": "json-rpc-and-light-client-comparison" + }, + { + "depth": 2, + "title": "Using Light Clients", + "anchor": "using-light-clients" + }, + { + "depth": 3, + "title": "PAPI Light Client Support", + "anchor": "papi-light-client-support" + }, + { + "depth": 3, + "title": "Substrate Connect - Browser Extension", + "anchor": "substrate-connect-browser-extension" + }, + { + "depth": 2, + "title": "Resources", + "anchor": "resources" + } + ], + "stats": { + "chars": 6490, + "words": 870, + "headings": 7, + "estimated_token_count_total": 1430 + }, + "hash": "sha256:1284c42be692167e01bcc44e2e134ec20615402675fac26df246c00aa1588d80", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-tools-moonwall", + "title": "E2E Testing with Moonwall", + "slug": "reference-tools-moonwall", + "categories": [ + "Parachains", + "Tooling" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-moonwall.md", + "html_url": "https://docs.polkadot.com/reference/tools/moonwall/", + "preview": "Moonwall is an end-to-end testing framework designed explicitly for Polkadot SDK-based blockchain networks. It addresses one of the most significant challenges in blockchain development: managing complex test environments and network configurations.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Install Moonwall", + "anchor": "install-moonwall" + }, + { + "depth": 3, + "title": "Global Installation", + "anchor": "global-installation" + }, + { + "depth": 3, + "title": "Local Installation", + "anchor": "local-installation" + }, + { + "depth": 2, + "title": "Initialize Moonwall", + "anchor": "initialize-moonwall" + }, + { + "depth": 2, + "title": "Writing Tests", + "anchor": "writing-tests" + }, + { + "depth": 2, + "title": "Running the Tests", + "anchor": "running-the-tests" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 10240, + "words": 1295, + "headings": 9, + "estimated_token_count_total": 2453 + }, + "hash": "sha256:2c77cfb38bb2e466a8f56dabbb706fcd2e90cf1634fc9beb7f0ee95a75735653", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-tools-omninode", + "title": "Polkadot Omni Node", + "slug": "reference-tools-omninode", + "categories": [ + "Parachains", + "Tooling" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-omninode.md", + "html_url": "https://docs.polkadot.com/reference/tools/omninode/", + "preview": "The [`polkadot-omni-node`](https://crates.io/crates/polkadot-omni-node/0.7.0){target=\\_blank} crate is a versatile, pre-built binary designed to simplify running parachains in the Polkadot ecosystem. Unlike traditional node binaries that are tightly coupled to specific runtime code, the `polkadot-omni-node` operates using an external [chain specification](/polkadot-protocol/glossary#chain-specification){target=\\_blank} file, allowing it to adapt dynamically to different parachains.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Install Polkadot Omni Node", + "anchor": "install-polkadot-omni-node" + }, + { + "depth": 2, + "title": "Obtain Chain Specifications", + "anchor": "obtain-chain-specifications" + }, + { + "depth": 2, + "title": "Run a Parachain Full Node", + "anchor": "run-a-parachain-full-node" + }, + { + "depth": 2, + "title": "Interact with the Node", + "anchor": "interact-with-the-node" + }, + { + "depth": 2, + "title": "Parachain Compatibility", + "anchor": "parachain-compatibility" + }, + { + "depth": 3, + "title": "Required Runtime APIs", + "anchor": "required-runtime-apis" + }, + { + "depth": 3, + "title": "Required Pallets", + "anchor": "required-pallets" + } + ], + "stats": { + "chars": 8913, + "words": 1164, + "headings": 9, + "estimated_token_count_total": 2017 + }, + "hash": "sha256:a87815deff81936d7f50842f8600004990076c1a33e7e6b408ab954b6ce47259", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-tools-papi", + "title": "Polkadot-API", + "slug": "reference-tools-papi", + "categories": [ + "Tooling", + "Dapps" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-papi.md", + "html_url": "https://docs.polkadot.com/reference/tools/papi/", + "preview": "[Polkadot-API](https://github.com/polkadot-api/polkadot-api){target=\\_blank} (PAPI) is a set of libraries built to be modular, composable, and grounded in a “light-client first” approach. Its primary aim is to equip dApp developers with an extensive toolkit for building fully decentralized applications.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Get Started", + "anchor": "get-started" + }, + { + "depth": 3, + "title": "API Instantiation", + "anchor": "api-instantiation" + }, + { + "depth": 3, + "title": "Reading Chain Data", + "anchor": "reading-chain-data" + }, + { + "depth": 3, + "title": "Sending Transactions", + "anchor": "sending-transactions" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 8957, + "words": 1156, + "headings": 6, + "estimated_token_count_total": 1987 + }, + "hash": "sha256:2ca93b09d3bb9159bbf53816886a9b242bb3c13b996c51fd52962e049e2d5477", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-tools-paraspell", + "title": "ParaSpell XCM SDK", + "slug": "reference-tools-paraspell", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-paraspell.md", + "html_url": "https://docs.polkadot.com/reference/tools/paraspell/", + "preview": "[ParaSpell](https://paraspell.github.io/docs/){target=\\_blank} is a comprehensive suite of open-source tools designed to simplify cross-chain interactions within the Polkadot ecosystem. At its core, ParaSpell is dedicated to enhancing the functionality of the [XCM (Cross-Consensus Messaging)](/parachains/interoperability/get-started/){target=\\_blank} protocol by providing developers with a unified and streamlined experience for building interoperable decentralized applications (dApps).", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 3, + "title": "ParaSpell XCM SDK", + "anchor": "paraspell-xcm-sdk" + }, + { + "depth": 2, + "title": "Install ParaSpell", + "anchor": "install-paraspell" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 4043, + "words": 562, + "headings": 4, + "estimated_token_count_total": 888 + }, + "hash": "sha256:c8741954ea656680aa3322c825e3f6acbaac369baaa42232b06af9e5e482f74f", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-tools-polkadart", + "title": "Polkadart", + "slug": "reference-tools-polkadart", + "categories": [ + "Tooling", + "Dapps" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-polkadart.md", + "html_url": "https://docs.polkadot.com/reference/tools/polkadart/", + "preview": "Polkadart is the most comprehensive Dart/Flutter SDK for interacting with Polkadot, Substrate, and other compatible blockchain networks. Designed with a Dart-first approach and type-safe APIs, it provides everything developers need to build powerful decentralized applications.", + "outline": [ + { + "depth": 2, + "title": "Installation", + "anchor": "installation" + }, + { + "depth": 2, + "title": "Get Started", + "anchor": "get-started" + }, + { + "depth": 3, + "title": "Type Generation", + "anchor": "type-generation" + }, + { + "depth": 3, + "title": "Run Generator", + "anchor": "run-generator" + }, + { + "depth": 3, + "title": "Use Generated Types", + "anchor": "use-generated-types" + }, + { + "depth": 3, + "title": "Creating an API Instance", + "anchor": "creating-an-api-instance" + }, + { + "depth": 3, + "title": "Reading Chain Data", + "anchor": "reading-chain-data" + }, + { + "depth": 3, + "title": "Subscribe to New Blocks", + "anchor": "subscribe-to-new-blocks" + }, + { + "depth": 3, + "title": "Send a Transaction", + "anchor": "send-a-transaction" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 5178, + "words": 624, + "headings": 10, + "estimated_token_count_total": 1084 + }, + "hash": "sha256:7f533abe61586af8438e350c41b741d74a8edb839f9dc4139bc4619ba3748258", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-tools-polkadot-js-api", + "title": "Polkadot.js API", + "slug": "reference-tools-polkadot-js-api", + "categories": [ + "Tooling", + "Dapps" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-polkadot-js-api.md", + "html_url": "https://docs.polkadot.com/reference/tools/polkadot-js-api/", + "preview": "!!! warning \"Maintenance Mode Only\" The Polkadot.js API is now in maintenance mode and is no longer actively developed. New projects should use [Dedot](/develop/toolkit/api-libraries/dedot){target=\\_blank} (TypeScript-first API) or [Polkadot API](/develop/toolkit/api-libraries/papi){target=\\_blank} (modern, type-safe API) as actively maintained alternatives.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 3, + "title": "Dynamic API Generation", + "anchor": "dynamic-api-generation" + }, + { + "depth": 3, + "title": "Available API Categories", + "anchor": "available-api-categories" + }, + { + "depth": 2, + "title": "Installation", + "anchor": "installation" + }, + { + "depth": 2, + "title": "Get Started", + "anchor": "get-started" + }, + { + "depth": 3, + "title": "Creating an API Instance", + "anchor": "creating-an-api-instance" + }, + { + "depth": 3, + "title": "Reading Chain Data", + "anchor": "reading-chain-data" + }, + { + "depth": 3, + "title": "Sending Transactions", + "anchor": "sending-transactions" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 5042, + "words": 684, + "headings": 9, + "estimated_token_count_total": 1166 + }, + "hash": "sha256:ed3986f30880fefca5975fcdc847c68b4aca65862c63e3002b25391b0521781d", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-tools-py-substrate-interface", + "title": "Python Substrate Interface", + "slug": "reference-tools-py-substrate-interface", + "categories": [ + "Tooling", + "Dapps" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-py-substrate-interface.md", + "html_url": "https://docs.polkadot.com/reference/tools/py-substrate-interface/", + "preview": "The [Python Substrate Interface](https://github.com/polkascan/py-substrate-interface){target=\\_blank} is a powerful library that enables interaction with Polkadot SDK-based chains. It provides essential functionality for:", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Installation", + "anchor": "installation" + }, + { + "depth": 2, + "title": "Get Started", + "anchor": "get-started" + }, + { + "depth": 3, + "title": "Establishing Connection", + "anchor": "establishing-connection" + }, + { + "depth": 3, + "title": "Reading Chain State", + "anchor": "reading-chain-state" + }, + { + "depth": 3, + "title": "Submitting Transactions", + "anchor": "submitting-transactions" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 4302, + "words": 541, + "headings": 7, + "estimated_token_count_total": 942 + }, + "hash": "sha256:8987fc35cd28602054ee018031f773e2e3837425107c51d0e2ac68a94b86e9c0", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-tools-sidecar", + "title": "Sidecar REST API", + "slug": "reference-tools-sidecar", + "categories": [ + "Tooling", + "Dapps" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-sidecar.md", + "html_url": "https://docs.polkadot.com/reference/tools/sidecar/", + "preview": "The [Sidecar REST API](https://github.com/paritytech/substrate-api-sidecar){target=\\_blank} is a service that provides a REST interface for interacting with Polkadot SDK-based blockchains. With this API, developers can easily access a broad range of endpoints for nodes, accounts, transactions, parachains, and more.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Installation", + "anchor": "installation" + }, + { + "depth": 2, + "title": "Usage", + "anchor": "usage" + }, + { + "depth": 3, + "title": "Endpoints", + "anchor": "endpoints" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 7309, + "words": 1033, + "headings": 6, + "estimated_token_count_total": 1945 + }, + "hash": "sha256:0795462182cb97256bb5c2acb035855fe0d6557185de8ac99482725ecb4f94c1", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-tools-subxt", + "title": "Subxt Rust API", + "slug": "reference-tools-subxt", + "categories": [ + "Tooling", + "Dapps" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-subxt.md", + "html_url": "https://docs.polkadot.com/reference/tools/subxt/", + "preview": "Subxt is a Rust library designed to interact with Polkadot SDK-based blockchains. It provides a type-safe interface for submitting transactions, querying on-chain state, and performing other blockchain interactions. By leveraging Rust's strong type system, subxt ensures that your code is validated at compile time, reducing runtime errors and improving reliability.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Installation", + "anchor": "installation" + }, + { + "depth": 2, + "title": "Get Started", + "anchor": "get-started" + }, + { + "depth": 3, + "title": "Download Chain Metadata", + "anchor": "download-chain-metadata" + }, + { + "depth": 3, + "title": "Generate Type-Safe Interfaces", + "anchor": "generate-type-safe-interfaces" + }, + { + "depth": 3, + "title": "Initialize the Subxt Client", + "anchor": "initialize-the-subxt-client" + }, + { + "depth": 3, + "title": "Read Chain Data", + "anchor": "read-chain-data" + }, + { + "depth": 3, + "title": "Submit Transactions", + "anchor": "submit-transactions" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 9174, + "words": 1175, + "headings": 10, + "estimated_token_count_total": 2187 + }, + "hash": "sha256:56269d9ea47f5b4e92cd7d5a1e65ab06d181a9c380f90bb3ef285529b12299f7", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-tools-xcm-tools", + "title": "XCM Tools", + "slug": "reference-tools-xcm-tools", + "categories": [ + "Basics", + "Tooling", + "Dapps" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-xcm-tools.md", + "html_url": "https://docs.polkadot.com/reference/tools/xcm-tools/", + "preview": "As described in the [Interoperability](/develop/interoperability){target=\\_blank} section, XCM (Cross-Consensus Messaging) is a protocol used in the Polkadot and Kusama ecosystems to enable communication and interaction between chains. It facilitates cross-chain communication, allowing assets, data, and messages to flow seamlessly across the ecosystem.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Popular XCM Tools", + "anchor": "popular-xcm-tools" + }, + { + "depth": 3, + "title": "Moonsong Labs XCM Tools", + "anchor": "moonsong-labs-xcm-tools" + }, + { + "depth": 3, + "title": "ParaSpell", + "anchor": "paraspell" + }, + { + "depth": 3, + "title": "Astar XCM Tools", + "anchor": "astar-xcm-tools" + }, + { + "depth": 3, + "title": "Chopsticks", + "anchor": "chopsticks" + }, + { + "depth": 3, + "title": "Moonbeam XCM SDK", + "anchor": "moonbeam-xcm-sdk" + } + ], + "stats": { + "chars": 6146, + "words": 852, + "headings": 7, + "estimated_token_count_total": 1377 + }, + "hash": "sha256:674e4f60c82fc7544c7af8e09f1e0f677c9907cdff88b107f6c8489e97a43487", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference-tools-zombienet", + "title": "reference-tools-zombienet", + "slug": "reference-tools-zombienet", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-zombienet.md", + "html_url": "https://docs.polkadot.com/reference/tools/zombienet/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "reference", + "title": "reference", + "slug": "reference", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference.md", + "html_url": "https://docs.polkadot.com/reference/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-connect", + "title": "Connect to Polkadot", + "slug": "smart-contracts-connect", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-connect.md", + "html_url": "https://docs.polkadot.com/smart-contracts/connect/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ", + "outline": [ + { + "depth": 2, + "title": "Networks Details", + "anchor": "networks-details" + }, + { + "depth": 2, + "title": "Test Tokens", + "anchor": "test-tokens" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 3459, + "words": 476, + "headings": 3, + "estimated_token_count_total": 558 + }, + "hash": "sha256:a2490223926957381913ae0ed22e2df3611a6713ec9d77a3015d1cd6a578b3f6", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-dapps-zero-to-hero", + "title": "Zero to Hero Smart Contract DApp", + "slug": "smart-contracts-cookbook-dapps-zero-to-hero", + "categories": [ + "dApp", + "Tooling" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-dapps-zero-to-hero.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/dapps/zero-to-hero/", + "preview": "Decentralized applications (dApps) are a key component of the Web3 ecosystem, enabling developers to build applications that communicate directly with blockchain networks. Polkadot Hub, a blockchain with smart contract support, serves as a robust platform for deploying and interacting with dApps.", + "outline": [ + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Project Overview", + "anchor": "project-overview" + }, + { + "depth": 2, + "title": "Create and Deploy the Storage Contract", + "anchor": "create-and-deploy-the-storage-contract" + }, + { + "depth": 3, + "title": "Set Up Hardhat Project", + "anchor": "set-up-hardhat-project" + }, + { + "depth": 3, + "title": "Create the Storage Contract", + "anchor": "create-the-storage-contract" + }, + { + "depth": 3, + "title": "Configure Hardhat for Polkadot Hub", + "anchor": "configure-hardhat-for-polkadot-hub" + }, + { + "depth": 3, + "title": "Compile the Contract", + "anchor": "compile-the-contract" + }, + { + "depth": 3, + "title": "Deploy the Contract", + "anchor": "deploy-the-contract" + }, + { + "depth": 3, + "title": "Export the Contract ABI", + "anchor": "export-the-contract-abi" + }, + { + "depth": 2, + "title": "Set Up the dApp Project", + "anchor": "set-up-the-dapp-project" + }, + { + "depth": 2, + "title": "Install Dependencies", + "anchor": "install-dependencies" + }, + { + "depth": 2, + "title": "Connect to Polkadot Hub", + "anchor": "connect-to-polkadot-hub" + }, + { + "depth": 2, + "title": "Set Up the Smart Contract Interface", + "anchor": "set-up-the-smart-contract-interface" + }, + { + "depth": 2, + "title": "Create the Wallet Connection Component", + "anchor": "create-the-wallet-connection-component" + }, + { + "depth": 2, + "title": "Create the Read Contract Component", + "anchor": "create-the-read-contract-component" + }, + { + "depth": 2, + "title": "Create the Write Contract Component", + "anchor": "create-the-write-contract-component" + }, + { + "depth": 2, + "title": "How It Works", + "anchor": "how-it-works" + }, + { + "depth": 3, + "title": "Wallet Connection", + "anchor": "wallet-connection" + }, + { + "depth": 3, + "title": "Data Reads", + "anchor": "data-reads" + }, + { + "depth": 3, + "title": "Data Writes", + "anchor": "data-writes" + }, + { + "depth": 2, + "title": "Conclusion", + "anchor": "conclusion" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 31207, + "words": 3688, + "headings": 22, + "estimated_token_count_total": 6967 + }, + "hash": "sha256:b200f93a9179f0b2588ba722dd4c118536136faf3c39eabccf4abf5c346f78a8", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-eth-dapps-uniswap-v2", + "title": "Deploying Uniswap V2 on Polkadot", + "slug": "smart-contracts-cookbook-eth-dapps-uniswap-v2", + "categories": [ + "dApps", + "Tooling" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-eth-dapps-uniswap-v2.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/eth-dapps/uniswap-v2/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Set Up the Project", + "anchor": "set-up-the-project" + }, + { + "depth": 2, + "title": "Understanding Uniswap V2 Architecture", + "anchor": "understanding-uniswap-v2-architecture" + }, + { + "depth": 2, + "title": "Test the Contracts", + "anchor": "test-the-contracts" + }, + { + "depth": 2, + "title": "Deploy the Contracts", + "anchor": "deploy-the-contracts" + }, + { + "depth": 2, + "title": "Conclusion", + "anchor": "conclusion" + } + ], + "stats": { + "chars": 11280, + "words": 1560, + "headings": 7, + "estimated_token_count_total": 2671 + }, + "hash": "sha256:2a42198668c759f63aa602115bf2d290ec7d03bbc3a3df20e30e85027e1b1cc3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-.deploy-basic-pvm", + "title": "Deploy a Basic Contract to Polkadot Hub", + "slug": "smart-contracts-cookbook-smart-contracts-.deploy-basic-pvm", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-.deploy-basic-pvm.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/.deploy-basic-pvm/", + "preview": "Deploying smart contracts to [Polkadot Hub](/smart-contracts/overview/#smart-contract-development){target=\\_blank} can be accomplished through various tools and environments, each suited to different development workflows. This guide demonstrates how to deploy a basic PolkaVM (PVM) smart contract using four popular approaches: JavaScript with [Ethers.js](https://docs.ethers.org/v6/){target=\\_blank}, [Remix IDE](https://remix.live/){target=\\_blank}, [Hardhat](https://hardhat.org/){target=\\_blank}", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "JavaScript with Ethers.js", + "anchor": "javascript-with-ethersjs" + }, + { + "depth": 3, + "title": "Setup", + "anchor": "setup" + }, + { + "depth": 3, + "title": "Create and Compile Your Contract", + "anchor": "create-and-compile-your-contract" + }, + { + "depth": 3, + "title": "Deploy the Contract", + "anchor": "deploy-the-contract" + }, + { + "depth": 2, + "title": "Remix IDE", + "anchor": "remix-ide" + }, + { + "depth": 3, + "title": "Access Remix", + "anchor": "access-remix" + }, + { + "depth": 3, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 3, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 2, + "title": "Hardhat", + "anchor": "hardhat" + }, + { + "depth": 3, + "title": "Setup", + "anchor": "setup-2" + }, + { + "depth": 3, + "title": "Configure Hardhat", + "anchor": "configure-hardhat" + }, + { + "depth": 3, + "title": "Create Your Contract", + "anchor": "create-your-contract" + }, + { + "depth": 3, + "title": "Compile", + "anchor": "compile-2" + }, + { + "depth": 3, + "title": "Set Up Deployment", + "anchor": "set-up-deployment" + }, + { + "depth": 3, + "title": "Deploy", + "anchor": "deploy-2" + }, + { + "depth": 2, + "title": "Foundry", + "anchor": "foundry" + }, + { + "depth": 3, + "title": "Setup", + "anchor": "setup-3" + }, + { + "depth": 3, + "title": "Configure Foundry", + "anchor": "configure-foundry" + }, + { + "depth": 3, + "title": "Create Your Contract", + "anchor": "create-your-contract-2" + }, + { + "depth": 3, + "title": "Compile", + "anchor": "compile-3" + }, + { + "depth": 3, + "title": "Deploy", + "anchor": "deploy-3" + }, + { + "depth": 2, + "title": "Conclusion", + "anchor": "conclusion" + }, + { + "depth": 3, + "title": "Next Steps", + "anchor": "next-steps" + } + ], + "stats": { + "chars": 13872, + "words": 1640, + "headings": 24, + "estimated_token_count_total": 3228 + }, + "hash": "sha256:8f29b0f0b56f8c136206211a858cdc5bc27bcd9119eab179a6cd306182d910cb", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-contract-deploy-basic-ethers-js", + "title": "JavaScript with Ethers.js", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-contract-deploy-basic-ethers-js", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-contract-deploy-basic-ethers-js.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic-contract/deploy-basic-ethers-js/", + "preview": "[Ethers.js](https://docs.ethers.org/v6/){target=\\_blank} provides a lightweight approach for deploying contracts using pure JavaScript. This method is ideal for developers who want programmatic control over the deployment process or need to integrate contract deployment into existing applications.", + "outline": [ + { + "depth": 3, + "title": "Setup", + "anchor": "setup" + }, + { + "depth": 3, + "title": "Create and Compile Your Contract", + "anchor": "create-and-compile-your-contract" + }, + { + "depth": 3, + "title": "Deploy the Contract", + "anchor": "deploy-the-contract" + }, + { + "depth": 3, + "title": "Next Steps", + "anchor": "next-steps" + } + ], + "stats": { + "chars": 6935, + "words": 767, + "headings": 4, + "estimated_token_count_total": 1490 + }, + "hash": "sha256:b0af34b460192f665ca70e7d7985e87b9f59a1a359888f6d14d651daedbcd711", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-contract-deploy-basic-foundry", + "title": "Foundry", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-contract-deploy-basic-foundry", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-contract-deploy-basic-foundry.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic-contract/deploy-basic-foundry/", + "preview": "[Foundry](https://getfoundry.sh/){target=\\_blank} offers a fast, modular toolkit written in Rust. It's perfect for developers who prefer command-line interfaces and need high-performance compilation and deployment.", + "outline": [ + { + "depth": 3, + "title": "Setup", + "anchor": "setup" + }, + { + "depth": 3, + "title": "Configure Foundry", + "anchor": "configure-foundry" + }, + { + "depth": 3, + "title": "Create Your Contract", + "anchor": "create-your-contract" + }, + { + "depth": 3, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 3, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 3, + "title": "Next Steps", + "anchor": "next-steps" + } + ], + "stats": { + "chars": 2125, + "words": 276, + "headings": 6, + "estimated_token_count_total": 429 + }, + "hash": "sha256:f7687b9a1e80ab381cf4fb24f37cccfb98ddf139bf687e8832af99364ef0a8a9", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-contract-deploy-basic-hardhat", + "title": "hardhat", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-contract-deploy-basic-hardhat", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-contract-deploy-basic-hardhat.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic-contract/deploy-basic-hardhat/", + "preview": "[Hardhat](https://hardhat.org/){target=\\_blank} provides a comprehensive development environment with built-in testing, debugging, and deployment capabilities. It's ideal for professional development workflows and team projects.", + "outline": [ + { + "depth": 3, + "title": "Setup", + "anchor": "setup" + }, + { + "depth": 3, + "title": "Configure Hardhat", + "anchor": "configure-hardhat" + }, + { + "depth": 3, + "title": "Create Your Contract", + "anchor": "create-your-contract" + }, + { + "depth": 3, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 3, + "title": "Set Up Deployment", + "anchor": "set-up-deployment" + }, + { + "depth": 3, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 3, + "title": "Next Steps", + "anchor": "next-steps" + } + ], + "stats": { + "chars": 3336, + "words": 375, + "headings": 7, + "estimated_token_count_total": 672 + }, + "hash": "sha256:93ca24da15095dd0bb03657f53d27771934aee055c11af529445a50e161f79a3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-contract-deploy-basic-remix", + "title": "Remix IDE", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-contract-deploy-basic-remix", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-contract-deploy-basic-remix.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic-contract/deploy-basic-remix/", + "preview": "[Remix IDE](https://remix.live/){target=\\_blank} offers a visual, browser-based environment perfect for rapid prototyping and learning. It requires no local installation and provides an intuitive interface for contract development.", + "outline": [ + { + "depth": 3, + "title": "Access Remix", + "anchor": "access-remix" + }, + { + "depth": 3, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 3, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 3, + "title": "Next Steps", + "anchor": "next-steps" + } + ], + "stats": { + "chars": 2473, + "words": 363, + "headings": 4, + "estimated_token_count_total": 527 + }, + "hash": "sha256:56d730c8a6d2ccf0324caf1c3f30929a93904f80e482cfcb457541e04482dbad", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-contract-evm-deploy-basic-ethers-js", + "title": "JavaScript with Ethers.js", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-contract-evm-deploy-basic-ethers-js", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-contract-evm-deploy-basic-ethers-js.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic-contract-evm/deploy-basic-ethers-js/", + "preview": "[Ethers.js](https://docs.ethers.org/v6/){target=\\_blank} provides a lightweight approach for deploying contracts using pure JavaScript. This method is ideal for developers who want programmatic control over the deployment process or need to integrate contract deployment into existing applications.", + "outline": [ + { + "depth": 3, + "title": "Setup", + "anchor": "setup" + }, + { + "depth": 3, + "title": "Create and Compile Your Contract", + "anchor": "create-and-compile-your-contract" + }, + { + "depth": 3, + "title": "Deploy the Contract", + "anchor": "deploy-the-contract" + }, + { + "depth": 3, + "title": "Next Steps", + "anchor": "next-steps" + } + ], + "stats": { + "chars": 6935, + "words": 767, + "headings": 4, + "estimated_token_count_total": 1490 + }, + "hash": "sha256:b0af34b460192f665ca70e7d7985e87b9f59a1a359888f6d14d651daedbcd711", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-contract-evm-deploy-basic-foundry", + "title": "Foundry", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-contract-evm-deploy-basic-foundry", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-contract-evm-deploy-basic-foundry.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic-contract-evm/deploy-basic-foundry/", + "preview": "[Foundry](https://getfoundry.sh/){target=\\_blank} offers a fast, modular toolkit written in Rust. It's perfect for developers who prefer command-line interfaces and need high-performance compilation and deployment.", + "outline": [ + { + "depth": 3, + "title": "Setup", + "anchor": "setup" + }, + { + "depth": 3, + "title": "Configure Foundry", + "anchor": "configure-foundry" + }, + { + "depth": 3, + "title": "Create Your Contract", + "anchor": "create-your-contract" + }, + { + "depth": 3, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 3, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 3, + "title": "Next Steps", + "anchor": "next-steps" + } + ], + "stats": { + "chars": 2125, + "words": 276, + "headings": 6, + "estimated_token_count_total": 429 + }, + "hash": "sha256:f7687b9a1e80ab381cf4fb24f37cccfb98ddf139bf687e8832af99364ef0a8a9", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-contract-evm-deploy-basic-hardhat", + "title": "hardhat", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-contract-evm-deploy-basic-hardhat", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-contract-evm-deploy-basic-hardhat.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic-contract-evm/deploy-basic-hardhat/", + "preview": "[Hardhat](https://hardhat.org/){target=\\_blank} provides a comprehensive development environment with built-in testing, debugging, and deployment capabilities. It's ideal for professional development workflows and team projects.", + "outline": [ + { + "depth": 3, + "title": "Setup", + "anchor": "setup" + }, + { + "depth": 3, + "title": "Configure Hardhat", + "anchor": "configure-hardhat" + }, + { + "depth": 3, + "title": "Create Your Contract", + "anchor": "create-your-contract" + }, + { + "depth": 3, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 3, + "title": "Set Up Deployment", + "anchor": "set-up-deployment" + }, + { + "depth": 3, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 3, + "title": "Next Steps", + "anchor": "next-steps" + } + ], + "stats": { + "chars": 3336, + "words": 375, + "headings": 7, + "estimated_token_count_total": 672 + }, + "hash": "sha256:93ca24da15095dd0bb03657f53d27771934aee055c11af529445a50e161f79a3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-contract-evm-deploy-basic-remix", + "title": "Remix IDE", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-contract-evm-deploy-basic-remix", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-contract-evm-deploy-basic-remix.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic-contract-evm/deploy-basic-remix/", + "preview": "[Remix IDE](https://remix.live/){target=\\_blank} offers a visual, browser-based environment perfect for rapid prototyping and learning. It requires no local installation and provides an intuitive interface for contract development.", + "outline": [ + { + "depth": 3, + "title": "Access Remix", + "anchor": "access-remix" + }, + { + "depth": 3, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 3, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 3, + "title": "Next Steps", + "anchor": "next-steps" + } + ], + "stats": { + "chars": 2473, + "words": 363, + "headings": 4, + "estimated_token_count_total": 527 + }, + "hash": "sha256:56d730c8a6d2ccf0324caf1c3f30929a93904f80e482cfcb457541e04482dbad", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-ethers", + "title": "Deploy a Basic Contract with Ethers.js", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-ethers", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-ethers.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic/ethers/", + "preview": "This guide demonstrates how to deploy a basic Solidity smart contract to Polkadot Hub using [Ethers.js](https://docs.ethers.org/v6/){target=\\_blank}, which provides a lightweight approach for deploying contracts using pure JavaScript. This method is ideal for developers who want programmatic control over the deployment process or need to integrate contract deployment into existing applications.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Set Up Your Project", + "anchor": "set-up-your-project" + }, + { + "depth": 2, + "title": "Create Your Contract", + "anchor": "create-your-contract" + }, + { + "depth": 2, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 2, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 7370, + "words": 823, + "headings": 7, + "estimated_token_count_total": 1729 + }, + "hash": "sha256:ff8975b44870613c3aef0907df365f1ac981de74ec83019df232fe4bda6d9dbe", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-evm", + "title": "Deploy a Basic Contract to EVM", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-evm", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-evm.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic-evm/", + "preview": "Deploying smart contracts to the [Polkadot Hub](/smart-contracts/overview/#smart-contract-development){target=\\_blank} can be accomplished using standard EVM development tools and workflows. This guide demonstrates how to deploy a basic smart contract using four popular EVM approaches: JavaScript with [Ethers.js](https://docs.ethers.org/v6/){target=\\_blank}, [Remix IDE](https://remix.live/){target=\\_blank}, [Hardhat](https://hardhat.org/){target=\\_blank}, and [Foundry](https://getfoundry.sh/){ta", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Deployment options", + "anchor": "deployment-options" + }, + { + "depth": 2, + "title": "Conclusion", + "anchor": "conclusion" + }, + { + "depth": 3, + "title": "Next Steps", + "anchor": "next-steps" + } + ], + "stats": { + "chars": 15629, + "words": 1659, + "headings": 4, + "estimated_token_count_total": 3341 + }, + "hash": "sha256:a4fd853afb897985602e0356551edacbce77db60bbc6556de3b6ae5af3fbc9e5", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-foundry", + "title": "Deploy a Basic Contract with Foundry", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-foundry", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-foundry.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic/foundry/", + "preview": "This guide demonstrates how to deploy a basic Solidity smart contract to Polkadot Hub using [Foundry](https://getfoundry.sh/){target=\\_blank}, which offers a fast, modular toolkit written in Rust. It's perfect for developers who prefer command-line interfaces and need high-performance compilation and deployment.", + "outline": [ + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Set Up Your Project", + "anchor": "set-up-your-project" + }, + { + "depth": 2, + "title": "Configure Foundry", + "anchor": "configure-foundry" + }, + { + "depth": 2, + "title": "Create Your Contract", + "anchor": "create-your-contract" + }, + { + "depth": 2, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 2, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 2731, + "words": 355, + "headings": 7, + "estimated_token_count_total": 598 + }, + "hash": "sha256:63defd84f302f0778c90129abbe69ecd2a5d9d83c622f2b7e5c2ffc9bcb3312f", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-hardhat", + "title": "Deploy a Basic Contract with Hardhat", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-hardhat", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-hardhat.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic/hardhat/", + "preview": "This guide demonstrates how to deploy a basic Solidity smart contract to Polkadot Hub using [Hardhat](https://hardhat.org/){target=\\_blank}, which provides a comprehensive development environment with built-in testing, debugging, and deployment capabilities. It's ideal for professional development workflows and team projects.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Set Up Your Project", + "anchor": "set-up-your-project" + }, + { + "depth": 2, + "title": "Configure Hardhat", + "anchor": "configure-hardhat" + }, + { + "depth": 2, + "title": "Create Your Contract", + "anchor": "create-your-contract" + }, + { + "depth": 2, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 2, + "title": "Set Up Deployment", + "anchor": "set-up-deployment" + }, + { + "depth": 2, + "title": "Deploy the Contract", + "anchor": "deploy-the-contract" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 4051, + "words": 475, + "headings": 9, + "estimated_token_count_total": 981 + }, + "hash": "sha256:98f5c5c1a26db913e1c4c435062d214ca8c4b5f2dbed5b64d2e54c3435f06452", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-pvm", + "title": "Deploy a Basic Contract to Polkadot Hub", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-pvm", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-pvm.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic-pvm/", + "preview": "Deploying smart contracts to [Polkadot Hub](/smart-contracts/overview/#smart-contract-development){target=\\_blank} can be accomplished through various tools and environments, each suited to different development workflows. This guide demonstrates how to deploy a basic PolkaVM (PVM) smart contract using four popular approaches: JavaScript with [Ethers.js](https://docs.ethers.org/v6/){target=\\_blank}, [Remix IDE](https://remix.live/){target=\\_blank}, [Hardhat](https://hardhat.org/){target=\\_blank}", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "JavaScript with Ethers.js", + "anchor": "javascript-with-ethersjs" + }, + { + "depth": 3, + "title": "Setup", + "anchor": "setup" + }, + { + "depth": 3, + "title": "Create and Compile Your Contract", + "anchor": "create-and-compile-your-contract" + }, + { + "depth": 3, + "title": "Deploy the Contract", + "anchor": "deploy-the-contract" + }, + { + "depth": 2, + "title": "Remix IDE", + "anchor": "remix-ide" + }, + { + "depth": 3, + "title": "Access Remix", + "anchor": "access-remix" + }, + { + "depth": 3, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 3, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 2, + "title": "Hardhat", + "anchor": "hardhat" + }, + { + "depth": 3, + "title": "Setup", + "anchor": "setup-2" + }, + { + "depth": 3, + "title": "Configure Hardhat", + "anchor": "configure-hardhat" + }, + { + "depth": 3, + "title": "Create Your Contract", + "anchor": "create-your-contract" + }, + { + "depth": 3, + "title": "Compile", + "anchor": "compile-2" + }, + { + "depth": 3, + "title": "Set Up Deployment", + "anchor": "set-up-deployment" + }, + { + "depth": 3, + "title": "Deploy", + "anchor": "deploy-2" + }, + { + "depth": 2, + "title": "Foundry", + "anchor": "foundry" + }, + { + "depth": 3, + "title": "Setup", + "anchor": "setup-3" + }, + { + "depth": 3, + "title": "Configure Foundry", + "anchor": "configure-foundry" + }, + { + "depth": 3, + "title": "Create Your Contract", + "anchor": "create-your-contract-2" + }, + { + "depth": 3, + "title": "Compile", + "anchor": "compile-3" + }, + { + "depth": 3, + "title": "Deploy", + "anchor": "deploy-3" + }, + { + "depth": 2, + "title": "Conclusion", + "anchor": "conclusion" + }, + { + "depth": 3, + "title": "Next Steps", + "anchor": "next-steps" + } + ], + "stats": { + "chars": 13872, + "words": 1640, + "headings": 24, + "estimated_token_count_total": 3228 + }, + "hash": "sha256:8f29b0f0b56f8c136206211a858cdc5bc27bcd9119eab179a6cd306182d910cb", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-remix", + "title": "Deploy a Basic Contract with Remix IDE", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-remix", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-remix.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic/remix/", + "preview": "This guide demonstrates how to deploy a basic Solidity smart contract to Polkadot Hub using [Remix IDE](https://remix.ethereum.org/){target=\\_blank}, which offers a visual, browser-based environment perfect for rapid prototyping and learning. It requires no local installation and provides an intuitive interface for contract development.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Access Remix", + "anchor": "access-remix" + }, + { + "depth": 2, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 2, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 2978, + "words": 430, + "headings": 6, + "estimated_token_count_total": 738 + }, + "hash": "sha256:0c00544ba0be9c0a6fa0c54bdb38045d64e95af714785b86e57f885a03b4b17a", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-.deploy-basic-pvm", + "title": "Deploy a Basic Contract to Polkadot Hub", + "slug": "smart-contracts-cookbook-smart-contracts-.deploy-basic-pvm", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-erc20-erc20-remix", + "title": "Deploy an ERC-20 to Polkadot Hub", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-erc20-erc20-remix", + "categories": [ + "Basics", + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-erc20-erc20-remix.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-erc20/erc20-remix/", + "preview": "[ERC-20](https://eips.ethereum.org/EIPS/eip-20){target=\\_blank} tokens are fungible tokens commonly used for creating cryptocurrencies, governance tokens, and staking mechanisms. Polkadot Hub enables easy token deployment with Ethereum-compatible smart contracts and tools via the EVM backend.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Create Your Contract", + "anchor": "create-your-contract" + }, + { + "depth": 2, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 2, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 2, + "title": "Interact with Your Contract", + "anchor": "interact-with-your-contract" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 9109, + "words": 1260, + "headings": 7, + "estimated_token_count_total": 2182 + }, + "hash": "sha256:0cb418d465a51230ece5d3a56d64754f979bc6c4ad78f2cc3df537b99739e627", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-erc20", + "title": "Deploy an ERC-20 to Polkadot Hub", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-erc20", + "categories": [ + "Basics", + "dApps", + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-.deploy-basic-pvm.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/.deploy-basic-pvm/", + "preview": "Deploying smart contracts to [Polkadot Hub](/smart-contracts/overview/#smart-contract-development){target=\\_blank} can be accomplished through various tools and environments, each suited to different development workflows. This guide demonstrates how to deploy a basic PolkaVM (PVM) smart contract using four popular approaches: JavaScript with [Ethers.js](https://docs.ethers.org/v6/){target=\\_blank}, [Remix IDE](https://remix.live/){target=\\_blank}, [Hardhat](https://hardhat.org/){target=\\_blank}", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "JavaScript with Ethers.js", + "anchor": "javascript-with-ethersjs" + }, + { + "depth": 3, + "title": "Setup", + "anchor": "setup" + }, + { + "depth": 3, + "title": "Create and Compile Your Contract", + "anchor": "create-and-compile-your-contract" + }, + { + "depth": 3, + "title": "Deploy the Contract", + "anchor": "deploy-the-contract" + }, + { + "depth": 2, + "title": "Remix IDE", + "anchor": "remix-ide" + }, + { + "depth": 3, + "title": "Access Remix", + "anchor": "access-remix" + }, + { + "depth": 3, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 3, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 2, + "title": "Hardhat", + "anchor": "hardhat" + }, + { + "depth": 3, + "title": "Setup", + "anchor": "setup-2" + }, + { + "depth": 3, + "title": "Configure Hardhat", + "anchor": "configure-hardhat" + }, + { + "depth": 3, + "title": "Create Your Contract", + "anchor": "create-your-contract" + }, + { + "depth": 3, + "title": "Compile", + "anchor": "compile-2" + }, + { + "depth": 3, + "title": "Set Up Deployment", + "anchor": "set-up-deployment" + }, + { + "depth": 3, + "title": "Deploy", + "anchor": "deploy-2" + }, + { + "depth": 2, + "title": "Foundry", + "anchor": "foundry" + }, + { + "depth": 3, + "title": "Setup", + "anchor": "setup-3" + }, + { + "depth": 3, + "title": "Configure Foundry", + "anchor": "configure-foundry" + }, + { + "depth": 3, + "title": "Create Your Contract", + "anchor": "create-your-contract-2" + }, + { + "depth": 3, + "title": "Compile", + "anchor": "compile-3" + }, + { + "depth": 3, + "title": "Deploy", + "anchor": "deploy-3" + }, + { + "depth": 2, + "title": "Conclusion", + "anchor": "conclusion" + }, + { + "depth": 3, + "title": "Next Steps", + "anchor": "next-steps" + } + ], + "stats": { + "chars": 13872, + "words": 1640, + "headings": 24, + "estimated_token_count_total": 3228 + }, + "hash": "sha256:296cba75b1d49aefa1b8636ba95ca20c3431b7eb0e93b0658add671ef5801732", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-.foundry", + "title": "Deploy a Basic Contract with Foundry", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-.foundry", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-.foundry.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic/.foundry/", + "preview": "This guide demonstrates how to deploy a basic Solidity smart contract to Polkadot Hub using [Foundry](https://getfoundry.sh/){target=\\_blank}, which offers a fast, modular toolkit written in Rust. It's perfect for developers who prefer command-line interfaces and need high-performance compilation and deployment.", + "outline": [ + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Set Up Your Project", + "anchor": "set-up-your-project" + }, + { + "depth": 2, + "title": "Configure Foundry", + "anchor": "configure-foundry" + }, + { + "depth": 2, + "title": "Create Your Contract", + "anchor": "create-your-contract" + }, + { + "depth": 2, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 2, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 2731, + "words": 355, + "headings": 7, + "estimated_token_count_total": 598 + }, + "hash": "sha256:fdd65f6fe6d109043f11a26f1477e2bbbce1a440dbcb2b191eacfa79a28766e9", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-nft-foundry", + "title": "Deploy an NFT to Polkadot Hub with Foundry", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-nft-foundry", + "categories": [ + "Basics", + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-nft-foundry.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-nft/foundry/", + "preview": "Non-Fungible Tokens (NFTs) represent unique digital assets commonly used for digital art, collectibles, gaming, and identity verification.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Set Up Your Project", + "anchor": "set-up-your-project" + }, + { + "depth": 2, + "title": "Configure Foundry", + "anchor": "configure-foundry" + }, + { + "depth": 2, + "title": "Create Your Contract", + "anchor": "create-your-contract" + }, + { + "depth": 2, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 2, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 3489, + "words": 438, + "headings": 8, + "estimated_token_count_total": 847 + }, + "hash": "sha256:c4b410125946db479b9c262a5132a31bb7730a778501c3a95910ad9d38007cf4", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-nft-hardhat", + "title": "Deploy an NFT to Polkadot Hub with Hardhat", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-nft-hardhat", + "categories": [ + "Basics", + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-nft-hardhat.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-nft/hardhat/", + "preview": "Non-Fungible Tokens (NFTs) represent unique digital assets commonly used for digital art, collectibles, gaming, and identity verification.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Set Up Your Project", + "anchor": "set-up-your-project" + }, + { + "depth": 2, + "title": "Configure Hardhat", + "anchor": "configure-hardhat" + }, + { + "depth": 2, + "title": "Create Your Contract", + "anchor": "create-your-contract" + }, + { + "depth": 2, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 2, + "title": "Set Up Deployment", + "anchor": "set-up-deployment" + }, + { + "depth": 2, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 4745, + "words": 550, + "headings": 9, + "estimated_token_count_total": 1137 + }, + "hash": "sha256:f787f9c66787c53aa5c6fccf30d622b2b617794d1292641ea256e0896d418b28", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-nft-remix", + "title": "Deploy an NFT to Polkadot Hub with Remix", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-nft-remix", + "categories": [ + "Basics", + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-nft-remix.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-nft/remix/", + "preview": "Non-Fungible Tokens (NFTs) represent unique digital assets commonly used for digital art, collectibles, gaming, and identity verification.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Access Remix", + "anchor": "access-remix" + }, + { + "depth": 2, + "title": "Create Your Contract", + "anchor": "create-your-contract" + }, + { + "depth": 2, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 2, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 3754, + "words": 505, + "headings": 7, + "estimated_token_count_total": 928 + }, + "hash": "sha256:12a8debfbc05c5ac0e2c94daa40167adab837dc4e1b2731f5b48ae8bc9bc2c93", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook", + "title": "Smart Contracts Cookbook Index", + "slug": "smart-contracts-cookbook", + "categories": [ + "Basics", + "dApps", + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/", + "preview": "Welcome to the Polkadot smart contracts cookbook index.", + "outline": [ + { + "depth": 2, + "title": "Get Tokens from the Faucet", + "anchor": "get-tokens-from-the-faucet" + }, + { + "depth": 2, + "title": "EVM/PVM Smart Contracts", + "anchor": "evmpvm-smart-contracts" + }, + { + "depth": 2, + "title": "Port Ethereum DApps", + "anchor": "port-ethereum-dapps" + } + ], + "stats": { + "chars": 1586, + "words": 204, + "headings": 3, + "estimated_token_count_total": 406 + }, + "hash": "sha256:ea0d085c376117436a9cf68e786da942cf88993651d4e06550f9ee03d2e810f4", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-hardhat", + "title": "Deploy a Basic Contract with Hardhat", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-hardhat", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-foundry-compile-and-test.md", + "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/foundry/compile-and-test/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-dev-environments-foundry-deploy-a-contract", + "title": "smart-contracts-dev-environments-foundry-deploy-a-contract", + "slug": "smart-contracts-dev-environments-foundry-deploy-a-contract", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-foundry-deploy-a-contract.md", + "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/foundry/deploy-a-contract/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-dev-environments-foundry-get-started", + "title": "Use Foundry with Polkadot Hub", + "slug": "smart-contracts-dev-environments-foundry-get-started", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-foundry-get-started.md", + "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/foundry/get-started/", + "preview": "!!! warning Consider that features like Anvil (Foundry's local blockchain) and `forge test` (for running Solidity tests) are not yet supported in `foundry-polkadot`.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Set Up Your Project", + "anchor": "set-up-your-project" + }, + { + "depth": 2, + "title": "Configure Hardhat", + "anchor": "configure-hardhat" + }, + { + "depth": 2, + "title": "Create Your Contract", + "anchor": "create-your-contract" + }, + { + "depth": 2, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 2, + "title": "Set Up Deployment", + "anchor": "set-up-deployment" + }, + { + "depth": 2, + "title": "Deploy the Contract", + "anchor": "deploy-the-contract" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 4051, + "words": 475, + "headings": 9, + "estimated_token_count_total": 981 + }, + "hash": "sha256:72e41f816f07026d96c803f399c71852aa1151c464e79cec3e1746b282d5eaae", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-basic-remix", + "title": "Deploy a Basic Contract with Remix IDE", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-basic-remix", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic-remix.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-basic/remix/", + "preview": "This guide demonstrates how to deploy a basic Solidity smart contract to Polkadot Hub using [Remix IDE](https://remix.ethereum.org/){target=\\_blank}, which offers a visual, browser-based environment perfect for rapid prototyping and learning. It requires no local installation and provides an intuitive interface for contract development.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Access Remix", + "anchor": "access-remix" + }, + { + "depth": 2, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 2, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 2978, + "words": 430, + "headings": 6, + "estimated_token_count_total": 738 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-erc20-erc20-hardhat", + "title": "Deploy an ERC-20 to Polkadot Hub", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-erc20-erc20-hardhat", + "categories": [ + "Basics", + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-erc20-erc20-hardhat.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-erc20/erc20-hardhat/", + "preview": "[ERC-20](https://eips.ethereum.org/EIPS/eip-20){target=\\_blank} tokens are fungible tokens commonly used for creating cryptocurrencies, governance tokens, and staking mechanisms. Polkadot Hub enables easy token deployment with Ethereum-compatible smart contracts and tools via the EVM backend.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Set Up Your Project", + "anchor": "set-up-your-project" + }, + { + "depth": 2, + "title": "Configure Hardhat", + "anchor": "configure-hardhat" + }, + { + "depth": 2, + "title": "Compile your Contract", + "anchor": "compile-your-contract" + }, + { + "depth": 2, + "title": "Test your Contract", + "anchor": "test-your-contract" + }, + { + "depth": 2, + "title": "Deploy your Contract", + "anchor": "deploy-your-contract" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 8131, + "words": 1205, + "headings": 8, + "estimated_token_count_total": 2156 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-cookbook-smart-contracts-deploy-erc20-erc20-remix", + "title": "Deploy an ERC-20 to Polkadot Hub", + "slug": "smart-contracts-cookbook-smart-contracts-deploy-erc20-erc20-remix", + "categories": [ + "Basics", + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-erc20-erc20-remix.md", + "html_url": "https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-erc20/erc20-remix/", + "preview": "[ERC-20](https://eips.ethereum.org/EIPS/eip-20){target=\\_blank} tokens are fungible tokens commonly used for creating cryptocurrencies, governance tokens, and staking mechanisms. Polkadot Hub enables easy token deployment with Ethereum-compatible smart contracts and tools via the EVM backend.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Create Your Contract", + "anchor": "create-your-contract" + }, + { + "depth": 2, + "title": "Compile", + "anchor": "compile" + }, + { + "depth": 2, + "title": "Deploy", + "anchor": "deploy" + }, + { + "depth": 2, + "title": "Interact with Your Contract", + "anchor": "interact-with-your-contract" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 9121, + "words": 1261, + "headings": 7, + "estimated_token_count_total": 2183 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-dev-environments-hardhat-compile-and-test", + "title": "smart-contracts-dev-environments-hardhat-compile-and-test", + "slug": "smart-contracts-dev-environments-hardhat-compile-and-test", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-compile-and-test.md", + "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/hardhat/compile-and-test/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-dev-environments-hardhat-deploy-a-contract", + "title": "smart-contracts-dev-environments-hardhat-deploy-a-contract", + "slug": "smart-contracts-dev-environments-hardhat-deploy-a-contract", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-deploy-a-contract.md", + "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/hardhat/deploy-a-contract/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-dev-environments-hardhat-get-started", + "title": "Use Hardhat with Polkadot Hub", + "slug": "smart-contracts-dev-environments-hardhat-get-started", + "categories": [ + "Smart Contracts", + "Tooling" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-get-started.md", + "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/hardhat/get-started/", + "preview": "Building on Polkadot Hub often starts with a Solidity codebase, and Hardhat keeps that workflow familiar while giving teams repeatable scripts, rich debugging, and CLI automation suited to the network's Ethereum-compatible execution layer.", + "outline": [ + { + "depth": 2, + "title": "Overview", + "anchor": "overview" + }, + { + "depth": 2, + "title": "Hardhat Workflow", + "anchor": "hardhat-workflow" + }, + { + "depth": 2, + "title": "Project Anatomy", + "anchor": "project-anatomy" + }, + { + "depth": 2, + "title": "Core Functionalities", + "anchor": "core-functionalities" + }, + { + "depth": 3, + "title": "Project Setup", + "anchor": "project-setup" + }, + { + "depth": 3, + "title": "Contract Compilation", + "anchor": "contract-compilation" + }, + { + "depth": 3, + "title": "Testing Environment", + "anchor": "testing-environment" + }, + { + "depth": 3, + "title": "Deployment", + "anchor": "deployment" + }, + { + "depth": 3, + "title": "Contract Interaction", + "anchor": "contract-interaction" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 5817, + "words": 730, + "headings": 10, + "estimated_token_count_total": 1282 + }, + "hash": "sha256:95352e48926dd24d6363218dfd703840871be8822bc522f45bf343436612eff4", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-dev-environments-hardhat-install-and-config", + "title": "smart-contracts-dev-environments-hardhat-install-and-config", + "slug": "smart-contracts-dev-environments-hardhat-install-and-config", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-install-and-config.md", + "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/hardhat/install-and-config/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-dev-environments-hardhat-troubleshooting", + "title": "smart-contracts-dev-environments-hardhat-troubleshooting", + "slug": "smart-contracts-dev-environments-hardhat-troubleshooting", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-troubleshooting.md", + "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/hardhat/troubleshooting/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-dev-environments-hardhat-verify-a-contract", + "title": "smart-contracts-dev-environments-hardhat-verify-a-contract", + "slug": "smart-contracts-dev-environments-hardhat-verify-a-contract", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-verify-a-contract.md", + "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/hardhat/verify-a-contract/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-dev-environments-local-dev-node", + "title": "Local Development Node", + "slug": "smart-contracts-dev-environments-local-dev-node", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-local-dev-node.md", + "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/local-dev-node/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Install the Revive Dev Node and ETH-RPC Adapter", + "anchor": "install-the-revive-dev-node-and-eth-rpc-adapter" + }, + { + "depth": 2, + "title": "Run the Local Node", + "anchor": "run-the-local-node" + } + ], + "stats": { + "chars": 9052, + "words": 1431, + "headings": 4, + "estimated_token_count_total": 2428 + }, + "hash": "sha256:e3d8b84cb2cee7010978582998b2269296a042aec53fb016388690ab6adf355e", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-dev-environments-remix-deploy-a-contract", + "title": "smart-contracts-dev-environments-remix-deploy-a-contract", + "slug": "smart-contracts-dev-environments-remix-deploy-a-contract", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-remix-deploy-a-contract.md", + "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/remix/deploy-a-contract/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-dev-environments-remix-get-started", + "title": "Use the Polkadot Remix IDE", + "slug": "smart-contracts-dev-environments-remix-get-started", + "categories": [ + "Smart Contracts", + "Tooling" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-remix-get-started.md", + "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/remix/get-started/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**.
- :octicons-code-16:{ .lg .middle } __Deploy NFTs Using Remix IDE__", + "outline": [ + { + "depth": 2, + "title": "Overview", + "anchor": "overview" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Accessing Remix IDE", + "anchor": "accessing-remix-ide" + }, + { + "depth": 2, + "title": "Creating a New Contract", + "anchor": "creating-a-new-contract" + }, + { + "depth": 2, + "title": "Compiling Your Contract", + "anchor": "compiling-your-contract" + }, + { + "depth": 2, + "title": "Deploying Contracts", + "anchor": "deploying-contracts" + }, + { + "depth": 2, + "title": "Interacting with Contracts", + "anchor": "interacting-with-contracts" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 6664, + "words": 905, + "headings": 8, + "estimated_token_count_total": 1347 + }, + "hash": "sha256:7589fa1dbdbf5748892ab6d42fc784d833f33e254bd3f95ee58424effcd38323", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-dev-environments-remix-troubleshooting", + "title": "smart-contracts-dev-environments-remix-troubleshooting", + "slug": "smart-contracts-dev-environments-remix-troubleshooting", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-remix-troubleshooting.md", + "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/remix/troubleshooting/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-dev-environments-remix-verify-a-contract", + "title": "smart-contracts-dev-environments-remix-verify-a-contract", + "slug": "smart-contracts-dev-environments-remix-verify-a-contract", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-remix-verify-a-contract.md", + "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/remix/verify-a-contract/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-explorers", + "title": "Block Explorers", + "slug": "smart-contracts-explorers", + "categories": [ + "Smart Contracts", + "Tooling" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-explorers.md", + "html_url": "https://docs.polkadot.com/smart-contracts/explorers/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Core Functionality", + "anchor": "core-functionality" + }, + { + "depth": 2, + "title": "Available Block Explorers", + "anchor": "available-block-explorers" + }, + { + "depth": 3, + "title": "BlockScout", + "anchor": "blockscout" + } + ], + "stats": { + "chars": 1793, + "words": 223, + "headings": 4, + "estimated_token_count_total": 309 + }, + "hash": "sha256:93e8a3043d65583e3d66f8f5f0ed6f4ef89a908ef85da2b6ca906a1100b7dded", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-faucet", + "title": "Faucet", + "slug": "smart-contracts-faucet", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-faucet.md", + "html_url": "https://docs.polkadot.com/smart-contracts/faucet/", + "preview": "Test tokens allow you to experiment with smart contracts, test transactions, and validate your dApp functionality without using real cryptocurrency.", + "outline": [ + { + "depth": 2, + "title": "Get Test Tokens", + "anchor": "get-test-tokens" + }, + { + "depth": 2, + "title": "Things to Consider", + "anchor": "things-to-consider" + }, + { + "depth": 2, + "title": "Using Your Test Tokens", + "anchor": "using-your-test-tokens" + } + ], + "stats": { + "chars": 1890, + "words": 279, + "headings": 3, + "estimated_token_count_total": 313 + }, + "hash": "sha256:c609bc98cba5efa2d2a808548cf93ad9d0a06455b35a8fd9f534daf52824f506", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-for-eth-devs-accounts", + "title": "Accounts in Asset Hub Smart Contracts", + "slug": "smart-contracts-for-eth-devs-accounts", + "categories": [ + "Basics", + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-for-eth-devs-accounts.md", + "html_url": "https://docs.polkadot.com/smart-contracts/for-eth-devs/accounts/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Address Types and Mappings", + "anchor": "address-types-and-mappings" + }, + { + "depth": 3, + "title": "Ethereum to Polkadot Mapping", + "anchor": "ethereum-to-polkadot-mapping" + }, + { + "depth": 3, + "title": "Polkadot to Ethereum Mapping", + "anchor": "polkadot-to-ethereum-mapping" + }, + { + "depth": 3, + "title": "Account Mapping for Native Polkadot Accounts", + "anchor": "account-mapping-for-native-polkadot-accounts" + }, + { + "depth": 2, + "title": "Account Registration", + "anchor": "account-registration" + }, + { + "depth": 2, + "title": "Fallback Accounts", + "anchor": "fallback-accounts" + }, + { + "depth": 2, + "title": "Contract Address Generation", + "anchor": "contract-address-generation" + }, + { + "depth": 2, + "title": "Security Considerations", + "anchor": "security-considerations" + } + ], + "stats": { + "chars": 8521, + "words": 1138, + "headings": 9, + "estimated_token_count_total": 1816 + }, + "hash": "sha256:f50cd1177dd4aff8eb031d6f21cb640f8187a7f2dd0edcaef5c73354a378e44d", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-for-eth-devs-blocks-transactions-fees", + "title": "Transactions and Fees on Asset Hub", + "slug": "smart-contracts-for-eth-devs-blocks-transactions-fees", + "categories": [ + "Basics", + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-for-eth-devs-blocks-transactions-fees.md", + "html_url": "https://docs.polkadot.com/smart-contracts/for-eth-devs/blocks-transactions-fees/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Smart Contract Blocks", + "anchor": "smart-contract-blocks" + }, + { + "depth": 2, + "title": "Smart Contract Transactions", + "anchor": "smart-contract-transactions" + }, + { + "depth": 3, + "title": "EVM Transaction Types", + "anchor": "evm-transaction-types" + }, + { + "depth": 2, + "title": "Fees and Gas", + "anchor": "fees-and-gas" + }, + { + "depth": 3, + "title": "Gas Model Overview", + "anchor": "gas-model-overview" + }, + { + "depth": 3, + "title": "Fee Components", + "anchor": "fee-components" + }, + { + "depth": 3, + "title": "Gas Calculation and Conversion", + "anchor": "gas-calculation-and-conversion" + } + ], + "stats": { + "chars": 6366, + "words": 791, + "headings": 8, + "estimated_token_count_total": 1182 + }, + "hash": "sha256:9542f40acae725e628f4c3155ad1e7e0e18b2eb518484856ad439a1d9f86d1f3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-for-eth-devs-contract-deployment", + "title": "Contract Deployment", + "slug": "smart-contracts-for-eth-devs-contract-deployment", + "categories": [ + "Smart Contracts", + "Basics" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-for-eth-devs-contract-deployment.md", + "html_url": "https://docs.polkadot.com/smart-contracts/for-eth-devs/contract-deployment/", + "preview": "Polkadot's smart contract platform supports two distinct virtual machine backends: Rust Ethereum Virtual Machine (REVM) and PolkaVM. Each backend has its own deployment characteristics and optimization strategies. REVM provides full Ethereum compatibility with familiar single-step deployment, while the RISC-V-based PolkaVM uses a more structured two-step approach optimized for its architecture. Understanding these differences ensures smooth deployment regardless of which backend you choose for y", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "REVM Deployment", + "anchor": "revm-deployment" + }, + { + "depth": 2, + "title": "PolkaVM Deployment", + "anchor": "polkavm-deployment" + }, + { + "depth": 3, + "title": "Standard Contract Deployment", + "anchor": "standard-contract-deployment" + }, + { + "depth": 3, + "title": "Two-Step Deployment Model", + "anchor": "two-step-deployment-model" + }, + { + "depth": 3, + "title": "Factory Pattern Considerations", + "anchor": "factory-pattern-considerations" + }, + { + "depth": 3, + "title": "Migration Strategy for Factory Contracts", + "anchor": "migration-strategy-for-factory-contracts" + }, + { + "depth": 3, + "title": "Architecture-Specific Limitations", + "anchor": "architecture-specific-limitations" + }, + { + "depth": 3, + "title": "On-Chain Constructors", + "anchor": "on-chain-constructors" + }, + { + "depth": 2, + "title": "Gas Estimation vs Actual Consumption", + "anchor": "gas-estimation-vs-actual-consumption" + }, + { + "depth": 2, + "title": "Deployment Comparison", + "anchor": "deployment-comparison" + }, + { + "depth": 2, + "title": "Conclusion", + "anchor": "conclusion" + } + ], + "stats": { + "chars": 5999, + "words": 766, + "headings": 12, + "estimated_token_count_total": 1133 + }, + "hash": "sha256:0792e3956242eb8e08ab82e2d73964c381074cc8b1ea46f396d136856fa6cc07", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-for-eth-devs-dual-vm-stack", + "title": "Dual Virtual Machine Stack", + "slug": "smart-contracts-for-eth-devs-dual-vm-stack", + "categories": [ + "Basics", + "Polkadot Protocol" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-for-eth-devs-dual-vm-stack.md", + "html_url": "https://docs.polkadot.com/smart-contracts/for-eth-devs/dual-vm-stack/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Migrate from EVM", + "anchor": "migrate-from-evm" + }, + { + "depth": 2, + "title": "Upgrade to PolkaVM", + "anchor": "upgrade-to-polkavm" + }, + { + "depth": 2, + "title": "Architecture", + "anchor": "architecture" + }, + { + "depth": 3, + "title": "Revive Pallet", + "anchor": "revive-pallet" + }, + { + "depth": 3, + "title": "PolkaVM Design Fundamentals", + "anchor": "polkavm-design-fundamentals" + }, + { + "depth": 2, + "title": "Where To Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 5383, + "words": 702, + "headings": 7, + "estimated_token_count_total": 986 + }, + "hash": "sha256:2d918017faecf489ec786f34de6cd4366a86e9f1cecfbb7722cc03079e6b64ea", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-for-eth-devs-gas-model", + "title": "Gas Model on the Polkadot Hub", + "slug": "smart-contracts-for-eth-devs-gas-model", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-for-eth-devs-gas-model.md", + "html_url": "https://docs.polkadot.com/smart-contracts/for-eth-devs/gas-model/", + "preview": "The Polkadot Hub implements a gas model that bridges Ethereum's familiar gas concept with Polkadot's more sophisticated resource metering system. This page explains how gas works in the Polkadot Hub and what developers need to know when building smart contracts.", + "outline": [ + { + "depth": 2, + "title": "Overview", + "anchor": "overview" + }, + { + "depth": 2, + "title": "Understanding Resources in the Polkadot Hub", + "anchor": "understanding-resources-in-the-polkadot-hub" + }, + { + "depth": 2, + "title": "Gas vs Weight", + "anchor": "gas-vs-weight" + }, + { + "depth": 2, + "title": "How Gas Estimation Works", + "anchor": "how-gas-estimation-works" + }, + { + "depth": 2, + "title": "Dynamic Gas Pricing", + "anchor": "dynamic-gas-pricing" + }, + { + "depth": 2, + "title": "Transaction Execution Flow", + "anchor": "transaction-execution-flow" + }, + { + "depth": 2, + "title": "Conclusion", + "anchor": "conclusion" + } + ], + "stats": { + "chars": 5234, + "words": 751, + "headings": 7, + "estimated_token_count_total": 1046 + }, + "hash": "sha256:dd29fab6e3c00d720b10effa4e50373a6fe9ab4b7bfd3aea892c7fa9c84318a2", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-for-eth-devs-json-rpc-apis", + "title": "JSON-RPC APIs", + "slug": "smart-contracts-for-eth-devs-json-rpc-apis", + "categories": [ + "Reference" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-for-eth-devs-json-rpc-apis.md", + "html_url": "https://docs.polkadot.com/smart-contracts/for-eth-devs/json-rpc-apis/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Available Methods", + "anchor": "available-methods" + }, + { + "depth": 3, + "title": "eth_accounts", + "anchor": "eth_accounts" + }, + { + "depth": 3, + "title": "eth_blockNumber", + "anchor": "eth_blocknumber" + }, + { + "depth": 3, + "title": "eth_call", + "anchor": "eth_call" + }, + { + "depth": 3, + "title": "eth_chainId", + "anchor": "eth_chainid" + }, + { + "depth": 3, + "title": "eth_estimateGas", + "anchor": "eth_estimategas" + }, + { + "depth": 3, + "title": "eth_gasPrice", + "anchor": "eth_gasprice" + }, + { + "depth": 3, + "title": "eth_getBalance", + "anchor": "eth_getbalance" + }, + { + "depth": 3, + "title": "eth_getBlockByHash", + "anchor": "eth_getblockbyhash" + }, + { + "depth": 3, + "title": "eth_getBlockByNumber", + "anchor": "eth_getblockbynumber" + }, + { + "depth": 3, + "title": "eth_getBlockTransactionCountByNumber", + "anchor": "eth_getblocktransactioncountbynumber" + }, + { + "depth": 3, + "title": "eth_getBlockTransactionCountByHash", + "anchor": "eth_getblocktransactioncountbyhash" + }, + { + "depth": 3, + "title": "eth_getCode", + "anchor": "eth_getcode" + }, + { + "depth": 3, + "title": "eth_getLogs", + "anchor": "eth_getlogs" + }, + { + "depth": 3, + "title": "eth_getStorageAt", + "anchor": "eth_getstorageat" + }, + { + "depth": 3, + "title": "eth_getTransactionCount", + "anchor": "eth_gettransactioncount" + }, + { + "depth": 3, + "title": "eth_getTransactionByHash", + "anchor": "eth_gettransactionbyhash" + }, + { + "depth": 3, + "title": "eth_getTransactionByBlockNumberAndIndex", + "anchor": "eth_gettransactionbyblocknumberandindex" + }, + { + "depth": 3, + "title": "eth_getTransactionByBlockHashAndIndex", + "anchor": "eth_gettransactionbyblockhashandindex" + }, + { + "depth": 3, + "title": "eth_getTransactionReceipt", + "anchor": "eth_gettransactionreceipt" + }, + { + "depth": 3, + "title": "eth_maxPriorityFeePerGas", + "anchor": "eth_maxpriorityfeepergas" + }, + { + "depth": 3, + "title": "eth_sendRawTransaction", + "anchor": "eth_sendrawtransaction" + }, + { + "depth": 3, + "title": "eth_sendTransaction", + "anchor": "eth_sendtransaction" + }, + { + "depth": 3, + "title": "eth_syncing", + "anchor": "eth_syncing" + }, + { + "depth": 3, + "title": "net_listening", + "anchor": "net_listening" + }, + { + "depth": 3, + "title": "net_peerCount", + "anchor": "net_peercount" + }, + { + "depth": 3, + "title": "net_version", + "anchor": "net_version" + }, + { + "depth": 3, + "title": "system_health", + "anchor": "system_health" + }, + { + "depth": 3, + "title": "web3_clientVersion", + "anchor": "web3_clientversion" + }, + { + "depth": 3, + "title": "debug_traceBlockByNumber", + "anchor": "debug_traceblockbynumber" + }, + { + "depth": 3, + "title": "debug_traceTransaction", + "anchor": "debug_tracetransaction" + }, + { + "depth": 3, + "title": "debug_traceCall", + "anchor": "debug_tracecall" + }, + { + "depth": 2, + "title": "Response Format", + "anchor": "response-format" + }, + { + "depth": 2, + "title": "Error Handling", + "anchor": "error-handling" + } + ], + "stats": { + "chars": 31444, + "words": 3848, + "headings": 35, + "estimated_token_count_total": 9562 + }, + "hash": "sha256:1fb7a20bc4a799a771954720428029419ec73afa640e589590c43dd041a7e307", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-for-eth-devs-migration", + "title": "Migration FAQs and Considerations", + "slug": "smart-contracts-for-eth-devs-migration", + "categories": [ + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-for-eth-devs-migration.md", + "html_url": "https://docs.polkadot.com/smart-contracts/for-eth-devs/migration/", + "preview": "This guide helps Ethereum developers migrate their smart contracts to Polkadot Hub. Most contracts work without modifications on the REVM backend, while the PolkaVM backend offers enhanced performance with minimal adaptation for standard patterns.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Migration Considerations", + "anchor": "migration-considerations" + }, + { + "depth": 2, + "title": "Migration Checklist", + "anchor": "migration-checklist" + }, + { + "depth": 2, + "title": "Migration FAQs", + "anchor": "migration-faqs" + }, + { + "depth": 3, + "title": "Which backend should I choose?", + "anchor": "which-backend-should-i-choose" + }, + { + "depth": 3, + "title": "Do I need to rewrite my Solidity code?", + "anchor": "do-i-need-to-rewrite-my-solidity-code" + }, + { + "depth": 3, + "title": "What about factory contracts?", + "anchor": "what-about-factory-contracts" + }, + { + "depth": 3, + "title": "How do gas costs compare?", + "anchor": "how-do-gas-costs-compare" + }, + { + "depth": 3, + "title": "Which Solidity features are not supported?", + "anchor": "which-solidity-features-are-not-supported" + }, + { + "depth": 3, + "title": "How do I handle the existential deposit?", + "anchor": "how-do-i-handle-the-existential-deposit" + }, + { + "depth": 3, + "title": "Can I use my existing development tools?", + "anchor": "can-i-use-my-existing-development-tools" + }, + { + "depth": 2, + "title": "Conclusion", + "anchor": "conclusion" + } + ], + "stats": { + "chars": 6247, + "words": 803, + "headings": 12, + "estimated_token_count_total": 1322 + }, + "hash": "sha256:bf9b21750158389c387b92f2165947e5f5cff752f5d163680ee37493710e81d7", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-get-started", + "title": "Get Started with Smart Contracts", + "slug": "smart-contracts-get-started", + "categories": [ + "Basics", + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-get-started.md", + "html_url": "https://docs.polkadot.com/smart-contracts/get-started/", + "preview": "This resource provides quick-starts for building smart contracts on Polkadot Hub. Use the tables below to jump directly to the tools and workflows you need.", + "outline": [ + { + "depth": 2, + "title": "Quick Starts", + "anchor": "quick-starts" + }, + { + "depth": 2, + "title": "Build and Test Locally", + "anchor": "build-and-test-locally" + }, + { + "depth": 2, + "title": "Ethereum Developer Resources", + "anchor": "ethereum-developer-resources" + }, + { + "depth": 2, + "title": "Cookbook: Hands‑on Tutorials", + "anchor": "cookbook-handson-tutorials" + }, + { + "depth": 2, + "title": "Libraries", + "anchor": "libraries" + }, + { + "depth": 2, + "title": "Integrations", + "anchor": "integrations" + }, + { + "depth": 2, + "title": "Precompiles", + "anchor": "precompiles" + } + ], + "stats": { + "chars": 10103, + "words": 937, + "headings": 7, + "estimated_token_count_total": 2888 + }, + "hash": "sha256:224a9f69d4613a5f1afdbc1f05379add8321fe159e32c71db003bbe08ff8e976", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-integrations-indexers", + "title": "smart-contracts-integrations-indexers", + "slug": "smart-contracts-integrations-indexers", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-integrations-indexers.md", + "html_url": "https://docs.polkadot.com/smart-contracts/integrations/indexers/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-integrations-oracles", + "title": "smart-contracts-integrations-oracles", + "slug": "smart-contracts-integrations-oracles", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-integrations-oracles.md", + "html_url": "https://docs.polkadot.com/smart-contracts/integrations/oracles/", + "preview": "TODO", + "outline": [], + "stats": { + "chars": 5, + "words": 1, + "headings": 0, + "estimated_token_count_total": 0 + }, + "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-integrations-wallets", + "title": "Wallets for Polkadot Hub", + "slug": "smart-contracts-integrations-wallets", + "categories": [ + "Smart Contracts", + "Tooling" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-integrations-wallets.md", + "html_url": "https://docs.polkadot.com/smart-contracts/integrations/wallets/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Connect Your Wallet", + "anchor": "connect-your-wallet" + }, + { + "depth": 3, + "title": "MetaMask", + "anchor": "metamask" + }, + { + "depth": 3, + "title": "SubWallet", + "anchor": "subwallet" + }, + { + "depth": 3, + "title": "Talisman", + "anchor": "talisman" + }, + { + "depth": 2, + "title": "Conclusion", + "anchor": "conclusion" + } + ], + "stats": { + "chars": 7340, + "words": 1041, + "headings": 6, + "estimated_token_count_total": 1627 + }, + "hash": "sha256:65809486f62f60c6a6ac8109f9f027361683c23f639991a045ec5c057b665026", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-libraries-ethers-js", + "title": "Deploy Contracts to Polkadot Hub with Ethers.js", + "slug": "smart-contracts-libraries-ethers-js", + "categories": [ + "Smart Contracts", + "Tooling" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-libraries-ethers-js.md", + "html_url": "https://docs.polkadot.com/smart-contracts/libraries/ethers-js/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Project Structure", + "anchor": "project-structure" + }, + { + "depth": 2, + "title": "Set Up the Project", + "anchor": "set-up-the-project" + }, + { + "depth": 2, + "title": "Install Dependencies", + "anchor": "install-dependencies" + }, + { + "depth": 2, + "title": "Set Up the Ethers.js Provider", + "anchor": "set-up-the-ethersjs-provider" + }, + { + "depth": 2, + "title": "Compile Contracts", + "anchor": "compile-contracts" + }, + { + "depth": 3, + "title": "Install the Revive Library", + "anchor": "install-the-revive-library" + }, + { + "depth": 3, + "title": "Sample Storage Smart Contract", + "anchor": "sample-storage-smart-contract" + }, + { + "depth": 3, + "title": "Compile the Smart Contract", + "anchor": "compile-the-smart-contract" + }, + { + "depth": 2, + "title": "Deploy the Compiled Contract", + "anchor": "deploy-the-compiled-contract" + }, + { + "depth": 2, + "title": "Interact with the Contract", + "anchor": "interact-with-the-contract" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 20457, + "words": 2333, + "headings": 13, + "estimated_token_count_total": 4474 + }, + "hash": "sha256:c74a28d8d62369591c5734535136508db3d1f7380e486fd214f98d433cafd6e7", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-libraries-viem", + "title": "viem for Polkadot Hub Smart Contracts", + "slug": "smart-contracts-libraries-viem", + "categories": [ + "Smart Contracts", + "Tooling" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-libraries-viem.md", + "html_url": "https://docs.polkadot.com/smart-contracts/libraries/viem/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Project Structure", + "anchor": "project-structure" + }, + { + "depth": 2, + "title": "Set Up the Project", + "anchor": "set-up-the-project" + }, + { + "depth": 2, + "title": "Install Dependencies", + "anchor": "install-dependencies" + }, + { + "depth": 2, + "title": "Initialize Project", + "anchor": "initialize-project" + }, + { + "depth": 2, + "title": "Set Up the Chain Configuration", + "anchor": "set-up-the-chain-configuration" + }, + { + "depth": 2, + "title": "Set Up the viem Client", + "anchor": "set-up-the-viem-client" + }, + { + "depth": 2, + "title": "Set Up a Wallet", + "anchor": "set-up-a-wallet" + }, + { + "depth": 2, + "title": "Sample Smart Contract", + "anchor": "sample-smart-contract" + }, + { + "depth": 2, + "title": "Compile the Contract", + "anchor": "compile-the-contract" + }, + { + "depth": 2, + "title": "Deploy the Contract", + "anchor": "deploy-the-contract" + }, + { + "depth": 2, + "title": "Interact with the Contract", + "anchor": "interact-with-the-contract" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 16600, + "words": 1940, + "headings": 14, + "estimated_token_count_total": 3891 + }, + "hash": "sha256:e27657e4e4a14fe86f424b96631946ec36fb90d277e6010b6cbd64c4769aba8a", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-libraries-wagmi", + "title": "Wagmi for Polkadot Hub Smart Contracts", + "slug": "smart-contracts-libraries-wagmi", + "categories": [ + "Smart Contracts", + "Tooling" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-libraries-wagmi.md", + "html_url": "https://docs.polkadot.com/smart-contracts/libraries/wagmi/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Set Up the Project", + "anchor": "set-up-the-project" + }, + { + "depth": 2, + "title": "Install Dependencies", + "anchor": "install-dependencies" + }, + { + "depth": 2, + "title": "Configure Wagmi for Polkadot Hub", + "anchor": "configure-wagmi-for-polkadot-hub" + }, + { + "depth": 2, + "title": "Set Up the Wagmi Provider", + "anchor": "set-up-the-wagmi-provider" + }, + { + "depth": 2, + "title": "Connect a Wallet", + "anchor": "connect-a-wallet" + }, + { + "depth": 2, + "title": "Fetch Blockchain Data", + "anchor": "fetch-blockchain-data" + }, + { + "depth": 2, + "title": "Interact with Deployed Contract", + "anchor": "interact-with-deployed-contract" + }, + { + "depth": 2, + "title": "Integrate Components", + "anchor": "integrate-components" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 13604, + "words": 1515, + "headings": 10, + "estimated_token_count_total": 3250 + }, + "hash": "sha256:bc771f912627fa09cad64adab1bc81c052f650d6c5a3b4f0c91883a98f6628da", + "token_estimator": "heuristic-v1" + }, + { + "id": "smart-contracts-libraries-web3-js", + "title": "Web3.js", + "slug": "smart-contracts-libraries-web3-js", + "categories": [ + "Smart Contracts", + "Tooling" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-libraries-web3-js.md", + "html_url": "https://docs.polkadot.com/smart-contracts/libraries/web3-js/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. !!! warning Web3.js has been [sunset](https://blog.chainsafe.io/web3-js-sunset/){target=\\_blank}. You can find guides on using [Ethers.js](/smart-contracts/libraries/ethers-js/){target=\\_blank} and [viem](/smart-contracts/libraries/viem/){target=\\_blank} in the Libraries section.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Project Structure", + "anchor": "project-structure" + }, + { + "depth": 2, + "title": "Set Up the Project", + "anchor": "set-up-the-project" + }, + { + "depth": 2, + "title": "Install Dependencies", + "anchor": "install-dependencies" + }, + { + "depth": 2, + "title": "Set Up the Web3 Provider", + "anchor": "set-up-the-web3-provider" + }, + { + "depth": 2, + "title": "Compile Contracts", + "anchor": "compile-contracts" + }, + { + "depth": 2, + "title": "Contract Deployment", + "anchor": "contract-deployment" + }, + { + "depth": 2, + "title": "Interact with the Contract", + "anchor": "interact-with-the-contract" + }, + { + "depth": 2, "title": "Where to Go Next", "anchor": "where-to-go-next" } ], "stats": { - "chars": 18514, - "words": 2477, - "headings": 11, - "estimated_token_count_total": 4190 + "chars": 13266, + "words": 1579, + "headings": 10, + "estimated_token_count_total": 3035 }, - "hash": "sha256:1729ad83ad381a90752540644d400c60add3555e5da296ab455442be81d32f8c", + "hash": "sha256:f0d36333d0d3afff7f6374a61d0f6d1fb878c9ef4c4e4c24447745661dbe59d0", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-dev-environments-hardhat-install-and-config", - "title": "smart-contracts-dev-environments-hardhat-install-and-config", - "slug": "smart-contracts-dev-environments-hardhat-install-and-config", + "id": "smart-contracts-libraries-web3-py", + "title": "Web3.py", + "slug": "smart-contracts-libraries-web3-py", "categories": [ - "Uncategorized" + "Smart Contracts", + "Tooling" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-libraries-web3-py.md", + "html_url": "https://docs.polkadot.com/smart-contracts/libraries/web3-py/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Set Up the Project", + "anchor": "set-up-the-project" + }, + { + "depth": 2, + "title": "Set Up the Web3 Provider", + "anchor": "set-up-the-web3-provider" + }, + { + "depth": 2, + "title": "Contract Deployment", + "anchor": "contract-deployment" + }, + { + "depth": 2, + "title": "Interact with the Contract", + "anchor": "interact-with-the-contract" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-install-and-config.md", - "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/hardhat/install-and-config/", - "preview": "TODO", - "outline": [], "stats": { - "chars": 5, - "words": 1, - "headings": 0, - "estimated_token_count_total": 0 + "chars": 11627, + "words": 1333, + "headings": 6, + "estimated_token_count_total": 2509 }, - "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "hash": "sha256:205892e350168b3d0da7ccc280c67c3217ad1e45e87a53d124fa1dd69661aa5e", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-dev-environments-hardhat-troubleshooting", - "title": "smart-contracts-dev-environments-hardhat-troubleshooting", - "slug": "smart-contracts-dev-environments-hardhat-troubleshooting", + "id": "smart-contracts-overview", + "title": "Smart Contracts Overview", + "slug": "smart-contracts-overview", "categories": [ - "Uncategorized" + "Basics", + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-overview.md", + "html_url": "https://docs.polkadot.com/smart-contracts/overview/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "Native Smart Contracts", + "anchor": "native-smart-contracts" + }, + { + "depth": 3, + "title": "Introduction", + "anchor": "introduction-2" + }, + { + "depth": 3, + "title": "Smart Contract Development", + "anchor": "smart-contract-development" + }, + { + "depth": 3, + "title": "Technical Architecture", + "anchor": "technical-architecture" + }, + { + "depth": 3, + "title": "Development Tools and Resources", + "anchor": "development-tools-and-resources" + }, + { + "depth": 3, + "title": "Cross-Chain Capabilities", + "anchor": "cross-chain-capabilities" + }, + { + "depth": 3, + "title": "Use Cases", + "anchor": "use-cases" + }, + { + "depth": 2, + "title": "Other Smart Contract Environments", + "anchor": "other-smart-contract-environments" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-troubleshooting.md", - "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/hardhat/troubleshooting/", - "preview": "TODO", - "outline": [], "stats": { - "chars": 5, - "words": 1, - "headings": 0, - "estimated_token_count_total": 0 + "chars": 6305, + "words": 804, + "headings": 10, + "estimated_token_count_total": 1122 }, - "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "hash": "sha256:ee87115c828928c82937de26f5f938cecd4c3bb1225fdb61627e8092e6ea5951", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-dev-environments-hardhat-verify-a-contract", - "title": "smart-contracts-dev-environments-hardhat-verify-a-contract", - "slug": "smart-contracts-dev-environments-hardhat-verify-a-contract", + "id": "smart-contracts-precompiles-eth-native", + "title": "Ethereum-Native Precompiles", + "slug": "smart-contracts-precompiles-eth-native", "categories": [ - "Uncategorized" + "Smart Contracts" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-precompiles-eth-native.md", + "html_url": "https://docs.polkadot.com/smart-contracts/precompiles/eth-native/", + "preview": "Ethereum-native precompiles are special contract implementations that provide essential cryptographic and utility functions at the runtime level. These precompiles are available at predefined addresses and offer optimized, native implementations of commonly used operations that would be computationally expensive or impractical to implement in pure contract code.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "How to Use Precompiles", + "anchor": "how-to-use-precompiles" + }, + { + "depth": 2, + "title": "Standard Precompiles in Polkadot Hub", + "anchor": "standard-precompiles-in-polkadot-hub" + }, + { + "depth": 2, + "title": "Conclusion", + "anchor": "conclusion" + } ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-verify-a-contract.md", - "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/hardhat/verify-a-contract/", - "preview": "TODO", - "outline": [], "stats": { - "chars": 5, - "words": 1, - "headings": 0, - "estimated_token_count_total": 0 + "chars": 5232, + "words": 532, + "headings": 4, + "estimated_token_count_total": 1192 }, - "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "hash": "sha256:f17db5daca8feae70ce428e03a5a4870ef87dfc8571b07376327cd80d057b759", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-dev-environments-local-dev-node", - "title": "Local Development Node", - "slug": "smart-contracts-dev-environments-local-dev-node", + "id": "smart-contracts-precompiles-xcm", + "title": "Interact with the XCM Precompile", + "slug": "smart-contracts-precompiles-xcm", "categories": [ "Smart Contracts" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-local-dev-node.md", - "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/local-dev-node/", - "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-precompiles-xcm.md", + "html_url": "https://docs.polkadot.com/smart-contracts/precompiles/xcm/", + "preview": "The [XCM (Cross-Consensus Message)](/parachains/interoperability/get-started/){target=\\_blank} precompile enables Polkadot Hub developers to access XCM functionality directly from their smart contracts using a Solidity interface.", "outline": [ { "depth": 2, @@ -7494,65 +13407,105 @@ }, { "depth": 2, - "title": "Prerequisites", - "anchor": "prerequisites" + "title": "Precompile Interface", + "anchor": "precompile-interface" }, { "depth": 2, - "title": "Install the Revive Dev Node and ETH-RPC Adapter", - "anchor": "install-the-revive-dev-node-and-eth-rpc-adapter" + "title": "Interact with the XCM Precompile", + "anchor": "interact-with-the-xcm-precompile" + }, + { + "depth": 3, + "title": "Weigh a Message", + "anchor": "weigh-a-message" + }, + { + "depth": 3, + "title": "Execute a Message", + "anchor": "execute-a-message" + }, + { + "depth": 3, + "title": "Send a Message", + "anchor": "send-a-message" }, { "depth": 2, - "title": "Run the Local Node", - "anchor": "run-the-local-node" + "title": "Cross Contract Calls", + "anchor": "cross-contract-calls" + }, + { + "depth": 2, + "title": "Conclusion", + "anchor": "conclusion" + }, + { + "depth": 2, + "title": "Next Steps", + "anchor": "next-steps" } ], "stats": { - "chars": 9052, - "words": 1431, - "headings": 4, - "estimated_token_count_total": 2428 + "chars": 10705, + "words": 1436, + "headings": 9, + "estimated_token_count_total": 2325 }, - "hash": "sha256:8ea9865b49c4d7cea7eed22c66c1c9616d3da837ba7c9047abfc7c0396441aab", + "hash": "sha256:c084190ea7d676128e7e399e8fe88598ca150f88d684db279a687ee1c3956120", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-dev-environments-remix-deploy-a-contract", - "title": "smart-contracts-dev-environments-remix-deploy-a-contract", - "slug": "smart-contracts-dev-environments-remix-deploy-a-contract", + "id": "smart-contracts-precompiles", + "title": "Advanced Functionalities via Precompiles", + "slug": "smart-contracts-precompiles", "categories": [ "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-remix-deploy-a-contract.md", - "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/remix/deploy-a-contract/", - "preview": "TODO", - "outline": [], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-precompiles.md", + "html_url": "https://docs.polkadot.com/smart-contracts/precompiles/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" + }, + { + "depth": 2, + "title": "What are Precompiles?", + "anchor": "what-are-precompiles" + }, + { + "depth": 2, + "title": "Conclusion", + "anchor": "conclusion" + } + ], "stats": { - "chars": 5, - "words": 1, - "headings": 0, - "estimated_token_count_total": 0 + "chars": 2525, + "words": 328, + "headings": 3, + "estimated_token_count_total": 412 }, - "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "hash": "sha256:a40e3f34f70db22bfe39e40d68dc5a53a726ce47cb73b602d8605355c61ffd22", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-dev-environments-remix-get-started", - "title": "Use the Polkadot Remix IDE", - "slug": "smart-contracts-dev-environments-remix-get-started", + "id": "tutorials-dapps-remark-tutorial", + "title": "PAPI Account Watcher Tutorial", + "slug": "tutorials-dapps-remark-tutorial", "categories": [ - "Smart Contracts", "Tooling" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-remix-get-started.md", - "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/remix/get-started/", - "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**.
- :octicons-code-16:{ .lg .middle } __Deploy NFTs Using Remix IDE__", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-dapps-remark-tutorial.md", + "html_url": "https://docs.polkadot.com/tutorials/dapps/remark-tutorial/", + "preview": "This tutorial demonstrates how to build a simple command-line interface (CLI) application that monitors a user's account on the relay chain for the [`system.remarkWithEvent`](https://paritytech.github.io/polkadot-sdk/master/frame_system/pallet/struct.Pallet.html#method.remark_with_event){target=\\_blank} extrinsic, using the [Polkadot API](/develop/toolkit/api-libraries/papi){target=\\_blank}.", "outline": [ { "depth": 2, - "title": "Overview", - "anchor": "overview" + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, @@ -7561,173 +13514,126 @@ }, { "depth": 2, - "title": "Accessing Remix IDE", - "anchor": "accessing-remix-ide" + "title": "Clone the Repository", + "anchor": "clone-the-repository" }, { "depth": 2, - "title": "Creating a New Contract", - "anchor": "creating-a-new-contract" + "title": "Explore the Template (Light Clients)", + "anchor": "explore-the-template-light-clients" }, { "depth": 2, - "title": "Compiling Your Contract", - "anchor": "compiling-your-contract" + "title": "Create the CLI", + "anchor": "create-the-cli" }, { "depth": 2, - "title": "Deploying Contracts", - "anchor": "deploying-contracts" + "title": "Watch for Remarks", + "anchor": "watch-for-remarks" }, { "depth": 2, - "title": "Interacting with Contracts", - "anchor": "interacting-with-contracts" + "title": "Compile and Run", + "anchor": "compile-and-run" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "Test the CLI", + "anchor": "test-the-cli" + }, + { + "depth": 2, + "title": "Next Steps", + "anchor": "next-steps" } ], "stats": { - "chars": 6664, - "words": 905, - "headings": 8, - "estimated_token_count_total": 1347 - }, - "hash": "sha256:ceef35da1647c5f10217ad5058a5a932f0931e1c83e624539f0b67fd075eacb4", - "token_estimator": "heuristic-v1" - }, - { - "id": "smart-contracts-dev-environments-remix-troubleshooting", - "title": "smart-contracts-dev-environments-remix-troubleshooting", - "slug": "smart-contracts-dev-environments-remix-troubleshooting", - "categories": [ - "Uncategorized" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-remix-troubleshooting.md", - "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/remix/troubleshooting/", - "preview": "TODO", - "outline": [], - "stats": { - "chars": 5, - "words": 1, - "headings": 0, - "estimated_token_count_total": 0 + "chars": 8044, + "words": 1111, + "headings": 9, + "estimated_token_count_total": 2249 }, - "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "hash": "sha256:1368f6d49bccb7ba0e642cc58ea2c97ca95ae45e390cb9fa2ab11b0b41de52f4", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-dev-environments-remix-verify-a-contract", - "title": "smart-contracts-dev-environments-remix-verify-a-contract", - "slug": "smart-contracts-dev-environments-remix-verify-a-contract", + "id": "tutorials-dapps", + "title": "Decentralized Application Tutorials", + "slug": "tutorials-dapps", "categories": [ "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-remix-verify-a-contract.md", - "html_url": "https://docs.polkadot.com/smart-contracts/dev-environments/remix/verify-a-contract/", - "preview": "TODO", - "outline": [], - "stats": { - "chars": 5, - "words": 1, - "headings": 0, - "estimated_token_count_total": 0 - }, - "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", - "token_estimator": "heuristic-v1" - }, - { - "id": "smart-contracts-explorers", - "title": "Block Explorers", - "slug": "smart-contracts-explorers", - "categories": [ - "Smart Contracts", - "Tooling" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-explorers.md", - "html_url": "https://docs.polkadot.com/smart-contracts/explorers/", - "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-dapps.md", + "html_url": "https://docs.polkadot.com/tutorials/dapps/", + "preview": "This section provides hands-on tutorials for building decentralized applications (dApps) using the Polkadot SDK and its developer toolkits. These guides help you leverage Polkadot's infrastructure to build scalable, secure, and interoperable dApps without relying solely on smart contracts.", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" - }, - { - "depth": 2, - "title": "Core Functionality", - "anchor": "core-functionality" + "title": "In This Section", + "anchor": "in-this-section" }, { "depth": 2, - "title": "Available Block Explorers", - "anchor": "available-block-explorers" - }, - { - "depth": 3, - "title": "BlockScout", - "anchor": "blockscout" + "title": "Additional Resources", + "anchor": "additional-resources" } ], "stats": { - "chars": 1793, - "words": 223, - "headings": 4, - "estimated_token_count_total": 309 + "chars": 1206, + "words": 169, + "headings": 2, + "estimated_token_count_total": 198 }, - "hash": "sha256:93e8a3043d65583e3d66f8f5f0ed6f4ef89a908ef85da2b6ca906a1100b7dded", + "hash": "sha256:467765777cace42ab4e3f1bb36c94f97e655c5d2cd570e00dd747c6a3db043f7", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-faucet", - "title": "Faucet", - "slug": "smart-contracts-faucet", + "id": "tutorials-interoperability-xcm-channels", + "title": "Tutorials for Managing XCM Channels", + "slug": "tutorials-interoperability-xcm-channels", "categories": [ - "Smart Contracts" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-faucet.md", - "html_url": "https://docs.polkadot.com/smart-contracts/faucet/", - "preview": "Test tokens allow you to experiment with smart contracts, test transactions, and validate your dApp functionality without using real cryptocurrency.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-interoperability-xcm-channels.md", + "html_url": "https://docs.polkadot.com/tutorials/interoperability/xcm-channels/", + "preview": "Establishing [XCM channels](/develop/interoperability/xcm-channels/) is essential to unlocking Polkadot's native interoperability. Before bridging assets or sending cross-chain contract calls, the necessary XCM channels must be established.", "outline": [ { "depth": 2, - "title": "Get Test Tokens", - "anchor": "get-test-tokens" + "title": "Understand the Process of Opening Channels", + "anchor": "understand-the-process-of-opening-channels" }, { "depth": 2, - "title": "Things to Consider", - "anchor": "things-to-consider" + "title": "In This Section", + "anchor": "in-this-section" }, { "depth": 2, - "title": "Using Your Test Tokens", - "anchor": "using-your-test-tokens" + "title": "Additional Resources", + "anchor": "additional-resources" } ], "stats": { - "chars": 1890, - "words": 279, + "chars": 1816, + "words": 236, "headings": 3, - "estimated_token_count_total": 313 + "estimated_token_count_total": 208 }, - "hash": "sha256:c609bc98cba5efa2d2a808548cf93ad9d0a06455b35a8fd9f534daf52824f506", + "hash": "sha256:3a6704a6330c6e35aa98fe8d615e2e27beb870a48c68bda02c217e6ae77274d2", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-for-eth-devs-accounts", - "title": "Accounts in Asset Hub Smart Contracts", - "slug": "smart-contracts-for-eth-devs-accounts", + "id": "tutorials-interoperability-xcm-transfers-from-relaychain-to-parachain", + "title": "XCM Transfers from Relay Chain to Parachain", + "slug": "tutorials-interoperability-xcm-transfers-from-relaychain-to-parachain", "categories": [ - "Basics", - "Polkadot Protocol" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-for-eth-devs-accounts.md", - "html_url": "https://docs.polkadot.com/smart-contracts/for-eth-devs/accounts/", - "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-interoperability-xcm-transfers-from-relaychain-to-parachain.md", + "html_url": "https://docs.polkadot.com/tutorials/interoperability/xcm-transfers/from-relaychain-to-parachain/", + "preview": "[Cross-Consensus Messaging (XCM)](/parachains/interoperability/get-started/){target=\\_blank} facilitates asset transfers both within the same consensus system and between different ones, such as between a relay chain and its parachains. For cross-system transfers, two main methods are available:", "outline": [ { "depth": 2, @@ -7736,127 +13642,126 @@ }, { "depth": 2, - "title": "Address Types and Mappings", - "anchor": "address-types-and-mappings" + "title": "Prerequisites", + "anchor": "prerequisites" }, { - "depth": 3, - "title": "Ethereum to Polkadot Mapping", - "anchor": "ethereum-to-polkadot-mapping" + "depth": 2, + "title": "Setup", + "anchor": "setup" }, { - "depth": 3, - "title": "Polkadot to Ethereum Mapping", - "anchor": "polkadot-to-ethereum-mapping" + "depth": 2, + "title": "Use Polkadot.js Apps", + "anchor": "use-polkadotjs-apps" }, { "depth": 3, - "title": "Account Mapping for Native Polkadot Accounts", - "anchor": "account-mapping-for-native-polkadot-accounts" - }, - { - "depth": 2, - "title": "Account Registration", - "anchor": "account-registration" + "title": "From the Relay Chain Perspective", + "anchor": "from-the-relay-chain-perspective" }, { - "depth": 2, - "title": "Fallback Accounts", - "anchor": "fallback-accounts" + "depth": 3, + "title": "From the Parachain Perspective", + "anchor": "from-the-parachain-perspective" }, { "depth": 2, - "title": "Contract Address Generation", - "anchor": "contract-address-generation" + "title": "Use PAPI", + "anchor": "use-papi" }, { "depth": 2, - "title": "Security Considerations", - "anchor": "security-considerations" + "title": "Additional Resources", + "anchor": "additional-resources" } ], "stats": { - "chars": 8521, - "words": 1138, - "headings": 9, - "estimated_token_count_total": 1816 + "chars": 12680, + "words": 1562, + "headings": 8, + "estimated_token_count_total": 2764 }, - "hash": "sha256:dc95833b74404d8630a13e8746df3962e2d9d4777e5f18ca9a25d8d9302ebd53", + "hash": "sha256:a2bba0ba575bd7e3f7199282ea5994087acf2c62e828f316e6eb62c9a43449e1", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-for-eth-devs-blocks-transactions-fees", - "title": "Transactions and Fees on Asset Hub", - "slug": "smart-contracts-for-eth-devs-blocks-transactions-fees", + "id": "tutorials-interoperability-xcm-transfers", + "title": "XCM Transfers", + "slug": "tutorials-interoperability-xcm-transfers", "categories": [ - "Basics", - "Polkadot Protocol" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-for-eth-devs-blocks-transactions-fees.md", - "html_url": "https://docs.polkadot.com/smart-contracts/for-eth-devs/blocks-transactions-fees/", - "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-interoperability-xcm-transfers.md", + "html_url": "https://docs.polkadot.com/tutorials/interoperability/xcm-transfers/", + "preview": "Discover comprehensive tutorials that guide you through performing asset transfers between distinct consensus systems. These tutorials leverage [XCM (Cross-Consensus Messaging)](/parachains/interoperability/get-started/){target=\\_blank} technology, that enables cross-chain communication and asset exchanges across different blockchain networks. Whether you're working within the same ecosystem or bridging multiple systems, XCM ensures secure, efficient, and interoperable solutions.", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" - }, - { - "depth": 2, - "title": "Smart Contract Blocks", - "anchor": "smart-contract-blocks" - }, + "title": "In This Section", + "anchor": "in-this-section" + } + ], + "stats": { + "chars": 826, + "words": 102, + "headings": 1, + "estimated_token_count_total": 12 + }, + "hash": "sha256:917ce0777f8ac5a4288e54ce4086432d320b127a7fc753ade5392d766a1f3c33", + "token_estimator": "heuristic-v1" + }, + { + "id": "tutorials-interoperability", + "title": "Interoperability Tutorials", + "slug": "tutorials-interoperability", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-interoperability.md", + "html_url": "https://docs.polkadot.com/tutorials/interoperability/", + "preview": "This section introduces you to the core interoperability solutions within the Polkadot ecosystem through practical, hands-on tutorials. These resources are designed to help you master cross-chain communication techniques, from setting up messaging channels between parachains to leveraging Polkadot's advanced features of the [XCM protocol](/parachains/interoperability/get-started/){target=\\_blank}.", + "outline": [ { "depth": 2, - "title": "Smart Contract Transactions", - "anchor": "smart-contract-transactions" + "title": "XCM (Cross-Consensus Messaging)", + "anchor": "xcm-cross-consensus-messaging" }, { "depth": 3, - "title": "EVM Transaction Types", - "anchor": "evm-transaction-types" + "title": "For Parachain Integrators", + "anchor": "for-parachain-integrators" }, { "depth": 2, - "title": "Fees and Gas", - "anchor": "fees-and-gas" - }, - { - "depth": 3, - "title": "Gas Model Overview", - "anchor": "gas-model-overview" - }, - { - "depth": 3, - "title": "Fee Components", - "anchor": "fee-components" + "title": "In This Section", + "anchor": "in-this-section" }, { - "depth": 3, - "title": "Gas Calculation and Conversion", - "anchor": "gas-calculation-and-conversion" + "depth": 2, + "title": "Additional Resources", + "anchor": "additional-resources" } ], "stats": { - "chars": 6366, - "words": 791, - "headings": 8, - "estimated_token_count_total": 1182 + "chars": 2193, + "words": 266, + "headings": 4, + "estimated_token_count_total": 339 }, - "hash": "sha256:9542f40acae725e628f4c3155ad1e7e0e18b2eb518484856ad439a1d9f86d1f3", + "hash": "sha256:9559f240b9433b496bfea92b57394a75c28bc743bb756c231f0137dfdf077e4a", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-for-eth-devs-contract-deployment", - "title": "Contract Deployment", - "slug": "smart-contracts-for-eth-devs-contract-deployment", + "id": "tutorials-onchain-governance-fast-track-gov-proposal", + "title": "Fast Track a Governance Proposal", + "slug": "tutorials-onchain-governance-fast-track-gov-proposal", "categories": [ - "Smart Contracts", - "Basics" + "Tooling" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-for-eth-devs-contract-deployment.md", - "html_url": "https://docs.polkadot.com/smart-contracts/for-eth-devs/contract-deployment/", - "preview": "Polkadot's smart contract platform supports two distinct virtual machine backends: Rust Ethereum Virtual Machine (REVM) and PolkaVM. Each backend has its own deployment characteristics and optimization strategies. REVM provides full Ethereum compatibility with familiar single-step deployment, while the RISC-V-based PolkaVM uses a more structured two-step approach optimized for its architecture. Understanding these differences ensures smooth deployment regardless of which backend you choose for y", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-onchain-governance-fast-track-gov-proposal.md", + "html_url": "https://docs.polkadot.com/tutorials/onchain-governance/fast-track-gov-proposal/", + "preview": "Polkadot's [OpenGov](/polkadot-protocol/onchain-governance/overview){target=\\_blank} is a sophisticated governance mechanism designed to allow the network to evolve gracefully over time, guided by its stakeholders. This system features multiple [tracks](https://wiki.polkadot.com/learn/learn-polkadot-opengov-origins/#origins-and-tracks-info){target=\\_blank} for different types of proposals, each with parameters for approval, support, and confirmation period. While this flexibility is powerful, it", "outline": [ { "depth": 2, @@ -7865,80 +13770,111 @@ }, { "depth": 2, - "title": "REVM Deployment", - "anchor": "revm-deployment" + "title": "Prerequisites", + "anchor": "prerequisites" }, { "depth": 2, - "title": "PolkaVM Deployment", - "anchor": "polkavm-deployment" + "title": "Set Up the Project", + "anchor": "set-up-the-project" }, { - "depth": 3, - "title": "Standard Contract Deployment", - "anchor": "standard-contract-deployment" + "depth": 2, + "title": "Submit and Execute a Proposal Using Chopsticks", + "anchor": "submit-and-execute-a-proposal-using-chopsticks" }, { "depth": 3, - "title": "Two-Step Deployment Model", - "anchor": "two-step-deployment-model" + "title": "Spin Up the Polkadot Fork", + "anchor": "spin-up-the-polkadot-fork" }, { "depth": 3, - "title": "Factory Pattern Considerations", - "anchor": "factory-pattern-considerations" + "title": "Set Up Dependencies and Structure", + "anchor": "set-up-dependencies-and-structure" }, { "depth": 3, - "title": "Migration Strategy for Factory Contracts", - "anchor": "migration-strategy-for-factory-contracts" + "title": "Connect to the Forked Chain", + "anchor": "connect-to-the-forked-chain" }, { "depth": 3, - "title": "Architecture-Specific Limitations", - "anchor": "architecture-specific-limitations" + "title": "Create and Submit the Proposal", + "anchor": "create-and-submit-the-proposal" }, { "depth": 3, - "title": "On-Chain Constructors", - "anchor": "on-chain-constructors" + "title": "Force Proposal Execution", + "anchor": "force-proposal-execution" }, { "depth": 2, - "title": "Gas Estimation vs Actual Consumption", - "anchor": "gas-estimation-vs-actual-consumption" + "title": "Execute the Proposal Script", + "anchor": "execute-the-proposal-script" }, { "depth": 2, - "title": "Deployment Comparison", - "anchor": "deployment-comparison" + "title": "Summary", + "anchor": "summary" }, { "depth": 2, - "title": "Conclusion", - "anchor": "conclusion" + "title": "Full Code", + "anchor": "full-code" } ], "stats": { - "chars": 5999, - "words": 766, + "chars": 169845, + "words": 17558, "headings": 12, - "estimated_token_count_total": 1133 + "estimated_token_count_total": 34492 }, - "hash": "sha256:0792e3956242eb8e08ab82e2d73964c381074cc8b1ea46f396d136856fa6cc07", + "hash": "sha256:bef820acfe429d4a847a8de82de6c70155ac6b3ad5ebdd574a2157923b45f688", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-for-eth-devs-dual-vm-stack", - "title": "Dual Virtual Machine Stack", - "slug": "smart-contracts-for-eth-devs-dual-vm-stack", + "id": "tutorials-onchain-governance", + "title": "On-Chain Governance Tutorials", + "slug": "tutorials-onchain-governance", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-onchain-governance.md", + "html_url": "https://docs.polkadot.com/tutorials/onchain-governance/", + "preview": "On-chain governance enables decentralized networks to grow and adapt through collective decision-making. For developers, understanding and implementing governance features is crucial for contributing to network improvements and supporting user interactions.", + "outline": [ + { + "depth": 2, + "title": "In This Section", + "anchor": "in-this-section" + }, + { + "depth": 2, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 867, + "words": 112, + "headings": 2, + "estimated_token_count_total": 125 + }, + "hash": "sha256:c675e4231537732f24d1dd93f2b248398248a77c9877860fe53926e255ed0710", + "token_estimator": "heuristic-v1" + }, + { + "id": "tutorials-polkadot-sdk-parachains-zero-to-hero-build-custom-pallet", + "title": "Build a Custom Pallet", + "slug": "tutorials-polkadot-sdk-parachains-zero-to-hero-build-custom-pallet", "categories": [ "Basics", - "Polkadot Protocol" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-for-eth-devs-dual-vm-stack.md", - "html_url": "https://docs.polkadot.com/smart-contracts/for-eth-devs/dual-vm-stack/", - "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-polkadot-sdk-parachains-zero-to-hero-build-custom-pallet.md", + "html_url": "https://docs.polkadot.com/tutorials/polkadot-sdk/parachains/zero-to-hero/build-custom-pallet/", + "preview": "In Polkadot SDK-based blockchains, runtime functionality is built through modular components called [pallets](/polkadot-protocol/glossary#pallet){target=\\_blank}. These pallets are Rust-based runtime modules created using [FRAME (Framework for Runtime Aggregation of Modular Entities)](/develop/parachains/customize-parachain/overview/){target=\\_blank}, a powerful library that simplifies blockchain development by providing specialized macros and standardized patterns for building blockchain logic.", "outline": [ { "depth": 2, @@ -7947,110 +13883,89 @@ }, { "depth": 2, - "title": "Migrate from EVM", - "anchor": "migrate-from-evm" + "title": "Prerequisites", + "anchor": "prerequisites" }, { "depth": 2, - "title": "Upgrade to PolkaVM", - "anchor": "upgrade-to-polkavm" + "title": "Create a New Project", + "anchor": "create-a-new-project" }, { "depth": 2, - "title": "Architecture", - "anchor": "architecture" + "title": "Add Dependencies", + "anchor": "add-dependencies" }, { - "depth": 3, - "title": "Revive Pallet", - "anchor": "revive-pallet" + "depth": 2, + "title": "Implement the Pallet Logic", + "anchor": "implement-the-pallet-logic" }, { "depth": 3, - "title": "PolkaVM Design Fundamentals", - "anchor": "polkavm-design-fundamentals" + "title": "Add Scaffold Pallet Structure", + "anchor": "add-scaffold-pallet-structure" }, { - "depth": 2, - "title": "Where To Go Next", - "anchor": "where-to-go-next" - } - ], - "stats": { - "chars": 5383, - "words": 702, - "headings": 7, - "estimated_token_count_total": 986 - }, - "hash": "sha256:2d918017faecf489ec786f34de6cd4366a86e9f1cecfbb7722cc03079e6b64ea", - "token_estimator": "heuristic-v1" - }, - { - "id": "smart-contracts-for-eth-devs-gas-model", - "title": "Gas Model on the Polkadot Hub", - "slug": "smart-contracts-for-eth-devs-gas-model", - "categories": [ - "Uncategorized" - ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-for-eth-devs-gas-model.md", - "html_url": "https://docs.polkadot.com/smart-contracts/for-eth-devs/gas-model/", - "preview": "The Polkadot Hub implements a gas model that bridges Ethereum's familiar gas concept with Polkadot's more sophisticated resource metering system. This page explains how gas works in the Polkadot Hub and what developers need to know when building smart contracts.", - "outline": [ + "depth": 3, + "title": "Pallet Configuration", + "anchor": "pallet-configuration" + }, { - "depth": 2, - "title": "Overview", - "anchor": "overview" + "depth": 3, + "title": "Add Events", + "anchor": "add-events" }, { - "depth": 2, - "title": "Understanding Resources in the Polkadot Hub", - "anchor": "understanding-resources-in-the-polkadot-hub" + "depth": 3, + "title": "Add Storage Items", + "anchor": "add-storage-items" }, { - "depth": 2, - "title": "Gas vs Weight", - "anchor": "gas-vs-weight" + "depth": 3, + "title": "Implement Custom Errors", + "anchor": "implement-custom-errors" }, { - "depth": 2, - "title": "How Gas Estimation Works", - "anchor": "how-gas-estimation-works" + "depth": 3, + "title": "Implement Calls", + "anchor": "implement-calls" }, { "depth": 2, - "title": "Dynamic Gas Pricing", - "anchor": "dynamic-gas-pricing" + "title": "Verify Compilation", + "anchor": "verify-compilation" }, { "depth": 2, - "title": "Transaction Execution Flow", - "anchor": "transaction-execution-flow" + "title": "Key Takeaways", + "anchor": "key-takeaways" }, { "depth": 2, - "title": "Conclusion", - "anchor": "conclusion" + "title": "Where to Go Next", + "anchor": "where-to-go-next" } ], "stats": { - "chars": 5234, - "words": 751, - "headings": 7, - "estimated_token_count_total": 1046 + "chars": 26829, + "words": 2787, + "headings": 14, + "estimated_token_count_total": 5338 }, - "hash": "sha256:dd29fab6e3c00d720b10effa4e50373a6fe9ab4b7bfd3aea892c7fa9c84318a2", + "hash": "sha256:b3530f5fc5c9e916181dbc259a7fbae9c60100cb0450fc6d47bbb0d140afa075", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-for-eth-devs-json-rpc-apis", - "title": "JSON-RPC APIs", - "slug": "smart-contracts-for-eth-devs-json-rpc-apis", + "id": "tutorials-polkadot-sdk-parachains-zero-to-hero-deploy-to-testnet", + "title": "Deploy on Paseo TestNet", + "slug": "tutorials-polkadot-sdk-parachains-zero-to-hero-deploy-to-testnet", "categories": [ - "Reference" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-for-eth-devs-json-rpc-apis.md", - "html_url": "https://docs.polkadot.com/smart-contracts/for-eth-devs/json-rpc-apis/", - "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-polkadot-sdk-parachains-zero-to-hero-deploy-to-testnet.md", + "html_url": "https://docs.polkadot.com/tutorials/polkadot-sdk/parachains/zero-to-hero/deploy-to-testnet/", + "preview": "Previously, you learned how to [build and run a blockchain locally](/parachains/customize-runtime/pallet-development/add-pallet-to-runtime/){target=\\_blank}. Now, you'll take the next step towards a production-like environment by deploying your parachain to a public test network.", "outline": [ { "depth": 2, @@ -8059,194 +13974,267 @@ }, { "depth": 2, - "title": "Available Methods", - "anchor": "available-methods" + "title": "Get Started with an Account and Tokens", + "anchor": "get-started-with-an-account-and-tokens" }, { - "depth": 3, - "title": "eth_accounts", - "anchor": "eth_accounts" + "depth": 2, + "title": "Reserve a Parachain Identifier", + "anchor": "reserve-a-parachain-identifier" }, { - "depth": 3, - "title": "eth_blockNumber", - "anchor": "eth_blocknumber" + "depth": 2, + "title": "Generate Customs Keys for Your Collator", + "anchor": "generate-customs-keys-for-your-collator" }, { - "depth": 3, - "title": "eth_call", - "anchor": "eth_call" + "depth": 2, + "title": "Generate the Chain Specification", + "anchor": "generate-the-chain-specification" }, { - "depth": 3, - "title": "eth_chainId", - "anchor": "eth_chainid" + "depth": 2, + "title": "Export Required Files", + "anchor": "export-required-files" }, { - "depth": 3, - "title": "eth_estimateGas", - "anchor": "eth_estimategas" + "depth": 2, + "title": "Register a Parathread", + "anchor": "register-a-parathread" }, { - "depth": 3, - "title": "eth_gasPrice", - "anchor": "eth_gasprice" + "depth": 2, + "title": "Start the Collator Node", + "anchor": "start-the-collator-node" }, { - "depth": 3, - "title": "eth_getBalance", - "anchor": "eth_getbalance" + "depth": 2, + "title": "Producing Blocks", + "anchor": "producing-blocks" }, { - "depth": 3, - "title": "eth_getBlockByHash", - "anchor": "eth_getblockbyhash" - }, + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 21251, + "words": 2506, + "headings": 10, + "estimated_token_count_total": 4358 + }, + "hash": "sha256:87b19f6e881611329b7015e8d8187d7d85b2b2ef14b01e832c8b8e20897e3b40", + "token_estimator": "heuristic-v1" + }, + { + "id": "tutorials-polkadot-sdk-parachains-zero-to-hero-obtain-coretime", + "title": "Obtain Coretime", + "slug": "tutorials-polkadot-sdk-parachains-zero-to-hero-obtain-coretime", + "categories": [ + "Parachains" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-polkadot-sdk-parachains-zero-to-hero-obtain-coretime.md", + "html_url": "https://docs.polkadot.com/tutorials/polkadot-sdk/parachains/zero-to-hero/obtain-coretime/", + "preview": "After deploying a parachain to the Paseo TestNet in the [Deploy to TestNet](/tutorials/polkadot-sdk/parachains/zero-to-hero/deploy-to-testnet/){target=\\_blank} tutorial, the focus shifts to understanding Coretime, which is the mechanism in which validation resources are allocated from the relay chain to the respective task, such as a parachain. A parachain could only produce blocks and finalize them on the relay chain by obtaining coretime.", + "outline": [ { - "depth": 3, - "title": "eth_getBlockByNumber", - "anchor": "eth_getblockbynumber" + "depth": 2, + "title": "Introduction", + "anchor": "introduction" }, { - "depth": 3, - "title": "eth_getBlockTransactionCountByNumber", - "anchor": "eth_getblocktransactioncountbynumber" + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" }, { - "depth": 3, - "title": "eth_getBlockTransactionCountByHash", - "anchor": "eth_getblocktransactioncountbyhash" + "depth": 2, + "title": "Order On Demand Coretime", + "anchor": "order-on-demand-coretime" }, { - "depth": 3, - "title": "eth_getCode", - "anchor": "eth_getcode" + "depth": 2, + "title": "Purchase Bulk Coretime", + "anchor": "purchase-bulk-coretime" }, { "depth": 3, - "title": "eth_getLogs", - "anchor": "eth_getlogs" + "title": "Get Coretime Funds", + "anchor": "get-coretime-funds" }, { "depth": 3, - "title": "eth_getStorageAt", - "anchor": "eth_getstorageat" + "title": "Purchase a Core", + "anchor": "purchase-a-core" }, { "depth": 3, - "title": "eth_getTransactionCount", - "anchor": "eth_gettransactioncount" + "title": "Assign a Core", + "anchor": "assign-a-core" + } + ], + "stats": { + "chars": 8625, + "words": 1309, + "headings": 7, + "estimated_token_count_total": 2138 + }, + "hash": "sha256:ff2c267284959711782c0d6ecb4b439c3a6cc31f763d5e1ff2cc3b1f6efb62b2", + "token_estimator": "heuristic-v1" + }, + { + "id": "tutorials-polkadot-sdk-parachains-zero-to-hero-pallet-benchmarking", + "title": "Pallet Benchmarking", + "slug": "tutorials-polkadot-sdk-parachains-zero-to-hero-pallet-benchmarking", + "categories": [ + "Parachains" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-polkadot-sdk-parachains-zero-to-hero-pallet-benchmarking.md", + "html_url": "https://docs.polkadot.com/tutorials/polkadot-sdk/parachains/zero-to-hero/pallet-benchmarking/", + "preview": "After validating your pallet through testing and integrating it into your runtime, the next crucial step is benchmarking. Testing procedures were detailed in the [Pallet Unit Testing](/tutorials/polkadot-sdk/parachains/zero-to-hero/pallet-unit-testing/){target=\\_blank} tutorial, while runtime integration was covered in the [Add Pallets to the Runtime](/parachains/customize-runtime/pallet-development/add-pallet-to-runtime/){target=\\_blank} guide.", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" }, { - "depth": 3, - "title": "eth_getTransactionByHash", - "anchor": "eth_gettransactionbyhash" + "depth": 2, + "title": "Environment Setup", + "anchor": "environment-setup" }, { - "depth": 3, - "title": "eth_getTransactionByBlockNumberAndIndex", - "anchor": "eth_gettransactionbyblocknumberandindex" + "depth": 2, + "title": "Implement Benchmark Tests", + "anchor": "implement-benchmark-tests" }, { - "depth": 3, - "title": "eth_getTransactionByBlockHashAndIndex", - "anchor": "eth_gettransactionbyblockhashandindex" + "depth": 2, + "title": "Execute the Benchmarking", + "anchor": "execute-the-benchmarking" }, { - "depth": 3, - "title": "eth_getTransactionReceipt", - "anchor": "eth_gettransactionreceipt" + "depth": 2, + "title": "Add Benchmarking Weights to the Pallet", + "anchor": "add-benchmarking-weights-to-the-pallet" }, { - "depth": 3, - "title": "eth_maxPriorityFeePerGas", - "anchor": "eth_maxpriorityfeepergas" + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" + } + ], + "stats": { + "chars": 12857, + "words": 1539, + "headings": 6, + "estimated_token_count_total": 2929 + }, + "hash": "sha256:df60044893f48dd7f37a11de275a16bf32adb31317ed70a789fd7fac64150e1a", + "token_estimator": "heuristic-v1" + }, + { + "id": "tutorials-polkadot-sdk-parachains-zero-to-hero-pallet-unit-testing", + "title": "Pallet Unit Testing", + "slug": "tutorials-polkadot-sdk-parachains-zero-to-hero-pallet-unit-testing", + "categories": [ + "Parachains" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-polkadot-sdk-parachains-zero-to-hero-pallet-unit-testing.md", + "html_url": "https://docs.polkadot.com/tutorials/polkadot-sdk/parachains/zero-to-hero/pallet-unit-testing/", + "preview": "You have learned how to create a new pallet in the [Build a Custom Pallet](/tutorials/polkadot-sdk/parachains/zero-to-hero/build-custom-pallet/){target=\\_blank} tutorial; now you will see how to test the pallet to ensure that it works as expected. As stated in the [Pallet Testing](/parachains/customize-runtime/pallet-development/pallet-testing/){target=\\_blank} article, unit testing is crucial for ensuring the reliability and correctness of pallets in Polkadot SDK-based blockchains. Comprehensiv", + "outline": [ + { + "depth": 2, + "title": "Introduction", + "anchor": "introduction" }, { - "depth": 3, - "title": "eth_sendRawTransaction", - "anchor": "eth_sendrawtransaction" + "depth": 2, + "title": "Prerequisites", + "anchor": "prerequisites" }, { - "depth": 3, - "title": "eth_sendTransaction", - "anchor": "eth_sendtransaction" + "depth": 2, + "title": "Set Up the Testing Environment", + "anchor": "set-up-the-testing-environment" }, { - "depth": 3, - "title": "eth_syncing", - "anchor": "eth_syncing" + "depth": 2, + "title": "Implement Mocked Runtime", + "anchor": "implement-mocked-runtime" }, { "depth": 3, - "title": "net_listening", - "anchor": "net_listening" + "title": "Full Mocked Runtime", + "anchor": "full-mocked-runtime" }, { - "depth": 3, - "title": "net_peerCount", - "anchor": "net_peercount" + "depth": 2, + "title": "Implement Test Cases", + "anchor": "implement-test-cases" }, { "depth": 3, - "title": "net_version", - "anchor": "net_version" + "title": "Successful Operations", + "anchor": "successful-operations" }, { "depth": 3, - "title": "system_health", - "anchor": "system_health" + "title": "Preventing Value Overflow", + "anchor": "preventing-value-overflow" }, { "depth": 3, - "title": "web3_clientVersion", - "anchor": "web3_clientversion" + "title": "Origin and Access Control", + "anchor": "origin-and-access-control" }, { "depth": 3, - "title": "debug_traceBlockByNumber", - "anchor": "debug_traceblockbynumber" + "title": "Edge Case Handling", + "anchor": "edge-case-handling" }, { "depth": 3, - "title": "debug_traceTransaction", - "anchor": "debug_tracetransaction" + "title": "Verify State Changes", + "anchor": "verify-state-changes" }, { "depth": 3, - "title": "debug_traceCall", - "anchor": "debug_tracecall" + "title": "Full Test Suite", + "anchor": "full-test-suite" }, { "depth": 2, - "title": "Response Format", - "anchor": "response-format" + "title": "Run the Tests", + "anchor": "run-the-tests" }, { "depth": 2, - "title": "Error Handling", - "anchor": "error-handling" + "title": "Where to Go Next", + "anchor": "where-to-go-next" } ], "stats": { - "chars": 31444, - "words": 3848, - "headings": 35, - "estimated_token_count_total": 9562 + "chars": 23736, + "words": 2324, + "headings": 14, + "estimated_token_count_total": 4789 }, - "hash": "sha256:da1669344010a793a5296c9397b2d5a85240ff6fbe37b885bce0139298364423", + "hash": "sha256:81750202081ff24447f4e129c49230eedb315d1b44c740b677c3495a8f7adb9a", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-for-eth-devs-migration", - "title": "Migration FAQs and Considerations", - "slug": "smart-contracts-for-eth-devs-migration", + "id": "tutorials-polkadot-sdk-parachains-zero-to-hero-runtime-upgrade", + "title": "Runtime Upgrades", + "slug": "tutorials-polkadot-sdk-parachains-zero-to-hero-runtime-upgrade", "categories": [ - "Smart Contracts" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-for-eth-devs-migration.md", - "html_url": "https://docs.polkadot.com/smart-contracts/for-eth-devs/migration/", - "preview": "This guide helps Ethereum developers migrate their smart contracts to Polkadot Hub. Most contracts work without modifications on the REVM backend, while the PolkaVM backend offers enhanced performance with minimal adaptation for standard patterns.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-polkadot-sdk-parachains-zero-to-hero-runtime-upgrade.md", + "html_url": "https://docs.polkadot.com/tutorials/polkadot-sdk/parachains/zero-to-hero/runtime-upgrade/", + "preview": "Upgrading the runtime of your Polkadot SDK-based blockchain is a fundamental feature that allows you to add new functionality, fix bugs, or improve performance without requiring a hard fork. Runtime upgrades are performed by submitting a special extrinsic that replaces the existing on-chain WASM runtime code. This process is trustless, transparent, and can be executed either through governance or using sudo, depending on your chain's configuration.", "outline": [ { "depth": 2, @@ -8255,229 +14243,282 @@ }, { "depth": 2, - "title": "Migration Considerations", - "anchor": "migration-considerations" + "title": "Update the Runtime", + "anchor": "update-the-runtime" }, { - "depth": 2, - "title": "Migration Checklist", - "anchor": "migration-checklist" + "depth": 3, + "title": "Start Your Chain", + "anchor": "start-your-chain" }, { - "depth": 2, - "title": "Migration FAQs", - "anchor": "migration-faqs" + "depth": 3, + "title": "Add a New Feature", + "anchor": "add-a-new-feature" }, { "depth": 3, - "title": "Which backend should I choose?", - "anchor": "which-backend-should-i-choose" + "title": "Update Runtime Configuration", + "anchor": "update-runtime-configuration" }, { "depth": 3, - "title": "Do I need to rewrite my Solidity code?", - "anchor": "do-i-need-to-rewrite-my-solidity-code" + "title": "Bump the Runtime Version", + "anchor": "bump-the-runtime-version" }, { "depth": 3, - "title": "What about factory contracts?", - "anchor": "what-about-factory-contracts" + "title": "Build the New Runtime", + "anchor": "build-the-new-runtime" }, { - "depth": 3, - "title": "How do gas costs compare?", - "anchor": "how-do-gas-costs-compare" + "depth": 2, + "title": "Submit the Runtime Upgrade", + "anchor": "submit-the-runtime-upgrade" }, { - "depth": 3, - "title": "Which Solidity features are not supported?", - "anchor": "which-solidity-features-are-not-supported" + "depth": 2, + "title": "Verify the Upgrade", + "anchor": "verify-the-upgrade" }, { "depth": 3, - "title": "How do I handle the existential deposit?", - "anchor": "how-do-i-handle-the-existential-deposit" + "title": "Check Runtime Version", + "anchor": "check-runtime-version" }, { "depth": 3, - "title": "Can I use my existing development tools?", - "anchor": "can-i-use-my-existing-development-tools" + "title": "Test New Functionality", + "anchor": "test-new-functionality" }, { "depth": 2, - "title": "Conclusion", - "anchor": "conclusion" + "title": "Where to Go Next", + "anchor": "where-to-go-next" } ], "stats": { - "chars": 6067, - "words": 777, + "chars": 10233, + "words": 1378, "headings": 12, - "estimated_token_count_total": 1275 + "estimated_token_count_total": 2452 }, - "hash": "sha256:d6cbd026bd22d3362fffe6bdab0ce3d1688482b6d1eec26368b46fd03eb82a5f", + "hash": "sha256:1eb463c6b2732ebed0d16165425cde438688d21cc302f759b40250850c2a5e83", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-get-started", - "title": "Get Started with Smart Contracts", - "slug": "smart-contracts-get-started", + "id": "tutorials-polkadot-sdk-parachains-zero-to-hero-set-up-a-template", + "title": "Set Up a Template", + "slug": "tutorials-polkadot-sdk-parachains-zero-to-hero-set-up-a-template", "categories": [ "Basics", - "Smart Contracts" + "Parachains" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-get-started.md", - "html_url": "https://docs.polkadot.com/smart-contracts/get-started/", - "preview": "This resource provides quick-starts for building smart contracts on Polkadot Hub. Use the tables below to jump directly to the tools and workflows you need.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-polkadot-sdk-parachains-zero-to-hero-set-up-a-template.md", + "html_url": "https://docs.polkadot.com/tutorials/polkadot-sdk/parachains/zero-to-hero/set-up-a-template/", + "preview": "[Polkadot SDK](https://github.com/paritytech/polkadot-sdk){target=\\_blank} offers a versatile and extensible blockchain development framework, enabling you to create custom blockchains tailored to your specific application or business requirements.", "outline": [ { "depth": 2, - "title": "Quick Starts", - "anchor": "quick-starts" + "title": "Introduction", + "anchor": "introduction" }, { "depth": 2, - "title": "Build and Test Locally", - "anchor": "build-and-test-locally" + "title": "Prerequisites", + "anchor": "prerequisites" }, { "depth": 2, - "title": "Ethereum Developer Resources", - "anchor": "ethereum-developer-resources" + "title": "Utility Tools", + "anchor": "utility-tools" }, { "depth": 2, - "title": "Cookbook: Hands‑on Tutorials", - "anchor": "cookbook-handson-tutorials" + "title": "Compile the Runtime", + "anchor": "compile-the-runtime" }, { "depth": 2, - "title": "Libraries", - "anchor": "libraries" + "title": "Start the Local Chain", + "anchor": "start-the-local-chain" }, { "depth": 2, - "title": "Integrations", - "anchor": "integrations" + "title": "Interact with the Node", + "anchor": "interact-with-the-node" }, { "depth": 2, - "title": "Precompiles", - "anchor": "precompiles" + "title": "Stop the Node", + "anchor": "stop-the-node" + }, + { + "depth": 2, + "title": "Where to Go Next", + "anchor": "where-to-go-next" } ], "stats": { - "chars": 10103, - "words": 937, - "headings": 7, - "estimated_token_count_total": 2888 + "chars": 12524, + "words": 1873, + "headings": 8, + "estimated_token_count_total": 3255 }, - "hash": "sha256:8ec1a9444ba7ec4a35361f14bb0268be87d1ebee8079bb9740f47f69c90f877a", + "hash": "sha256:fe94de6f97fb588552f6cbc6b1a4c7399e91f5f31585f61a0dee66f5f50ff8a0", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-integrations-indexers", - "title": "smart-contracts-integrations-indexers", - "slug": "smart-contracts-integrations-indexers", + "id": "tutorials-polkadot-sdk-parachains-zero-to-hero", + "title": "Zero To Hero Parachain Tutorial Series", + "slug": "tutorials-polkadot-sdk-parachains-zero-to-hero", "categories": [ "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-integrations-indexers.md", - "html_url": "https://docs.polkadot.com/smart-contracts/integrations/indexers/", - "preview": "TODO", - "outline": [], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-polkadot-sdk-parachains-zero-to-hero.md", + "html_url": "https://docs.polkadot.com/tutorials/polkadot-sdk/parachains/zero-to-hero/", + "preview": "The **Parachain Zero To Hero Tutorials** provide developers with a series of step-by-step guides to building, testing, and deploying custom pallets and runtimes using the Polkadot SDK. These tutorials are designed to help you gain hands-on experience and understand the core concepts necessary to create efficient and scalable blockchains.", + "outline": [ + { + "depth": 2, + "title": "Parachain Development Cycle", + "anchor": "parachain-development-cycle" + } + ], "stats": { - "chars": 5, - "words": 1, - "headings": 0, - "estimated_token_count_total": 0 + "chars": 828, + "words": 132, + "headings": 1, + "estimated_token_count_total": 42 }, - "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "hash": "sha256:06acc146698c1d3224544987d7ee52da498e3179228f98a494e385c5786a3a2c", "token_estimator": "heuristic-v1" }, - { - "id": "smart-contracts-integrations-oracles", - "title": "smart-contracts-integrations-oracles", - "slug": "smart-contracts-integrations-oracles", + { + "id": "tutorials-polkadot-sdk-parachains", + "title": "Parachain Tutorials", + "slug": "tutorials-polkadot-sdk-parachains", "categories": [ "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-integrations-oracles.md", - "html_url": "https://docs.polkadot.com/smart-contracts/integrations/oracles/", - "preview": "TODO", - "outline": [], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-polkadot-sdk-parachains.md", + "html_url": "https://docs.polkadot.com/tutorials/polkadot-sdk/parachains/", + "preview": "The Polkadot SDK enables you to build custom blockchains that can operate as part of the Polkadot network. These tutorials guide you through the essential steps of developing, testing, and deploying your own parachain.", + "outline": [ + { + "depth": 2, + "title": "Parachain Zero To Hero Tutorials", + "anchor": "parachain-zero-to-hero-tutorials" + }, + { + "depth": 2, + "title": "Key Takeaways", + "anchor": "key-takeaways" + }, + { + "depth": 2, + "title": "In This Section", + "anchor": "in-this-section" + } + ], "stats": { - "chars": 5, - "words": 1, - "headings": 0, - "estimated_token_count_total": 0 + "chars": 924, + "words": 122, + "headings": 3, + "estimated_token_count_total": 107 }, - "hash": "sha256:56ba36249ea8216ad513b13df3de6c0e490ba214897674d30331f1c7e7edbef3", + "hash": "sha256:fdd391227992c966de25b9240f5492135a9993859ec42b77952c1aa3d2e39ed9", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-integrations-wallets", - "title": "Wallets for Polkadot Hub", - "slug": "smart-contracts-integrations-wallets", + "id": "tutorials-polkadot-sdk-system-chains-asset-hub", + "title": "Asset Hub Tutorials", + "slug": "tutorials-polkadot-sdk-system-chains-asset-hub", "categories": [ - "Smart Contracts", - "Tooling" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-integrations-wallets.md", - "html_url": "https://docs.polkadot.com/smart-contracts/integrations/wallets/", - "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-polkadot-sdk-system-chains-asset-hub.md", + "html_url": "https://docs.polkadot.com/tutorials/polkadot-sdk/system-chains/asset-hub/", + "preview": "Polkadot SDK-based relay chains focus on security and consensus, leaving asset management to an external component, such as a [system chain](/polkadot-protocol/architecture/system-chains/){target=\\_blank}. The [Asset Hub](/reference/polkadot-hub/assets-and-smart-contracts/){target=\\_blank} is one example of a system chain and is vital to managing tokens which aren't native to the Polkadot ecosystem. Developers opting to integrate with Asset Hub can expect the following benefits:", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "Benefits of Asset Hub", + "anchor": "benefits-of-asset-hub" }, { "depth": 2, - "title": "Connect Your Wallet", - "anchor": "connect-your-wallet" + "title": "Get Started", + "anchor": "get-started" }, { - "depth": 3, - "title": "MetaMask", - "anchor": "metamask" + "depth": 2, + "title": "In This Section", + "anchor": "in-this-section" }, { - "depth": 3, - "title": "SubWallet", - "anchor": "subwallet" + "depth": 2, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 1768, + "words": 250, + "headings": 4, + "estimated_token_count_total": 400 + }, + "hash": "sha256:2fc6f513fd8b269e586b754b2bdbd2af9df5178624a028fab940a385f3fee577", + "token_estimator": "heuristic-v1" + }, + { + "id": "tutorials-polkadot-sdk-system-chains", + "title": "System Chains Tutorials", + "slug": "tutorials-polkadot-sdk-system-chains", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-polkadot-sdk-system-chains.md", + "html_url": "https://docs.polkadot.com/tutorials/polkadot-sdk/system-chains/", + "preview": "In this section, you'll gain hands-on experience building solutions that integrate with [system chains](/polkadot-protocol/architecture/system-chains/){target=\\_blank} on Polkadot using the Polkadot SDK. System chains like the [Asset Hub](/reference/polkadot-hub/assets-and-smart-contracts/){target=\\_blank} provide essential infrastructure for enabling cross-chain interoperability and asset management across the Polkadot ecosystem.", + "outline": [ + { + "depth": 2, + "title": "For Parachain Integrators", + "anchor": "for-parachain-integrators" }, { - "depth": 3, - "title": "Talisman", - "anchor": "talisman" + "depth": 2, + "title": "For Developers Leveraging System Chains", + "anchor": "for-developers-leveraging-system-chains" }, { "depth": 2, - "title": "Conclusion", - "anchor": "conclusion" + "title": "In This Section", + "anchor": "in-this-section" } ], "stats": { - "chars": 7340, - "words": 1041, - "headings": 6, - "estimated_token_count_total": 1627 + "chars": 1560, + "words": 211, + "headings": 3, + "estimated_token_count_total": 211 }, - "hash": "sha256:65809486f62f60c6a6ac8109f9f027361683c23f639991a045ec5c057b665026", + "hash": "sha256:5d45ec9f8efda8c4bc2d0c21399a036d017a03540e7efab60d4710cb7eb33eb3", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-libraries-ethers-js", - "title": "Deploy Contracts to Polkadot Hub with Ethers.js", - "slug": "smart-contracts-libraries-ethers-js", + "id": "tutorials-polkadot-sdk-testing-fork-live-chains", + "title": "Fork a Chain with Chopsticks", + "slug": "tutorials-polkadot-sdk-testing-fork-live-chains", "categories": [ - "Smart Contracts", + "Basics", + "dApps", "Tooling" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-libraries-ethers-js.md", - "html_url": "https://docs.polkadot.com/smart-contracts/libraries/ethers-js/", - "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-polkadot-sdk-testing-fork-live-chains.md", + "html_url": "https://docs.polkadot.com/tutorials/polkadot-sdk/testing/fork-live-chains/", + "preview": "Chopsticks is an innovative tool that simplifies the process of forking live Polkadot SDK chains. This guide provides step-by-step instructions to configure and fork chains, enabling developers to:", "outline": [ { "depth": 2, @@ -8491,80 +14532,61 @@ }, { "depth": 2, - "title": "Project Structure", - "anchor": "project-structure" - }, - { - "depth": 2, - "title": "Set Up the Project", - "anchor": "set-up-the-project" - }, - { - "depth": 2, - "title": "Install Dependencies", - "anchor": "install-dependencies" + "title": "Configuration File", + "anchor": "configuration-file" }, { "depth": 2, - "title": "Set Up the Ethers.js Provider", - "anchor": "set-up-the-ethersjs-provider" + "title": "Create a Fork", + "anchor": "create-a-fork" }, { "depth": 2, - "title": "Compile Contracts", - "anchor": "compile-contracts" - }, - { - "depth": 3, - "title": "Install the Revive Library", - "anchor": "install-the-revive-library" + "title": "Interact with a Fork", + "anchor": "interact-with-a-fork" }, { "depth": 3, - "title": "Sample Storage Smart Contract", - "anchor": "sample-storage-smart-contract" + "title": "Use Polkadot.js Apps", + "anchor": "use-polkadotjs-apps" }, { "depth": 3, - "title": "Compile the Smart Contract", - "anchor": "compile-the-smart-contract" - }, - { - "depth": 2, - "title": "Deploy the Compiled Contract", - "anchor": "deploy-the-compiled-contract" + "title": "Use Polkadot.js Library", + "anchor": "use-polkadotjs-library" }, { "depth": 2, - "title": "Interact with the Contract", - "anchor": "interact-with-the-contract" + "title": "Replay Blocks", + "anchor": "replay-blocks" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "XCM Testing", + "anchor": "xcm-testing" } ], "stats": { - "chars": 20457, - "words": 2333, - "headings": 13, - "estimated_token_count_total": 4474 + "chars": 22265, + "words": 1326, + "headings": 9, + "estimated_token_count_total": 2702 }, - "hash": "sha256:c74a28d8d62369591c5734535136508db3d1f7380e486fd214f98d433cafd6e7", + "hash": "sha256:1f8ab387f721d865a7ca75eaa2528f1f2ebd4528a7d65ffeb27c68953100a3cb", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-libraries-viem", - "title": "viem for Polkadot Hub Smart Contracts", - "slug": "smart-contracts-libraries-viem", + "id": "tutorials-polkadot-sdk-testing-spawn-basic-chain", + "title": "Spawn a Basic Chain with Zombienet", + "slug": "tutorials-polkadot-sdk-testing-spawn-basic-chain", "categories": [ - "Smart Contracts", + "Basics", + "dApps", "Tooling" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-libraries-viem.md", - "html_url": "https://docs.polkadot.com/smart-contracts/libraries/viem/", - "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-polkadot-sdk-testing-spawn-basic-chain.md", + "html_url": "https://docs.polkadot.com/tutorials/polkadot-sdk/testing/spawn-basic-chain/", + "preview": "Zombienet simplifies blockchain development by enabling developers to create temporary, customizable networks for testing and validation. These ephemeral chains are ideal for experimenting with configurations, debugging applications, and validating functionality in a controlled environment.", "outline": [ { "depth": 2, @@ -8578,84 +14600,152 @@ }, { "depth": 2, - "title": "Project Structure", - "anchor": "project-structure" + "title": "Set Up Local Provider", + "anchor": "set-up-local-provider" }, { "depth": 2, - "title": "Set Up the Project", - "anchor": "set-up-the-project" + "title": "Define the Network", + "anchor": "define-the-network" }, { "depth": 2, - "title": "Install Dependencies", - "anchor": "install-dependencies" + "title": "Spawn the Network", + "anchor": "spawn-the-network" }, { "depth": 2, - "title": "Initialize Project", - "anchor": "initialize-project" + "title": "Interact with the Spawned Network", + "anchor": "interact-with-the-spawned-network" }, { - "depth": 2, - "title": "Set Up the Chain Configuration", - "anchor": "set-up-the-chain-configuration" + "depth": 3, + "title": "Connect to the Nodes", + "anchor": "connect-to-the-nodes" }, { - "depth": 2, - "title": "Set Up the viem Client", - "anchor": "set-up-the-viem-client" + "depth": 3, + "title": "Check Metrics", + "anchor": "check-metrics" }, + { + "depth": 3, + "title": "Check Logs", + "anchor": "check-logs" + } + ], + "stats": { + "chars": 9496, + "words": 1395, + "headings": 9, + "estimated_token_count_total": 2564 + }, + "hash": "sha256:97dadddf4c27f469f552875461fc54d331fa151e4656401e15d6d4173115eecf", + "token_estimator": "heuristic-v1" + }, + { + "id": "tutorials-polkadot-sdk-testing", + "title": "Blockchain Testing Tutorials", + "slug": "tutorials-polkadot-sdk-testing", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-polkadot-sdk-testing.md", + "html_url": "https://docs.polkadot.com/tutorials/polkadot-sdk/testing/", + "preview": "Polkadot offers specialized tools that make it simple to create realistic testing environments, particularly for cross-chain interactions. These purpose-built tools enable developers to quickly spin up test networks that accurately simulate real-world scenarios. Learn to create controlled testing environments using powerful tools designed for Polkadot SDK development.", + "outline": [ { "depth": 2, - "title": "Set Up a Wallet", - "anchor": "set-up-a-wallet" + "title": "Get Started", + "anchor": "get-started" }, { "depth": 2, - "title": "Sample Smart Contract", - "anchor": "sample-smart-contract" - }, + "title": "In This Section", + "anchor": "in-this-section" + } + ], + "stats": { + "chars": 843, + "words": 106, + "headings": 2, + "estimated_token_count_total": 80 + }, + "hash": "sha256:1dfbb8c3cfa27f92e982b4ce705415e117c50eb38f641691129863b474741da7", + "token_estimator": "heuristic-v1" + }, + { + "id": "tutorials-polkadot-sdk", + "title": "Polkadot SDK Tutorials", + "slug": "tutorials-polkadot-sdk", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-polkadot-sdk.md", + "html_url": "https://docs.polkadot.com/tutorials/polkadot-sdk/", + "preview": "The Polkadot SDK is a versatile framework for building custom blockchains, whether as standalone networks or as part of the Polkadot ecosystem. With its modular design and extensible tools, libraries, and runtime components, the SDK simplifies the process of creating parachains, system chains, and solochains.", + "outline": [ { "depth": 2, - "title": "Compile the Contract", - "anchor": "compile-the-contract" + "title": "Build and Deploy a Parachain", + "anchor": "build-and-deploy-a-parachain" }, { "depth": 2, - "title": "Deploy the Contract", - "anchor": "deploy-the-contract" + "title": "In This Section", + "anchor": "in-this-section" }, { "depth": 2, - "title": "Interact with the Contract", - "anchor": "interact-with-the-contract" - }, + "title": "Additional Resources", + "anchor": "additional-resources" + } + ], + "stats": { + "chars": 1481, + "words": 214, + "headings": 3, + "estimated_token_count_total": 256 + }, + "hash": "sha256:d63121126e51c785f0dfd4ae4ecd49cb71640515d39df69a0689f30a7ab8122f", + "token_estimator": "heuristic-v1" + }, + { + "id": "tutorials-smart-contracts-demo-aplications", + "title": "Demo Applications", + "slug": "tutorials-smart-contracts-demo-aplications", + "categories": [ + "Uncategorized" + ], + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-smart-contracts-demo-aplications.md", + "html_url": "https://docs.polkadot.com/tutorials/smart-contracts/demo-aplications/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. This section highlights demo applications that can be deployed to Polkadot Hub. These examples illustrate practical use cases and provide guidance for developers looking to launch and test applications within the Polkadot ecosystem.", + "outline": [ { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "In This Section", + "anchor": "in-this-section" } ], "stats": { - "chars": 16600, - "words": 1940, - "headings": 14, - "estimated_token_count_total": 3891 + "chars": 474, + "words": 60, + "headings": 1, + "estimated_token_count_total": 12 }, - "hash": "sha256:e27657e4e4a14fe86f424b96631946ec36fb90d277e6010b6cbd64c4769aba8a", + "hash": "sha256:94dbafb2d78b87d5f0f0c75de002501b8210ac8d66072bc07989f685837cbac5", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-libraries-wagmi", - "title": "Wagmi for Polkadot Hub Smart Contracts", - "slug": "smart-contracts-libraries-wagmi", + "id": "tutorials-smart-contracts-launch-your-first-project-create-contracts", + "title": "Create a Smart Contract", + "slug": "tutorials-smart-contracts-launch-your-first-project-create-contracts", "categories": [ - "Smart Contracts", - "Tooling" + "Basics", + "Smart Contracts" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-libraries-wagmi.md", - "html_url": "https://docs.polkadot.com/smart-contracts/libraries/wagmi/", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-smart-contracts-launch-your-first-project-create-contracts.md", + "html_url": "https://docs.polkadot.com/tutorials/smart-contracts/launch-your-first-project/create-contracts/", "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", "outline": [ { @@ -8665,43 +14755,23 @@ }, { "depth": 2, - "title": "Set Up the Project", - "anchor": "set-up-the-project" - }, - { - "depth": 2, - "title": "Install Dependencies", - "anchor": "install-dependencies" - }, - { - "depth": 2, - "title": "Configure Wagmi for Polkadot Hub", - "anchor": "configure-wagmi-for-polkadot-hub" - }, - { - "depth": 2, - "title": "Set Up the Wagmi Provider", - "anchor": "set-up-the-wagmi-provider" - }, - { - "depth": 2, - "title": "Connect a Wallet", - "anchor": "connect-a-wallet" + "title": "Prerequisites", + "anchor": "prerequisites" }, { "depth": 2, - "title": "Fetch Blockchain Data", - "anchor": "fetch-blockchain-data" + "title": "Understanding Smart Contract Structure", + "anchor": "understanding-smart-contract-structure" }, { "depth": 2, - "title": "Interact with Deployed Contract", - "anchor": "interact-with-deployed-contract" + "title": "Create the Smart Contract", + "anchor": "create-the-smart-contract" }, { "depth": 2, - "title": "Integrate Components", - "anchor": "integrate-components" + "title": "Understanding the Code", + "anchor": "understanding-the-code" }, { "depth": 2, @@ -8710,25 +14780,25 @@ } ], "stats": { - "chars": 13604, - "words": 1515, - "headings": 10, - "estimated_token_count_total": 3250 + "chars": 8665, + "words": 1178, + "headings": 6, + "estimated_token_count_total": 1760 }, - "hash": "sha256:bc771f912627fa09cad64adab1bc81c052f650d6c5a3b4f0c91883a98f6628da", + "hash": "sha256:9cf70459e921b8b231a3f2e7a7c1d47a4917e45f0c4d0fe873ad4062fd540a9a", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-libraries-web3-js", - "title": "Web3.js", - "slug": "smart-contracts-libraries-web3-js", + "id": "tutorials-smart-contracts-launch-your-first-project-create-dapp-ethers-js", + "title": "Create a dApp With Ethers.js", + "slug": "tutorials-smart-contracts-launch-your-first-project-create-dapp-ethers-js", "categories": [ - "Smart Contracts", + "dApp", "Tooling" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-libraries-web3-js.md", - "html_url": "https://docs.polkadot.com/smart-contracts/libraries/web3-js/", - "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. !!! warning Web3.js has been [sunset](https://blog.chainsafe.io/web3-js-sunset/){target=\\_blank}. You can find guides on using [Ethers.js](/smart-contracts/libraries/ethers-js/){target=\\_blank} and [viem](/smart-contracts/libraries/viem/){target=\\_blank} in the Libraries section.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-smart-contracts-launch-your-first-project-create-dapp-ethers-js.md", + "html_url": "https://docs.polkadot.com/tutorials/smart-contracts/launch-your-first-project/create-dapp-ethers-js/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", "outline": [ { "depth": 2, @@ -8742,8 +14812,8 @@ }, { "depth": 2, - "title": "Project Structure", - "anchor": "project-structure" + "title": "Project Overview", + "anchor": "project-overview" }, { "depth": 2, @@ -8752,60 +14822,65 @@ }, { "depth": 2, - "title": "Install Dependencies", - "anchor": "install-dependencies" + "title": "Connect to Polkadot Hub", + "anchor": "connect-to-polkadot-hub" }, { "depth": 2, - "title": "Set Up the Web3 Provider", - "anchor": "set-up-the-web3-provider" + "title": "Set Up the Smart Contract Interface", + "anchor": "set-up-the-smart-contract-interface" }, { "depth": 2, - "title": "Compile Contracts", - "anchor": "compile-contracts" + "title": "Create the Wallet Connection Component", + "anchor": "create-the-wallet-connection-component" }, { "depth": 2, - "title": "Contract Deployment", - "anchor": "contract-deployment" + "title": "Read Data from the Blockchain", + "anchor": "read-data-from-the-blockchain" }, { "depth": 2, - "title": "Interact with the Contract", - "anchor": "interact-with-the-contract" + "title": "Write Data to the Blockchain", + "anchor": "write-data-to-the-blockchain" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "Conclusion", + "anchor": "conclusion" } ], "stats": { - "chars": 13266, - "words": 1579, - "headings": 10, - "estimated_token_count_total": 3035 + "chars": 2525, + "words": 328, + "headings": 3, + "estimated_token_count_total": 412 }, - "hash": "sha256:f0d36333d0d3afff7f6374a61d0f6d1fb878c9ef4c4e4c24447745661dbe59d0", + "hash": "sha256:de7fde61d4cac9c28634ee496dcabe116fe44b1b87408f202103290d78247c05", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-libraries-web3-py", - "title": "Web3.py", - "slug": "smart-contracts-libraries-web3-py", + "id": "tutorials-smart-contracts-launch-your-first-project-create-dapp-viem", + "title": "Create a dApp With Viem", + "slug": "tutorials-smart-contracts-launch-your-first-project-create-dapp-viem", "categories": [ - "Smart Contracts", + "dApp", "Tooling" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-libraries-web3-py.md", - "html_url": "https://docs.polkadot.com/smart-contracts/libraries/web3-py/", - "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-smart-contracts-launch-your-first-project-create-dapp-viem.md", + "html_url": "https://docs.polkadot.com/tutorials/smart-contracts/launch-your-first-project/create-dapp-viem/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. Decentralized applications (dApps) are a key component of the Web3 ecosystem, enabling developers to build applications that communicate directly with blockchain networks. Polkadot Hub, a blockchain with smart contract support, serves as a robust platform for deploying and interacting with dApps.", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "Prerequisites", + "anchor": "prerequisites" + }, + { + "depth": 2, + "title": "Project Overview", + "anchor": "project-overview" }, { "depth": 2, @@ -8814,18 +14889,43 @@ }, { "depth": 2, - "title": "Set Up the Web3 Provider", - "anchor": "set-up-the-web3-provider" + "title": "Install Dependencies", + "anchor": "install-dependencies" }, { "depth": 2, - "title": "Contract Deployment", - "anchor": "contract-deployment" + "title": "Connect to Polkadot Hub", + "anchor": "connect-to-polkadot-hub" }, { "depth": 2, - "title": "Interact with the Contract", - "anchor": "interact-with-the-contract" + "title": "Set Up the Smart Contract Interface", + "anchor": "set-up-the-smart-contract-interface" + }, + { + "depth": 2, + "title": "Create the Wallet Connection Component", + "anchor": "create-the-wallet-connection-component" + }, + { + "depth": 2, + "title": "Create the Read Contract Component", + "anchor": "create-the-read-contract-component" + }, + { + "depth": 2, + "title": "Create the Write Contract Component", + "anchor": "create-the-write-contract-component" + }, + { + "depth": 2, + "title": "How It Works", + "anchor": "how-it-works" + }, + { + "depth": 2, + "title": "Conclusion", + "anchor": "conclusion" }, { "depth": 2, @@ -8834,24 +14934,24 @@ } ], "stats": { - "chars": 11627, - "words": 1333, - "headings": 6, - "estimated_token_count_total": 2509 + "chars": 27924, + "words": 3201, + "headings": 12, + "estimated_token_count_total": 6206 }, - "hash": "sha256:205892e350168b3d0da7ccc280c67c3217ad1e45e87a53d124fa1dd69661aa5e", + "hash": "sha256:cb8ddb4a61f6a62182420b69382f1c7ab2adc2f4ae643f7f68c6867680afe81f", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-overview", - "title": "Smart Contracts Overview", - "slug": "smart-contracts-overview", + "id": "tutorials-smart-contracts-launch-your-first-project-test-and-deploy-with-hardhat", + "title": "Test and Deploy with Hardhat", + "slug": "tutorials-smart-contracts-launch-your-first-project-test-and-deploy-with-hardhat", "categories": [ - "Basics", - "Smart Contracts" + "dApp", + "Tooling" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-overview.md", - "html_url": "https://docs.polkadot.com/smart-contracts/overview/", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-smart-contracts-launch-your-first-project-test-and-deploy-with-hardhat.md", + "html_url": "https://docs.polkadot.com/tutorials/smart-contracts/launch-your-first-project/test-and-deploy-with-hardhat/", "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", "outline": [ { @@ -8861,200 +14961,155 @@ }, { "depth": 2, - "title": "Native Smart Contracts", - "anchor": "native-smart-contracts" - }, - { - "depth": 3, - "title": "Introduction", - "anchor": "introduction-2" - }, - { - "depth": 3, - "title": "Smart Contract Development", - "anchor": "smart-contract-development" + "title": "Prerequisites", + "anchor": "prerequisites" }, { - "depth": 3, - "title": "Technical Architecture", - "anchor": "technical-architecture" + "depth": 2, + "title": "Setting Up the Development Environment", + "anchor": "setting-up-the-development-environment" }, { - "depth": 3, - "title": "Development Tools and Resources", - "anchor": "development-tools-and-resources" + "depth": 2, + "title": "Adding the Smart Contract", + "anchor": "adding-the-smart-contract" }, { - "depth": 3, - "title": "Cross-Chain Capabilities", - "anchor": "cross-chain-capabilities" + "depth": 2, + "title": "Writing Tests", + "anchor": "writing-tests" }, { - "depth": 3, - "title": "Use Cases", - "anchor": "use-cases" + "depth": 2, + "title": "Deploying with Ignition", + "anchor": "deploying-with-ignition" }, { "depth": 2, - "title": "Other Smart Contract Environments", - "anchor": "other-smart-contract-environments" + "title": "Interacting with Your Deployed Contract", + "anchor": "interacting-with-your-deployed-contract" }, { "depth": 2, - "title": "Where to Go Next", - "anchor": "where-to-go-next" + "title": "Conclusion", + "anchor": "conclusion" } ], "stats": { - "chars": 6305, - "words": 804, - "headings": 10, - "estimated_token_count_total": 1122 + "chars": 18699, + "words": 2238, + "headings": 8, + "estimated_token_count_total": 4135 }, - "hash": "sha256:ee87115c828928c82937de26f5f938cecd4c3bb1225fdb61627e8092e6ea5951", + "hash": "sha256:ca1d65d450f086a0eb7b81e9589e9894e04b217fe9709a1b464f09beb3ca9dc2", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-precompiles-eth-native", - "title": "Ethereum-Native Precompiles", - "slug": "smart-contracts-precompiles-eth-native", + "id": "tutorials-smart-contracts-launch-your-first-project", + "title": "Launch Your First Project", + "slug": "tutorials-smart-contracts-launch-your-first-project", "categories": [ - "Smart Contracts" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-precompiles-eth-native.md", - "html_url": "https://docs.polkadot.com/smart-contracts/precompiles/eth-native/", - "preview": "Ethereum-native precompiles are special contract implementations that provide essential cryptographic and utility functions at the runtime level. These precompiles are available at predefined addresses and offer optimized, native implementations of commonly used operations that would be computationally expensive or impractical to implement in pure contract code.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-smart-contracts-launch-your-first-project.md", + "html_url": "https://docs.polkadot.com/tutorials/smart-contracts/launch-your-first-project/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. Kickstart your journey into smart contract development with this comprehensive guide. Learn how to create, deploy, and interact with contracts on Polkadot. Whether you're new to smart contracts or refining your skills, these guides provide a structured approach to launching your project.", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" - }, - { - "depth": 2, - "title": "How to Use Precompiles", - "anchor": "how-to-use-precompiles" - }, - { - "depth": 2, - "title": "Standard Precompiles in Polkadot Hub", - "anchor": "standard-precompiles-in-polkadot-hub" + "title": "Development Pathway", + "anchor": "development-pathway" }, { "depth": 2, - "title": "Conclusion", - "anchor": "conclusion" + "title": "In This Section", + "anchor": "in-this-section" } ], "stats": { - "chars": 5232, - "words": 532, - "headings": 4, - "estimated_token_count_total": 1192 + "chars": 1211, + "words": 161, + "headings": 2, + "estimated_token_count_total": 77 }, - "hash": "sha256:f17db5daca8feae70ce428e03a5a4870ef87dfc8571b07376327cd80d057b759", + "hash": "sha256:8d8fc5f794d4c793586cd3d412627f5e2fe76f182c75c3687abcf33deed5d65e", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-precompiles-xcm", - "title": "Interact with the XCM Precompile", - "slug": "smart-contracts-precompiles-xcm", + "id": "tutorials-smart-contracts", + "title": "Smart Contracts", + "slug": "tutorials-smart-contracts", "categories": [ - "Smart Contracts" + "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-precompiles-xcm.md", - "html_url": "https://docs.polkadot.com/smart-contracts/precompiles/xcm/", - "preview": "The [XCM (Cross-Consensus Message)](/parachains/interoperability/get-started/){target=\\_blank} precompile enables Polkadot Hub developers to access XCM functionality directly from their smart contracts using a Solidity interface.", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials-smart-contracts.md", + "html_url": "https://docs.polkadot.com/tutorials/smart-contracts/", + "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. Get started with deploying and interacting with smart contracts on Polkadot through practical, hands-on tutorials. Whether you're a beginner or an experienced developer, these guides will help you navigate the entire development lifecycle.", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" - }, - { - "depth": 2, - "title": "Precompile Interface", - "anchor": "precompile-interface" - }, - { - "depth": 2, - "title": "Interact with the XCM Precompile", - "anchor": "interact-with-the-xcm-precompile" - }, - { - "depth": 3, - "title": "Weigh a Message", - "anchor": "weigh-a-message" - }, - { - "depth": 3, - "title": "Execute a Message", - "anchor": "execute-a-message" - }, - { - "depth": 3, - "title": "Send a Message", - "anchor": "send-a-message" - }, - { - "depth": 2, - "title": "Cross Contract Calls", - "anchor": "cross-contract-calls" + "title": "What to Expect from These Tutorials", + "anchor": "what-to-expect-from-these-tutorials" }, { "depth": 2, - "title": "Conclusion", - "anchor": "conclusion" + "title": "Start Building", + "anchor": "start-building" }, { "depth": 2, - "title": "Next Steps", - "anchor": "next-steps" + "title": "In This Section", + "anchor": "in-this-section" } ], "stats": { - "chars": 10705, - "words": 1436, - "headings": 9, - "estimated_token_count_total": 2325 + "chars": 1057, + "words": 145, + "headings": 3, + "estimated_token_count_total": 130 }, - "hash": "sha256:c084190ea7d676128e7e399e8fe88598ca150f88d684db279a687ee1c3956120", + "hash": "sha256:66bc34a12c50539dde2ffc69fe66891f73d3e1a2da5833ada15e26744ff32209", "token_estimator": "heuristic-v1" }, { - "id": "smart-contracts-precompiles", - "title": "Advanced Functionalities via Precompiles", - "slug": "smart-contracts-precompiles", + "id": "tutorials", + "title": "Tutorials", + "slug": "tutorials", "categories": [ "Uncategorized" ], - "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-precompiles.md", - "html_url": "https://docs.polkadot.com/smart-contracts/precompiles/", - "preview": "!!! smartcontract \"PolkaVM Preview Release\" PolkaVM smart contracts with Ethereum compatibility are in **early-stage development and may be unstable or incomplete**. ## Introduction", + "raw_md_url": "https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/tutorials.md", + "html_url": "https://docs.polkadot.com/tutorials/", + "preview": "Welcome to the Polkadot Tutorials hub! Whether you’re building parachains, integrating system chains, or developing decentralized applications, these step-by-step guides are designed to help you achieve your goals efficiently and effectively.", "outline": [ { "depth": 2, - "title": "Introduction", - "anchor": "introduction" + "title": "Polkadot Zero to Hero", + "anchor": "polkadot-zero-to-hero" + }, + { + "depth": 3, + "title": "Parachain Developers", + "anchor": "parachain-developers" }, { "depth": 2, - "title": "What are Precompiles?", - "anchor": "what-are-precompiles" + "title": "Featured Tutorials", + "anchor": "featured-tutorials" }, { "depth": 2, - "title": "Conclusion", - "anchor": "conclusion" + "title": "In This Section", + "anchor": "in-this-section" } ], "stats": { - "chars": 2525, - "words": 328, - "headings": 3, - "estimated_token_count_total": 412 + "chars": 2501, + "words": 355, + "headings": 4, + "estimated_token_count_total": 590 }, - "hash": "sha256:a40e3f34f70db22bfe39e40d68dc5a53a726ce47cb73b602d8605355c61ffd22", + "hash": "sha256:a1d7789d44e4653e98ed41b8a13ea69e7733803c598ca850c9e2fc8f27a2b410", "token_estimator": "heuristic-v1" } ] \ No newline at end of file diff --git a/llms-full.jsonl b/llms-full.jsonl index 643cef3d9..a2ecb6103 100644 --- a/llms-full.jsonl +++ b/llms-full.jsonl @@ -422,9 +422,9 @@ {"page_id": "parachains-launch-a-parachain-set-up-the-parachain-template", "page_title": "Set Up the Polkadot SDK Parachain Template", "index": 5, "depth": 2, "title": "Compile the Runtime", "anchor": "compile-the-runtime", "start_char": 5097, "end_char": 6061, "estimated_token_count": 189, "token_estimator": "heuristic-v1", "text": "## Compile the Runtime\n\nNow that you understand the template structure, let's compile the runtime to ensure everything is working correctly.\n\n1. Compile the runtime:\n\n ```bash\n cargo build --release --locked\n ```\n\n !!!tip\n Initial compilation may take several minutes, depending on your machine specifications. Use the `--release` flag for improved runtime performance compared to the default `--debug` build. If you need to troubleshoot issues, the `--debug` build provides better diagnostics.\n \n For production deployments, consider using a dedicated `--profile production` flag - this can provide an additional 15-30% performance improvement over the standard `--release` profile.\n\n2. Upon successful compilation, you should see output indicating the build was successful. The compiled runtime will be located at:\n \n `./target/release/wbuild/parachain-template-runtime/parachain_template_runtime.compact.compressed.wasm`"} {"page_id": "parachains-launch-a-parachain-set-up-the-parachain-template", "page_title": "Set Up the Polkadot SDK Parachain Template", "index": 6, "depth": 2, "title": "Verify the Build", "anchor": "verify-the-build", "start_char": 6061, "end_char": 6394, "estimated_token_count": 71, "token_estimator": "heuristic-v1", "text": "## Verify the Build\n\nAfter compilation completes, verify that the runtime was created successfully by checking for the Wasm blob:\n\n```bash\nls -la ./target/release/wbuild/parachain-template-runtime/\n```\n\nYou should see the `parachain_template_runtime.compact.compressed.wasm` file in the output, confirming the build was successful."} {"page_id": "parachains-launch-a-parachain-set-up-the-parachain-template", "page_title": "Set Up the Polkadot SDK Parachain Template", "index": 7, "depth": 2, "title": "Run the Node Locally", "anchor": "run-the-node-locally", "start_char": 6394, "end_char": 8108, "estimated_token_count": 343, "token_estimator": "heuristic-v1", "text": "## Run the Node Locally\n\nAfter successfully compiling your runtime, you can spin up a local chain and produce blocks. This process will start your local parachain using the Polkadot Omni Node and allow you to interact with it. You'll first need to generate a chain specification that defines your network's identity, initial connections, and genesis state, providing the foundational configuration for how your nodes connect and what initial state they agree upon.\n\nFollow these steps to launch your node in development mode:\n\n1. Generate the chain specification file of your parachain:\n\n ```bash\n chain-spec-builder create -t development \\\n --relay-chain paseo \\\n --para-id 1000 \\\n --runtime ./target/release/wbuild/parachain-template-runtime/parachain_template_runtime.compact.compressed.wasm \\\n named-preset development\n ```\n\n2. Start the Omni Node with the generated chain spec. You'll start it in development mode (without a relay chain config), producing and finalizing blocks:\n\n ```bash\n polkadot-omni-node --chain ./chain_spec.json --dev\n ```\n\n The `--dev` option does the following:\n\n - Deletes all active data (keys, blockchain database, networking information) when stopped.\n - Ensures a clean working state each time you restart the node.\n\n3. Verify that your node is running by reviewing the terminal output. You should see log messages indicating block production and finalization.\n\n4. Confirm that your blockchain is producing new blocks by checking if the number after `finalized` is increasing in the output.\n\nThe details of the log output will be explored in a later tutorial. For now, knowing that your node is running and producing blocks is sufficient."} -{"page_id": "parachains-launch-a-parachain-set-up-the-parachain-template", "page_title": "Set Up the Polkadot SDK Parachain Template", "index": 8, "depth": 2, "title": "Interact with the Node", "anchor": "interact-with-the-node", "start_char": 8108, "end_char": 9674, "estimated_token_count": 412, "token_estimator": "heuristic-v1", "text": "## Interact with the Node\n\nWhen running the template node, it's accessible by default at `ws://localhost:9944`. To interact with your node using the [Polkadot.js Apps](https://polkadot.js.org/apps/#/explorer){target=\\_blank} interface, follow these steps:\n\n1. Open [Polkadot.js Apps](https://polkadot.js.org/apps/#/explorer){target=\\_blank} in your web browser and click the network icon (which should be the Polkadot logo) in the top left corner:\n \n ![](/images/parachains/launch-a-parachain/set-up-the-parachain-template/parachain-template-01.webp)\n\n2. Connect to your local node:\n\n 1. Scroll to the bottom and select **Development**.\n 2. Choose **Custom**.\n 3. Enter `ws://localhost:9944` in the **custom endpoint** input field.\n 4. Click the **Switch** button.\n \n ![](/images/parachains/launch-a-parachain/set-up-the-parachain-template/parachain-template-02.webp)\n\n3. Once connected, you should see **parachain-template-runtime** in the top left corner, with the interface displaying information about your local blockchain.\n \n ![](/images/parachains/launch-a-parachain/set-up-the-parachain-template/parachain-template-03.webp)\n\nYou are now connected to your local node and can interact with it through the Polkadot.js Apps interface. This tool enables you to explore blocks, execute transactions, and interact with your blockchain's features. For in-depth guidance on using the interface effectively, refer to the [Polkadot.js Guides](https://wiki.polkadot.com/general/polkadotjs/){target=\\_blank} available on the Polkadot Wiki."} -{"page_id": "parachains-launch-a-parachain-set-up-the-parachain-template", "page_title": "Set Up the Polkadot SDK Parachain Template", "index": 9, "depth": 2, "title": "Stop the Node", "anchor": "stop-the-node", "start_char": 9674, "end_char": 10180, "estimated_token_count": 115, "token_estimator": "heuristic-v1", "text": "## Stop the Node\n\nWhen you're done exploring your local node, you can stop it to remove any state changes you've made. Since you started the node with the `--dev` option, stopping the node will purge all persistent block data, allowing you to start fresh the next time.\n\nTo stop the local node:\n\n1. Return to the terminal window where the node output is displayed.\n2. Press `Control-C` to stop the running process.\n3. Verify that your terminal returns to the prompt in the `parachain-template` directory."} -{"page_id": "parachains-launch-a-parachain-set-up-the-parachain-template", "page_title": "Set Up the Polkadot SDK Parachain Template", "index": 10, "depth": 2, "title": "Where to Go Next", "anchor": "where-to-go-next", "start_char": 10180, "end_char": 10588, "estimated_token_count": 100, "token_estimator": "heuristic-v1", "text": "## Where to Go Next\n\n
\n\n- Tutorial __Deploy to Polkadot__\n\n ---\n\n Learn how to deploy your parachain template to a relay chain testnet. Configure your chain specification, register as a parachain, and start producing blocks.\n\n [:octicons-arrow-right-24: Get Started](/parachains/launch-a-parachain/deploy-to-polkadot.md)\n\n
"} +{"page_id": "parachains-launch-a-parachain-set-up-the-parachain-template", "page_title": "Set Up the Polkadot SDK Parachain Template", "index": 8, "depth": 2, "title": "Interact with the Node", "anchor": "interact-with-the-node", "start_char": 8108, "end_char": 9677, "estimated_token_count": 414, "token_estimator": "heuristic-v1", "text": "## Interact with the Node\n\nWhen running the template node, it's accessible by default at `ws://localhost:9944`. To interact with your node using the [Polkadot.js Apps](https://polkadot.js.org/apps/#/explorer){target=\\_blank} interface, follow these steps:\n\n1. Open [Polkadot.js Apps](https://polkadot.js.org/apps/#/explorer){target=\\_blank} in your web browser and click the network icon (which should be the Polkadot logo) in the top left corner:\n \n ![](/images/parachains/launch-a-parachain/set-up-the-parachain-template/parachain-template-01.webp)\n\n2. Connect to your local node:\n\n 1. Scroll to the bottom and select **Development**.\n 2. Choose **Custom**.\n 3. Enter `ws**: //localhost:9944` in the **custom endpoint** input field.\n 4. Click the **Switch** button.\n \n ![](/images/parachains/launch-a-parachain/set-up-the-parachain-template/parachain-template-02.webp)\n\n3. Once connected, you should see **parachain-template-runtime** in the top left corner, with the interface displaying information about your local blockchain.\n \n ![](/images/parachains/launch-a-parachain/set-up-the-parachain-template/parachain-template-03.webp)\n\nYou are now connected to your local node and can interact with it through the Polkadot.js Apps interface. This tool enables you to explore blocks, execute transactions, and interact with your blockchain's features. For in-depth guidance on using the interface effectively, refer to the [Polkadot.js Guides](https://wiki.polkadot.com/general/polkadotjs/){target=\\_blank} available on the Polkadot Wiki."} +{"page_id": "parachains-launch-a-parachain-set-up-the-parachain-template", "page_title": "Set Up the Polkadot SDK Parachain Template", "index": 9, "depth": 2, "title": "Stop the Node", "anchor": "stop-the-node", "start_char": 9677, "end_char": 10183, "estimated_token_count": 115, "token_estimator": "heuristic-v1", "text": "## Stop the Node\n\nWhen you're done exploring your local node, you can stop it to remove any state changes you've made. Since you started the node with the `--dev` option, stopping the node will purge all persistent block data, allowing you to start fresh the next time.\n\nTo stop the local node:\n\n1. Return to the terminal window where the node output is displayed.\n2. Press `Control-C` to stop the running process.\n3. Verify that your terminal returns to the prompt in the `parachain-template` directory."} +{"page_id": "parachains-launch-a-parachain-set-up-the-parachain-template", "page_title": "Set Up the Polkadot SDK Parachain Template", "index": 10, "depth": 2, "title": "Where to Go Next", "anchor": "where-to-go-next", "start_char": 10183, "end_char": 10591, "estimated_token_count": 100, "token_estimator": "heuristic-v1", "text": "## Where to Go Next\n\n
\n\n- Tutorial __Deploy to Polkadot__\n\n ---\n\n Learn how to deploy your parachain template to a relay chain testnet. Configure your chain specification, register as a parachain, and start producing blocks.\n\n [:octicons-arrow-right-24: Get Started](/parachains/launch-a-parachain/deploy-to-polkadot.md)\n\n
"} {"page_id": "parachains-runtime-maintenance-runtime-upgrades", "page_title": "Runtime Upgrades", "index": 0, "depth": 2, "title": "Introduction", "anchor": "introduction", "start_char": 20, "end_char": 926, "estimated_token_count": 147, "token_estimator": "heuristic-v1", "text": "## Introduction\n\nOne of the defining features of Polkadot SDK-based blockchains is the ability to perform forkless runtime upgrades. Unlike traditional blockchains, which require hard forks and node coordination for upgrades, Polkadot networks enable seamless updates without network disruption.\n\nForkless upgrades are achieved through WebAssembly (Wasm) runtimes stored on-chain, which can be securely swapped and upgraded as part of the blockchain's state. By leveraging decentralized consensus, runtime updates can happen trustlessly, ensuring continuous improvement and evolution without halting operations.\n\nThis guide explains how Polkadot's runtime versioning, Wasm deployment, and storage migrations enable these upgrades, ensuring the blockchain evolves smoothly and securely. You'll also learn how different upgrade processes apply to solo chains and parachains, depending on the network setup."} {"page_id": "parachains-runtime-maintenance-runtime-upgrades", "page_title": "Runtime Upgrades", "index": 1, "depth": 2, "title": "How Runtime Upgrades Work", "anchor": "how-runtime-upgrades-work", "start_char": 926, "end_char": 1650, "estimated_token_count": 165, "token_estimator": "heuristic-v1", "text": "## How Runtime Upgrades Work\n\nIn FRAME, the [`system`](https://paritytech.github.io/polkadot-sdk/master/frame_system/index.html){target=\\_blank} pallet uses the [`set_code`](https://paritytech.github.io/polkadot-sdk/master/frame_system/pallet/enum.Call.html#variant.set_code){target=\\_blank} extrinsic to update the Wasm code for the runtime. This method allows solo chains to upgrade without disruption. \n\nFor parachains, upgrades are more complex. Parachains must first call `authorize_upgrade`, followed by `apply_authorized_upgrade`, to ensure the relay chain approves and applies the changes. Additionally, changes to current functionality that impact storage often require a [storage migration](#storage-migrations)."} {"page_id": "parachains-runtime-maintenance-runtime-upgrades", "page_title": "Runtime Upgrades", "index": 2, "depth": 3, "title": "Runtime Versioning", "anchor": "runtime-versioning", "start_char": 1650, "end_char": 4915, "estimated_token_count": 664, "token_estimator": "heuristic-v1", "text": "### Runtime Versioning\n\nThe executor is the component that selects the runtime execution environment to communicate with. Although you can override the default execution strategies for custom scenarios, in most cases, the executor selects the appropriate binary to use by evaluating and comparing key parameters from the native and Wasm runtime binaries.\n\nThe runtime includes a [runtime version struct](https://paritytech.github.io/polkadot-sdk/master/sp_version/struct.RuntimeVersion.html){target=\\_blank} to provide the needed parameter information to the executor process. A sample runtime version struct might look as follows:\n\n```rust\npub const VERSION: RuntimeVersion = RuntimeVersion {\n spec_name: create_runtime_str!(\"node-template\"),\n impl_name: create_runtime_str!(\"node-template\"),\n authoring_version: 1,\n spec_version: 1,\n impl_version: 1,\n apis: RUNTIME_API_VERSIONS,\n transaction_version: 1,\n};\n```\n\nThe struct provides the following parameter information to the executor:\n\n- **`spec_name`**: The identifier for the different runtimes.\n- **`impl_name`**: The name of the implementation of the spec. Serves only to differentiate code of different implementation teams.\n- **`authoring_version`**: The version of the authorship interface. An authoring node won't attempt to author blocks unless this is equal to its native runtime.\n- **`spec_version`**: The version of the runtime specification. A full node won't attempt to use its native runtime in substitute for the on-chain Wasm runtime unless the `spec_name`, `spec_version`, and `authoring_version` are all the same between the Wasm and native binaries. Updates to the `spec_version` can be automated as a CI process. This parameter is typically incremented when there's an update to the `transaction_version`.\n- **`impl_version`**: The version of the implementation of the specification. Nodes can ignore this. It is only used to indicate that the code is different. As long as the `authoring_version` and the `spec_version` are the same, the code might have changed, but the native and Wasm binaries do the same thing. In general, only non-logic-breaking optimizations would result in a change of the `impl_version`.\n- **`transaction_version`**: The version of the interface for handling transactions. This parameter can be useful to synchronize firmware updates for hardware wallets or other signing devices to verify that runtime transactions are valid and safe to sign. This number must be incremented if there is a change in the index of the pallets in the `construct_runtime!` macro or if there are any changes to dispatchable functions, such as the number of parameters or parameter types. If `transaction_version` is updated, then the `spec_version` must also be updated.\n- **`apis`**: A list of supported [runtime APIs](https://paritytech.github.io/polkadot-sdk/master/sp_api/macro.impl_runtime_apis.html){target=\\_blank} along with their versions.\n\nThe executor follows the same consensus-driven logic for both the native runtime and the Wasm runtime before deciding which to execute. Because runtime versioning is a manual process, there is a risk that the executor could make incorrect decisions if the runtime version is misrepresented or incorrectly defined."} @@ -849,13 +849,6 @@ {"page_id": "reference-tools-xcm-tools", "page_title": "XCM Tools", "index": 4, "depth": 3, "title": "Astar XCM Tools", "anchor": "astar-xcm-tools", "start_char": 2667, "end_char": 4207, "estimated_token_count": 369, "token_estimator": "heuristic-v1", "text": "### Astar XCM Tools\n\nThe [Astar parachain](https://github.com/AstarNetwork/Astar/tree/master){target=\\_blank} offers a crate with a set of utilities for interacting with the XCM protocol. The [xcm-tools](https://github.com/AstarNetwork/Astar/tree/master/bin/xcm-tools){target=\\_blank} crate provides a straightforward method for users to locate a sovereign account or calculate an XC20 asset ID. Some commands included by the xcm-tools crate allow users to perform the following tasks:\n\n- **Sovereign accounts**: Obtain the sovereign account address for any parachain, either on the Relay Chain or for sibling parachains, using a simple command.\n- **XC20 EVM addresses**: Generate XC20-compatible Ethereum addresses for assets by entering the asset ID, making it easy to integrate assets across Ethereum-compatible environments.\n- **Remote accounts**: Retrieve remote account addresses needed for multi-location compatibility, using flexible options to specify account types and parachain IDs.\n\nTo start using these tools, clone the [Astar repository](https://github.com/AstarNetwork/Astar){target=\\_blank} and compile the xcm-tools package:\n\n```bash\ngit clone https://github.com/AstarNetwork/Astar &&\ncd Astar &&\ncargo build --release -p xcm-tools\n```\n\nAfter compiling, verify the setup with the following command:\n\n```bash\n./target/release/xcm-tools --help\n```\nFor more details on using Astar xcm-tools, consult the [official documentation](https://docs.astar.network/docs/learn/interoperability/xcm/integration/tools/){target=\\_blank}."} {"page_id": "reference-tools-xcm-tools", "page_title": "XCM Tools", "index": 5, "depth": 3, "title": "Chopsticks", "anchor": "chopsticks", "start_char": 4207, "end_char": 4517, "estimated_token_count": 65, "token_estimator": "heuristic-v1", "text": "### Chopsticks\n\nThe Chopsticks library provides XCM functionality for testing XCM messages across networks, enabling you to fork multiple parachains along with a relay chain. For further details, see the [Chopsticks documentation](/tutorials/polkadot-sdk/testing/fork-live-chains/){target=\\_blank} about XCM."} {"page_id": "reference-tools-xcm-tools", "page_title": "XCM Tools", "index": 6, "depth": 3, "title": "Moonbeam XCM SDK", "anchor": "moonbeam-xcm-sdk", "start_char": 4517, "end_char": 6146, "estimated_token_count": 385, "token_estimator": "heuristic-v1", "text": "### Moonbeam XCM SDK\n\nThe [Moonbeam XCM SDK](https://github.com/moonbeam-foundation/xcm-sdk){target=\\_blank} enables developers to easily transfer assets between chains, either between parachains or between a parachain and the relay chain, within the Polkadot/Kusama ecosystem. With the SDK, you don't need to worry about determining the [Multilocation](https://github.com/polkadot-fellows/xcm-format?tab=readme-ov-file#7-universal-consensus-location-identifiers){target=\\_blank} of the origin or destination assets or which extrinsics are used on which networks.\n\nThe SDK consists of two main packages:\n\n- **[XCM SDK](https://github.com/moonbeam-foundation/xcm-sdk/tree/main/packages/sdk){target=\\_blank}**: Core SDK for executing XCM transfers between chains in the Polkadot/Kusama ecosystem.\n- **[MRL SDK](https://github.com/moonbeam-foundation/xcm-sdk/tree/main/packages/mrl){target=\\_blank}**: Extension of the XCM SDK for transferring liquidity into and across the Polkadot ecosystem from other ecosystems like Ethereum.\n\nKey features include:\n\n- **Simplified asset transfers**: Abstracts away complex multilocation determinations and extrinsic selection.\n- **Cross-ecosystem support**: Enables transfers between Polkadot/Kusama chains and external ecosystems.\n- **Developer-friendly API**: Provides intuitive interfaces for cross-chain functionality.\n- **Comprehensive documentation**: Includes usage guides and API references for both packages.\n\nFor detailed usage examples and API documentation, visit the [official Moonbeam XCM SDK documentation](https://moonbeam-foundation.github.io/xcm-sdk/latest/){target=\\_blank}."} -{"page_id": "reference", "page_title": "Technical Reference Overview", "index": 0, "depth": 2, "title": "Introduction", "anchor": "introduction", "start_char": 0, "end_char": 1097, "estimated_token_count": 199, "token_estimator": "heuristic-v1", "text": "## Introduction\n\nThe Technical Reference section provides comprehensive documentation of Polkadot's architecture, core concepts, and development tooling. Whether you're exploring how Polkadot's relay chain coordinates parachains, understanding governance mechanisms, or building applications on the network, this reference covers the technical foundations you need.\n\nPolkadot is a multi-chain network that enables diverse, interconnected blockchains to share security and communicate seamlessly. Understanding how these components interact from the [relay chain](/polkadot-protocol/glossary#relay-chain){target=\\_blank} that validates [parachains](/polkadot-protocol/glossary#parachain){target=\\_blank} to the [governance](/reference/glossary#governance){target=\\_blank} mechanisms that evolve the protocol is essential for developers, validators, and network participants.\n\nThis guide organizes technical documentation across five core areas: Polkadot Hub, Parachains, On-Chain Governance, Glossary, and Tools, each providing detailed information on different aspects of the Polkadot ecosystem."} -{"page_id": "reference", "page_title": "Technical Reference Overview", "index": 1, "depth": 2, "title": "Polkadot Hub", "anchor": "polkadot-hub", "start_char": 1097, "end_char": 2378, "estimated_token_count": 247, "token_estimator": "heuristic-v1", "text": "## Polkadot Hub\n\n[Polkadot Hub](/reference/polkadot-hub/){target=\\_blank} is the entry point to Polkadot for all users and application developers. It provides access to essential Web3 services, including smart contracts, staking, governance, identity management, and cross-ecosystem interoperability—without requiring you to deploy or manage a parachain.\n\nThe Hub encompasses a set of core functionality that enables developers and users to build and interact with applications on Polkadot. Key capabilities include:\n\n- **Smart contracts**: Deploy Ethereum-compatible smart contracts and build decentralized applications.\n- **Assets and tokens**: Create, manage, and transfer fungible tokens and NFTs across the ecosystem.\n- **Staking**: Participate in network security and earn rewards by staking DOT.\n- **Governance**: Vote on proposals and participate in Polkadot's decentralized decision-making through OpenGov.\n- **Identity services**: Register and manage on-chain identities, enabling access to governance roles and network opportunities.\n- **Cross-chain interoperability**: Leverage XCM messaging to interact securely with other chains in the Polkadot ecosystem.\n- **Collectives and DAOs**: Participate in governance collectives and decentralized autonomous organizations."} -{"page_id": "reference", "page_title": "Technical Reference Overview", "index": 2, "depth": 2, "title": "Parachains", "anchor": "parachains", "start_char": 2378, "end_char": 3697, "estimated_token_count": 293, "token_estimator": "heuristic-v1", "text": "## Parachains\n\n[Parachains](/reference/parachains/){target=\\_blank} are specialized blockchains that connect to the Polkadot relay chain, inheriting its security while maintaining their own application-specific logic. The parachains documentation covers:\n\n- **Accounts**: Deep dive into account types, storage, and management on parachains.\n- **Blocks, transactions and fees**: Understand block production, transaction inclusion, and fee mechanisms.\n- **Consensus**: Learn how parachain blocks are validated and finalized through the relay chain's consensus.\n- **Chain data**: Explore data structures, storage layouts, and state management.\n- **Cryptography**: Study cryptographic primitives used in Polkadot SDK-based chains.\n- **Data encoding**: Understand how data is encoded and decoded for blockchain compatibility.\n- **Networks**: Learn about networking protocols and peer-to-peer communication.\n- **Interoperability**: Discover [Cross-Consensus Messaging (XCM)](/parachains/interoperability/get-started/){target=\\_blank}, the standard for cross-chain communication.\n- **Randomness**: Understand how randomness is generated and used in Polkadot chains.\n- **Node and runtime**: Learn about parachain nodes, runtime environments, and the [Polkadot SDK](https://github.com/paritytech/polkadot-sdk){target=\\_blank}."} -{"page_id": "reference", "page_title": "Technical Reference Overview", "index": 3, "depth": 2, "title": "On-Chain Governance", "anchor": "on-chain-governance", "start_char": 3697, "end_char": 4577, "estimated_token_count": 170, "token_estimator": "heuristic-v1", "text": "## On-Chain Governance\n\n[On-Chain governance](/reference/governance/){target=\\_blank} is the decentralized decision-making mechanism for the Polkadot network. It manages the evolution and modification of the network's runtime logic, enabling community oversight and approval for proposed changes. The governance documentation details:\n\n- **OpenGov framework**: Understand Polkadot's next-generation governance system with enhanced delegation, flexible tracks, and simultaneous referendums.\n- **Origins and tracks**: Learn how governance proposals are categorized, prioritized, and executed based on their privilege level and complexity.\n- **Voting and delegation**: Explore conviction voting, vote delegation, and how token holders participate in governance.\n- **Governance evolution**: See how Polkadot's governance has evolved from Governance V1 to the current OpenGov system."} -{"page_id": "reference", "page_title": "Technical Reference Overview", "index": 4, "depth": 2, "title": "Glossary", "anchor": "glossary", "start_char": 4577, "end_char": 5018, "estimated_token_count": 90, "token_estimator": "heuristic-v1", "text": "## Glossary\n\nThe [Glossary](/reference/glossary/){target=\\_blank} provides quick-reference definitions for Polkadot-specific terminology. Essential terms include:\n\n- Blockchain concepts (blocks, transactions, state)\n- Consensus mechanisms (validators, collators, finality)\n- Polkadot-specific terms (relay chain, parachain, XCM, FRAME)\n- Network components (nodes, runtimes, storage)\n- Governance terminology (origins, tracks, referendums)"} -{"page_id": "reference", "page_title": "Technical Reference Overview", "index": 5, "depth": 2, "title": "Tools", "anchor": "tools", "start_char": 5018, "end_char": 6285, "estimated_token_count": 349, "token_estimator": "heuristic-v1", "text": "## Tools\n\nThe [Tools](/reference/tools/){target=\\_blank} section documents essential development and interaction tools for the Polkadot ecosystem:\n\n- **Light clients**: Lightweight solutions for interacting with the network without running full nodes.\n- **JavaScript/TypeScript tools**: Libraries like [Polkadot.js API](/reference/tools/polkadot-js-api/){target=\\_blank} and [PAPI](/reference/tools/papi/){target=\\_blank} for building applications.\n- **Rust tools**: [Polkadart](/reference/tools/polkadart/){target=\\_blank} and other Rust-based libraries for SDK development.\n- **Python tools**: [py-substrate-interface](/reference/tools/py-substrate-interface/){target=\\_blank} for Python developers.\n- **Testing and development**: Tools like [Moonwall](/reference/tools/moonwall/){target=\\_blank}, [Chopsticks](/reference/tools/chopsticks/){target=\\_blank}, and [Omninode](/reference/tools/omninode/){target=\\_blank} for smart contract and parachain testing.\n- **Indexing and monitoring**: [Sidecar](/reference/tools/sidecar/){target=\\_blank} for data indexing and [Dedot](/reference/tools/dedot/){target=\\_blank} for substrate interaction.\n- **Cross-chain tools**: [ParaSpell](/reference/tools/paraspell/){target=\\_blank} for XCM integration and asset transfers."} -{"page_id": "reference", "page_title": "Technical Reference Overview", "index": 6, "depth": 2, "title": "Where to Go Next", "anchor": "where-to-go-next", "start_char": 6285, "end_char": 7648, "estimated_token_count": 334, "token_estimator": "heuristic-v1", "text": "## Where to Go Next\n\nFor detailed exploration of specific areas, proceed to any of the main sections:\n\n
\n\n- Learn **Polkadot Hub**\n\n ---\n\n Understand the relay chain's role in coordinating parachains, providing shared security, and enabling governance.\n\n [:octicons-arrow-right-24: Reference](/reference/polkadot-hub/)\n\n- Learn **Parachains**\n\n ---\n\n Deep dive into parachain architecture, consensus, data structures, and building application-specific blockchains.\n\n [:octicons-arrow-right-24: Reference](/reference/parachains/)\n\n- Learn **On-Chain Governance**\n\n ---\n\n Explore Polkadot's decentralized governance framework and how to participate in network decision-making.\n\n [:octicons-arrow-right-24: Reference](/reference/governance/)\n\n- Guide **Glossary**\n\n ---\n\n Quick reference for Polkadot-specific terminology and concepts used throughout the documentation.\n\n [:octicons-arrow-right-24: Reference](/reference/glossary/)\n\n- Guide **Tools**\n\n ---\n\n Discover development tools, libraries, and frameworks for building and interacting with Polkadot.\n\n [:octicons-arrow-right-24: Reference](/reference/tools/)\n\n
"} {"page_id": "smart-contracts-connect", "page_title": "Connect to Polkadot", "index": 0, "depth": 2, "title": "Networks Details", "anchor": "networks-details", "start_char": 951, "end_char": 1604, "estimated_token_count": 137, "token_estimator": "heuristic-v1", "text": "## Networks Details\n\nDevelopers can leverage smart contracts across diverse networks, from TestNets to MainNet. This section outlines the network specifications and connection details for each environment.\n\n=== \"Polkadot Hub TestNet\"\n\n Network name\n\n ```text\n Polkadot Hub TestNet\n ```\n\n ---\n\n Currency symbol\n \n ```text\n PAS\n ```\n\n ---\n \n Chain ID\n \n ```text\n 420420422\n ```\n\n ---\n \n RPC URL\n \n ```text\n https://testnet-passet-hub-eth-rpc.polkadot.io\n ```\n\n ---\n \n Block explorer URL\n \n ```text\n https://blockscout-passet-hub.parity-testnet.parity.io/\n ```"} {"page_id": "smart-contracts-connect", "page_title": "Connect to Polkadot", "index": 1, "depth": 2, "title": "Test Tokens", "anchor": "test-tokens", "start_char": 1604, "end_char": 2618, "estimated_token_count": 233, "token_estimator": "heuristic-v1", "text": "## Test Tokens\n\nYou will need testnet tokens to perform transactions and engage with smart contracts on any chain. Here's how to obtain Paseo (PAS) tokens for testing purposes:\n\n1. Navigate to the [Polkadot Faucet](https://faucet.polkadot.io/?parachain=1111){target=\\_blank}. If the desired network is not already selected, choose it from the Network drop-down.\n\n2. Copy your address linked to the TestNet and paste it into the designated field.\n\n ![](/images/smart-contracts/connect/connect-to-polkadot-01.webp)\n\n3. Click the **Get Some PASs** button to request free test PAS tokens. These tokens will be sent to your wallet shortly.\n\n ![](/images/smart-contracts/connect/connect-to-polkadot-02.webp)\n\nNow that you have obtained PAS tokens in your wallet, you’re ready to deploy and interact with smart contracts on Polkadot Hub TestNet! These tokens will allow you to pay for gas fees when executing transactions, deploying contracts, and testing your dApp functionality in a secure testnet environment."} {"page_id": "smart-contracts-connect", "page_title": "Connect to Polkadot", "index": 2, "depth": 2, "title": "Where to Go Next", "anchor": "where-to-go-next", "start_char": 2618, "end_char": 3459, "estimated_token_count": 188, "token_estimator": "heuristic-v1", "text": "## Where to Go Next\n\nFor your next steps, explore the various smart contract guides demonstrating how to use and integrate different tools and development environments into your workflow.\n\n
\n\n- Guide __Deploy your first contract with Remix__\n\n ---\n\n Explore the smart contract development and deployment process on Polkadot Hub using the Remix IDE.\n\n [:octicons-arrow-right-24: Build with Remix IDE](/smart-contracts/dev-environments/remix/get-started/)\n\n- Guide __Interact with the blockchain with viem__\n\n ---\n\n Use viem for interacting with Ethereum-compatible chains, to deploy and interact with smart contracts on Polkadot Hub.\n\n [:octicons-arrow-right-24: Build with viem](/smart-contracts/libraries/viem/)\n\n
"} @@ -973,20 +966,30 @@ {"page_id": "smart-contracts-cookbook-smart-contracts-deploy-nft-remix", "page_title": "Deploy an NFT to Polkadot Hub with Remix", "index": 4, "depth": 2, "title": "Compile", "anchor": "compile", "start_char": 2209, "end_char": 2528, "estimated_token_count": 88, "token_estimator": "heuristic-v1", "text": "## Compile\n\n1. Navigate to the **Solidity Compiler** tab (third icon in the left sidebar).\n2. Click **Compile MyNFT.sol** or press `Ctrl+S`.\n\n![](/images/smart-contracts/cookbook/smart-contracts/deploy-nft/remix/remix-02.webp)\n\nCompilation errors and warnings appear in the terminal panel at the bottom of the screen."} {"page_id": "smart-contracts-cookbook-smart-contracts-deploy-nft-remix", "page_title": "Deploy an NFT to Polkadot Hub with Remix", "index": 5, "depth": 2, "title": "Deploy", "anchor": "deploy", "start_char": 2528, "end_char": 3157, "estimated_token_count": 163, "token_estimator": "heuristic-v1", "text": "## Deploy\n\n1. Navigate to the **Deploy & Run Transactions** tab.\n2. Click the **Environment** dropdown, select **Browser Extension**, and click on **Injected Provider - MetaMask**.\n\n ![](/images/smart-contracts/cookbook/smart-contracts/deploy-nft/remix/remix-03.webp)\n\n3. In the deploy section, enter the initial owner address in the constructor parameter field.\n4. Click **Deploy**.\n\n ![](/images/smart-contracts/cookbook/smart-contracts/deploy-nft/remix/remix-04.webp)\n\n5. Approve the transaction in your MetaMask wallet.\n\nYour deployed contract will appear in the **Deployed Contracts** section, ready for interaction."} {"page_id": "smart-contracts-cookbook-smart-contracts-deploy-nft-remix", "page_title": "Deploy an NFT to Polkadot Hub with Remix", "index": 6, "depth": 2, "title": "Where to Go Next", "anchor": "where-to-go-next", "start_char": 3157, "end_char": 3754, "estimated_token_count": 163, "token_estimator": "heuristic-v1", "text": "## Where to Go Next\n\n
\n\n- Guide __Verify Your Contract__\n\n ---\n\n Now that you've deployed an NFT contract, learn how to verify it with Remix.\n\n [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/remix/verify-a-contract/)\n\n- Guide __Deploy an ERC-20__\n\n ---\n\n Walk through deploying a fully-functional ERC-20 to the Polkadot Hub using Remix.\n\n [:octicons-arrow-right-24: Get Started](/smart-contracts/cookbook/smart-contracts/deploy-erc20/remix/)\n\n
"} -{"page_id": "smart-contracts-cookbook", "page_title": "Smart Contracts Cookbook Index", "index": 0, "depth": 2, "title": "Get Tokens from the Faucet", "anchor": "get-tokens-from-the-faucet", "start_char": 222, "end_char": 796, "estimated_token_count": 236, "token_estimator": "heuristic-v1", "text": "## Get Tokens from the Faucet\n\n| Title | Difficulty | Tools | Description |\n|------------------------------------|:-----------:|-------|-----------------------------------------------------------------------------------------------------------------------|\n| [Faucet](/smart-contracts/faucet/) | 🟢 Beginner | N/A | Learn how to obtain test tokens from Polkadot faucets for development and testing purposes across different networks. |"} -{"page_id": "smart-contracts-cookbook", "page_title": "Smart Contracts Cookbook Index", "index": 1, "depth": 2, "title": "EVM/PVM Smart Contracts", "anchor": "evmpvm-smart-contracts", "start_char": 796, "end_char": 2051, "estimated_token_count": 461, "token_estimator": "heuristic-v1", "text": "## EVM/PVM Smart Contracts\n\n| Title | Difficulty | Tools | Description |\n|---------------------------------------------------------------------------------------------------|:-----------:|--------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [Deploy an ERC-20 to Polkadot Hub](/smart-contracts/cookbook/smart-contracts/deploy-erc20/remix/) | 🟢 Beginner | EVM Wallet, Polkadot Remix IDE | Deploy an ERC-20 token on Polkadot Hub using PolkaVM. This guide covers contract creation, compilation, deployment, and interaction via Polkadot Remix IDE. |\n| [Deploy an NFT to Polkadot Hub](/smart-contracts/cookbook/smart-contracts/deploy-nft/remix/) | 🟢 Beginner | EVM Wallet, Polkadot Remix IDE | Deploy an NFT on Polkadot Hub using PolkaVM and OpenZeppelin. Learn how to compile, deploy, and interact with your contract using Polkadot Remix IDE. |"} -{"page_id": "smart-contracts-cookbook", "page_title": "Smart Contracts Cookbook Index", "index": 2, "depth": 2, "title": "Port Ethereum DApps", "anchor": "port-ethereum-dapps", "start_char": 2051, "end_char": 2815, "estimated_token_count": 317, "token_estimator": "heuristic-v1", "text": "## Port Ethereum DApps\n\n| Title | Difficulty | Tools | Description |\n|-------------------------------------------------------------------------------------|:---------------:|---------|----------------------------------------------------------------------------------------------------------------------------------|\n| [Deploying Uniswap V2 on Polkadot](/smart-contracts/cookbook/eth-dapps/uniswap-v2/) | 🟡 Intermediate | Hardhat | Learn how to deploy and test Uniswap V2 on Polkadot Hub using Hardhat, bringing AMM-based token swaps to the Polkadot ecosystem. |"} -{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 0, "depth": 2, "title": "Overview", "anchor": "overview", "start_char": 996, "end_char": 1270, "estimated_token_count": 47, "token_estimator": "heuristic-v1", "text": "## Overview\n\nHardhat is a robust development environment for Ethereum-compatible chains that makes smart contract development more efficient. This guide walks you through the essentials of using Hardhat to create, compile, test, and deploy smart contracts on Polkadot Hub."} -{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 1, "depth": 2, "title": "Prerequisites", "anchor": "prerequisites", "start_char": 1270, "end_char": 1843, "estimated_token_count": 159, "token_estimator": "heuristic-v1", "text": "## Prerequisites\n\nBefore getting started, ensure you have:\n\n- [Node.js](https://nodejs.org/){target=\\_blank} (v16.0.0 or later) and npm installed.\n - Note: Use Node.js 22.5+ and npm version 10.9.0+ to avoid issues with the Polkadot plugin.\n- Basic understanding of Solidity programming.\n- Some PAS test tokens to cover transaction fees (easily obtainable from the [Polkadot faucet](https://faucet.polkadot.io/?parachain=1111){target=\\_blank}). To learn how to get test tokens, check out the [Test Tokens](/smart-contracts/connect/#test-tokens){target=\\_blank} section."} -{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 2, "depth": 2, "title": "Set Up Hardhat", "anchor": "set-up-hardhat", "start_char": 1843, "end_char": 3260, "estimated_token_count": 317, "token_estimator": "heuristic-v1", "text": "## Set Up Hardhat\n\n1. Create a new directory for your project and navigate into it:\n\n ```bash\n mkdir hardhat-example\n cd hardhat-example\n ```\n\n2. Initialize a new npm project:\n\n ```bash\n npm init -y\n ```\n\n3. To interact with Polkadot, Hardhat requires the following plugin to compile contracts to PolkaVM bytecode and to spawn a local node compatible with PolkaVM:\n\n ```bash\n npm install --save-dev @parity/hardhat-polkadot@0.1.9\n ```\n\n4. Create a Hardhat project:\n\n ```bash\n npx hardhat-polkadot init\n ```\n\n Select **Create a JavaScript project** when prompted and follow the instructions. After that, your project will be created with three main folders:\n\n - **`contracts`**: Where your Solidity smart contracts live.\n - **`test`**: Contains your test files that validate contract functionality.\n - **`ignition`**: Deployment modules for safely deploying your contracts to various networks.\n\n5. Add the following folder to the `.gitignore` file if it is not already there:\n\n ```bash\n echo '/ignition/deployments/' >> .gitignore\n ```\n\n6. Finish the setup by installing all the dependencies:\n\n ```bash\n npm install\n ```\n\n !!! note\n This last step is needed to set up the `hardhat-polkadot` plugin. It will install the `@parity/hardhat-polkadot` package and all its dependencies. In the future, the plugin will handle this automatically."} -{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 3, "depth": 2, "title": "Compile Your Contract", "anchor": "compile-your-contract", "start_char": 3260, "end_char": 6658, "estimated_token_count": 763, "token_estimator": "heuristic-v1", "text": "## Compile Your Contract\n\nThe plugin will compile your Solidity contracts for Solidity versions `0.8.0` and higher to be PolkaVM compatible. When compiling your contract, there are two ways to configure your compilation process:\n\n- **npm compiler**: Uses library [@parity/resolc](https://www.npmjs.com/package/@parity/resolc){target=\\_blank} for simplicity and ease of use.\n- **Binary compiler**: Uses your local `resolc` binary directly for more control and configuration options.\n\nTo compile your project, follow these instructions:\n\n1. Modify your Hardhat configuration file to specify which compilation process you will be using and activate the `polkavm` flag in the Hardhat network:\n\n === \"npm Configuration\"\n\n ```javascript title=\"hardhat.config.js\" hl_lines=\"9-11 14\"\n // hardhat.config.js\n require('@nomicfoundation/hardhat-toolbox');\n\n require('@parity/hardhat-polkadot');\n\n /** @type import('hardhat/config').HardhatUserConfig */\n module.exports = {\n solidity: '0.8.28',\n resolc: {\n compilerSource: 'npm',\n },\n networks: {\n hardhat: {\n polkavm: true,\n },\n },\n };\n ```\n\n === \"Binary Configuration\"\n\n ```javascript title=\"hardhat.config.js\" hl_lines=\"9-14 17\"\n // hardhat.config.js\n require('@nomicfoundation/hardhat-toolbox');\n\n require('@parity/hardhat-polkadot');\n\n /** @type import('hardhat/config').HardhatUserConfig */\n module.exports = {\n solidity: '0.8.28',\n resolc: {\n compilerSource: 'binary',\n settings: {\n compilerPath: 'INSERT_PATH_TO_RESOLC_COMPILER',\n },\n },\n networks: {\n hardhat: {\n polkavm: true,\n },\n },\n };\n ```\n\n For the binary configuration, replace `INSERT_PATH_TO_RESOLC_COMPILER` with the proper path to the binary. To obtain the binary, check the [releases](https://github.com/paritytech/revive/releases){target=\\_blank} section of the `resolc` compiler, and download the latest version.\n\n The default settings used can be found in the [`constants.ts`](https://github.com/paritytech/hardhat-polkadot/blob/v0.1.5/packages/hardhat-polkadot-resolc/src/constants.ts#L8-L23){target=\\_blank} file of the `hardhat-polkadot` source code. You can change them according to your project needs. Generally, the recommended settings for optimized outputs are the following:\n\n ```javascript title=\"hardhat.config.js\" hl_lines=\"4-10\"\n resolc: {\n ...\n settings: {\n optimizer: {\n enabled: true,\n parameters: 'z',\n fallbackOz: true,\n runs: 200,\n },\n standardJson: true,\n },\n ...\n }\n ```\n\n You can check the [`ResolcConfig`](https://github.com/paritytech/hardhat-polkadot/blob/v0.1.5/packages/hardhat-polkadot-resolc/src/types.ts#L26){target=\\_blank} for more information about compilation settings.\n\n2. Compile the contract with Hardhat:\n\n ```bash\n npx hardhat compile\n ```\n\n3. After successful compilation, you'll see the artifacts generated in the `artifacts-pvm` directory:\n\n ```bash\n ls artifacts-pvm/contracts/*.sol/\n ```\n\n You should see JSON files containing the contract ABI and bytecode of the contracts you compiled."} -{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 4, "depth": 2, "title": "Set Up a Testing Environment", "anchor": "set-up-a-testing-environment", "start_char": 6658, "end_char": 10710, "estimated_token_count": 1069, "token_estimator": "heuristic-v1", "text": "## Set Up a Testing Environment\n\nHardhat allows you to spin up a local testing environment to test and validate your smart contract functionalities before deploying to live networks. The `hardhat-polkadot` plugin provides the possibility to spin up a local node with an ETH-RPC adapter for running local tests.\n\nFor complete isolation and control over the testing environment, you can configure Hardhat to work with a fresh local Substrate node. This approach is ideal when you want to test in a clean environment without any existing state or when you need specific node configurations.\n\nConfigure a local node setup by adding the node binary path along with the ETH-RPC adapter path:\n\n```javascript title=\"hardhat.config.js\" hl_lines=\"12-20\"\n// hardhat.config.js\nrequire('@nomicfoundation/hardhat-toolbox');\n\nrequire('@parity/hardhat-polkadot');\n/** @type import('hardhat/config').HardhatUserConfig */\nmodule.exports = {\n ...\n networks: {\n hardhat: {\n polkavm: true,\n nodeConfig: {\n nodeBinaryPath: 'INSERT_PATH_TO_SUBSTRATE_NODE',\n rpcPort: 8000,\n dev: true,\n },\n adapterConfig: {\n adapterBinaryPath: 'INSERT_PATH_TO_ETH_RPC_ADAPTER',\n dev: true,\n },\n },\n },\n};\n```\n\nReplace `INSERT_PATH_TO_SUBSTRATE_NODE` and `INSERT_PATH_TO_ETH_RPC_ADAPTER` with the actual paths to your compiled binaries. The `dev: true` flag configures both the node and adapter for development mode. To obtain these binaries, check the [Installation](/smart-contracts/dev-environments/local-dev-node/#install-the-substrate-node-and-eth-rpc-adapter){target=\\_blank} section on the Local Development Node page.\n\n!!! warning\n If you're using the default `hardhat.config.js` created by the `hardhat-polkadot` plugin, it includes a `forking` section pointing to the Polkadot Hub TestNet. When you run `npx hardhat node`, Hardhat will start a fork of that network. To use your local node instead, comment out the `forking` section; otherwise, `npx hardhat node` will continue to use the forked network even if a local node is defined in the configuration.\n\nOnce configured, start your chosen testing environment with:\n\n```bash\nnpx hardhat node\n```\n\nThis command will launch either the forked network or local node (depending on your configuration) along with the ETH-RPC adapter, providing you with a complete testing environment ready for contract deployment and interaction. By default, the Substrate node will be running on `localhost:8000` and the ETH-RPC adapter on `localhost:8545`.\n\nThe output will be something like this:\n\n
\n npx hardhat node\n
\n Starting server at 127.0.0.1:8000\n ../bin/substrate-node --rpc-port=8000 --dev\n Starting the Eth RPC Adapter at 127.0.0.1:8545\n ../bin/eth-rpc --node-rpc-url=ws://localhost:8000 --dev\n 2025-05-29 13:00:32 Running in --dev mode, RPC CORS has been disabled.\n 2025-05-29 13:00:32 Running in --dev mode, RPC CORS has been disabled.\n 2025-05-29 13:00:32 🌐 Connecting to node at: ws://localhost:8000 ...\n 2025-05-29 13:00:32 Substrate Node\n 2025-05-29 13:00:32 ✌️ version 3.0.0-dev-f73c228b7a1\n 2025-05-29 13:00:32 ❤️ by Parity Technologies <admin@parity.io>, 2017-2025\n 2025-05-29 13:00:32 📋 Chain specification: Development\n 2025-05-29 13:00:32 🏷 Node name: electric-activity-4221\n 2025-05-29 13:00:32 👤 Role: AUTHORITY\n 2025-05-29 13:00:32 💾 Database: RocksDb at /var/folders/f4/7rdt2m9d7j361dm453cpggbm0000gn/T/substrateOaoecu/chains/dev/db/full\n 2025-05-29 13:00:36 [0] 💸 generated 1 npos voters, 1 from validators and 0 nominators\n ...\n
"} -{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 5, "depth": 2, "title": "Test Your Contract", "anchor": "test-your-contract", "start_char": 10710, "end_char": 11609, "estimated_token_count": 224, "token_estimator": "heuristic-v1", "text": "## Test Your Contract\n\nWhen testing your contract, be aware that [`@nomicfoundation/hardhat-toolbox/network-helpers`](https://hardhat.org/hardhat-network-helpers/docs/overview){target=\\_blank} is not fully compatible with Polkadot Hub's available RPCs. Specifically, Hardhat-only helpers like `time` and `loadFixture` may not work due to missing RPC calls in the node. For more details, refer to the [Compatibility](https://github.com/paritytech/hardhat-polkadot/tree/main/packages/hardhat-polkadot-node#compatibility){target=\\_blank} section in the `hardhat-revive` docs. You should avoid using helpers like `time` and `loadFixture` when writing tests.\n\nTo run your test:\n\n1. Update the `hardhat.config.js` file accordingly to the [Set Up a Testing Environment](#set-up-a-testing-environment) section.\n\n2. Execute the following command to run your tests:\n\n ```bash\n npx hardhat test\n ```"} -{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 6, "depth": 2, "title": "Deploy to a Local Node", "anchor": "deploy-to-a-local-node", "start_char": 11609, "end_char": 12747, "estimated_token_count": 267, "token_estimator": "heuristic-v1", "text": "## Deploy to a Local Node\n\nBefore deploying to a live network, you can deploy your contract to a local node using [Ignition](https://hardhat.org/ignition/docs/getting-started#overview){target=\\_blank} modules:\n\n1. Update the Hardhat configuration file to add the local network as a target for local deployment:\n\n ```javascript title=\"hardhat.config.js\" hl_lines=\"13-16\"\n // hardhat.config.js\n require('@nomicfoundation/hardhat-toolbox');\n\n require('@parity/hardhat-polkadot');\n /** @type import('hardhat/config').HardhatUserConfig */\n module.exports = {\n ...\n networks: {\n hardhat: {\n ...\n },\n localNode: {\n polkavm: true,\n url: `http://127.0.0.1:8545`,\n },\n },\n },\n };\n ```\n\n2. Start a local node:\n\n ```bash\n npx hardhat node\n ```\n\n This command will spawn a local Substrate node along with the ETH-RPC adapter.\n\n3. In a new terminal window, deploy the contract using Ignition:\n\n ```bash\n npx hardhat ignition deploy ./ignition/modules/MyToken.js --network localNode\n ```"} -{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 7, "depth": 2, "title": "Deploying to a Live Network", "anchor": "deploying-to-a-live-network", "start_char": 12747, "end_char": 14963, "estimated_token_count": 489, "token_estimator": "heuristic-v1", "text": "## Deploying to a Live Network\n\nAfter testing your contract locally, you can deploy it to a live network. This guide will use the Polkadot Hub TestNet as the target network. Here's how to configure and deploy:\n\n1. Fund your deployment account with enough tokens to cover gas fees. In this case, the needed tokens are PAS (on Polkadot Hub TestNet). You can use the [Polkadot faucet](https://faucet.polkadot.io/?parachain=1111){target=\\_blank} to obtain testing tokens.\n\n2. Export your private key and save it in your Hardhat environment:\n\n ```bash\n npx hardhat vars set PRIVATE_KEY \"INSERT_PRIVATE_KEY\"\n ```\n\n Replace `INSERT_PRIVATE_KEY` with your actual private key. For further details on private key exportation, refer to the article [How to export an account's private key](https://support.metamask.io/configure/accounts/how-to-export-an-accounts-private-key/){target=\\_blank}.\n\n !!! warning\n Never reveal your private key, otherwise anyone with access to it can control your wallet and steal your funds. Store it securely and never share it publicly or commit it to version control systems.\n\n3. Check that your private key has been set up successfully by running:\n\n ```bash\n npx hardhat vars get PRIVATE_KEY\n ```\n\n4. Update your Hardhat configuration file with network settings for the Polkadot network you want to target:\n\n ```javascript title=\"hardhat.config.js\" hl_lines=\"18-22\"\n // hardhat.config.js\n require('@nomicfoundation/hardhat-toolbox');\n\n require('@parity/hardhat-polkadot');\n const { vars } = require('hardhat/config');\n\n /** @type import('hardhat/config').HardhatUserConfig */\n module.exports = {\n ...\n networks: {\n hardhat: {\n ...\n },\n localNode: {\n ...\n },\n polkadotHubTestnet: {\n polkavm: true,\n url: 'https://testnet-passet-hub-eth-rpc.polkadot.io',\n accounts: [vars.get('PRIVATE_KEY')],\n },\n },\n },\n };\n ```\n\n6. Deploy your contract using Ignition:\n\n ```bash\n npx hardhat ignition deploy ./ignition/modules/MyToken.js --network polkadotHubTestnet\n ```"} -{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 8, "depth": 2, "title": "Interacting with Your Contract", "anchor": "interacting-with-your-contract", "start_char": 14963, "end_char": 16763, "estimated_token_count": 426, "token_estimator": "heuristic-v1", "text": "## Interacting with Your Contract\n\nOnce deployed, you can create a script to interact with your contract. To do so, create a file called `scripts/interact.js` and add some logic to interact with the contract.\n\nFor example, for the default `MyToken.sol` contract, you can use the following file that connects to the contract at its address and retrieves the `unlockTime`, which represents when funds can be withdrawn. The script converts this timestamp into a readable date and logs it. It then checks the contract's balance and displays it. Finally, it attempts to call the withdrawal function on the contract, but it catches and logs the error message if the withdrawal is not yet allowed (e.g., before `unlockTime`).\n\n```javascript title=\"interact.js\"\nconst hre = require('hardhat');\n\nasync function main() {\n // Get the contract factory\n const MyToken = await hre.ethers.getContractFactory('MyToken');\n\n // Replace with your deployed contract address\n const contractAddress = 'INSERT_CONTRACT_ADDRESS';\n\n // Attach to existing contract\n const token = await MyToken.attach(contractAddress);\n\n // Get signers\n const [deployer] = await hre.ethers.getSigners();\n\n // Read contract state\n const name = await token.name();\n const symbol = await token.symbol();\n const totalSupply = await token.totalSupply();\n const balance = await token.balanceOf(deployer.address);\n\n console.log(`Token: ${name} (${symbol})`);\n console.log(\n `Total Supply: ${hre.ethers.formatUnits(totalSupply, 18)} tokens`,\n );\n console.log(\n `Deployer Balance: ${hre.ethers.formatUnits(balance, 18)} tokens`,\n );\n}\n\nmain().catch((error) => {\n console.error(error);\n process.exitCode = 1;\n});\n\n```\n\nRun your interaction script:\n\n```bash\nnpx hardhat run scripts/interact.js --network polkadotHubTestnet\n```"} -{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 9, "depth": 2, "title": "Upgrading the Plugin", "anchor": "upgrading-the-plugin", "start_char": 16763, "end_char": 17423, "estimated_token_count": 176, "token_estimator": "heuristic-v1", "text": "## Upgrading the Plugin\n\nIf you already have a Hardhat Polkadot project and want to upgrade to a newer version of the plugin, to avoid errors (for example, `Cannot find module 'run-container'`), you can clean your dependencies by running the following commands:\n\n```bash\nrm -rf node_modules package-lock.json\n```\n\nAfter that, you can upgrade the plugin to the latest version by running the following commands:\n\n```bash\nnpm install --save-dev @parity/hardhat-polkadot@latest\nnpm install\n```\n\nConsider using [Node.js](https://nodejs.org/){target=\\_blank} 22.18+ and [npm](https://www.npmjs.com/){target=\\_blank} version 10.9.0+ to avoid issues with the plugin."} -{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 10, "depth": 2, "title": "Where to Go Next", "anchor": "where-to-go-next", "start_char": 17423, "end_char": 18514, "estimated_token_count": 253, "token_estimator": "heuristic-v1", "text": "## Where to Go Next\n\nHardhat provides a powerful environment for developing, testing, and deploying smart contracts on Polkadot Hub. Its plugin architecture allows seamless integration with PolkaVM through the `hardhat-resolc` and `hardhat-revive-node` plugins.\n\nExplore more about smart contracts through these resources:\n\n
\n\n- Guide __Get Started with Smart Contracts__\n\n ---\n\n Learn how to get started with smart contracts\n\n [:octicons-arrow-right-24: Get Started](/smart-contracts/get-started/)\n\n- External __Hardhat Documentation__\n\n ---\n\n Learn more about Hardhat's advanced features and best practices.\n\n [:octicons-arrow-right-24: Get Started](https://hardhat.org/docs){target=\\_blank}\n\n- External __OpenZeppelin Contracts__\n\n ---\n\n Test your skills by deploying contracts with prebuilt templates.\n\n [:octicons-arrow-right-24: Get Started](https://www.openzeppelin.com/solidity-contracts){target=\\_blank}\n\n
"} +{"page_id": "smart-contracts-cookbook", "page_title": "Smart Contracts Cookbook Index", "index": 0, "depth": 2, "title": "Get Tokens from the Faucet", "anchor": "get-tokens-from-the-faucet", "start_char": 222, "end_char": 521, "estimated_token_count": 99, "token_estimator": "heuristic-v1", "text": "## Get Tokens from the Faucet\n\n| Title | Difficulty | Tools | Description |\n|-------|:----------:|-------|-------------|\n| [Faucet](/smart-contracts/faucet) | 🟢 Beginner | N/A | Learn how to obtain test tokens from Polkadot faucets for development and testing purposes across different networks. |"} +{"page_id": "smart-contracts-cookbook", "page_title": "Smart Contracts Cookbook Index", "index": 1, "depth": 2, "title": "EVM/PVM Smart Contracts", "anchor": "evmpvm-smart-contracts", "start_char": 521, "end_char": 1227, "estimated_token_count": 193, "token_estimator": "heuristic-v1", "text": "## EVM/PVM Smart Contracts\n\n| Title | Difficulty | Tools | Description |\n|-------|:----------:|-------|-------------|\n| [Deploy an ERC-20 to Polkadot Hub](/smart-contracts/cookbook/smart-contracts/deploy-erc20) | 🟢 Beginner | EVM Wallet, Polkadot Remix IDE | Deploy an ERC-20 token on Polkadot Hub using PolkaVM. This guide covers contract creation, compilation, deployment, and interaction via Polkadot Remix IDE. |\n| [Deploy an NFT to Polkadot Hub](/smart-contracts/cookbook/smart-contracts/deploy-nft) | 🟢 Beginner | EVM Wallet, Polkadot Remix IDE | Deploy an NFT on Polkadot Hub using PolkaVM and OpenZeppelin. Learn how to compile, deploy, and interact with your contract using Polkadot Remix IDE. |"} +{"page_id": "smart-contracts-cookbook", "page_title": "Smart Contracts Cookbook Index", "index": 2, "depth": 2, "title": "Port Ethereum DApps", "anchor": "port-ethereum-dapps", "start_char": 1227, "end_char": 1586, "estimated_token_count": 114, "token_estimator": "heuristic-v1", "text": "## Port Ethereum DApps\n\n| Title | Difficulty | Tools | Description |\n|-------|:----------:|-------|-------------|\n| [Deploying Uniswap V2 on Polkadot](/smart-contracts/cookbook/eth-dapps/uniswap-v2) | 🟡 Intermediate | Hardhat | Learn how to deploy and test Uniswap V2 on Polkadot Hub using Hardhat, bringing AMM-based token swaps to the Polkadot ecosystem. |"} +{"page_id": "smart-contracts-dev-environments-foundry-get-started", "page_title": "Use Foundry with Polkadot Hub", "index": 0, "depth": 2, "title": "Overview", "anchor": "overview", "start_char": 182, "end_char": 918, "estimated_token_count": 145, "token_estimator": "heuristic-v1", "text": "## Overview\n\nFoundry is a fast, modular, and extensible toolkit for Ethereum application development written in Rust. It provides a suite of command-line tools, including `forge` for compiling, testing, and deploying smart contracts and `cast` for interacting with blockchains.\n\n[`foundry-polkadot`](https://github.com/paritytech/foundry-polkadot/){target=\\_blank} is an adaptation explicitly engineered for the Polkadot Hub, tailored for developers already familiar with Foundry who seek to leverage its capabilities within the Polkadot ecosystem. Additionally, this guide offers detailed information on the `forge` and `cast` commands supported within `foundry-polkadot`, complete with simple, runnable examples for quick reference."} +{"page_id": "smart-contracts-dev-environments-foundry-get-started", "page_title": "Use Foundry with Polkadot Hub", "index": 1, "depth": 2, "title": "Installation", "anchor": "installation", "start_char": 918, "end_char": 1764, "estimated_token_count": 175, "token_estimator": "heuristic-v1", "text": "## Installation\n\nThe installation process is tailored for the Polkadot variant:\n\n- `foundry-polkadot` is installed via `foundryup-polkadot`, its dedicated installer. To get started, open your terminal and execute:\n\n ```bash\n curl -L https://raw.githubusercontent.com/paritytech/foundry-polkadot/refs/heads/master/foundryup/install | bash\n ```\n\n This command starts the installation of `foundryup-polkadot`. After installation, run the following command to download the precompiled `foundry-polkadot` binaries:\n\n ```bash\n foundryup-polkadot\n ```\n\n This command will install the `forge` and `cast` binaries, which are explained below. Windows users must use a Unix-like terminal environment such as Git BASH or Windows Subsystem for Linux (WSL), as PowerShell and Command Prompt are not currently supported by `foundryup`."} +{"page_id": "smart-contracts-dev-environments-foundry-get-started", "page_title": "Use Foundry with Polkadot Hub", "index": 2, "depth": 2, "title": "Compiler Integration", "anchor": "compiler-integration", "start_char": 1764, "end_char": 3194, "estimated_token_count": 317, "token_estimator": "heuristic-v1", "text": "## Compiler Integration\n\nA core divergence lies in the underlying Solidity compiler.\n\n- `foundry` is built to interface with the `solc` compiler, which targets Ethereum's Ethereum Virtual Machine (EVM).\n- `foundry-polkadot`, in contrast, introduces and primarily utilizes the `resolc` compiler to compile down Solidity contracts into PolkaVM bytecode. \n\n - **Command-Line Flag**: For commands that involve compilation (e.g., `forge build`), you can use the `--resolc` flag to enable `resolc` compilation. For example:\n\n ```bash\n forge build --resolc\n ```\n\n This command instructs Forge to use `resolc` instead of `solc`, generating bytecode compatible with PolkaVM.\n\n - **Configuration File**: Alternatively, you can configure `resolc` usage in the `foundry.toml` file. Add the following:\n\n ```toml\n [profile.default.resolc]\n resolc_compile = true\n ```\n\n Setting `resolc_compile = false` reverts to using `solc`, ensuring compatibility with Ethereum projects. By default, `foundry-polkadot` uses `solc` unless `resolc` is explicitly enabled. `resolc` also exposes specific options for fine-tuning the compilation process, such as `--use-resolc ` for specifying a compiler version or path, `-O, --resolc-optimizer-mode ` for setting optimization levels, and `--heap-size ` and `--stack-size ` for configuring contract memory."} +{"page_id": "smart-contracts-dev-environments-foundry-get-started", "page_title": "Use Foundry with Polkadot Hub", "index": 3, "depth": 2, "title": "Command-Line Interface (CLI)", "anchor": "command-line-interface-cli", "start_char": 3194, "end_char": 3571, "estimated_token_count": 85, "token_estimator": "heuristic-v1", "text": "## Command-Line Interface (CLI)\n\n`foundry-polkadot` preserves the familiar `forge` and `cast` subcommand structure. However, it's crucial to note that commands which involve compilation (such as `create`, `bind`, `build`, and `inspect`) will yield different output when `resolc` is utilized, as the generated bytecode is specifically designed for PolkaVM rather than the EVM."} +{"page_id": "smart-contracts-dev-environments-foundry-get-started", "page_title": "Use Foundry with Polkadot Hub", "index": 4, "depth": 2, "title": "Unsupported or Modified Features", "anchor": "unsupported-or-modified-features", "start_char": 3571, "end_char": 4537, "estimated_token_count": 189, "token_estimator": "heuristic-v1", "text": "## Unsupported or Modified Features\n\nNot all functionalities from the original Foundry are present or behave identically in `foundry-polkadot`:\n\n- **Currently unsupported**:\n - Compilation of Yul code is not yet supported.\n - Support for factory contracts deployment is a known issue that is currently unresolved.\n- **Broader feature limitations**: Integration with `Anvil` and `Chisel` (Foundry's local blockchain and EVM toolkit, respectively) is not available. This limitation directly impacts the support for several key commands, including `forge test` for running tests, `forge snapshot` for creating blockchain state snapshots, and `forge script` for complex deployment and interaction scripts.\n- **Modified feature**: The most notable modification is in the **compilation output**. When ``resolc`` is employed, the resulting bytecode will fundamentally differ from that generated by ``solc``, reflecting PolkaVM's distinct architectural requirements."} +{"page_id": "smart-contracts-dev-environments-foundry-get-started", "page_title": "Use Foundry with Polkadot Hub", "index": 5, "depth": 2, "title": "Set up a Project", "anchor": "set-up-a-project", "start_char": 4537, "end_char": 5517, "estimated_token_count": 223, "token_estimator": "heuristic-v1", "text": "## Set up a Project\n\nInitialize a new project using `forge init`:\n\n```bash\nforge init my-polkadot-project\ncd my-polkadot-project\n```\n\nThis command creates a complete project structure with the following components:\n\n- **`src/`**: Contains the Solidity smart contracts (includes a sample `Counter.sol` contract by default).\n- **`lib/`**: Houses external dependencies and libraries (`forge-std` testing library is included).\n- **`script/`**: Stores deployment and interaction scripts (includes `Counter.s.sol` deployment script by default).\n- **`test/`**: Contains your contract tests (includes `Counter.t.sol` test file by default).\n- **`foundry.toml`**: Main configuration file for compiler settings, network configurations, and project preferences.\n\nThe default project includes a simple `Counter` contract that demonstrates basic state management through increment and decrement functions, along with corresponding tests and deployment scripts to help you get started quickly."} +{"page_id": "smart-contracts-dev-environments-foundry-get-started", "page_title": "Use Foundry with Polkadot Hub", "index": 6, "depth": 2, "title": "Compile a Project", "anchor": "compile-a-project", "start_char": 5517, "end_char": 6260, "estimated_token_count": 146, "token_estimator": "heuristic-v1", "text": "## Compile a Project\n\nCompile contracts using `forge build`:\n\n```bash\nforge build --resolc\n```\n\n!!!note \n You can still use `forge build` for compiling to regular EVM bytecode.\n\nPolkaVM bytecode starts with `0x505` prefix. Inspect compiled artifacts with:\n\n```bash\nforge inspect Counter bytecode --resolc\n```\n\nIf successful, you will see the following output:\n\n
\n forge inspect Counter bytecode --resolc\n 0x50564d00008213000000000000010700c13000c0008004808f08000000000e0000001c0000002a0000003500000040000000520000005d00000063616c6c5f646174615f636f707963616c6c5f646174615f6c6f616463616c6c5f646174615f73697a65676574...\n
"} +{"page_id": "smart-contracts-dev-environments-foundry-get-started", "page_title": "Use Foundry with Polkadot Hub", "index": 7, "depth": 2, "title": "Deploy a Contract", "anchor": "deploy-a-contract", "start_char": 6260, "end_char": 7390, "estimated_token_count": 329, "token_estimator": "heuristic-v1", "text": "## Deploy a Contract\n\nDeploy contracts using `forge create`:\n\n```bash\nforge create Counter \\\n --rpc-url \\\n --private-key \\\n --resolc\n```\n\nIf the operation completes successfully, you'll see the following output (for example, to deploy to the Passet Hub chain):\n\n
\n forge create Counter \\n   --rpc-url https://testnet-passet-hub-eth-rpc.polkadot.io \\n   --private-key <INSERT_PRIVATE_KEY> \\n   --resolc\n
\n [:] Compiling...\n Compiler run successful!\n
\n\nFor contracts with constructor arguments:\n\n```bash\nforge create MyToken \\\n --rpc-url \\\n --private-key \\\n --constructor-args \"MyToken\" \"MTK\" 1000000 \\\n --resolc\n```\n\n!!! note \"Network Compatibility\"\n Use the `--resolc` flag when deploying to PolkaVM-compatible networks. Omit it for Ethereum-compatible networks."} +{"page_id": "smart-contracts-dev-environments-foundry-get-started", "page_title": "Use Foundry with Polkadot Hub", "index": 8, "depth": 2, "title": "Supported `foundry-polkadot` Commands", "anchor": "supported-foundry-polkadot-commands", "start_char": 7390, "end_char": 7544, "estimated_token_count": 33, "token_estimator": "heuristic-v1", "text": "## Supported `foundry-polkadot` Commands\n\nThis section provides a detailed breakdown of the `forge` and `cast` commands supported in `foundry-polkadot`."} +{"page_id": "smart-contracts-dev-environments-foundry-get-started", "page_title": "Use Foundry with Polkadot Hub", "index": 9, "depth": 3, "title": "Forge Commands", "anchor": "forge-commands", "start_char": 7544, "end_char": 13032, "estimated_token_count": 1502, "token_estimator": "heuristic-v1", "text": "### Forge Commands\n\n- **`init`**:\n - **Command**: `forge init `.\n - **Description**: Initializes a new Foundry project in the current directory, setting up the basic project structure and installing standard libraries.\n\n- **`bind`**:\n - **Command**: `forge bind [--resolc]`.\n - **Description**: Generates type-safe Rust bindings for your Solidity contracts. Use `--resolc` to ensure compilation with the `resolc` compiler for PolkaVM compatibility.\n\n- **`bind-json`**:\n - **Command**: `forge bind-json [--resolc]`.\n - **Description**: Generates JSON bindings for your Solidity contracts. Use `--resolc` for `resolc`-based compilation.\n\n- **`build`**:\n - **Command**: `forge build [--resolc]`.\n - **Description**: Compiles all Solidity contracts in your project. Specify `--resolc` to compile for PolkaVM.\n\n- **`cache clean`**:\n - **Command**: `forge cache clean`.\n - **Description**: Clears the Foundry cache directory.\n\n- **`cache ls`**:\n - **Command**: `forge cache ls`.\n - **Description**: Lists the contents of the Foundry cache.\n\n- **`clean`**:\n - **Command**: `forge clean`.\n - **Description**: Removes all build artifacts from the project's `out` directory.\n\n- **`compiler resolve`**:\n - **Command**: `forge compiler resolve [--resolc]`.\n - **Description**: Resolves and displays the versions of Solidity compilers Foundry is using. Use `--resolc` to also check for `resolc`.\n\n- **`config`**:\n - **Command**: `forge config`.\n - **Description**: Displays the current Foundry project configuration, including settings from `foundry.toml`.\n\n- **`create`**:\n - **Command**: `forge create [OPTIONS] `.\n - **Required Parameters**: `` (the name of the contract to deploy).\n - **Description**: Deploys a new contract to a specified blockchain network. The `--resolc` flag ensures it's compiled for PolkaVM. You'll typically need to provide an RPC URL, a private key for the deployer account, and potentially constructor arguments.\n\n- **`doc`**:\n - **Command**: `forge doc`.\n - **Description**: Generates documentation for your Solidity contracts.\n\n- **`flatten`**:\n - **Command**: `forge flatten [OPTIONS] `.\n - **Required Parameters**: `` (the path to the Solidity file).\n - **Description**: Combines all imports of a Solidity file into a single file, useful for deployment or verification.\n\n- **`fmt`**:\n - **Command**: `forge fmt`.\n - **Description**: Formats Solidity code according to a predefined style.\n\n- **`geiger`**:\n - **Command**: `forge geiger `.\n - **Required Parameters**: `` (the path to the Solidity file).\n - **Description**: Analyzes Solidity code for potential security vulnerabilities and gas inefficiencies.\n\n- **`generate test`**:\n - **Command**: `forge generate test --contract-name `.\n - **Required Parameters**: `--contract-name ` (the name of the contract for which to generate a test).\n - **Description**: Creates a new test file with boilerplate code for a specified contract.\n\n- **`generate-fig-spec`**:\n - **Command**: `forge generate-fig-spec`.\n - **Description**: Generates a Fig specification for CLI autocompletion tools.\n\n- **`inspect`**:\n - **Command**: `forge inspect [--resolc]`.\n - **Required Parameters**: `` (the contract to inspect), `` (e.g., `bytecode`, `abi`, `methods`, `events`).\n - **Description**: Displays various artifacts of a compiled contract. Use `--resolc` to inspect `resolc`-compiled artifacts; the bytecode will start with `0x505`.\n\n- **`install`**:\n - **Command**: `forge install `.\n - **Description**: Installs a Solidity library or dependency from a Git repository.\n\n- **`update`**:\n - **Command**: `forge update []`.\n - **Description**: Updates installed dependencies. If a repository is specified, only that one is updated.\n\n- **`remappings`**:\n - **Command**: `forge remappings`.\n - **Description**: Lists the currently configured Solidity compiler remappings.\n\n- **`remove`**:\n - **Command**: `forge remove `.\n - **Description**: Removes an installed Solidity dependency. Use `--force` to remove without confirmation.\n\n- **`selectors upload`**:\n - **Command**: `forge selectors upload [--all]`.\n - **Description**: Uploads function selectors from compiled contracts to OpenChain. Use `--all` to upload for all contracts.\n\n- **`selectors list`**:\n - **Command**: `forge selectors list`.\n - **Description**: Lists all known function selectors for contracts in the project.\n\n- **`selectors find`**:\n - **Command**: `forge selectors find `.\n - **Description**: Searches for a function signature given its 4-byte selector.\n\n- **`selectors cache`**:\n - **Command**: `forge selectors cache`.\n - **Description**: Caches function selectors for faster lookup.\n\n- **`tree`**:\n - **Command**: `forge tree`.\n - **Description**: Displays the dependency tree of your Solidity contracts.\n\n!!!warning \"Non-working Commands\"\n\n Consider that some foundry commands are not yet supported in `foundry-polkadot`:\n\n - **`clone`**: This command is not supported in `foundry-polkadot`.\n - **`coverage`**: Code coverage analysis is not supported.\n - **`snapshot`**: Creating blockchain state snapshots is not supported.\n - **`test`**: Running Solidity tests is not supported."} +{"page_id": "smart-contracts-dev-environments-foundry-get-started", "page_title": "Use Foundry with Polkadot Hub", "index": 10, "depth": 3, "title": "Cast Commands", "anchor": "cast-commands", "start_char": 13032, "end_char": 23398, "estimated_token_count": 3084, "token_estimator": "heuristic-v1", "text": "### Cast Commands\n\n- **`4byte`**:\n - **Command**: `cast 4byte [OPTIONS] [TOPIC_0]`.\n - **Description**: Decodes a 4-byte function selector into its human-readable function signature.\n\n- **`4byte-event`**:\n - **Command**: `cast 4byte-event [OPTIONS] [TOPIC_0]`.\n - **Description**: Decodes a 4-byte event topic into its human-readable event signature.\n\n- **`abi-encode`**:\n - **Command**: `cast abi-encode [ARGS]...`.\n - **Required Parameters**: `` (the function signature), `[ARGS]` (arguments to encode).\n - **Description**: ABI-encodes function arguments according to a given signature.\n\n- **`address-zero`**:\n - **Command**: `cast address-zero`.\n - **Description**: Returns the zero address (0x00...00).\n\n- **`age`**:\n - **Command**: `cast age [OPTIONS] [BLOCK]`.\n - **Description**: Converts a block number or tag (e.g., `latest`) into its timestamp.\n\n- **`balance`**:\n - **Command**: `cast balance [OPTIONS] `.\n - **Required Parameters**: `` (the address to check).\n - **Description**: Retrieves the native token balance of a given address on the specified RPC network.\n\n- **`base-fee`**:\n - **Command**: `cast base-fee [OPTIONS] [BLOCK]`.\n - **Description**: Retrieves the base fee per gas for a specific block (defaults to `latest`).\n\n- **`block`**:\n - **Command**: `cast block [OPTIONS] [BLOCK]`.\n - **Description**: Retrieves comprehensive details about a specific block (defaults to `latest`).\n\n- **`block-number`**:\n - **Command**: `cast block-number [OPTIONS] [BLOCK]`.\n - **Description**: Retrieves the number of the latest or a specified block.\n\n- **`call`**:\n - **Command**: `cast call [OPTIONS] [ARGS]...`.\n - **Description**: Executes a read-only (constant) function call on a contract. No transaction is sent to the network.\n\n- **`chain`**:\n - **Command**: `cast chain [OPTIONS]`.\n - **Description**: Displays the human-readable name of the connected blockchain.\n\n- **`chain-id`**:\n - **Command**: `cast chain-id [OPTIONS]`.\n - **Description**: Displays the chain ID of the connected blockchain.\n\n- **`client`**:\n - **Command**: `cast client [OPTIONS]`.\n - **Description**: Retrieves information about the connected RPC client (node software).\n\n- **`code`**:\n - **Command**: `cast code [OPTIONS] `.\n - **Required Parameters**: `` (the contract address).\n - **Description**: Retrieves the bytecode deployed at a given contract address.\n\n- **`codesize`**:\n - **Command**: `cast codesize [OPTIONS] `.\n - **Required Parameters**: `` (the contract address).\n - **Description**: Retrieves the size of the bytecode deployed at a given contract address.\n\n- **`compute-address`**:\n - **Command**: `cast compute-address [OPTIONS] `.\n - **Required Parameters**: `` (the deployer's address).\n - **Description**: Computes the predicted contract address based on the deployer's address and nonce.\n\n- **`decode-abi`**:\n - **Command**: `cast decode-abi `.\n - **Required Parameters**: `` (the function signature), `` (the ABI-encoded data).\n - **Description**: Decodes ABI-encoded output data from a contract call given its signature.\n\n- **`decode-calldata`**:\n - **Command**: `cast decode-calldata `.\n - **Required Parameters**: `` (the function signature), `` (the raw calldata).\n - **Description**: Decodes raw calldata into human-readable arguments using a function signature.\n\n- **`decode-error`**:\n - **Command**: `cast decode-error [--sig ]`.\n - **Required Parameters**: `` (the error data).\n - **Description**: Decodes a custom error message from a transaction revert. You may need to provide the error signature.\n\n- **`decode-event`**:\n - **Command**: `cast decode-event [--sig ]`.\n - **Required Parameters**: `` (the event data).\n - **Description**: Decodes event data from a transaction log.\n\n- **`estimate`**:\n - **Command**: `cast estimate [OPTIONS] [TO] [SIG] [ARGS]...`.\n - **Required Parameters**: `[TO]` (the recipient address or contract), `[SIG]` (function signature), `[ARGS]` (arguments).\n - **Description**: Estimates the gas cost for a transaction or function call.\n\n- **`find-block`**:\n - **Command**: `cast find-block [OPTIONS] `.\n - **Required Parameters**: `` (a Unix timestamp).\n - **Description**: Finds the closest block number to a given Unix timestamp.\n\n- **`gas-price`**:\n - **Command**: `cast gas-price [OPTIONS]`.\n - **Description**: Retrieves the current average gas price on the network.\n\n- **`generate-fig-spec`**:\n - **Command**: `cast generate-fig-spec`.\n - **Description**: Generates a Fig specification for CLI autocompletion.\n\n- **`index-string`**:\n - **Command**: `cast index-string `.\n - **Description**: Computes the Keccak-256 hash of a string, useful for event topics.\n\n- **`index-erc7201`**:\n - **Command**: `cast index-erc7201 `.\n - **Description**: Computes the hash for an ERC-7201 identifier.\n\n- **`logs`**:\n - **Command**: `cast logs [OPTIONS] [SIG_OR_TOPIC] [TOPICS_OR_ARGS]...`.\n - **Required Parameters**: `[SIG_OR_TOPIC]` (a signature or topic hash).\n - **Description**: Filters and displays event logs from transactions.\n\n- **`max-int`**:\n - **Command**: `cast max-int`.\n - **Description**: Displays the maximum value for a signed 256-bit integer.\n\n- **`max-uint`**:\n - **Command**: `cast max-uint`.\n - **Description**: Displays the maximum value for an unsigned 256-bit integer.\n\n- **`min-int`**:\n - **Command**: `cast min-int`.\n - **Description**: Displays the minimum value for a signed 256-bit integer.\n\n- **`mktx`**:\n - **Command**: `cast mktx [OPTIONS] [TO] [SIG] [ARGS]...`.\n - **Required Parameters**: `[TO]` (the recipient address or contract).\n - **Description**: Creates a raw, signed transaction that can be broadcast later.\n\n- **`decode-transaction`**:\n - **Command**: `cast decode-transaction [OPTIONS] [TX]`.\n - **Required Parameters**: `[TX]` (the raw transaction hex string).\n - **Description**: Decodes a raw transaction hex string into its human-readable components.\n\n- **`namehash increment`**:\n - **Command**: `cast namehash `.\n - **Description**: Computes the ENS (Ethereum Name Service) namehash for a given name.\n\n- **`nonce`**:\n - **Command**: `cast nonce [OPTIONS] `.\n - **Required Parameters**: `` (the address to check).\n - **Description**: Retrieves the transaction count (nonce) for a given address.\n\n- **`parse-bytes32-address`**:\n - **Command**: `cast parse-bytes32-address `.\n - **Description**: Parses a 32-byte hex string (e.g., from `bytes32`) into an Ethereum address.\n\n- **`parse-bytes32-string`**:\n - **Command**: `cast parse-bytes32-string `.\n - **Description**: Parses a 32-byte hex string into a human-readable string.\n\n- **`parse-units`**:\n - **Command**: `cast parse-units [UNIT]`.\n - **Description**: Converts a human-readable amount into its smallest unit (e.g., Ether to Wei). Defaults to `ether`.\n\n- **`pretty-calldata`**:\n - **Command**: `cast pretty-calldata [OPTIONS] `.\n - **Required Parameters**: `` (the calldata hex string).\n - **Description**: Attempts to pretty-print and decode a raw calldata string into possible function calls.\n\n- **`publish`**:\n - **Command**: `cast publish [OPTIONS] `.\n - **Description**: Broadcasts a raw, signed transaction to the network.\n\n- **`receipt`**:\n - **Command**: `cast receipt [OPTIONS] `.\n - **Description**: Retrieves the transaction receipt for a given transaction hash, including status, gas usage, and logs.\n\n- **`rpc`**:\n - **Command**: `cast rpc [OPTIONS] [PARAMS]...`.\n - **Required Parameters**: `` (the RPC method to call), `[PARAMS]` (parameters for the method).\n - **Description**: Makes a direct RPC call to the connected blockchain node.\n\n- **`send`**:\n - **Command**: `cast send [OPTIONS] [ARGS]...`.\n - **Required Parameters**: `` (the recipient address or contract).\n - **Description**: Sends a transaction to a contract or address, executing a function or transferring value.\n\n- **`sig`**:\n - **Command**: `cast sig `.\n - **Required Parameters**: `` (the full function signature string).\n - **Description**: Computes the 4-byte function selector for a given function signature.\n\n- **`sig-event`**:\n - **Command**: `cast sig-event `.\n - **Required Parameters**: `` (the full event signature string).\n - **Description**: Computes the Keccak-256 hash (topic) for a given event signature.\n\n- **`storage`**:\n - **Command**: `cast storage [OPTIONS]
[SLOT]`.\n - **Required Parameters**: `
` (the contract address).\n - **Description**: Retrieves the raw value stored at a specific storage slot of a contract.\n\n- **`tx`**:\n - **Command**: `cast tx [OPTIONS] `.\n - **Description**: Retrieves comprehensive details about a specific transaction.\n\n- **`upload-signature`**:\n - **Command**: `cast upload-signature [OPTIONS] `.\n - **Required Parameters**: `` (the function or event signature).\n - **Description**: Uploads a function or event signature to the OpenChain registry.\n\n- **`wallet`**:\n - **Command**: `cast wallet new`.\n - **Description**: Generates a new random Ethereum keypair (private key and address).\n\n- **`wallet new-mnemonic`**:\n - **Command**: `cast wallet new-mnemonic`.\n - **Description**: Generates a new BIP-39 mnemonic phrase and derives the first account from it.\n\n- **`wallet address`**:\n - **Command**: `cast wallet address [OPTIONS]`.\n - **Description**: Derives and displays the Ethereum address from a private key or mnemonic (if provided).\n\n!!!warning \"Non-working Commands\"\n\n Consider that some foundry commands are not yet supported in `foundry-polkadot`:\n\n - **`proof`**: This command, used for generating Merkle proofs, is not supported.\n - **`storage-root`**: This command, used for retrieving the storage root of a contract, is not supported."} +{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 0, "depth": 2, "title": "Overview", "anchor": "overview", "start_char": 11, "end_char": 506, "estimated_token_count": 81, "token_estimator": "heuristic-v1", "text": "## Overview\n\nBuilding on Polkadot Hub often starts with a Solidity codebase, and Hardhat keeps that workflow familiar while giving teams repeatable scripts, rich debugging, and CLI automation suited to the network's Ethereum-compatible execution layer.\n\nHardhat is a comprehensive development environment for building, testing, and deploying smart contracts. It provides developers with a complete toolkit including compilation, local testing nodes, debugging tools, and deployment automation."} +{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 1, "depth": 2, "title": "Hardhat Workflow", "anchor": "hardhat-workflow", "start_char": 506, "end_char": 1247, "estimated_token_count": 145, "token_estimator": "heuristic-v1", "text": "## Hardhat Workflow\n\nFrom the first sketch of a contract to ongoing operations, Hardhat encourages a repeatable cycle: define the functionality you need, scaffold the workspace, write and refine Solidity code, compile it into deployable artifacts, validate behavior with automated tests, deploy confidently to the target network, and keep iterating with scripts that monitor and interact with what you shipped.\n\n```mermaid\nflowchart LR\n plan[Plan Contract]\n scaffold[Scaffold Project]\n develop[Write & Update Contracts]\n compile[Compile Sources]\n test[Run Automated Tests]\n deploy[Deploy to Target Network]\n operate[Interact & Monitor]\n\n plan --> scaffold --> develop --> compile --> test --> deploy --> operate\n```"} +{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 2, "depth": 2, "title": "Project Anatomy", "anchor": "project-anatomy", "start_char": 1247, "end_char": 1913, "estimated_token_count": 161, "token_estimator": "heuristic-v1", "text": "## Project Anatomy\n\nA freshly initialized Hardhat project keeps code, configuration, and automation neatly separated:\n\n```\n.\n├── contracts/\n│ └── MyContract.sol\n├── ignition/\n│ └── modules/\n├── scripts/\n│ └── interact.js\n├── test/\n│ └── MyContract.test.js\n└── hardhat.config.js\n```\n\n- `contracts/`: Solidity sources that define your smart contracts.\n- `test/`: Automated tests written in JavaScript or TypeScript.\n- `ignition/`: Deployment modules that orchestrate repeatable rollouts.\n- `scripts/`: Utility scripts for deploying, validating, or interacting with contracts.\n- `hardhat.config.js`: Central configuration for networks, compilers, and tooling."} +{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 3, "depth": 2, "title": "Core Functionalities", "anchor": "core-functionalities", "start_char": 1913, "end_char": 1938, "estimated_token_count": 4, "token_estimator": "heuristic-v1", "text": "## Core Functionalities"} +{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 4, "depth": 3, "title": "Project Setup", "anchor": "project-setup", "start_char": 1938, "end_char": 2313, "estimated_token_count": 81, "token_estimator": "heuristic-v1", "text": "### Project Setup\n\nHardhat provides a structured project initialization with organized folders for contracts, tests, deployment scripts, and automation. Scaffold a workspace quickly and keep configuration in a single `hardhat.config.js` file.\n\n- Learn more in the [Install and Configure](/smart-contracts/dev-environments/hardhat/install-and-config/){target=\\_blank} guide."} +{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 5, "depth": 3, "title": "Contract Compilation", "anchor": "contract-compilation", "start_char": 2313, "end_char": 2708, "estimated_token_count": 79, "token_estimator": "heuristic-v1", "text": "### Contract Compilation\n\nCompile your Solidity smart contracts with configurable compiler versions and optimization settings. Hardhat captures build artifacts—ABI, bytecode, metadata—so you can deploy or interact with contracts from scripts and frontends.\n\n- Deep dive into compilation in [Compile Smart Contracts](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\\_blank}."} +{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 6, "depth": 3, "title": "Testing Environment", "anchor": "testing-environment", "start_char": 2708, "end_char": 3096, "estimated_token_count": 80, "token_estimator": "heuristic-v1", "text": "### Testing Environment\n\nRun automated tests against a local Hardhat node, simulate transactions, and debug contract behavior before deploying to public networks. The built-in testing stack uses familiar JavaScript tooling such as Mocha and Chai.\n\n- Master testing capabilities in [Test Your Smart Contracts](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\\_blank}."} +{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 7, "depth": 3, "title": "Deployment", "anchor": "deployment", "start_char": 3096, "end_char": 3424, "estimated_token_count": 66, "token_estimator": "heuristic-v1", "text": "### Deployment\n\nShip your contracts with reusable deployment scripts or Hardhat Ignition modules. Manage credentials securely, target multiple networks, and repeat deployments with confidence.\n\n- Follow deployment steps in [Deploy Smart Contracts](/smart-contracts/dev-environments/hardhat/deploy-a-contract/){target=\\_blank}."} +{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 8, "depth": 3, "title": "Contract Interaction", "anchor": "contract-interaction", "start_char": 3424, "end_char": 3738, "estimated_token_count": 67, "token_estimator": "heuristic-v1", "text": "### Contract Interaction\n\nCreate scripts to interact with deployed contracts, read state, execute transactions, and automate maintenance tasks using your generated ABI.\n\n- See practical tips in [Interact with Smart Contracts](/smart-contracts/dev-environments/hardhat/interact-with-a-contract/){target=\\_blank}."} +{"page_id": "smart-contracts-dev-environments-hardhat-get-started", "page_title": "Use Hardhat with Polkadot Hub", "index": 9, "depth": 2, "title": "Where to Go Next", "anchor": "where-to-go-next", "start_char": 3738, "end_char": 5817, "estimated_token_count": 518, "token_estimator": "heuristic-v1", "text": "## Where to Go Next\n\nReady to explore the specifics? Dive into these guides to continue your Hardhat journey:\n\n
\n\n- Guide __Install and Configure Hardhat__\n\n ---\n\n Initialize your workspace and adjust project settings for this toolchain.\n\n [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/install-and-config/){target=\\_blank}\n\n- Guide __Compile Smart Contracts__\n\n ---\n\n Configure compiler options and generate deployable artifacts.\n\n [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\\_blank}\n\n- Guide __Test Your Smart Contracts__\n\n ---\n\n Build automated tests and run them against a local node.\n\n [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\\_blank}\n\n- Guide __Deploy Smart Contracts__\n\n ---\n\n Roll out contracts to local, test, or production networks with repeatable scripts.\n\n [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/deploy-a-contract/){target=\\_blank}\n\n- Guide __Interact with Smart Contracts__\n\n ---\n\n Script on-chain interactions and automate maintenance tasks.\n\n [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/interact-with-a-contract/){target=\\_blank}\n\n- External __Hardhat Documentation__\n\n ---\n\n Explore Hardhat's official documentation for advanced features and best practices.\n\n [:octicons-arrow-right-24: Learn More](https://hardhat.org/docs){target=\\_blank}\n\n- External __OpenZeppelin Contracts__\n\n ---\n\n Use prebuilt, audited contract templates to bootstrap your projects.\n\n [:octicons-arrow-right-24: Explore](https://www.openzeppelin.com/solidity-contracts){target=\\_blank}\n\n
"} {"page_id": "smart-contracts-dev-environments-local-dev-node", "page_title": "Local Development Node", "index": 0, "depth": 2, "title": "Introduction", "anchor": "introduction", "start_char": 196, "end_char": 699, "estimated_token_count": 97, "token_estimator": "heuristic-v1", "text": "## Introduction\n\nA local development node provides an isolated blockchain environment where you can deploy, test, and debug smart contracts without incurring network fees or waiting for block confirmations. This guide demonstrates how to set up a local Polkadot SDK-based node with smart contract capabilities.\n\nBy the end of this guide, you'll have:\n\n- A running node with smart contract support.\n- An ETH-RPC adapter for Ethereum-compatible tooling integration accessible at `http://localhost:8545`."} {"page_id": "smart-contracts-dev-environments-local-dev-node", "page_title": "Local Development Node", "index": 1, "depth": 2, "title": "Prerequisites", "anchor": "prerequisites", "start_char": 699, "end_char": 1028, "estimated_token_count": 76, "token_estimator": "heuristic-v1", "text": "## Prerequisites\n\nBefore getting started, ensure you have done the following:\n\n- Completed the [Install Polkadot SDK Dependencies](/parachains/install-polkadot-sdk/){target=\\_blank} guide and successfully installed [Rust](https://rust-lang.org/){target=\\_blank} and the required packages to set up your development environment."} {"page_id": "smart-contracts-dev-environments-local-dev-node", "page_title": "Local Development Node", "index": 2, "depth": 2, "title": "Install the Revive Dev Node and ETH-RPC Adapter", "anchor": "install-the-revive-dev-node-and-eth-rpc-adapter", "start_char": 1028, "end_char": 2561, "estimated_token_count": 343, "token_estimator": "heuristic-v1", "text": "## Install the Revive Dev Node and ETH-RPC Adapter\n\nThe Polkadot SDK repository contains both the [Revive Dev node](https://github.com/paritytech/polkadot-sdk/tree/8e2b6f742a38bb13688e12abacded0aab2dbbb23/substrate/frame/revive/dev-node){target=\\_blank} implementation and the [ETH-RPC adapter](https://github.com/paritytech/polkadot-sdk/tree/8e2b6f742a38bb13688e12abacded0aab2dbbb23/substrate/frame/revive/rpc){target=\\_blank} required for Ethereum compatibility. Start by cloning the repository and navigating to the project directory:\n\n```bash\ngit clone https://github.com/paritytech/polkadot-sdk.git\ncd polkadot-sdk\ngit checkout 8e2b6f742a38bb13688e12abacded0aab2dbbb23\n```\n\nNext, you need to compile the two essential components for your development environment. The Substrate node provides the core blockchain runtime with smart contract support, while the ETH-RPC adapter enables Ethereum JSON-RPC compatibility for existing tooling:\n\n```bash\ncargo build -p revive-dev-node --bin revive-dev-node --release\ncargo build -p pallet-revive-eth-rpc --bin eth-rpc --release\n```\n\nThe compilation process may take some time depending on your system specifications, potentially up to 30 minutes. Release builds are optimized for performance but take longer to compile than debug builds. After successful compilation, you can verify the binaries are available in the `target/release` directory:\n\n- **Revive Dev node path**: `polkadot-sdk/target/release/revive-dev-node`\n- **ETH-RPC adapter path**: `polkadot-sdk/target/release/eth-rpc`"} @@ -1049,41 +1052,41 @@ {"page_id": "smart-contracts-for-eth-devs-gas-model", "page_title": "Gas Model on the Polkadot Hub", "index": 4, "depth": 2, "title": "Dynamic Gas Pricing", "anchor": "dynamic-gas-pricing", "start_char": 2547, "end_char": 3440, "estimated_token_count": 161, "token_estimator": "heuristic-v1", "text": "## Dynamic Gas Pricing\n\nPallet revive uses dynamic pricing through a \"fee multiplier\" that adjusts based on network congestion:\n\n- When blocks are full, the multiplier increases, making transactions more expensive.\n- When blocks are empty, the multiplier decreases, making transactions cheaper.\n- The multiplier updates after every block based on utilization.\n\nThis creates a market-based pricing mechanism similar to Ethereum's base fee, helping to manage network resources efficiently.\n\nThe gas price returned during estimation is simply the current fee multiplier value.\n\n!!! warning \"Important for Users\"\n Because the fee multiplier can change between when you estimate gas and when your transaction executes, you can add a safety buffer (10-20%) to both your gas limit and gas price. This ensures your transaction will execute successfully even if network conditions change slightly."} {"page_id": "smart-contracts-for-eth-devs-gas-model", "page_title": "Gas Model on the Polkadot Hub", "index": 5, "depth": 2, "title": "Transaction Execution Flow", "anchor": "transaction-execution-flow", "start_char": 3440, "end_char": 4936, "estimated_token_count": 353, "token_estimator": "heuristic-v1", "text": "## Transaction Execution Flow\n\nThe following diagram illustrates the complete lifecycle of a transaction from submission to settlement:\n\n```mermaid\ngraph TD\n U[User/Wallet] --> M[Transaction pool]\n M --> P[Pre-dispatch convert gas to weight and create hold]\n P --> C{Sufficient funds}\n C -->|No| R[Rejected]\n C -->|Yes| X[Execute contract within limits]\n X --> S[Settle fee from actual weight and length; refund]\n S --> B[Included in block]\n```\n\nThe transaction execution flow is as follows:\n\n- **Pool and pre-dispatch**: The transaction enters the pool, `gas` is mapped to `weight`, and a temporary hold is created for the maximum fee exposure. Weight is a two-dimensional tuple (`ref_time`, `proof_size`). Each dimension is tracked independently. The [`WeightToFee`](https://docs.rs/pallet-transaction-payment/latest/pallet_transaction_payment/pallet/trait.Config.html#associatedtype.WeightToFee){target=\\_blank} conversion takes the maximum of the two dimensions (after applying their respective coefficients) to determine the fee.\n- **Funds check**: If the hold is insufficient, the transaction is rejected before any execution.\n- **Execution**: If sufficient, the contract runs within the derived weight limits; a `storage_deposit` may be reserved when new storage is created.\n- **Settlement**: Fees are charged from the actual `weight` used plus the length fee; any unused hold is refunded.\n- **Inclusion**: After settlement, the transaction is included in the block."} {"page_id": "smart-contracts-for-eth-devs-gas-model", "page_title": "Gas Model on the Polkadot Hub", "index": 6, "depth": 2, "title": "Conclusion", "anchor": "conclusion", "start_char": 4936, "end_char": 5234, "estimated_token_count": 51, "token_estimator": "heuristic-v1", "text": "## Conclusion\n\nThe Polkadot Hub's gas model is designed to be Ethereum-compatible while providing the flexibility and efficiency of Polkadot's resource metering system. Developers can build on Ethereum tooling while leveraging Polkadot's advanced features like multi-dimensional resource tracking."} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 0, "depth": 2, "title": "Introduction", "anchor": "introduction", "start_char": 187, "end_char": 679, "estimated_token_count": 115, "token_estimator": "heuristic-v1", "text": "## Introduction\n\nPolkadot Hub provides Ethereum compatibility through its JSON-RPC interface, allowing developers to interact with the chain using familiar Ethereum tooling and methods. This document outlines the supported [Ethereum JSON-RPC methods](https://ethereum.org/developers/docs/apis/json-rpc/#json-rpc-methods){target=\\_blank} and provides examples of how to use them.\n\nThis guide uses the Polkadot Hub TestNet endpoint:\n\n```text\nhttps://testnet-passet-hub-eth-rpc.polkadot.io\n```"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 1, "depth": 2, "title": "Available Methods", "anchor": "available-methods", "start_char": 679, "end_char": 701, "estimated_token_count": 4, "token_estimator": "heuristic-v1", "text": "## Available Methods"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 2, "depth": 3, "title": "eth_accounts", "anchor": "eth_accounts", "start_char": 701, "end_char": 1132, "estimated_token_count": 146, "token_estimator": "heuristic-v1", "text": "### eth_accounts\n\nReturns a list of addresses owned by the client. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_accounts){target=\\_blank}.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"eth_accounts\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_accounts\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 3, "depth": 3, "title": "eth_blockNumber", "anchor": "eth_blocknumber", "start_char": 1132, "end_char": 1571, "estimated_token_count": 145, "token_estimator": "heuristic-v1", "text": "### eth_blockNumber\n\nReturns the number of the most recent block. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_blocknumber){target=\\_blank}.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"eth_blockNumber\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_blockNumber\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 4, "depth": 3, "title": "eth_call", "anchor": "eth_call", "start_char": 1571, "end_char": 3795, "estimated_token_count": 707, "token_estimator": "heuristic-v1", "text": "### eth_call\n\nExecutes a new message call immediately without creating a transaction. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_call){target=\\_blank}.\n\n**Parameters**:\n\n- **`transaction` ++\"object\"++**: The transaction call object.\n - **`to` ++\"string\"++**: Recipient address of the call. Must be a [20-byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`data` ++\"string\"++**: Hash of the method signature and encoded parameters. Must be a [data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`from` ++\"string\"++**: (Optional) Sender's address for the call. Must be a [20-byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`gas` ++\"string\"++**: (Optional) Gas limit to execute the call. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`gasPrice` ++\"string\"++**: (Optional) Gas price per unit of gas. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`value` ++\"string\"++**: (Optional) Value in wei to send with the call. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n- **`blockValue` ++\"string\"++**: (Optional) Block tag or block number to execute the call at. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n\n**Example**:\n\n```bash title=\"eth_call\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_call\",\n \"params\":[{\n \"to\": \"INSERT_RECIPIENT_ADDRESS\",\n \"data\": \"INSERT_ENCODED_CALL\"\n }, \"INSERT_BLOCK_VALUE\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_RECIPIENT_ADDRESS`, `INSERT_ENCODED_CALL`, and `INSERT_BLOCK_VALUE` with the proper values.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 5, "depth": 3, "title": "eth_chainId", "anchor": "eth_chainid", "start_char": 3795, "end_char": 4225, "estimated_token_count": 145, "token_estimator": "heuristic-v1", "text": "### eth_chainId\n\nReturns the chain ID used for signing transactions. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_chainid){target=\\_blank}.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"eth_chainId\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_chainId\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 6, "depth": 3, "title": "eth_estimateGas", "anchor": "eth_estimategas", "start_char": 4225, "end_char": 6411, "estimated_token_count": 694, "token_estimator": "heuristic-v1", "text": "### eth_estimateGas\n\nEstimates gas required for a transaction. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_estimategas){target=\\_blank}.\n\n**Parameters**:\n\n- **`transaction` ++\"object\"++**: The transaction call object.\n - **`to` ++\"string\"++**: Recipient address of the call. Must be a [20-byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`data` ++\"string\"++**: Hash of the method signature and encoded parameters. Must be a [data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`from` ++\"string\"++**: (Optional) Sender's address for the call. Must be a [20-byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`gas` ++\"string\"++**: (Optional) Gas limit to execute the call. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`gasPrice` ++\"string\"++**: (Optional) Gas price per unit of gas. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`value` ++\"string\"++**: (Optional) Value in wei to send with the call. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n- **`blockValue` ++\"string\"++**: (Optional) Block tag or block number to execute the call at. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n\n**Example**:\n\n```bash title=\"eth_estimateGas\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_estimateGas\",\n \"params\":[{\n \"to\": \"INSERT_RECIPIENT_ADDRESS\",\n \"data\": \"INSERT_ENCODED_FUNCTION_CALL\"\n }],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_RECIPIENT_ADDRESS` and `INSERT_ENCODED_CALL` with the proper values.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 7, "depth": 3, "title": "eth_gasPrice", "anchor": "eth_gasprice", "start_char": 6411, "end_char": 6831, "estimated_token_count": 144, "token_estimator": "heuristic-v1", "text": "### eth_gasPrice\n\nReturns the current gas price in Wei. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_gasprice){target=\\_blank}.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"eth_gasPrice\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_gasPrice\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 8, "depth": 3, "title": "eth_getBalance", "anchor": "eth_getbalance", "start_char": 6831, "end_char": 7873, "estimated_token_count": 330, "token_estimator": "heuristic-v1", "text": "### eth_getBalance\n\nReturns the balance of a given address. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_getbalance){target=\\_blank}.\n\n**Parameters**:\n\n- **`address` ++\"string\"++**: Address to query balance. Must be a [20-byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n- **`blockValue` ++\"string\"++**: (Optional) The block value to be fetched. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n\n**Example**:\n\n```bash title=\"eth_getBalance\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getBalance\",\n \"params\":[\"INSERT_ADDRESS\", \"INSERT_BLOCK_VALUE\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_ADDRESS` and `INSERT_BLOCK_VALUE` with the proper values.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 9, "depth": 3, "title": "eth_getBlockByHash", "anchor": "eth_getblockbyhash", "start_char": 7873, "end_char": 8768, "estimated_token_count": 266, "token_estimator": "heuristic-v1", "text": "### eth_getBlockByHash\n\nReturns information about a block by its hash. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_getblockbyhash){target=\\_blank}.\n\n**Parameters**:\n\n- **`blockHash` ++\"string\"++**: The hash of the block to retrieve. Must be a [32 byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n- **`fullTransactions` ++\"boolean\"++**: If `true`, returns full transaction details; if `false`, returns only transaction hashes.\n\n**Example**:\n\n```bash title=\"eth_getBlockByHash\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getBlockByHash\",\n \"params\":[\"INSERT_BLOCK_HASH\", INSERT_BOOLEAN],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_BLOCK_HASH` and `INSERT_BOOLEAN` with the proper values.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 10, "depth": 3, "title": "eth_getBlockByNumber", "anchor": "eth_getblockbynumber", "start_char": 8768, "end_char": 9787, "estimated_token_count": 301, "token_estimator": "heuristic-v1", "text": "### eth_getBlockByNumber\n\nReturns information about a block by its number. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_getblockbynumber){target=\\_blank}.\n\n**Parameters**:\n\n- **`blockValue` ++\"string\"++**: (Optional) The block value to be fetched. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n- **`fullTransactions` ++\"boolean\"++**: If `true`, returns full transaction details; if `false`, returns only transaction hashes.\n\n**Example**:\n\n```bash title=\"eth_getBlockByNumber\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getBlockByNumber\",\n \"params\":[\"INSERT_BLOCK_VALUE\", INSERT_BOOLEAN],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_BLOCK_VALUE` and `INSERT_BOOLEAN` with the proper values.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 11, "depth": 3, "title": "eth_getBlockTransactionCountByNumber", "anchor": "eth_getblocktransactioncountbynumber", "start_char": 9787, "end_char": 10710, "estimated_token_count": 260, "token_estimator": "heuristic-v1", "text": "### eth_getBlockTransactionCountByNumber\n\nReturns the number of transactions in a block from a block number. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbynumber){target=\\_blank}.\n\n**Parameters**:\n\n- **`blockValue` ++\"string\"++**: The block value to be fetched. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n\n**Example**:\n\n```bash title=\"eth_getBlockTransactionCountByNumber\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getBlockTransactionCountByNumber\",\n \"params\":[\"INSERT_BLOCK_VALUE\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_BLOCK_VALUE` with the proper values.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 12, "depth": 3, "title": "eth_getBlockTransactionCountByHash", "anchor": "eth_getblocktransactioncountbyhash", "start_char": 10710, "end_char": 11520, "estimated_token_count": 228, "token_estimator": "heuristic-v1", "text": "### eth_getBlockTransactionCountByHash\n\nReturns the number of transactions in a block from a block hash. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbyhash){target=\\_blank}.\n\n**Parameters**:\n\n- **`blockHash` ++\"string\"++**: The hash of the block to retrieve. Must be a [32 byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n\n**Example**:\n\n```bash title=\"eth_getBlockTransactionCountByHash\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getBlockTransactionCountByHash\",\n \"params\":[\"INSERT_BLOCK_HASH\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_BLOCK_HASH` with the proper values.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 13, "depth": 3, "title": "eth_getCode", "anchor": "eth_getcode", "start_char": 11520, "end_char": 12548, "estimated_token_count": 327, "token_estimator": "heuristic-v1", "text": "### eth_getCode\n\nReturns the code at a given address. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_getcode){target=\\_blank}.\n\n**Parameters**:\n\n- **`address` ++\"string\"++**: Contract or account address to query code. Must be a [20-byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n- **`blockValue` ++\"string\"++**: (Optional) The block value to be fetched. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/developers/docs/apis/json-rpc/#default-block).\n\n**Example**:\n\n```bash title=\"eth_getCode\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getCode\",\n \"params\":[\"INSERT_ADDRESS\", \"INSERT_BLOCK_VALUE\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_ADDRESS` and `INSERT_BLOCK_VALUE` with the proper values.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 14, "depth": 3, "title": "eth_getLogs", "anchor": "eth_getlogs", "start_char": 12548, "end_char": 14499, "estimated_token_count": 630, "token_estimator": "heuristic-v1", "text": "### eth_getLogs\n\nReturns an array of all logs matching a given filter object. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_getlogs){target=\\_blank}.\n\n**Parameters**:\n\n- **`filter` ++\"object\"++**: The filter object.\n - **`fromBlock` ++\"string\"++**: (Optional) Block number or tag to start from. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n - **`toBlock` ++\"string\"++**: (Optional) Block number or tag to end at. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n - **`address` ++\"string\" or \"array of strings\"++**: (Optional) Contract address or a list of addresses from which to get logs. Must be a [20-byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`topics` ++\"array of strings\"++**: (Optional) Array of topics for filtering logs. Each topic can be a single [32 byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string or an array of such strings (meaning OR).\n - **`blockhash` ++\"string\"++**: (Optional) Hash of a specific block. Cannot be used with `fromBlock` or `toBlock`. Must be a [32 byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n\n**Example**:\n\n```bash title=\"eth_getLogs\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getLogs\",\n \"params\":[{\n \"fromBlock\": \"latest\",\n \"toBlock\": \"latest\"\n }],\n \"id\":1\n}'\n```\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 15, "depth": 3, "title": "eth_getStorageAt", "anchor": "eth_getstorageat", "start_char": 14499, "end_char": 15811, "estimated_token_count": 402, "token_estimator": "heuristic-v1", "text": "### eth_getStorageAt\n\nReturns the value from a storage position at a given address. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_getstorageat){target=\\_blank}.\n\n**Parameters**:\n\n- **`address` ++\"string\"++**: Contract or account address to query code. Must be a [20-byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n- **`storageKey` ++\"string\"++**: Position in storage to retrieve data from. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n- **`blockValue` ++\"string\"++**: (Optional) The block value to be fetched. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/developers/docs/apis/json-rpc/#default-block).\n\n**Example**:\n\n```bash title=\"eth_getStorageAt\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getStorageAt\",\n \"params\":[\"INSERT_ADDRESS\", \"INSERT_STORAGE_KEY\", \"INSERT_BLOCK_VALUE\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_ADDRESS`, `INSERT_STORAGE_KEY`, and `INSERT_BLOCK_VALUE` with the proper values.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 16, "depth": 3, "title": "eth_getTransactionCount", "anchor": "eth_gettransactioncount", "start_char": 15811, "end_char": 16898, "estimated_token_count": 329, "token_estimator": "heuristic-v1", "text": "### eth_getTransactionCount\n\nReturns the number of transactions sent from an address (nonce). [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_gettransactioncount){target=\\_blank}.\n\n**Parameters**:\n\n- **`address` ++\"string\"++**: Address to query balance. Must be a [20-byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n- **`blockValue` ++\"string\"++**: (Optional) The block value to be fetched. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/developers/docs/apis/json-rpc/#default-block).\n\n**Example**:\n\n```bash title=\"eth_getTransactionCount\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getTransactionCount\",\n \"params\":[\"INSERT_ADDRESS\", \"INSERT_BLOCK_VALUE\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_ADDRESS` and `INSERT_BLOCK_VALUE` with the proper values.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 17, "depth": 3, "title": "eth_getTransactionByHash", "anchor": "eth_gettransactionbyhash", "start_char": 16898, "end_char": 17668, "estimated_token_count": 222, "token_estimator": "heuristic-v1", "text": "### eth_getTransactionByHash\n\nReturns information about a transaction by its hash. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_gettransactionbyhash){target=\\_blank}.\n\n**Parameters**:\n\n- **`transactionHash` ++\"string\"++**: The hash of the transaction. Must be a [32 byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n\n**Example**:\n\n```bash title=\"eth_getTransactionByHash\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getTransactionByHash\",\n \"params\":[\"INSERT_TRANSACTION_HASH\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_TRANSACTION_HASH` with the proper values.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 18, "depth": 3, "title": "eth_getTransactionByBlockNumberAndIndex", "anchor": "eth_gettransactionbyblocknumberandindex", "start_char": 17668, "end_char": 18874, "estimated_token_count": 330, "token_estimator": "heuristic-v1", "text": "### eth_getTransactionByBlockNumberAndIndex\n\nReturns information about a transaction by block number and transaction index. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_gettransactionbyblocknumberandindex){target=\\_blank}.\n\n**Parameters**:\n\n- **`blockValue` ++\"string\"++**: The block value to be fetched. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n- **`transactionIndex` ++\"string\"++**: The index of the transaction in the block. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n\n**Example**:\n\n```bash title=\"eth_getTransactionByBlockNumberAndIndex\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getTransactionByBlockNumberAndIndex\",\n \"params\":[\"INSERT_BLOCK_VALUE\", \"INSERT_TRANSACTION_INDEX\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_BLOCK_VALUE` and `INSERT_TRANSACTION_INDEX` with the proper values.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 19, "depth": 3, "title": "eth_getTransactionByBlockHashAndIndex", "anchor": "eth_gettransactionbyblockhashandindex", "start_char": 18874, "end_char": 19955, "estimated_token_count": 296, "token_estimator": "heuristic-v1", "text": "### eth_getTransactionByBlockHashAndIndex\n\nReturns information about a transaction by block hash and transaction index. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_gettransactionbyblockhashandindex){target=\\_blank}.\n\n**Parameters**:\n\n- **`blockHash` ++\"string\"++**: The hash of the block. Must be a [32 byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n- **`transactionIndex` ++\"string\"++**: The index of the transaction in the block. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n\n**Example**:\n\n```bash title=\"eth_getTransactionByBlockHashAndIndex\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getTransactionByBlockHashAndIndex\",\n \"params\":[\"INSERT_BLOCK_HASH\", \"INSERT_TRANSACTION_INDEX\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_BLOCK_HASH` and `INSERT_TRANSACTION_INDEX` with the proper values.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 20, "depth": 3, "title": "eth_getTransactionReceipt", "anchor": "eth_gettransactionreceipt", "start_char": 19955, "end_char": 20734, "estimated_token_count": 223, "token_estimator": "heuristic-v1", "text": "### eth_getTransactionReceipt\n\nReturns the receipt of a transaction by transaction hash. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_gettransactionreceipt){target=\\_blank}.\n\n**Parameters**:\n\n- **`transactionHash` ++\"string\"++**: The hash of the transaction. Must be a [32 byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n\n**Example**:\n\n```bash title=\"eth_getTransactionReceipt\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getTransactionReceipt\",\n \"params\":[\"INSERT_TRANSACTION_HASH\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_TRANSACTION_HASH` with the proper values.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 21, "depth": 3, "title": "eth_maxPriorityFeePerGas", "anchor": "eth_maxpriorityfeepergas", "start_char": 20734, "end_char": 21149, "estimated_token_count": 125, "token_estimator": "heuristic-v1", "text": "### eth_maxPriorityFeePerGas\n\nReturns an estimate of the current priority fee per gas, in Wei, to be included in a block.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"eth_maxPriorityFeePerGas\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_maxPriorityFeePerGas\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 22, "depth": 3, "title": "eth_sendRawTransaction", "anchor": "eth_sendrawtransaction", "start_char": 21149, "end_char": 21852, "estimated_token_count": 214, "token_estimator": "heuristic-v1", "text": "### eth_sendRawTransaction\n\nSubmits a raw transaction. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_sendrawtransaction){target=\\_blank}.\n\n**Parameters**:\n\n- **`callData` ++\"string\"++**: Signed transaction data. Must be a [data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n\n**Example**:\n\n```bash title=\"eth_sendRawTransaction\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_sendRawTransaction\",\n \"params\":[\"INSERT_CALL_DATA\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_CALL_DATA` with the proper values.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 23, "depth": 3, "title": "eth_sendTransaction", "anchor": "eth_sendtransaction", "start_char": 21852, "end_char": 24207, "estimated_token_count": 714, "token_estimator": "heuristic-v1", "text": "### eth_sendTransaction\n\nCreates and sends a new transaction. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_sendtransaction){target=\\_blank}.\n\n**Parameters**:\n\n- **`transaction` ++\"object\"++**: The transaction object.\n - **`from` ++\"string\"++**: Address sending the transaction. Must be a [20-byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`to` ++\"string\"++**: (Optional) Recipient address. No need to provide this value when deploying a contract. Must be a [20-byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`gas` ++\"string\"++**: (optional, default: `90000`) gas limit for execution. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`gasPrice` ++\"string\"++**: (Optional) Gas price per unit. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`value` ++\"string\"++**: (Optional) Amount of Ether to send. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`data` ++\"string\"++**: (Optional) Contract bytecode or encoded method call. Must be a [data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`nonce` ++\"string\"++**: (Optional) Transaction nonce. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n\n**Example**:\n\n```bash title=\"eth_sendTransaction\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_sendTransaction\",\n \"params\":[{\n \"from\": \"INSERT_SENDER_ADDRESS\",\n \"to\": \"INSERT_RECIPIENT_ADDRESS\",\n \"gas\": \"INSERT_GAS_LIMIT\",\n \"gasPrice\": \"INSERT_GAS_PRICE\",\n \"value\": \"INSERT_VALUE\",\n \"input\": \"INSERT_INPUT_DATA\",\n \"nonce\": \"INSERT_NONCE\"\n }],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_SENDER_ADDRESS`, `INSERT_RECIPIENT_ADDRESS`, `INSERT_GAS_LIMIT`, `INSERT_GAS_PRICE`, `INSERT_VALUE`, `INSERT_INPUT_DATA`, and `INSERT_NONCE` with the proper values.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 24, "depth": 3, "title": "eth_syncing", "anchor": "eth_syncing", "start_char": 24207, "end_char": 24648, "estimated_token_count": 150, "token_estimator": "heuristic-v1", "text": "### eth_syncing\n\nReturns an object with syncing data or `false` if not syncing. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#eth_syncing){target=\\_blank}.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"eth_syncing\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_syncing\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 25, "depth": 3, "title": "net_listening", "anchor": "net_listening", "start_char": 24648, "end_char": 25130, "estimated_token_count": 155, "token_estimator": "heuristic-v1", "text": "### net_listening\n\nReturns `true` if the client is currently listening for network connections, otherwise `false`. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#net_listening){target=\\_blank}.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"net_listening\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"net_listening\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 26, "depth": 3, "title": "net_peerCount", "anchor": "net_peercount", "start_char": 25130, "end_char": 25483, "estimated_token_count": 115, "token_estimator": "heuristic-v1", "text": "### net_peerCount\n\nReturns the number of peers currently connected to the client.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"net_peerCount\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"net_peerCount\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 27, "depth": 3, "title": "net_version", "anchor": "net_version", "start_char": 25483, "end_char": 25905, "estimated_token_count": 145, "token_estimator": "heuristic-v1", "text": "### net_version\n\nReturns the current network ID as a string. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#net_version){target=\\_blank}.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"net_version\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"net_version\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 28, "depth": 3, "title": "system_health", "anchor": "system_health", "start_char": 25905, "end_char": 26247, "estimated_token_count": 113, "token_estimator": "heuristic-v1", "text": "### system_health\n\nReturns information about the health of the system.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"system_health\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"system_health\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 29, "depth": 3, "title": "web3_clientVersion", "anchor": "web3_clientversion", "start_char": 26247, "end_char": 26689, "estimated_token_count": 142, "token_estimator": "heuristic-v1", "text": "### web3_clientVersion\n\nReturns the current client version. [Reference](https://ethereum.org/developers/docs/apis/json-rpc/#web3_clientversion){target=\\_blank}.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"web3_clientVersion\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"web3_clientVersion\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 30, "depth": 3, "title": "debug_traceBlockByNumber", "anchor": "debug_traceblockbynumber", "start_char": 26689, "end_char": 27765, "estimated_token_count": 324, "token_estimator": "heuristic-v1", "text": "### debug_traceBlockByNumber \n\nTraces a block's execution by its number and returns a detailed execution trace for each transaction.\n\n**Parameters**:\n\n- **`blockValue` ++\"string\"++**: The block number or tag to trace. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n- **`options` ++\"object\"++**: (Optional) An object containing tracer options.\n - **`tracer` ++\"string\"++**: The name of the tracer to use (e.g., `\"callTracer\"`, `\"opTracer\"`).\n - Other tracer-specific options may be supported.\n\n**Example**:\n\n```bash title=\"debug_traceBlockByNumber\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"debug_traceBlockByNumber\",\n \"params\":[\"INSERT_BLOCK_VALUE\", {\"tracer\": \"callTracer\"}],\n \"id\":1\n}'\n```\n\nEnsure to replace `INSERT_BLOCK_VALUE` with a proper block number if needed.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 31, "depth": 3, "title": "debug_traceTransaction", "anchor": "debug_tracetransaction", "start_char": 27765, "end_char": 28609, "estimated_token_count": 249, "token_estimator": "heuristic-v1", "text": "### debug_traceTransaction\n\nTraces the execution of a single transaction by its hash and returns a detailed execution trace.\n\n**Parameters**:\n\n- **`transactionHash` ++\"string\"++**: The hash of the transaction to trace. Must be a [32 byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n- **`options` ++\"object\"++**: (Optional) An object containing tracer options (e.g., `tracer: \"callTracer\"`).\n\n**Example**:\n\n```bash title=\"debug_traceTransaction\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"debug_traceTransaction\",\n \"params\":[\"INSERT_TRANSACTION_HASH\", {\"tracer\": \"callTracer\"}],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_TRANSACTION_HASH` with the proper value.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 32, "depth": 3, "title": "debug_traceCall", "anchor": "debug_tracecall", "start_char": 28609, "end_char": 31042, "estimated_token_count": 751, "token_estimator": "heuristic-v1", "text": "### debug_traceCall\n\nExecutes a new message call and returns a detailed execution trace without creating a transaction on the blockchain.\n\n**Parameters**:\n\n- **`transaction` ++\"object\"++**: The transaction call object, similar to `eth_call` parameters.\n - **`to` ++\"string\"++**: Recipient address of the call. Must be a [20-byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`data` ++\"string\"++**: Hash of the method signature and encoded parameters. Must be a [data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`from` ++\"string\"++**: (Optional) Sender's address for the call. Must be a [20-byte data](https://ethereum.org/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`gas` ++\"string\"++**: (Optional) Gas limit to execute the call. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`gasPrice` ++\"string\"++**: (Optional) Gas price per unit of gas. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`value` ++\"string\"++**: (Optional) Value in wei to send with the call. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n- **`blockValue` ++\"string\"++**: (Optional) Block tag or block number to execute the call at. Must be a [quantity](https://ethereum.org/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n- **`options` ++\"object\"++**: (Optional) An object containing tracer options (e.g., `tracer: \"callTracer\"`).\n\n**Example**:\n\n```bash title=\"debug_traceCall\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"debug_traceCall\",\n \"params\":[{\n \"from\": \"INSERT_SENDER_ADDRESS\",\n \"to\": \"INSERT_RECIPIENT_ADDRESS\",\n \"data\": \"INSERT_ENCODED_CALL\"\n }, \"INSERT_BLOCK_VALUE\", {\"tracer\": \"callTracer\"}],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_SENDER_ADDRESS`, `INSERT_RECIPIENT_ADDRESS`, `INSERT_ENCODED_CALL`, and `INSERT_BLOCK_VALUE` with the proper value.\n\n---"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 33, "depth": 2, "title": "Response Format", "anchor": "response-format", "start_char": 31042, "end_char": 31225, "estimated_token_count": 57, "token_estimator": "heuristic-v1", "text": "## Response Format\n\nAll responses follow the standard JSON-RPC 2.0 format:\n\n```json\n{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"result\": ... // The return value varies by method\n}\n```"} -{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 34, "depth": 2, "title": "Error Handling", "anchor": "error-handling", "start_char": 31225, "end_char": 31444, "estimated_token_count": 64, "token_estimator": "heuristic-v1", "text": "## Error Handling\n\nIf an error occurs, the response will include an error object:\n\n```json\n{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"error\": {\n \"code\": -32000,\n \"message\": \"Error message here\"\n }\n}\n```"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 0, "depth": 2, "title": "Introduction", "anchor": "introduction", "start_char": 187, "end_char": 682, "estimated_token_count": 117, "token_estimator": "heuristic-v1", "text": "## Introduction\n\nPolkadot Hub provides Ethereum compatibility through its JSON-RPC interface, allowing developers to interact with the chain using familiar Ethereum tooling and methods. This document outlines the supported [Ethereum JSON-RPC methods](https://ethereum.org/en/developers/docs/apis/json-rpc/#json-rpc-methods){target=\\_blank} and provides examples of how to use them.\n\nThis guide uses the Polkadot Hub TestNet endpoint:\n\n```text\nhttps://testnet-passet-hub-eth-rpc.polkadot.io\n```"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 1, "depth": 2, "title": "Available Methods", "anchor": "available-methods", "start_char": 682, "end_char": 704, "estimated_token_count": 4, "token_estimator": "heuristic-v1", "text": "## Available Methods"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 2, "depth": 3, "title": "eth_accounts", "anchor": "eth_accounts", "start_char": 704, "end_char": 1138, "estimated_token_count": 148, "token_estimator": "heuristic-v1", "text": "### eth_accounts\n\nReturns a list of addresses owned by the client. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_accounts){target=\\_blank}.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"eth_accounts\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_accounts\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 3, "depth": 3, "title": "eth_blockNumber", "anchor": "eth_blocknumber", "start_char": 1138, "end_char": 1580, "estimated_token_count": 147, "token_estimator": "heuristic-v1", "text": "### eth_blockNumber\n\nReturns the number of the most recent block. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber){target=\\_blank}.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"eth_blockNumber\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_blockNumber\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 4, "depth": 3, "title": "eth_call", "anchor": "eth_call", "start_char": 1580, "end_char": 3831, "estimated_token_count": 725, "token_estimator": "heuristic-v1", "text": "### eth_call\n\nExecutes a new message call immediately without creating a transaction. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call){target=\\_blank}.\n\n**Parameters**:\n\n- **`transaction` ++\"object\"++**: The transaction call object.\n - **`to` ++\"string\"++**: Recipient address of the call. Must be a [20-byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`data` ++\"string\"++**: Hash of the method signature and encoded parameters. Must be a [data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`from` ++\"string\"++**: (Optional) Sender's address for the call. Must be a [20-byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`gas` ++\"string\"++**: (Optional) Gas limit to execute the call. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`gasPrice` ++\"string\"++**: (Optional) Gas price per unit of gas. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`value` ++\"string\"++**: (Optional) Value in wei to send with the call. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n- **`blockValue` ++\"string\"++**: (Optional) Block tag or block number to execute the call at. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/en/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n\n**Example**:\n\n```bash title=\"eth_call\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_call\",\n \"params\":[{\n \"to\": \"INSERT_RECIPIENT_ADDRESS\",\n \"data\": \"INSERT_ENCODED_CALL\"\n }, \"INSERT_BLOCK_VALUE\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_RECIPIENT_ADDRESS`, `INSERT_ENCODED_CALL`, and `INSERT_BLOCK_VALUE` with the proper values.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 5, "depth": 3, "title": "eth_chainId", "anchor": "eth_chainid", "start_char": 3831, "end_char": 4264, "estimated_token_count": 147, "token_estimator": "heuristic-v1", "text": "### eth_chainId\n\nReturns the chain ID used for signing transactions. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_chainid){target=\\_blank}.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"eth_chainId\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_chainId\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 6, "depth": 3, "title": "eth_estimateGas", "anchor": "eth_estimategas", "start_char": 4264, "end_char": 6477, "estimated_token_count": 712, "token_estimator": "heuristic-v1", "text": "### eth_estimateGas\n\nEstimates gas required for a transaction. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_estimategas){target=\\_blank}.\n\n**Parameters**:\n\n- **`transaction` ++\"object\"++**: The transaction call object.\n - **`to` ++\"string\"++**: Recipient address of the call. Must be a [20-byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`data` ++\"string\"++**: Hash of the method signature and encoded parameters. Must be a [data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`from` ++\"string\"++**: (Optional) Sender's address for the call. Must be a [20-byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`gas` ++\"string\"++**: (Optional) Gas limit to execute the call. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`gasPrice` ++\"string\"++**: (Optional) Gas price per unit of gas. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`value` ++\"string\"++**: (Optional) Value in wei to send with the call. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n- **`blockValue` ++\"string\"++**: (Optional) Block tag or block number to execute the call at. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/en/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n\n**Example**:\n\n```bash title=\"eth_estimateGas\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_estimateGas\",\n \"params\":[{\n \"to\": \"INSERT_RECIPIENT_ADDRESS\",\n \"data\": \"INSERT_ENCODED_FUNCTION_CALL\"\n }],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_RECIPIENT_ADDRESS` and `INSERT_ENCODED_CALL` with the proper values.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 7, "depth": 3, "title": "eth_gasPrice", "anchor": "eth_gasprice", "start_char": 6477, "end_char": 6900, "estimated_token_count": 146, "token_estimator": "heuristic-v1", "text": "### eth_gasPrice\n\nReturns the current gas price in Wei. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gasprice){target=\\_blank}.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"eth_gasPrice\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_gasPrice\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 8, "depth": 3, "title": "eth_getBalance", "anchor": "eth_getbalance", "start_char": 6900, "end_char": 7954, "estimated_token_count": 338, "token_estimator": "heuristic-v1", "text": "### eth_getBalance\n\nReturns the balance of a given address. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getbalance){target=\\_blank}.\n\n**Parameters**:\n\n- **`address` ++\"string\"++**: Address to query balance. Must be a [20-byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n- **`blockValue` ++\"string\"++**: (Optional) The block value to be fetched. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/en/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n\n**Example**:\n\n```bash title=\"eth_getBalance\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getBalance\",\n \"params\":[\"INSERT_ADDRESS\", \"INSERT_BLOCK_VALUE\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_ADDRESS` and `INSERT_BLOCK_VALUE` with the proper values.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 9, "depth": 3, "title": "eth_getBlockByHash", "anchor": "eth_getblockbyhash", "start_char": 7954, "end_char": 8855, "estimated_token_count": 270, "token_estimator": "heuristic-v1", "text": "### eth_getBlockByHash\n\nReturns information about a block by its hash. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbyhash){target=\\_blank}.\n\n**Parameters**:\n\n- **`blockHash` ++\"string\"++**: The hash of the block to retrieve. Must be a [32 byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n- **`fullTransactions` ++\"boolean\"++**: If `true`, returns full transaction details; if `false`, returns only transaction hashes.\n\n**Example**:\n\n```bash title=\"eth_getBlockByHash\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getBlockByHash\",\n \"params\":[\"INSERT_BLOCK_HASH\", INSERT_BOOLEAN],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_BLOCK_HASH` and `INSERT_BOOLEAN` with the proper values.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 10, "depth": 3, "title": "eth_getBlockByNumber", "anchor": "eth_getblockbynumber", "start_char": 8855, "end_char": 9883, "estimated_token_count": 307, "token_estimator": "heuristic-v1", "text": "### eth_getBlockByNumber\n\nReturns information about a block by its number. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber){target=\\_blank}.\n\n**Parameters**:\n\n- **`blockValue` ++\"string\"++**: (Optional) The block value to be fetched. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/en/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n- **`fullTransactions` ++\"boolean\"++**: If `true`, returns full transaction details; if `false`, returns only transaction hashes.\n\n**Example**:\n\n```bash title=\"eth_getBlockByNumber\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getBlockByNumber\",\n \"params\":[\"INSERT_BLOCK_VALUE\", INSERT_BOOLEAN],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_BLOCK_VALUE` and `INSERT_BOOLEAN` with the proper values.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 11, "depth": 3, "title": "eth_getBlockTransactionCountByNumber", "anchor": "eth_getblocktransactioncountbynumber", "start_char": 9883, "end_char": 10815, "estimated_token_count": 266, "token_estimator": "heuristic-v1", "text": "### eth_getBlockTransactionCountByNumber\n\nReturns the number of transactions in a block from a block number. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbynumber){target=\\_blank}.\n\n**Parameters**:\n\n- **`blockValue` ++\"string\"++**: The block value to be fetched. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/en/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n\n**Example**:\n\n```bash title=\"eth_getBlockTransactionCountByNumber\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getBlockTransactionCountByNumber\",\n \"params\":[\"INSERT_BLOCK_VALUE\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_BLOCK_VALUE` with the proper values.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 12, "depth": 3, "title": "eth_getBlockTransactionCountByHash", "anchor": "eth_getblocktransactioncountbyhash", "start_char": 10815, "end_char": 11631, "estimated_token_count": 232, "token_estimator": "heuristic-v1", "text": "### eth_getBlockTransactionCountByHash\n\nReturns the number of transactions in a block from a block hash. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbyhash){target=\\_blank}.\n\n**Parameters**:\n\n- **`blockHash` ++\"string\"++**: The hash of the block to retrieve. Must be a [32 byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n\n**Example**:\n\n```bash title=\"eth_getBlockTransactionCountByHash\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getBlockTransactionCountByHash\",\n \"params\":[\"INSERT_BLOCK_HASH\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_BLOCK_HASH` with the proper values.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 13, "depth": 3, "title": "eth_getCode", "anchor": "eth_getcode", "start_char": 11631, "end_char": 12671, "estimated_token_count": 335, "token_estimator": "heuristic-v1", "text": "### eth_getCode\n\nReturns the code at a given address. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getcode){target=\\_blank}.\n\n**Parameters**:\n\n- **`address` ++\"string\"++**: Contract or account address to query code. Must be a [20-byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n- **`blockValue` ++\"string\"++**: (Optional) The block value to be fetched. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/en/developers/docs/apis/json-rpc/#default-block).\n\n**Example**:\n\n```bash title=\"eth_getCode\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getCode\",\n \"params\":[\"INSERT_ADDRESS\", \"INSERT_BLOCK_VALUE\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_ADDRESS` and `INSERT_BLOCK_VALUE` with the proper values.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 14, "depth": 3, "title": "eth_getLogs", "anchor": "eth_getlogs", "start_char": 12671, "end_char": 14646, "estimated_token_count": 646, "token_estimator": "heuristic-v1", "text": "### eth_getLogs\n\nReturns an array of all logs matching a given filter object. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs){target=\\_blank}.\n\n**Parameters**:\n\n- **`filter` ++\"object\"++**: The filter object.\n - **`fromBlock` ++\"string\"++**: (Optional) Block number or tag to start from. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/en/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n - **`toBlock` ++\"string\"++**: (Optional) Block number or tag to end at. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/en/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n - **`address` ++\"string\" or \"array of strings\"++**: (Optional) Contract address or a list of addresses from which to get logs. Must be a [20-byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`topics` ++\"array of strings\"++**: (Optional) Array of topics for filtering logs. Each topic can be a single [32 byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string or an array of such strings (meaning OR).\n - **`blockhash` ++\"string\"++**: (Optional) Hash of a specific block. Cannot be used with `fromBlock` or `toBlock`. Must be a [32 byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n\n**Example**:\n\n```bash title=\"eth_getLogs\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getLogs\",\n \"params\":[{\n \"fromBlock\": \"latest\",\n \"toBlock\": \"latest\"\n }],\n \"id\":1\n}'\n```\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 15, "depth": 3, "title": "eth_getStorageAt", "anchor": "eth_getstorageat", "start_char": 14646, "end_char": 15973, "estimated_token_count": 412, "token_estimator": "heuristic-v1", "text": "### eth_getStorageAt\n\nReturns the value from a storage position at a given address. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getstorageat){target=\\_blank}.\n\n**Parameters**:\n\n- **`address` ++\"string\"++**: Contract or account address to query code. Must be a [20-byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n- **`storageKey` ++\"string\"++**: Position in storage to retrieve data from. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n- **`blockValue` ++\"string\"++**: (Optional) The block value to be fetched. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/en/developers/docs/apis/json-rpc/#default-block).\n\n**Example**:\n\n```bash title=\"eth_getStorageAt\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getStorageAt\",\n \"params\":[\"INSERT_ADDRESS\", \"INSERT_STORAGE_KEY\", \"INSERT_BLOCK_VALUE\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_ADDRESS`, `INSERT_STORAGE_KEY`, and `INSERT_BLOCK_VALUE` with the proper values.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 16, "depth": 3, "title": "eth_getTransactionCount", "anchor": "eth_gettransactioncount", "start_char": 15973, "end_char": 17072, "estimated_token_count": 337, "token_estimator": "heuristic-v1", "text": "### eth_getTransactionCount\n\nReturns the number of transactions sent from an address (nonce). [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactioncount){target=\\_blank}.\n\n**Parameters**:\n\n- **`address` ++\"string\"++**: Address to query balance. Must be a [20-byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n- **`blockValue` ++\"string\"++**: (Optional) The block value to be fetched. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/en/developers/docs/apis/json-rpc/#default-block).\n\n**Example**:\n\n```bash title=\"eth_getTransactionCount\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getTransactionCount\",\n \"params\":[\"INSERT_ADDRESS\", \"INSERT_BLOCK_VALUE\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_ADDRESS` and `INSERT_BLOCK_VALUE` with the proper values.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 17, "depth": 3, "title": "eth_getTransactionByHash", "anchor": "eth_gettransactionbyhash", "start_char": 17072, "end_char": 17848, "estimated_token_count": 226, "token_estimator": "heuristic-v1", "text": "### eth_getTransactionByHash\n\nReturns information about a transaction by its hash. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionbyhash){target=\\_blank}.\n\n**Parameters**:\n\n- **`transactionHash` ++\"string\"++**: The hash of the transaction. Must be a [32 byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n\n**Example**:\n\n```bash title=\"eth_getTransactionByHash\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getTransactionByHash\",\n \"params\":[\"INSERT_TRANSACTION_HASH\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_TRANSACTION_HASH` with the proper values.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 18, "depth": 3, "title": "eth_getTransactionByBlockNumberAndIndex", "anchor": "eth_gettransactionbyblocknumberandindex", "start_char": 17848, "end_char": 19066, "estimated_token_count": 338, "token_estimator": "heuristic-v1", "text": "### eth_getTransactionByBlockNumberAndIndex\n\nReturns information about a transaction by block number and transaction index. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionbyblocknumberandindex){target=\\_blank}.\n\n**Parameters**:\n\n- **`blockValue` ++\"string\"++**: The block value to be fetched. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/en/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n- **`transactionIndex` ++\"string\"++**: The index of the transaction in the block. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n\n**Example**:\n\n```bash title=\"eth_getTransactionByBlockNumberAndIndex\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getTransactionByBlockNumberAndIndex\",\n \"params\":[\"INSERT_BLOCK_VALUE\", \"INSERT_TRANSACTION_INDEX\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_BLOCK_VALUE` and `INSERT_TRANSACTION_INDEX` with the proper values.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 19, "depth": 3, "title": "eth_getTransactionByBlockHashAndIndex", "anchor": "eth_gettransactionbyblockhashandindex", "start_char": 19066, "end_char": 20156, "estimated_token_count": 302, "token_estimator": "heuristic-v1", "text": "### eth_getTransactionByBlockHashAndIndex\n\nReturns information about a transaction by block hash and transaction index. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionbyblockhashandindex){target=\\_blank}.\n\n**Parameters**:\n\n- **`blockHash` ++\"string\"++**: The hash of the block. Must be a [32 byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n- **`transactionIndex` ++\"string\"++**: The index of the transaction in the block. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n\n**Example**:\n\n```bash title=\"eth_getTransactionByBlockHashAndIndex\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getTransactionByBlockHashAndIndex\",\n \"params\":[\"INSERT_BLOCK_HASH\", \"INSERT_TRANSACTION_INDEX\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_BLOCK_HASH` and `INSERT_TRANSACTION_INDEX` with the proper values.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 20, "depth": 3, "title": "eth_getTransactionReceipt", "anchor": "eth_gettransactionreceipt", "start_char": 20156, "end_char": 20941, "estimated_token_count": 227, "token_estimator": "heuristic-v1", "text": "### eth_getTransactionReceipt\n\nReturns the receipt of a transaction by transaction hash. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionreceipt){target=\\_blank}.\n\n**Parameters**:\n\n- **`transactionHash` ++\"string\"++**: The hash of the transaction. Must be a [32 byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n\n**Example**:\n\n```bash title=\"eth_getTransactionReceipt\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_getTransactionReceipt\",\n \"params\":[\"INSERT_TRANSACTION_HASH\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_TRANSACTION_HASH` with the proper values.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 21, "depth": 3, "title": "eth_maxPriorityFeePerGas", "anchor": "eth_maxpriorityfeepergas", "start_char": 20941, "end_char": 21356, "estimated_token_count": 125, "token_estimator": "heuristic-v1", "text": "### eth_maxPriorityFeePerGas\n\nReturns an estimate of the current priority fee per gas, in Wei, to be included in a block.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"eth_maxPriorityFeePerGas\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_maxPriorityFeePerGas\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 22, "depth": 3, "title": "eth_sendRawTransaction", "anchor": "eth_sendrawtransaction", "start_char": 21356, "end_char": 22065, "estimated_token_count": 218, "token_estimator": "heuristic-v1", "text": "### eth_sendRawTransaction\n\nSubmits a raw transaction. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction){target=\\_blank}.\n\n**Parameters**:\n\n- **`callData` ++\"string\"++**: Signed transaction data. Must be a [data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n\n**Example**:\n\n```bash title=\"eth_sendRawTransaction\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_sendRawTransaction\",\n \"params\":[\"INSERT_CALL_DATA\"],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_CALL_DATA` with the proper values.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 23, "depth": 3, "title": "eth_sendTransaction", "anchor": "eth_sendtransaction", "start_char": 22065, "end_char": 24444, "estimated_token_count": 730, "token_estimator": "heuristic-v1", "text": "### eth_sendTransaction\n\nCreates and sends a new transaction. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendtransaction){target=\\_blank}.\n\n**Parameters**:\n\n- **`transaction` ++\"object\"++**: The transaction object.\n - **`from` ++\"string\"++**: Address sending the transaction. Must be a [20-byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`to` ++\"string\"++**: (Optional) Recipient address. No need to provide this value when deploying a contract. Must be a [20-byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`gas` ++\"string\"++**: (optional, default: `90000`) gas limit for execution. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`gasPrice` ++\"string\"++**: (Optional) Gas price per unit. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`value` ++\"string\"++**: (Optional) Amount of Ether to send. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`data` ++\"string\"++**: (Optional) Contract bytecode or encoded method call. Must be a [data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`nonce` ++\"string\"++**: (Optional) Transaction nonce. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n\n**Example**:\n\n```bash title=\"eth_sendTransaction\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_sendTransaction\",\n \"params\":[{\n \"from\": \"INSERT_SENDER_ADDRESS\",\n \"to\": \"INSERT_RECIPIENT_ADDRESS\",\n \"gas\": \"INSERT_GAS_LIMIT\",\n \"gasPrice\": \"INSERT_GAS_PRICE\",\n \"value\": \"INSERT_VALUE\",\n \"input\": \"INSERT_INPUT_DATA\",\n \"nonce\": \"INSERT_NONCE\"\n }],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_SENDER_ADDRESS`, `INSERT_RECIPIENT_ADDRESS`, `INSERT_GAS_LIMIT`, `INSERT_GAS_PRICE`, `INSERT_VALUE`, `INSERT_INPUT_DATA`, and `INSERT_NONCE` with the proper values.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 24, "depth": 3, "title": "eth_syncing", "anchor": "eth_syncing", "start_char": 24444, "end_char": 24888, "estimated_token_count": 152, "token_estimator": "heuristic-v1", "text": "### eth_syncing\n\nReturns an object with syncing data or `false` if not syncing. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_syncing){target=\\_blank}.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"eth_syncing\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"eth_syncing\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 25, "depth": 3, "title": "net_listening", "anchor": "net_listening", "start_char": 24888, "end_char": 25373, "estimated_token_count": 157, "token_estimator": "heuristic-v1", "text": "### net_listening\n\nReturns `true` if the client is currently listening for network connections, otherwise `false`. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#net_listening){target=\\_blank}.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"net_listening\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"net_listening\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 26, "depth": 3, "title": "net_peerCount", "anchor": "net_peercount", "start_char": 25373, "end_char": 25726, "estimated_token_count": 115, "token_estimator": "heuristic-v1", "text": "### net_peerCount\n\nReturns the number of peers currently connected to the client.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"net_peerCount\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"net_peerCount\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 27, "depth": 3, "title": "net_version", "anchor": "net_version", "start_char": 25726, "end_char": 26151, "estimated_token_count": 147, "token_estimator": "heuristic-v1", "text": "### net_version\n\nReturns the current network ID as a string. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#net_version){target=\\_blank}.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"net_version\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"net_version\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 28, "depth": 3, "title": "system_health", "anchor": "system_health", "start_char": 26151, "end_char": 26493, "estimated_token_count": 113, "token_estimator": "heuristic-v1", "text": "### system_health\n\nReturns information about the health of the system.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"system_health\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"system_health\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 29, "depth": 3, "title": "web3_clientVersion", "anchor": "web3_clientversion", "start_char": 26493, "end_char": 26938, "estimated_token_count": 144, "token_estimator": "heuristic-v1", "text": "### web3_clientVersion\n\nReturns the current client version. [Reference](https://ethereum.org/en/developers/docs/apis/json-rpc/#web3_clientversion){target=\\_blank}.\n\n**Parameters**:\n\nNone.\n\n**Example**:\n\n```bash title=\"web3_clientVersion\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"web3_clientVersion\",\n \"params\":[],\n \"id\":1\n}'\n```\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 30, "depth": 3, "title": "debug_traceBlockByNumber", "anchor": "debug_traceblockbynumber", "start_char": 26938, "end_char": 28020, "estimated_token_count": 328, "token_estimator": "heuristic-v1", "text": "### debug_traceBlockByNumber \n\nTraces a block's execution by its number and returns a detailed execution trace for each transaction.\n\n**Parameters**:\n\n- **`blockValue` ++\"string\"++**: The block number or tag to trace. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/en/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n- **`options` ++\"object\"++**: (Optional) An object containing tracer options.\n - **`tracer` ++\"string\"++**: The name of the tracer to use (e.g., `\"callTracer\"`, `\"opTracer\"`).\n - Other tracer-specific options may be supported.\n\n**Example**:\n\n```bash title=\"debug_traceBlockByNumber\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"debug_traceBlockByNumber\",\n \"params\":[\"INSERT_BLOCK_VALUE\", {\"tracer\": \"callTracer\"}],\n \"id\":1\n}'\n```\n\nEnsure to replace `INSERT_BLOCK_VALUE` with a proper block number if needed.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 31, "depth": 3, "title": "debug_traceTransaction", "anchor": "debug_tracetransaction", "start_char": 28020, "end_char": 28867, "estimated_token_count": 251, "token_estimator": "heuristic-v1", "text": "### debug_traceTransaction\n\nTraces the execution of a single transaction by its hash and returns a detailed execution trace.\n\n**Parameters**:\n\n- **`transactionHash` ++\"string\"++**: The hash of the transaction to trace. Must be a [32 byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n- **`options` ++\"object\"++**: (Optional) An object containing tracer options (e.g., `tracer: \"callTracer\"`).\n\n**Example**:\n\n```bash title=\"debug_traceTransaction\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"debug_traceTransaction\",\n \"params\":[\"INSERT_TRANSACTION_HASH\", {\"tracer\": \"callTracer\"}],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_TRANSACTION_HASH` with the proper value.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 32, "depth": 3, "title": "debug_traceCall", "anchor": "debug_tracecall", "start_char": 28867, "end_char": 31324, "estimated_token_count": 767, "token_estimator": "heuristic-v1", "text": "### debug_traceCall\n\nExecutes a new message call and returns a detailed execution trace without creating a transaction on the blockchain.\n\n**Parameters**:\n\n- **`transaction` ++\"object\"++**: The transaction call object, similar to `eth_call` parameters.\n - **`to` ++\"string\"++**: Recipient address of the call. Must be a [20-byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`data` ++\"string\"++**: Hash of the method signature and encoded parameters. Must be a [data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`from` ++\"string\"++**: (Optional) Sender's address for the call. Must be a [20-byte data](https://ethereum.org/en/developers/docs/apis/json-rpc/#unformatted-data-encoding){target=\\_blank} string.\n - **`gas` ++\"string\"++**: (Optional) Gas limit to execute the call. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`gasPrice` ++\"string\"++**: (Optional) Gas price per unit of gas. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n - **`value` ++\"string\"++**: (Optional) Value in wei to send with the call. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string.\n- **`blockValue` ++\"string\"++**: (Optional) Block tag or block number to execute the call at. Must be a [quantity](https://ethereum.org/en/developers/docs/apis/json-rpc/#quantities-encoding){target=\\_blank} string or a [default block parameter](https://ethereum.org/en/developers/docs/apis/json-rpc/#default-block){target=\\_blank}.\n- **`options` ++\"object\"++**: (Optional) An object containing tracer options (e.g., `tracer: \"callTracer\"`).\n\n**Example**:\n\n```bash title=\"debug_traceCall\"\ncurl -X POST https://testnet-passet-hub-eth-rpc.polkadot.io \\\n-H \"Content-Type: application/json\" \\\n--data '{\n \"jsonrpc\":\"2.0\",\n \"method\":\"debug_traceCall\",\n \"params\":[{\n \"from\": \"INSERT_SENDER_ADDRESS\",\n \"to\": \"INSERT_RECIPIENT_ADDRESS\",\n \"data\": \"INSERT_ENCODED_CALL\"\n }, \"INSERT_BLOCK_VALUE\", {\"tracer\": \"callTracer\"}],\n \"id\":1\n}'\n```\n\nEnsure to replace the `INSERT_SENDER_ADDRESS`, `INSERT_RECIPIENT_ADDRESS`, `INSERT_ENCODED_CALL`, and `INSERT_BLOCK_VALUE` with the proper value.\n\n---"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 33, "depth": 2, "title": "Response Format", "anchor": "response-format", "start_char": 31324, "end_char": 31507, "estimated_token_count": 57, "token_estimator": "heuristic-v1", "text": "## Response Format\n\nAll responses follow the standard JSON-RPC 2.0 format:\n\n```json\n{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"result\": ... // The return value varies by method\n}\n```"} +{"page_id": "smart-contracts-for-eth-devs-json-rpc-apis", "page_title": "JSON-RPC APIs", "index": 34, "depth": 2, "title": "Error Handling", "anchor": "error-handling", "start_char": 31507, "end_char": 31726, "estimated_token_count": 64, "token_estimator": "heuristic-v1", "text": "## Error Handling\n\nIf an error occurs, the response will include an error object:\n\n```json\n{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"error\": {\n \"code\": -32000,\n \"message\": \"Error message here\"\n }\n}\n```"} {"page_id": "smart-contracts-for-eth-devs-migration", "page_title": "Migration FAQs and Considerations", "index": 0, "depth": 2, "title": "Introduction", "anchor": "introduction", "start_char": 37, "end_char": 303, "estimated_token_count": 40, "token_estimator": "heuristic-v1", "text": "## Introduction\n\nThis guide helps Ethereum developers migrate their smart contracts to Polkadot Hub. Most contracts work without modifications on the REVM backend, while the PolkaVM backend offers enhanced performance with minimal adaptation for standard patterns."} {"page_id": "smart-contracts-for-eth-devs-migration", "page_title": "Migration FAQs and Considerations", "index": 1, "depth": 2, "title": "Migration Considerations", "anchor": "migration-considerations", "start_char": 303, "end_char": 645, "estimated_token_count": 62, "token_estimator": "heuristic-v1", "text": "## Migration Considerations\n\nTake into account the following considerations before migrating your contracts:\n\n- Standard ERC-20, ERC-721, ERC-1155 tokens work without changes.\n- DeFi protocols, DEXs, and AMMs migrate seamlessly.\n- DAOs and governance contracts are fully compatible.\n- Most Solidity contracts deploy identically to Ethereum."} {"page_id": "smart-contracts-for-eth-devs-migration", "page_title": "Migration FAQs and Considerations", "index": 2, "depth": 2, "title": "Migration Checklist", "anchor": "migration-checklist", "start_char": 645, "end_char": 1058, "estimated_token_count": 81, "token_estimator": "heuristic-v1", "text": "## Migration Checklist\n\nBefore migrating your contracts, review this checklist:\n\n- Factory contracts using PVM bytecode need pre-uploaded dependencies.\n- Contracts using `EXTCODECOPY` for runtime manipulation require review (for projects that will use PVM bytecode, not EVM bytecode).\n- Replace `transfer()` and `send()` with proper reentrancy guards (for projects that will use PVM bytecode, not EVM bytecode)."} @@ -1094,15 +1097,15 @@ {"page_id": "smart-contracts-for-eth-devs-migration", "page_title": "Migration FAQs and Considerations", "index": 7, "depth": 3, "title": "How do gas costs compare?", "anchor": "how-do-gas-costs-compare", "start_char": 3177, "end_char": 3328, "estimated_token_count": 47, "token_estimator": "heuristic-v1", "text": "### How do gas costs compare?\n\nFor more information on gas costs, see the [Gas Model](/smart-contracts/for-eth-devs/gas-model/){target=\\_blank} page."} {"page_id": "smart-contracts-for-eth-devs-migration", "page_title": "Migration FAQs and Considerations", "index": 8, "depth": 3, "title": "Which Solidity features are not supported?", "anchor": "which-solidity-features-are-not-supported", "start_char": 3328, "end_char": 3915, "estimated_token_count": 133, "token_estimator": "heuristic-v1", "text": "### Which Solidity features are not supported?\n\nFor REVM, any Solidity feature will function smoothly without requiring changes or adaptations. For PVM, there are considerations, as was mentioned above. \n\nFor PolkaVM, there are some considerations:\n\n- `EXTCODECOPY`: Only works in constructor code.\n- Runtime code modification: Use on-chain constructors instead.\n- **Gas stipends**: `address.send()` and `address.transfer()` don't provide reentrancy protection.\n- **Unsupported operations**: `pc`, `extcodecopy`, `selfdestruct`, `blobhash`, and `blobbasefee` (blob-related operations)."} {"page_id": "smart-contracts-for-eth-devs-migration", "page_title": "Migration FAQs and Considerations", "index": 9, "depth": 3, "title": "How do I handle the existential deposit?", "anchor": "how-do-i-handle-the-existential-deposit", "start_char": 3915, "end_char": 4518, "estimated_token_count": 121, "token_estimator": "heuristic-v1", "text": "### How do I handle the existential deposit?\n\nPolkadot requires accounts to maintain a minimum balance (existential deposit or ED) to remain active.\n\nThis is handled automatically for you:\n\n- Balance queries via Ethereum RPC automatically deduct the ED.\n- New account transfers include ED in transaction fees.\n- Contract-to-contract transfers draw ED from the transaction signer.\n\nYou typically don't need to do anything special, but be aware:\n\n- Accounts below ED threshold are automatically deleted.\n- ED is around 0.01 DOT (varies by network).\n- Your contracts don't need to manage this explicitly."} -{"page_id": "smart-contracts-for-eth-devs-migration", "page_title": "Migration FAQs and Considerations", "index": 10, "depth": 3, "title": "Can I use my existing development tools?", "anchor": "can-i-use-my-existing-development-tools", "start_char": 4518, "end_char": 5319, "estimated_token_count": 257, "token_estimator": "heuristic-v1", "text": "### Can I use my existing development tools?\n\nYes. Both backends support:\n\n- **Wallets**: [MetaMask](https://metamask.io/){target=\\_blank}, [Talisman](https://talisman.xyz/){target=\\_blank}, [SubWallet](https://www.subwallet.app/){target=\\_blank}\n- **Development frameworks**: [Hardhat](/smart-contracts/cookbook/smart-contracts/deploy-basic/hardhat/){target=\\_blank}, [Remix](/smart-contracts/cookbook/smart-contracts/deploy-basic/remix/){target=\\_blank}\n- **Libraries**: [Ethers.js](/smart-contracts/libraries/ethers-js/){target=\\_blank}, [Web3.js](/smart-contracts/libraries/web3-js/){target=\\_blank}, [viem](/smart-contracts/libraries/viem/){target=\\_blank}\n- **Testing tools**: Your existing test suites work\n\nConnect to Polkadot Hub's Ethereum JSON-RPC endpoint and use your familiar workflow."} -{"page_id": "smart-contracts-for-eth-devs-migration", "page_title": "Migration FAQs and Considerations", "index": 11, "depth": 2, "title": "Conclusion", "anchor": "conclusion", "start_char": 5319, "end_char": 6067, "estimated_token_count": 153, "token_estimator": "heuristic-v1", "text": "## Conclusion\n\nMost Ethereum contracts migrate to Polkadot Hub with minimal or no changes. Use REVM for seamless compatibility or PolkaVM for enhanced performance.\n\nThere are a few key points to keep in mind during migration:\n\n- Replace `transfer()` and `send()` with `.call{value}(\"\")` and use reentrancy guards (for projects that will use PVM bytecode, not EVM bytecode).\n- PolkaVM factory contracts using PVM bytecode need pre-uploaded dependencies.\n- Don't hardcode gas values.\n- Test thoroughly on [TestNet](/smart-contracts/connect/#__tabbed_1_1){target=\\_blank} before mainnet deployment.\n\nYour existing Solidity knowledge and tooling transfer directly to Polkadot Hub, making migration straightforward for standard smart contract patterns."} -{"page_id": "smart-contracts-get-started", "page_title": "Get Started with Smart Contracts", "index": 0, "depth": 2, "title": "Quick Starts", "anchor": "quick-starts", "start_char": 173, "end_char": 1860, "estimated_token_count": 462, "token_estimator": "heuristic-v1", "text": "## Quick Starts\n\nKick off development fast with curated links for connecting, funding, exploring, and deploying your first contract.\n\n| Quick Start | Tools | Description |\n|:---------------------------------------------------------------------------------------------------:|:---------------------:|:---------------------------------------------------------------:|\n| [Connect to Polkadot](/smart-contracts/connect/){target=\\_blank} | Polkadot.js, MetaMask | Add the network, configure RPC, verify activity in the explorer |\n| [Get Test Tokens](/smart-contracts/faucets/){target=\\_blank} | - | Request test funds to deploy and interact with contracts |\n| [Explore Transactions](/smart-contracts/explorers/){target=\\_blank} | Subscan | Inspect transactions, logs, token transfers, and contract state |\n| [Deploy with Remix](/smart-contracts/dev-environments/remix/deploy-a-contract/){target=\\_blank} | Remix | One‑click browser deployment to Polkadot Hub |\n| [Deploy with Foundry](/smart-contracts/dev-environments/foundry/deploy-a-contract/){target=\\_blank} | Foundry | Scripted deployments and testing from the CLI |\n| [Deploy with Hardhat](/smart-contracts/dev-environments/hardhat/deploy-a-contract/){target=\\_blank} | Hardhat | Project scaffolding, testing, and deployments |"} -{"page_id": "smart-contracts-get-started", "page_title": "Get Started with Smart Contracts", "index": 1, "depth": 2, "title": "Build and Test Locally", "anchor": "build-and-test-locally", "start_char": 1860, "end_char": 4067, "estimated_token_count": 604, "token_estimator": "heuristic-v1", "text": "## Build and Test Locally\n\nSet up local environments and CI-friendly workflows to iterate quickly and validate changes before deploying.\n\n| Build and Test Locally | Tools | Description |\n|:------------------------------------------------------------------------------------------------------------:|:-----------------:|:----------------------------------------------------:|\n| [Run a Local Dev Node](/smart-contracts/dev-environments/local-dev-node/){target=\\_blank} | Polkadot SDK node | Spin up a local node for iterative development |\n| [Remix: Get Started](/smart-contracts/dev-environments/remix/get-started/){target=\\_blank} | Remix | Connect Remix to Polkadot Hub and configure accounts |\n| [Remix: Verify a Contract](/smart-contracts/dev-environments/remix/verify-a-contract/){target=\\_blank} | Remix | Publish verified source on explorers |\n| [Foundry: Install and Config](/smart-contracts/dev-environments/foundry/install-and-config/){target=\\_blank} | Foundry | Install toolchain and configure networks |\n| [Foundry: Compile and Test](/smart-contracts/dev-environments/foundry/compile-and-test/){target=\\_blank} | Foundry | Write and run Solidity tests locally |\n| [Foundry: Verify a Contract](/smart-contracts/dev-environments/foundry/verify-a-contract/){target=\\_blank} | Foundry | Verify deployed bytecode and metadata |\n| [Hardhat: Install and Config](/smart-contracts/dev-environments/hardhat/install-and-config/){target=\\_blank} | Hardhat | Initialize a project and configure networks |\n| [Hardhat: Compile and Test](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\\_blank} | Hardhat | Unit test contracts and run scripts |\n| [Hardhat: Verify a Contract](/smart-contracts/dev-environments/hardhat/verify-a-contract/){target=\\_blank} | Hardhat | Verify deployments on explorers |"} -{"page_id": "smart-contracts-get-started", "page_title": "Get Started with Smart Contracts", "index": 2, "depth": 2, "title": "Ethereum Developer Resources", "anchor": "ethereum-developer-resources", "start_char": 4067, "end_char": 5795, "estimated_token_count": 492, "token_estimator": "heuristic-v1", "text": "## Ethereum Developer Resources\n\nBridge your Ethereum knowledge with Polkadot Hub specifics: account mapping, fees, JSON‑RPC, and deployment.\n\n| Ethereum Developer Guides | Description |\n|:---------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------:|\n| [Accounts](/smart-contracts/for-eth-devs/accounts/){target=\\_blank} | How 20‑byte Ethereum addresses map to 32‑byte Polkadot accounts |\n| [Blocks, Transactions, and Fees](/smart-contracts/for-eth-devs/blocks-transactions-fees/){target=\\_blank} | Transaction types, fees, and multi‑dimensional metering |\n| [Gas Model](/smart-contracts/for-eth-devs/gas-model/){target=\\_blank} | Gas vs. weight, proof size, and storage deposits |\n| [Contract Deployment](/smart-contracts/for-eth-devs/contract-deployment/){target=\\_blank} | Deployment patterns and best practices on Polkadot Hub |\n| [JSON‑RPC APIs](/smart-contracts/for-eth-devs/json-rpc-apis/){target=\\_blank} | Supported Ethereum JSON‑RPC methods and examples |\n| [Migration](/smart-contracts/for-eth-devs/migration/){target=\\_blank} | Port existing apps and tooling to Polkadot Hub |\n| [Dual VM Stack](/smart-contracts/for-eth-devs/dual-vm-stack/){target=\\_blank} | Overview of EVM and native execution on the Hub |"} -{"page_id": "smart-contracts-get-started", "page_title": "Get Started with Smart Contracts", "index": 3, "depth": 2, "title": "Cookbook: Hands‑on Tutorials", "anchor": "cookbook-handson-tutorials", "start_char": 5795, "end_char": 7141, "estimated_token_count": 427, "token_estimator": "heuristic-v1", "text": "## Cookbook: Hands‑on Tutorials\n\nFollow step‑by‑step guides that walk through common tasks and complete dApp examples.\n\n| Tutorial | Tools | Description |\n|:--------------------------------------------------------------------------------------------------------:|:-------------------:|:-----------------------------------------:|\n| [Deploy a Basic Contract](/smart-contracts/cookbook/smart-contracts/deploy-basic/remix/){target=\\_blank} | Remix | Minimal deployment walkthrough |\n| [Deploy an ERC‑20](/smart-contracts/cookbook/smart-contracts/deploy-erc20/remix/){target=\\_blank} | Remix, OpenZeppelin | Create, deploy, and mint a fungible token |\n| [Deploy an NFT (ERC‑721)](/smart-contracts/cookbook/smart-contracts/deploy-nft/remix/){target=\\_blank} | Remix, OpenZeppelin | Build and deploy an NFT collection |\n| [Uniswap V2](/smart-contracts/cookbook/eth-dapps/uniswap-v2/){target=\\_blank} | Hardhat | Full dApp project: compile, test, deploy |\n| [Zero‑to‑Hero dApp](/smart-contracts/cookbook/dapps/zero-to-hero/){target=\\_blank} | Multiple | End‑to‑end dApp patterns and practices |"} -{"page_id": "smart-contracts-get-started", "page_title": "Get Started with Smart Contracts", "index": 4, "depth": 2, "title": "Libraries", "anchor": "libraries", "start_char": 7141, "end_char": 8154, "estimated_token_count": 317, "token_estimator": "heuristic-v1", "text": "## Libraries\n\nChoose the client libraries that fit your stack for connecting wallets and calling contracts.\n\n| Library | Description |\n|:------------------------------------------------------------------:|:-------------------------------------------------------:|\n| [Ethers.js](/smart-contracts/libraries/ethers-js/){target=\\_blank} | Connect, sign, and interact with contracts using Ethers |\n| [viem](/smart-contracts/libraries/viem/){target=\\_blank} | Type‑safe EVM interactions and utilities |\n| [Wagmi](/smart-contracts/libraries/wagmi/){target=\\_blank} | React hooks for wallet connections and contract calls |\n| [Web3.js](/smart-contracts/libraries/web3-js/){target=\\_blank} | Web3 provider and contract APIs |\n| [Web3.py](/smart-contracts/libraries/web3-py/){target=\\_blank} | Python toolkit for on‑chain interactions and scripts |"} -{"page_id": "smart-contracts-get-started", "page_title": "Get Started with Smart Contracts", "index": 5, "depth": 2, "title": "Integrations", "anchor": "integrations", "start_char": 8154, "end_char": 8842, "estimated_token_count": 224, "token_estimator": "heuristic-v1", "text": "## Integrations\n\nIntegrate essential services like wallets, indexers, and oracles to round out your dApp.\n\n| Integration | Description |\n|:-------------------------------------------------------------------:|:-----------------------------------------:|\n| [Wallets](/smart-contracts/integrations/wallets/){target=\\_blank} | Supported wallets and configuration notes |\n| [Indexers](/smart-contracts/integrations/indexers/){target=\\_blank} | Index and query blockchain data |\n| [Oracles](/smart-contracts/integrations/oracles/){target=\\_blank} | Bring external data on‑chain |"} -{"page_id": "smart-contracts-get-started", "page_title": "Get Started with Smart Contracts", "index": 6, "depth": 2, "title": "Precompiles", "anchor": "precompiles", "start_char": 8842, "end_char": 10103, "estimated_token_count": 362, "token_estimator": "heuristic-v1", "text": "## Precompiles\n\nDiscover precompiled system contracts available on the Hub and how to use them.\n\n| Topic | Description |\n|:------------------------------------------------------------------------:|:---------------------------------------------------:|\n| [Overview of Precompiles](/smart-contracts/precompiles/){target=\\_blank} | What precompiles are available on the Hub |\n| [ETH Native](/smart-contracts/precompiles/eth-native/){target=\\_blank} | EVM precompiles and interfaces |\n| [Staking](/smart-contracts/precompiles/staking/){target=\\_blank} | Interact with staking functionality via precompiles |\n| [XCM](/smart-contracts/precompiles/xcm/){target=\\_blank} | Cross‑chain messaging helpers for contracts |\n\nFrom here, follow the quick starts to get connected, iterate locally with your preferred tools, and use the guides, libraries, integrations, and precompiles as you grow into production‑ready dApps. If you get stuck, [open an issue](https://github.com/polkadot-developers/polkadot-docs/issues/new?template=docs-issue.yml){target=\\_blank} or reach out in the community channels."} +{"page_id": "smart-contracts-for-eth-devs-migration", "page_title": "Migration FAQs and Considerations", "index": 10, "depth": 3, "title": "Can I use my existing development tools?", "anchor": "can-i-use-my-existing-development-tools", "start_char": 4518, "end_char": 5499, "estimated_token_count": 304, "token_estimator": "heuristic-v1", "text": "### Can I use my existing development tools?\n\nYes. Both backends support:\n\n- **Wallets**: [MetaMask](https://metamask.io/){target=\\_blank}, [Talisman](https://talisman.xyz/){target=\\_blank}, [SubWallet](https://www.subwallet.app/){target=\\_blank}\n- **Development frameworks**: [Hardhat](/smart-contracts/cookbook/smart-contracts/deploy-basic/hardhat/){target=\\_blank}, [Foundry](/smart-contracts/cookbook/smart-contracts/deploy-basic/foundry/){target=\\_blank}, [Remix](/smart-contracts/cookbook/smart-contracts/deploy-basic/remix/){target=\\_blank} (just consider that for PVM bytecode, you will use the Polkadot version of the tooling)\n- **Libraries**: [ethers.js](/smart-contracts/libraries/ethers-js/){target=\\_blank}, [web3.js](/smart-contracts/libraries/web3-js/){target=\\_blank}, [viem](/smart-contracts/libraries/viem/){target=\\_blank}\n- **Testing tools**: Your existing test suites work\n\nConnect to Polkadot Hub's Ethereum JSON-RPC endpoint and use your familiar workflow."} +{"page_id": "smart-contracts-for-eth-devs-migration", "page_title": "Migration FAQs and Considerations", "index": 11, "depth": 2, "title": "Conclusion", "anchor": "conclusion", "start_char": 5499, "end_char": 6247, "estimated_token_count": 153, "token_estimator": "heuristic-v1", "text": "## Conclusion\n\nMost Ethereum contracts migrate to Polkadot Hub with minimal or no changes. Use REVM for seamless compatibility or PolkaVM for enhanced performance.\n\nThere are a few key points to keep in mind during migration:\n\n- Replace `transfer()` and `send()` with `.call{value}(\"\")` and use reentrancy guards (for projects that will use PVM bytecode, not EVM bytecode).\n- PolkaVM factory contracts using PVM bytecode need pre-uploaded dependencies.\n- Don't hardcode gas values.\n- Test thoroughly on [TestNet](/smart-contracts/connect/#__tabbed_1_1){target=\\_blank} before mainnet deployment.\n\nYour existing Solidity knowledge and tooling transfer directly to Polkadot Hub, making migration straightforward for standard smart contract patterns."} +{"page_id": "smart-contracts-get-started", "page_title": "Get Started with Smart Contracts", "index": 0, "depth": 2, "title": "Quick Starts", "anchor": "quick-starts", "start_char": 173, "end_char": 1843, "estimated_token_count": 456, "token_estimator": "heuristic-v1", "text": "## Quick Starts\n\nKick off development fast with curated links for connecting, funding, exploring, and deploying your first contract.\n\n| Quick Start | Tools | Description |\n| :-------------------------------------------------------------------------------------------------: | :-------------------: | :-------------------------------------------------------------: |\n| [Connect to Polkadot](/smart-contracts/connect/){target=\\_blank} | Polkadot.js, MetaMask | Add the network, configure RPC, verify activity in the explorer |\n| [Get Test Tokens](/smart-contracts/faucets/){target=\\_blank} | - | Request test funds to deploy and interact with contracts |\n| [Explore Transactions](/smart-contracts/explorers/){target=\\_blank} | Subscan | Inspect transactions, logs, token transfers, and contract state |\n| [Deploy with Remix](/smart-contracts/dev-environments/remix/deploy-a-contract/){target=\\_blank} | Remix | One‑click browser deployment to Polkadot Hub |\n| [Deploy with Foundry](/smart-contracts/dev-environments/foundry/deploy-a-contract/){target=\\_blank} | Foundry | Scripted deployments and testing from the CLI |\n| [Deploy with Hardhat](/smart-contracts/dev-environments/hardhat/deploy-a-contract/){target=\\_blank} | Hardhat | Project scaffolding, testing, and deployments |"} +{"page_id": "smart-contracts-get-started", "page_title": "Get Started with Smart Contracts", "index": 1, "depth": 2, "title": "Build and Test Locally", "anchor": "build-and-test-locally", "start_char": 1843, "end_char": 4050, "estimated_token_count": 596, "token_estimator": "heuristic-v1", "text": "## Build and Test Locally\n\nSet up local environments and CI-friendly workflows to iterate quickly and validate changes before deploying.\n\n| Build and Test Locally | Tools | Description |\n| :--------------------------------------------------------------------------------------------------------: | :---------------: | :--------------------------------------------------: |\n| [Run a Local Dev Node](/smart-contracts/dev-environments/local-dev-node/){target=\\_blank} | Polkadot SDK node | Spin up a local node for iterative development |\n| [Remix: Get Started](/smart-contracts/dev-environments/remix/get-started/){target=\\_blank} | Remix | Connect Remix to Polkadot Hub and configure accounts |\n| [Remix: Verify a Contract](/smart-contracts/dev-environments/remix/verify-a-contract/){target=\\_blank} | Remix | Publish verified source on explorers |\n| [Foundry: Install and Config](/smart-contracts/dev-environments/foundry/install-and-config/){target=\\_blank} | Foundry | Install toolchain and configure networks |\n| [Foundry: Compile and Test](/smart-contracts/dev-environments/foundry/compile-and-test/){target=\\_blank} | Foundry | Write and run Solidity tests locally |\n| [Foundry: Verify a Contract](/smart-contracts/dev-environments/foundry/verify-a-contract/){target=\\_blank} | Foundry | Verify deployed bytecode and metadata |\n| [Hardhat: Install and Config](/smart-contracts/dev-environments/hardhat/install-and-config/){target=\\_blank} | Hardhat | Initialize a project and configure networks |\n| [Hardhat: Compile and Test](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\\_blank} | Hardhat | Unit test contracts and run scripts |\n| [Hardhat: Verify a Contract](/smart-contracts/dev-environments/hardhat/verify-a-contract/){target=\\_blank} | Hardhat | Verify deployments on explorers |"} +{"page_id": "smart-contracts-get-started", "page_title": "Get Started with Smart Contracts", "index": 2, "depth": 2, "title": "Ethereum Developer Resources", "anchor": "ethereum-developer-resources", "start_char": 4050, "end_char": 5794, "estimated_token_count": 488, "token_estimator": "heuristic-v1", "text": "## Ethereum Developer Resources\n\nBridge your Ethereum knowledge with Polkadot Hub specifics: account mapping, fees, JSON‑RPC, and deployment.\n\n| Ethereum Developer Guides | Description |\n| :-------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------: |\n| [Accounts](/smart-contracts/for-eth-devs/accounts/){target=\\_blank} | How 20‑byte Ethereum addresses map to 32‑byte Polkadot accounts |\n| [Blocks, Transactions, and Fees](/smart-contracts/for-eth-devs/blocks-transactions-fees/){target=\\_blank} | Transaction types, fees, and multi‑dimensional metering |\n| [Gas Model](/smart-contracts/for-eth-devs/gas-model/){target=\\_blank} | Gas vs. weight, proof size, and storage deposits |\n| [Contract Deployment](/smart-contracts/for-eth-devs/contract-deployment/){target=\\_blank} | Deployment patterns and best practices on Polkadot Hub |\n| [JSON‑RPC APIs](/smart-contracts/for-eth-devs/json-rpc-apis/){target=\\_blank} | Supported Ethereum JSON‑RPC methods and examples |\n| [Migration](/smart-contracts/for-eth-devs/migration/){target=\\_blank} | Port existing apps and tooling to Polkadot Hub |\n| [Dual VM Stack](/smart-contracts/for-eth-devs/dual-vm-stack/){target=\\_blank} | Overview of EVM and native execution on the Hub |"} +{"page_id": "smart-contracts-get-started", "page_title": "Get Started with Smart Contracts", "index": 3, "depth": 2, "title": "Cookbook: Hands‑on Tutorials", "anchor": "cookbook-handson-tutorials", "start_char": 5794, "end_char": 7098, "estimated_token_count": 409, "token_estimator": "heuristic-v1", "text": "## Cookbook: Hands‑on Tutorials\n\nFollow step‑by‑step guides that walk through common tasks and complete dApp examples.\n\n| Tutorial | Tools | Description |\n| :------------------------------------------------------------------------------------------------: | :-----------------: | :---------------------------------------: |\n| [Deploy a Basic Contract](/smart-contracts/cookbook/smart-contracts/deploy-basic/){target=\\_blank} | Remix | Minimal deployment walkthrough |\n| [Deploy an ERC‑20](/smart-contracts/cookbook/smart-contracts/deploy-erc20/){target=\\_blank} | Remix, OpenZeppelin | Create, deploy, and mint a fungible token |\n| [Deploy an NFT (ERC‑721)](/smart-contracts/cookbook/smart-contracts/deploy-nft/){target=\\_blank} | Remix, OpenZeppelin | Build and deploy an NFT collection |\n| [Uniswap V2](/smart-contracts/cookbook/eth-dapps/uniswap-v2/){target=\\_blank} | Hardhat | Full dApp project: compile, test, deploy |\n| [Zero‑to‑Hero dApp](/smart-contracts/cookbook/dapps/zero-to-hero/){target=\\_blank} | Multiple | End‑to‑end dApp patterns and practices |"} +{"page_id": "smart-contracts-get-started", "page_title": "Get Started with Smart Contracts", "index": 4, "depth": 2, "title": "Libraries", "anchor": "libraries", "start_char": 7098, "end_char": 8111, "estimated_token_count": 313, "token_estimator": "heuristic-v1", "text": "## Libraries\n\nChoose the client libraries that fit your stack for connecting wallets and calling contracts.\n\n| Library | Description |\n| :----------------------------------------------------------------: | :-----------------------------------------------------: |\n| [Ethers.js](/smart-contracts/libraries/ethers-js/){target=\\_blank} | Connect, sign, and interact with contracts using Ethers |\n| [viem](/smart-contracts/libraries/viem/){target=\\_blank} | Type‑safe EVM interactions and utilities |\n| [Wagmi](/smart-contracts/libraries/wagmi/){target=\\_blank} | React hooks for wallet connections and contract calls |\n| [Web3.js](/smart-contracts/libraries/web3-js/){target=\\_blank} | Web3 provider and contract APIs |\n| [Web3.py](/smart-contracts/libraries/web3-py/){target=\\_blank} | Python toolkit for on‑chain interactions and scripts |"} +{"page_id": "smart-contracts-get-started", "page_title": "Get Started with Smart Contracts", "index": 5, "depth": 2, "title": "Integrations", "anchor": "integrations", "start_char": 8111, "end_char": 8799, "estimated_token_count": 220, "token_estimator": "heuristic-v1", "text": "## Integrations\n\nIntegrate essential services like wallets, indexers, and oracles to round out your dApp.\n\n| Integration | Description |\n| :-----------------------------------------------------------------: | :---------------------------------------: |\n| [Wallets](/smart-contracts/integrations/wallets/){target=\\_blank} | Supported wallets and configuration notes |\n| [Indexers](/smart-contracts/integrations/indexers/){target=\\_blank} | Index and query blockchain data |\n| [Oracles](/smart-contracts/integrations/oracles/){target=\\_blank} | Bring external data on‑chain |"} +{"page_id": "smart-contracts-get-started", "page_title": "Get Started with Smart Contracts", "index": 6, "depth": 2, "title": "Precompiles", "anchor": "precompiles", "start_char": 8799, "end_char": 10060, "estimated_token_count": 358, "token_estimator": "heuristic-v1", "text": "## Precompiles\n\nDiscover precompiled system contracts available on the Hub and how to use them.\n\n| Topic | Description |\n| :----------------------------------------------------------------------: | :-------------------------------------------------: |\n| [Overview of Precompiles](/smart-contracts/precompiles/){target=\\_blank} | What precompiles are available on the Hub |\n| [ETH Native](/smart-contracts/precompiles/eth-native/){target=\\_blank} | EVM precompiles and interfaces |\n| [Staking](/smart-contracts/precompiles/staking/){target=\\_blank} | Interact with staking functionality via precompiles |\n| [XCM](/smart-contracts/precompiles/xcm/){target=\\_blank} | Cross‑chain messaging helpers for contracts |\n\nFrom here, follow the quick starts to get connected, iterate locally with your preferred tools, and use the guides, libraries, integrations, and precompiles as you grow into production‑ready dApps. If you get stuck, [open an issue](https://github.com/polkadot-developers/polkadot-docs/issues/new?template=docs-issue.yml){target=\\_blank} or reach out in the community channels."} {"page_id": "smart-contracts-integrations-wallets", "page_title": "Wallets for Polkadot Hub", "index": 0, "depth": 2, "title": "Introduction", "anchor": "introduction", "start_char": 198, "end_char": 665, "estimated_token_count": 75, "token_estimator": "heuristic-v1", "text": "## Introduction\n\nConnecting a compatible wallet is the first essential step for interacting with the Polkadot Hub ecosystem. This guide explores wallet options that support both Substrate and Ethereum compatible layers, enabling transactions and smart contract interactions. Whether you're a developer testing on Polkadot Hub or a user accessing the MainNet, understanding wallet configuration is crucial for accessing the full range of Polkadot Hub's capabilities."} {"page_id": "smart-contracts-integrations-wallets", "page_title": "Wallets for Polkadot Hub", "index": 1, "depth": 2, "title": "Connect Your Wallet", "anchor": "connect-your-wallet", "start_char": 665, "end_char": 689, "estimated_token_count": 5, "token_estimator": "heuristic-v1", "text": "## Connect Your Wallet"} {"page_id": "smart-contracts-integrations-wallets", "page_title": "Wallets for Polkadot Hub", "index": 2, "depth": 3, "title": "MetaMask", "anchor": "metamask", "start_char": 689, "end_char": 2383, "estimated_token_count": 403, "token_estimator": "heuristic-v1", "text": "### MetaMask\n\n[MetaMask](https://metamask.io/){target=\\_blank} is a popular wallet for interacting with Ethereum-compatible chains. It allows users to connect to test networks that support Ethereum-based smart contracts. However, it's important to emphasize that MetaMask primarily facilitates interactions with smart contracts, giving users access to various chain functionalities. \n\nTo get started with MetaMask, you need to install the [MetaMask extension](https://metamask.io/download/){target=\\_blank} and add it to the browser. Once you install MetaMask, you can set up a new wallet and securely store your seed phrase. This phrase is crucial for recovery in case you lose access.\n\nFor example, to connect to the Polkadot Hub TestNet via MetaMask, you need to follow these steps:\n\n1. Open the MetaMask extension and click on the network icon to switch to the Polkadot Hub TestNet.\n\n ![](/images/smart-contracts/integrations/wallets/wallets-1.webp){: .browser-extension}\n\n2. Click on the **Add a custom network** button.\n\n ![](/images/smart-contracts/integrations/wallets/wallets-2.webp){: .browser-extension}\n\n3. Complete the necessary fields, then click the **Save** button (refer to the [Networks](/smart-contracts/connect/#networks-details){target=\\_blank} section for copy and paste parameters).\n\n ![](/images/smart-contracts/integrations/wallets/wallets-3.webp){: .browser-extension}\n\n4. Click on **Polkadot Hub TestNet** to switch the network.\n\n ![](/images/smart-contracts/integrations/wallets/wallets-4.webp){: .browser-extension}\n\nThe steps in the preceding section can be used to connect to any chain by modifying the network specification and endpoint parameters."} diff --git a/llms.txt b/llms.txt index 1b820afd6..201d711ab 100644 --- a/llms.txt +++ b/llms.txt @@ -61,7 +61,7 @@ Docs: Smart Contracts - [Deploy an NFT to Polkadot Hub with Hardhat](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-nft-hardhat.md): Learn how to deploy an ERC-721 NFT contract to Polkadot Hub with Hardhat, a comprehenive development environment with built-in deployment capabilities. - [Deploy an NFT to Polkadot Hub with Remix](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-nft-remix.md): Learn how to deploy an ERC-721 NFT contract to Polkadot Hub using Remix, a browser-based IDE for quick prototyping and learning. - [Smart Contracts Cookbook Index](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook.md): Explore our full collection of tutorials and guides to learn step-by-step how to build, deploy, and work with smart contracts on Polkadot. -- [Use Hardhat with Polkadot Hub](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-get-started.md): Learn how to create, compile, test, and deploy smart contracts on Polkadot Hub using Hardhat, a powerful development environment for blockchain developers. +- [Use Hardhat with Polkadot Hub](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-get-started.md): Overview of Hardhat, a powerful development environment for creating, compiling, testing, and deploying smart contracts on Polkadot Hub. - [Local Development Node](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-local-dev-node.md): Follow this step-by-step guide to install a Revive Dev node and ETH-RPC adapter for smart contract development in a local environment. - [Use the Polkadot Remix IDE](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-remix-get-started.md): Explore the smart contract development and deployment process on Asset Hub using Remix IDE, a visual IDE for blockchain developers. - [Block Explorers](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-explorers.md): Access PolkaVM explorers like Subscan, BlockScout, and Routescan to track transactions, analyze contracts, and view on-chain data from smart contracts. @@ -160,6 +160,8 @@ Docs: Infrastructure - [Rewards Payout](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/nodes-and-validators-run-a-validator-staking-mechanics-rewards.md): Learn how validator rewards work on the network, including era points, payout distribution, running multiple validators, and nominator payments. Docs: Tooling +- [Quickstart Parachain Development with Pop CLI](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-parachains-quickstart-pop-cli.md): Quickly bootstrap parachain projects, scaffold templates, deploy local networks, and streamline development workflows using Pop CLI. +- [Write Tests](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/develop-toolkit-parachains-spawn-chains-zombienet-write-tests.md): Write and execute tests for blockchain networks with Zombienet's DSL. Learn to evaluate metrics, logs, events, and more for robust validation. - [Install Polkadot SDK](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-install-polkadot-sdk.md): Install all required Polkadot SDK dependencies, set up the SDK itself, and verify that it runs correctly on your machine. - [Indexers](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-integrations-indexers.md): Discover blockchain indexers. Enhance data access, enable fast and complex queries, and optimize blockchain data for seamless app performance. - [Oracles](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/parachains-integrations-oracles.md): Learn about blockchain oracles, the essential bridges connecting blockchains with real-world data for decentralized applications in the Polkadot ecosystem. @@ -179,7 +181,7 @@ Docs: Tooling - [XCM Tools](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-xcm-tools.md): Explore essential XCM tools across Polkadot, crafted to enhance cross-chain functionality and integration within the ecosystem. - [Zero to Hero Smart Contract DApp](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-dapps-zero-to-hero.md): Learn how to build a decentralized application on Polkadot Hub using Viem and Next.js by creating a simple dApp that interacts with a smart contract. - [Deploying Uniswap V2 on Polkadot](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-eth-dapps-uniswap-v2.md): Learn how to deploy and test Uniswap V2 on Polkadot Hub using Hardhat, bringing AMM-based token swaps to the Polkadot ecosystem. -- [Use Hardhat with Polkadot Hub](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-get-started.md): Learn how to create, compile, test, and deploy smart contracts on Polkadot Hub using Hardhat, a powerful development environment for blockchain developers. +- [Use Hardhat with Polkadot Hub](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-get-started.md): Overview of Hardhat, a powerful development environment for creating, compiling, testing, and deploying smart contracts on Polkadot Hub. - [Use the Polkadot Remix IDE](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-remix-get-started.md): Explore the smart contract development and deployment process on Asset Hub using Remix IDE, a visual IDE for blockchain developers. - [Block Explorers](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-explorers.md): Access PolkaVM explorers like Subscan, BlockScout, and Routescan to track transactions, analyze contracts, and view on-chain data from smart contracts. - [Wallets for Polkadot Hub](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-integrations-wallets.md): Comprehensive guide to connecting and managing wallets for Polkadot Hub, covering step-by-step instructions for interacting with the ecosystem. @@ -234,6 +236,14 @@ Docs: Uncategorized - [reference-tools-chopsticks](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-chopsticks.md): No description available. - [ParaSpell XCM SDK](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-paraspell.md): A powerful open-source library that simplifies XCM integration, enabling developers to easily build interoperable dApps on Polkadot. - [reference-tools-zombienet](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference-tools-zombienet.md): No description available. +- [reference](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/reference.md): No description available. +- [smart-contracts-cookbook-smart-contracts-deploy-basic](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-cookbook-smart-contracts-deploy-basic.md): No description available. +- [smart-contracts-dev-environments-foundry-compile-and-test](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-foundry-compile-and-test.md): No description available. +- [smart-contracts-dev-environments-foundry-deploy-a-contract](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-foundry-deploy-a-contract.md): No description available. +- [Use Foundry with Polkadot Hub](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-foundry-get-started.md): Learn to install, configure, and use foundry-polkadot for smart contract development on Polkadot with PolkaVM bytecode compilation. +- [smart-contracts-dev-environments-foundry-install-and-config](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-foundry-install-and-config.md): No description available. +- [smart-contracts-dev-environments-foundry-troubleshooting](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-foundry-troubleshooting.md): No description available. +- [smart-contracts-dev-environments-foundry-verify-a-contract](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-foundry-verify-a-contract.md): No description available. - [smart-contracts-dev-environments-hardhat-compile-and-test](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-compile-and-test.md): No description available. - [smart-contracts-dev-environments-hardhat-deploy-a-contract](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-deploy-a-contract.md): No description available. - [smart-contracts-dev-environments-hardhat-install-and-config](https://raw.githubusercontent.com/polkadot-developers/polkadot-docs/master/.ai/pages/smart-contracts-dev-environments-hardhat-install-and-config.md): No description available. diff --git a/smart-contracts/dev-environments/hardhat/get-started.md b/smart-contracts/dev-environments/hardhat/get-started.md index 4be906e3d..0710360e9 100644 --- a/smart-contracts/dev-environments/hardhat/get-started.md +++ b/smart-contracts/dev-environments/hardhat/get-started.md @@ -1,338 +1,125 @@ --- title: Use Hardhat with Polkadot Hub -description: Learn how to create, compile, test, and deploy smart contracts on Polkadot Hub using Hardhat, a powerful development environment for blockchain developers. +description: Overview of Hardhat, a powerful development environment for creating, compiling, testing, and deploying smart contracts on Polkadot Hub. categories: Smart Contracts, Tooling --- # Hardhat ---8<-- 'text/smart-contracts/polkaVM-warning.md' - -
-- :octicons-code-16:{ .lg .middle } __Test and Deploy with Hardhat__ - - --- - - Master Solidity smart contract development with Hardhat. Learn testing, deployment, and network interaction in one comprehensive tutorial. - -
- [:octicons-arrow-right-24: Get Started](/tutorials/smart-contracts/launch-your-first-project/test-and-deploy-with-hardhat){target=\_blank} - -
- ---8<-- 'text/smart-contracts/code-size.md' - ## Overview -Hardhat is a robust development environment for Ethereum-compatible chains that makes smart contract development more efficient. This guide walks you through the essentials of using Hardhat to create, compile, test, and deploy smart contracts on Polkadot Hub. - -## Prerequisites - -Before getting started, ensure you have: - -- [Node.js](https://nodejs.org/){target=\_blank} (v16.0.0 or later) and npm installed. - - Note: Use Node.js 22.5+ and npm version 10.9.0+ to avoid issues with the Polkadot plugin. -- Basic understanding of Solidity programming. -- Some PAS test tokens to cover transaction fees (easily obtainable from the [Polkadot faucet](https://faucet.polkadot.io/?parachain=1111){target=\_blank}). To learn how to get test tokens, check out the [Test Tokens](/smart-contracts/connect/#test-tokens){target=\_blank} section. - -## Set Up Hardhat - -1. Create a new directory for your project and navigate into it: - - ```bash - mkdir hardhat-example - cd hardhat-example - ``` - -2. Initialize a new npm project: - - ```bash - npm init -y - ``` - -3. To interact with Polkadot, Hardhat requires the following plugin to compile contracts to PolkaVM bytecode and to spawn a local node compatible with PolkaVM: - - ```bash - npm install --save-dev @parity/hardhat-polkadot@0.1.9 - ``` - -4. Create a Hardhat project: - - ```bash - npx hardhat-polkadot init - ``` - - Select **Create a JavaScript project** when prompted and follow the instructions. After that, your project will be created with three main folders: - - - **`contracts`**: Where your Solidity smart contracts live. - - **`test`**: Contains your test files that validate contract functionality. - - **`ignition`**: Deployment modules for safely deploying your contracts to various networks. - -5. Add the following folder to the `.gitignore` file if it is not already there: - - ```bash - echo '/ignition/deployments/' >> .gitignore - ``` - -6. Finish the setup by installing all the dependencies: - - ```bash - npm install - ``` - - !!! note - This last step is needed to set up the `hardhat-polkadot` plugin. It will install the `@parity/hardhat-polkadot` package and all its dependencies. In the future, the plugin will handle this automatically. - -## Compile Your Contract - -The plugin will compile your Solidity contracts for Solidity versions `0.8.0` and higher to be PolkaVM compatible. When compiling your contract, there are two ways to configure your compilation process: - -- **npm compiler**: Uses library [@parity/resolc](https://www.npmjs.com/package/@parity/resolc){target=\_blank} for simplicity and ease of use. -- **Binary compiler**: Uses your local `resolc` binary directly for more control and configuration options. - -To compile your project, follow these instructions: - -1. Modify your Hardhat configuration file to specify which compilation process you will be using and activate the `polkavm` flag in the Hardhat network: - - === "npm Configuration" - - ```javascript title="hardhat.config.js" hl_lines="9-11 14" - --8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:1:14' - --8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:33:35' - ``` - - === "Binary Configuration" - - ```javascript title="hardhat.config.js" hl_lines="9-14 17" - --8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/binary-hardhat.config.js:1:17' - --8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/binary-hardhat.config.js:36:38' - ``` - - For the binary configuration, replace `INSERT_PATH_TO_RESOLC_COMPILER` with the proper path to the binary. To obtain the binary, check the [releases](https://github.com/paritytech/revive/releases){target=\_blank} section of the `resolc` compiler, and download the latest version. - - The default settings used can be found in the [`constants.ts`](https://github.com/paritytech/hardhat-polkadot/blob/v0.1.5/packages/hardhat-polkadot-resolc/src/constants.ts#L8-L23){target=\_blank} file of the `hardhat-polkadot` source code. You can change them according to your project needs. Generally, the recommended settings for optimized outputs are the following: - - ```javascript title="hardhat.config.js" hl_lines="4-10" - resolc: { - ... - settings: { - optimizer: { - enabled: true, - parameters: 'z', - fallbackOz: true, - runs: 200, - }, - standardJson: true, - }, - ... - } - ``` - - You can check the [`ResolcConfig`](https://github.com/paritytech/hardhat-polkadot/blob/v0.1.5/packages/hardhat-polkadot-resolc/src/types.ts#L26){target=\_blank} for more information about compilation settings. - -2. Compile the contract with Hardhat: - - ```bash - npx hardhat compile - ``` - -3. After successful compilation, you'll see the artifacts generated in the `artifacts-pvm` directory: - - ```bash - ls artifacts-pvm/contracts/*.sol/ - ``` +Building on Polkadot Hub often starts with a Solidity codebase, and Hardhat keeps that workflow familiar while giving teams repeatable scripts, rich debugging, and CLI automation suited to the network's Ethereum-compatible execution layer. - You should see JSON files containing the contract ABI and bytecode of the contracts you compiled. +Hardhat is a comprehensive development environment for building, testing, and deploying smart contracts. It provides developers with a complete toolkit, including compilation, local testing nodes, debugging tools, and deployment automation. -## Set Up a Testing Environment +## Hardhat Workflow -Hardhat allows you to spin up a local testing environment to test and validate your smart contract functionalities before deploying to live networks. The `hardhat-polkadot` plugin provides the possibility to spin up a local node with an ETH-RPC adapter for running local tests. +From the first sketch of a contract to ongoing operations, Hardhat encourages a repeatable cycle: define the functionality you need, scaffold the workspace, write and refine Solidity code, compile it into deployable artifacts, validate behavior with automated tests, deploy confidently to the target network, and keep iterating with scripts that monitor and interact with what you shipped. -For complete isolation and control over the testing environment, you can configure Hardhat to work with a fresh local Substrate node. This approach is ideal when you want to test in a clean environment without any existing state or when you need specific node configurations. +```mermaid +flowchart LR + plan[Plan Contract] + scaffold[Scaffold Project] + develop[Write & Update Contracts] + compile[Compile Sources] + test[Run Automated Tests] + deploy[Deploy to Target Network] + operate[Interact & Monitor] -Configure a local node setup by adding the node binary path along with the ETH-RPC adapter path: - -```javascript title="hardhat.config.js" hl_lines="12-20" ---8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:1:4' - ---8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:6:7' - ... - --8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:12:24' ---8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:34:35' + plan --> scaffold --> develop --> compile --> test --> deploy --> operate ``` -Replace `INSERT_PATH_TO_SUBSTRATE_NODE` and `INSERT_PATH_TO_ETH_RPC_ADAPTER` with the actual paths to your compiled binaries. The `dev: true` flag configures both the node and adapter for development mode. To obtain these binaries, check the [Installation](/smart-contracts/dev-environments/local-dev-node/#install-the-substrate-node-and-eth-rpc-adapter){target=\_blank} section on the Local Development Node page. - -!!! warning - If you're using the default `hardhat.config.js` created by the `hardhat-polkadot` plugin, it includes a `forking` section pointing to the Polkadot Hub TestNet. When you run `npx hardhat node`, Hardhat will start a fork of that network. To use your local node instead, comment out the `forking` section; otherwise, `npx hardhat node` will continue to use the forked network even if a local node is defined in the configuration. +## Project Anatomy -Once configured, start your chosen testing environment with: +A freshly initialized Hardhat project keeps code, configuration, and automation neatly separated: -```bash -npx hardhat node +``` +. +├── contracts/ +│ └── MyContract.sol +├── ignition/ +│ └── modules/ +├── scripts/ +│ └── interact.js +├── test/ +│ └── MyContract.test.js +└── hardhat.config.js ``` -This command will launch either the forked network or local node (depending on your configuration) along with the ETH-RPC adapter, providing you with a complete testing environment ready for contract deployment and interaction. By default, the Substrate node will be running on `localhost:8000` and the ETH-RPC adapter on `localhost:8545`. - -The output will be something like this: - ---8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat-node-output.html' - -## Test Your Contract - -When testing your contract, be aware that [`@nomicfoundation/hardhat-toolbox/network-helpers`](https://hardhat.org/hardhat-network-helpers/docs/overview){target=\_blank} is not fully compatible with Polkadot Hub's available RPCs. Specifically, Hardhat-only helpers like `time` and `loadFixture` may not work due to missing RPC calls in the node. For more details, refer to the [Compatibility](https://github.com/paritytech/hardhat-polkadot/tree/main/packages/hardhat-polkadot-node#compatibility){target=\_blank} section in the `hardhat-revive` docs. You should avoid using helpers like `time` and `loadFixture` when writing tests. - -To run your test: - -1. Update the `hardhat.config.js` file accordingly to the [Set Up a Testing Environment](#set-up-a-testing-environment) section. - -2. Execute the following command to run your tests: - - ```bash - npx hardhat test - ``` - -## Deploy to a Local Node - -Before deploying to a live network, you can deploy your contract to a local node using [Ignition](https://hardhat.org/ignition/docs/getting-started#overview){target=\_blank} modules: - -1. Update the Hardhat configuration file to add the local network as a target for local deployment: - - ```javascript title="hardhat.config.js" hl_lines="13-16" - --8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:1:4' - - --8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:6:7' - ... - --8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:12:13' - ... - --8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:24:28' - --8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:33:35' - ``` - -2. Start a local node: - - ```bash - npx hardhat node - ``` - - This command will spawn a local Substrate node along with the ETH-RPC adapter. - -3. In a new terminal window, deploy the contract using Ignition: - - ```bash - npx hardhat ignition deploy ./ignition/modules/MyToken.js --network localNode - ``` - -## Deploying to a Live Network - -After testing your contract locally, you can deploy it to a live network. This guide will use the Polkadot Hub TestNet as the target network. Here's how to configure and deploy: - -1. Fund your deployment account with enough tokens to cover gas fees. In this case, the needed tokens are PAS (on Polkadot Hub TestNet). You can use the [Polkadot faucet](https://faucet.polkadot.io/?parachain=1111){target=\_blank} to obtain testing tokens. - -2. Export your private key and save it in your Hardhat environment: - - ```bash - npx hardhat vars set PRIVATE_KEY "INSERT_PRIVATE_KEY" - ``` - - Replace `INSERT_PRIVATE_KEY` with your actual private key. For further details on private key exportation, refer to the article [How to export an account's private key](https://support.metamask.io/configure/accounts/how-to-export-an-accounts-private-key/){target=\_blank}. - - !!! warning - Never reveal your private key, otherwise anyone with access to it can control your wallet and steal your funds. Store it securely and never share it publicly or commit it to version control systems. - -3. Check that your private key has been set up successfully by running: - - ```bash - npx hardhat vars get PRIVATE_KEY - ``` - -4. Update your Hardhat configuration file with network settings for the Polkadot network you want to target: +- `contracts/`: Solidity sources that define your smart contracts. +- `test/`: Automated tests written in JavaScript or TypeScript. +- `ignition/`: Deployment modules that orchestrate repeatable rollouts. +- `scripts/`: Utility scripts for deploying, validating, or interacting with contracts. +- `hardhat.config.js`: Central configuration for networks, compilers, and tooling. - ```javascript title="hardhat.config.js" hl_lines="18-22" - --8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:1:4' +## Core Functionalities - const { vars } = require('hardhat/config'); +- **Project structure**: Organizes contracts, tests, scripts, and configuration into a consistent workspace. Provides a clear folder layout and a single configuration file (`hardhat.config.js`) to manage compilers, networks, and tooling. +- **Compilation**: Compiles Solidity sources, supports multiple compiler versions, and generates ABI and bytecode artifacts. +- **Local testing**: Runs tests written in JavaScript or TypeScript against an integrated local network, enabling fast feedback when validating contract behavior. +- **Task automation**: Automates deployments, maintenance operations, and recurring workflows through custom scripts and Hardhat tasks. +- **Contract interaction**: Enables reading contract state, sending transactions, and calling contract functions. - --8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:6:7' - ... - --8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:12:13' - ... - --8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:24:24' - --8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:25:25' - ... - --8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:28:33' - --8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/hardhat.config.js:33:35' - ``` +## Where to Go Next -6. Deploy your contract using Ignition: +Ready to explore the specifics? Dive into these guides to continue your Hardhat journey: - ```bash - npx hardhat ignition deploy ./ignition/modules/MyToken.js --network polkadotHubTestnet - ``` +
-## Interacting with Your Contract +- Guide __Install and Configure Hardhat__ -Once deployed, you can create a script to interact with your contract. To do so, create a file called `scripts/interact.js` and add some logic to interact with the contract. + --- -For example, for the default `MyToken.sol` contract, you can use the following file that connects to the contract at its address and retrieves the `unlockTime`, which represents when funds can be withdrawn. The script converts this timestamp into a readable date and logs it. It then checks the contract's balance and displays it. Finally, it attempts to call the withdrawal function on the contract, but it catches and logs the error message if the withdrawal is not yet allowed (e.g., before `unlockTime`). + Initialize your workspace and adjust project settings for this toolchain. -```javascript title="interact.js" ---8<-- 'code/smart-contracts/dev-environments/hardhat/get-started/interact.js' -``` + [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/install-and-config/){target=\_blank} -Run your interaction script: +- Guide __Compile Smart Contracts__ -```bash -npx hardhat run scripts/interact.js --network polkadotHubTestnet -``` + --- -## Upgrading the Plugin + Configure compiler options and generate deployable artifacts. -If you already have a Hardhat Polkadot project and want to upgrade to a newer version of the plugin, to avoid errors (for example, `Cannot find module 'run-container'`), you can clean your dependencies by running the following commands: + [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\_blank} -```bash -rm -rf node_modules package-lock.json -``` +- Guide __Test Your Smart Contracts__ -After that, you can upgrade the plugin to the latest version by running the following commands: + --- -```bash -npm install --save-dev @parity/hardhat-polkadot@latest -npm install -``` + Build automated tests and run them against a local node. -Consider using [Node.js](https://nodejs.org/){target=\_blank} 22.18+ and [npm](https://www.npmjs.com/){target=\_blank} version 10.9.0+ to avoid issues with the plugin. + [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/compile-and-test/){target=\_blank} -## Where to Go Next +- Guide __Deploy Smart Contracts__ -Hardhat provides a powerful environment for developing, testing, and deploying smart contracts on Polkadot Hub. Its plugin architecture allows seamless integration with PolkaVM through the `hardhat-resolc` and `hardhat-revive-node` plugins. + --- -Explore more about smart contracts through these resources: + Roll out contracts to local, test, or production networks with repeatable scripts. -
+ [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/deploy-a-contract/){target=\_blank} -- Guide __Get Started with Smart Contracts__ +- Guide __Interact with Smart Contracts__ --- - Learn how to get started with smart contracts + Script on-chain interactions and automate maintenance tasks. - [:octicons-arrow-right-24: Get Started](/smart-contracts/get-started/) + [:octicons-arrow-right-24: Get Started](/smart-contracts/dev-environments/hardhat/interact-with-a-contract/){target=\_blank} - External __Hardhat Documentation__ --- - Learn more about Hardhat's advanced features and best practices. + Explore Hardhat's official documentation for advanced features and best practices. - [:octicons-arrow-right-24: Get Started](https://hardhat.org/docs){target=\_blank} + [:octicons-arrow-right-24: Learn More](https://hardhat.org/docs){target=\_blank} - External __OpenZeppelin Contracts__ --- - Test your skills by deploying contracts with prebuilt templates. + Use prebuilt, audited contract templates to bootstrap your projects. - [:octicons-arrow-right-24: Get Started](https://www.openzeppelin.com/solidity-contracts){target=\_blank} + [:octicons-arrow-right-24: Explore](https://www.openzeppelin.com/solidity-contracts){target=\_blank} -
+
\ No newline at end of file