<?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: Fifo</title>
    <description>The latest articles on DEV Community by Fifo (@fazzatti).</description>
    <link>https://dev.to/fazzatti</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%2F1946148%2Fcba2d750-db8f-4b63-8cd0-829a20d2eb6e.png</url>
      <title>DEV Community: Fifo</title>
      <link>https://dev.to/fazzatti</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fazzatti"/>
    <language>en</language>
    <item>
      <title>A Standard Proposal for Extending Classic Asset's Behavior - Tutorial</title>
      <dc:creator>Fifo</dc:creator>
      <pubDate>Sun, 18 Aug 2024 22:48:41 +0000</pubDate>
      <link>https://dev.to/fazzatti/a-standard-proposal-for-extending-classic-assets-behavior-tutorial-j77</link>
      <guid>https://dev.to/fazzatti/a-standard-proposal-for-extending-classic-assets-behavior-tutorial-j77</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/stellar"&gt;Build Better on Stellar: Smart Contract Challenge &lt;/a&gt;: Create a Tutorial&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Team
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fabricius Zatti(Fifo): &lt;a href="https://github.com/fazzatti" rel="noopener noreferrer"&gt;fazzatti&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Victor Hugo Martins: &lt;a href="https://github.com/victorhugo-pmartins" rel="noopener noreferrer"&gt;victorhugo-pmartins&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Your Tutorial
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;This submission is complementary to another demo submission in a separate category.&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;For this submission we decided to record a series of four videos covering a &lt;a href="https://github.com/stellar/stellar-protocol/discussions/1528" rel="noopener noreferrer"&gt;proposed standard&lt;/a&gt; for extending asset capabilities with classic wrappers. The proposal defines a structured approach to wrap classic assets with unique custom rules that can be either enforced by asset issuers or made option by any ecosystem builder.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/playlist?list=PLJo7htkGqBrFV_VexImrxMQgwYfLyRKje" rel="noopener noreferrer"&gt;Playlist link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Video #1 - &lt;a href="https://youtu.be/5EMkqhrThqI?si=4GrvvhFYX5e5Ls4q" rel="noopener noreferrer"&gt;Unlocking Stellar's Potential: A New Approach to Asset Wrapping&lt;/a&gt;&lt;/strong&gt;: This video covers the overall concept and objective behind the proposed standard for the Classic Asset Wrappers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Video #2 -&lt;a href="https://youtu.be/_zi_kbp4HaE?si=inlVJ1DkAOzoA_SQ" rel="noopener noreferrer"&gt;Dynamic Asset Control with Enforced Wrappers on Stellar&lt;/a&gt;&lt;/strong&gt;: This video covers entirely the hypothetical use case of an enforced wrapper with custom probation rules. It explains the overall concept of the prototype, performs a complete walkthrough the interactive demo and then covers the contracts implementation overview.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Video #3 -&lt;a href="https://youtu.be/GfZ_jwLJRUY?si=9Zni_7ZA_RS6YzKh" rel="noopener noreferrer"&gt;Gamify Your Assets: Optional Wrappers on Stellar&lt;/a&gt;&lt;/strong&gt;: This video covers entirely the hypothetical use case of an optional wrapper with custom gamified campaign. It explains the overall concept of the prototype, performs a complete walkthrough the interactive demo and then covers the contracts implementation overview&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Video #4 -&lt;a href="https://youtu.be/CLobb3C9hmQ?si=201Wy88t74THJiRB" rel="noopener noreferrer"&gt;Building a Counter Contract from Scratch with Wrappers&lt;/a&gt;&lt;/strong&gt;: Covers a complete step-by-step building a Counter contract from scratch, leveraging the Wrapper standard, then utilizing the playground project to implement a client and run integration tests in Testnet.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I Created
&lt;/h2&gt;

&lt;p&gt;We believe the community can benefit in different ways from our submission and the proposed standard discussion:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reference contract implementations to serve as reference and base for other use cases in the ecosystem.&lt;/li&gt;
&lt;li&gt;Node project with common automation, typescript clients and a structured way for writting and testing complex contract use cases in Testnet with the Stellar Plus library.&lt;/li&gt;
&lt;li&gt;Interactive live demos to experiment hand-on the use cases and instigate creative ways of innovating with use cases and user experience.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;p&gt;We had a blast! It's been a long time since we've been maturing the idea of a classic wrapper, but we didn't have the opportunity(and perhaps the initial "pushing" motivator) to try and validate the de approach. We took the opportunity to work on a standard proposal as we moved through the use cases implementation and a lot(for real, A LOT!) of testing! We kept going back, rethinking, prototyping, testing again, rinse and repeat.&lt;/p&gt;

&lt;p&gt;In the past, we have experimented with Soroban in many ways, but we believe that a big key differentiator for Stellar is the ability to combine the best of both worlds(Soroban and classic) into hybrid assets. With that in mind, we wanted to explore structured approaches for extending classic assets' behavior in unique ways and also build something for the community's benefit.&lt;/p&gt;

&lt;p&gt;The process was highly focused on prototyping and testing first-handed in testnet to get a feel for how well different designs would support different use cases as well as integration with the front end and wallets. Our approach was mainly around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implement quick rounds of the soroban contracts&lt;/li&gt;
&lt;li&gt;Compile&lt;/li&gt;
&lt;li&gt;Implementing/updating the typescript clients&lt;/li&gt;
&lt;li&gt;Running integration tests for Testnet&lt;/li&gt;
&lt;li&gt;Fail/find gaps&lt;/li&gt;
&lt;li&gt;Repeat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We wanted to write more tests in Rust, but there was a limiting factor. Currently, there is no ready-to-use or simple way of simulating different control flags like &lt;code&gt;auth_revocable&lt;/code&gt; in Rust tests(I think I opened an issue about it months ago).  With this in mind, we decided to overcome this by quickly building and testing with the typescript clients and Stellar Plus (Shameless plug). This allowed us to get rapid feedback from the behavior in the testnet, which kept our feedback coming and allowed speedy prototyping and refinement.&lt;/p&gt;

&lt;p&gt;We're looking forward to getting feedback from the devs and builders in the community!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>stellarchallenge</category>
      <category>blockchain</category>
      <category>web3</category>
    </item>
    <item>
      <title>A Standard Proposal for Extending Classic Asset's Behavior - Demos</title>
      <dc:creator>Fifo</dc:creator>
      <pubDate>Sun, 18 Aug 2024 22:48:11 +0000</pubDate>
      <link>https://dev.to/fazzatti/a-standard-proposal-for-extending-classic-assets-behavior-demos-2e3i</link>
      <guid>https://dev.to/fazzatti/a-standard-proposal-for-extending-classic-assets-behavior-demos-2e3i</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/stellar"&gt;Build Better on Stellar: Smart Contract Challenge &lt;/a&gt;: Build a dApp&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Team
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fabricius Zatti(Fifo): &lt;a href="https://github.com/fazzatti" rel="noopener noreferrer"&gt;fazzatti&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Victor Hugo Martins: &lt;a href="https://github.com/victorhugo-pmartins" rel="noopener noreferrer"&gt;victorhugo-pmartins&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What We Built
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;This submission is complementary to another tutorial submission in a separate category.&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;This submission contains two different fully-interactive demos around  a &lt;a href="https://github.com/stellar/stellar-protocol/discussions/1528" rel="noopener noreferrer"&gt;proposed standard&lt;/a&gt; for extending asset capabilities with classic wrappers. The proposal defines a structured approach to wrap classic assets with unique custom rules that can be either enforced by asset issuers or made option by any ecosystem builder.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;#1 - Enforced Wrapper with Probation&lt;/strong&gt;: This first demo covers the perspective of an asset issuer applying the wrapper approach to enforce custom granular probation rules for the classic asset behavior.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;#2 - Optional Wrapper with Campaign&lt;/strong&gt;: This second demo covers the perspective of an either an asset issuer or simply a builder in the ecosystem applying the wrapper approach to allow asset holder to opt-in and participate in a campaign, accumulating points and earning prizes as they transact with the classic asset.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both implementations can be broken into two moments:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Setup phase&lt;/strong&gt;: Allows the audience to navigate all steps of setup for the demo, since creating the admin account(or user freighter) to deploying and customizing the contract rules&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Playground&lt;/strong&gt;: Generate and control new users as well as the admin to interact with the contracts a observe the evolution of the use case as the transactions are executed and recorded in a timeline tree.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Both demos are also covered in the complementary submission to the tutorial category. The other submission covers a video series, including a deep dive and walkthrough these two demos and the contracts. The two specific videos that cover these demos are linked here as well.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.oififo.com/demos/classic-wrapper" rel="noopener noreferrer"&gt;Enforced Classic Wrapper with Probation&lt;/a&gt; | &lt;a href="https://www.youtube.com/watch?v=_zi_kbp4HaE" rel="noopener noreferrer"&gt;video&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.oififo.com/demos/wrapper-campaign" rel="noopener noreferrer"&gt;Optional Classic Wrapper with Campaign&lt;/a&gt; | &lt;a href="https://www.youtube.com/watch?v=GfZ_jwLJRUY" rel="noopener noreferrer"&gt;video&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My Code
&lt;/h2&gt;

&lt;p&gt;The main repository with the core implementation is public under &lt;a href="https://github.com/fazzatti/oi-fifo-soroban-demos" rel="noopener noreferrer"&gt;oi-fifo-soroban-demos&lt;/a&gt; and it contains a collection of different examples and assets. The relevant items for this submission are listed below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rust implementation:

&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;Standard Traits:&lt;/strong&gt; A package containing default interfaces exemplifying the proposed standard and common functions. &lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Classic Asset Wrapper(Enforced):&lt;/strong&gt; A contract implementation for the Classic Asset Wrapper following the enforced approach.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Classic Asset Wrapper (Optional):&lt;/strong&gt; A contract implementation for the Classic Asset Wrapper following the optional approach.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Probation:&lt;/strong&gt; An Asset Controller implementation for enforced use cases applying custom granular limits around a probation period to asset holders.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Campaign:&lt;/strong&gt; An Asset Controller implementation for optional use cases enabling asset holders to opt-in and participate in a campaign to collect points and prizes.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Counter:&lt;/strong&gt; A simple Asset Controller implementation for optional use cases implementing a counter. (step-by-step tutorial recording)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;p&gt;We had a blast! It's been a long time since we've been maturing the idea of a classic wrapper, but we didn't have the opportunity(and perhaps the initial "pushing" motivator) to try and validate the de approach. We took the opportunity to work on a standard proposal as we moved through the use cases implementation and a lot(for real, A LOT!) of testing! We kept going back, rethinking, prototyping, testing again, rinse and repeat.&lt;/p&gt;

&lt;p&gt;In the past, we have experimented with Soroban in many ways, but we believe that a big key differentiator for Stellar is the ability to combine the best of both worlds(Soroban and classic) into hybrid assets. With that in mind, we wanted to explore structured approaches for extending classic assets' behavior in unique ways and also build something for the community's benefit.&lt;/p&gt;

&lt;p&gt;The process was highly focused on prototyping and testing first-handed in testnet to get a feel for how well different designs would support different use cases as well as integration with the front end and wallets. Our approach was mainly around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implement quick rounds of the soroban contracts&lt;/li&gt;
&lt;li&gt;Compile&lt;/li&gt;
&lt;li&gt;Implementing/updating the typescript clients&lt;/li&gt;
&lt;li&gt;Running integration tests for Testnet&lt;/li&gt;
&lt;li&gt;Fail/find gaps&lt;/li&gt;
&lt;li&gt;Repeat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We wanted to write more tests in Rust, but there was a limiting factor. Currently, there is no ready-to-use or simple way of simulating different control flags like &lt;code&gt;auth_revocable&lt;/code&gt; in Rust tests(I think I opened an issue about it months ago).  With this in mind, we decided to overcome this by quickly building and testing with the typescript clients and Stellar Plus (Shameless plug). This allowed us to get rapid feedback from the behavior in the testnet, which kept our feedback coming and allowed speedy prototyping and refinement.&lt;/p&gt;

&lt;p&gt;We're looking forward to getting feedback from the devs and builders in the community!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>stellarchallenge</category>
      <category>blockchain</category>
      <category>web3</category>
    </item>
  </channel>
</rss>
