<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vanshika Srivastava</title>
    <description>The latest articles on DEV Community by Vanshika Srivastava (@vanshikasrivastava).</description>
    <link>https://dev.to/vanshikasrivastava</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F676259%2F293fc5ac-7679-4e9d-bd40-dc21f127e475.PNG</url>
      <title>DEV Community: Vanshika Srivastava</title>
      <link>https://dev.to/vanshikasrivastava</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vanshikasrivastava"/>
    <language>en</language>
    <item>
      <title>How to build your first zkApp with Mina Protocol</title>
      <dc:creator>Vanshika Srivastava</dc:creator>
      <pubDate>Thu, 27 Jun 2024 13:52:45 +0000</pubDate>
      <link>https://dev.to/vanshikasrivastava/how-to-build-your-first-zkapp-with-mina-protocol-5c3g</link>
      <guid>https://dev.to/vanshikasrivastava/how-to-build-your-first-zkapp-with-mina-protocol-5c3g</guid>
      <description>&lt;p&gt;Today we'll be doing a deep dive to understand to zkApps and how you can build one using Mina Protocol.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a zkApp ?
&lt;/h2&gt;

&lt;p&gt;A zkApp is an app which is based on zero knowledge proofs. In the context of Mina, these zkApps utilise zk-SNARKs and can perform complex off-chain computations with a fixed fee to verify the zero knowledge proof on the chain.&lt;/p&gt;

&lt;p&gt;Mina's recursive zero-knowledge proofs, which are composable, let developers reuse proofs of already verified information across different blockchains and applications. This approach reduces verification costs, supports composable builds, and enhances privacy for both user and company data. Moreover, various zkBridges are in development to allow decentralized applications from other blockchains to benefit from Mina's features.&lt;/p&gt;

&lt;p&gt;The best part about zkApps is that you can make these apps using typescript. Simply a zkApp consists of smart contract and a UI (frontend). &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkew2paqmqtjnu4a61juu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkew2paqmqtjnu4a61juu.png" alt="Image description" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Img Source : Mina Protocol&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Understanding o1js for Writing zk Smart Contracts
&lt;/h2&gt;

&lt;p&gt;o1js is a versatile zk framework that provides the tools necessary to create zero-knowledge proofs. It allows you to develop various zk programs using a comprehensive set of built-in provable operations, such as basic arithmetic, hashing, signatures, boolean operations, comparisons, and more. The o1js framework is designed to facilitate the creation of zkApps on Mina—smart contracts that run client-side and handle private inputs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recursion&lt;/strong&gt;&lt;br&gt;
Kimchi, the custom proof system that powers o1js, enables the construction of infinite recursive proofs for circuits through its integration with the Pickles recursive system. Mina Protocol is unique in offering infinite recursion capabilities.&lt;/p&gt;

&lt;p&gt;Recursion is an immensely powerful tool with numerous applications. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mina employs linear recursive proofs to compress its blockchain, which continuously grows, into a constant size.&lt;/li&gt;
&lt;li&gt;Mina also utilizes "rollup-like" tree-based recursive proofs to compress transactions within blocks down to a constant size in parallel.&lt;/li&gt;
&lt;li&gt;An app-specific rollup, such as a Mastermind game, can use linear recursive proofs to advance the application's state machine without needing to sync back to the game.&lt;/li&gt;
&lt;li&gt;App-specific rollups can communicate with each other using recursion, similar to how app chains utilize Inter-Blockchain Communication (IBC) in Cosmos or Cross-Chain Virtual Machine (XVM) in parachains to send messages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also shared a video over twitter explaining how typescript developers can now start building zkApps. Check it out &lt;a href="https://x.com/ThisisVanshika/status/1786098429988651174/video/1"&gt;here&lt;/a&gt; &lt;/p&gt;
&lt;h2&gt;
  
  
  Setting up zkApp CLI to scaffold, write, test, and deploy zkApps (zero knowledge apps) for Mina Protocol
&lt;/h2&gt;

&lt;p&gt;We will start off with dependencies :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NodeJS v18 and later&lt;/li&gt;
&lt;li&gt;NPM v10 and later&lt;/li&gt;
&lt;li&gt;git v2 and later&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have a later version of a dependency, install the required version using the package manager for your system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MacOs Homebrew&lt;/li&gt;
&lt;li&gt;Windows Chocolatey&lt;/li&gt;
&lt;li&gt;Linux (apt, yum, and others)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As recommended by the Node.js project, you might need to install a recent Node.js version using NodeSource binary distributions: Debian, rpm.&lt;/p&gt;

&lt;p&gt;To verify your installed versions of dependencies, use node -v, npm -v, and git -v.&lt;/p&gt;

&lt;p&gt;Usage&lt;br&gt;
To see usage information for all of the zkApp CLI commands:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ zk --help&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install the zkApp CLI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To install the latest version:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install -g zkapp-cli&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;To confirm successful installation:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ zk --version&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Building zkApps using &lt;code&gt;zkapp-cli&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1.Create a project&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ zk project &amp;lt;project-name&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;o1js is automatically installed when you generate a project using the zkApp CLI.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To proceed without an accompanying UI project, select none when prompted.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;See Option B: Start your own project.&lt;/p&gt;

&lt;p&gt;To create a UI, select a framework and follow the prompts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.Implementing test code for the project&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you use the zkApp CLI to create a project, it comes with built-in tests and examples.&lt;/p&gt;

&lt;p&gt;o1js provides an array of 10 test accounts for the simulated LocalBlockchain instance, which are used to pay fees and sign transactions. These can be accessed via `Local.testAccounts.&lt;/p&gt;

&lt;p&gt;The example utilizes the public/private key pairs of two of these accounts, named as follows (though you can rename them as needed):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;deployerAccount: Deploys the smart contract&lt;/li&gt;
&lt;li&gt;senderAccount: Pays transaction fees&lt;/li&gt;
&lt;li&gt;Deploy the smart contract to the simulated LocalBlockchain instance, which acts as a test network.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Refer to the localDeploy function,for example, in the &lt;code&gt;[Add.test.ts]&lt;/code&gt;(&lt;a href="https://github.com/o1-labs/zkapp-cli/blob/main/templates/project-ts/src/Add.test.ts#L38-L46"&gt;https://github.com/o1-labs/zkapp-cli/blob/main/templates/project-ts/src/Add.test.ts#L38-L46&lt;/a&gt;) example file for details.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Adding the implementation for smart contract&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Start experimenting with iterative development to build and test one method at a time. Add functionality to the smart contract by implementing a &lt;code&gt;@method&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Build the smart contract:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;npm run build&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Invoke the @method you added or use new functionality in the test file.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To test zkApp locally you can &lt;code&gt;npm run test&lt;/code&gt; in your project's root repository which will allow you to run and test application on a simulated local blockchain.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;4. Test with Lightnet&lt;/strong&gt;&lt;br&gt;
Use Lightnet to accurately test your zkApp in a Mina blockchain-like environment.&lt;/p&gt;

&lt;p&gt;Start Lightnet with the following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;zk lightnet start&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br&gt;
By default, this launches a single node, which should meet most testing needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check the status of your local blockchain:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;zk lightnet status&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br&gt;
Communicate with the Mina Accounts-Manager service to retrieve account details. This service is available at:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;http://localhost:8181/&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Use the HTTP endpoints to acquire, release, list, lock, and unlock accounts.&lt;/p&gt;

&lt;p&gt;Configure your zkApp to interact with the Lightnet blockchain using the endpoints provided by the zk lightnet status command.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set the Mina GraphQL API URL for deployment to:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;http://localhost:8080/graphql&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Set the transaction fee for deployment (in MINA) to &lt;code&gt;0.1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Deploy your zkApp to Lightnet:&lt;/strong&gt; &lt;br&gt;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;zk deploy&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can check out the example application &lt;a href="https://github.com/o1-labs/zkapp-cli/tree/main/templates/project-ts/src"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here are necessary links that will help you better guide and build zkApps.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.minaprotocol.com/zkapps/zkapp-development-frameworks"&gt;zkApp development framework&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.minaprotocol.com/zkapps/writing-a-zkapp/introduction-to-zkapps/how-to-deploy-a-zkapp"&gt;Deploying zkApp&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can join Mina's &lt;a href="https://discord.com/invite/minaprotocol"&gt;discord channel&lt;/a&gt; to learn more and connect with Mina developers as well as the community.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SubQuery Network : the Future of Decentralized Web3 Infrastructure</title>
      <dc:creator>Vanshika Srivastava</dc:creator>
      <pubDate>Wed, 06 Mar 2024 17:56:50 +0000</pubDate>
      <link>https://dev.to/vanshikasrivastava/subquery-network-the-future-of-decentralized-web3-infrastructure-37i8</link>
      <guid>https://dev.to/vanshikasrivastava/subquery-network-the-future-of-decentralized-web3-infrastructure-37i8</guid>
      <description>&lt;p&gt;TL ; DR&lt;/p&gt;

&lt;p&gt;Blockchain technology is rapidly advancing, processing numerous transactions every second. However, unlike traditional databases, blockchain data is not easily searchable due to its ledger structure. To query the blockchain, data must be indexed. This data is extremely valuable for developers to track activities happening on-chain. The Subquery network offers decentralized middleware services like indexers and RPC providers, supporting over 150 ecosystems across the web3 ecosystem. It provides decentralized APIs to dApp developers, allowing data aggregation across multiple chains within a single project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But first, what is data indexing ?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the context of databases, the concept of data indexing is well-known.However, in the web3 ecosystem, it has a slightly different objective. Essentially, indexing involves organizing, structuring, and formatting data which includes contracts, events, transactions residing on various blockchain networks such as Ethereum, etc. As a developer, one can streamline the data retrieval from these various chains and also understand the user behavior and interaction on-chain. Indexers are tools that help you to query the data stored on blockchain and can index smart contract events based on certain conditional statements provided by developers.&lt;/p&gt;

&lt;p&gt;Due to blockchain’s decentralized nature, the data is spread across thousands of nodes which can make it difficult to aggregate and utilize as per the needs. It would be really difficult for anyone to fetch data around a specific wallet address, to be able to run an efficient query that requires indexers. It's important to highlight this because, for example, accessing details like the first transaction of wallet "XYZ" with a token "TKN" or the largest transaction in the smart contract "SC" is impossible unless the smart contract explicitly stores this data.&lt;/p&gt;

&lt;p&gt;A truly decentralized set of indexers will perform better as the nodes are distributed and will keep the system away from the DDOS attack. Secondly, decentralized indexers are not reliant on a single server so there is no single point of failure if one server goes down.&lt;/p&gt;

&lt;p&gt;With that being mentioned, let me introduce you to SubQuery Network, a true decentralized infrastructure provider with an open-source data indexer that is fast, flexible and supports to 100+ ecosystems including Osmosis, Cosmos, Ethereum, Polygon, Polkadot, Algorand,etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;A developer introduction to SubQuery Network&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Decentralised Data Indexers provided by SubQuery offer fast, reliable, and customized APIs for web3 projects. By providing an indexed data layer, one can easily retrieve data and enable intuitive user experiences across the dApp. The process of building, testing, deploying, and running these Data Indexers is simplified, making dApp development a breeze with SubQuery.&lt;/p&gt;

&lt;p&gt;The SubQuery Network can accommodate any SubQuery Project from any Layer 1 network, whether it's within Polkadot or not. Its design and construction are inherently multi-chain, which allows for indexing of projects from various networks side by side.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ful781rl5t7ugxwrl38d0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ful781rl5t7ugxwrl38d0.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Key Features of the SubQuery’s Comprehensive Multi-chain Indexer&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;EVM, WASM, and more: The indexer supports a wide range of smart contract execution languages, providing users with maximum flexibility.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Write once, run anywhere: With the capacity to index multiple networks into a single database, it simplifies and streamlines operations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Absolute performance: The indexer boasts rapid syncing and indexing optimizations, ensuring superior performance at all times.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The power of GraphQL: Supporting filtering, subscriptions, and aggregation, the indexer is equipped with all the features necessary for any project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Faster reindexing: Thanks to automated historical state tracking, partial data can be reindexed more quickly, saving valuable time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lightweight and portable: The indexer doesn't require an expensive archive and can connect directly to any RPC, making it a cost-effective and efficient solution.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The SubQuery network has four primary participants.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consumers:&lt;/strong&gt; These are the entities that request specific data for their decentralized applications (dApps) or tools from the SubQuery Network. For each data request, they pay a predetermined amount of SQT. For more information, refer to the section on Consumers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;RPC Providers:&lt;/strong&gt; Also known as Node Operators, RPC Providers operate the SubQuery Data Node optimized for performance. They are compensated in SQT for offering reliable, affordable, and scalable RPC services to the network. For more insights, look into the RPC Providers section.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Indexers:&lt;/strong&gt; As Node Operators, Data Indexers manage and maintain high-quality SubQuery projects within their infrastructure. This includes running both the indexer and query service. They receive SQT rewards for the data requests they cater to. Further details are available in the Data Indexers section.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Delegators:&lt;/strong&gt; Delegators participate in the network by supporting their preferred Node Operators. They earn rewards based on the work performed by these Node Operators. More information can be found in the Delegators section.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Building your first project with SubQuery :
&lt;/h3&gt;

&lt;p&gt;Now its time to Build ⚒️ We will try to spin up necessary dependencies for our SubQuery project.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Prerequisities :&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;NodeJS: You will need a recent version of NodeJS installed, preferably the LTS version.&lt;/p&gt;

&lt;p&gt;Docker: This tutorial will utilize Docker for running a local variant of SubQuery's node.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install the SubQuery CLI:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Install SubQuery CLI globally on your terminal by using NPM.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# npm installation&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @subq/cli

&lt;span class="c"&gt;# Testing installation with command argument&lt;/span&gt;
subql &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Initialising a new SubQuery project :&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Run the following command inside the directory that you want to create a SubQuery project in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;subql init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Once you have successfully initialised the package, you will be asked certain questions around the project.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project name&lt;/strong&gt;: A project name for your SubQuery project.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network family&lt;/strong&gt;: The layer-1 blockchain network family that this SubQuery project will index. Use the arrow keys to select from the available options (scroll down as there are multiple pages).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network&lt;/strong&gt;: The specific network that this SubQuery project will index. Use the arrow keys to select from the available options (scroll down as there are multiple pages).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Template project&lt;/strong&gt;: Select a SubQuery template project that will provide a starting point in the development. For some networks we provide multiple examples.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RPC endpoint&lt;/strong&gt;: Provide an HTTP or websocket URL to a running RPC endpoint, which will be used by default for this project. You can use public endpoints for different networks, your own private dedicated node, or just use the default endpoint. This RPC node must have the entire state of the data that you wish to index, so we recommend an archive node.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git repository&lt;/strong&gt;: Provide a Git URL to a repo that this SubQuery project will be hosted in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authors&lt;/strong&gt;: Enter the owner of this SubQuery project here (e.g. your name!) or accept the provided default.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Provide a short paragraph about your project that describes what data it contains and what users can do with it, or accept the provided default.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Version&lt;/strong&gt;: Enter a custom version number or use the default (&lt;code&gt;1.0.0&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License&lt;/strong&gt;: Provide the software license for this project or accept the default (&lt;code&gt;MIT&lt;/code&gt;).
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;subql init
Project name &lt;span class="o"&gt;[&lt;/span&gt;subql-starter]: demo-subquery
? Select a network family Ethereum
? Select a network Ethereum
? Select a template project ethereum-starter     Starter project &lt;span class="k"&gt;for &lt;/span&gt;Ethereum networks
RPC endpoint: &lt;span class="o"&gt;[&lt;/span&gt;https://eth.api.onfinality.io/public]:
Git repository &lt;span class="o"&gt;[&lt;/span&gt;https://github.com/subquery/ethereum-subql-starter]: &lt;span class="o"&gt;[&lt;/span&gt;https://github.com]&lt;span class="o"&gt;(&lt;/span&gt;https://github.com/jamesbayly/test-subquery-project&lt;span class="o"&gt;)&lt;/span&gt;/vanshika-srivastava/demo-subquery
Description &lt;span class="o"&gt;[&lt;/span&gt;This project can be use as a starting po...]: A demo project &lt;span class="k"&gt;for &lt;/span&gt;showcasing subquery
Version &lt;span class="o"&gt;[&lt;/span&gt;0.0.1]:
License &lt;span class="o"&gt;[&lt;/span&gt;MIT]:
Preparing project... &lt;span class="k"&gt;done
&lt;/span&gt;demo-subquery is ready
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Once initialised, your directory structure would look something like this :
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;demo-subquery
 L .github
 L abis
 L docker
 L src
    L mappings
      L mappingHandlers.ts
    L &lt;span class="nb"&gt;test
    &lt;/span&gt;L index.ts
 L .gitignore
 L LICENSE
 L &lt;span class="o"&gt;[&lt;/span&gt;README.md]&lt;span class="o"&gt;(&lt;/span&gt;http://readme.md/&lt;span class="o"&gt;)&lt;/span&gt;
 L docker-compose.yml
 L package.json
 L project.ts
 L schema.graphql
 L tsconfig.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Now, let run the following command to install the right dependencies inside the directory we just had set up. I am using npm, but if you like you can use yarn as well.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;npm&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;demo-subquery
npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To have more reference of other command line arguments supported by SubQuery you can simply checkout &lt;a href="https://academy.subquery.network/run_publish/references.html#csv-out-dir"&gt;this&lt;/a&gt; section of docs. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Post initialisation modifications :&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;There are 3 important files that needs to be modified. These are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The GraphQL Schema in &lt;code&gt;schema.graphql&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The Project Manifest in &lt;code&gt;project.ts&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The Mapping functions in &lt;code&gt;src/mappings/&lt;/code&gt; directory.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Based on the chain network that you would have opted, you can checkout the specific guide related to setting up the project. Here is the quickstart guide for the &lt;a href="https://academy.subquery.network/quickstart/quickstart_chains/"&gt;chains&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 You can generate a project from a JSON ABIs to save you time when creating your project in EVM chains. Scaffolding saves time during SubQuery project creation by automatically generating typescript facades for EVM transactions, logs, and types. Please see more here on &lt;strong&gt;&lt;a href="https://academy.subquery.network/quickstart/quickstart.html#evm-project-scaffolding"&gt;EVM Project Scaffolding&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  What’s next for developers ?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;SubQuery offers a managed service solution that allows you to effortlessly publish your project. You can deploy your new project to the &lt;strong&gt;&lt;a href="https://managedservice.subquery.network/"&gt;SubQuery Managed Service&lt;/a&gt;&lt;/strong&gt; and use the &lt;a href="https://explorer.subquery.network/"&gt;SubQuery &lt;strong&gt;Explorer&lt;/strong&gt;&lt;/a&gt; for querying. For a comprehensive guide on how to publish your new project to SubQuery Projects, refer to the &lt;a href="https://academy.subquery.network/run_publish/publish.html#benefits-of-hosting-your-project-with-subquery-s-managed-service"&gt;provided instructions&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For an in-depth understanding of the developer documentation, refer to the &lt;strong&gt;&lt;a href="https://academy.subquery.network/build/introduction.html"&gt;Build&lt;/a&gt;&lt;/strong&gt; section. Here, you'll learn more about the three essential files: the manifest file, the GraphQL schema, and the mappings file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SubQuery allows you to run a &lt;a href="https://academy.subquery.network/run_publish/run.html"&gt;local SubQuery node&lt;/a&gt; which includes indexer and query service along with the Managed service. You can run this service using Docker or running individual components using NodeJS.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can checkout some of the advance features of SubQuery Network here :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://academy.subquery.network/build/multi-chain.html"&gt;Multi-chain indexing support&lt;/a&gt;&lt;/strong&gt; - SubQuery allows you to index data from across different layer-1 networks into the same database, this allows you to query a single endpoint to get data for all supported networks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://academy.subquery.network/build/dynamicdatasources.html"&gt;Dynamic Data Sources&lt;/a&gt;&lt;/strong&gt; - When you want to index factory contracts, for example on a DEX or generative NFT project.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://academy.subquery.network/run_publish/query/subscription.html"&gt;GraphQL Subscriptions&lt;/a&gt;&lt;/strong&gt; - Build more reactive front end applications that subscribe to changes in your SubQuery project.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are someone using The Graph and would like to migrate to SubQuery, here is how you can &lt;a href="https://academy.subquery.network/build/graph-migration.html"&gt;migrate&lt;/a&gt; your project. You can also read more on how SubQuery is different compared to The Graph. &lt;/p&gt;

&lt;h2&gt;
  
  
  SubQuery's Future Roadmap: Enhancing RPC Performance and Democratizing Access
&lt;/h2&gt;

&lt;p&gt;SubQuery has already achieved significant breakthroughs in decentralized data indexing. The focus now shifts to enhancing the performance of RPCs with the SubQuery Data Node and transitioning RPC access with SubQuery's Sharded Data Nodes. These initiatives are expected to unlock the next level of performance improvements in the web3 sphere.&lt;/p&gt;

&lt;p&gt;Historically, the performance of data indexers and numerous other applications has been confined by the limitations of RPC endpoints. Developers have primarily concentrated on developing nodes that ensure efficient validation, thereby safeguarding the network. As a result, RPCs are not optimized for querying and impose high operational costs.&lt;/p&gt;

&lt;p&gt;The introduction of L2 chains increases transaction speed, but their limited querying capabilities make data retrieval inefficient. In Q2 2024, SubQuery plans to launch the Data Node, a heavily modified RPC node that is optimized for querying. This includes optimized endpoints like eth_getLog and the ability to filter transactions in a single API call. The Data Node will be open-source, inviting contributions, extensions, or forks from the community. Initially, it will support leading layer-2s and other EVM networks, and it will be optimized to function on the SubQuery Network in a decentralized manner.&lt;/p&gt;

&lt;p&gt;By the end of 2024, SubQuery aims to democratize RPCs by introducing the Sharded Data Node. This will make RPCs more affordable to run and operate for node providers.&lt;/p&gt;

&lt;p&gt;You can join SubQuery’s community &lt;a href="https://discord.com/invite/subquery"&gt;here&lt;/a&gt; to stay updated with everything that’s being worked on by SubQuery team. If you are developer like me and would like to contribute to the project itself,  you can checkout the contribution guide &lt;a href="https://academy.subquery.network/miscellaneous/contributing.html"&gt;here&lt;/a&gt; .&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Understanding Power of Horizen EON's Stateful Model: User Experience in Account-Based Transactions</title>
      <dc:creator>Vanshika Srivastava</dc:creator>
      <pubDate>Wed, 28 Feb 2024 17:49:21 +0000</pubDate>
      <link>https://dev.to/vanshikasrivastava/understanding-power-of-horizen-eons-stateful-model-user-experience-in-account-based-transactions-58if</link>
      <guid>https://dev.to/vanshikasrivastava/understanding-power-of-horizen-eons-stateful-model-user-experience-in-account-based-transactions-58if</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;In blockchain, we have two major accounting models, UTXO which views the state as a flow of assets between addresses while in the account-based model, the state changes with each transaction adjusting account balances accordingly. Horizen’s EON is a powerful EVM (Ethereum Virtual Machine) sidechain that is able to send and receive $ZEN via the Cross Chain Transfer Protocol using zero knowledge cryptography.   Some of the many advantages of Horizen EON is to improve user experience,reduce development complexities and provide a set of tools and ecosystem to integrate with different dApps and deploy smart contracts on top of the network. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Blockchain space has been growing faster than we anticipated. The infrastructure for Web3 applications must be enhanced to manage a greater volume of transactions, improve performance, and maintain privacy. The user experience is the highlight of any product, users want to have full ownership of every function as well as their funds.&lt;/p&gt;

&lt;p&gt;In order to support this demand for true decentralization, enhanced security and transaction efficiency, &lt;a href="https://eon.horizen.io"&gt;Horizen&lt;/a&gt; has created a new paradigm for developers and end-users. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://www.horizen.io/what-is-horizen/"&gt;Horizen&lt;/a&gt; is an interoperable blockchain ecosystem that prioritizes security  and the ability to scale. At its core, it employs the zero-knowledge-proof protocol, specifically zk-SNARKs, to secure communications and ensure that inter-chain conversations remain safe.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj96d45vvyvzu9wp8vhrg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj96d45vvyvzu9wp8vhrg.jpeg" alt="Image description" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To defend against potential blockchain attacks like the 51% attack, Horizen has implemented a robust set of security measures. This includes a carefully designed consensus mechanism, the notarization of blocks across multiple chains, and TLS end-to-end encryption to shield data from prying eyes.&lt;/p&gt;

&lt;p&gt;It also uses the largest and most decentralized multi-tiered node network in the industry, ensuring reliability and maintaining a distributed ecosystem.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Horizen is compatible with the Ethereum Virtual Machine (EVM) via  Horizen EON, which is a sidechain and is a smart contract platform for developers to support the blockchain trilemma for decentralization, scalability and privacy and uses Horizen’s massive computational power.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Throughout this article, we will explore how the EON sidechain from Horizen supports an account-based model for web3 users and examine the broader implications this has on transactions and decentralized applications.&lt;/p&gt;

&lt;p&gt;To learn more on Horizen’s architecture, you can check out the official docs &lt;a href="https://www.horizen.io/technology/"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Evolution of blockchain models
&lt;/h3&gt;

&lt;p&gt;Blockchain is a distributed ledger of transactions, fully immutable and always available. Now, to prove the source of transaction and the balances of cryptocurrency a user owns on a network, we have two models of keeping a record for transactions: the Unspent Transaction Output (UTXO) model and the account-based model. From a blockchain architecture perspective, they play a role in maintaining the accurate “ledger” of transactions while ensuring privacy.&lt;/p&gt;

&lt;p&gt;To give a brief of both models, the UTXO model is simple and privacy-focused, treating each coin as a unique transaction output. Bitcoin, for instance, uses the UTXO model. Each transaction creates a new set of UTXOs, and the ownership of these UTXOs is what represents a user's cryptocurrency balance. Now, once a transaction is completed on the blockchain, the tokens or funds that were spent get removed from the UTXO database. UTXOs can be considered individual chunks of funds that can be combined and broken down to process transactions.&lt;/p&gt;

&lt;p&gt;In the account-based model, which is followed by Ethereum, the assets are represented as balances with accounts. You can think of this model as a simple banking process where a bank being a ledger, records the transfer of the assets or funds as debit and credit in the respective user accounts. In other words, account-based blockchains would technically not track any of the tokens you own but notify changes on the accounts or wallet addresses. Therefore, the user's identity, represented by their unique account address, becomes integral to the transaction process.&lt;/p&gt;

&lt;p&gt;Let’s take a look at how the stateful architecture of an account-based model impacts the overall user experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stateful model and potential of account-based blockchains
&lt;/h2&gt;

&lt;p&gt;Before we jump into the stateful architecture and state mechanisms, it's essential to understand the basic structure of a blockchain. This structure is adhered to regardless of whether the blockchain is based on UTXO or accounts.&lt;/p&gt;

&lt;p&gt;Transactions are disseminated across the network:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A new block is generated&lt;/li&gt;
&lt;li&gt;Transactions are permanently recorded on the chain&lt;/li&gt;
&lt;li&gt;Smart Contracts are the backbone of the blockchain systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The stateful model connects with the “memory” of smart contracts to remember information about its ‘previous interactions’ on the blockchain.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For instance, Ethereum uses a stateful architecture in which all the miners on the blockchain network update their copy of the network each time a new transaction occurs on the blockchain. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Comparatively, in the UTXO model of Bitcoin, the smart contracts are inherently stateless. This is why a UTXO is destroyed once it has been spent.&lt;/p&gt;

&lt;p&gt;Smart contracts, owing to their stateful nature, are capable of managing interactions with more programmable logic than their stateless counterparts. They can also store and update chain values. &lt;/p&gt;

&lt;p&gt;Platforms like Horizen, thanks to the account-based model, can build applications effectively. Its public proof-of-stake sidechain, EON, is fully compatible with EVM smart contracts. This compatibility aids in the development and deployment of decentralized apps on Horizen while maximizing the advantages of the Ethereum ecosystem.&lt;/p&gt;

&lt;p&gt;The stateful model introduces two distinct account types: Externally Owned Accounts (EOAs) and Contract Accounts. &lt;/p&gt;

&lt;p&gt;EOAs are created when a user initiates their wallet, whereas Contract Accounts are established when a user deploys a smart contract. In later sections, we will dive deeper into these and understand how they impact the overall user experience on stateful blockchains.&lt;/p&gt;

&lt;h2&gt;
  
  
  Blockchain as a “state” machine
&lt;/h2&gt;

&lt;p&gt;In a blockchain context, the term "state" refers to a snapshot of all information on the blockchain at a particular point in time. This includes the current status of all accounts and transactions in the network. It's a dynamic concept, continuously updated with each new block added to the blockchain, ensuring it reflects the latest transactions and account balances.&lt;/p&gt;

&lt;p&gt;Now, let's discuss the difference in how the UTXO and the account-based models handle state.&lt;/p&gt;

&lt;p&gt;The UTXO model, used by Bitcoin, captures the state as an set of Unspent Transaction Outputs, which are the outputs of past transactions that have not been spent. Each transaction modifies the state by consuming some UTXOs and producing new ones. The state in the UTXO model is thus a flow of assets between addresses, represented as a directed acyclic graph (DAG).&lt;/p&gt;

&lt;p&gt;On the other hand, the account-based model, used by Ethereum, reflects the state as the current balances of all accounts on the network. When a transaction occurs, the state changes, with the sender's account balance decreasing and the receiver's account balance increasing. The state in the account-based model is essentially a snapshot of all account balances at a given moment, maintained as a database of network states.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future of account based models - EOAs and Contract Accounts
&lt;/h2&gt;

&lt;p&gt;Externally Owned Accounts (EOAs) are created when a user initiates their wallet in the Ethereum network. EOAs are directly controlled by private keys and primarily serve the purpose of initiating transactions. They offer users full control over their assets, as they can freely transfer funds to other accounts or interact with Contract Accounts.&lt;/p&gt;

&lt;p&gt;The Ethereum Virtual Machine (EVM) features a BALANCE operation, which enables us to easily look up an address's balance inside the code running on the EVM. This is a much simpler process than adding all unspent transaction outputs that list a particular address as their recipient.&lt;/p&gt;

&lt;p&gt;In addition to the balance, each Ethereum address also includes a nonce. The nonce is a count of all transactions sent from that specific address. This factor is pivotal in differentiating the account-based and UTXO models, where such a count is not maintained. The nonce provides a sequence number for transactions, ensuring their correct order and preventing double-spending and replay attacks.&lt;/p&gt;

&lt;p&gt;On the other hand, Contract Accounts are established when a user deploys a smart contract on the Ethereum network. Unlike EOAs, Contract Accounts are governed by their contract code and can only perform actions when triggered by an EOA. They hold both the contract code and its associated data.&lt;br&gt;
The balances, storage, and code space within these accounts are the foundation for efficient and versatile transactions within the stateful model.&lt;/p&gt;

&lt;p&gt;A contract account can preserve the address of another contract with which it needs to interact. As this address is stored, it can be modified through transactions. Thus, it's feasible to upgrade a system by launching new contracts and executing a transaction to update references to the new addresses. This process, often called smart contract upgradeability, can be somewhat complex.&lt;/p&gt;

&lt;h2&gt;
  
  
  User Experience for account-based model vs UTXO
&lt;/h2&gt;

&lt;p&gt;For any user, transaction fees are the starting point to compare the user experience. The method of calculating transaction fees under the account-based model differs significantly from that under the UTXO model. Instead of imposing fees for data storage, the account-based model charges based on the computational resources necessary for processing and validating the transaction. &lt;/p&gt;

&lt;p&gt;This approach is facilitated by global state tracking, a comprehensive database detailing all accounts, keys, contract codes, and balances across the network. Having this complete perspective allows the computational expenses associated with state transitions to form the basis for fee calculation. &lt;br&gt;
In contrast, UTXO-based systems can only access the overall network state's local transaction inputs and outputs. &lt;/p&gt;

&lt;p&gt;The essential components of accounts on Ethereum include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Balance: The quantity of ETH held by the account. &lt;/li&gt;
&lt;li&gt;Nonce: A counter indicating the number of confirmed transactions. &lt;/li&gt;
&lt;li&gt;Storage: The storage space occupied by the smart contract code. &lt;/li&gt;
&lt;li&gt;Code: This applies exclusively to contract accounts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In essence, each account undergoes direct value and information transfers during state transitions, which dynamically affects the status of the network.&lt;/p&gt;

&lt;p&gt;As a developer, another reason why choosing an account-based model chain, such as using Horizen’s EON sidechain, would make more sense is because of the underlying tech of how Ethereum uses a Turing complete programming language and allows the arbitrary logic added to smart contracts for more flexibility as well as simplicity to offer decentralized applications serving custom purpose. &lt;/p&gt;

&lt;p&gt;In contrast to the UTXO model, each transaction in the account model requires just a single reference and signature, resulting in only one output. This leads to considerable space savings, a critical factor for a large and complex blockchain like Ethereum. &lt;/p&gt;

&lt;p&gt;To sum it up, the stateful architecture eliminates the complexities of handling individual transaction outputs and calculating "change," making the transaction process more intuitive and user-friendly. The account-based model is pivotal in EON's blockchain architecture with its nuanced account types - Externally Owned Accounts and Contract Accounts.&lt;/p&gt;

&lt;p&gt;With the support of an account-based model and Horizen’s largest node network for a decentralized and secure experience across the ecosystem, we can truly say that the future of web3 is going to be simplified without compromising on blockchain trilemma and developers can opt for a modular settlement layer with EVM compatible sidechain EON for a seamless experience.&lt;/p&gt;

&lt;p&gt;Checkout some of the &lt;a href="https://docs.horizen.io/horizen_eon/tutorials/todolist"&gt;developer examples&lt;/a&gt; in the &lt;a href="https://docs.horizen.io/"&gt;official documentation&lt;/a&gt;. Join the Horizen’s community on &lt;a href="https://discord.com/invite/horizen"&gt;discord&lt;/a&gt; to start learning more about EON sidechain and building with the best infrastructure out there.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>blockchain</category>
      <category>ux</category>
      <category>cryptocurrency</category>
    </item>
    <item>
      <title>Getting started with DevSecOps</title>
      <dc:creator>Vanshika Srivastava</dc:creator>
      <pubDate>Tue, 09 Aug 2022 15:00:16 +0000</pubDate>
      <link>https://dev.to/vanshikasrivastava/getting-started-with-devsecops-n2k</link>
      <guid>https://dev.to/vanshikasrivastava/getting-started-with-devsecops-n2k</guid>
      <description>&lt;p&gt;&lt;em&gt;You might have heard a lot about DevOps, but what do you know about DevsecOps ?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Well in this blog, I am going to introduce this term and why we need to focus on DevSecOps as a key function.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What is DevSecOps?
&lt;/h3&gt;

&lt;p&gt;DevSecOps stands for Developer, Security and Operations. DevSecOps can be taken as DevOps process but with a security layer.&lt;/p&gt;

&lt;p&gt;If we go by looking at the traditional DevOps model - the security process is almost absent but usually executed post-deployment which is not a very good idea for any kind of tool/application or project. DevOps revolves around three pillars - People, Product and Processes (as quoted by - Donavan Brown) but when we talk about DevSecOps, we apply security techniques to all these three components.&lt;/p&gt;

&lt;p&gt;“The purpose and intent of DevSecOps is to build on the mindset that everyone is responsible for security with the goal of safely distributing security decisions at speed and scale to those who hold the highest level of context without sacrificing the safety required,” describes Shannon Lietz, co-author of the “DevSecOps Manifesto.”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F65cq3ri374yub2umbucv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F65cq3ri374yub2umbucv.png" alt="Image credits : Blog.mastek.com" width="800" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DevSecOps is different from DevOps in the following ways -&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Continuous Integration, delivery and deployment to make sure security testing is regular and automated before the application is pushed to production.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Application built like microservice&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Infrastructure as Code - planning, designing, implementing and managing app infrastructure through code&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Features of introducing DevSecOps-&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;li&gt;Traceability&lt;/li&gt;
&lt;li&gt;Compliance&lt;/li&gt;
&lt;li&gt;Confidence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Following the Shift Left Trend :&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The earlier you run the security,
the better for your team, product and costs.
You don’t want your developers to work again
on the code base and other issues post-deployment.
This means, the engineers work on
security issues parallelly to working on the product.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Some tips that can make your security operations better when your application is under development -&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make security part of backlog or sprint activity&lt;/li&gt;
&lt;li&gt;Assume breaches - progressively expose them to engineering teams so that vulnerabilities can be identified and fixed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DevSecOps practices reduce the time to patch vulnerabilities and free up security teams to focus on priority work. As a process, they also ensure and simplify compliance, saving application development projects from having to be retrofitted for security.&lt;/p&gt;

&lt;p&gt;There’s no doubt that DevSecOps revolutionizes the way organizations handle security for applications.  However, due to a variety of reasons—such as a lack of awareness of what DevSecOps is, there might be a shift in interests.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;What’s next ?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;After exploring DevOps, I am working on learning more about DevSecOps. Here is an open source tool for the same - &lt;a href="//www.boxyhq.com"&gt;BoxyHQ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Find Github : github.com/boxyhq&lt;br&gt;
Join the BoxyHQ Discord Community &lt;strong&gt;&lt;a href="https://discord.gg/TwXaPmxK"&gt;here&lt;/a&gt;&lt;/strong&gt; &lt;/p&gt;

</description>
      <category>devsecops</category>
      <category>developersecurity</category>
      <category>opensource</category>
      <category>developertool</category>
    </item>
    <item>
      <title>Breaking into Tech from a non-technical background 💪</title>
      <dc:creator>Vanshika Srivastava</dc:creator>
      <pubDate>Sat, 06 Aug 2022 12:30:09 +0000</pubDate>
      <link>https://dev.to/vanshikasrivastava/breaking-into-tech-from-a-non-technical-background-1po7</link>
      <guid>https://dev.to/vanshikasrivastava/breaking-into-tech-from-a-non-technical-background-1po7</guid>
      <description>&lt;p&gt;&lt;em&gt;Hello amazing community folks!!! I'm so glad I'm finally deciding on writing blog posts and my first one had to be about my journey in tech field.&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  The first time I felt I should go in Tech :
&lt;/h3&gt;

&lt;p&gt;If you ask me when did I get interested or felt like getting involved in tech, I wouldn't have a precise answer to that.&lt;br&gt;
Tech and development came to me very naturally, more of like hobby.&lt;/p&gt;

&lt;p&gt;I remember the days from teenage hood, when computer science was part of school syllabus, I enjoyed helping my mates when we would build simple websites on HTML.(I know that HTML is not a programming language, pls don't start a comment thread over that haha). All I wanted to do was explore.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h3&gt;
  
  
  The bottom line of stepping in Tech :
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;I have always said that the most important part of being in Tech is that you constantly explore, learn, apply and again learn.&lt;/em&gt; This is a never ending cycle.&lt;br&gt;
The more you know, the less it is - technology will change, always and faster than you think.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  The first time I wrote "hello world" :
&lt;/h3&gt;

&lt;p&gt;I began six years ago, the resources were limited, it took time to figure out a lot of things if you are self taught. I grew up between smartphones being just launched and facebook was still a thing.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`My first "hello world" was in Python.`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;YES, thats my first programming language and I believe I am not the only one who did this. I used to borrow books from library on Python and learn things. It was a tedious process and no doubt it paid off. Overtime, I learnt Java, MySQL and database handling with python.&lt;/p&gt;

&lt;h3&gt;
  
  
  Coding was not a necessity but a choice :
&lt;/h3&gt;

&lt;p&gt;Since I began to learn things, one thing I understood about myself was - I cannot repeat the same set of tasks everyday. This meant, that even though I loved coding, I would still hop off to graphic designing and poetry (hidden talent you may call) to get some mind off from coding.&lt;br&gt;
I loved communicating with people and being very honest - loved extra co-curriculars.&lt;/p&gt;

&lt;p&gt;Talking about my education, in my intermediate I chose the stream which people were quite disappointed about.&lt;/p&gt;

&lt;p&gt;Any guesses ?&lt;/p&gt;

&lt;p&gt;I took Commerce. I felt I had strong desires to learn how business and management works but my love for IT didn't end with this choice. Engineering was something that would have never worked out for me. I knew that, the quench of this expanding horizons in tech wouldn't come by my degree and therefore it's not necessary to go with a conventional choice of subject.&lt;/p&gt;

&lt;p&gt;The best or strongest combination I built over years was mix of management and tech. People went from doing engineering and then taking MBA. This thing taught me a lot.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Skills + Knowledge &amp;gt; Degree&lt;/code&gt; &lt;/p&gt;
&lt;h3&gt;
  
  
  Some educational history :
&lt;/h3&gt;

&lt;p&gt;I completed my 12th in 2020, yup the first set of batch who passed during covid and couldn't appear for two of my board exams. Out of which, one was Information Practices subject.&lt;br&gt;
In both my board exams- I have always been below 90%, my college is second tier, and I am doing course in business management field.&lt;/p&gt;
&lt;h3&gt;
  
  
  Open Source changed my life :
&lt;/h3&gt;

&lt;p&gt;I can't express the importance of Time when covid struck. A lot of people lost opportunities - and I took that period as an opportunity. I jumped in Open Source. I started learning and building in Public. I overcame the fear of speaking in public when there is no script and have to mention Twitter. This twitter community has given me so much.&lt;/p&gt;

&lt;p&gt;Open Source is one thing where your background will not matter as long as you know how to use Version Control and have control over one or more than one language.&lt;/p&gt;

&lt;p&gt;EVERY SINGLE CONTRIBUTION COUNTS.&lt;/p&gt;
&lt;h3&gt;
  
  
  My first stepping stone towards an internship :
&lt;/h3&gt;

&lt;p&gt;I started off with making non-code contributions from last year. Parallelly, I explored DevOps and learnt things around Kubernetes and Microservices. My first contribution happened to be in &lt;a href="https://dok.community/"&gt;Data on Kubernetes Community&lt;/a&gt;. This community is led Bart Farrell. I wrote a blog post based on one of the video and submitted it for review and good response. This boosted my confidence. With continuous contributions within community, the next amazing thing that happened was - I ended up being one of the four foundation interns at DoK Community. Kunal Kushwaha was the program head for that cohort. We learnt alot from collaborations, events and ofcourse about K8s.&lt;/p&gt;

&lt;p&gt;I am keeping the rest of the experiences for next time but&lt;br&gt;
one thing I do want to mention out is :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;There is no roadmap for breaking in tech.
You can't follow someone's exact path but
what you can do is always reach out to community
and collect as much knowledge as you can.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The objective of doing something related to tech should be more on the side of learning and giving something valuable to people&lt;/p&gt;




&lt;p&gt;In the end, I have just gratitude for the amazing community that has supported and motivated me to do better things - &lt;strong&gt;consistently&lt;/strong&gt; .&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Do let me know in comments if this blog helped you to get a clarity of thoughts or anything else that you would like to share :)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Until next time😃&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>opensource</category>
      <category>career</category>
    </item>
  </channel>
</rss>
