From d4e7f4b928dde79df91ed61fa86a828291dad012 Mon Sep 17 00:00:00 2001 From: RutvikGhaskataEalf Date: Wed, 4 Dec 2024 08:25:22 +0530 Subject: [PATCH] feat: added more tutorials and fixed code view bug on tutorial --- components/tutorial/list.tsx | 40 +++ public/allowance-contract.png | Bin 0 -> 68170 bytes public/expense-tracker-contract.png | Bin 0 -> 61851 bytes public/single-pool-staking-contract.png | Bin 0 -> 70188 bytes public/tic-tac-teo-contract.png | Bin 0 -> 65285 bytes src/main.tsx | 25 ++ src/routes/tutorial.scss | 28 +- src/tutorials/allowance.mdx | 286 ++++++++++++++++++++ src/tutorials/expense-tracker.mdx | 274 +++++++++++++++++++ src/tutorials/role.mdx | 210 +++++++++++++++ src/tutorials/single-pool-staking.mdx | 341 ++++++++++++++++++++++++ src/tutorials/tic-tac-toe.mdx | 315 ++++++++++++++++++++++ 12 files changed, 1518 insertions(+), 1 deletion(-) create mode 100644 public/allowance-contract.png create mode 100644 public/expense-tracker-contract.png create mode 100644 public/single-pool-staking-contract.png create mode 100644 public/tic-tac-teo-contract.png create mode 100644 src/tutorials/allowance.mdx create mode 100644 src/tutorials/expense-tracker.mdx create mode 100644 src/tutorials/role.mdx create mode 100644 src/tutorials/single-pool-staking.mdx create mode 100644 src/tutorials/tic-tac-toe.mdx diff --git a/components/tutorial/list.tsx b/components/tutorial/list.tsx index 206c7cf..cb1c5dc 100644 --- a/components/tutorial/list.tsx +++ b/components/tutorial/list.tsx @@ -57,6 +57,46 @@ const data = [ lang: "C#", langId: "csharp", }, + { + id: "tic-tac-toe", + img: "/tic-tac-teo-contract.png", + title: "Tic-Tac-Toe Contract", + description: "Decentralized gamify Contract", + level: "Intermediate", + levelId: "intermediate", + lang: "C#", + langId: "csharp", + }, + { + id: "expense-tracker", + img: "/expense-tracker-contract.png", + title: "Expense Tracker Contract", + description: "User-friendly interface for recording expenses, categorizing them, and tracking spending habitst", + level: "Intermediate", + levelId: "intermediate", + lang: "C#", + langId: "csharp", + }, + { + id: "single-pool-staking", + img: "/single-pool-staking-contract.png", + title: "Single Pool Staking Contract", + description: "Allows users to stake their tokens in a single staking pool", + level: "Advanced", + levelId: "advanced", + lang: "C#", + langId: "csharp", + }, + { + id: "role", + img: "/allowance-contract.png", + title: "Allowance Contract", + description: "Integration of two smart contracts, RoleContract and AllowanceContract, focusing on role-based access and fund management", + level: "Advanced", + levelId: "advanced", + lang: "C#", + langId: "csharp", + }, ].filter((i) => (solidityEnabled ? true : i.langId !== "solidity")); export function TutorialList() { diff --git a/public/allowance-contract.png b/public/allowance-contract.png new file mode 100644 index 0000000000000000000000000000000000000000..3e38e35187518d382a3f35cef4a34cb1ab11008b GIT binary patch literal 68170 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

iiY{6t-(HGHI{GL^a#vL}Djzv7B;U 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 dm(fvt1U=+-9a`p(n>wiBC%c}qY literal 0 HcmV?d00001 diff --git a/public/expense-tracker-contract.png b/public/expense-tracker-contract.png new file mode 100644 index 0000000000000000000000000000000000000000..c7b024eb96082191cd3ac9c5f89d2046621bf3f2 GIT binary patch literal 61851 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 OgM!l2)z1Z(beaH#bUIZ4 literal 0 HcmV?d00001 diff --git a/public/single-pool-staking-contract.png b/public/single-pool-staking-contract.png new file mode 100644 index 0000000000000000000000000000000000000000..82047c3be72382714ec54c3828be1aab1edafc3a GIT binary patch literal 70188 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 z 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 literal 0 HcmV?d00001 diff --git a/public/tic-tac-teo-contract.png b/public/tic-tac-teo-contract.png new file mode 100644 index 0000000000000000000000000000000000000000..55347bb9bc7af6452f64be71883549e58eaf88b2 GIT binary patch literal 65285 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 import('./routes/root')}> diff --git a/src/routes/tutorial.scss b/src/routes/tutorial.scss index c3b8146..a66aa30 100644 --- a/src/routes/tutorial.scss +++ b/src/routes/tutorial.scss @@ -22,11 +22,24 @@ pre { overflow-x: auto; padding: 1rem 0; + background-color: #282A36 !important; } - + pre [data-line] { padding: 0 1rem; } + + code { + background-color: #f8f8f8; + border: 0.1rem solid #ddd; + border-radius: 0.4rem; + padding-inline: 0.2rem; + } + pre code { + background: #282A36; + border: none; + border-radius: 0; + } h1 { font-size: 2rem; @@ -55,6 +68,11 @@ margin-bottom: 1rem; } + ol{ + list-style: auto; + margin-left: 1rem; + } + [data-rehype-pretty-code-title] { border-top-left-radius: .5rem; border-top-right-radius: .5rem; @@ -138,3 +156,11 @@ } } +.dark { + .mdx-content { + code { + background-color: #ffffff1a; + border: 0.1rem solid #ffffff1a; + } + } +} \ No newline at end of file diff --git a/src/tutorials/allowance.mdx b/src/tutorials/allowance.mdx new file mode 100644 index 0000000..17e6c95 --- /dev/null +++ b/src/tutorials/allowance.mdx @@ -0,0 +1,286 @@ +import GenerateTemplate from '@/components/tutorial/generate-template'; + +# Allowance (Allowance Contract) + +## Step 1 - Develop Role Smart Contract + +### Adding Your Smart Contract Code + +First, generate the template: . + +Now that we have an AllowanceContract template, it can be customized to manage funds with role-based permissions. Below are its core functionalities: + +1. Set Allowance: Increases the current allowance, with permissions verified through parent and child roles fetched from the RoleContract. +2. Use Funds: Allows a child role to spend funds, reducing the current allowance. +3. Get Allowance: Retrieves the remaining allowance. +4. Role-based Permissions: Ensures only authorized roles, like parent of a child can modify or the child use the allowance. + +This contract showcases **inter-contract calls** and role-based fund management, demonstrating how multiple smart contracts work together for secure, controlled financial operations on the aelf blockchain. It helps in understanding how the AllowanceContract calls the RoleContract to check which sender (either of Parent, Child & Admin) is calling the methods of the AllowanceContract to put control on the access of the functions. + +#### Defining Methods and Messages + +The implementation of file `src/Protobuf/contract/allowance_contract.proto` is as follows: + +```csharp title="allowance_contract.proto" +syntax = "proto3"; + +import "aelf/core.proto"; + +import "google/protobuf/empty.proto"; +import "Protobuf/reference/acs12.proto"; +import "aelf/options.proto"; +import "google/protobuf/wrappers.proto"; + +// The namespace of this class +option csharp_namespace = "AElf.Contracts.AllowanceContract"; + +service AllowanceContract { + + // The name of the state class the smart contract is going to use to access blockchain state + option (aelf.csharp_state) = "AElf.Contracts.AllowanceContract.AllowanceContractState"; + option (aelf.base) = "Protobuf/reference/acs12.proto"; + + rpc Initialize (google.protobuf.Empty) returns (google.protobuf.Empty){ + + } + + rpc SetAllowance (google.protobuf.Int64Value) returns (google.protobuf.Empty) { + } + + rpc GetAllowance (aelf.Address) returns (google.protobuf.Int64Value) { + option (aelf.is_view) = true; + } + + rpc useFunds (google.protobuf.Int64Value) returns (google.protobuf.Empty) { + } + + rpc IfInitialized (google.protobuf.Empty) returns (google.protobuf.BoolValue) { + option (aelf.is_view) = true; + } + + +} +``` + +- `rpc` methods define the callable functions within the contract, allowing external systems to interact with the contract's logic. +- `message` represent the structured data exchanged between the contract and external systems. + +#### Define Contract States + +The implementation of the allowance contract state inside file `src/AllowanceContractState.cs` is as follows: + +```csharp title="src/AllowanceContractState.cs" +using AElf.Sdk.CSharp.State; +using AElf.Types; + +namespace AElf.Contracts.AllowanceContract +{ + public partial class AllowanceContractState : ContractState + { + public BoolState Initialized { get; set; } + + public SingletonState

AdminAddress { get; set; } + + public SingletonState
ParentAddress { get; set; } + + public SingletonState
ChildAddress { get; set; } + + public Int32State CurrentAllowance { get; set; } + + } +} +``` + +- The `State.cs` file in an aelf blockchain smart contract holds the variables that store the contract's data, making sure this data is saved and accessible whenever the contract needs it. + +#### Implement Role Smart Contract + +The implementation of the AllowanceContract inside file `src/AllowanceContract.cs` is as follows: + +```csharp title="src/AllowanceContract.cs" +using AElf.Sdk.CSharp; +using AElf.Types; +using Google.Protobuf.WellKnownTypes; + +namespace AElf.Contracts.AllowanceContract +{ + // Contract class must inherit the base class generated from the proto file + public class AllowanceContract : AllowanceContractContainer.AllowanceContractBase + { + + private const string RoleContractAddress = "YOUR_ROLE_CONTRACT_ADDRESS"; // tDVW role contract address + + public override Empty Initialize(Empty input) + { + // Check if the contract is already initialized + Assert(State.Initialized.Value == false, "Already initialized."); + // Set the contract state + State.Initialized.Value = true; + // Set the owner address + State.AdminAddress.Value = Context.Sender; + + // Initialize the role contract + State.RoleContract.Value = Address.FromBase58(RoleContractAddress); + + return new Empty(); + } + + public override Empty SetAllowance(Int64Value input) + { + State.ParentAddress.Value = Address.FromBase58(State.RoleContract.GetParent.Call(new Empty()).Value); + + Assert(Context.Sender == State.ParentAddress.Value, "Unauthorized(Not Parent) to perform the action."); + + State.ChildAddress.Value = Address.FromBase58(State.RoleContract.GetChild.Call(new Empty()).Value); + + State.CurrentAllowance.Value = (int)(State.CurrentAllowance.Value + input.Value) ; + + return new Empty(); + } + + public override Int64Value GetAllowance(Address input) + { + + Assert(Context.Sender == State.ChildAddress.Value || Context.Sender == State.ParentAddress.Value, "Unauthorized(Not Parent or Child) to perform the action."); + + var allowance = State.CurrentAllowance.Value; + + return new Int64Value + { + Value = allowance + }; + } + + public override Empty useFunds(Int64Value input) + { + State.ChildAddress.Value = Address.FromBase58(State.RoleContract.GetChild.Call(new Empty()).Value); + + Assert(Context.Sender == State.ChildAddress.Value, "Unauthorized(Not Child) to perform the action."); + + State.CurrentAllowance.Value = (int)(State.CurrentAllowance.Value - input.Value) ; + + return new Empty(); + } + + // Function to check if the allowance contract is already initialized or not + public override BoolValue IfInitialized(Empty input) + { + return new BoolValue { Value = State.Initialized.Value }; + } + + } + +} +``` + +### Add Inter-Contract Calls + +- Now, AllowanceContract needs to create a reference with the RoleContract. First, AllowanceContract will use the `role_contract.proto` file inside the **Protobuf/reference** folder. Copy the `role_contract.proto` from the `role-contract/src/Protobuf/contract` folder. + +```csharp title="role_contract.cs" +syntax = "proto3"; + +import "aelf/core.proto"; + +import "google/protobuf/empty.proto"; +import "Protobuf/reference/acs12.proto"; +import "aelf/options.proto"; +import "google/protobuf/wrappers.proto"; + +// The namespace of this class +option csharp_namespace = "AElf.Contracts.RoleContract"; + +service RoleContract { + + // The name of the state class the smart contract is going to use to access blockchain state + option (aelf.csharp_state) = "AElf.Contracts.RoleContract.RoleContractState"; + option (aelf.base) = "Protobuf/reference/acs12.proto"; + + rpc Initialize (google.protobuf.Empty) returns (google.protobuf.Empty){ + + } + + rpc SetAdmin (aelf.Address) returns (google.protobuf.Empty) { + } + + rpc GetAdmin (google.protobuf.Empty) returns (google.protobuf.StringValue) { + option (aelf.is_view) = true; + } + + rpc SetParent (aelf.Address) returns (google.protobuf.Empty) { + } + + rpc GetParent (google.protobuf.Empty) returns (google.protobuf.StringValue) { + option (aelf.is_view) = true; + } + + rpc SetChild (aelf.Address) returns (google.protobuf.Empty) { + } + + rpc GetChild (google.protobuf.Empty) returns (google.protobuf.StringValue) { + option (aelf.is_view) = true; + } + +} +``` + +- Now, create a file inside `src` folder and name it as `ContractReferences.cs` and add the following code to establish connection between AllowanceContract and the RoleContract. + +```csharp title="ContractReferences.cs" +using AElf.Contracts.RoleContract; + +namespace AElf.Contracts.AllowanceContract +{ + public partial class AllowanceContractState + { + internal RoleContractContainer.RoleContractReferenceState RoleContract { get; set; } + } +} +``` + +## Step 2 - Building Smart Contract + +Build the new code by clicking the Build button. + +## Step 3 - Deploy Smart Contract + +Deploy the new code by clicking the Deploy button. + + +## 🎯 Conclusion + +πŸŽ‰ Congratulations on completing the **Allowance dApp** tutorial! πŸŽ‰ You’ve taken significant steps in setting up your development environment, building and deploying two smart contracts on the aelf blockchain. 🌟 + +**πŸ“š What You've Learned** + +Throughout this tutorial, you've mastered: + +- **πŸ› οΈ Setting Up Your Development Environment:** You prepared your workspace by installing and configuring all the necessary tools to kickstart your smart contract project. + +- **πŸ’» Developing the Role Smart Contract:** You created a Role contract that defines roles and permissions, including Admin, Parent, and Child roles, which allow users to interact according to assigned roles. + +- **πŸ’» Developing the Allowance Smart Contract:** You built the Allowance contract to enable Parents to set spending limits for Children, creating the foundation of a decentralized allowance management system. + +- **πŸš€ Deploying Both Smart Contracts:** You deployed both contracts to the aelf blockchain, enabling your dApp to use the features in a live environment. + +**πŸ” Final Output** + +By now, you should have: + +- πŸ“œ **Two deployed smart contracts** β€” one for managing user roles (Admin, Parent, and Child) and another for setting and managing allowances within the dApp. + +- πŸ’» **A fully functional Allowance dApp** β€” allowing users to assign roles, set allowances, and spend funds within set limits, all through a secure and intuitive interface. + +**➑️ What's Next?** + +With the foundation in place, consider exploring advanced topics: + +- **πŸ“ˆ Enhancing Smart Contract Logic:** Add new features, such as notifications for spending limits, allowance resets, or reports on spending habits. + +- **πŸ”’ Improving Security:** Ensure your dApp and smart contract are secure by implementing best practices and security measures. + +- **🌍 Exploring Cross-Chain Features:** Expand your dApp’s reach by exploring aelf’s cross-chain interoperability, enabling interactions with other blockchain networks + +You’ve now acquired the tools to take your Allowance dApp to the next level! Keep building, innovating, and exploring with aelf. πŸš€ + +Happy coding and growing your **Allowance dApp! 😊** \ No newline at end of file diff --git a/src/tutorials/expense-tracker.mdx b/src/tutorials/expense-tracker.mdx new file mode 100644 index 0000000..15908b6 --- /dev/null +++ b/src/tutorials/expense-tracker.mdx @@ -0,0 +1,274 @@ +import GenerateTemplate from '@/components/tutorial/generate-template'; + +# Expense Tracker + +**Description**: The Expense Tracker dApp is a decentralized application that enables users to manage and monitor their personal finances on the aelf blockchain. It provides a user-friendly interface for recording expenses, categorizing them, and tracking spending habits, with all data securely stored and verified on the aelf blockchain. + +**Purpose**: The purpose of the Expense Tracker dApp is to showcase the integration of personal finance management with blockchain technology, offering enhanced transparency and security for users' financial data. It serves as a practical example of decentralized applications in everyday use cases, while also providing a learning platform for smart contract development and blockchain-based financial solutions. + +**Difficulty Level**: Moderate + +## Step 1 - Develop Smart Contract + +### Adding Your Smart Contract Code + +First, generate the template: . + +Now that we have a template expense tracker project, we can customise the template to incorporate our own contract logic. +Let's start by implementing methods to handle the basic functionality of AddExpense, UpdateExpense, DeleteExpense, ListExpenses, and GetExpense and GetInitialStatus as complete within the contract state. + +#### Defining Methods and Messages + +The implementation of `expense_tracker.proto` file inside folder `src/Protobuf/contract/` is as follows: + +```csharp title="expense_tracker.proto" +syntax = "proto3"; +import "aelf/options.proto"; +import "google/protobuf/empty.proto"; +import "google/protobuf/wrappers.proto"; +import "Protobuf/reference/acs12.proto"; +// The namespace of this class +option csharp_namespace = "AElf.Contracts.ExpenseTracker"; +service ExpenseTracker { + option (aelf.csharp_state) = "AElf.Contracts.ExpenseTracker.ExpenseTrackerState"; + option (aelf.base) = "Protobuf/reference/acs12.proto"; + rpc Initialize (google.protobuf.Empty) returns (google.protobuf.Empty) { + } + rpc AddExpense (ExpenseInput) returns (google.protobuf.StringValue) { + } + rpc UpdateExpense (ExpenseUpdateInput) returns (google.protobuf.Empty) { + } + rpc DeleteExpense (google.protobuf.StringValue) returns (google.protobuf.Empty) { + } + rpc ListExpenses (google.protobuf.StringValue) returns (ExpenseList) { + option (aelf.is_view) = true; + } + rpc GetExpense (google.protobuf.StringValue) returns (Expense) { + option (aelf.is_view) = true; + } + rpc GetInitialStatus (google.protobuf.Empty) returns (google.protobuf.BoolValue) { + option (aelf.is_view) = true; + } +} + +message Expense { + string expense_id = 1; + string description = 2; + string category = 3; + int64 amount = 4; // Store as cents + string currency = 5; + string owner = 6; + int64 created_at = 7; + int64 updated_at = 8; +} + +message ExpenseInput { + string description = 1; + string category = 2; + int64 amount = 3; // Store as cents + string currency = 4; +} + +message ExpenseUpdateInput { + string expense_id = 1; + string description = 2; + string category = 3; + int64 amount = 4; // Store as cents + string currency = 5; +} + +message ExpenseList { + repeated Expense expenses = 1; +} +``` + +- `rpc` methods define the callable functions within the contract, allowing external systems to interact with the contract's logic. +- `message` represent the structured data exchanged between the contract and external systems. + +#### Define Contract States + +The implementation of the Expense Tracker smart contract state inside file `src/ExpenseTrackerState.cs` is as follows: + +```csharp title="src/ExpenseTrackerState.cs" +using AElf.Sdk.CSharp.State; +using AElf.Types; + +namespace AElf.Contracts.ExpenseTracker +{ + public class ExpenseTrackerState : ContractState + { + public BoolState Initialized { get; set; } + public SingletonState
Owner { get; set; } + public MappedState Expenses { get; set; } // Mapping of expense ID to Expense + public MappedState ExpenseExistence { get; set; } // Mapping to track expense existence + public StringState ExpenseIds { get; set; } // Concatenated string of expense IDs + public Int32State ExpenseCounter { get; set; } // Counter for generating unique IDs + } +} +``` + +- The `State.cs` file in an aelf blockchain smart contract holds the variables that store the contract's data, making sure this data is saved and accessible whenever the contract needs it. + +#### Implement Expense Tracker Smart Contract + +The implementation of the Expense Tracker smart contract inside file `src/ExpenseTracker.cs` is as follows: + +```csharp title="src/ExpenseTracker.cs" +using Google.Protobuf.WellKnownTypes; +using System.Collections.Generic; + +namespace AElf.Contracts.ExpenseTracker +{ + public class ExpenseTracker : ExpenseTrackerContainer.ExpenseTrackerBase + { + public override Empty Initialize(Empty input) + { + if (State.Initialized.Value) + { + return new Empty(); + } + State.Initialized.Value = true; + State.Owner.Value = Context.Sender; + State.ExpenseIds.Value = ""; + State.ExpenseCounter.Value = 0; + return new Empty(); + } + + public override StringValue AddExpense(ExpenseInput input) + { + if (!State.Initialized.Value) + { + return new StringValue { Value = "Contract not initialized." }; + } + var expenseId = (State.ExpenseCounter.Value + 1).ToString(); + State.ExpenseCounter.Value++; + var timestamp = Context.CurrentBlockTime.Seconds; + State.Expenses[expenseId] = new Expense + { + ExpenseId = expenseId, + Description = input.Description, + Category = input.Category, + Amount = input.Amount, // Now using int64 for amount + Currency = input.Currency, + CreatedAt = timestamp, + UpdatedAt = timestamp, + Owner = Context.Sender.ToString().Trim('"'), + }; + State.ExpenseExistence[expenseId] = true; + + var existingExpenseIds = State.ExpenseIds.Value; + existingExpenseIds += string.IsNullOrEmpty(existingExpenseIds) ? expenseId : $",{expenseId}"; + State.ExpenseIds.Value = existingExpenseIds; + + return new StringValue { Value = expenseId }; + } + + public override Empty UpdateExpense(ExpenseUpdateInput input) + { + var expense = State.Expenses[input.ExpenseId]; + if (expense == null) + { + return new Empty(); // Handle case if expense doesn't exist + } + expense.Description = input.Description ?? expense.Description; + expense.Category = input.Category ?? expense.Category; + expense.Amount = input.Amount != 0 ? input.Amount : expense.Amount; // Now using int64 for amount + expense.Currency = input.Currency ?? expense.Currency; + expense.UpdatedAt = Context.CurrentBlockTime.Seconds; + + State.Expenses[input.ExpenseId] = expense; + return new Empty(); + } + + public override Empty DeleteExpense(StringValue input) + { + State.Expenses.Remove(input.Value); + State.ExpenseExistence.Remove(input.Value); + + var existingExpenseIds = State.ExpenseIds.Value.Split(','); + var newExpenseIds = new List(existingExpenseIds.Length); + foreach (var expenseId in existingExpenseIds) + { + if (expenseId != input.Value) + { + newExpenseIds.Add(expenseId); + } + } + State.ExpenseIds.Value = string.Join(",", newExpenseIds); + + return new Empty(); + } + + public override ExpenseList ListExpenses(StringValue input) + { + var owner = input.Value; // Get the owner value from the input + var expenseList = new ExpenseList(); + var expenseIds = State.ExpenseIds.Value.Split(','); + foreach (var expenseId in expenseIds) + { + var expense = State.Expenses[expenseId]; + if (expense != null && expense.Owner == owner) // Filter expenses by owner + { + expenseList.Expenses.Add(expense); + } + } + return expenseList; + } + + public override Expense GetExpense(StringValue input) + { + var expense = State.Expenses[input.Value]; + if (expense == null) + { + return new Expense { ExpenseId = input.Value, Description = "Expense not found." }; + } + return expense; + } + + public override BoolValue GetInitialStatus(Empty input) + { + return new BoolValue { Value = State.Initialized.Value }; + } + } +} +``` + +## Step 2 - Building Smart Contract + +Build the new code by clicking the Build button. + +## Step 3 - Deploy Smart Contract + +Deploy the new code by clicking the Deploy button. + +## 🎯 Conclusion + +πŸŽ‰ Congratulations on completing the **Expense Tracker dApp** tutorial! πŸŽ‰ You've accomplished critical milestones, from setting up your development environment to creating, deploying, and interacting with your Expense Tracker smart contract on the aelf blockchain. 🌟 + +**πŸ“š What You've Learned** + +Throughout this tutorial, you've gained hands-on experience with: + +- **πŸ› οΈ Setting Up Your Development Environment:** You successfully installed and configured all necessary tools to start developing smart contracts on the aelf blockchain. + +- **πŸ’» Developing Your Smart Contract:** You crafted the essential logic for the Expense Tracker, building a contract to manage tasks like adding, updating, and deleting expenses while keeping a record of all transactions. + +- **πŸš€ Deploying the Smart Contract:** You deployed your Expense Tracker contract on the aelf blockchain, ensuring it was live and operational for real-world use. + +**πŸ” Final Output** + +By now, you should have: + +- πŸ“œ A deployed smart contract that governs the logic of managing expenses and storing financial data on the blockchain. + +**➑️ What's Next?** + +Now that you've built the foundation of your Expense Tracker dApp, consider extending it with advanced features: + +- **πŸ”’ Enhance Security:** Strengthen your dApp by applying smart contract security best practices to ensure that users' financial data remains private and secure. + +- **🌍 Exploring Cross-Chain Capabilities:** Explore aelf’s cross-chain capabilities to integrate your dApp with other blockchain networks and allow users to manage their finances across multiple chains. + +You've taken a significant step toward mastering blockchain development with your Expense Tracker dApp. Now, you’re ready to continue innovating and expanding your decentralized applications on the aelf platform. πŸš€ + +Happy coding and expanding your **Expense Tracker dApp!** 😊 diff --git a/src/tutorials/role.mdx b/src/tutorials/role.mdx new file mode 100644 index 0000000..9c8becf --- /dev/null +++ b/src/tutorials/role.mdx @@ -0,0 +1,210 @@ +import GenerateTemplate from '@/components/tutorial/generate-template'; +import { Button } from "@/components/ui/button"; + +# Allowance (Role Contract) + +**Description**: This project demonstrates the integration of two smart contracts, RoleContract and AllowanceContract, focusing on role-based access and fund management. It highlights **inter-contract calls**, where the allowance logic depends on roles retrieved dynamically from the role contract. + +**Purpose**: The purpose of this dApp is to teach state management, access control, and inter smart contract calls on the aelf blockchain. This example models how multi-contract systems work together and call each other to securely manage roles and funds in a blockchain environment. + +**Difficulty Level**: Moderate + +## Step 1 - Develop Role Smart Contract + +### Adding Your Smart Contract Code + +First, generate the template: . + +Now that we have a RoleContract template, we can customize it to implement role-based permissions for various use cases. Below are the core functionalities of the RoleContract: + +1. Set Admin: Allows the current admin to assign a new admin address. +2. Set Parent/Child: Grants parent or child roles with appropriate permissions. +3. Retrieve Role Addresses: Methods to fetch the current admin, parent, and child addresses. +4. Role-based Access Control: Ensures only admins or parents can assign roles using access validation logic. + +This template provides a foundation for building secure systems where role management and hierarchical permissions are essential. + +#### Defining Methods and Messages + +The implementation of file `src/Protobuf/contract/role_contract.proto` is as follows: + +```csharp title="role_contract.proto" +syntax = "proto3"; + +import "aelf/core.proto"; + +import "google/protobuf/empty.proto"; +import "Protobuf/reference/acs12.proto"; +import "aelf/options.proto"; +import "google/protobuf/wrappers.proto"; + +// The namespace of this class +option csharp_namespace = "AElf.Contracts.RoleContract"; + +service RoleContract { + + // The name of the state class the smart contract is going to use to access blockchain state + option (aelf.csharp_state) = "AElf.Contracts.RoleContract.RoleContractState"; + option (aelf.base) = "Protobuf/reference/acs12.proto"; + + rpc Initialize (google.protobuf.Empty) returns (google.protobuf.Empty){ + + } + + rpc SetAdmin (aelf.Address) returns (google.protobuf.Empty) { + } + + rpc GetAdmin (google.protobuf.Empty) returns (google.protobuf.StringValue) { + option (aelf.is_view) = true; + } + + rpc SetParent (aelf.Address) returns (google.protobuf.Empty) { + } + + rpc GetParent (google.protobuf.Empty) returns (google.protobuf.StringValue) { + option (aelf.is_view) = true; + } + + rpc SetChild (aelf.Address) returns (google.protobuf.Empty) { + } + + rpc GetChild (google.protobuf.Empty) returns (google.protobuf.StringValue) { + option (aelf.is_view) = true; + } + +} +``` + +- `rpc` methods define the callable functions within the contract, allowing external systems to interact with the contract's logic. +- `message` represent the structured data exchanged between the contract and external systems. + +#### Define Contract States + +The implementation of the role contract's state inside file `src/RoleContractState.cs` is as follows: + +```csharp title="src/RoleContractState.cs" +using AElf.Sdk.CSharp.State; +using AElf.Types; + +namespace AElf.Contracts.RoleContract +{ + public class RoleContractState : ContractState + { + public BoolState Initialized { get; set; } + + public SingletonState
AdminAddress { get; set; } + + public SingletonState
ParentAddress { get; set; } + + public SingletonState
ChildAddress { get; set; } + + } +} +``` + +- The `State.cs` file in an aelf blockchain smart contract holds the variables that store the contract's data, making sure this data is saved and accessible whenever the contract needs it. + +#### Implement Role Smart Contract + +The implementation of the role contract inside file `src/RoleContract.cs` is as follows: + +```csharp title="src/RoleContract.cs" +using AElf.Sdk.CSharp; +using AElf.Types; +using Google.Protobuf.WellKnownTypes; + +namespace AElf.Contracts.RoleContract +{ + public class RoleContract : RoleContractContainer.RoleContractBase + { + + private const string DefaultAdmin = "ENTER_YOUR_PORTKEY_ADDRESS"; + + public override Empty Initialize(Empty input) + { + if (State.Initialized.Value) + { + return new Empty(); + } + State.Initialized.Value = true; + State.AdminAddress.Value = Context.Sender; //Can set Deployer as admin + State.AdminAddress.Value = Address.FromBase58(DefaultAdmin); // Can set YOUR_PORTKEY_ADDRESS as admin + return new Empty(); + } + + public override Empty SetAdmin(Address input) + { + AssertIsAdmin(); + + // Set the new admin address + State.AdminAddress.Value = input; + + return new Empty(); + } + + public override Empty SetParent(Address input) + { + AssertIsAdminOrParent(); + + // Set the parent address + State.ParentAddress.Value = input; + + return new Empty(); + } + + public override Empty SetChild(Address input) + { + AssertIsAdminOrParent(); + + // Set the chlid address + State.ChildAddress.Value = input; + + return new Empty(); + } + + + // Get the current admin address + public override StringValue GetAdmin(Empty input) + { + return State.AdminAddress.Value == null ? new StringValue() : new StringValue {Value = State.AdminAddress.Value.ToBase58()}; + } + + // Get the current parent address + public override StringValue GetParent(Empty input) + { + return State.ParentAddress.Value == null ? new StringValue() : new StringValue {Value = State.ParentAddress.Value.ToBase58()}; + } + + // Get the current child address + public override StringValue GetChild(Empty input) + { + return State.ChildAddress.Value == null ? new StringValue() : new StringValue {Value = State.ChildAddress.Value.ToBase58()}; + } + + + private void AssertIsAdmin() + { + Assert(Context.Sender == State.AdminAddress.Value, "Unauthorized(Not Admin) to perform the action."); + } + + private void AssertIsAdminOrParent() + { + Assert(Context.Sender == State.AdminAddress.Value || Context.Sender == State.ParentAddress.Value, "Unauthorized (Not Parent or Admin) to perform the action."); + } + + + } +} +``` + +## Step 2 - Building Smart Contract + +Build the new code by clicking the Build button. + +## Step 3 - Deploy Smart Contract + +Deploy the new code by clicking the Deploy button. + +Now it's time to create Allowance contract and use Role contract inside it so let's do that in next step : + + \ No newline at end of file diff --git a/src/tutorials/single-pool-staking.mdx b/src/tutorials/single-pool-staking.mdx new file mode 100644 index 0000000..e494024 --- /dev/null +++ b/src/tutorials/single-pool-staking.mdx @@ -0,0 +1,341 @@ +import GenerateTemplate from '@/components/tutorial/generate-template'; + +# Single Pool Staking + +**Description**: The Single Pool Staking dApp is a decentralized application built on the aelf blockchain that allows users to stake their tokens in a single staking pool. Users can earn rewards based on the amount and duration of their staked assets, with staking and reward distribution processes fully automated and secured by blockchain technology. The dApp offers a transparent and simple interface for users to monitor their staked assets and track reward accumulation over time. + +**Purpose**: The Single Pool Staking dApp aims to demonstrate the seamless integration of staking mechanisms with blockchain, providing users with a secure, transparent, and efficient way to grow their holdings. It serves as an educational tool for learning about staking contracts and their role in decentralized finance (DeFi), while showcasing the potential of blockchain technology for creating decentralized financial services that offer fairness and trustless reward distribution. + +**Difficulty Level**: Moderate + +## Step 1 - Develop Smart Contract + +### Adding Your Smart Contract Code + +First, generate the template: + +Now that we have a template Single Pool Staking project, we can customise the template to incorporate our own contract logic. Let's start by implementing methods to handle the basic functionality like deposit tokens to the staking pool, withdraw tokens from the staking pool, withdrawing tokens before the lock(stake) period ends (forceWithdraw), get the reward amount for an address from the pool, fetch all the deposits linked to a user and retrieve the total staked amount in the contract. Single Pool Staking dApp includes the below functionalities like: + +1. **Deposit**: Allows users to stake tokens, update the total staked amount and the deposit gets linked to the user. +2. **Withdraw**: Allows users to withdraw tokens and rewards after the lock period ends. +3. **ForceWithdraw**: Allows users to withdraw tokens before the lock period ends without rewards. +4. **GetReward**: Retrieves the reward amount earned from a specific deposit. +5. **GetDeposits**: Lists all deposits linked to a user. +6. **GetTotalStakedAmount**: Retrieves the total staked amount + +#### Defining Methods and Messages + +The implementation of `single_pool_staking.proto` file inside folder `src/Protobuf/contract/` is as follows: + +```csharp title="single_pool_staking.proto" +syntax = "proto3"; + +import "aelf/core.proto"; +import "aelf/options.proto"; +import "google/protobuf/empty.proto"; +import "Protobuf/reference/acs12.proto"; +import "google/protobuf/wrappers.proto"; + +option csharp_namespace = "AElf.Contracts.StakingContract"; + +service StakingContract { + option (aelf.csharp_state) = "AElf.Contracts.StakingContract.StakingContractState"; + option (aelf.base) = "Protobuf/reference/acs12.proto"; + + rpc Initialize (InitializeInput) returns (google.protobuf.Empty); + rpc Deposit (DepositInput) returns (google.protobuf.StringValue); + rpc Withdraw (WithdrawInput) returns (google.protobuf.Empty); + rpc ForceWithdraw (google.protobuf.StringValue) returns (google.protobuf.Empty); + + rpc GetReward (google.protobuf.StringValue) returns (google.protobuf.Int64Value) { + option (aelf.is_view) = true; + } + rpc GetDeposits (google.protobuf.StringValue) returns (DepositList) { + option (aelf.is_view) = true; + } + + // New functions + rpc IfInitialized (google.protobuf.Empty) returns (google.protobuf.BoolValue) { + option (aelf.is_view) = true; + } + rpc GetTotalStakedAmount (google.protobuf.Empty) returns (google.protobuf.Int64Value) { + option (aelf.is_view) = true; + } +} + +message DepositInput { + string token_symbol = 1; + int64 amount = 2; + int64 lock_time = 3; +} + +message InitializeInput { + aelf.Address token_contract_address = 1; +} + +message WithdrawInput { + string deposit_id = 1; +} + +message TransferInput { + aelf.Address to = 1; + string symbol = 2; + int64 amount = 3; + string memo = 4; // Add this field +} + +message StringList { + repeated string values = 1; +} + +message Deposit { + string deposit_id = 1; + string address = 2; + string token_symbol = 3; // The specific FT token symbol + int64 amount = 4; + int64 lock_time = 5; + int64 deposit_time = 6; +} + +message DepositList { + repeated Deposit deposits = 1; +} +``` + +- `rpc` methods define the callable functions within the contract, allowing external systems to interact with the contract's logic. +- `message` represent the structured data exchanged between the contract and external systems. + +#### Define Contract States + +The implementation of the Single Pool Staking smart contract state inside file `src/SinglePoolStakingState.cs` is as follows: + +```csharp title="src/SinglePoolStakingState.cs" +using AElf.Sdk.CSharp.State; +using AElf.Types; +using AElf.Contracts.MultiToken; + +namespace AElf.Contracts.StakingContract +{ + public class StakingContractState : ContractState + { + public BoolState Initialized { get; set; } + public SingletonState
Owner { get; set; } + public MappedState Deposits { get; set; } // Mapping from deposit ID to Deposit + public MappedState UserDeposits { get; set; } // User to deposit IDs + public Int32State DepositCounter { get; set; } + public Int64State TotalStakedAmount { get; set; } // New state to track total staked amount + + internal TokenContractContainer.TokenContractReferenceState TokenContract { get; set; } + } +} +``` + +- The `State.cs` file in an aelf blockchain smart contract holds the variables that store the contract's data, making sure this data is saved and accessible whenever the contract needs it. + +#### Implement Single Pool Staking Smart Contract + +The implementation of the Single Pool Staking smart contract inside file `src/SinglePoolStaking.cs` is as follows: + +```csharp title="src/SinglePoolStaking.cs" +using Google.Protobuf.WellKnownTypes; +using AElf.Types; +using System.Collections.Generic; +using AElf.Contracts.MultiToken; + + +namespace AElf.Contracts.StakingContract +{ + public class StakingContract : StakingContractContainer.StakingContractBase + { + private const int RewardRate = 10; // 10% reward + + public override Empty Initialize(InitializeInput input) + { + if (State.Initialized.Value) + return new Empty(); + + State.Initialized.Value = true; + State.Owner.Value = Context.Sender; + State.DepositCounter.Value = 0; + State.TotalStakedAmount.Value = 0; // Initialize total staked amount + + State.TokenContract.Value = input.TokenContractAddress; + + return new Empty(); + } + + public override StringValue Deposit(DepositInput input) + { + var depositId = (State.DepositCounter.Value + 1).ToString(); + State.DepositCounter.Value++; + + var deposit = new Deposit + { + DepositId = depositId, + Address = Context.Sender.ToString(), + TokenSymbol = input.TokenSymbol, + Amount = input.Amount, + LockTime = input.LockTime, + DepositTime = Context.CurrentBlockTime.Seconds + }; + + State.Deposits[depositId] = deposit; + + var userDeposits = State.UserDeposits[Context.Sender] ?? new StringList(); + userDeposits.Values.Add(depositId); + + State.UserDeposits[Context.Sender] = userDeposits; + + State.TotalStakedAmount.Value += input.Amount; // Update total staked amount + + return new StringValue { Value = depositId }; + } + + public override Empty Withdraw(WithdrawInput input) + { + var deposit = State.Deposits[input.DepositId]; + Assert(deposit != null, "Deposit not found."); + Assert(deposit.Address == Context.Sender.ToString(), "Unauthorized."); + Assert(Context.CurrentBlockTime.Seconds >= deposit.DepositTime + deposit.LockTime, "Lock period not over."); + + var reward = CalculateReward(deposit.Amount); + + TransferFromContract(deposit.TokenSymbol, Context.Sender, deposit.Amount + reward); + + State.TotalStakedAmount.Value -= deposit.Amount; // Update total staked amount + + RemoveDeposit(deposit.DepositId); + return new Empty(); + } + + public override Empty ForceWithdraw(StringValue input) + { + var deposit = State.Deposits[input.Value]; + Assert(deposit != null, "Deposit not found."); + Assert(deposit.Address == Context.Sender.ToString(), "Unauthorized."); + + TransferFromContract(deposit.TokenSymbol, Context.Sender, deposit.Amount); + + State.TotalStakedAmount.Value -= deposit.Amount; // Update total staked amount + + RemoveDeposit(deposit.DepositId); + return new Empty(); + } + + public override Int64Value GetReward(StringValue input) + { + var deposit = State.Deposits[input.Value]; + Assert(deposit != null, "Deposit not found."); + return new Int64Value { Value = CalculateReward(deposit.Amount) }; + } + + public override DepositList GetDeposits(StringValue input) + { + var deposits = State.UserDeposits[Address.FromBase58(input.Value)]; + var depositList = new DepositList(); + + foreach (var depositId in deposits.Values) + { + var deposit = State.Deposits[depositId]; + if (deposit != null) + { + depositList.Deposits.Add(deposit); + } + } + + return depositList; + } + + // New function to check if initialized + public override BoolValue IfInitialized(Empty input) + { + return new BoolValue { Value = State.Initialized.Value }; + } + + // New function to get the total staked amount + public override Int64Value GetTotalStakedAmount(Empty input) + { + return new Int64Value { Value = State.TotalStakedAmount.Value }; + } + + private long CalculateReward(long amount) + { + return (amount * RewardRate) / 100; + } + + private void TransferFromContract(string symbol, Address to, long amount) + { + var virtualAddressHash = GetVirtualAddressHash(Context.Self, symbol); + + State.TokenContract.TransferFrom.Send( + new TransferFromInput + { + Symbol = symbol, + Amount = amount, + From = Context.Self, + Memo = "Transfer from Staking Contract", + To = to + }); + } + + private static Hash GetVirtualAddressHash(Address contractAddress, string symbol) + { + return HashHelper.ConcatAndCompute(HashHelper.ComputeFrom(contractAddress), HashHelper.ComputeFrom(symbol)); + } + + private Address GetVirtualAddress(Hash virtualAddressHash) + { + return Context.ConvertVirtualAddressToContractAddress(virtualAddressHash); + } + + private void RemoveDeposit(string depositId) + { + var deposit = State.Deposits[depositId]; + State.Deposits.Remove(depositId); + + var userDeposits = State.UserDeposits[Address.FromBase58(deposit.Address)]; + userDeposits.Values.Remove(depositId); + + State.UserDeposits[Address.FromBase58(deposit.Address)] = userDeposits; + } + } +} +``` + +## Step 2 - Building Smart Contract + +Build the new code by clicking the Build button. + +## Step 3 - Deploy Smart Contract + +Deploy the new code by clicking the Deploy button. + +## 🎯 Conclusion + +🎊 Congratulations on setting up your development environment and interacting with both the multi-token and staking smart contracts! 🎊 You've now built a solid foundation for handling advanced token operations and staking functionalities on the aelf blockchain. 🌟 + +**πŸ“š What You've Learned** + +Throughout this section, you've gained vital skills in: + + - **πŸ’» Developing Your Smart Contract:** You built the core logic of your Single Pool Staking, writing and compiling the smart contract. + +**πŸ” Final Output** + +By now, you should have: + + - πŸ“œ Successfully built smart contract of Single Pool Staking. + +**➑️ What's Next?** + +With a comprehensive understanding of token creation, staking, and contract interaction, you're prepared to explore further aspects of blockchain development. Consider diving into: + + - **πŸ“Š Advanced Smart Contract Logic**: Add more complex features and security to your contracts. + + - **Enhanced Staking Protocols**: Learn about advanced staking mechanisms and rewards structures to elevate your dApp. + + - **🌐 Cross-Chain Interoperability**: Explore how aelf’s cross-chain capabilities enable seamless communication between different blockchains. + +Keep experimenting and innovating with aelf! Your journey into decentralized finance and blockchain development is just getting started. πŸš€ + +Happy coding and building on the aelf blockchain! 😊 diff --git a/src/tutorials/tic-tac-toe.mdx b/src/tutorials/tic-tac-toe.mdx new file mode 100644 index 0000000..86e2c63 --- /dev/null +++ b/src/tutorials/tic-tac-toe.mdx @@ -0,0 +1,315 @@ +import GenerateTemplate from '@/components/tutorial/generate-template'; + +# Tic Tac Toe + +**Description**: The Tic-Tac-Toe dApp is a decentralized gamify application that allows users to play the classic game of Tic-Tac-Toe on the aelf blockchain. It offers a simple and interactive interface where two players can compete against each other, with game data securely stored and verified on the aelf blockchain. + +**Purpose**: The purpose of the Tic-Tac-Toe gamify dApp is to demonstrate how traditional games can be implemented on the aelf blockchain, ensuring transparency and immutability of game outcomes. It serves as an educational tool for learning smart contract development and the basics of decentralized application functionality. + +**Difficulty Level**: Moderate + +## Step 1 - Develop Smart Contract + +### Adding Your Smart Contract Code + +First, generate the template: + +#### Defining Methods and Messages + +The implementation of `tic_tac_toe.proto` file inside folder `src/Protobuf/contract/` is as follows: + +```csharp title="tic_tac_toe.proto" +syntax = "proto3"; + +import "aelf/options.proto"; +import "google/protobuf/empty.proto"; +import "google/protobuf/wrappers.proto"; +import "Protobuf/reference/acs12.proto"; +// The namespace of this class +option csharp_namespace = "AElf.Contracts.TicTacToe"; + +service TicTacToe { + // The name of the state class the smart contract is going to use to access blockchain state + option (aelf.csharp_state) = "AElf.Contracts.TicTacToe.TicTacToeState"; + option (aelf.base) = "Protobuf/reference/acs12.proto"; + + rpc Initialize (google.protobuf.Empty) returns (google.protobuf.Empty) {} + + rpc StartGame (google.protobuf.Empty) returns (google.protobuf.StringValue) {} + + rpc MakeMove (MoveInput) returns (google.protobuf.StringValue) {} + + rpc GetBoard (google.protobuf.Empty) returns (Board) { + option (aelf.is_view) = true; + } + + rpc GetGameStatus (google.protobuf.Empty) returns (GameStatus) { + option (aelf.is_view) = true; + } + rpc GetInitialStatus(google.protobuf.Empty) returns(google.protobuf.BoolValue){ + option (aelf.is_view) = true; + } +} + +// Input for making a move +message MoveInput { + int32 x = 1; + int32 y = 2; +} + +// A message to represent the game board +message Board { + repeated string rows = 1; +} + +// A message to represent the game status +message GameStatus { + string status = 1; + string winner = 2; +} +``` + +- `rpc` methods define the callable functions within the contract, allowing external systems to interact with the contract's logic. +- `message` represent the structured data exchanged between the contract and external systems. + +#### Define Contract States + +The implementation of the Tic Tac Toe app state inside file `src/TicTacToeState.cs` is as follows: + +```csharp title="src/TicTacToeState.cs" +using AElf.Sdk.CSharp.State; +using AElf.Types; + +namespace AElf.Contracts.TicTacToe +{ + // The state class is access the blockchain state + public partial class TicTacToeState : ContractState + { + // A state to check if contract is initialized + public BoolState Initialized { get; set; } + public SingletonState
Owner { get; set; } + public StringState Board { get; set; } // Board state as a concatenated string + public StringState CurrentPlayer { get; set; } // X or O + public StringState GameStatus { get; set; } // ongoing, finished, draw + public StringState Winner { get; set; } // X or O + } +} +``` + +- The `State.cs` file in an aelf blockchain smart contract holds the variables that store the contract's data, making sure this data is saved and accessible whenever the contract needs it. + +#### Implement Tic Tac Toe Smart Contract + +The implementation of the Tic Tac Toe App smart contract inside file `src/TicTacToe.cs` is as follows: + +```csharp title="src/TicTacToe.cs" +using Google.Protobuf.WellKnownTypes; +using System.Collections.Generic; + +namespace AElf.Contracts.TicTacToe +{ + // Contract class must inherit the base class generated from the proto file + public class TicTacToe : TicTacToeContainer.TicTacToeBase + { + private const int BoardSize = 3; + + public override Empty Initialize(Empty input) + { + if (State.Initialized.Value) + { + return new Empty(); + } + State.Initialized.Value = true; + State.Owner.Value = Context.Sender; + ResetBoard(); + return new Empty(); + } + + public override StringValue StartGame(Empty input) + { + if (!State.Initialized.Value) + { + return new StringValue { Value = "Contract not initialized." }; + } + + ResetBoard(); + State.CurrentPlayer.Value = "X"; + State.GameStatus.Value = "ongoing"; + State.Winner.Value = ""; + return new StringValue { Value = "Game started. Player X's turn." }; + } + + public override StringValue MakeMove(MoveInput input) + { + if (State.GameStatus.Value != "ongoing") + { + return new StringValue { Value = "Game is not ongoing." }; + } + + var board = GetBoardArray(); + if (board[input.X, input.Y] != "") + { + return new StringValue { Value = "Invalid move. Cell is already occupied." }; + } + + board[input.X, input.Y] = State.CurrentPlayer.Value; + SaveBoard(board); + + if (CheckWinner()) + { + State.GameStatus.Value = "finished"; + State.Winner.Value = State.CurrentPlayer.Value; + return new StringValue { Value = $"Player {State.CurrentPlayer.Value} wins!" }; + } + + if (IsBoardFull(board)) + { + State.GameStatus.Value = "draw"; + return new StringValue { Value = "It's a draw!" }; + } + + State.CurrentPlayer.Value = State.CurrentPlayer.Value == "X" ? "O" : "X"; + return new StringValue { Value = $"Player {State.CurrentPlayer.Value}'s turn." }; + } + + public override Board GetBoard(Empty input) + { + var board = GetBoardArray(); + var boardMessage = new Board(); + + for (var i = 0; i < 3; i++) // Adjusted to 3 for a 3x3 Tic-Tac-Toe board + { + var row = new List(); + for (var j = 0; j < 3; j++) + { + row.Add(board[i, j]); + } + boardMessage.Rows.Add(string.Join(",", row)); + } + + return boardMessage; + } + + public override GameStatus GetGameStatus(Empty input) + { + return new GameStatus + { + Status = State.GameStatus.Value, + Winner = State.Winner.Value + }; + } + + public override BoolValue GetInitialStatus(Empty input){ + return new BoolValue { Value = State.Initialized.Value }; + } + + private void ResetBoard() + { + var emptyBoard = new string[BoardSize, BoardSize]; + for (var i = 0; i < BoardSize; i++) + { + for (var j = 0; j < BoardSize; j++) + { + emptyBoard[i, j] = ""; + } + } + SaveBoard(emptyBoard); + } + + private string[,] GetBoardArray() + { + var boardString = State.Board.Value; + var rows = boardString.Split(';'); + var board = new string[BoardSize, BoardSize]; + for (var i = 0; i < BoardSize; i++) + { + var cells = rows[i].Split(','); + for (var j = 0; j < BoardSize; j++) + { + board[i, j] = cells[j]; + } + } + return board; + } + + private void SaveBoard(string[,] board) + { + var rows = new string[BoardSize]; + for (var i = 0; i < BoardSize; i++) + { + rows[i] = string.Join(",", board[i, 0], board[i, 1], board[i, 2]); + } + State.Board.Value = string.Join(";", rows); + } + + private bool CheckWinner() + { + var board = GetBoardArray(); + var player = State.CurrentPlayer.Value; + + for (var i = 0; i < BoardSize; i++) + { + if (board[i, 0] == player && board[i, 1] == player && board[i, 2] == player) return true; + if (board[0, i] == player && board[1, i] == player && board[2, i] == player) return true; + } + + if (board[0, 0] == player && board[1, 1] == player && board[2, 2] == player) return true; + if (board[0, 2] == player && board[1, 1] == player && board[2, 0] == player) return true; + + return false; + } + + private bool IsBoardFull(string[,] board) + { + for (var i = 0; i < BoardSize; i++) + { + for (var j = 0; j < BoardSize; j++) + { + if (board[i, j] == "") return false; + } + } + return true; + } + } +} +``` + +## Step 2 - Building Smart Contract + +Build the new code by clicking the Build button. + +## Step 3 - Deploy Smart Contract + +Deploy the new code by clicking the Deploy button. + +## 🎯 Conclusion + +πŸŽ‰ Congratulations on successfully completing the **Tic Tac Toe dApp** tutorial! πŸŽ‰ You've achieved significant milestones, from setting up your development environment to deploying and interacting with your Tic-Tac-Toe smart contract on the aelf blockchain. 🌟 + +**πŸ“š What You've Learned** + +Throughout this tutorial, you've mastered: + + - **πŸ› οΈ Setting Up Your Development Environment:** You equipped your workspace by installing and configuring all the necessary tools to get your smart contract project off the ground. + + - **πŸ’» Developing Your Smart Contract:** You built the core logic of your Tic Tac Toe game, writing and compiling the smart contract that manages game states, moves, and outcomes. + +**πŸ” Final Output** + +By now, you should have: + + - πŸ“œ A deployed Tic-Tac-Toe smart contract that governs the game's rules and manages players' moves on the blockchain. + +**➑️ What's Next?** + +With the foundation laid, consider advancing your Tic-Tac-Toe dApp with more sophisticated features: + + - **πŸ“ˆ Enhancing Game Logic:** Add more features like AI opponents, multiplayer functionality, or scoring systems to make the game more engaging. + + - **πŸ”’ Improving Security:** Secure your game by applying best practices in smart contract security to protect users' data and gameplay integrity. + + - **🌍 Exploring Cross-Chain Capabilities:** Expand your dApp’s reach by exploring aelf’s cross-chain interoperability, enabling interactions with other blockchains. + +Blockchain technology and decentralized applications offer limitless possibilities. With your Tic-Tac-Toe dApp, you're now poised to continue innovating and exploring new horizons with aelf. πŸš€ + +Happy coding and expanding your **Tic-Tac-Toe dApp!** 😊