From 0ea4d713e5be05f9d3346162d7753f3650b6293b Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Sun, 15 Sep 2024 17:00:28 -0400 Subject: [PATCH 1/3] some fixes --- polkadot.json | 1408 ++++++++++++++++++++++++------------------------- 1 file changed, 704 insertions(+), 704 deletions(-) diff --git a/polkadot.json b/polkadot.json index 68e0864..f54c8ae 100644 --- a/polkadot.json +++ b/polkadot.json @@ -1,706 +1,706 @@ [ - { - "title": "Intro to Polkadot", - "index": 1, - "challengeSteps": [ - { - "id": 1, - "imageUrl": "https://i.imgur.com/vF7XfK8.png", - "title": "Meet the next-generation blockchain", - "details": "Welcome to the world of Polkadot, a blockchain platform that enables communication between different blockchains - created by Gavin Wood, one of the co-founders of Ethereum. It’s able to connect with different blockchains to form an interoperable, decentralized web." - }, - { - "id": 2, - "imageUrl": "https://i.imgur.com/9BQhqPY.png", - "title": "Building blocks of Polkadot", - "details": "Think of Polkadot like building with Legos - you can pick and choose the pieces you want to create something unique! Imagine building a hyper-optimized blockchain, called a parachain, with specific characteristics to fit your exact need! All this is possible with Polkadot!" - }, - { - "id": 3, - "imageUrl": "https://i.imgur.com/XbI361a.png", - "title": "Unleash Versatility", - "details": "Plus, because of how it's designed, Polkadot can do things other blockchains can't, like handle lots of transactions at once and connect with external blockchain systems too." - }, - { - "id": 4, - "imageUrl": "https://i.imgur.com/kdwrLg5.png", - "title": "Efficiency & customizability", - "details": "Polkadot makes blockchain transactions faster and smoother by enabling seamless collaboration between different blockchains. This boosts transaction speed and reliability, allowing for parallel processing and data transfer. With Polkadot, complex transactions are executed with ease, making it more efficient and scalable. Get ready for a seamless and exciting blockchain experience!" - }, - { - "id": 5, - "choices": [ - "A decentralized exchange platform", - "A blockchain platform created by Gavin Wood", - "A social media platform for blockchain enthusiasts" - ], - "correctChoice": "A blockchain platform created by Gavin Wood", - "title": "What is Polkadot?" - }, - { - "id": 6, - "imageUrl": "https://i.imgur.com/NeDZPZr.png", - "title": "Breaking barriers", - "details": "Polkadot is super adaptable, so developers can make their own blockchains to fit their needs. That means you can use Polkadot for all kinds of different things - no more settling for pre-made blockchains! Plus, Polkadot lets you easily move assets between different blockchains, so the possibilities are endless!" - }, - { - "id": 7, - "imageUrl": "https://i.imgur.com/kQKhtLG.png", - "title": "The future of blockchain", - "details": "Consider legacy blockchains to be small islands separated from one another. Each island has its own set of resources and restrictions, making communication difficult. That's similar to traditional blockchains! They're all separate from one another, with their own set of laws and constraints, making it difficult to share information or collaborate. Polkadot, on the other hand, functions as a bridge between these 'islands,' uniting them so they may work more efficiently and quickly." - }, - { - "id": 8, - "choices": [ - "By allowing different parachains to collaborate and transfer data without much delay", - "By using advanced encryption techniques", - "By limiting the number of transactions that can be processed at once" - ], - "correctChoice": "By allowing different parachains to collaborate and transfer data without much delay", - "title": "How does Polkadot improve blockchain transactions?" - }, - { - "id": 9, - "choices": [ - "Improved speed and efficiency of blockchain transactions", - "Customizable blockchains that allow developers to design specific functionalities for their chain", - "Ability to connect different blockchains and transfer assets easily", - "All of the above" - ], - "correctChoice": "All of the above", - "title": "Which of these are the benefits of Polkadot?" - }, - { - "id": 10, - "choices": [ - "It is less secure than traditional blockchains", - "It cannot connect with non-blockchain systems", - "It allows for collaboration among different blockchains", - "It has a limited number of customizable features" - ], - "correctChoice": "It allows for collaboration among different blockchains", - "title": "How does Polkadot differ from traditional blockchains?" - }, - { - "id": 11, - "imageUrl": "https://i.imgur.com/YQNFrNk.png", - "title": "Kusama - Polkadot's wild cousin", - "details": "When you're developing a website, you usually have three stages: development, staging, and production. But in the blockchain world, it's a bit different. There's usually just development and production - that is, until you meet Kusama! Kusama is like Polkadot's adventurous cousin. It lets developers try out their parachains under real world conditions in a “canary network” before they're released on the main Polkadot network." - }, - { - "id": 12, - "imageUrl": "https://i.imgur.com/SHmsZPe.png", - "title": "Canary network - explained!", - "details": "A canary network is a live network that allows developers to test their blockchain under real-world conditions before launching it on the mainnet. It’s different from a testnet because it carries real value and transactions, providing a more authentic environment for testing. Think of Kusama like a fun and exciting adventure, where developers can take risks and test their limits. This helps create a stronger and more secure Polkadot ecosystem in the end!" - }, - { - "id": 13, - "imageUrl": "https://i.imgur.com/mli9QVH.png", - "title": "Double the innovation: parallel development on Polkadot and Kusama", - "details": "Polkadot and Kusama operate in parallel, with new features and upgrades being tested on Kusama before actually being implemented on Polkadot. That way, developers like you ensure that new features are thoroughly tested and refined before they're released on the main network, providing a better experience for users." - }, - { - "id": 14, - "imageUrl": "https://i.imgur.com/ZtKYg13.png", - "title": "Their future together", - "details": "Together, Polkadot and Kusama form a dynamic duo that encourages fearless exploration and experimentation. Picture your parachains as connections between the island blockchains, constantly growing and evolving, ready to connect with other blockchains and adapt to the ever-changing tides. This allows your parachains to continuously grow and change over time, evolving into something better. The only limit is how fast you can evolve!" - }, - { - "id": 15, - "choices": [ - "Kusama is a Cosmos app-chain", - "Kusama is a canary network for Polkadot", - "Polkadot is a fork of Kusama/Dotsama" - ], - "correctChoice": "Kusama is a canary network for Polkadot", - "title": "What is the relationship between Polkadot and Kusama/Dotsama?" - }, - { - "id": 16, - "imageUrl": "https://i.imgur.com/pnFudYZ.png", - "title": "Polkadot pioneer!", - "details": "Look at you! You’ve taken your first steps with Polkadot and are now able to understand why it’s used, who uses it, and how to use it. It’s really much simpler than you think! We’ve established that Polkadot is super versatile, and so are its tools! Let’s now have a look at how to work with Polkadot!" - }, - { - "id": 17, - "tweetReason": "Share the love on Twitter - we'll be rewarding the best ones with swag and prizes! ❤️", - "tweetContent": "I'm building on @Polkadot with @easya_app on my #60DaysOfPolkadot!\n\nCurrently learning about... \n\n🧑‍💻 How parachains work!\n⛓ How to build blockchains with @substrate_io \n🖼 How to speed up development 10x", - "tweetContentUrl": "" - } - ] - }, - { - "title": "How to work with Polkadot", - "index": 2, - "challengeSteps": [ - { - "id": 1, - "imageUrl": "https://i.imgur.com/Ys0BGmG.jpg", - "title": "Gear up with Polkadot", - "details": "To start building your own parachain on the Polkadot network, you need a Polkadot account. This account lets you manage your DOT tokens, participate in staking and governance, and access the tools you need to build your parachain." - }, - { - "id": 2, - "imageUrl": "https://i.imgur.com/zzQnxmD.png", - "title": "Safeguard your assets", - "details": "As you gather resources on the island, wallets become essential tools for managing and protecting your DOT tokens and other assets within the Polkadot ecosystem. Choose from various types of wallets, such as hardware, software and browser-based wallets, each with its own benefits and security features. Safeguard your digital treasures in popular wallets like Enkrypt, PolkaGate, SubWallet and Talisman." - }, - { - "id": 3, - "imageUrl": "https://i.imgur.com/LTd50aN.png", - "title": "Not forgetting about mobile", - "details": "When you’re developing for the mainstream, it's important to make sure your program can work with popular mobile wallets. That means integrating a wallet SDK or API so users can easily connect and interact with their Polkadot accounts. Good news: wallets like Polkawallet and Fearless Wallet have resources to help you do just that!" - }, - { - "id": 4, - "imageUrl": "https://avatars.githubusercontent.com/u/33775474?s=280&v=4", - "title": "Polkadot.js: your navigator", - "details": "Polkadot.js is the trusty compass that guides you through the Polkadot network. It serves as a bridge between you and the various features of Polkadot, making it a super useful tool for building your own parachain and connecting the different blockchain islands!" - }, - { - "id": 5, - "title": "First steps", - "details": "As we work towards building our parachain in the hope of connecting the different blockchain islands, let's check our current balance using the code below:", - "language": "javascript", - "code": "const { ApiPromise, WsProvider } = require('@polkadot/api');\n\nasync function main() {\nconst wsProvider = new WsProvider('wss://rpc.polkadot.io');\nconst api = await ApiPromise.create({ provider: wsProvider });\nconst address = 'FAKEADDRESS';\nconst balance = await api.query.system.account(address);\nconsole.log(`Balance of ${address}: ${balance}`);\n}" - }, - { - "id": 6, - "imageUrl": "https://polkadot.network/meta/og-image-staking.png", - "title": "The art of staking", - "details": "Staking involves locking up your DOT tokens to help secure the network and earn rewards. Validators and nominators contribute to the stability of the ecosystem by staking DOT and supporting validator candidates. Nominators earn rewards proportional to their staked amounts while backing validators." - }, - { - "id": 7, - "choices": [ - "Storing and managing your DOT tokens", - "Participating in staking and nominating", - "Finding yield farming strategies" - ], - "correctChoice": "Finding yield farming strategies", - "title": "Which of these is NOT a function of Polkadot.js?" - }, - { - "id": 8, - "choices": [ - "The users of Polkadot", - "The validators", - "The engineers building new parachains", - "All the above" - ], - "correctChoice": "All the above", - "title": "Who contributes to the stability of the ecosystem?" - }, - { - "id": 9, - "imageUrl": "https://i.imgur.com/YA3ysPy.png", - "title": "Power to the people", - "details": "Polkadot has a unique governance system that empowers its community to participate in decision-making. By holding DOT tokens, you too can vote on proposals and help shape the future of the Polkadot network. This is a super cool way of getting everybody involved!" - }, - { - "id": 10, - "imageUrl": "https://i.imgur.com/GT9uGcw.png", - "title": "Democracy in action", - "details": "Polkadot's referendum system lets DOT holders have a say in important network changes. You can participate in referenda to influence updates and modifications to the ecosystem, including the staking process. It's decentralized decision-making at its best!" - }, - { - "id": 11, - "title": "Finally... getting started with Polkadot.js. Take a look at the code below to see if you can figure out how it works!", - "language": "javascript", - "code": "const { ApiPromise, WsProvider } = require('@polkadot/api');\n\nasync function main() {\n// Connect to a local Polkadot node\nconst wsProvider = new WsProvider('wss://rpc.polkadot.io');\nconst api = await ApiPromise.create({ provider: wsProvider });\n\n// Retrieve the latest block number\nconst blockNumber = await api.rpc.chain.getHeader();\nconsole.log(`Latest block number: ${blockNumber.number}`);\n}" - }, - { - "id": 12, - "choices": [ - "To secure the network and earn rewards", - "To mine new DOT tokens", - "To create new parachains" - ], - "correctChoice": "To secure the network and earn rewards", - "title": "To recap, what is the primary purpose of staking in Polkadot?" - }, - { - "id": 13, - "imageUrl": "https://i.imgur.com/fQeoF5V.png", - "title": "Expanding horizons", - "details": "As you delve deeper into the Polkadot ecosystem, you'll encounter parachains and parathreads. These are two types of customizable blockchains that interconnect within the network, differing mainly in the way they connect to Polkadot - parachains secure their connection by leasing a slot via auction, while parathreads use a pay-as-you-go model. Both bring their own unique capabilities, adding some amazing features to our blockchain islands. For example, some parachains focus on adapting Ethereum, and others on helping creators make dynamic NFTs!" - }, - { - "id": 14, - "imageUrl": "https://i.imgur.com/dyCgbew.png", - "title": "Funding the future", - "details": "Crowdloans are a unique way for the community to support the launch of new parachains. By contributing DOT tokens to a crowdloan, you can help fund a project's development and potentially earn rewards in the form of the project's native tokens. Just like a Gofundme!" - }, - { - "id": 15, - "choices": [ - "True", - "False" - ], - "correctChoice": "True", - "title": "Polkadot helps different blockchains communicate with each other." - }, - { - "id": 16, - "choices": [ - "True", - "False" - ], - "correctChoice": "False", - "title": "Polkadot always needs hard forks to make updates to its network." - }, - { - "id": 17, - "imageUrl": "https://i.imgur.com/xZy1RBY.png", - "title": "Onwards and upwards!", - "details": "Keep exploring the exciting world of Polkadot! You're doing great already! Keep the momentum going and you'll be a Polkadot hero in no time at all!" - } - ] - }, - { - "title": "How to build a Parachain", - "index": 3, - "challengeSteps": [ - { - "id": 1, - "imageUrl": "https://i.imgur.com/lXWnGI1.png", - "title": "Embarking on the parachain journey", - "details": "Building a parachain is your key to connecting the diverse blockchain islands. A parachain allows you to create a unique, customizable blockchain that connects seamlessly to the network. Let’s have a look at the parachain architecture, the development toolbox and pallets (what on earth are those?)!" - }, - { - "id": 2, - "imageUrl": "https://i.imgur.com/qBrWoH9.png", - "title": "Parachain architecture", - "details": "Parachain hosts, collators, and parachain runtime are the three key components of a parachain. They’re super crucial for your chain, so let’s take a deep dive into how they all work together!" - }, - { - "id": 3, - "imageUrl": "https://i.imgur.com/JHCEIjk.png", - "title": "Collators: a parachain's backbone", - "details": "Collators are essential in maintaining your parachain as they gather transactions and help generate blocks. They’re putting in the hard work to make sure everything works the way it’s supposed to, contributing to your parachain's overall stability and performance." - }, - { - "id": 4, - "choices": [ - "To secure the network and earn money", - "To collect transactions and produce blocks", - "To create new pallets" - ], - "correctChoice": "To collect transactions and produce blocks", - "title": "What is the primary role of collators in a parachain?" - }, - { - "id": 5, - "imageUrl": "https://i.imgur.com/SnNQj4x.png", - "title": "Preparing for a parachain auction", - "details": "Parachain auctions on Polkadot involve a bidding process where projects compete by locking DOT tokens for a specified time period. The highest bidder wins the slot and gains the right to launch their parachain. We’ll have a look at what it takes to win a bid!" - }, - { - "id": 6, - "imageUrl": "https://i.imgur.com/5ee3A04.png", - "title": "Crowdfunding your parachain", - "details": "Crowdloans are a nifty financing method for your parachain project. By pooling DOT tokens from supporters, you can bid in parachain auctions, launching your project while rewarding your backers." - }, - { - "id": 7, - "imageUrl": "https://i.imgur.com/mZJuRRy.png", - "title": "Bringing your parachain to life", - "details": "Securing a parachain slot initiates the deployment process, which establishes the vital bridge connecting the different blockchain islands. Key steps involve registering the parachain, setting up the initial collator set, and fine-tuning the chain configuration to ensure a sturdy and efficient connection between the blockchain islands in the Polkadot ecosystem." - }, - { - "id": 8, - "choices": [ - "Parachain runtime", - "Parachain hosts", - "Collators", - "Crowdloans" - ], - "correctChoice": "Collators", - "title": "Which component of a parachain is responsible for gathering transactions and helping generate blocks?" - }, - { - "id": 9, - "title": "Pallets in action!", - "details": "This is a pallet dependency description - it's used to make the pallet available to the node runtime. The Nicks pallet allows blockchain users to pay a deposit to reserve a nickname for an account they control.", - "language": "yaml", - "code": "[dependencies]\npallet-nicks = { \nversion = \"4.0.0-dev\", \ndefault-features = false, \ngit = \"https://github.com/paritytech/substrate.git\", \nbranch = \"polkadot-v0.9.37\" \n}" - }, - { - "id": 10, - "title": "Add the Nicks pallet to the features list before compiling the runtime to enable it to be used!\n\nLook at the format of the other pallets already in the features list and add the Nicks pallet above to the list so the runtime can compile!", - "code": "[features]\ndefault = [\"std\"]\nstd = [\n\"pallet-aura/std\",\n\"pallet-balances/std\",\n\"pallet-nicks\"\n]\n", - "orderedAnswer": [ - "\"", - "pallet-nicks", - "\"", - "]" - ], - "startingCode": "[features]\ndefault = [\"std\"]\nstd = [\n\"pallet-aura/std\",\n\"pallet-balances/std\",\n", - "language": "yaml" - }, - { - "id": 11, - "imageUrl": "https://i.imgur.com/R7I22oU.png", - "title": "On-chain governance", - "details": "You can think of on-chain governance sort of like the island council (to continue our analogy). It's essential for sustaining a parachain and maintaining harmony across our island network. Transparent, community-driven governance structures empower users to influence the future of the parachain and the connections between blockchain islands, fostering accountability and consensus-driven decision-making." - }, - { - "id": 12, - "imageUrl": "https://i.imgur.com/3NnqnV3.png", - "title": "Embracing upgrades", - "details": "To keep a parachain on the cutting edge, it's vital to adapt to the ever-changing trends of blockchain innovation. By planning, proposing, and executing on-chain upgrades our parachain can continue to be a robust and reliable connection to other islands, fostering a connected ecosystem." - }, - { - "id": 13, - "choices": [ - "True", - "False" - ], - "correctChoice": "True", - "title": "True or False: To launch a parachain, you can either choose the on-demand model (parathreads), or auction model where you get a reserved parachain slot (parachain)" - }, - { - "id": 14, - "imageUrl": "https://i.imgur.com/glMLxrT.png", - "title": "Look at you, Parachain legend!", - "details": "You've nailed parachain building and connected the blockchain islands with a super cool parachain! Put your newfound know-how to use and explore some of Polkadot's awesome tooling next!" - } - ] - }, - { - "title": "Best frameworks for Polkadot Development", - "index": 4, - "challengeSteps": [ - { - "id": 1, - "imageUrl": "https://i.imgur.com/IpiJHvv.png", - "title": "Deeper dive", - "details": "Now you know how to make your first parachain, we can dive deeper into the frameworks used to customize and specialize your parachain!" - }, - { - "id": 2, - "imageUrl": "https://i.imgur.com/xba5CEh.png", - "title": "Substrate", - "details": "A face you’ll see often throughout your Polkadot journey is Substrate, a powerful Rust-based framework that lets you cherry-pick characteristics for your parachain, so you can easily upgrade and evolve your blockchain over time. \n\nBest of all, Substrate comes with loads of built-in features to take care of the protocol-level tasks, so you can focus on what really matters - programming your groundbreaking new features!\n" - }, - { - "id": 3, - "imageUrl": "https://i.imgur.com/yXnAjjB.png", - "title": "Pallets", - "details": "Pallets in Substrate are like Legos, they’re designed for specific uses, but when put together they combine their characteristics.\n\nAs building blocks for our blockchain bridges, they are designed to work together smoothly, with each pallet providing a specific function or feature that can be merged into the bigger project. You can save time and effort while keeping compatibility and stability in your parachain by using the pre-built functionality of pallets." - }, - { - "id": 4, - "imageUrl": "https://i.imgur.com/VPSQMIr.png", - "title": "Compiling a substrate node", - "details": "Compiling your Substrate node is the first step to building your local blockchain and simulating a network. Luckily, the clever folks behind Substrate have made a super straightforward tutorial. If you have time, take a deeper dive by checking out the tutorials linked below. Otherwise, stick with us and let's continue exploring!", - "resources": [ - { - "label": "docs.substrate.io/tutorials", - "url": "https://docs.substrate.io/tutorials" - } - ] - }, - { - "id": 5, - "title": "Three core technologies", - "imageUrl": "https://i.imgur.com/ttAIdaq.png", - "details": "Substrate's three core technologies are libp2p, Wasm and GRANDPA. Libp2p is a peer-to-peer networking protocol that allows nodes in a Substrate network to communicate." - }, - { - "id": 6, - "title": "What's Wasm?", - "imageUrl": "https://i.imgur.com/ttAIdaq.png", - "details": "Wasm empowers you to write blockchain logic in multiple languages, delivering true flexibility. The beauty of Substrate is it enables forkless upgrades, and coupled with Substrate this means you can write runtimes in any language (so long as it compiles to wasm)!", - "language": "javascript", - "code": "const Libp2p = require('libp2p');\nconst TCP = require('libp2p-tcp');\nconst { NOISE } = require('libp2p-noise');\n(async () => {\nconst libp2p = await Libp2p.create({ modules: { transport: [TCP], connEncryption: [NOISE] }, });\nawait libp2p.start();\n})();" - }, - { - "id": 7, - "imageUrl": "https://i.imgur.com/7xhmIHY.png", - "title": "Immutable finality", - "details": "GRANDPA is a finality gadget that guarantees that once a block is added to the chain, it cannot be reversed or altered. It ensures that finality is reached easily and quickly, even when the blockchain is forked and restructured." - }, - { - "id": 8, - "choices": [ - "Quick and efficient code execution", - "Peer-to-peer networking between nodes", - "Modular networking stack with a variety of communication protocols and transports" - ], - "correctChoice": "Quick and efficient code execution", - "title": "What does Wasm enable in Substrate?" - }, - { - "id": 9, - "choices": [ - "To allow developers to focus on more important things than protocol level stuff", - "To provide sandboxed code execution for increased security", - "To enable quick and efficient code execution" - ], - "correctChoice": "To allow developers to focus on more important things than protocol level stuff", - "title": "What is the purpose of Substrate's built-in features?" - }, - { - "id": 10, - "choices": [ - "To provide sandboxed code execution for increased security", - "To ensure that once a block is added to the chain, it cannot be reversed or altered", - "To allow nodes in a Substrate network to communicate and offer a modular and adaptable networking stack", - "To implement a consensus mechanism" - ], - "correctChoice": "To allow nodes in a Substrate network to communicate and offer a modular and adaptable networking stack", - "title": "What is the purpose of Libp2p in Substrate?" - }, - { - "id": 11, - "imageUrl": "https://i.imgur.com/FPOWsH9.png", - "title": "Moving onto ink!", - "details": "A language you’ll often hear about during your Polkadot journey is ink!, a rust-based smart contracts language, designed to be used to write smart contracts." - }, - { - "id": 12, - "imageUrl": "https://i.imgur.com/WqdIGzs.png", - "title": "Why is ink! special?", - "details": "ink! is particularly loved for its safety, speed, and concurrency. This fits hand in hand with Substrate's core values, and will complement your runtime perfectly!" - }, - { - "id": 13, - "imageUrl": "https://i.imgur.com/uR0q9rf.png", - "title": "Security", - "details": "Remember how we talked about Rust earlier? Because of Rust's focus on security, your smart contracts can be more resistant to errors, vulnerabilities, and hacks. This means that your contract and the overall network are kept super safe." - }, - { - "id": 14, - "choices": [ - "Python", - "Rust", - "Java", - "JavaScript" - ], - "correctChoice": "Rust", - "title": "Which programming language is ink! built on top of?" - }, - { - "id": 15, - "choices": [ - "It is a low-level language that provides full control over the blockchain", - "It's fast, secure and helps developers write smart contracts with fewer errors and vulnerabilities", - "It has a better binary than other smart contract languages", - "It provides a graphical user interface for easy development" - ], - "correctChoice": "It's fast, secure and helps developers write smart contracts with fewer errors and vulnerabilities", - "title": "What is one big advantage of using ink! for smart contract development?" - }, - { - "id": 16, - "choices": [ - "Interoperability with other smart contract languages and frameworks", - "Safety and security features", - "Built-in support for web development", - "Flexibility and customization" - ], - "correctChoice": "Built-in support for web development", - "title": "Which of the following is NOT a benefit of ink! for developers?" - }, - { - "id": 17, - "imageUrl": "https://i.imgur.com/zI5GJss.png", - "title": "You've done it!", - "details": "You’re almost there! You’ve come super far and learnt so much! Now you know all about Substrate and why you’d want to start building smart contracts on ink!, you’re on the path to greatness and we can’t wait to see what you come up with!" - } - ] - }, - { - "title": "The Future of Polkadot", - "index": 5, - "challengeSteps": [ - { - "id": 1, - "imageUrl": "https://i.imgur.com/dQnUqKa.png", - "title": "Exciting adventures await", - "details": "You've become quite the Polkadot whiz! Now it's time to put your knowledge into action by creating your own parachain. Let’s get our hands dirty while we guide you through building a functioning parachain step by step and explore Polkadot governance and exciting future developments." - }, - { - "id": 2, - "title": "We'll start by setting up the development environment and initializing your parachain project using Substrate and Rust. Here's a code snippet to get you started. Name your parachain: AlphaChain. Hint: you've got to do it in two places!", - "startingCode": "cargo install node-cli \ncargo new --bin my_parachain\ncd my_parachain", - "correctCode": "cargo install node-cli \ncargo new --bin AlphaChain\ncd AlphaChain", - "hint": "instead of 'my_parachain' change the text to 'AlphaChain'", - "enhancedHint": [ - { - "type": "plainString", - "value": "instead of 'my_parachain' change the text to" - }, - { - "type": "copyToClipboard", - "value": "AlphaChain" - } - ], - "language": "typescript", - "freeFormCodeValidationMethod": "trimAll" - }, - { - "id": 3, - "title": "Next, let's lay the foundations for our island bridge by creating the basic structure of our parachain, including the runtime configuration. Change our parachain spec_name to: AlphaChain", - "language": "typescript", - "freeFormCodeValidationMethod": "trimAll", - "startingCode": "pub const VERSION: RuntimeVersion = RuntimeVersion { \nspec_name: create_runtime_str!(\"my-parachain\"), impl_name: create_runtime_str!(\"my-parachain-node\"),\nauthoring_version: 1, \nspec_version: 1, \nimpl_version: 1, \napis: RUNTIME_API_VERSIONS,\ntransaction_version: 1, \n};\n", - "correctCode": "pub const VERSION: RuntimeVersion = RuntimeVersion { \nspec_name: create_runtime_str!(\"AlphaChain\"), impl_name: create_runtime_str!(\"my-parachain-node\"),\nauthoring_version: 1, \nspec_version: 1, \nimpl_version: 1, \napis: RUNTIME_API_VERSIONS,\ntransaction_version: 1, \n};\n", - "hint": "instead of 'my_parachain' change the text to 'AlphaChain'", - "enhancedHint": [ - { - "type": "plainString", - "value": "instead of 'my_parachain' change the text to" - }, - { - "type": "copyToClipboard", - "value": "AlphaChain" - } - ] - }, - { - "id": 4, - "imageUrl": "https://i.imgur.com/bi4P7tC.jpg", - "title": "Now, we'll add a crucial component to hold our island bridge together! How do we do that? By adding a simple pallet for handling balances in our parachain. Change the existential deposit count here to: 1000. Hint: it's on the second line!", - "language": "typescript", - "freeFormCodeValidationMethod": "trimAll", - "startingCode": "parameter_types! {\npub const ExistentialDeposit: u128 = 500;\n}\n\nimpl pallet_balances::Config for Runtime {\ntype MaxLocks = MaxLocks;\ntype Balance = u128;\ntype Event = Event;\ntype DustRemoval = ();\ntype ExistentialDeposit = ExistentialDeposit;\ntype AccountStore = System;\ntype WeightInfo = ();\n}\n", - "correctCode": "parameter_types! {\npub const ExistentialDeposit: u128 = 1000;\n}\n\nimpl pallet_balances::Config for Runtime {\ntype MaxLocks = MaxLocks;\ntype Balance = u128;\ntype Event = Event;\ntype DustRemoval = ();\ntype ExistentialDeposit = ExistentialDeposit;\ntype AccountStore = System;\ntype WeightInfo = ();\n}\n", - "hint": "change value of ExistentialDeposit from 500 to 1000", - "enhancedHint": [ - { - "type": "plainString", - "value": "Change value of ExistentialDeposit from 500 to" - }, - { - "type": "copyToClipboard", - "value": "1000" - } - ] - }, - { - "id": 5, - "imageUrl": "https://i.imgur.com/bi4P7tC.jpg", - "title": "What is Polkadot's primary decision-making mechanism?", - "choices": [ - "Council voting", - "Referenda", - "Treasury proposals" - ], - "correctChoice": "Referenda" - }, - { - "id": 6, - "imageUrl": "https://i.imgur.com/RsniY19.png", - "title": "Scalability solutions", - "details": "We’ll be honest, many blockchains really don’t scale well and can be quite slow, and this is a big issue for the Web3 ecosystem. But fear not, because Polkadot offers several solutions. One of these is Cross-Chain Message Passing (XCMP) which is responsible for data transfer between different blockchains. Other solutions include sharding, the parachains architecture and much more. With its unique architecture and approach to parachain development, Polkadot is a key player in increasing blockchain scalability." - }, - { - "id": 7, - "imageUrl": "https://i.imgur.com/bi4P7tC.jpg", - "title": "How does Polkadot address scalability issues?", - "choices": [ - "By using a single, powerful blockchain with better hardware", - "Through sharding alone ", - "By using a new approach to blockchain scalability which leverages new innovations such as sharding, XCMP, parachains and more" - ], - "correctChoice": "By using a new approach to blockchain scalability which leverages new innovations such as sharding, XCMP, parachains and more" - }, - { - "id": 8, - "imageUrl": "https://i.imgur.com/NoIsnh1.png", - "title": "Funding the future", - "details": "Polkadot's treasury is responsible for funding network development and growth, sort of like a governing body funding different projects that will contribute to society. The treasury operates by allocating funds to approved proposals, helping support innovation in the Polkadot ecosystem." - }, - { - "id": 9, - "imageUrl": "https://i.imgur.com/dLZfT1R.png", - "title": "Navigating upgrades", - "details": "If you dig into its history, Polkadot's ecosystem is continuously evolving. Staying ahead involves anticipating and adapting to network upgrades and improvements. This means that you’ll need to be on the lookout for what’s new in the space, and how to adapt to new developments." - }, - { - "id": 10, - "imageUrl": "https://i.imgur.com/76nfd9o.png", - "title": "Connecting blockchains and the community", - "details": "We’ve built a parachain, now what? There are plenty of ways of connecting with other developers like you and getting live support on your own journey. If you’re facing any issues, chances are some other builder has as well and can help you with your problem. Check out the Polkadot StackExchange, for example!" - }, - { - "id": 11, - "imageUrl": "https://i.imgur.com/oyLsEvZ.png", - "title": "Launch your project!", - "details": "But hey, there’s more! On top of just reaching out to people online, make sure you check out some regional hackathons or meet-ups between Polkadot or Web3 enthusiasts. If you’re living close to a major city, chances are there’s something going on near you! Many different parachains offer various grants that can be an amazing stepping stone for funding your Web3 project." - }, - { - "id": 12, - "imageUrl": "https://i.imgur.com/20mi7kJ.png", - "title": "Polkadot Visionary!", - "details": "You've successfully built a parachain, forging a bridge between islands with the help of pallets. You've equipped yourself with invaluable knowledge to launch your Polkadot network with confidence. There are so many different ways of maximizing Polkadot’s utility, and a bunch of parachains have already done so! Keep exploring different parachains and make a lasting impact on the ecosystem! We can’t wait to see what you build!" - } - ] - }, - { - "title": "Bonus: Join the community", - "index": 6, - "challengeSteps": [ - { - "id": 1, - "imageUrl": "https://i.imgur.com/7uoHpmF.png", - "title": "Boss mode", - "details": "So, you've made it this far. What next? In this bonus challenge we've designed something extra special for you to show you're a true Polkadot mastermind. Will this be challenging? Yes. Will it stretch you? Absolutely. But will it be worth it? Totally. If you complete this challenge you'll be able to wear it as a badge of honour. If you aren't able to then you're still a brilliant Polkadot developer for getting this far! So here we go!" - }, - { - "id": 2, - "title": "Learn how to contribute to Polkadot", - "details": "As your final step in the journey, let's learn how to make the changes we want to see in Polkadot! That's the beauty of Polkadot being fully open source; if you see something you want to improve, you can do it right away, all by yourself! Read all about how to do so on this webpage.", - "url": "https://wiki.polkadot.network/docs/contributing" - }, - { - "id": 3, - "choices": [ - "False", - "True" - ], - "correctChoice": "False", - "title": "You can update the Polkadot Wiki by committing your changes directly to the master branch" - }, - { - "id": 4, - "imageUrl": "https://i.imgur.com/U6JRF9W.png", - "title": "Becoming a great community member", - "details": "In any community, whether it's a city or just your local neighbourhood, the best community members give back and help newcomers join! The Polkadot community is no different. The best community members help newbies learn the ropes and make Polkadot accessible to everyone!\n\nAs we all know, learning how to develop on a new blockchain is one of the hardest things for developers. So great community members help write tutorials, guides, and even just help keep documentation up to date! This means that newbies can easily learn about Polkadot and the community will just get stronger and stronger. See if you can find something you'd like to update in the link below!", - "resources": [ - { - "label": "Polkadot Wiki", - "url": "https://wiki.polkadot.network/docs/learn-index" - } - ] - }, - { - "id": 5, - "title": "Forking time!", - "imageUrl": "https://imgur.com/KDAJUgn", - "details": "Fork the repo of Polkadot Wiki.", - "repoLink": "w3f/polkadot-wiki" - }, - { - "id": 6, - "imageUrl": "https://i.imgur.com/ohEcMFv.png", - "title": "You're a great community member!", - "details": "Nice work! By forking that Repo, you've just become a great member of the Polkadot community. It's small things like this that make a huge difference to helping make Polkadot more accessible to newcomers. Keep it up! Even better - make updates to that fork and create a Pull Request into the main Wiki repo! Remember - no matter how small your contribution, every little helps!" - }, - { - "id": 7, - "imageUrl": "https://i.imgur.com/LblyjAA.png", - "title": "You're officially a Polkadot boss!", - "details": "Wow. That one word sums it all up! You actually did it. You defeated boss mode and have now successfully entered the league of true Polkadot masterminds. You're part of the top league of developers who were able to get this far. So it's time to celebrate! Sit back, relax, and enjoy your place in the EasyA hall of fame." - }, - { - "id": 8, - "tweetReason": "Tweet about completing boss mode! Show the world what you've achieved!", - "tweetContent": "I've officially become a Polkadot boss! Just defeated boss mode on the @Polkadot challenges in @easya_app for #60DaysOfPolkadot! 💪\n\nProud to be part of the top league of people to be able to complete it! 🥇", - "tweetContentUrl": "" - } - ] - } + { + "title": "Intro to Polkadot", + "index": 1, + "challengeSteps": [ + { + "id": 1, + "imageUrl": "https://i.imgur.com/vF7XfK8.png", + "title": "Meet the next-generation blockchain", + "details": "Welcome to the world of Polkadot, a blockchain platform that enables communication between different blockchains - created by Gavin Wood, one of the co-founders of Ethereum. It’s able to connect with different blockchains to form an interoperable, decentralized web." + }, + { + "id": 2, + "imageUrl": "https://i.imgur.com/9BQhqPY.png", + "title": "Building blocks of Polkadot", + "details": "Think of Polkadot like building with Legos - you can pick and choose the pieces you want to create something unique! Imagine building a hyper-optimized blockchain, called a parachain, with specific characteristics to fit your exact need! All this is possible with Polkadot!" + }, + { + "id": 3, + "imageUrl": "https://i.imgur.com/XbI361a.png", + "title": "Unleash Versatility", + "details": "Plus, because of how it's designed, Polkadot can do things other blockchains can't, like handle lots of transactions at once and connect with external blockchain systems too." + }, + { + "id": 4, + "imageUrl": "https://i.imgur.com/kdwrLg5.png", + "title": "Efficiency & customizability", + "details": "Polkadot makes blockchain transactions faster and smoother by enabling seamless collaboration between different blockchains. This boosts transaction speed and reliability, allowing for parallel processing and data transfer. With Polkadot, complex transactions are executed with ease, making it more efficient and scalable. Get ready for a seamless and exciting blockchain experience!" + }, + { + "id": 5, + "choices": [ + "A decentralized exchange platform", + "A blockchain platform created by Gavin Wood", + "A social media platform for blockchain enthusiasts" + ], + "correctChoice": "A blockchain platform created by Gavin Wood", + "title": "What is Polkadot?" + }, + { + "id": 6, + "imageUrl": "https://i.imgur.com/NeDZPZr.png", + "title": "Breaking barriers", + "details": "Polkadot is super adaptable, so developers can make their own blockchains to fit their needs. That means you can use Polkadot for all kinds of different things - no more settling for pre-made blockchains! Plus, Polkadot lets you easily move assets between different blockchains, so the possibilities are endless!" + }, + { + "id": 7, + "imageUrl": "https://i.imgur.com/kQKhtLG.png", + "title": "The future of blockchain", + "details": "Consider legacy blockchains to be small islands separated from one another. Each island has its own set of resources and restrictions, making communication difficult. That's similar to traditional blockchains! They're all separate from one another, with their own set of laws and constraints, making it difficult to share information or collaborate. Polkadot, on the other hand, functions as a bridge between these 'islands,' uniting them so they may work more efficiently and quickly." + }, + { + "id": 8, + "choices": [ + "By allowing different parachains to collaborate and transfer data without much delay", + "By using advanced encryption techniques", + "By limiting the number of transactions that can be processed at once" + ], + "correctChoice": "By allowing different parachains to collaborate and transfer data without much delay", + "title": "How does Polkadot improve blockchain transactions?" + }, + { + "id": 9, + "choices": [ + "Improved speed and efficiency of blockchain transactions", + "Customizable blockchains that allow developers to design specific functionalities for their chain", + "Ability to connect different blockchains and transfer assets easily", + "All of the above" + ], + "correctChoice": "All of the above", + "title": "Which of these are the benefits of Polkadot?" + }, + { + "id": 10, + "choices": [ + "It is less secure than traditional blockchains", + "It cannot connect with non-blockchain systems", + "It allows for collaboration among different blockchains", + "It has a limited number of customizable features" + ], + "correctChoice": "It allows for collaboration among different blockchains", + "title": "How does Polkadot differ from traditional blockchains?" + }, + { + "id": 11, + "imageUrl": "https://i.imgur.com/YQNFrNk.png", + "title": "Kusama - Polkadot's wild cousin", + "details": "When you're developing a website, you usually have three stages: development, staging, and production. But in the blockchain world, it's a bit different. There's usually just development and production - that is, until you meet Kusama! Kusama is like Polkadot's adventurous cousin. It lets developers try out their parachains under real world conditions in a “canary network” before they're released on the main Polkadot network." + }, + { + "id": 12, + "imageUrl": "https://i.imgur.com/SHmsZPe.png", + "title": "Canary network - explained!", + "details": "A canary network is a live network that allows developers to test their blockchain under real-world conditions before launching it on the mainnet. It’s different from a testnet because it carries real value and transactions, providing a more authentic environment for testing. Think of Kusama like a fun and exciting adventure, where developers can take risks and test their limits. This helps create a stronger and more secure Polkadot ecosystem in the end!" + }, + { + "id": 13, + "imageUrl": "https://i.imgur.com/mli9QVH.png", + "title": "Double the innovation: parallel development on Polkadot and Kusama", + "details": "Polkadot and Kusama operate in parallel, with new features and upgrades being tested on Kusama before actually being implemented on Polkadot. That way, developers like you ensure that new features are thoroughly tested and refined before they're released on the main network, providing a better experience for users." + }, + { + "id": 14, + "imageUrl": "https://i.imgur.com/ZtKYg13.png", + "title": "Their future together", + "details": "Together, Polkadot and Kusama form a dynamic duo that encourages fearless exploration and experimentation. Picture your parachains as connections between the island blockchains, constantly growing and evolving, ready to connect with other blockchains and adapt to the ever-changing tides. This allows your parachains to continuously grow and change over time, evolving into something better. The only limit is how fast you can evolve!" + }, + { + "id": 15, + "choices": [ + "Kusama is a Cosmos app-chain", + "Kusama is a canary network for Polkadot", + "Polkadot is a fork of Kusama/Dotsama" + ], + "correctChoice": "Kusama is a canary network for Polkadot", + "title": "What is the relationship between Polkadot and Kusama/Dotsama?" + }, + { + "id": 16, + "imageUrl": "https://i.imgur.com/pnFudYZ.png", + "title": "Polkadot pioneer!", + "details": "Look at you! You’ve taken your first steps with Polkadot and are now able to understand why it’s used, who uses it, and how to use it. It’s really much simpler than you think! We’ve established that Polkadot is super versatile, and so are its tools! Let’s now have a look at how to work with Polkadot!" + }, + { + "id": 17, + "tweetReason": "Share the love on Twitter - we'll be rewarding the best ones with swag and prizes! ❤️", + "tweetContent": "I'm building on @Polkadot with @easya_app on my #60DaysOfPolkadot!\n\nCurrently learning about... \n\n🧑‍💻 How parachains work!\n⛓ How to build blockchains with @Polkadot \n🖼 How to speed up development 10x", + "tweetContentUrl": "" + } + ] + }, + { + "title": "How to work with Polkadot", + "index": 2, + "challengeSteps": [ + { + "id": 1, + "imageUrl": "https://i.imgur.com/Ys0BGmG.jpg", + "title": "Gear up with Polkadot", + "details": "To start building your own parachain on the Polkadot network, you need a Polkadot account. This account lets you manage your DOT tokens, participate in staking and governance, and access the tools you need to build your parachain." + }, + { + "id": 2, + "imageUrl": "https://i.imgur.com/zzQnxmD.png", + "title": "Safeguard your assets", + "details": "As you gather resources on the island, wallets become essential tools for managing and protecting your DOT tokens and other assets within the Polkadot ecosystem. Safeguard your digital treasures in popular wallets like Nova Wallet for mobile, Talisman for the browser, or Ledger for hardware." + }, + { + "id": 3, + "imageUrl": "https://i.imgur.com/LTd50aN.png", + "title": "Account abstractions", + "details": "Polkadot also offers a number of useful account abstractions like customizable proxies and multisigs, which can add more flexibility to your wallets. Easily create an manage these kinds of account using the Polkadot Multisig or Multix web application." + }, + { + "id": 4, + "imageUrl": "https://avatars.githubusercontent.com/u/33775474?s=280&v=4", + "title": "Polkadot.js: your navigator", + "details": "Polkadot.js is the trusty compass that guides you through the Polkadot network. It serves as a bridge between you and the various features of Polkadot, making it a super useful tool for building your own parachain and connecting the different blockchain islands!" + }, + { + "id": 5, + "title": "First steps", + "details": "As we work towards building our parachain in the hope of connecting the different blockchain islands, let's check the balance of the Polkadot Treasury account using the code below:", + "language": "javascript", + "code": "const { ApiPromise, WsProvider } = require('@polkadot/api');\n\nasync function main() {\n\tconst wsProvider = new WsProvider('wss://rpc.polkadot.io');\n\tconst api = await ApiPromise.create({ provider: wsProvider });\n\tconst address = '13UVJyLnbVp9RBZYFwFGyDvVd1y27Tt8tkntv6Q7JVPhFsTB';\n\tconst balance = await api.query.system.account(address);\n\tconsole.log(`Balance of ${address}: ${balance}`);\n}" + }, + { + "id": 6, + "imageUrl": "https://polkadot.network/meta/og-image-staking.png", + "title": "The art of staking", + "details": "Staking involves locking up your DOT tokens to help secure the network and earn rewards. Validators and nominators contribute to the stability of the ecosystem by staking DOT and supporting validator candidates. Nominators earn rewards proportional to their staked amounts while backing validators." + }, + { + "id": 7, + "choices": [ + "Storing and managing your DOT tokens", + "Participating in staking and nominating", + "Finding yield farming strategies" + ], + "correctChoice": "Finding yield farming strategies", + "title": "Which of these is NOT a function of Polkadot.js?" + }, + { + "id": 8, + "choices": [ + "The users of Polkadot", + "The validators", + "The engineers building new parachains", + "All the above" + ], + "correctChoice": "All the above", + "title": "Who contributes to the stability of the ecosystem?" + }, + { + "id": 9, + "imageUrl": "https://i.imgur.com/YA3ysPy.png", + "title": "Power to the people", + "details": "Polkadot has a unique governance system that empowers its community to participate in decision-making. By holding DOT tokens, you too can vote on proposals and help shape the future of the Polkadot network. This is a super cool way of getting everybody involved!" + }, + { + "id": 10, + "imageUrl": "https://i.imgur.com/GT9uGcw.png", + "title": "Democracy in action", + "details": "Polkadot's referendum system lets DOT holders have a say in important network changes. You can participate in referenda to influence updates and modifications to the ecosystem, including the staking process. It's decentralized decision-making at its best!" + }, + { + "id": 11, + "title": "Finally... getting started with Polkadot.js. Take a look at the code below to see if you can figure out how it works!", + "language": "javascript", + "code": "const { ApiPromise, WsProvider } = require('@polkadot/api');\n\nasync function main() {\n// Connect to a local Polkadot node\nconst wsProvider = new WsProvider('wss://rpc.polkadot.io');\nconst api = await ApiPromise.create({ provider: wsProvider });\n\n// Retrieve the latest block number\nconst blockNumber = await api.rpc.chain.getHeader();\nconsole.log(`Latest block number: ${blockNumber.number}`);\n}" + }, + { + "id": 12, + "choices": [ + "To secure the network and earn rewards", + "To mine new DOT tokens", + "To create new parachains" + ], + "correctChoice": "To secure the network and earn rewards", + "title": "To recap, what is the primary purpose of staking in Polkadot?" + }, + { + "id": 13, + "imageUrl": "https://i.imgur.com/fQeoF5V.png", + "title": "Expanding horizons", + "details": "As you delve deeper into the Polkadot ecosystem, you'll encounter parachains and parathreads. These are two types of customizable blockchains that interconnect within the network, differing mainly in the way they connect to Polkadot - parachains secure their connection by leasing a slot via auction, while parathreads use a pay-as-you-go model. Both bring their own unique capabilities, adding some amazing features to our blockchain islands. For example, some parachains focus on adapting Ethereum, and others on helping creators make dynamic NFTs!" + }, + { + "id": 14, + "imageUrl": "https://i.imgur.com/dyCgbew.png", + "title": "Funding the future", + "details": "Crowdloans are a unique way for the community to support the launch of new parachains. By contributing DOT tokens to a crowdloan, you can help fund a project's development and potentially earn rewards in the form of the project's native tokens. Just like a Gofundme!" + }, + { + "id": 15, + "choices": [ + "True", + "False" + ], + "correctChoice": "True", + "title": "Polkadot helps different blockchains communicate with each other." + }, + { + "id": 16, + "choices": [ + "True", + "False" + ], + "correctChoice": "False", + "title": "Polkadot always needs hard forks to make updates to its network." + }, + { + "id": 17, + "imageUrl": "https://i.imgur.com/xZy1RBY.png", + "title": "Onwards and upwards!", + "details": "Keep exploring the exciting world of Polkadot! You're doing great already! Keep the momentum going and you'll be a Polkadot hero in no time at all!" + } + ] + }, + { + "title": "How to build a Parachain", + "index": 3, + "challengeSteps": [ + { + "id": 1, + "imageUrl": "https://i.imgur.com/lXWnGI1.png", + "title": "Embarking on the parachain journey", + "details": "Building a parachain is your key to connecting the diverse blockchain islands. A parachain allows you to create a unique, customizable blockchain that connects seamlessly to the network. Let’s have a look at the parachain architecture, the development toolbox and pallets (what on earth are those?)!" + }, + { + "id": 2, + "imageUrl": "https://i.imgur.com/qBrWoH9.png", + "title": "Parachain architecture", + "details": "Parachain hosts, collators, and parachain runtime are the three key components of a parachain. They’re super crucial for your chain, so let’s take a deep dive into how they all work together!" + }, + { + "id": 3, + "imageUrl": "https://i.imgur.com/JHCEIjk.png", + "title": "Collators: a parachain's backbone", + "details": "Collators are essential in maintaining your parachain as they gather transactions and help generate blocks. They’re putting in the hard work to make sure everything works the way it’s supposed to, contributing to your parachain's overall stability and performance." + }, + { + "id": 4, + "choices": [ + "To secure the network and earn money", + "To collect transactions and produce blocks", + "To create new pallets" + ], + "correctChoice": "To collect transactions and produce blocks", + "title": "What is the primary role of collators in a parachain?" + }, + { + "id": 5, + "imageUrl": "https://i.imgur.com/SnNQj4x.png", + "title": "Preparing for a parachain auction", + "details": "Parachain auctions on Polkadot involve a bidding process where projects compete by locking DOT tokens for a specified time period. The highest bidder wins the slot and gains the right to launch their parachain. We’ll have a look at what it takes to win a bid!" + }, + { + "id": 6, + "imageUrl": "https://i.imgur.com/5ee3A04.png", + "title": "Crowdfunding your parachain", + "details": "Crowdloans are a nifty financing method for your parachain project. By pooling DOT tokens from supporters, you can bid in parachain auctions, launching your project while rewarding your backers." + }, + { + "id": 7, + "imageUrl": "https://i.imgur.com/mZJuRRy.png", + "title": "Bringing your parachain to life", + "details": "Securing a parachain slot initiates the deployment process, which establishes the vital bridge connecting the different blockchain islands. Key steps involve registering the parachain, setting up the initial collator set, and fine-tuning the chain configuration to ensure a sturdy and efficient connection between the blockchain islands in the Polkadot ecosystem." + }, + { + "id": 8, + "choices": [ + "Parachain runtime", + "Parachain hosts", + "Collators", + "Crowdloans" + ], + "correctChoice": "Collators", + "title": "Which component of a parachain is responsible for gathering transactions and helping generate blocks?" + }, + { + "id": 9, + "title": "Pallets in action!", + "details": "This is a pallet dependency description - it's used to make the pallet available to the node runtime. The Nicks pallet allows blockchain users to pay a deposit to reserve a nickname for an account they control.", + "language": "yaml", + "code": "[dependencies]\npallet-nicks = { \nversion = \"4.0.0-dev\", \ndefault-features = false, \ngit = \"https://github.com/paritytech/substrate.git\", \nbranch = \"polkadot-v0.9.37\" \n}" + }, + { + "id": 10, + "title": "Add the Nicks pallet to the features list before compiling the runtime to enable it to be used!\n\nLook at the format of the other pallets already in the features list and add the Nicks pallet above to the list so the runtime can compile!", + "code": "[features]\ndefault = [\"std\"]\nstd = [\n\"pallet-aura/std\",\n\"pallet-balances/std\",\n\"pallet-nicks\"\n]\n", + "orderedAnswer": [ + "\"", + "pallet-nicks", + "\"", + "]" + ], + "startingCode": "[features]\ndefault = [\"std\"]\nstd = [\n\"pallet-aura/std\",\n\"pallet-balances/std\",\n", + "language": "yaml" + }, + { + "id": 11, + "imageUrl": "https://i.imgur.com/R7I22oU.png", + "title": "On-chain governance", + "details": "You can think of on-chain governance sort of like the island council (to continue our analogy). It's essential for sustaining a parachain and maintaining harmony across our island network. Transparent, community-driven governance structures empower users to influence the future of the parachain and the connections between blockchain islands, fostering accountability and consensus-driven decision-making." + }, + { + "id": 12, + "imageUrl": "https://i.imgur.com/3NnqnV3.png", + "title": "Embracing upgrades", + "details": "To keep a parachain on the cutting edge, it's vital to adapt to the ever-changing trends of blockchain innovation. By planning, proposing, and executing on-chain upgrades our parachain can continue to be a robust and reliable connection to other islands, fostering a connected ecosystem." + }, + { + "id": 13, + "choices": [ + "True", + "False" + ], + "correctChoice": "True", + "title": "True or False: To launch a parachain, you can either choose the on-demand model (parathreads), or auction model where you get a reserved parachain slot (parachain)" + }, + { + "id": 14, + "imageUrl": "https://i.imgur.com/glMLxrT.png", + "title": "Look at you, Parachain legend!", + "details": "You've nailed parachain building and connected the blockchain islands with a super cool parachain! Put your newfound know-how to use and explore some of Polkadot's awesome tooling next!" + } + ] + }, + { + "title": "Best frameworks for Polkadot Development", + "index": 4, + "challengeSteps": [ + { + "id": 1, + "imageUrl": "https://i.imgur.com/IpiJHvv.png", + "title": "Deeper dive", + "details": "Now you know how to make your first parachain, we can dive deeper into the frameworks used to customize and specialize your parachain!" + }, + { + "id": 2, + "imageUrl": "https://i.imgur.com/xba5CEh.png", + "title": "Substrate", + "details": "A face you’ll see often throughout your Polkadot journey is Substrate, a powerful Rust-based framework that lets you cherry-pick characteristics for your parachain, so you can easily upgrade and evolve your blockchain over time. \n\nBest of all, Substrate comes with loads of built-in features to take care of the protocol-level tasks, so you can focus on what really matters - programming your groundbreaking new features!\n" + }, + { + "id": 3, + "imageUrl": "https://i.imgur.com/yXnAjjB.png", + "title": "Pallets", + "details": "Pallets in Substrate are like Legos, they’re designed for specific uses, but when put together they combine their characteristics.\n\nAs building blocks for our blockchain bridges, they are designed to work together smoothly, with each pallet providing a specific function or feature that can be merged into the bigger project. You can save time and effort while keeping compatibility and stability in your parachain by using the pre-built functionality of pallets." + }, + { + "id": 4, + "imageUrl": "https://i.imgur.com/VPSQMIr.png", + "title": "Compiling a substrate node", + "details": "Compiling your Substrate node is the first step to building your local blockchain and simulating a network. Luckily, the clever folks behind Substrate have made a super straightforward tutorial. If you have time, take a deeper dive by checking out the tutorials linked below. Otherwise, stick with us and let's continue exploring!", + "resources": [ + { + "label": "docs.substrate.io/tutorials", + "url": "https://docs.substrate.io/tutorials" + } + ] + }, + { + "id": 5, + "title": "Three core technologies", + "imageUrl": "https://i.imgur.com/ttAIdaq.png", + "details": "Substrate's three core technologies are libp2p, Wasm and GRANDPA. Libp2p is a peer-to-peer networking protocol that allows nodes in a Substrate network to communicate." + }, + { + "id": 6, + "title": "What's Wasm?", + "imageUrl": "https://i.imgur.com/ttAIdaq.png", + "details": "Wasm empowers you to write blockchain logic in multiple languages, delivering true flexibility. The beauty of Substrate is it enables forkless upgrades, and coupled with Substrate this means you can write runtimes in any language (so long as it compiles to wasm)!", + "language": "javascript", + "code": "const Libp2p = require('libp2p');\nconst TCP = require('libp2p-tcp');\nconst { NOISE } = require('libp2p-noise');\n(async () => {\nconst libp2p = await Libp2p.create({ modules: { transport: [TCP], connEncryption: [NOISE] }, });\nawait libp2p.start();\n})();" + }, + { + "id": 7, + "imageUrl": "https://i.imgur.com/7xhmIHY.png", + "title": "Immutable finality", + "details": "GRANDPA is a finality gadget that guarantees that once a block is added to the chain, it cannot be reversed or altered. It ensures that finality is reached easily and quickly, even when the blockchain is forked and restructured." + }, + { + "id": 8, + "choices": [ + "Quick and efficient code execution", + "Peer-to-peer networking between nodes", + "Modular networking stack with a variety of communication protocols and transports" + ], + "correctChoice": "Quick and efficient code execution", + "title": "What does Wasm enable in Substrate?" + }, + { + "id": 9, + "choices": [ + "To allow developers to focus on more important things than protocol level stuff", + "To provide sandboxed code execution for increased security", + "To enable quick and efficient code execution" + ], + "correctChoice": "To allow developers to focus on more important things than protocol level stuff", + "title": "What is the purpose of Substrate's built-in features?" + }, + { + "id": 10, + "choices": [ + "To provide sandboxed code execution for increased security", + "To ensure that once a block is added to the chain, it cannot be reversed or altered", + "To allow nodes in a Substrate network to communicate and offer a modular and adaptable networking stack", + "To implement a consensus mechanism" + ], + "correctChoice": "To allow nodes in a Substrate network to communicate and offer a modular and adaptable networking stack", + "title": "What is the purpose of Libp2p in Substrate?" + }, + { + "id": 11, + "imageUrl": "https://i.imgur.com/FPOWsH9.png", + "title": "Moving onto ink!", + "details": "A language you’ll often hear about during your Polkadot journey is ink!, a rust-based smart contracts language, designed to be used to write smart contracts." + }, + { + "id": 12, + "imageUrl": "https://i.imgur.com/WqdIGzs.png", + "title": "Why is ink! special?", + "details": "ink! is particularly loved for its safety, speed, and concurrency. This fits hand in hand with Substrate's core values, and will complement your runtime perfectly!" + }, + { + "id": 13, + "imageUrl": "https://i.imgur.com/uR0q9rf.png", + "title": "Security", + "details": "Remember how we talked about Rust earlier? Because of Rust's focus on security, your smart contracts can be more resistant to errors, vulnerabilities, and hacks. This means that your contract and the overall network are kept super safe." + }, + { + "id": 14, + "choices": [ + "Python", + "Rust", + "Java", + "JavaScript" + ], + "correctChoice": "Rust", + "title": "Which programming language is ink! built on top of?" + }, + { + "id": 15, + "choices": [ + "It is a low-level language that provides full control over the blockchain", + "It's fast, secure and helps developers write smart contracts with fewer errors and vulnerabilities", + "It has a better binary than other smart contract languages", + "It provides a graphical user interface for easy development" + ], + "correctChoice": "It's fast, secure and helps developers write smart contracts with fewer errors and vulnerabilities", + "title": "What is one big advantage of using ink! for smart contract development?" + }, + { + "id": 16, + "choices": [ + "Interoperability with other smart contract languages and frameworks", + "Safety and security features", + "Built-in support for web development", + "Flexibility and customization" + ], + "correctChoice": "Built-in support for web development", + "title": "Which of the following is NOT a benefit of ink! for developers?" + }, + { + "id": 17, + "imageUrl": "https://i.imgur.com/zI5GJss.png", + "title": "You've done it!", + "details": "You’re almost there! You’ve come super far and learnt so much! Now you know all about Substrate and why you’d want to start building smart contracts on ink!, you’re on the path to greatness and we can’t wait to see what you come up with!" + } + ] + }, + { + "title": "The Future of Polkadot", + "index": 5, + "challengeSteps": [ + { + "id": 1, + "imageUrl": "https://i.imgur.com/dQnUqKa.png", + "title": "Exciting adventures await", + "details": "You've become quite the Polkadot whiz! Now it's time to put your knowledge into action by creating your own parachain. Let’s get our hands dirty while we guide you through building a functioning parachain step by step and explore Polkadot governance and exciting future developments." + }, + { + "id": 2, + "title": "We'll start by setting up the development environment and initializing your parachain project using Substrate and Rust. Here's a code snippet to get you started. Name your parachain: AlphaChain. Hint: you've got to do it in two places!", + "startingCode": "cargo install node-cli \ncargo new --bin my_parachain\ncd my_parachain", + "correctCode": "cargo install node-cli \ncargo new --bin AlphaChain\ncd AlphaChain", + "hint": "instead of 'my_parachain' change the text to 'AlphaChain'", + "enhancedHint": [ + { + "type": "plainString", + "value": "instead of 'my_parachain' change the text to" + }, + { + "type": "copyToClipboard", + "value": "AlphaChain" + } + ], + "language": "typescript", + "freeFormCodeValidationMethod": "trimAll" + }, + { + "id": 3, + "title": "Next, let's lay the foundations for our island bridge by creating the basic structure of our parachain, including the runtime configuration. Change our parachain spec_name to: AlphaChain", + "language": "typescript", + "freeFormCodeValidationMethod": "trimAll", + "startingCode": "pub const VERSION: RuntimeVersion = RuntimeVersion { \nspec_name: create_runtime_str!(\"my-parachain\"), impl_name: create_runtime_str!(\"my-parachain-node\"),\nauthoring_version: 1, \nspec_version: 1, \nimpl_version: 1, \napis: RUNTIME_API_VERSIONS,\ntransaction_version: 1, \n};\n", + "correctCode": "pub const VERSION: RuntimeVersion = RuntimeVersion { \nspec_name: create_runtime_str!(\"AlphaChain\"), impl_name: create_runtime_str!(\"my-parachain-node\"),\nauthoring_version: 1, \nspec_version: 1, \nimpl_version: 1, \napis: RUNTIME_API_VERSIONS,\ntransaction_version: 1, \n};\n", + "hint": "instead of 'my_parachain' change the text to 'AlphaChain'", + "enhancedHint": [ + { + "type": "plainString", + "value": "instead of 'my_parachain' change the text to" + }, + { + "type": "copyToClipboard", + "value": "AlphaChain" + } + ] + }, + { + "id": 4, + "imageUrl": "https://i.imgur.com/bi4P7tC.jpg", + "title": "Now, we'll add a crucial component to hold our island bridge together! How do we do that? By adding a simple pallet for handling balances in our parachain. Change the existential deposit count here to: 1000. Hint: it's on the second line!", + "language": "typescript", + "freeFormCodeValidationMethod": "trimAll", + "startingCode": "parameter_types! {\npub const ExistentialDeposit: u128 = 500;\n}\n\nimpl pallet_balances::Config for Runtime {\ntype MaxLocks = MaxLocks;\ntype Balance = u128;\ntype Event = Event;\ntype DustRemoval = ();\ntype ExistentialDeposit = ExistentialDeposit;\ntype AccountStore = System;\ntype WeightInfo = ();\n}\n", + "correctCode": "parameter_types! {\npub const ExistentialDeposit: u128 = 1000;\n}\n\nimpl pallet_balances::Config for Runtime {\ntype MaxLocks = MaxLocks;\ntype Balance = u128;\ntype Event = Event;\ntype DustRemoval = ();\ntype ExistentialDeposit = ExistentialDeposit;\ntype AccountStore = System;\ntype WeightInfo = ();\n}\n", + "hint": "change value of ExistentialDeposit from 500 to 1000", + "enhancedHint": [ + { + "type": "plainString", + "value": "Change value of ExistentialDeposit from 500 to" + }, + { + "type": "copyToClipboard", + "value": "1000" + } + ] + }, + { + "id": 5, + "imageUrl": "https://i.imgur.com/bi4P7tC.jpg", + "title": "What is Polkadot's primary decision-making mechanism?", + "choices": [ + "Council voting", + "Referenda", + "Treasury proposals" + ], + "correctChoice": "Referenda" + }, + { + "id": 6, + "imageUrl": "https://i.imgur.com/RsniY19.png", + "title": "Scalability solutions", + "details": "We’ll be honest, many blockchains really don’t scale well and can be quite slow, and this is a big issue for the Web3 ecosystem. But fear not, because Polkadot offers several solutions. One of these is Cross-Chain Message Passing (XCMP) which is responsible for data transfer between different blockchains. Other solutions include sharding, the parachains architecture and much more. With its unique architecture and approach to parachain development, Polkadot is a key player in increasing blockchain scalability." + }, + { + "id": 7, + "imageUrl": "https://i.imgur.com/bi4P7tC.jpg", + "title": "How does Polkadot address scalability issues?", + "choices": [ + "By using a single, powerful blockchain with better hardware", + "Through sharding alone ", + "By using a new approach to blockchain scalability which leverages new innovations such as sharding, XCMP, parachains and more" + ], + "correctChoice": "By using a new approach to blockchain scalability which leverages new innovations such as sharding, XCMP, parachains and more" + }, + { + "id": 8, + "imageUrl": "https://i.imgur.com/NoIsnh1.png", + "title": "Funding the future", + "details": "Polkadot's treasury is responsible for funding network development and growth, sort of like a governing body funding different projects that will contribute to society. The treasury operates by allocating funds to approved proposals, helping support innovation in the Polkadot ecosystem." + }, + { + "id": 9, + "imageUrl": "https://i.imgur.com/dLZfT1R.png", + "title": "Navigating upgrades", + "details": "If you dig into its history, Polkadot's ecosystem is continuously evolving. Staying ahead involves anticipating and adapting to network upgrades and improvements. This means that you’ll need to be on the lookout for what’s new in the space, and how to adapt to new developments." + }, + { + "id": 10, + "imageUrl": "https://i.imgur.com/76nfd9o.png", + "title": "Connecting blockchains and the community", + "details": "We’ve built a parachain, now what? There are plenty of ways of connecting with other developers like you and getting live support on your own journey. If you’re facing any issues, chances are some other builder has as well and can help you with your problem. Check out the Polkadot StackExchange, for example!" + }, + { + "id": 11, + "imageUrl": "https://i.imgur.com/oyLsEvZ.png", + "title": "Launch your project!", + "details": "But hey, there’s more! On top of just reaching out to people online, make sure you check out some regional hackathons or meet-ups between Polkadot or Web3 enthusiasts. If you’re living close to a major city, chances are there’s something going on near you! Many different parachains offer various grants that can be an amazing stepping stone for funding your Web3 project." + }, + { + "id": 12, + "imageUrl": "https://i.imgur.com/20mi7kJ.png", + "title": "Polkadot Visionary!", + "details": "You've successfully built a parachain, forging a bridge between islands with the help of pallets. You've equipped yourself with invaluable knowledge to launch your Polkadot network with confidence. There are so many different ways of maximizing Polkadot’s utility, and a bunch of parachains have already done so! Keep exploring different parachains and make a lasting impact on the ecosystem! We can’t wait to see what you build!" + } + ] + }, + { + "title": "Bonus: Join the community", + "index": 6, + "challengeSteps": [ + { + "id": 1, + "imageUrl": "https://i.imgur.com/7uoHpmF.png", + "title": "Boss mode", + "details": "So, you've made it this far. What next? In this bonus challenge we've designed something extra special for you to show you're a true Polkadot mastermind. Will this be challenging? Yes. Will it stretch you? Absolutely. But will it be worth it? Totally. If you complete this challenge you'll be able to wear it as a badge of honour. If you aren't able to then you're still a brilliant Polkadot developer for getting this far! So here we go!" + }, + { + "id": 2, + "title": "Learn how to contribute to Polkadot", + "details": "As your final step in the journey, let's learn how to make the changes we want to see in Polkadot! That's the beauty of Polkadot being fully open source; if you see something you want to improve, you can do it right away, all by yourself! Read all about how to do so on this webpage.", + "url": "https://wiki.polkadot.network/docs/contributing" + }, + { + "id": 3, + "choices": [ + "False", + "True" + ], + "correctChoice": "False", + "title": "You can update the Polkadot Wiki by committing your changes directly to the master branch" + }, + { + "id": 4, + "imageUrl": "https://i.imgur.com/U6JRF9W.png", + "title": "Becoming a great community member", + "details": "In any community, whether it's a city or just your local neighbourhood, the best community members give back and help newcomers join! The Polkadot community is no different. The best community members help newbies learn the ropes and make Polkadot accessible to everyone!\n\nAs we all know, learning how to develop on a new blockchain is one of the hardest things for developers. So great community members help write tutorials, guides, and even just help keep documentation up to date! This means that newbies can easily learn about Polkadot and the community will just get stronger and stronger. See if you can find something you'd like to update in the link below!", + "resources": [ + { + "label": "Polkadot Wiki", + "url": "https://wiki.polkadot.network/docs/learn-index" + } + ] + }, + { + "id": 5, + "title": "Forking time!", + "imageUrl": "https://imgur.com/KDAJUgn", + "details": "Fork the repo of Polkadot Wiki.", + "repoLink": "w3f/polkadot-wiki" + }, + { + "id": 6, + "imageUrl": "https://i.imgur.com/ohEcMFv.png", + "title": "You're a great community member!", + "details": "Nice work! By forking that Repo, you've just become a great member of the Polkadot community. It's small things like this that make a huge difference to helping make Polkadot more accessible to newcomers. Keep it up! Even better - make updates to that fork and create a Pull Request into the main Wiki repo! Remember - no matter how small your contribution, every little helps!" + }, + { + "id": 7, + "imageUrl": "https://i.imgur.com/LblyjAA.png", + "title": "You're officially a Polkadot boss!", + "details": "Wow. That one word sums it all up! You actually did it. You defeated boss mode and have now successfully entered the league of true Polkadot masterminds. You're part of the top league of developers who were able to get this far. So it's time to celebrate! Sit back, relax, and enjoy your place in the EasyA hall of fame." + }, + { + "id": 8, + "tweetReason": "Tweet about completing boss mode! Show the world what you've achieved!", + "tweetContent": "I've officially become a Polkadot boss! Just defeated boss mode on the @Polkadot challenges in @easya_app for #60DaysOfPolkadot! 💪\n\nProud to be part of the top league of people to be able to complete it! 🥇", + "tweetContentUrl": "" + } + ] + } ] From f8097b80b4650f2b6fd6d27bc0a052b9f0f75d3a Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Sun, 15 Sep 2024 17:02:10 -0400 Subject: [PATCH 2/3] tabs on code --- polkadot.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/polkadot.json b/polkadot.json index f54c8ae..0c16d4e 100644 --- a/polkadot.json +++ b/polkadot.json @@ -207,7 +207,7 @@ "id": 11, "title": "Finally... getting started with Polkadot.js. Take a look at the code below to see if you can figure out how it works!", "language": "javascript", - "code": "const { ApiPromise, WsProvider } = require('@polkadot/api');\n\nasync function main() {\n// Connect to a local Polkadot node\nconst wsProvider = new WsProvider('wss://rpc.polkadot.io');\nconst api = await ApiPromise.create({ provider: wsProvider });\n\n// Retrieve the latest block number\nconst blockNumber = await api.rpc.chain.getHeader();\nconsole.log(`Latest block number: ${blockNumber.number}`);\n}" + "code": "const { ApiPromise, WsProvider } = require('@polkadot/api');\n\nasync function main() {\n\t// Connect to a local Polkadot node\n\tconst wsProvider = new WsProvider('wss://rpc.polkadot.io');\n\tconst api = await ApiPromise.create({ provider: wsProvider });\n\n\t// Retrieve the latest block number\n\tconst blockNumber = await api.rpc.chain.getHeader();\n\tconsole.log(`Latest block number: ${blockNumber.number}`);\n}" }, { "id": 12, From f34474e3228d7615ea7ff9dc755dc5d3a9515c01 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Sun, 15 Sep 2024 23:55:18 -0400 Subject: [PATCH 3/3] Reference apps by links --- polkadot.json | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/polkadot.json b/polkadot.json index 0c16d4e..faca84f 100644 --- a/polkadot.json +++ b/polkadot.json @@ -143,13 +143,37 @@ "id": 2, "imageUrl": "https://i.imgur.com/zzQnxmD.png", "title": "Safeguard your assets", - "details": "As you gather resources on the island, wallets become essential tools for managing and protecting your DOT tokens and other assets within the Polkadot ecosystem. Safeguard your digital treasures in popular wallets like Nova Wallet for mobile, Talisman for the browser, or Ledger for hardware." + "details": "As you gather resources on the island, wallets become essential tools for managing and protecting your DOT tokens and other assets within the Polkadot ecosystem. Safeguard your digital treasures in some of Polkadot's most popular wallets.", + "resources": [ + { + "label": "Nova Wallet for Mobile", + "url": "https://novawallet.io/" + }, + { + "label": "Talisman for Browser", + "url": "https://www.talisman.xyz/" + }, + { + "label": "Ledger for Hardware", + "url": "https://www.ledger.com/" + } + ] }, { "id": 3, "imageUrl": "https://i.imgur.com/LTd50aN.png", "title": "Account abstractions", - "details": "Polkadot also offers a number of useful account abstractions like customizable proxies and multisigs, which can add more flexibility to your wallets. Easily create an manage these kinds of account using the Polkadot Multisig or Multix web application." + "details": "Polkadot also offers a number of useful account abstractions like customizable proxies and multisigs, which can add more flexibility to your wallets. Easily create an manage these kinds of accounts using popular web applications.", + "resources": [ + { + "label": "Polkadot Multisig by Signet", + "url": "https://polkadotmultisig.com/" + }, + { + "label": "Multix by ChainSafe", + "url": "https://multix.chainsafe.io/" + } + ] }, { "id": 4,