<?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: Bianca Buzea</title>
    <description>The latest articles on DEV Community by Bianca Buzea (@bianca_buzea).</description>
    <link>https://dev.to/bianca_buzea</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%2F897655%2F093cf1a9-f7e3-4457-845a-6606b4987cb6.jpg</url>
      <title>DEV Community: Bianca Buzea</title>
      <link>https://dev.to/bianca_buzea</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bianca_buzea"/>
    <language>en</language>
    <item>
      <title>Choosing the Right Oracle Solution: A Six-Dimensional Framework</title>
      <dc:creator>Bianca Buzea</dc:creator>
      <pubDate>Sat, 08 Mar 2025 19:28:51 +0000</pubDate>
      <link>https://dev.to/bianca_buzea/choosing-the-right-oracle-solution-a-six-dimensional-framework-56kc</link>
      <guid>https://dev.to/bianca_buzea/choosing-the-right-oracle-solution-a-six-dimensional-framework-56kc</guid>
      <description>&lt;p&gt;Most DeFi builders put a lot of effort into choosing the right chain, finding the best way to attract liquidity, and ensuring their protocol is optimized for performance. Yet, many overlook the importance of selecting the right oracle solution. As long as the price feeds are returning a value, it’s easy to overlook the crucial role oracles play in the system. &lt;/p&gt;

&lt;p&gt;Then the unexpected strikes. The oracle suddenly feeds an incorrect price for a key asset. Automated trades fire off at distorted values, collateral is miscalculated, and positions are liquidated unexpectedly across lending platforms. A cascade of liquidations and bad trades ripples through the DeFi ecosystem. In a matter of minutes, the oracle—once taken for granted—becomes the center of attention as protocols and users scramble to contain the fallout. &lt;br&gt;
The fallout is immediate and painful. Users lose funds, developers are stuck in damage control, and the trust that DeFi protocols rely on takes a hit. The root of the issue? Relying on a centralized oracle—a single point of failure in an otherwise decentralized system. Suddenly, everyone is questioning the reliability of the data driving DeFi, and the vulnerability becomes impossible to ignore.&lt;br&gt;
Decentralized oracles step in to restore order. Instead of trusting one source or relying on a bridge for delivery, decentralized oracles integrate natively, aggregate price data from multiple sources, and verify it through a network of validators, reducing the chance of manipulation or failure. DeFi protocols start adopting decentralized oracles to ensure price accuracy and reliability, preventing future catastrophes. It’s a necessary upgrade in the pursuit of trustless finance. &lt;br&gt;
With decentralized oracles in place, DeFi is in a stronger position. Now, the chances of a single bad point of failure causing massive liquidations or flash crashes are dramatically reduced. The data feeding into your protocol is more secure, more reliable, and more decentralized—just like the DeFi ecosystem itself. You may not have cared before, but now, decentralized oracles are the backbone that keeps your protocol running smoothly and your users protected.&lt;/p&gt;

&lt;p&gt;Oracle decentralization is an essential element, but there is much more to consider when choosing an oracle. In this article, we will present you with a framework that you can use when choosing an oracle to power your application, this framework considers 6 important dimensions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Oracle's Operational History&lt;br&gt;
Total Value Secured (TVS)&lt;br&gt;
Decentralization&lt;br&gt;
Node Operators/ Validators&lt;br&gt;
Data Sources Utilized&lt;br&gt;
Operating Cost&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F85swc1ssdkl98ohooygx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F85swc1ssdkl98ohooygx.png" alt="A Six-Dimensional Framework" width="800" height="143"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Oracle's Operational History
&lt;/h2&gt;

&lt;p&gt;When selecting a Web3 oracle for your DeFi protocol, evaluating how long the oracle has been securing assets is crucial. Oracles that have operated successfully over time demonstrate resilience and reliability, two essential qualities for securing funds in DeFi. A proven track record shows that the oracle can handle market fluctuations and scalability demands. Ultimately, opting for a well-established oracle helps safeguard your protocol by relying on an experienced data provider with a history of maintaining uptime and accuracy. &lt;/p&gt;

&lt;h2&gt;
  
  
  Total Value Secured (TVS)
&lt;/h2&gt;

&lt;p&gt;Total Value Secured or TVS is also a key metric to consider when choosing an oracle. TVS indicates the amount of value reliant on the oracle's data, reflecting trust from other protocols and the market's confidence in its reliability. A high TVS demonstrates that the oracle has successfully secured a large amount of assets without security issues, which can be reassuring for new users aiming to protect funds. By choosing an oracle with substantial TVS, you’re aligning with a provider that has proven its ability to secure high-value assets, reducing the risk to your own protocol’s users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Decentralization
&lt;/h2&gt;

&lt;p&gt;Decentralization is essential for Web3 oracles because it aligns with the core philosophy of Web3—trustlessness, transparency, and resilience. While blockchain networks offer strong guarantees of consistency and availability within their ecosystem, the external data sources they rely on do not. APIs, databases, and external websites can be hacked, altered, or even go offline, creating potential vulnerabilities. By using a decentralized network of validators, a Web3 oracle can minimize these risks, ensuring that no single point of failure or manipulation compromises data integrity or availability. Decentralized oracles distribute responsibility across multiple nodes and tap into diverse data sources, making the oracle more robust and secure—a crucial safeguard for protecting funds and maintaining trust in DeFi and other decentralized applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Node Operators/ Validators
&lt;/h2&gt;

&lt;p&gt;The validator network is at the heart of a Web3 oracle's decentralization and security. A critical question to ask when evaluating an oracle is: Who operates the nodes? If the oracle solely relies on nodes operated by its team, there is an inherent risk, even if the intentions are sound. Relying exclusively on internal nodes introduces a single point of failure and reduces resilience, as any technical failure, malicious attack, or simple human error could disrupt the service.&lt;/p&gt;

&lt;p&gt;In contrast, a decentralized validator network consisting of independent, reputable entities promises high levels of data integrity and network security. With multiple validators, no single entity can compromise or influence the data delivered to smart contracts, reducing the chance of manipulation or error. Validators from varied geographical locations and operating different infrastructure setups add resilience, distributing risk across a diversified network.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Sources Utilized
&lt;/h2&gt;

&lt;p&gt;When evaluating oracle networks, it’s essential to scrutinize the quality and integrity of their data sources. Key questions include: What sources does the oracle network rely on? Does it leverage tier-one, reputable data sources with established credibility, high liquidity, and a proven track record? Does it use primary sources, or secondary sources such as data aggregators? For oracle networks using onchain data sources, such as DEXs, are there at least 2-3 reliable data sources—ideally with at least two on the same chain—to enable MEV bots to arbitrage and prevent market manipulation?&lt;br&gt;
High-quality data sources are fundamental to minimizing the risk of inaccuracies or exploitation. Oracle networks must prioritize Tier 1 data sources with healthy liquidity that are resistant to manipulation. In contrast, reliance on low-quality or low-liquidity sources can be prone to market manipulation, undermining the security of the system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Operating Cost
&lt;/h2&gt;

&lt;p&gt;Lastly, cost is a critical factor when evaluating oracles. By design, oracles are gas-intensive, and during periods of network congestion, fluctuating gas prices can make them prohibitively expensive to operate.&lt;br&gt;
On Ethereum, the annual cost of running an oracle network can exceed $500,000, making high-quality oracles a luxury accessible only to the wealthiest protocols. Even on a Layer 2, the operating cost can be very expensive when you are updating many data feeds, multiple times per day.&lt;br&gt;
One way to reduce costs is by lowering the frequency of oracle updates, but this comes at the expense of accuracy. While it may provide short-term relief, sacrificing data freshness for cost is a short-sighted approach that fails to scale.&lt;br&gt;
An effective oracle solution should strike a balance, employing mechanisms that reduce costs without compromising data freshness. Reliable and cost-efficient oracles ensure both performance and accessibility at scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;As DeFi continues to mature, the importance of carefully selecting an oracle cannot be overstated. An oracle might seem like just another tool, but it holds the power to make or break your protocol. This six-dimensional framework offers a comprehensive approach to making informed decisions when assessing an oracle solution.&lt;br&gt;
By treating your oracle provider as a core component rather than an afterthought, you lay the groundwork for robust, scalable, and secure operations that can withstand the test of time and market volatility.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>BuildUP #2 Hackathon Checklist Guide</title>
      <dc:creator>Bianca Buzea</dc:creator>
      <pubDate>Thu, 23 Nov 2023 13:36:55 +0000</pubDate>
      <link>https://dev.to/bianca_buzea/buildup-2-hackathon-checklist-guide-dc0</link>
      <guid>https://dev.to/bianca_buzea/buildup-2-hackathon-checklist-guide-dc0</guid>
      <description>&lt;p&gt;Hi, it’s Bianca Buzea, Head of Developer Relations at LUKSO. If you are looking to buidl during &lt;a href="https://app.buidlbox.io/lukso/build-up-2" rel="noopener noreferrer"&gt;BuildUP #2&lt;/a&gt;, LUKSO’s signature hackathon, then this guide is for you.&lt;/p&gt;

&lt;p&gt;I love hackathons. I have attended multiple hackathons as an attendee, judge, and organizer. I strongly believe that when it comes to the success of a hackathon, a significant part can be attributed to having the right tools and keeping yourself organized. That is why I created this guide for you, to give you a head start on BuildUP #2. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here is what this guide covers:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Over €250K in LYX Bounties&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Curious Nuggets&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Getting Help&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Tips for a successful hackathon&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;The Power of a Good Presentation&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Next Steps&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Bounties Overview
&lt;/h2&gt;

&lt;p&gt;Over €250K in LYX Bounties distributed equally across four categories:&lt;/p&gt;

&lt;p&gt;⚒️Infrastructure &amp;amp; Tools &lt;br&gt;
🎙️Culture &amp;amp; Entertainment &lt;br&gt;
🧑‍🤝‍🧑 Social &amp;amp; Community &lt;br&gt;
💙 Blue Sky &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An URL to your deployed project that judges can test&lt;/li&gt;
&lt;li&gt;A short video that describes the scope and functionality of your project (around 3 minutes)&lt;/li&gt;
&lt;li&gt;A public GitHub repository with the project’s code&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Curious Nuggets:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;LUKSO is an L1 chain, EVM-compatible for Creative Economies&lt;/li&gt;
&lt;li&gt;Dapps will be judged on their potential as a valuable contribution to the ecosystem, technical excellence, originality and creativity, and user experience and design&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/lukso/universal-profiles-launch-on-lukso-mainnet-the-next-generation-web3-account-a76bc9efa3ef" rel="noopener noreferrer"&gt;Universal Profiles just launched on Mainnet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bonus points for leveraging &lt;a href="https://docs.lukso.tech/standards/introduction/" rel="noopener noreferrer"&gt;LUKSO Standard Proposals (LSPs)&lt;/a&gt;’ capabilities, Universal Profiles, and different tools such as (ERC725.js for encoding, or lsp-factory.js for deployments)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Help
&lt;/h2&gt;

&lt;p&gt;Participants got weekly “Q&amp;amp;A with the LUKSO Tech Team” for the duration of the hackathon and a dedicated #hacker-discussion channel in the &lt;a href="https://discord.com/channels/359064931246538762/994212458581458995" rel="noopener noreferrer"&gt;⎡HACKATHON⎦&lt;/a&gt; section of the LUKSO Discord server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips for a Successful Hackathon
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Don`t reinvent the wheel&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Make use of the available tools. There is no need to reinvent the wheel. Besides the generic EVM tools, make sure to check out the LUKSO-specific tools such as &lt;a href="https://docs.lukso.tech/tools/erc725-tools" rel="noopener noreferrer"&gt;ERC725 Inspect&lt;/a&gt;, which allows you to inspect the key/values of an &lt;a href="https://github.com/ERC725Alliance/ERC725/blob/main/docs/ERC-725.md#erc725x" rel="noopener noreferrer"&gt;ERC725Y&lt;/a&gt; compatible smart contract, lsp-factory.js for easy deployments of &lt;a href="https://github.com/lukso-network/LIPs/blob/main/LSPs/LSP-0-ERC725Account.md" rel="noopener noreferrer"&gt;ERC725-UniversalProfiles&lt;/a&gt;, and digital assets, or erc725.js that allows you to interact with ERC-725 schemas easily. You can find a full overview of all the available &lt;a href="https://docs.lukso.tech/tools/erc725js/getting-started" rel="noopener noreferrer"&gt;tools&lt;/a&gt; in the Tools section from the &lt;a href="https://docs.lukso.tech/" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Focus on the MVP&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Aim to build a minimum viable product that addresses the core functionality or solves the main problem. You won’t be able to sort out every single detail and fix every bug. You can always add more features if time allows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Power of a Good Presentation
&lt;/h2&gt;

&lt;p&gt;One of the most frequent mistakes teams make during hackathons is to focus exclusively on the code and not allocate time for the presentation. While the code is indeed a crucial part, teams should also make sure to save enough time for the presentation. A captivating presentation is a valuable complement to a technically proficient project. Not only does it describe the scope and functionality, and it captures the judges' attention, but it also helps distinguish your project from others.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;Remember that hackathons are not just about bounties; they're also about learning, discovering new technologies, making new friends, and having fun! Enjoy the experience and the opportunity to work on something new and exciting. Also, don’t underestimate where a project might take you. Having a well-built hackathon project serves as a valuable addition to your portfolio and can also serve as a solid foundation for launching your next web3 startup. You never know how far you might get unless you try. &lt;/p&gt;

&lt;p&gt;Come check out the LUKSO &lt;a href="https://docs.lukso.tech/" rel="noopener noreferrer"&gt;docs&lt;/a&gt; and make sure to &lt;a href="https://dev.tourl"&gt;submit your project&lt;/a&gt; before the 27th of November, 16:00 UTC. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>From Beginner to dApp Developer: Learn Solidity and Build a Decentralized Media App</title>
      <dc:creator>Bianca Buzea</dc:creator>
      <pubDate>Tue, 30 May 2023 18:25:08 +0000</pubDate>
      <link>https://dev.to/bianca_buzea/from-beginner-to-dapp-developer-learn-solidity-and-build-a-decentralized-media-app-d3o</link>
      <guid>https://dev.to/bianca_buzea/from-beginner-to-dapp-developer-learn-solidity-and-build-a-decentralized-media-app-d3o</guid>
      <description>&lt;p&gt;In this post we will build our first decentralized social media app. We will call it EthSocial, but feel free to be more creative with the naming.&lt;br&gt;
While building the dApp, we will learn about onchain storage, smart contracts, Solidity data types, and decentralized social media.&lt;/p&gt;

&lt;p&gt;Our dApp will have the following capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;create an account&lt;/li&gt;
&lt;li&gt;make a post (with title and body)&lt;/li&gt;
&lt;li&gt;read posts&lt;/li&gt;
&lt;li&gt;check users &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before we jump into the actual building, let's first look at the WHY. Why decentralized social media? There are various advantages that decentralized social media offers. Here are some of the most important ones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Portability:&lt;/strong&gt; content is no longer controlled by a centralized server or company, it is accessible to everyone, everywhere. Pretend you are a creator on Twitter. You grew a follower base of over 1.5M people. However, recently you decided to expand to TikTok. With web2, you would need to grow your followers base from scratch. However, with web3, you no longer lose your followers, you can port them over to a different dApp.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Users own their data&lt;/strong&gt;: no more centralized databases. Users own their data and are able to monetize their data how they like. No more Cambridge Analytica incidents because the platform no longer owns user data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Censorship resistance&lt;/strong&gt;: Creators can now be relieved from concerns about losing their content or audience due to the unpredictable actions of an individual platform's algorithms and policies.&lt;/p&gt;

&lt;p&gt;Now that we had a look at the value of decentralized social media, let's start building.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;First, we define the SPDX-Licence -Identifier. This is important because it specifies under which license other people can use our code. In this example, we will use the open source "MIT" license. &lt;/p&gt;

&lt;p&gt;The pragma is used to enable certain compiler features or checks. It comes annotated with a version, this allows use to get specific and ensure our byte code is reproducible even as the compiler changes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;contract EthSocial {
   struct UserStruct {
       string username;
       uint8 age;
       bool isUser;
   }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, we will create our smart contract. First, we need to define a user with some properties. To do so, we will use a struct. Structs are a data type that offer a way to define new custom types in Solidity that group together related data. &lt;br&gt;
We will name our struct UserStruct, and it will contain three fields, a username of type string, the age of the user of type uint, and a bool, isUser, to keep track if the user is registered with our app or not.&lt;/p&gt;

&lt;p&gt;In a similar fashion, we will define a struct for posts, we will call it Post. This time, it will have the following attributes:  a title of type string, a body of type string, and a time attribute of type uint.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;struct Post {
       string title;
       string body;
       uint time;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that we have defined our posts, it is time to keep track of who creates a post. To achieve this, we will use a mapping. Mappings in Solidity act like a hashmap or a dictionary in other programming languages. They are used to store data as a key-value pair. We will call our mapping posts, and it will keep track of what address has created each post. Similarly, we will also have a &lt;code&gt;users&lt;/code&gt; mapping, to keep track of how addresses relate to user "accounts". In addition, we will also create a counter, userCount, to keep track of the total number of users that have signed up!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; mapping (address =&amp;gt; Post[]) posts;
 mapping (address =&amp;gt; UserStruct) users;
 uint256 userCount;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, it's time that we define a signup function. Our function, &lt;code&gt;createUser&lt;/code&gt; will set the value for a user's info.&lt;br&gt;
First we define an instance of type UserStruct, called &lt;code&gt;user&lt;/code&gt;. Then, we will set the properties of user using the dot notation. Before returning true, indicating that a user was created, we increase the userCount.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  function createUser(address _userAddress, string memory _username, uint8 _age) public returns (bool success){
       UserStruct memory user;

       user.username = _username;
       user.age = _age;
       user.isUser = true;

       users[_userAddress] = user;
       userCount++;
       return true;
   }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next we will create a getter to retrieve a particular value from our &lt;code&gt;users&lt;/code&gt; mapping, in this case the "account" corresponding to an address.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function getUser(address _userAddress) public view returns (UserStruct memory){
       return users[_userAddress];
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We will also create a function to keep track of the total number of users, we will call it &lt;code&gt;getTotalUsers()&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function getTotalUsers() public view returns (int) {
       return userCount;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, we will create a post. To do so, we will implement the &lt;code&gt;createPost()&lt;/code&gt; function. The function defines a new instance of type Post, called newPost, and then it instantiates the values of it using the dot notation. Before returning true to indicate that a new post has been successfully created, the new post is added to the posts mapping using push().&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  function createPost (
       address _userAddress,
       string memory _title,
       string memory _body
   )
   public returns (bool) {
       Post memory newPost;
       newPost.title = _title;
       newPost.body = _body;
       newPost.time = block.timestamp;

       posts[_userAddress].push(newPost);
       return true;
 }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our dApp is almost ready. However, we still miss a way to retrieve the posts corresponding to a given address. To do so, we will implement the &lt;code&gt;getPosts()&lt;/code&gt; method. The function takes the userAdddress and returns an array of type Post corresponding to the posts associated with the given address.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function getPosts(address _userAddress) public view returns (Post[] memory) {
       return posts[_userAddress];
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we are ready to deploy our contract. We can compile our smart contract and deploy it. However, once we deploy it we might observe some unexpected behavior. We can call our &lt;code&gt;getUser()&lt;/code&gt; function on an address that is yet to join the app. We do not want such behavior. To prevent this, we can use a &lt;code&gt;require()&lt;/code&gt; statement in the &lt;code&gt;getUser()&lt;/code&gt; function. This will return an error if we try to run getUser() for an address that has not "registered".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;require(users[_userAddress].isUser == true, "User does not exist"); 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In a similar fashion, right now anyone can create a post using the &lt;code&gt;createPost()&lt;/code&gt; function, even if they are not a user. To prevent this, we will use another require statement, this time in the createPost() function.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;require(users[_userAddress].isUser == true, "User not registered");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The last thing we want to check, is if the user can only post in their name. To do so, we will use a third require statement to verify is the user is indeed the msg.sender.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;require (_userAddress == msg.sender, "You can only post on your behalf");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's all folks! I hope you found this short intro to Solidity helpful. If you are interested in more content like this you can find me on &lt;a href="https://twitter.com/buzea200"&gt;Twitter&lt;/a&gt; or join us at &lt;a href="https://www.devreluni.com/"&gt;DevRel Uni&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Source Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

contract SocialETH {

    struct UserStruct {
        string username;
        uint age;
        bool isUser;

    }

    struct Post {
     string title;
     string body;
     uint time;
    }

    mapping (address =&amp;gt; Post[]) posts;
    mapping (address =&amp;gt; UserStruct) users;
    uint userCount;

    function createUser (address _userAddress, 
string memory _username, 
uint _age) public returns 
(bool success){
        UserStruct memory user;

        user.age = _age;
        user.username = _username;
        user.isUser = true;

        users[_userAddress] = user;
        userCount ++;
        return true;
    }

    function getUser (address _userAddress) public view returns (UserStruct memory){
    require(users[_userAddress].isUser == true, "User does not exist");
    users[_userAddress];
    }

    function getTotalUsers () public view returns (uint) {
        return userCount;
    }

    function craetePost (
        address _userAddress,
        string memory _title,
        string memory _body
    ) 
    public returns (bool) {

        require(users[_userAddress].isUser == true, "User not registered");
        require (_userAddress == msg.sender, "You can only post on your behalf");
        Post memory newPost;

        newPost.title = _title;
        newPost.body = _body;
        newPost.time = block.timestamp; 

        posts[_userAddress].push(newPost);
        return true;
    }

    function getPosts(address _userAddress) public view returns (Post[] memory) {
        require(_userAddress == msg.sender,  "You can only post on your behalf");
      return posts[_userAddress];
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>The Silver Bullet for 30-60-90 Day-Plans as a DevRel</title>
      <dc:creator>Bianca Buzea</dc:creator>
      <pubDate>Sun, 26 Mar 2023 19:25:35 +0000</pubDate>
      <link>https://dev.to/bianca_buzea/the-silver-bullet-for-30-60-90-day-plans-as-a-devrel-1pl3</link>
      <guid>https://dev.to/bianca_buzea/the-silver-bullet-for-30-60-90-day-plans-as-a-devrel-1pl3</guid>
      <description>&lt;p&gt;One of the first tasks when starting in DevRel, if not the first, is to do a 30-60-90 day plan. During DevRel Uni, I was often asked about the silver bullet for making a 30-60-90 day plan. The truth is, there is no silver bullet. It all comes down to the organization you are joining, its specific needs, focus, and stage of development. &lt;/p&gt;

&lt;p&gt;However, there are certain activities that you should be doing in the majority of cases. Let’s cover those here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7rGjl321--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uw5lz9rtrws6s0ynrdoe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7rGjl321--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uw5lz9rtrws6s0ynrdoe.png" alt="stages" width="880" height="115"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The First 30 Days
&lt;/h2&gt;

&lt;p&gt;The first 30 days are about learning about and establishing connections with your stakeholders. Consider colleagues from different teams (e.g., product, marketing, engineering, sales), external teams integrating with your protocol, top builders within your community, etc.). The conversations you have with these groups will help you understand the product, how it sets itself apart from competitors, relevant user personas, monetization strategy, and the maturity of the community.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VUmA-B8O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/unlhzs5rnuf36axzg9ww.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VUmA-B8O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/unlhzs5rnuf36axzg9ww.png" alt="user personas" width="880" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can start identifying what parts need improvement as you find answers to these questions. For example, maybe you find outdated tutorials or missing information in the docs. Identify opportunities like these to add value and strengthen the community (case studies, developer guides, events, advocacy programs). &lt;/p&gt;

&lt;p&gt;Understand the organization's strategy over the long and short term, and see how your DevRel strategy can complement and fuel larger organizational goals.&lt;/p&gt;

&lt;p&gt;Last but not least, set up a meeting with marketing as soon as possible and learn about the tone and voice of the brand. If you work in DeFi, or another field that abides by additional regulations, ensure you know the different rules concerning communicating with the community. To your surprise, you might even discover certain limitations when using &lt;a href="https://twitter.com/LisaBraganca/status/1628868429540126720?s=20"&gt;emojis&lt;/a&gt; on Twitter. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nXrRErv7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6zvhpzktg77jjtfk9p0u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nXrRErv7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6zvhpzktg77jjtfk9p0u.png" alt="emojis on twitter" width="880" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this stage, you should also get your first win. You’ll find a blocker that can be solved or start a small project that you are confident with. Your first win will boost your confidence and communicate to your team that they can rely on you.&lt;/p&gt;

&lt;p&gt;Tip: while you are performing this learning exercise, document your learning. It can be as simple as daily tweets from your personal account. This will allow you to build relationships, collect feedback, and signal your new position as an advocate for the protocol.&lt;/p&gt;

&lt;h2&gt;
  
  
  Days 30-60
&lt;/h2&gt;

&lt;p&gt;By now, you should  be familiar with the protocol you are advocating for and its stakeholders and understand how DevRel is perceived internally. Ensure everyone is aware of the value that DevRel is bringing to your organization. Educate stakeholders about the critical role that DevRel is playing in your organization.&lt;/p&gt;

&lt;p&gt;Now is the time to perform a developer experience audit. Put yourself in the shoes of a developer looking to integrate with your product and follow their journey. Go through your documentation, guides, code samples, and case studies. Repeat the same exercise for your competitors' products and take note of anything you should replicate or are missing. Work closely with the product team and loop them in on your findings. Document your experience and share it internally and externally (on social media or by creating blog posts). &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://dev.tourl"&gt;&lt;/a&gt;Days 60-90
&lt;/h2&gt;

&lt;p&gt;It is time to ramp up communication with the community. You should know by now where your expertise and knowledge can support and complement the DevRel team best. If it’s just you, identify how you will prioritize your activities and which efforts will get you the best returns. &lt;/p&gt;

&lt;p&gt;With this information in mind, you can start actively publishing content for your organization.  Start with written content (e.g., blogs, case studies), podcasts, events (meetups, plan for any future hackathons and conferences), and your usual social media activities (technical Twitter threads, Twitter spaces with partners, etc.). &lt;/p&gt;

&lt;p&gt;You should aim to fix the most urgent needs first. In many cases, the most critical issues are around documentation. No matter how good a product is, if it isn't supported by good documentation, it pushes away potential users. Make a plan with the engineering team to best approach documentation, and start working on it together early.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;That’s a wrap. I hope by now you have  a better understanding of the 30-60-90 day plan and are in a good position to start architecting yours.&lt;/p&gt;

&lt;p&gt;If you want to learn more about the 30-60-90 day plan and how to break into DevRel, check out &lt;a href="https://www.devreluni.com/"&gt;DevRel University&lt;/a&gt;. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Understanding Balancer: The Flexible Building Block for Programmable Liquidity</title>
      <dc:creator>Bianca Buzea</dc:creator>
      <pubDate>Mon, 06 Mar 2023 19:33:37 +0000</pubDate>
      <link>https://dev.to/bianca_buzea/understanding-balancer-the-flexible-building-block-for-programmable-liquidity-4icc</link>
      <guid>https://dev.to/bianca_buzea/understanding-balancer-the-flexible-building-block-for-programmable-liquidity-4icc</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Balancer is a DeFi protocol that provides liquidity infrastructure. You can build new, innovative liquidity pools and financial dApps on Balancer.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is Balancer?&lt;/li&gt;
&lt;li&gt;Who is Balancer useful for?&lt;/li&gt;
&lt;li&gt;Why should I build on Balancer?&lt;/li&gt;
&lt;li&gt;Batch Swaps, Flash Swaps, and Flash Loans&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s dive right in. &lt;/p&gt;

&lt;h2&gt;
  
  
  What is Balancer?
&lt;/h2&gt;

&lt;p&gt;Balancer is a DeFi platform that offers a flexible building block for programmable liquidity. Balancer powers AMMs (Automated Market Makers) on the main EVM networks (Ethereum, Polygon, Arbitrum, Optimism, Fantom).&lt;/p&gt;

&lt;p&gt;Balancer stands out thanks to its architecture. On Balancer, AMM pricing logic and math are handled independently from token accounting and management. This is accomplished by the &lt;a href="https://docs.balancer.fi/products/the-vault?utm_source=twitter&amp;amp;utm_medium=medium&amp;amp;utm_campaign=understandingBalancer" rel="noopener noreferrer"&gt;Vault.&lt;/a&gt; The Vault contract manages the tokens from every Balancer pool. Consequently, builders can implement custom pricing logic and math without worrying about low-level token management and security. The Vault architecture also passes on reduced gas costs for users and enables efficient multi-step swaps (&lt;a href="https://dev.balancer.fi/resources/swaps/batch-swaps?utm_source=twitter&amp;amp;utm_medium=medium&amp;amp;utm_campaign=understandingBalancer" rel="noopener noreferrer"&gt;batch swaps&lt;/a&gt;) out of the box. &lt;br&gt;
The flexibility of Balancer allows a diverse ecosystem of liquidity pools and AMM products to co-exist and reinforce one another.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;br&gt;
&lt;a href="https://docs.balancer.fi/products/balancer-pools/weighted-pools?utm_source=twitter&amp;amp;utm_medium=medium&amp;amp;utm_campaign=understandingBalancer" rel="noopener noreferrer"&gt;Weighted pools&lt;/a&gt; allow users to limit their exposure to different assets in a liquidity pool. Instead of limiting depositors to 50/50 pairs, Balancer enables the creation of multi-token pools with custom weight parameters (e.g., 80/20, 60/20/20). This enables depositors to choose their exposure to different tokens in a pool. Swap fees can also be fully customized: high volatility pools usually have higher fees while low volatility pools have lower fees.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.balancer.fi/products/balancer-pools/liquidity-bootstrapping-pools-lbps?utm_source=twitter&amp;amp;utm_medium=medium&amp;amp;utm_campaign=understandingBalancer" rel="noopener noreferrer"&gt;Liquidity Bootstrapping Pools&lt;/a&gt; are built to facilitate fair token launches. They are designed to disincentivize whales, bots, front-running, and speculation. They allow projects to define custom bonding curves that adjust over time. Projects that use LBPs can bootstrap liquidity with minimal investment. To get an idea of the potential of LBPs, &lt;a href="https://medium.com/@meritcircle/breaking-all-balancer-records-a-recap-of-the-merit-circle-blbp-6d1f164b33a8" rel="noopener noreferrer"&gt;Merit Circle&lt;/a&gt; raised an incredible $105,576,956 over the course of 72 hours using a Balancer Liquidity Bootstrapping Pool. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.balancer.fi/products/balancer-pools/boosted-pools?utm_source=twitter&amp;amp;utm_medium=medium&amp;amp;utm_campaign=understandingBalancer" rel="noopener noreferrer"&gt;Boosted Pools&lt;/a&gt; are built to deliver high capital efficiency to LPs by enabling idle liquidity to be lent to external protocols. Typically, only up to 10% of the total pool liquidity is being utilized by swappers. This is because the average swap size and volume are much smaller than the total available liquidity at any given time. Boosted pools take advantage of this fact to offer depositors an opportunity at even greater returns.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.balancer.fi/products/balancer-pools/composable-stable-pools?utm_source=twitter&amp;amp;utm_medium=medium&amp;amp;utm_campaign=understandingBalancer" rel="noopener noreferrer"&gt;Composable Stable Pools&lt;/a&gt; allow swappers to make significantly larger trades before encountering substantial price impact. Composable Stable Pools are &lt;a href="https://docs.balancer.fi/products/balancer-pools/composable-stable-pools?utm_source=twitter&amp;amp;utm_medium=medium&amp;amp;utm_campaign=understandingBalancer" rel="noopener noreferrer"&gt;nested&lt;/a&gt;, which means that they contain pool tokens as part of their pool. This defragments liquidity and saves users gas by allowing them to exit and join pools via the &lt;code&gt;swap()&lt;/code&gt; function instead of the more expensive &lt;code&gt;joinPool()&lt;/code&gt; and &lt;code&gt;exitPool()&lt;/code&gt; functions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.balancer.fi/products/balancer-pools/custom-pools?utm_source=twitter&amp;amp;utm_medium=medium&amp;amp;utm_campaign=understandingBalancer" rel="noopener noreferrer"&gt;Custom Pools&lt;/a&gt; are ideal for any team developing custom trade equations and strategies.&lt;br&gt;
Since Balancer is permissionless, anyone can develop their own custom pool type and integrate it into the protocol. Some notable examples include Time-Weighted Average Market Makers (TWAMMs) developed by &lt;a href="https://medium.com/@BalancerGrants/cron-finance-is-developing-twamm-on-top-of-balancer-d5d6bc17919a" rel="noopener noreferrer"&gt;Cron Finance&lt;/a&gt;, the stablecoin design of &lt;a href="https://gyro.finance/?utm_source=twitter&amp;amp;utm_medium=medium&amp;amp;utm_campaign=understandingBalancer" rel="noopener noreferrer"&gt;Gyroscope&lt;/a&gt;, fixed-rate yield markets as developed by &lt;a href="https://www.element.fi/?utm_source=twitter&amp;amp;utm_medium=medium&amp;amp;utm_campaign=understandingBalancer" rel="noopener noreferrer"&gt;Element Finance&lt;/a&gt;, and AMM-powered remittance services (&lt;a href="https://www.xave.co/?utm_source=twitter&amp;amp;utm_medium=medium&amp;amp;utm_campaign=understandingBalancer" rel="noopener noreferrer"&gt;Xave&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Who is Balancer for?
&lt;/h2&gt;

&lt;p&gt;Whether you’re an LP, swapper, or developer, Balancer has something to offer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developers:&lt;/strong&gt; Improve your time to market by using Balancer’s secure building blocks&lt;br&gt;
&lt;strong&gt;LPs:&lt;/strong&gt; Make your liquidity work for you, provide liquidity and collect swap fees and BAL incentives &lt;br&gt;
&lt;strong&gt;Swappers:&lt;/strong&gt;  Swap tokens safely for better rates across the entire Balancer ecosystem&lt;br&gt;
&lt;strong&gt;Arbitrageurs:&lt;/strong&gt; Perform Flash Loans with no fees having at your disposal the liquidity of the whole Balancer &lt;a href="https://docs.balancer.fi/products/the-vault?utm_source=twitter&amp;amp;utm_medium=medium&amp;amp;utm_campaign=understandingBalancer" rel="noopener noreferrer"&gt;Vault&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Should I Build on Balancer?
&lt;/h2&gt;

&lt;p&gt;Balancer provides developers with secure DeFi infrastructure. Builders can focus on what differentiates their product/protocol. Balancer handles low-level token accounting, gas optimizations, and top-notch infrastructure security. This allows builders to ship faster, cheaper, and, most importantly, securely. &lt;br&gt;
Building on Balancer can provide other important advantages, such as concentrated liquidity, streamlined integration with leading liquidity aggregators, and inclusion in the Balancer SDK, the &lt;a href="https://docs.balancer.fi/developers/smart-order-router?utm_source=twitter&amp;amp;utm_medium=medium&amp;amp;utm_campaign=understandingBalancer" rel="noopener noreferrer"&gt;SOR (Smart Order Router)&lt;/a&gt;, and the Balancer Subgraph. Even more, teams building on Balancer can benefit from active support from different service providers in the Balancer ecosystem in areas like software development, marketing, and business development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Batch Swaps, Flash Swaps, and Flash Loans
&lt;/h2&gt;

&lt;p&gt;Batch swaps allow swappers to be positioned to get the best possible rates by efficiently accessing every Balancer pool's liquidity. This is useful when getting the best rate requires performing multiple swaps. With other protocols, you would pay gas for sending tokens at every step. However, with Balancer, since all the tokens are in the Vault contract, you only need to make a single function call where tokens are transferred only between you and the Vault. &lt;/p&gt;

&lt;p&gt;You can execute a Flash Swap if you discover an arbitrage opportunity in two Balancer Pools. &lt;a href="https://etherscan.io/tx/0x21a9cb0d473cdb3fd95a20d5d346f8b46fb437fa3516ef6e5d12f637a67e210b?utm_source=twitter&amp;amp;utm_medium=medium&amp;amp;utm_campaign=understandingBalancer" rel="noopener noreferrer"&gt;You don’t need to hold any tokens to take advantage of it.&lt;/a&gt; You can use the Vault’s liquidity to make such trades without paying a fee while keeping all the profit. Anyone who identifies a price discrepancy in two Balancer Pools can freely take advantage of it.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr182c7sywtj4bdoz4cuw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr182c7sywtj4bdoz4cuw.png" alt="Etherscan transaction example" width="668" height="247"&gt;&lt;/a&gt;&lt;br&gt;
Fig1: A Flash Swap in Practice (&lt;a href="https://etherscan.io/tx/0x21a9cb0d473cdb3fd95a20d5d346f8b46fb437fa3516ef6e5d12f637a67e210b?utm_source=twitter&amp;amp;utm_medium=medium&amp;amp;utm_campaign=understandingBalancer" rel="noopener noreferrer"&gt;Etherscan&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;You can even use Flash Loans for arbitrage opportunities across the whole DeFi ecosystem. Arbitrageurs who use Balancer’s Flash Loans have the unique advantage of having access to the entire Balancer’s liquidity while paying no fees for the Flash Loan. &lt;/p&gt;

&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;In summary, Balancer is a DeFi platform that provides liquidity infrastructure that helps accelerate innovation. Whether you're a developer, liquidity provider, swapper, or arbitrageur, you can take advantage of Balancer’s unique features. &lt;br&gt;
As a developer, you can benefit from secure DeFi infrastructure, enabling you to focus on building innovative DeFi applications while Balancer handles low-level token accounting and gas optimizations. To begin building on Balancer, check out the documentation at &lt;a href="https://docs.balancer.fi/?utm_source=twitter&amp;amp;utm_medium=medium&amp;amp;utm_campaign=understandingBalancer" rel="noopener noreferrer"&gt;docs.balancer.fi&lt;/a&gt; and learn more about how to get started.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article is for informational and educational purposes only, and should not be construed as investment or trading advice or a solicitation or recommendation to buy, sell, or hold any digital assets. Transactions on the blockchain are speculative. Carefully consider and accept all risks before taking action.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>vibecoding</category>
    </item>
  </channel>
</rss>
