Skip to content
geeksforgeeks
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Tutorials
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
  • Practice
    • Build your AI Agent
    • GfG 160
    • Problem of the Day
    • Practice Coding Problems
    • GfG SDE Sheet
  • Contests
    • Accenture Hackathon (Ending Soon!)
    • GfG Weekly [Rated Contest]
    • Job-A-Thon Hiring Challenge
    • All Contests and Events
  • Solidity Introduction
  • Solidity - Environment Setup
  • Solidity - Basic Syntax
  • Solidity - Types
  • Solidity - Operators
  • Solidity - Mappings
  • Solidity - Functions
  • Solidity - Fallback Function
  • Mathematical Functions
  • Solidity - Inheritance
  • Solidity - Constructors
  • Solidity - Interfaces
  • Solidity - Events
  • Solidity - Error Handling
Open In App
Next Article:
Flutter and Blockchain - Hello World Dapp
Next article icon

Build a To-do List Web Application Powered by Blockchain

Last Updated : 24 Apr, 2023
Comments
Improve
Suggest changes
Like Article
Like
Report

Here, we are going to build a to-do list application that will save the data in the blockchain. The blockchain part of this application can also be understood as a database. First, we’ll create a smart contract and subsequently the web application itself. We’ll use Bloc as the application name but first, let’s look at the components.

Components in Bloc Application

  • Ganache- A local Ethereum blockchain.
  • Web3 JS- For the application to be able to communicate to the blockchain.
  • Bootstrap- For the application’s front end.
  • Solidity- For compilation smart contract.
  • JQuery- For DOM manipulation.

What is a Smart Contract?

To be able to communicate with blockchain we’ll need to write a smart contract. A smart contract can also use understood as a backend script that contacts the blockchain. The smart contract will allow us to store our to-do list tasks in the blockchain.

To write and develop the smart contract we will use the REMIX IDE. 

Note: Make sure you are using the Http site instead of HTTPS. The HTTP site will allow us to deploy our smart contract in our local blockchain.

Click on the plus icon to create a bloc.sol file.

Create .sol file

Create bloc.sol file

The smart contract first line must declare the SPDX-License-Identifier and solidity version to compile our smart contract to do that we’ll write the following:

// SPDX-License-Identifier: GPL-3.0  pragma solidity >=0.8.0 <0.9.0;  

To tell the compiler about our smart contract we’ll define a contract block.  A contract like a class in OOPs which contains all the fields and methods:

// SPDX-License-Identifier: GPL-3.0  pragma solidity >=0.8.0 <0.9.0;  contract Bloc{ }  

To store the task we need to do the following:

1. Create a struct for your task: Struct allows for creating a user-defined datatype. It will have a string as a task and a boolean to tell whether the task is completed or not.

// SPDX-License-Identifier: GPL-3.0  pragma solidity >=0.8.0 <0.9.0;  contract Bloc{  struct Task{     string task;        bool isDone;    }  }  

2. Create a mapping to store our task array with an associated user address: Mapping is like a Hash Table here we are creating an address as a key and the value will be an array of task struct. Set this mapping as private for the access modifier. The address is a data type in solidity which stress the account address.

// SPDX-License-Identifier: GPL-3.0  pragma solidity >=0.8.0 <0.9.0;   contract Bloc{     struct Task{     string task;        bool isDone;    }    mapping (address => Task[]) private Users; }

Methods to manipulate our task in the contract:

1. Create Task: This method will create a task.

  • The addTask method takes in a string as an argument.
  • calldata set the data location for the string argument.
  • external makes the method available when called through web3js.
  • msg.sender gives us the address of the user calling the method.
  • The push method to add the task to the mapping.
// SPDX-License-Identifier: GPL-3.0  pragma solidity >=0.8.0 <0.9.0; /// @title A contract for demonstrate how to build a to-do list application /// @notice For now, this contract just show how to add the task  contract Bloc{     struct Task{     string task;        bool isDone;    }        mapping (address => Task[]) private Users;     function addTask(string calldata _task) external{       Users[msg.sender].push(Task({           task:_task,           isDone:false       }));    }  }

2. Read Task: This method helps to read the value in the task.

  • To return Task struct from getTask method we need to add line 2.
  • The getTask method takes in the task index and gives the task.
  • memory is the data location for Task to be returned.
  • view tells that the  function doesn’t modifier state of the blockchain.
// SPDX-License-Identifier: GPL-3.0  pragma solidity >=0.8.0 <0.9.0; /// @title A contract for demonstrate how to build a to-do list application /// @notice For now, this contract just show how to get the task contract Bloc{     struct Task{     string task;        bool isDone;    }        mapping (address => Task[]) private Users;     function addTask(string calldata _task) external{       Users[msg.sender].push(Task({           task:_task,           isDone:false       }));    }        function getTask(uint _taskIndex) external view returns (Task memory){        Task storage task = Users[msg.sender][_taskIndex];        return task;    }  }

3. Update Task: This method will update the values in the Task.

  • This method sets the task to be checked or unchecked.
  • The updateStatus method will take task index and the status to update.
  • By the taskIndex we will be able to access the task struct so we’ll set the isDone to the status passed.
// SPDX-License-Identifier: GPL-3.0  pragma solidity >=0.8.0 <0.9.0;  /// @title A contract for demonstrate how to build a to-do list application /// @notice For now, this contract just show how to update the task  contract Bloc{     struct Task{     string task;        bool isDone;    }        mapping (address => Task[]) private Users;     function addTask(string calldata _task) external{       Users[msg.sender].push(Task({           task:_task,           isDone:false       }));    }        function getTask(uint _taskIndex) external view returns (Task memory){        Task storage task = Users[msg.sender][_taskIndex];        return task;    }     function updateStatus(uint256 _taskIndex,bool _status) external{         Users[msg.sender][_taskIndex].isDone = _status;    }  }

4. Delete Task: deleteTask method will take the task index and then delete the element from the array just like in C.

// SPDX-License-Identifier: GPL-3.0  pragma solidity >=0.8.0 <0.9.0;  /// @title A contract for demonstrate how to build a to-do list application /// @notice For now, this contract just show how to delete the task  contract Bloc{     struct Task{     string task;        bool isDone;    }        mapping (address => Task[]) private Users;     function addTask(string calldata _task) external{       Users[msg.sender].push(Task({           task:_task,           isDone:false       }));    }        function getTask(uint _taskIndex) external view returns (Task memory){        Task storage task = Users[msg.sender][_taskIndex];        return task;    }     function updateStatus(uint256 _taskIndex,bool _status) external{         Users[msg.sender][_taskIndex].isDone = _status;    }       function deleteTask(uint256 _taskIndex) external{        delete Users[msg.sender][_taskIndex];    }  }

5. Get Task Count: The count of tasks can be retrieved as the task array length.

And the complete solidity program after adding all the above methods to deal with a task looks like this:

Solidity

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.0 <0.9.0; 
/// @title A contract for demonstrate how to build a to-do list application
/// @notice For now, this contract just show how to add/delete/get/update/count the task
contract Bloc{
    // Defining a structure to
    // store a task
    struct Task
    {
        string task;
        bool isDone;
    }
 
    mapping (address => Task[]) private Users;
         
    // Defining function to add a task
    function addTask(string calldata _task) external
    {
        Users[msg.sender].push(Task({
            task:_task,
            isDone:false
        }));
    }
 
    // Defining a function to get details of a task
    function getTask(uint _taskIndex) external view returns (Task memory)
    {
        Task storage task = Users[msg.sender][_taskIndex];
        return task;
    }
 
    // Defining a function to update status of a task
    function updateStatus(uint256 _taskIndex,bool _status) external
    {
        Users[msg.sender][_taskIndex].isDone = _status;
    }
 
    // Defining a function to delete a task
    function deleteTask(uint256 _taskIndex) external
    {
        delete Users[msg.sender][_taskIndex];
    }
 
    // Defining a function to get task count.
    function getTaskCount() external view returns (uint256)
    {
        return Users[msg.sender].length;
    }
}
                      
                       

 
 
Click on the Compile button under the Solidity left navigation bar option after that Click on Deploy and Run Transaction in their deploy and inside the deployed contract you can find all the methods.

Deploy contract

  • With this, we are done creating a basic smart contract. This smart contract we will be using in the next article to communicate with a web application. Now, we’ll create a web application that can communicate with the smart contract that we have created above.
  • Before we start building the web application we’ll need the Ethereum blockchain which will have the smart contract and the data of our application. We are going to use Ganache to go ahead download and install it.
  • After installation, open Ganache and click on quick start Ethereum after that note the address labeled under RPC Server (should be something like this http://127.0.0.1:7545).

Now building the web application

HTML

<!doctype html>
<html lang="en">
 
<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"
        integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">
    <!-- App CSS-->
    <style>
        .card-container {
            width: 300px;
            height: 500px;
            background: #2699FB;
            border: 1px solid #2699FB;
            border-radius: 10px;
            opacity: 1;
            margin-right: auto;
            margin-left: auto;
            border-left: 0;
        }
 
        .icon-circle {
            background: white;
            border-radius: 200px;
            height: 70px;
            font-weight: bold;
            width: 70px;
            display: table;
            margin-top: 12px;
            margin-left: 31px;
        }
 
        .bloc {
            margin-top: 12px;
            margin-left: 28px;
        }
 
        .task-count {
            margin-top: 7px;
            margin-left: 31px;
        }
 
        .task-card {
            width: 300px;
            height: 325px;
            border: 1px solid #FFFFFF;
            background: #FFFFFF;
            border-radius: 25px 25px 10px 10px;
            opacity: 1;
            position: relative;
        }
 
        .fab {
            background: #2699FB;
            border-radius: 200px;
            height: 40px;
            width: 40px;
            font-weight: bold;
            border: 0;
            position: absolute;
            right: 0;
            bottom: 0;
            margin-right: 27px;
            margin-bottom: 31px;
        }
 
        .add-task-container {
            top: 150px;
            width: 300px;
            height: 187px;
            background: #FFFFFF;
            border-radius: 25px 25px 0px 0px;
            opacity: 1;
            position: absolute;
        }
 
        .task-done {
            color: gray;
            text-decoration: line-through;
        }
    </style>
    <title>Bloc</title>
</head>
 
<body style="background: #BCE0FD">
    <div class="card-container my-5 border-left-0">
        <div class="icon-circle">
            <img class="px-2 py-2" src="https://github.com/gupta-shrinath/Bloc/raw/gupta-shrinath/images/add-list.png"
                alt="icon">
        </div>
        <h2 class="bloc text-white"><strong>BLOC</strong></h1>
            <p id="taskCount" class="task-count text-white">0 Task</p>
 
 
 
 
            <div class="task-card">
                <!-- Floating Action Button -->
                <button id="fab" class="fab float-right" data-toggle="modal" data-target="#add-task-container">
                    <img class="m-auto" src="https://github.com/gupta-shrinath/Bloc/raw/gupta-shrinath/images/plus.png"
                        alt="" height="16" width="16">
                </button>
                <!-- #Floating Action Button -->
 
                <!-- Task List-->
                <ul id="list" class="list-group mt-3">
                </ul>
                <!-- #Task List-->
 
                <!-- Add Task Modal -->
                <div id="add-task-container" class="modal add-task-container" data-backdrop="static">
                    <div class="container">
                        <div class="col mx-2">
                            <h5 class="text-primary text-center mt-4">New Task</h5>
                            <input id="new-task" class="mt-3" type="text">
                            <button type="button" data-dismiss="modal" class="btn btn-primary btn-block mt-3"
                                onclick="addTask(document.getElementById('new-task').value);">Add
                                Task</button>
                        </div>
                    </div>
                </div>
                <!-- #Add Task Modal -->
 
            </div>
    </div>
 
    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
        integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
        crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js"
        integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN"
        crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"
        integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV"
        crossorigin="anonymous"></script>
    <!-- App and related files JS-->
    <script src="https://cdn.jsdelivr.net/npm/web3@latest/dist/web3.min.js"></script>
    <script src="js/config.js"></script>
    <script src="js/getAccount.js"></script>
    <script src="js/app.js"></script>
</body>
 
</html>
                      
                       

 
 The webpage will look like this-


 

bloc

getAccount.js

Javascript

// Connect to Ganache Make sure you enter the address you noted earlier here //
web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:7545'));
// getAccount() will get the first account from  ganache and will set it as defaultAccount for our contract operations ////
async function getAccount() {
    let accounts = await web3.eth.getAccounts();
    web3.eth.defaultAccount = accounts[0];
    console.log(web3.eth.defaultAccount + ' account detected');
    return web3.eth.defaultAccount;
}
                      
                       

config.js

  • Go to Remix IDE and make sure you have the bloc.sol from the previous tutorial (Make sure to sure HTTP site, not https).
  • Go to the solidity compiler located in the left panel and click on compile bloc.sol. Down you’ll find a button with copy icon and text as ABI click on it. Paste it in js/config.js line 1.
let contractABI = COPIED TEXT; The copied text will be enclosed in [].
  • Go to deploy and run transactions under environment select Web3 Provider.
  • Enter the address you copied from Ganache and paste it click on OK.
  • Now a deploy button will be visible click on it.
  • Down you’ll find Deployed Contracts label now there will a copy icon button click on it.
  • And paste in js/config.js line 2.
let contractAddress = 'COPIED text'; The copied text might look like this 0xF3017acEDd45526aC6153FBBCfcA8096173D245a. The contractABI helps the web3js with our smart contract The contractAddress tells the web3js about where on blockchain is our smart contract

app.js

Javascript

$(document).ready(createTaskList());
 
// Auto focus on input of add task modal //
$('#add-task-container').on('shown.bs.modal', function () {
    $('#new-task').trigger('focus');
});
 
/**
 * createTaskList() set the contract object and gets the number
 * of tasks of the user and then calls addTaskToList() to add
 * them to HTML one after the other after all task are added to
 * HTML then calls updateTaskCount()
 * @author Gupta Shrinath <https://github.com/gupta-shrinath>
*/
async function createTaskList() {
    // Get account from the Ganache EVM //
    try {
        await getAccount();
        // Set contract and set gas //
        contract = new web3.eth.Contract(contractABI, contractAddress);
        try {
            numberOfTask = await contract.methods.getTaskCount().call({ from: web3.eth.defaultAccount });
            /*  The actual number of task may differ because
                when an task is removed the task element is
                removed and the index value now has nothing.
            */
            console.log('Number of Tasks are ' + numberOfTask);
            // If there are task present //
            if (numberOfTask != 0) {
                // Fetch one task after the other until no task remain //
                console.log('Start fetching task ...');
                let taskIterator = 0;
                while (taskIterator < numberOfTask) {
                    try {
                        let task = await contract.methods.getTask(taskIterator).call({ from: web3.eth.defaultAccount });
                        if (task[0] != '') {
                            // addTaskToList add this task as children to the ul tag //
                            addTaskToList(taskIterator, task[0], task[1]);
                        }
                        else {
                            console.log('The index ' + taskIterator + ' is empty');
                        }
                    } catch {
                        console.log('Failed to get Task ' + taskIterator);
                    }
                    taskIterator++;
                }
                // Update the task count in HTML //
                updateTasksCount();
            }
        } catch {
            console.log('Failed to get task count from blockchain');
        }
    } catch {
        console.log('Failed to get the account');
    }
 
}
 
/**
 * addTaskToList() takes the task attributes and adds them to
 * the HTML
 * @author Gupta Shrinath <https://github.com/gupta-shrinath>
 * @param {number} id
 * @param {string} name
 * @param {boolean} status
 */
function addTaskToList(id, name, status) {
    console.log('addTaskToList(): Add Task ' + (id) + ' ' + [name, status]);
    /*  Get the id of ul element so to be able to
        add children to it
    */
    let list = document.getElementById('list');
    /*  Create a li element and add the class
        required to make look good  and
        set the id of it
    */
    let item = document.createElement('li');
    item.classList.add('list-group-item', 'border-0', 'd-flex', 'justify-content-between', 'align-items-center');
    item.id = 'item-' + id;
    // Create a text to add it to the li element//
    let task = document.createTextNode(name);
    /*  Create a checkbox and set its id and checked
        value to add it to the li element
    */
    var checkbox = document.createElement("INPUT");
    checkbox.setAttribute("type", "checkbox");
    checkbox.setAttribute("id", "item-" + id + "-checkbox");
    checkbox.checked = status;
    /*  if status is true then add task-done class to li
        element so that the text gets a linethrough
    */
    if (status) {
        item.classList.add("task-done");
    }
    // Add the li element to ul element //
    list.appendChild(item);
    /* Set a ondblclick event to able to remove the
       item when double clicked on it */
    item.ondblclick = function () {
        removeTask(item.id);
    }
    // Append the text of task //
    item.appendChild(task);
    // Append the checkbox for task //
    item.appendChild(checkbox);
    // Add onclick to the checkbox //
    checkbox.onclick = function () { changeTaskStatus(checkbox.id, id); };
}
 
/**
 * removeTask() remove the task from blockchain and then from
 * the HTML using JQuery
 * Note: The taskIndex is the li element id {item-taskIndex}
 * @author Gupta Shrinath <https://github.com/gupta-shrinath>
 * @param {string} taskIndex
 */
async function removeTask(taskIndex) {
    console.log("removeTask(): Remove Task " + taskIndex);
    // Create the selector for the Task //
    let taskSelector = '#' + taskIndex;
    // Make taskIndex to have only task index number
    taskIndex = taskIndex.replace('item-', '');
    try {
        await contract.methods.deleteTask(taskIndex).send({ from: web3.eth.defaultAccount });
        console.log('Remove Task ' + taskIndex + ' from the blockchain');
        // Remove the task from the HTML //
        $(taskSelector).remove();
        // Update the task count in HTML//
        updateTasksCount();
    } catch {
        console.log('Issue occurred while removing task item-' + taskIndex);
    }
}
 
/**
 * changeTaskStatus() change the status of task in blockchain and
 * then in the HTML
 * Note: The id is the checkbox id {item-taskIndex-checkbox}
 * @author Gupta Shrinath <https://github.com/gupta-shrinath>
 * @param {string} id
 * @param {number} taskIndex
 */
async function changeTaskStatus(id, taskIndex) {
    // Get checkbox element //
    let checkbox = document.getElementById(id);
    // Get the id of the li element //
    let textId = id.replace('-checkbox', '');
    // Get the li element //
    let text = document.getElementById(textId);
    try {
        await contract.methods.updateStatus(taskIndex, checkbox.checked).send({ from: web3.eth.defaultAccount });
        console.log('changeTaskStatus(): Change status of task ' + textId + ' to ' + checkbox.checked);
        if (checkbox.checked) {
            text.classList.add("task-done");
        } else {
            text.classList.remove("task-done");
        }
    } catch (error) {
        console.log('Failed to change Status of task ' + textId + ' in blockchain');
    }
}
 
/**
 * updateTaskCount() update the number of task in HTML by counting
 * the number of item in the ul element
 * @author Gupta Shrinath <https://github.com/gupta-shrinath>
 */
function updateTasksCount() {
    // Get the element of ul tag //
    let list = document.getElementById('list');
    // Get the count of the ul element //
    let taskCount = list.childElementCount;
    console.log('updateTaskCount(): The number of task are ' + taskCount);
    // Set the count to the taskCount id element //
    let count = document.getElementById('taskCount');
    count.innerText = taskCount + " Task";
}
 
/**
 * addTask() add the task to the HTML via adddTasktoList() and then
 * add it to blockchain and update the count via updateTaskCount()
 * @author Gupta Shrinath <https://github.com/gupta-shrinath>
 * @param {string} name
 */
async function addTask(name) {
    // Get the form element containing the new task //
    let form = document.getElementById('add-task-form');
    // Check if the input is valid and then add it//
    if (form.checkValidity()) {
        console.log('Get the number of task from blockchain');
        // Set blank value for text in the addtask modal //
        document.getElementById('new-task').value = '';
        // Remove the mentioned class because it might be
        // present if a task was added before
        form.classList.remove('was-validated');
        // Get the number of task from blockchain //
        contract.methods.getTaskCount().call({ from: web3.eth.defaultAccount }).then(numberOfTask => {
            // Add the task to the HTML //
            addTaskToList(numberOfTask, name, false);
            // Update the task count in HTML//
            updateTasksCount();
        }, err => {
            console.log('Failed to get the number of task in blockchain ' + err);
        });
        try {
            await contract.methods.addTask(name).send({ from: web3.eth.defaultAccount });
            console.log('Add task ' + name + ' to blockchain');
        } catch {
            console.log('Failed to add task to EVM');
        }
 
    } else {
        form.addEventListener('submit', function (event) {
            // Stop all events //
            event.preventDefault();
            event.stopPropagation();
            // Add the mentioned class to able to display
            // error to user
            form.classList.add('was-validated');
            // Set blank value for text in the addtask modal //
            document.getElementById('new-task').value = '';
        }, false);
 
    }
 
}
                      
                       


Now the application is fully working.



Next Article
Flutter and Blockchain - Hello World Dapp
author
gupta_shrinath
Improve
Article Tags :
  • Blockchain
  • Solidity

Similar Reads

  • Blockchain Tutorial
    Blockchain technology in simple words is a digital database where information or data is stored in blocks that are linked together to form a chain. This Blockchain Tutorial covers all basic to advanced topics of blockchain like cryptography, Blockchain Algorithms, Blockchain Architecture, Blockchain
    6 min read
  • Introduction to Blockchain Technology

    • Introduction to Blockchain technology | Set 1
      Blockchain could be a data structure that could be a growing list of information blocks. The knowledge blocks area unit coupled along, such recent blocks can't be removed or altered. Blockchain is the backbone Technology of the Digital CryptoCurrency BitCoin. What is Blockchain? The blockchain is a
      10 min read

    • History of Blockchain
      Blockchain can be defined as the Chain of Blocks that contain some specific Information. Thus, a Blockchain is a ledger i.e file that constantly grows and keeps the record of all transactions permanently. This process takes place in a secure, chronological (Chronological means every transaction happ
      5 min read

    • Features of Blockchain
      Here In this article, we will discuss the features of blockchain technology and how they make it a revolutionary and highly desirable platform for various applications. A blockchain is a chain of blocks that contains information. Most people think that Blockchain is Bitcoin and vice-versa. But it’s
      7 min read

    • Important Blockchain terminologies
      In this article, we will get acquainted with some on the most commonly used and hence, important to know terminologies in the blockchain area. As blockchain is a booming technology with active research being conducted on, this article can help you to understand and take part in conversations around
      6 min read

    • Different Version of BlockChain
      BlockChain is buzzword in today's technology. Thus, a BlockChain is defined as the digital record of transaction which is stored in the Chain of Blocks. Each time a block is completed by storing Information, the next new block is created to store further information. BlockChain is a secure technolog
      3 min read

    • Types of Blockchain
      Blockchain technology has evolved into a versatile tool with various applications across industries. Understanding the different types of blockchain is essential for selecting the right solution for specific needs. Broadly categorized into public, private, consortium, and hybrid blockchains, each ty
      10 min read

    • Public Blockchain
      Public blockchains are decentralized networks that allow anyone to participate, read, and write data without needing permission from a central authority. They operate on an open-source framework, ensuring transparency and security through cryptographic principles. Transactions on public blockchains
      7 min read

    • An Introduction to Private Blockchain
      Private blockchains are a specialized form of blockchain technology for use within a specific organization or consortium. Unlike public blockchains, which are open to anyone and offer full transparency, private blockchains operate on a permission basis, allowing only authorized participants to acces
      9 min read

    • Hybrid Blockchain
      The Blockchain is a decentralized distributed database that is shared among computer network nodes. Blockchain can be used in four different ways: Public, Private, Consortium, and Hybrid. The Hybrid blockchain is a revolutionary type of blockchain that is a mix of both worlds, both private and publi
      7 min read

    • What is Consortium Blockchain?
      A consortium blockchain is a group of multiple financial institutions where each financial institution has its private blockchain. In this blockchain, a pre-selected set of nodes are allowed to control the consensus process. What is Consortium Blockchain?Consortium blockchains are managed and run by
      9 min read

    • Top Applications of Blockchain in the Real World
      The last time this world changed a lot was with the invention of the Internet! Can you imagine ever living without the ever-present Google or all the other social media sites like Facebook, YouTube, etc? It sounds impossible. Well, this time the world might change again because of the applications o
      8 min read

    • Advantages and Disadvantages of Blockchain
      Blockchain technology is a revolutionary digital ledger system that allows for secure, transparent, and decentralized transactions. It underpins cryptocurrencies like Bitcoin and has potential applications across various sectors, including finance, healthcare, and supply chain management. The advant
      5 min read

    • Benefits of Blockchain Technology
      Blockchain technology offers a range of transformative benefits that can revolutionize various industries. By providing enhanced security, improved transparency, and increased efficiency, blockchain enables secure and trustworthy transactions without the need for intermediaries. Its decentralized na
      4 min read

    • How does the Blockchain Work?
      A blockchain is a distributed database that stores information electronically in a digital format and is shared among the nodes of a computer network. A typical difference between a blockchain and a database is how data is structured. A blockchain is a shared, immutable ledger as the name suggests s
      8 min read

    • What is P2P (Peer-to-Peer Process)?
      The P2P process deals with a network structure where any participant in the network known as a node acts as both a client and a server. This means that, rather than relying on a basis server to supply resources or services, everybody from the network of nodes can trade resources and services with on
      9 min read

    • What is Decentralization? Definition, Working, Need, Benefits
      Decentralization is known as the distribution of functions among several units. It is an interconnected system where no single entity has complete authority. It is the architecture in which the workloads, both hardware, and software, are distributed among several workstations. The functions are dist
      5 min read

    • Components of Blockchain Network
      Blockchain networks have various interdependent components that work together to ensure secure, transparent, and efficient data transactions. Key elements include nodes, which validate and relay transactions; a decentralized ledger that records all activity; and consensus mechanisms that maintain th
      6 min read

    • Centralized vs. Decentralized vs. Distributed Systems
      Understanding the architecture of systems is crucial for designing efficient and effective solutions. Centralized, decentralized, and distributed systems each offer unique advantages and challenges. Centralized systems rely on a single point of control, providing simplicity but risking a single poin
      8 min read

    • Difference between Public and Private blockchain
      1. What is Public Blockchain ? Public blockchains are open networks that allow anyone to participate in the network i.e. public blockchain is permissionless. In this type of blockchain anyone can join the network and read, write, or participate within the blockchain. A public blockchain is decentral
      5 min read

  • Cryptography Tutorial
    Cryptography is a technique of securing communication by converting plain text into unintelligible ciphertext. It involves various algorithms and protocols to ensure data confidentiality, integrity, authentication, and non-repudiation. The two primary types of cryptography are symmetric key cryptogr
    7 min read
  • Consensus Algorithms

    • Consensus Algorithms in Blockchain
      Prerequisites: Introduction to Blockchain technology | Set 1, Set 2 We know that Blockchain is a distributed decentralized network that provides immutability, privacy, security, and transparency. There is no central authority present to validate and verify the transactions, yet every transaction in
      5 min read

    • Blockchain - Proof of Work (PoW)
      Proof of Work consensus is the mechanism of choice for the majority of cryptocurrencies currently in circulation. The algorithm is used to verify the transaction and create a new block in the blockchain. The idea for Proof of Work(PoW) was first published in 1993 by Cynthia Dwork and Moni Naor and w
      6 min read

    • Proof of Burn (PoB) Consensus Algorithm in Blockchain
      The Proof of Burn (PoB) consensus algorithm is a unique blockchain mechanism that allows participants to validate transactions by "burning" or permanently destroying a portion of their cryptocurrency. This process, which involves sending coins to an unspendable address, demonstrates a commitment to
      7 min read

    • Proof of Stake (PoS) in Blockchain
      Proof of Stake (PoS) is a type of algorithm which aims to achieve distributed consensus in a Blockchain. This way to achieve consensus was first suggested by Quantum Mechanic here and later Sunny King and his peer wrote a paper on it. This led to Proof-of-Stake (PoS) based Peercoin. A stake is value
      5 min read

    • Byzantine Generals Problem in Blockchain
      The article focuses on discussing the following topics of Byzantine Generals Problem in Blockchain: What is Byzantine General's Problem?Money and Byzantine General's ProblemHow Bitcoin Solves the Byzantine General's Problem?Byzantine Fault Tolerance (BFT)Byzantine General's Problem in a Distributed
      8 min read

    • Cryptographic Consensus Mechanisms in Blockchain
      A consensus mechanism is an algorithm that is used to achieve agreement, trust, and security across a decentralized computer network. These protocols help to make sure that all the nodes are synchronized with each other and agree on transactions, which are legitimate and are added to the blockchain.
      14 min read

    • Delegated Proof Of Stake (DPoS)
      Delegated Proof Of Stake (DPoS) is a consensus algorithm which is an advancement of the fundamental concepts of Proof Of Stake. Delegated Proof of Stake (DPoS) consensus algorithm was developed by Daniel Larimer, founder of BitShares, Steemit and EOS in 2014. In Proof of Stake consensus system, each
      5 min read

    • practical Byzantine Fault Tolerance(pBFT)
      Practical Byzantine Fault Tolerance is a consensus algorithm introduced in the late 90s by Barbara Liskov and Miguel Castro. pBFT was designed to work efficiently in asynchronous(no upper bound on when the response to the request will be received) systems. It is optimized for low overhead time. Its
      6 min read

    Blockchain Architecture

    • Blockchain Structure
      Blockchain technology often heralded as a revolutionary advancement, fundamentally transforms how data is stored, managed, and verified across distributed networks. At its core, a blockchain is a decentralized digital ledger that maintains a continuous and immutable record of transactions across a n
      15+ min read

    • Candidate block in Blockchain
      As we are aware that blockchain is decentralized network which is focused mainly on transparency, Blockchain is list of growing records titled as blocks. Please refer this article, if you are beginner in blockchain domain. Role of Miners in Blockchain : Whenever transaction is made on bitcoin networ
      2 min read

    • Actors Involved in Blockchain Solution
      Blockchain is a booming technology that is used as distributed ledgers for cryptocurrency. Blockchain is a ledger that continuously grows by keeping a record of all the transactions in order, secure, and in an immutable way. Each transaction is treated as a block that is connected to a previous tran
      3 min read

    • Blockchain Transaction Lifecycle
      The blockchain transaction lifecycle refers to the series of stages a transaction goes through from its creation to its final confirmation on the blockchain. It begins with the initiation of the transaction, where details are entered and signed by the sender. The transaction is then propagated throu
      5 min read

    • Blockchain Forks
      Prerequisites - Blockchain Technology Introduction, How Blockchain technology works, Introduction to Blockchain  The decentralized nature of public blockchains (for example, Bitcoin and Ethereum) means that participants on the network must be able to come to an agreement as to the shared state of th
      9 min read

    • Blockchain and Block Header
      Blockchain is a database, or broadly distributed database, used mainly for concurrent transactions and one of the most popular implementations of blockchain is Bitcoin. Blockchain has several blocks, also called nodes, and all the blocks are managed with the help of the block header. Constituents of
      3 min read

    • Blockchain Incentives to Miners
      Blockchain incentives to miners are essential mechanisms that motivate individuals to participate in the network by validating transactions and securing the blockchain. These incentives primarily come in the form of coinbase rewards and transaction fees, which compensate miners for their computation
      5 min read

    • Core Component of Blockchain
      Blockchain : In 1991, the term blockchain was coined. Blockchain's founder was an anonymous person who goes by the pseudonym Satoshi Naka Moto. For the first time in 2009, the blockchain was implemented in accordance with bitcoin and bitcoin is a crypto valuta. Due to its open-source nature, Blockch
      3 min read

    • Blockchain Protocols and Their Working
      Blockchain protocols are the foundational rules that govern how data is recorded, shared, and secured on a blockchain network. They dictate how transactions are validated, how consensus is achieved, and how nodes communicate. This article discusses Blockchain Protocols in detail. Table of Content Wh
      8 min read

    • What is Blockchain Authentication?
      Blockchain authentication is a secure method of verifying the identity of users and devices in a digital environment using blockchain technology. Unlike traditional authentication systems, which often rely on centralized databases and passwords, blockchain authentication leverages decentralized netw
      8 min read

    Blockchain and Cryptocurrency

    • What is Cryptocurrency?
      A cryptocurrency is not a type of currency that can be used in the real world. It can be used to perform transactions only in the digital world. So in order to buy/sell using a cryptocurrency, it has to be converted from a digital form to some existing currency that is used in the real world. For ex
      12 min read

    • Advantages and Disadvantages of Cryptocurrency in 2020
      Prerequisite - Cryptocurrency With the industrialization and involvement of technology, digital currencies are gaining an upper hand over others. One such currency is bitcoins. Many of us are familiar with this well-known terminology. The only confusing thing is Cryptocurrency. What are its pros and
      6 min read

    • How are Cryptocurrencies Created?
      A cryptocurrency is a digital currency, which uses cryptography for secure transactions. It is designed to act as a medium of exchange on a computer network without relying on a central authority such as a government or a bank to manage it. Since cryptocurrencies have no central issuing or regulator
      9 min read

    • What is a Cryptographic Token?
      A cryptographic token is a digital unit that has a value and does not have its own native blockchain. Blockchain technology has huge potential to build a secure future internet system and also be able to solve big business problems. A blockchain is a digital, decentralized public ledger that has the
      7 min read

    • What is Cryptoeconomics?
      Cryptoeconomics is the study of how economic incentives and cryptographic techniques are used to create secure and decentralized systems, primarily in blockchain technology. It combines principles from economics, game theory, and cryptography to design networks that encourage honest behavior and mai
      10 min read

    • What is an Initial Coin Offering (ICO)?
      An Initial Coin Offering (ICO) is a fresh way for businesses to generate funds using cryptocurrency. It is a way to launch a new coin by selling it to investors during a large period. For example, Coinbase is a crypto/fiat-based company that has recently launched its IPO(Initial Public Offering) i.e
      11 min read

    • Generalized Proof-of-Stake Mining in Cryptocurrencies
      Generalized Proof-of-Stake (GPoS) is a concept in cryptocurrency mining that builds upon the traditional Proof-of-Stake (PoS) mechanism. While PoS allows users to validate transactions and create new blocks based on the number of coins they hold, GPoS expands on this idea to include a broader range
      8 min read

    • Blockchain - Electronic Cash
      eCash is known as Electronic Cash which is a digital currency technique from which transactions can be achieved anywhere through the internet. It is an easier form of payment, it is based on the principles of blockchain technology (Digital Signatures) among the Peer-to-Peer network. All transactions
      4 min read

    • What is Blockchain Wallet?
      A blockchain wallet is a software that enables sending and receiving cryptocurrencies such as Bitcoin, Ethereum, etc. It stores the record of transactions and also public and private keys which are used to perform transactions. A public key is similar to an account number. If A wants to send some mo
      10 min read

    Smart Contracts and Decentralized Applications (DApps)

    • What is Ethereum: Working, Types, Features
      Ethereum is like a decentralized computing network. It allows developers to create and run applications on its blockchain using smart contracts. Blockchain technology gained public notice with the advent of Bitcoin in 2009. Bitcoin is a cryptocurrency that runs on blockchain technology and is by far
      8 min read

    • Components of Ethereum Network
      The components of the Ethereum network form the foundation of its decentralized platform, enabling the creation and execution of smart contracts and decentralized applications (dApps). Key elements include Ethereum nodes, the Ethereum Virtual Machine (EVM), and the consensus mechanism that ensures t
      6 min read

    • Difference Between Bitcoin and Ethereum
      Bitcoin is a digital currency that can be transferred on a peer-to-peer (P2P) network without the need for any central authority. It was invented by a person or group of people with the name Satoshi Nakamoto in 2008. All the transactions are stored in an immutable distributed ledger. Bitcoin is crea
      4 min read

    • What are Ethereum Accounts?
      Ethereum accounts are essential elements of the Ethereum blockchain, serving as digital identities for users and smart contracts. Two main types of Ethereum Accounts are Externally Owned Accounts (EOAs) and Contract Accounts. This article focuses on discussing Ethereum Accounts in detail. Table of C
      11 min read

    • What are Nodes and Clients in Ethereum?
      In Ethereum, nodes and clients are fundamental to the network's operation. Nodes are individual computers or servers participating in the Ethereum network by maintaining a copy of the blockchain and following the network’s rules. Clients are software applications that nodes run to interact with the
      13 min read

    • What is Ethereum Virtual Machine and How it Works?
      The Ethereum Virtual Machine (EVM) is a crucial component of the Ethereum blockchain that enables the execution of smart contracts and decentralized applications (DApps). When developers write smart contracts in languages like Solidity, the EVM processes these contracts, managing state changes and e
      12 min read

    • Ethereum - Gas and Fees
      Ethereum Gas is a section that calculates the quantity of calculation action that it takes to perform specific functions. Every function that carries position in Ethereum like transactions and smart contracts etc. performance needs some part of gas. It is essential to the blockchain P2P network beca
      8 min read

    • How to Simply Deploy a Smart Contract on Ethereum?
      Smart contracts are blocks of code that reside on the blockchain. It is like an Ethereum account but there is a critical difference between an external account and a smart contract. Unlike a smart contract, an external account can connect to multiple Ethereum networks (Goerli testnet, mainnet, etc.)
      7 min read

    • "Hello World" Smart Contract in Remix-IDE
      What do you mean by Smart Contract? Smart contracts are self-executing contracts. The term was coined by Nick in 1994. Smart contracts are very different from traditional software programs. They are immutable once deployed on the blockchain. It was because of Ethereum the term smart contract became
      4 min read

    • What are Decentralized Apps (dApps) in Blockchain?
      Decentralized apps are digital applications or programs that are based on Blockchain and fundamentally different from normal applications. Unlike normal applications that run on centralized servers that belong to the company which owns them, dApps run on a decentralized peer-to-peer (P2P) network th
      7 min read

    • Pros, Cons, and Examples of dApp
      Dapps are decentralized applications that might feel like regular apps. Behind the scene, it has some special qualities that are discussed in the article. Introduction to dAppDecentralized applications can be accessible to a wide audience and provide a diverse set of functions from business services
      5 min read

    • DAO(Decentralized Autonomous Organization) in Blockchain
      DAO stands for Decentralized Autonomous Organization. The concept of a DAO was first proposed by Bit Shares, Steemit, and EOS (Block. one) founder Dan Larimer in the year 2015, and was further refined in the year 2016 by Ethereum’s Vitalik Buterin. A decentralized autonomous organization is decentra
      9 min read

    Blockchain Security

    • Blockchain and Data Privacy
      Blockchain has been defined as a digital, decentralized ledger that keeps a record of all transactions that take place across a peer-to-peer network. It enables the secure transfer of assets without an intermediary. It also provides a record of transactions that is fully transparent and displayed in
      11 min read

    • BlockChain and KYC
      KYC is a process by which banks obtain information about the identity and address of the purchasers. It's a regulator governed process of performing due diligence for verifying the identity of clients. This process helps to make sure that banks’ services aren't misused. The banks are responsible for
      4 min read

    • Role of Blockchain in Cybersecurity
      Cybersecurity is the practice of protecting systems and networks from digital attacks which aim to access, change or destroy digital information either to extort money or sensitive data. With the increasing reliance on technology and data, it becomes very important to reinforce security measures to
      8 min read

    • Blockchain to Secure IoT Data
      INTRODUCTION: Internet of things and Blockchain are two technologies which are gaining popularity since the time of their creation. In the near future, IoT is going to influence almost every day-to-day items we use. As the usage of this technology increases, the threat to misuse it also increases. E
      7 min read

    Blockchain Applications

    • Applications of Blockchain in Data Management
      As our reliance on data grows, effective management becomes more important than ever. Traditional systems can struggle with issues like security, data integrity, and sharing information across platforms. Blockchain technology offers a promising solution by providing a secure, transparent, and decent
      5 min read

    • Benefits and Applications of Blockchain in Cloud Computing
      The various features of Blockchain like decentralization, transparency and security have made it a very important and revolutionary technology for the present generation of several industrial usages. One of those fields is the Cloud of Things which is created by the interlinking of cloud computing a
      10 min read

    • Integration of Artificial Intelligence and BlockChain
      Artificial Intelligence and Blockchain are proving to be quite a powerful combination, improving virtually every industry in which they're implemented. These technologies can be combined to upgrade everything from food supply chain logistics and healthcare record sharing to media royalties and finan
      8 min read

    • How Blockchain Can Change the Future of Banking
      What is the most important thing for humans? Well, nobody knows for sure but money is definitely one of those! And that’s the reason that the banking sector is one of the most important sectors in the world. This sector includes different institutions such as banks, finance companies, investment fir
      6 min read

    • Blockchain - Into the Future
      Accounting, transactions, contracts, and records play a pivotal and defining role in our societal system. They protect assets, and organizational boundaries and uphold the promises between institutions, governments, and corporations. Despite their importance, these have failed to digitize in ways ot
      6 min read

    • Blockchain in Genomics
      Blockchain technology is making waves in various industries, and genomics is no exception. By providing a secure and transparent way to manage and share genomic data, blockchain addresses critical challenges such as data privacy, security, and integrity. This integration promises to enhance collabor
      9 min read

    • Integration of Blockchain and AI
      AI and blockchain are proving to be quite a powerful combination, improving virtually every industry in which they’re implemented. Blockchain and artificial intelligence are combining to upgrade everything from food supply chain logistics and healthcare record sharing to media royalties and financia
      8 min read

    • Use Cases of BlockChain in different fields
      Blockchain : Blockchain is a system of recording data that makes it troublesome or not possible to vary, hack, or cheat the system. Blockchain is truly a digital ledger of duplicated transactions and distributed across the total network of laptop systems on the blockchain. Every block among the chai
      2 min read

    • Role of Blockchain in Sustainable Development
      The Blockchain is a decentralized database, which means authority is not associated with one person; it will be shared among the people. Hence, changing and modifying the data is nearly impossible in the blockchain database. That's why it's the most trustworthy. It came in the 1990s when the researc
      9 min read

    • Applications and Uses of Blockchain
      A blockchain is actually a digital ledger of transactions that is copied and distributed across the network of computer systems. Each of the blocks generated after every transaction holds various information about the transaction and gets itself updated in every participant's ledger which once writt
      9 min read

    • Benefits of Blockchain in Healthcare
      A blockchain is a chain of blocks linked together using hashing technique. Each block consists of some timestamped records of information such as financial, healthcare, confidential data, etc. The Blockchain network is managed by a group of users on a decentralized network. All the information is av
      6 min read

    • Decentralized Voting System using Blockchain
      Blockchain is a technology that is rapidly gaining momentum in era of industry 4.0. With high security and transparency provisions, it is being widely used in supply chain management systems, healthcare, payments, business, IoT, voting systems, etc. Why do we need it? Current voting systems like bal
      4 min read

    Blockchain Implementation

    • Create simple Blockchain using Python
      Blockchain is a time-stamped decentralized series of fixed records that contains data of any size and it is controlled by a large network of computers that are scattered around the globe and not owned by a single organization. Every block is secured and connected with each other using hashing techno
      8 min read

    • Implementation of Blockchain in Java
      Blockchain is the backbone Technology of Digital CryptoCurrency BitCoin.  A Blockchain is a list of records called blocks that are linked together using linked lists and use the cryptographic technique.Each block contains its own digital fingerprint called Hash, the hash of the previous block, a tim
      5 min read

    • Build a To-do List Web Application Powered by Blockchain
      Here, we are going to build a to-do list application that will save the data in the blockchain. The blockchain part of this application can also be understood as a database. First, we'll create a smart contract and subsequently the web application itself. We'll use Bloc as the application name but f
      15 min read

    • Flutter and Blockchain - Hello World Dapp
      This tutorial will take you through the process of building your first mobile dapp - Hello World Dapp! This tutorial is meant for those with a basic knowledge of Ethereum and smart contracts, who have some knowledge of the Flutter framework but are new to mobile dapps. In this tutorial we will be co
      9 min read

    • Blockchain Gaming : Part 1 (Introduction)
      Blockchain Gaming. It’s a world of it’s own. It’s ‘Ready Player One’ incorporated into gaming. Before reading this article, it is recommended to read: Introduction to Blockchain to get well versed with the concept of blockchain. Part-1: Transparency, Proven Rarity and True Ownership Transparency: Wh
      4 min read

    • How to use GANACHE Truffle Suite to Deploy a Smart Contract in Solidity (Blockchain)?
      There are various processes involved in deploying a smart contract using Ganache and Truffle Suite: 1. Install Ganache first. Ganache is a personal blockchain for Ethereum development. You must first download and install it. It is available for download from https://www.trufflesuite.com/ganache, the
      4 min read

    • How to use MetaMask to Deploy a Smart contract in Solidity (Blockchain)?
      Smart contracts are self-executing contracts. They were first proposed by Nick Szabo in the 90s. They are set of rules and protocols which two parties agree upon and have to follow. One of the main features is that they are immutable once deployed on the blockchain. It is widely used in the Ethereum
      3 min read

    • Build a Authentication Using Blockchain
      Normally authentication is seen using databases like MYSQL, Firebase, MongoDB, etc. One of the biggest drawbacks is the chance of the data getting corrupted. The data can be modified by anyone who is in control of the database itself.To overcome the above problem here a web app authentication using
      9 min read

geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences