<?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: Jonathan Bakebwa</title>
    <description>The latest articles on DEV Community by Jonathan Bakebwa (@codebender828).</description>
    <link>https://dev.to/codebender828</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%2F123216%2F95585239-c606-4ece-8e7a-34a42889da84.jpg</url>
      <title>DEV Community: Jonathan Bakebwa</title>
      <link>https://dev.to/codebender828</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/codebender828"/>
    <language>en</language>
    <item>
      <title>The new era of Gamers: Crypto Gaming</title>
      <dc:creator>Jonathan Bakebwa</dc:creator>
      <pubDate>Tue, 18 Apr 2023 03:04:38 +0000</pubDate>
      <link>https://dev.to/codebender828/the-new-era-of-gamers-crypto-gaming-1ccm</link>
      <guid>https://dev.to/codebender828/the-new-era-of-gamers-crypto-gaming-1ccm</guid>
      <description>&lt;p&gt;The world of gaming has always been a lucrative industry, and the advent of blockchain technology has opened up new avenues for players to earn money while playing their favorite games. Crypto gaming has emerged as a popular trend in recent years, with players using cryptocurrencies and digital assets to buy, sell, and trade in-game items and participate in play-to-earn games.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ldd_uFqV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bf5goii1ttzdt65m4u0w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ldd_uFqV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bf5goii1ttzdt65m4u0w.png" alt="Image description" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;According to a recent article on our blog, the popularity of crypto gaming has been on the rise, with more players turning to these games as a way to invest in digital assets or earn money through play-to-earn games.&lt;/p&gt;

&lt;p&gt;The article highlights some of the key benefits of crypto gaming, including the ability to earn passive income, own and trade digital assets, and participate in a more decentralized and transparent gaming ecosystem.&lt;/p&gt;

&lt;p&gt;One of the most significant advantages of crypto gaming is the &lt;strong&gt;play-to-earn model&lt;/strong&gt;, where players can earn cryptocurrencies or digital assets by playing games and achieving certain milestones or completing tasks. This model has revolutionized the gaming industry, as players can now monetize their gaming skills and turn their hobbies into profitable ventures. Play-to-earn games have become increasingly popular, with some games offering rewards worth thousands of dollars.&lt;/p&gt;

&lt;p&gt;Another benefit of crypto gaming is the &lt;strong&gt;ownership of digital assets&lt;/strong&gt;. In traditional games, players do not own the in-game items they purchase, and the game developers can revoke or delete them at any time. In crypto games, players own the digital assets they acquire, and they can sell or trade them on various marketplaces.&lt;/p&gt;

&lt;p&gt;Crypto gaming is also a more &lt;strong&gt;decentralized and transparent ecosystem&lt;/strong&gt; compared to traditional gaming, where game developers have complete control over the game's economy and regulations. With blockchain technology, crypto games are built on decentralized networks, making it more challenging for developers to manipulate the game's economy or impose unfair regulations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xMq_N-mW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oi2vv6c8ps59myfn3q8s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xMq_N-mW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oi2vv6c8ps59myfn3q8s.png" alt="Image description" width="800" height="487"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In conclusion, crypto gaming has emerged as a lucrative and engaging opportunity for players to earn money while enjoying their favorite games. With the rise of blockchain technology and the play-to-earn model, crypto gaming has become an exciting and accessible way for players to monetize their gaming skills and own digital assets.&lt;/p&gt;

&lt;p&gt;As the industry continues to evolve, it will be interesting to see how crypto gaming transforms the gaming landscape and attracts more players into the world of blockchain. Learn more about crypto gaming here: &lt;a href="https://mirrorworld.fun/blog/crypto-game-users"&gt;https://mirrorworld.fun/blog/crypto-game-users&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>web3</category>
      <category>crypto</category>
      <category>game</category>
    </item>
    <item>
      <title>The Benefits of Self-Built Marketplaces for Blockchain Game Creators</title>
      <dc:creator>Jonathan Bakebwa</dc:creator>
      <pubDate>Sun, 09 Apr 2023 03:26:28 +0000</pubDate>
      <link>https://dev.to/codebender828/the-benefits-of-self-built-marketplaces-for-blockchain-game-creators-27cd</link>
      <guid>https://dev.to/codebender828/the-benefits-of-self-built-marketplaces-for-blockchain-game-creators-27cd</guid>
      <description>&lt;p&gt;&lt;strong&gt;When talking about Web3 products what will come across your mind in the first place?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The focus often shifts towards prevailing trends such as story-retelling, new technologies, economic models, decentralization, or data attribution. but a key aspect of business, namely &lt;strong&gt;revenue&lt;/strong&gt;, appears to be underlooked. Most applications are created for the sake of commercial purposes. This is no exception in Web3. Nevertheless, there are limited discussions about how to enhance the revenue generation of Web3 applications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3IdddB5c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xcs06ia3vn2nr3feull0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3IdddB5c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xcs06ia3vn2nr3feull0.png" alt="Image description" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Mobile First
&lt;/h2&gt;

&lt;p&gt;For mobile games, revenue is generated through in-app purchases, in-game ads, and paid downloads. &lt;strong&gt;In 2022, in-app purchases accounted for 53.6% of mobile game revenue&lt;/strong&gt;, and this percentage is expected to continue to rise. The game industry is one of the most maturely commercialized application categories, and is a good example to look at for consistently generating revenue on mobile platforms.&lt;/p&gt;

&lt;p&gt;The entire process of acquiring, engaging, retaining, and converting customers has been seamlessly integrated into a single app. While Web2 apps prioritized mobile platforms and in-game marketplaces, developers of crypto game apps have struggled to keep up with the trend.&lt;/p&gt;

&lt;p&gt;Despite the increased availability of Web3 apps on mobile platforms, many apps still struggle to provide a seamless experience for users. This is especially true when it comes to the links between the user and the asset marketplace. Then, What are some benefits for creating an in-game marketplace?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Mobile game marketplace can help projects to access the appropriate user group&lt;/strong&gt;&lt;br&gt;
Mobile game apps list crypto assets such as NFTs on third-party platforms like Opensea to serve the application itself. For example, game asset NFTs can be listed on trading platforms to enable users to exchange information through asset trading. This can generate income while enhancing user engagement and encouraging longer adherence to the game.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. In-game marketplaces can help to increase user conversion and revenue.&lt;/strong&gt;&lt;br&gt;
From the user's perspective, any app follows a closed loop of customer acquisition, activities, retention, conversion, and there will be a churn rate between any of the two steps. If a Web3 application has a poor user experience, it can lose more than 50% of users in these steps, resulting in high customer acquisition costs.&lt;/p&gt;

&lt;p&gt;Web3 apps face a challenge when users are interested in the content and willing to pay for it, but have to leave the app and go to another website to connect their wallet or link an account to make a purchase. This leads to cumbersome and understanding costs for the user, causing disconnect and distrust that can result in a decline in willingness to pay and application revenue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bottom Line
&lt;/h2&gt;

&lt;p&gt;Given the high costs and limited control associated with using third-party marketplaces, it is becoming increasingly clear that building a self-owned marketplace is the way to go for blockchain game creators. Fortunately, with the rise of platforms, building and customizing a crypto marketplace has never been easier.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mpzxWNNs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s98rq6ysu7438z6swsj0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mpzxWNNs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s98rq6ysu7438z6swsj0.png" alt="Image description" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not only does owning a marketplace allow for greater control over transactions and revenue, but it also provides an opportunity to create a more cohesive user experience that is tailored to the specific needs of the game. As the blockchain gaming industry continues to grow and evolve, investing in a self-built marketplace will become an increasingly important strategy for staying competitive and maximizing profits.&lt;/p&gt;

&lt;p&gt;By leveraging the power of platforms like Mirror World, blockchain game creators can take the first step towards achieving greater independence, control, and success in the world of blockchain gaming. Learn more about how to create your own in-game marketplace: &lt;a href="https://mirrorworld.fun/blog/all-in-one-web3-game-development"&gt;https://mirrorworld.fun/blog/all-in-one-web3-game-development&lt;/a&gt;&lt;/p&gt;

</description>
      <category>web3</category>
      <category>crypto</category>
      <category>game</category>
      <category>sdk</category>
    </item>
    <item>
      <title>Mirror World' Smart Platform: A Zero-code Blockchain Technology Solution Update</title>
      <dc:creator>Jonathan Bakebwa</dc:creator>
      <pubDate>Sat, 11 Feb 2023 09:37:06 +0000</pubDate>
      <link>https://dev.to/codebender828/mirror-world-smart-platform-a-zero-code-blockchain-technology-solution-update-4b3j</link>
      <guid>https://dev.to/codebender828/mirror-world-smart-platform-a-zero-code-blockchain-technology-solution-update-4b3j</guid>
      <description>&lt;p&gt;Hi Guys,&lt;/p&gt;

&lt;p&gt;An SDK Platform product update from our Team! A Web 3 SDK that is extremely friendly to newbie developers to build their own decentralized apps is now with brand new UI and smoother low coding experience.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.mirrorworld.fun/auth/login?utm_source=DEV&amp;amp;utm_campaign=Dashboard_Launch_Test"&gt;Mirror World&lt;/a&gt; as a Web 3 Infra company has been working on providing hands-on tools for developers to speed up their decentralized app-building process.&lt;/p&gt;

&lt;p&gt;In other words, with a decentralized app project idea in mind, it would take about 30 minutes using our SDK to complete all the essential settings in the decentralized app you want to build.&lt;/p&gt;

&lt;p&gt;We mainly focus on these three parts of the decentralized app, with multichain support such as EVM-Compatible chains like Polygon, BNB, Solana and more.&lt;/p&gt;

&lt;p&gt;The Three Aspects are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Authentication and Wallet&lt;/li&gt;
&lt;li&gt;NFT Management&lt;/li&gt;
&lt;li&gt;Marketplace building
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5qcmQ-vO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jbrk3ylv1qcwt3jr2dbq.png" alt="Image description" width="880" height="555"&gt;
Here are some of the updates we made in smoothing the developer experience in creating and monitoring their projects:
(Best experience would be achieved by following our dashboard along and checking out the new features along with the article: &lt;a href="https://app.mirrorworld.fun/auth/login?utm_source=DEV&amp;amp;utm_campaign=Dashboard_Launch_Test"&gt;https://app.mirrorworld.fun/auth/login&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  It is important to know what you want to build.
&lt;/h3&gt;

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

&lt;p&gt;Won’t get lost in roaming about in the documents. Starting by choosing which kind of function you want to build and start your developing journey.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clear Dashboard for Keeping Up With All the Data.
&lt;/h3&gt;

&lt;p&gt;Have a clear project overview&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2uysUnk3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u6ub6j13g8xwh4mjx27m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2uysUnk3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u6ub6j13g8xwh4mjx27m.png" alt="Image description" width="880" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Monitor your project case by case, just in case you want to try out different paths at the same time.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DDX_0x9a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jv2b7e6bu16nf7oav243.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DDX_0x9a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jv2b7e6bu16nf7oav243.png" alt="Image description" width="880" height="563"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tack what you have done in the past, your request logs are here for you.&lt;br&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c1QJ-f_8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ip7ep8cq5tumkt4xsfl9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c1QJ-f_8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ip7ep8cq5tumkt4xsfl9.png" alt="Image description" width="880" height="565"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Zero Code Design for NFT Management
&lt;/h3&gt;

&lt;p&gt;Overview of all your collections, with helpful guides to help you through each step&lt;br&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IpFY67r1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1d3oq4pqvejrxbshi4c6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IpFY67r1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1d3oq4pqvejrxbshi4c6.png" alt="Image description" width="854" height="612"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Create your NFT collection in a snap of a finger with no code at all&lt;br&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--82MZ_blY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zzkpalnhqba739oepun5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--82MZ_blY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zzkpalnhqba739oepun5.png" alt="Image description" width="880" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Zero Code Design for NFT Marketplace
&lt;/h3&gt;

&lt;p&gt;Create your NFT Marketplace by entering basic info&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--r7HT0d6I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8bec6s6ia5mwe8ezhmye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--r7HT0d6I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8bec6s6ia5mwe8ezhmye.png" alt="Image description" width="880" height="544"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2tm14ihJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7hyjdblqq3s9d13cwaar.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2tm14ihJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7hyjdblqq3s9d13cwaar.png" alt="Image description" width="794" height="431"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zTZKKewp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/amrayy0o977gffilsfpd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zTZKKewp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/amrayy0o977gffilsfpd.png" alt="Image description" width="880" height="556"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Helpful Guide in Every Step You Take
&lt;/h3&gt;

&lt;p&gt;Check out the “how to prepare” option and download a sample JASON file if you are not sure what to do next.&lt;/p&gt;

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

&lt;p&gt;Explanations for newbie developers to check out while encountering new concepts.&lt;/p&gt;

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

&lt;p&gt;Anything else unsure? Click on the question mark and get in contact with our professional support with more detailed guides.&lt;/p&gt;

&lt;p&gt;Try &lt;a href="https://app.mirrorworld.fun/auth/login?utm_source=DEV&amp;amp;utm_campaign=Dashboard_Launch_Test"&gt;building a decentralized app now&lt;/a&gt; in under 30 minutes&lt;/p&gt;

&lt;p&gt;Check out our website: &lt;a href="https://mirrorworld.fun?utm_source=DEV&amp;amp;utm_campaign=Dashboard_Launch_Test"&gt;mirrorworld.fun&lt;/a&gt;&lt;/p&gt;

</description>
      <category>web3</category>
      <category>crypto</category>
      <category>sdk</category>
      <category>developer</category>
    </item>
    <item>
      <title>Performing Marketplace Transactions with the Mirror World Smart SDK</title>
      <dc:creator>Jonathan Bakebwa</dc:creator>
      <pubDate>Sun, 15 Jan 2023 00:45:21 +0000</pubDate>
      <link>https://dev.to/codebender828/performing-marketplace-transactions-with-the-mirror-world-smart-sdk-33do</link>
      <guid>https://dev.to/codebender828/performing-marketplace-transactions-with-the-mirror-world-smart-sdk-33do</guid>
      <description>&lt;p&gt;An SDK not only helps you create dedicated Marketplaces for your NFTs and NFT collections, but it also equips you with different ways to perform transactions in the marketplace. Here's a quick guide showing a few methods of making transactions:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Marketplace Methods
&lt;/h2&gt;

&lt;p&gt;You can create, update, and query marketplaces using the SDK, which provides methods that make setting up your very own marketplace seamless. Go through this comprehensive guide on how to create NFT Marketplaces using the SDK to learn more.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. NFT Transaction Methods
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;List NFT:&lt;/strong&gt; This is used to list an NFT on the marketplace.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;// how to list an NFT on a marketplace using the Mirror World JS SDK&lt;br&gt;
const listing = await mirrorworld.listNFT({&lt;br&gt;
    mintAddress:&lt;/code&gt;Hc2My3GQCQTXTjV34Pi1pQGYUeckT1mEcMRiZZaH7Ydr&lt;code&gt;,&lt;br&gt;
    price: 2, // Amount in SOL&lt;br&gt;
})&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update NFT Listing:&lt;/strong&gt; You may update NFT listing details on the marketplace. e.g the price of the NFT.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;// how to update an NFT listing on a marketplace using the Mirror World JS SDK  const listing = await mirrorworld.updateNFTListing({ &lt;br&gt;
    mintAddress:&lt;/code&gt;Hc2My3GQCQTXTjV34Pi1pQGYUeckT1mEcMRiZZaH7Ydr&lt;code&gt;, &lt;br&gt;
    price: 2, // Amount in SOL&lt;br&gt;
})&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cancel NFT Listing:&lt;/strong&gt; You may also cancel an NFT listing.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;// how to cancel an NFT listing on a marketplace using the Mirror World JS SDK  const listing = await mirrorworld.cancelNFTListing({ &lt;br&gt;
    mintAddress:&lt;/code&gt;Hc2My3GQCQTXTjV34Pi1pQGYUeckT1mEcMRiZZaH7Ydr&lt;code&gt;, &lt;br&gt;
    price: 2, // Amount in SOL&lt;br&gt;
})&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Buy NFT:&lt;/strong&gt; This can be used to purchase an NFT on the Mirror World marketplace.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;// how to list buy an NFT on a marketplace using the Mirror World JS SDK &lt;br&gt;
const listing = await mirrorworld.buyNFT({ &lt;br&gt;
    mintAddress:&lt;/code&gt;Hc2My3GQCQTXTjV34Pi1pQGYUeckT1mEcMRiZZaH7Ydr&lt;code&gt;, &lt;br&gt;
    price: 2, // Amount in SOL&lt;br&gt;
})&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transfer NFT:&lt;/strong&gt; If you would like to transfer an NFT from a holder's wallet to another address.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;// how to transfer an NFT on a marketplace using the Mirror World JS SDK &lt;br&gt;
const listing = await mirrorworld.transferNFT({ &lt;br&gt;
    mintAddress:&lt;/code&gt;Hc2My3GQCQTXTjV34Pi1pQGYUeckT1mEcMRiZZaH7Ydr&lt;code&gt;, &lt;br&gt;
    recipientAddress:&lt;/code&gt;C64RkD2jnvrFF8mi9FUBwfhNHuuiPuRMzCLRSWcyJKUG&lt;code&gt;, &lt;br&gt;
})&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Fetch NFTs
&lt;/h2&gt;

&lt;p&gt;It could also be to display NFTs in a dApp or list them on a marketplace. Whatever the reason, the Mirror World Smart SDK provides a variety of ways in which you can successfully fetch these NFTs and work with them.&lt;/p&gt;

&lt;p&gt;There could be a number of reasons why you may want to fetch an NFT or a list of NFTs. From creating a marketplace to listing an NFT on that marketplace, there are a lot of options available to you as a developer to start building your next killer dApp. Learn more about different methods that you can make using an SDK through this guide on performing marketplace transactions: [&lt;a href="https://docs.mirrorworld.fun/guides/marketplace-transactions-with-mirrorworld-sdk"&gt;https://docs.mirrorworld.fun/guides/marketplace-transactions-with-mirrorworld-sdk&lt;/a&gt;].&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Bring a Game on Blockchain</title>
      <dc:creator>Jonathan Bakebwa</dc:creator>
      <pubDate>Sun, 25 Dec 2022 07:35:17 +0000</pubDate>
      <link>https://dev.to/codebender828/bring-a-game-on-blockchain-1ei0</link>
      <guid>https://dev.to/codebender828/bring-a-game-on-blockchain-1ei0</guid>
      <description>&lt;p&gt;Today, we are talking about if you were to bring your own game on a chain and make it a Web3 game, what the whole process looks like and what kind of problems developers might encounter.&lt;/p&gt;

&lt;p&gt;Many great Web3 gaming startups are struggling to find a decent developer team. They are experienced with game design themselves, but building smart contracts is still a pickle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bringing a Web2 game on chain has many benefits.&lt;/strong&gt; Minting an in-game asset involves creating a unique digital item that can be owned and traded within a game or other online platform. To mint an in-game asset, you will need to follow these technical steps:&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%2F4msm1vgi6myfdxkko649.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%2F4msm1vgi6myfdxkko649.png" alt="Image description" width="800" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Choose a blockchain platform:&lt;/strong&gt; Select a blockchain platform that supports the creation and management of non-fungible tokens (NFTs), which are unique digital assets that can represent in-game items, collectibles, or other types of assets. Some popular blockchain platforms for NFTs include Ethereum, EOS, TRON, and more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Set up a wallet:&lt;/strong&gt; Create a wallet for the chosen blockchain platform. This step allows you to manage your assets and interact with the blockchain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Design and create the asset:&lt;/strong&gt; Design and create the in-game asset using digital art software or other tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Write a smart contract:&lt;/strong&gt; Write a smart contract using the programming language of the chosen blockchain platform. The smart contract will define the properties and behavior of the in-game asset, such as its name, description, and any other relevant details.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Deploy the smart contract:&lt;/strong&gt; Use the tools and processes provided by the blockchain platform to deploy the smart contract to the blockchain. It will typically involve signing the contract with your private key and submitting it to the blockchain for execution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Mint the asset:&lt;/strong&gt; Use the smart contract to mint the in-game asset. You could do so by calling a function within the contract that creates a new instance of the asset and assigns it to your wallet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Integrate the asset into the game:&lt;/strong&gt; Write code to handle the in-game asset within the game and to interact with the blockchain. This may involve implementing APIs or other interfaces to read and write data from the blockchain.&lt;/p&gt;

&lt;p&gt;Typically, it would take a month or more for a team of 5 people to complete this process. However, by using SDK, a team can reduce the time for all these steps above to &lt;strong&gt;15 minutes&lt;/strong&gt;. Learn more about the details regarding in-game asset minting and NFT marketplace from this guide: &lt;a href="https://blog.mirrorworld.fun/p/bring-a-game-on-blockchain-in-game" rel="noopener noreferrer"&gt;https://blog.mirrorworld.fun/p/bring-a-game-on-blockchain-in-game&lt;/a&gt;&lt;/p&gt;

</description>
      <category>game</category>
      <category>crypto</category>
      <category>wallet</category>
      <category>dev</category>
    </item>
    <item>
      <title>How to Mint Your Own Set of In-Game Assets</title>
      <dc:creator>Jonathan Bakebwa</dc:creator>
      <pubDate>Fri, 09 Dec 2022 04:59:45 +0000</pubDate>
      <link>https://dev.to/codebender828/how-to-mint-your-own-set-of-in-game-assets-cpf</link>
      <guid>https://dev.to/codebender828/how-to-mint-your-own-set-of-in-game-assets-cpf</guid>
      <description>&lt;p&gt;Benefits of Minting NFTs in Metaverse Games: &lt;a href="https://blog.mirrorworld.fun/p/benefits-of-minting-nfts-metaverse"&gt;https://blog.mirrorworld.fun/p/benefits-of-minting-nfts-metaverse&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Minting in-game assets in crypto games is the process of creating unique, limited-edition digital assets that can be bought, sold, and traded on blockchain networks.&lt;/p&gt;

&lt;p&gt;This allows players to truly own their in-game items and &lt;strong&gt;have full control over them&lt;/strong&gt;, rather than simply renting them from the game developer.&lt;/p&gt;

&lt;p&gt;As a follow-up discussing the benefits of minting NFTs, this blog will quickly walk through an example of how a developer might mint in-game assets in a crypto game:&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The developer first needs to &lt;strong&gt;choose a blockchain platform&lt;/strong&gt; to create the tokens on. Ethereum is a popular choice for creating in-game assets because it allows for the creation of unique tokens using its ERC-20 standard.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The developer then needs to design the in-game assets that they want to create. These assets can be anything from digital collectibles, such as non-fungible tokens (NFTs), to in-game currencies or items.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once the assets have been designed, the developer needs to &lt;strong&gt;create a smart contract&lt;/strong&gt; on the blockchain platform that will manage the minting and distribution of the assets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The developer then needs to integrate the smart contract into their game, so that players can interact with it and obtain the in-game assets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once the game is launched and players start playing, the smart contract will automatically mint new tokens and distribute them to players according to the rules defined in the contract.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The process above could be a pain for a small team, but just as what's mentioned in point 4, an SDK like Mirror World Smart SDK could help a lot with the whole process.&lt;/p&gt;

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

&lt;p&gt;If you were to &lt;strong&gt;create an NFT collection&lt;/strong&gt; in the game, in Mirror World Smart SDK, the whole process would take less than 10 minutes to deploy, which would be significant compared to doing all the steps above all over again.&lt;/p&gt;

&lt;p&gt;All you have to do is to enter a couple of different attributes, upload or generate the NFT pictures or any in-game asset you would like to make, and the asset would be on-chain as you wanted.&lt;/p&gt;

&lt;p&gt;The SDK would handle the complexities of interacting with the blockchain and managing the smart contract, allowing the developer to focus on the design and gameplay of their game and users to list and sell their items using the in-game wallet.&lt;/p&gt;

&lt;p&gt;Such a &lt;strong&gt;smooth, coherent in-game purchasing experience&lt;/strong&gt; would only take 30 minutes overall to deploy, saving tremendous energy for you to focus on your own game development.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>crypto</category>
      <category>wallet</category>
      <category>dev</category>
    </item>
    <item>
      <title>What do You Need to Start up Fast on Web3 Runway-From Tech Perspective</title>
      <dc:creator>Jonathan Bakebwa</dc:creator>
      <pubDate>Fri, 25 Nov 2022 16:55:52 +0000</pubDate>
      <link>https://dev.to/codebender828/what-do-you-need-to-start-up-fast-on-web3-runway-from-tech-perspective-5e2l</link>
      <guid>https://dev.to/codebender828/what-do-you-need-to-start-up-fast-on-web3-runway-from-tech-perspective-5e2l</guid>
      <description>&lt;p&gt;This article is NOT talking about &lt;a href="https://blog.mirrorworld.fun/p/balance-an-unstable-token-economy"&gt;tokenomics&lt;/a&gt;, &lt;a href="https://blog.mirrorworld.fun/p/revenue-and-conversion-for-crypto-gaming"&gt;marketing&lt;/a&gt;, and other insights regarding how you can start up as fast as possible, but strictly the difficulties one might encounter from a technological point of view by offering &lt;a href="//mirrorworld.com"&gt;Mirror World Smart SDK&lt;/a&gt; as a solution.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EgQa3LOv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zm154ee99stg0c1vjtze.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EgQa3LOv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zm154ee99stg0c1vjtze.png" alt="Image description" width="880" height="387"&gt;&lt;/a&gt;&lt;br&gt;
Say I am a person who wants to build a Web3 start-up, and I have a kind of tokenomics(if any) in mind, marketing, and other things taken care of. What should I be worried about?&lt;/p&gt;

&lt;p&gt;I guess we have to admit that a good Web3 developer is: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Not easy to find&lt;/li&gt;
&lt;li&gt;Oftentimes you would need one that thoroughly understands how it's functioning, since if your smart contract went south, what could happen to your project is way more catastrophic than a simple website crush. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So What should I do? &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--62wSSAl1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lies96k5p2n4o6ckdukt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--62wSSAl1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lies96k5p2n4o6ckdukt.png" alt="Image description" width="880" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Some of the General Difficulties When Building Web3 Projects Here
&lt;/h3&gt;

&lt;p&gt;In the senario that if I am not someone with a great Web3 developer&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Building Web3 applications natively are relatively cumbersome for developers that are new to Web3.&lt;/li&gt;
&lt;li&gt;Furthermore, depending on the nature of the applications, Web3 dApps may need a number of services to function properly. 
These services could range from smart contracts for the dApps, to RPC providers, to Oracles, as well as APIs to read state from the chain. 
They services require the developer to learn how they independently work, thus increasing the initial cognitive load for developers who would like to build.&lt;/li&gt;
&lt;li&gt;If solved the problems above, I will face challenges brought by using multiple tools, the maintenance cost increases with the number of tools being strung together by the developer. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If tool A updates or deprecates its API/SDK, then the developer should also keep track of tool A's change logs in order to upgrade their dApp to the latest version in order to keep their application accessible to their users, and functioning properly. &lt;/p&gt;

&lt;p&gt;If I don't have a huge developer team, they will spend most of their time making sure nothing is going wrong, which will leave the development of the new features behind, the last thing you would want. Since the Web3 industry moves fast, I will probably be left behind.&lt;/p&gt;

&lt;p&gt;I guess that software is the solution to the fragmented integration here, with fragmented integration, the developer would need to do this for each dependency they integrate. &lt;/p&gt;

&lt;p&gt;However,  having a single SDK that aggregates all these individual solutions into a single, well-documented, and maintained interface reduces the number of individual integration that the consumer would have to maintain.&lt;/p&gt;

&lt;p&gt;Here, I will take &lt;a href="//mirrorworld.fun"&gt;Mirror World Smart SDK&lt;/a&gt; as an example. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ln9AuGVV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ttjacntuqkfau9seodby.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ln9AuGVV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ttjacntuqkfau9seodby.png" alt="Image description" width="880" height="490"&gt;&lt;/a&gt;&lt;br&gt;
If I now have a body of a product, for instance, a game ready at hand, and I want to bring it to the blockchain, with the SDK, it is a rather simple process. And as for my case, using Mirror World Smart SDK, we spent about thirty minutes to an hour bringing my game completely on chain.&lt;/p&gt;

&lt;p&gt;In a complete set SDK like this, the overall work regarding:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Smart contracts&lt;/li&gt;
&lt;li&gt;Interactions with the chain&lt;/li&gt;
&lt;li&gt;fetching data and so on are all taken care of for me. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Almost all I need to do is to keep focusing on developing the product itself and working on my brand awareness.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Plug in?
&lt;/h3&gt;

&lt;p&gt;OK, so how would I plug my game into the SDK to complete the on-chain process?&lt;/p&gt;

&lt;p&gt;SDK stands for Sofware Development Kit, it is a whole set of APIs you I call once your product completes the first plug-in. &lt;/p&gt;

&lt;p&gt;The first thing I would personally do is to make sure there are enough outlets left in my product so that I will later have places to plug in the related functions to it. &lt;/p&gt;

&lt;p&gt;For example, I am building a &lt;a href="https://blog.mirrorworld.fun/p/metaverse-games-user-growth"&gt;Web3 mobile game&lt;/a&gt;, so I will create several places where I can later plugin my NFT as a gaming character. &lt;/p&gt;

&lt;h3&gt;
  
  
  Start Auth Integration
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MpHw86x_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4g1xfqj6ix914lk22ror.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MpHw86x_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4g1xfqj6ix914lk22ror.png" alt="Image description" width="880" height="527"&gt;&lt;/a&gt;&lt;br&gt;
The second thing is plugging in auth. Using SDK like Mirror World Smart SDK would provide Web2 and Web3 login functions all at once, so that I can gain users from both Web2(Google, Facebook, Twitter, Email) and Web3(wallet) scenarios. I am listing some of the APIs in Mirror World Smart SDK if you would like to try out.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.mirrorworld.fun/#e46fd010-f07a-424d-8bb6-1438bd5c2e38"&gt;Token-Based Login&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#e3221f61-62fc-4a11-b4c7-30feb1af9c57"&gt;Transaction Approval Code&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#1651ac93-bbc6-4b92-8d5b-1b7d92188748"&gt;Change Email&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#63610ea6-b720-4f50-bf0b-7858ae1293b5"&gt;Social Authentication&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#800dcde2-66c3-446b-b157-f7e79c9d255d"&gt;Action Authorization&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#3a0f8d55-e65f-41cb-8274-8ef6d1b66aef"&gt;Oauth2&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Wallet Integration
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bEcKkvfv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n0crzuzkqn69surizkvg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bEcKkvfv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n0crzuzkqn69surizkvg.png" alt="Image description" width="880" height="527"&gt;&lt;/a&gt;&lt;br&gt;
The third part of integration is to bring &lt;a href="https://blog.mirrorworld.fun/p/an-ultimate-guide-to-crypto-wallet"&gt;Web3 wallet&lt;/a&gt; into full operation in our mobile game. &lt;/p&gt;

&lt;p&gt;This part is partially done together with the login integration, but we still need to bring in the transaction, token as well as the on-ramp part of the wallet. &lt;/p&gt;

&lt;p&gt;As a start up, I want my users to be able to perform all kinds of transaction-related actions without having to leave the dApp at all. &lt;/p&gt;

&lt;p&gt;Not many start ups can have a &lt;a href="https://blog.mirrorworld.fun/p/the-future-of-web3-mobile-game-monetization"&gt;good amount of traffic&lt;/a&gt; from the start, same for us, so we do not want any traffic leaving us in any way. An In-app-wallet in this SDK is helping us do just that.&lt;br&gt;
NFT Collection Creation&lt;/p&gt;

&lt;p&gt;This part of the development process goes deeper into the chain reactions like minting, listing and so on. And as someone who doesn't have a huge tech team, SDK would save me a lot of trouble. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WlUX-PZc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4nyzpqrrotgd00cae6zx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WlUX-PZc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4nyzpqrrotgd00cae6zx.png" alt="Image description" width="880" height="527"&gt;&lt;/a&gt;&lt;br&gt;
Same as before, I really prioritize maintaining the traffic we are getting inside our product. Using Smart NFT Creation, minting and listing NFTs inside my mobile app would become possible, which is super useful for any kind of start ups.&lt;/p&gt;

&lt;p&gt;For APIs on that matter, I am listing them here so that you can call them from this dashboard whenever you want for free. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.mirrorworld.fun/#4fb51141-d65b-4c24-a256-b3f065fdb261"&gt;Mint New NFT&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#1696cb75-cb3b-46c0-9d3d-dea7c0f87f74"&gt;Mint New Collection&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#69b4fc11-c126-4ffe-b51e-b30aa8ae107b"&gt;Mint New NFTs on Collection&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#7df3c913-bc85-4371-8fef-e985eab5e4a0"&gt;Get nft events&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#91bce4c8-14d5-4de1-ad15-a4c4701bf1ea"&gt;Get nft info&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#1cf5530a-ad2e-4cc2-8beb-b2b733b29960"&gt;Get nft real price&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  NFT Marketplace Integration
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WlUX-PZc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4nyzpqrrotgd00cae6zx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WlUX-PZc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4nyzpqrrotgd00cae6zx.png" alt="Image description" width="880" height="527"&gt;&lt;/a&gt;&lt;br&gt;
Actually, most parts of the NFT Marketplace are completed in the last step, now we just need a marketplace frontend to keep everything going. &lt;/p&gt;

&lt;p&gt;I also needn't worry about this part since there's also a template prepared in the SDK, but there's also an open-source storefront open making a completely different layout possible for any frontend engineer. &lt;/p&gt;

&lt;p&gt;Here are some example APIs you can try out:&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#fc6c3693-60f1-4fbc-94f7-868802a322a4"&gt;List NFT on the marketplace&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#34acc2c8-ddb3-4872-85d3-81eb0ce46d36"&gt;Buy NFT on the marketplace&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#b6dee8d9-82a2-44b1-a5de-579fa9d91319"&gt;Update Listing of NFT on the marketplace&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--awOc_5H---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zys576vqy4r68ycafa1s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--awOc_5H---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zys576vqy4r68ycafa1s.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Final Note
&lt;/h3&gt;

&lt;p&gt;Speedy development is not the only thing a start up can gain from using an SDK. For me, reliability is also an important part of the whole process. The high maintenance budget and time is what I care about, and a complete SDK would help a lot in that regard. Here's the official website and doc of Mirror World Smart SDK which is free to use for individual developers now, if you would like to check it out.&lt;/p&gt;

&lt;p&gt;Official Website: &lt;a href="https://mirrorworld.fun/"&gt;https://mirrorworld.fun/&lt;/a&gt;&lt;br&gt;
For our doc: &lt;a href="https://docs.mirrorworld.fun/overview/introduction"&gt;https://docs.mirrorworld.fun/overview/introduction&lt;/a&gt;&lt;br&gt;
Also, if you have any feedback to our product or questions of any kind, please let us know here:&lt;a href="https://mirrorworld.fun/feedback"&gt;https://mirrorworld.fun/feedback&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Orignally Published on: &lt;a href="https://blog.mirrorworld.fun/p/how-to-integrate-blockchain-sdk-to"&gt;https://blog.mirrorworld.fun/p/how-to-integrate-blockchain-sdk-to&lt;/a&gt;&lt;/p&gt;

</description>
      <category>web3</category>
      <category>crypto</category>
      <category>solidity</category>
    </item>
    <item>
      <title>Mirror World Smart SDK - Authentication, Marketplaces/Storefronts for Web and Mobile Dapps</title>
      <dc:creator>Jonathan Bakebwa</dc:creator>
      <pubDate>Fri, 18 Nov 2022 10:15:10 +0000</pubDate>
      <link>https://dev.to/codebender828/mirror-world-smart-sdk-authentication-marketplacesstorefronts-for-web-and-mobile-dapps-3e77</link>
      <guid>https://dev.to/codebender828/mirror-world-smart-sdk-authentication-marketplacesstorefronts-for-web-and-mobile-dapps-3e77</guid>
      <description>&lt;p&gt;Today we will be using our newest Web 3 game demo as a showcase of our All-in-one Web 3 dApp SDK covers the whole process of building a dApp. We will explain how we brought our newest game on chain and fully functional within a day using our SDK, and how you can utilize the same tool to maximize productivity in your own dApps that are not limited to gaming alone. &lt;/p&gt;

&lt;p&gt;We will have the link to APIs of a specific function ready next to every function we mention, so that you are able to have hands-on experience of building a dApp using Mirror World SDK with minimal frictions.&lt;/p&gt;

&lt;h3&gt;
  
  
  About Mirrors Jump
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--M3kveAeg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0bogkv5jh7isp1vrfc6z.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M3kveAeg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0bogkv5jh7isp1vrfc6z.jpg" alt="Image description" width="880" height="429"&gt;&lt;/a&gt;&lt;br&gt;
Mirrors Jump is a mobile platform-jumping game demo we made to bring developers a closer view of what our Smart SDK can do. We strongly advise developers to download &lt;a href="https://www.producthunt.com/products/mirror-world-smart-sdk#mirror-world-smart-sdk"&gt;our gaming demo here&lt;/a&gt; and check out our features while enjoying the game.&lt;/p&gt;

&lt;h3&gt;
  
  
  SDK and On-Chain Integration
&lt;/h3&gt;

&lt;p&gt;The overall principle of bringing a game on-chain with our SDK is simple. You build a game, you plug-in our SDK, and all the functions will be there for you to use.&lt;/p&gt;

&lt;h4&gt;
  
  
  Build a Game First
&lt;/h4&gt;

&lt;p&gt;The first step to bringing a mobile game on chain is to build a traditional game with several outlets prepared to later connect to the SDK. The outlet part varies depending on where you want the Web 3 features to take place. Take Mirrors Jump for example. We want our character, the Mirror NFT who is jumping in the game to be the interoperable asset, even independent from the game per se. That is where we leave the outlet for future connections.&lt;/p&gt;

&lt;h4&gt;
  
  
  Start Auth Integration
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ydoKKDSO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jwosh7ub85pcbfjy103b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ydoKKDSO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jwosh7ub85pcbfjy103b.png" alt="Image description" width="880" height="527"&gt;&lt;/a&gt;&lt;br&gt;
The on-chain integration of our game starts with Auth.&lt;br&gt;
Being a Web 3 mobile game, we want our game to have a broader range of users. Logging in with a method people are familiar with could bring much more potential customers to your game or Dapp. So we integrated both Web 2 login methods such as Discord, Facebook, Twitter, Google and Web 3 method, crypto wallet into Mirrors Jump. We completed this whole process solely using our Smart SDK, calling the APIs below.&lt;/p&gt;

&lt;p&gt;Here are some basic APIs we used:&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#e46fd010-f07a-424d-8bb6-1438bd5c2e38"&gt;Token-Based Login&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#e3221f61-62fc-4a11-b4c7-30feb1af9c57"&gt;Transaction Approval Code&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#1651ac93-bbc6-4b92-8d5b-1b7d92188748"&gt;Change Email&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#63610ea6-b720-4f50-bf0b-7858ae1293b5"&gt;Social Authentication&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#800dcde2-66c3-446b-b157-f7e79c9d255d"&gt;Action Authorization&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#3a0f8d55-e65f-41cb-8274-8ef6d1b66aef"&gt;Oauth2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can find a more detailed version in our &lt;a href="https://developer.mirrorworld.fun/"&gt;HTTP API&lt;/a&gt;.&lt;br&gt;
Since Mirror World Smart SDK is now open to developers for free. For different login APIs, you could just login into our &lt;a href="https://app.mirrorworld.fun/auth/login"&gt;creator dashboard&lt;/a&gt;, click the embedded link below and try them out right now. It is super easy to use and it shouldn't take more than a couple minutes to deploy.&lt;/p&gt;

&lt;h4&gt;
  
  
  Start In-App-Wallet Integration
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lP6MygXo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mbt72nc0pqa69v2atkfo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lP6MygXo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mbt72nc0pqa69v2atkfo.png" alt="Image description" width="880" height="527"&gt;&lt;/a&gt;&lt;br&gt;
The second part of integration is to bring Web 3 wallet into full operation in our mobile game. This part is partially done together with the login integration, but we still need to bring in the transaction, token as well as the on-ramp part of the wallet. Once all that is integrated, your customers will be able to perform all kinds of transaction-related actions without having to leave the dApp at all, which really drastically improves the purchasing experience.&lt;/p&gt;

&lt;p&gt;Regarding the security considerations, we are still in the process of developing a kind of safe wallet called MPC wallet (multi-party computational wallet), which will be ready in the test environment next week. &lt;/p&gt;

&lt;p&gt;For all of the wallet functions, feel free to &lt;a href="https://app.mirrorworld.fun/auth/login"&gt;login to the dashboard&lt;/a&gt; and try it out now.&lt;/p&gt;

&lt;h4&gt;
  
  
  About Our Wallet and Its Safety
&lt;/h4&gt;

&lt;p&gt;This part intends to dive deeper into our wallet's safety configuration. For more information about SDK integration, you could scroll down to the next part.&lt;/p&gt;

&lt;p&gt;In this MPC wallet, the private key is not actually stored in any form, because it doesn't exist. Whenever a new wallet is created, the public key is computed (in one direction) by a set of other trusted parties. In our case, we have multiple partners running nodes that participate in the process. We followed the EdDSA algorithm in our implementation of this TSS variant. This type of wallet is called a multi-party computational wallet. &lt;/p&gt;

&lt;p&gt;So the user's private key is not actually stored in a database because there is actually no private key to store. However, we can prove that the user's public key has performed an action when multiple parties have signed a given transaction. The final signature generated by the transaction is an ed25519-compliant signature produced by computing the resultant signatures from all parties. So no one entity can perform an action alone on behalf of the user.&lt;/p&gt;

&lt;h4&gt;
  
  
  NFT Collection Creation
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ge0r-FFR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jd8ujocwzyim239pj24i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ge0r-FFR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jd8ujocwzyim239pj24i.png" alt="Image description" width="880" height="527"&gt;&lt;/a&gt;&lt;br&gt;
After the login and the transactions, we are now getting at the asset we are actually purchasing here in the dApp. In our case, it is the little jumper character——the Mirror NFT. The problem we are solving here is how to create an NFT collection, mint it so that it could exist as a digital asset independent from the game. We used our SDK to enable our in-app minting as well as creating your own NFT collection.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_zg-HJJ1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rejb1loauzky7b59ivux.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_zg-HJJ1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rejb1loauzky7b59ivux.png" alt="Image description" width="880" height="527"&gt;&lt;/a&gt;&lt;br&gt;
Below are some basic APIs we used for minting a new NFT collection and getting the NFT metadata.&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#4fb51141-d65b-4c24-a256-b3f065fdb261"&gt;Mint New NFT&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#1696cb75-cb3b-46c0-9d3d-dea7c0f87f74"&gt;Mint New Collection&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#69b4fc11-c126-4ffe-b51e-b30aa8ae107b"&gt;Mint New NFTs on Collection&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#7df3c913-bc85-4371-8fef-e985eab5e4a0"&gt;Get nft events&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#91bce4c8-14d5-4de1-ad15-a4c4701bf1ea"&gt;Get nft info&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#1cf5530a-ad2e-4cc2-8beb-b2b733b29960"&gt;Get nft real price&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They are all open to developers for free. You could try them out now by going to our dashboard by &lt;a href="https://app.mirrorworld.fun/auth/login"&gt;clicking here&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  In-App NFT Marketplace
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_rdcK7xT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ioh1csmsqvvi87y1v51g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_rdcK7xT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ioh1csmsqvvi87y1v51g.png" alt="Image description" width="880" height="527"&gt;&lt;/a&gt;&lt;br&gt;
With the elements like NFT collection minting as well as metadata ready, we can proceed to take our final step of adding Web 3 elements onto our game——enable listing and purchasing NFT in an NFT Marketplace. Just like the wallet, our NFT marketplace and its operations are all completely inside the dApp as you can see in the Mirrors Jump demo. Users can browse, purchase, use on-ramp service and list their NFTs inside the dApp, which makes the user experience extremely smooth.&lt;/p&gt;

&lt;p&gt;Here are some APIs we used for building our NFT Marketplace for Mirrors Jump:&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#fc6c3693-60f1-4fbc-94f7-868802a322a4"&gt;List NFT on the marketplace&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#34acc2c8-ddb3-4872-85d3-81eb0ce46d36"&gt;Buy NFT on the marketplace&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mirrorworld.fun/#b6dee8d9-82a2-44b1-a5de-579fa9d91319"&gt;Update Listing of NFT on the marketplace&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the full set of APIs, you can visit our HTTP API here: &lt;a href="https://developer.mirrorworld.fun/#intro"&gt;https://developer.mirrorworld.fun/#intro&lt;/a&gt;&lt;br&gt;
Smart SDK also provides a dashboard for basic color and layout modifications, though you could always make more delicate modifications in our opensource storefront. &lt;/p&gt;

&lt;h3&gt;
  
  
  Final Note
&lt;/h3&gt;

&lt;p&gt;Above are all the steps you need to take to better utilize our SDK. If you do have an existing game ready, it shouldn't take more than 30 minutes for you to complete the whole on-chain process, and this could take couple of months for a small developer team to build from ground up. If you have specific questions regarding the API plug in and so on, you can always contact our professional tech team for help. For more information regarding Mirror World, please visit the link below.&lt;/p&gt;

&lt;p&gt;Official Website: &lt;a href="https://mirrorworld.fun/"&gt;https://mirrorworld.fun/&lt;/a&gt;&lt;br&gt;
For our doc: &lt;a href="https://docs.mirrorworld.fun/overview/introduction"&gt;https://docs.mirrorworld.fun/overview/introduction&lt;/a&gt;&lt;br&gt;
Also, if you have any feedback to our product or questions of any kind, please let us know here:&lt;a href="https://mirrorworld.fun/feedback"&gt;https://mirrorworld.fun/feedback&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Orignally Published on: &lt;a href="https://blog.mirrorworld.fun/p/how-to-integrate-blockchain-sdk-to"&gt;https://blog.mirrorworld.fun/p/how-to-integrate-blockchain-sdk-to&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Build and Launch Your Web3 dApps with Speed with Mirror World Smart SDK</title>
      <dc:creator>Jonathan Bakebwa</dc:creator>
      <pubDate>Fri, 04 Nov 2022 12:03:18 +0000</pubDate>
      <link>https://dev.to/codebender828/build-and-launch-your-web3-dapps-with-speed-with-mirror-world-smart-sdk-576a</link>
      <guid>https://dev.to/codebender828/build-and-launch-your-web3-dapps-with-speed-with-mirror-world-smart-sdk-576a</guid>
      <description>&lt;h2&gt;
  
  
  What is Mirror World Smart SDK?
&lt;/h2&gt;

&lt;p&gt;In one sentence, the &lt;a href="https://bit.ly/3FIEcV0"&gt;Mirror World Smart SDK&lt;/a&gt; stack provides seamless blockchain adoption and consumption for Web3 dApps and games. Get Authentication, Wallets, Marketplaces, and Powerful APIs in minutes. &lt;/p&gt;

&lt;h2&gt;
  
  
  What it does?
&lt;/h2&gt;

&lt;p&gt;Mirror World Smart SDK covers basically everything you need for building a Web 3 project. Unlike many other Web 3 infrastructure services that only provide half of the APIs for a complete project, or their independent API often goes into very specific details such as how to get NFT metadata through one function, we intend to cover the whole development process for a single project. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pNjc0EgX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tlvofeww1lre2k3shgkt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pNjc0EgX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tlvofeww1lre2k3shgkt.jpg" alt="Image description" width="880" height="492"&gt;&lt;/a&gt;&lt;br&gt;
That means everything from Web 2/Web 3 login methods to NFT Marketplace, wallet integration, and NFT launch are all covered in the SDK with minimal code required. All you need to do is plug in once, and the APIs are all yours. If all you want to build is a marketplace or a login function, you can easily do so by simply calling that API and starting to build. &lt;br&gt;
Aside from these primary features, we do have other auxiliary functions such as a UI dashboard, open storefront, data monitoring tools, and so on, to minimize your development effort. Mirror World Smart SDK also has special adaptions for Mobile dApps such as In-App-Wallet, and if you intend to have your product or game published on IOS App Store, you can by pass the 30% fee charged from AppStore.&lt;br&gt;
There's often a gap between an idea of a great dApp and the action of building it, and we want to reduce the friction of stepping forward.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's inside Smart SDK?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lATXL99s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3eddtyzqxzyjyv9ozxfh.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lATXL99s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3eddtyzqxzyjyv9ozxfh.PNG" alt="Image description" width="880" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Smart Marketplace
&lt;/h3&gt;

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

&lt;h4&gt;
  
  
  Accelerate your Web3 development by 10x
&lt;/h4&gt;

&lt;p&gt;The general difficulties of building an NFT Marketplace could range from the front end of the user profile, transaction parsing and signing, and market layout to fetching NFT metadata, data storage as well as smart contracts. Building all these features could take a small team a long amount of time to build on Web 3 especially if they have no prior experience. If we take a look at Mirror World's newest game demo Mirrors Jump, the in-built marketplace you see in the product took about 1 DAY from zero to a marketplace in full operation.&lt;br&gt;
&lt;strong&gt;You can visit our game &lt;em&gt;Mirrors Jump&lt;/em&gt; here:&lt;/strong&gt;&lt;br&gt;
 &lt;a href="https://bit.ly/3hb2vAW"&gt;https://bit.ly/3hb2vAW&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Improve end-user experience
&lt;/h4&gt;

&lt;p&gt;For the mobile end, building marketplaces through Smart SDK also means there will be no more jumping around dApps on Mobile, the Mirrors Jump Marketplace allows users to stay in your dApps for the whole transaction process. Staying in one Dapp the whole time would also mean minimizing customer losses to other NFT Projects.&lt;/p&gt;

&lt;h4&gt;
  
  
  Opensource storefront
&lt;/h4&gt;

&lt;p&gt;On the front end, we provide you with a solution—a UI dashboard for some simple layout and coloring customization. Mirrors Jump used the existing marketplace template, but if more delicate changes are needed, we also have an open storefront for you to make your product layout the best fit for your project.&lt;br&gt;
On the front end, we provide you with a storefront template solution - a UI interface used to interact with your dApp's marketplace. We also provide a simple data monitoring tool for you to take advantage of that and improve your product through thorough data analysis.&lt;/p&gt;

&lt;h4&gt;
  
  
  Start Building your Web3 dApps today
&lt;/h4&gt;

&lt;p&gt;For a brief tutorial on how to display user tokens, NFTs, and transactions with Smart SDK, please check out this video made by our tech team. The SDK is now free to use, so feel free to make an NFT Marketplace MVP now! &lt;/p&gt;

&lt;h3&gt;
  
  
  Smart Wallet
&lt;/h3&gt;

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

&lt;h4&gt;
  
  
  Development Difficulties
&lt;/h4&gt;

&lt;p&gt;During the wallet development, showing the transaction details could be a pickle when you need to construct a front end first and find the best match on-chain data monitoring tool to feed data. As you can see in the Mirrors Jump scenario, the Smart Wallet will provide you with an interface that will save you from front-end development. The security passcode with a reliable third-party KMS will bring extra safety to your dApp. All you have to do is plug-in the SDK and you can pull out the whole function right in your dApp.&lt;/p&gt;

&lt;h4&gt;
  
  
  Improve customer experience
&lt;/h4&gt;

&lt;p&gt;It is hard to keep the customer experience for purchasing smooth as well, especially in mobile scenarios. Along with Smart Marketplace, Smart Wallet would also help with reducing purchasing friction, limiting all purchasing actions inside your dApp. The easier the purchase brings more purchases.&lt;br&gt;
And as you can see in the demonstration, other auxiliary services like on-ramp are also provided.&lt;/p&gt;

&lt;h4&gt;
  
  
  Try to make a Wallet MVP now
&lt;/h4&gt;

&lt;p&gt;For the complete Mirror World Smart SDK Doc, please &lt;a href="https://bit.ly/3NwXS09"&gt;visit here&lt;/a&gt; and start to build your first Crypto Wallet. The whole process is free of charge.&lt;/p&gt;

&lt;h3&gt;
  
  
  Smart Auth
&lt;/h3&gt;

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

&lt;h4&gt;
  
  
  Development Difficulties
&lt;/h4&gt;

&lt;p&gt;Building a Web 3 wallet login requires familiarization with the principles of crypto wallets, transaction objects, and signatures as well as private key security. Smart Auth will resolve all of that, with extra Web 2 log-in methods provided. &lt;/p&gt;

&lt;h4&gt;
  
  
  Social Authentication
&lt;/h4&gt;

&lt;p&gt;Only one integration will bring five and more Web 2 login methods into action. Logging in with Web 2 methods(Google, Twitter, Discord, Email, Facebook, etc.) will make your product no different from a Web 2 app when it comes to user acquisition. More customers will then able to convert as a user in yout dapps/games.&lt;/p&gt;

&lt;h4&gt;
  
  
  Adaptable to Various Wallet, Including Your Own
&lt;/h4&gt;

&lt;p&gt;For many Web 3 infra providers, one of the intentions of providing minimal-size APIs is to make various applicable use cases become possible, Mirror World's holistic SDK also has just that, but simpler. You will still be able to use either your self-developed wallet or a third-party wallet to log in and purchase, but with a less complicated developing process. With a general interface and ready-to-hand connectors provided, you can now focus on making your product special and unique.&lt;/p&gt;

&lt;h4&gt;
  
  
  Example: Log in to Mirror Jump
&lt;/h4&gt;

&lt;p&gt;In the Mirrors Jump demonstration, the normal Web 2 login will seem the same as any Web 2 app, and the Wallet sign-in will not force you to jump out of the dApp. Just plug in the SDK and you can have the functions just like in Mirrors Jump, then feel free to make any changes as you like.&lt;/p&gt;

&lt;h4&gt;
  
  
  Start BUilding an All-In-One Login Today
&lt;/h4&gt;

&lt;p&gt;For the User Auth tutorial, please visit this video from our tech team. For more information, you can visit our website here as well.&lt;/p&gt;

&lt;h3&gt;
  
  
  Smart NFT Creation
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--770R-Loz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vprge6830pgm8vmxaf5m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--770R-Loz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vprge6830pgm8vmxaf5m.png" alt="Image description" width="880" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Development Difficulties
&lt;/h4&gt;

&lt;p&gt;NFT creation is a complicated and repetitive task for developers when you have to thoroughly figure out a smart contract and ensure it is secure before you land it. Since almost nothing can be done once it is applied, extra cost from rigorous auditing is often needed, you can never be more discreet. Mirror World SDK provides different types of smart contracts. Every smart contract is audited to ensure security, eliminate further concerns while simplifying the development process.&lt;/p&gt;

&lt;h4&gt;
  
  
  In Game NFT Creation
&lt;/h4&gt;

&lt;p&gt;In Mirrors Jump, you can mint your NFT inside the game, friction-less, just like the in-game purchasing. Developers can just fill out configuration info on the Mirror World dashboard, the system will be ready to go.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ERVUvK8f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tirhxv19s7ljzy3u6mss.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ERVUvK8f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tirhxv19s7ljzy3u6mss.png" alt="Image description" width="880" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Try to make an NFT Minting Tool now
&lt;/h4&gt;

&lt;p&gt;For the complete Mirror World Smart SDK Doc, please visit this website and start to build your first NFT Minting Tool here. The whole process is free of charge.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to get started?
&lt;/h3&gt;

&lt;p&gt;For a quick onboarding to our SDK, you can watch &lt;a href="https://www.youtube.com/watch?v=ZJo4_N7JpU8"&gt;this tutorial video&lt;/a&gt;&lt;br&gt;
To try out our SDK for free, please visit our dashboard here: &lt;br&gt;
&lt;a href="https://bit.ly/3NwXS09"&gt;app.mirrorworld.fun&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What's the advantage of Smart SDK?
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Save cost, Improve Revenue
&lt;/h4&gt;

&lt;p&gt;Saving developers months of logistic and repetitive development is our primary goal. Also, you will also have access to Web 2's user base and expand yours fast and securely. &lt;/p&gt;

&lt;h4&gt;
  
  
  All-in-one
&lt;/h4&gt;

&lt;p&gt;Mirror World Smart SDK is All-In-One, the aforementioned features are all integrated into one SDK, no more figuring out what function you need and spending time finding the API of the best fit. The info in the Blog and Video tutorials would suffice. &lt;br&gt;
We believe that developers shouldn't spend time re-inventing the wheels over and over. Almost all use cases in the Smart SDK have the most well-rounded front-end and back-end solutions on the market, all you need is to plug in.&lt;/p&gt;

&lt;h4&gt;
  
  
  Safe
&lt;/h4&gt;

&lt;p&gt;The last thing you want in a Web 3 project is your Smart contract isn't going in the right direction or bugs susceptive to foreign attacks. Mirror World Smart SDK uses reliable third-party KMS to guarantee the private keys' safety and keep foreign attacks away.&lt;/p&gt;

&lt;h4&gt;
  
  
  Community and Professional Support
&lt;/h4&gt;

&lt;p&gt;We have detailed Doc and Blog/Video tutorials for you to onboard the Smart SDK and will guide you through building MVPs in each use case. For additional questions and contributions, please join our discord and receive professional support from our tech team.&lt;br&gt;
Use Case: Check Out Mirrors Jump Game Demo&lt;br&gt;
Mirror World Smart SDK has also been powering the Web 3 gaming matrix Mirror Matrix for a long time, with three successful games rolled out from the platform. The most recent game Mirrors Jump is developed entirely using Smart SDK, implementing all of the features. Feel free to experience the game and see what Smart SDK's product looks like in action. You could also collect SDK Test Tokens by playing the game.&lt;/p&gt;

&lt;h3&gt;
  
  
  Other questions
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Who is Mirror World?
&lt;/h4&gt;

&lt;p&gt;Mirror World is a Web3 mobile infrastructure project for forward-thinking crypto projects that focuses on cross-platform development, helping increase speed to market and helping game teams roll out full-stack crypto dApps. Mirror World is backed by top-tier VCs including Galaxy Interactive, Republic Crypto, Mirana Ventures, OKX BDV, IVC, Sky9 Ventures and more. The team comes from a variety of backgrounds including EA, Dropbox, ByteDance, NetEase, and various startups across the globe.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why Mobile?
&lt;/h4&gt;

&lt;p&gt;One core emphasis that the team at Mirror World has focused on is on Mobile. We believe strongly that the future is mobile. That is why we put much focus on helping developers and their products to gain more customers from mobile and Web 2 end. And as builders of mobile games ourselves, we are familiar with the problems within traditional game and mobile app development, that include on-boarding for Web3, transaction processing, storefronts, and have created building blocks that help solve these problems elegantly with Web 3. We have now successfully rolled out three mobile NFT games, with the newest one being Mirrors Jump you see throughout the article. Our work in mobile gaming as well as the growing community of over 10,000+ members represents our commitment to the vision of creating and maintaining these APIs and SDKs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Official Website/Doc link
&lt;/h3&gt;

&lt;p&gt;For our tech Doc please visit: &lt;br&gt;
&lt;a href="https://bit.ly/3WqJtqt"&gt;docs.mirrorworld.fun&lt;/a&gt;&lt;br&gt;
For the Official Website please visit: &lt;br&gt;
&lt;a href="https://bit.ly/3FIEcV0"&gt;mirrorworld.fun&lt;/a&gt;&lt;/p&gt;

</description>
      <category>sdk</category>
      <category>web3</category>
      <category>nft</category>
      <category>mirrorworld</category>
    </item>
    <item>
      <title>Question: How to test large pages in Vue/React?</title>
      <dc:creator>Jonathan Bakebwa</dc:creator>
      <pubDate>Fri, 13 Mar 2020 09:56:44 +0000</pubDate>
      <link>https://dev.to/codebender828/question-how-to-test-large-pages-in-vue-react-2jp</link>
      <guid>https://dev.to/codebender828/question-how-to-test-large-pages-in-vue-react-2jp</guid>
      <description>&lt;p&gt;Hello friends! 😄  (Long question approaching... )&lt;/p&gt;

&lt;p&gt;I'm looking for some advice on Testing large Vue SFC pages that have lots of smaller already unit tested components.&lt;/p&gt;

&lt;p&gt;We have a pretty big enterprise application at work, and it's pretty heavily unit tested. All the smaller atom and a few big components that consist of many parts are all pretty well tested. I feel secure about them.&lt;/p&gt;

&lt;p&gt;The problem for me comes it when it comes to page level tests that have a lot of modules and it's very taxing to simply create mocks for each module. Some of these include Vuex store modules, and DOM APIs, WebRTC streaming libraries that we plug into the component instance, etc.&lt;/p&gt;

&lt;p&gt;It's honestly a bit worrisome when it comes to unit-testing these pages, because technically they are no longer units, and I'm worried that testing them will require me to mock so many parts of the page and I worry that  I may end up testing implementation details especially because some of the internals change a lot depending on the features we add or remove.&lt;/p&gt;

&lt;p&gt;So I wanted to know how to go about this. I decided to write end to end tests for these pages, but this doesn't entirely cover everything that I feel should be tested. Is there a way to write these kinds of tests for big SFC pages in Vue?&lt;/p&gt;

&lt;p&gt;On my searching journey, I've heard of integration tests, but there's very little written about this topic. Most coverage is about unit tests and E2E tests. I'd some advice and perhaps any suggestions that would guide me towards the right course of action. 🙏🏽&lt;/p&gt;

&lt;p&gt;I might also be approaching this the wrong way! So I'm happy to gather some insight on this topic! Thanks!&lt;/p&gt;

</description>
      <category>vue</category>
      <category>react</category>
      <category>cypress</category>
      <category>jest</category>
    </item>
    <item>
      <title>Leverage `provide/inject` to avoid prop drilling in Vue.js</title>
      <dc:creator>Jonathan Bakebwa</dc:creator>
      <pubDate>Wed, 29 Jan 2020 03:58:37 +0000</pubDate>
      <link>https://dev.to/codebender828/leverage-provide-inject-to-avoid-prop-drilling-in-vue-js-1k06</link>
      <guid>https://dev.to/codebender828/leverage-provide-inject-to-avoid-prop-drilling-in-vue-js-1k06</guid>
      <description>&lt;p&gt;&lt;em&gt;This post was originally posted on my &lt;a href="https://www.jbakebwa.dev/posts/provide-inject.html"&gt;personal blog.&lt;/a&gt; 😀&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;There is no absolute right way of doing things. In the end we are all just monkeys with keyboards writing software that we &lt;strong&gt;hope&lt;/strong&gt; will work for other monkeys too.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Working with Props&lt;/li&gt;
&lt;li&gt;
What is &lt;code&gt;provide&lt;/code&gt; &amp;amp; &lt;code&gt;inject&lt;/code&gt; ?

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;provide&lt;/code&gt; API&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;inject&lt;/code&gt; API&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Real World Example&lt;/li&gt;
&lt;li&gt;When to use &lt;code&gt;provide&lt;/code&gt; &amp;amp; &lt;code&gt;inject&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="props"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Working with props.
&lt;/h3&gt;

&lt;p&gt;Out of the box, Vue.js gives us the ability to pass data from a parent component to it's children using &lt;a href="https://vuejs.org/v2/guide/components-props.html"&gt;props.&lt;/a&gt; This makes it a lot easier to share information from a parent to it's child components.&lt;/p&gt;

&lt;p&gt;Props can be both static, and dynamic(and/or reactive). This means that when the value of a prop that is passed from a parent to a child component changes, the prop value in the child updates as well and triggers a re-render for that component.&lt;/p&gt;

&lt;p&gt;There are also instances when you need to share some values in a parent component with a (for lack of a better word) grandchild component. To solve this, one could use props to pass them down to the child and then the child component would eventually pass them down to it's grandchild component. However this is not very elegant and results in &lt;a href="https://codeburst.io/react-anti-pattern-prop-drilling-54474d5236bd"&gt;prop drilling&lt;/a&gt; which can be difficult to maintain for large applications.&lt;/p&gt;

&lt;p&gt;&lt;a id="provide-inject"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Vue's &lt;code&gt;provide&lt;/code&gt; / &lt;code&gt;inject&lt;/code&gt; API.
&lt;/h3&gt;

&lt;p&gt;In order to help prevent the prop drilling phenomenon, Vue.js also allows us to expose or &lt;code&gt;provide&lt;/code&gt; variables in the parent component, that any child component in it's component tree depth can &lt;code&gt;inject&lt;/code&gt; into it's context.&lt;/p&gt;

&lt;p&gt;Vue uses these two properties combined to allow an ancestor component to serve as a dependency injector for all of it's descendants in the same parent chain. This opens up some really cool possibilities. Now, regardless of how deep the component hierarchy is, any descendant component can &lt;em&gt;inject&lt;/em&gt; variables &lt;em&gt;provided&lt;/em&gt; by an ancestor component into it's own context.&lt;/p&gt;

&lt;p&gt;&lt;a id="provide"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;provide&lt;/code&gt; API
&lt;/h4&gt;

&lt;p&gt;In order to make an ancestor component provide some variables to it's children, we use the &lt;code&gt;provide&lt;/code&gt; property in the said component. The &lt;code&gt;provide&lt;/code&gt; option &lt;a href="https://vuejs.org/v2/api/#provide-inject"&gt;can be an object or a function that returns an object.&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="c1"&gt;// Provider.js&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Provider&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;provide&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;$colorMode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;light&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a id="inject"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;inject&lt;/code&gt; API
&lt;/h4&gt;

&lt;p&gt;In the Child component that we wish to use/consume the variables provided by our &lt;code&gt;Provider&lt;/code&gt; component, we can use the &lt;code&gt;inject&lt;/code&gt; property. The &lt;code&gt;inject&lt;/code&gt; option can either be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;an array of strings, or&lt;/li&gt;
&lt;li&gt;an object where the keys are the local binding name and the value is either:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="c1"&gt;// Child.js&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Child&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;inject&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;$colorMode&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="nx"&gt;created&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;$colorMode&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// =&amp;gt; "light"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Cool! Now we have the &lt;code&gt;$colorMode&lt;/code&gt; available in the &lt;code&gt;Child&lt;/code&gt; component.&lt;/p&gt;

&lt;p&gt;Let's look at a Real World Example to illustrate this.&lt;/p&gt;

&lt;p&gt;&lt;a id="example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Themed Component Library with &lt;code&gt;provide&lt;/code&gt; and &lt;code&gt;inject&lt;/code&gt;.
&lt;/h2&gt;

&lt;p&gt;A lot of component libraries that have themes that require that the &lt;code&gt;theme&lt;/code&gt; object is made available any where in the Vue application. This &lt;code&gt;theme&lt;/code&gt; can be used to determine the colors for any given color mode. We'll also need to know the color mode of the application that the users prefer.&lt;/p&gt;

&lt;p&gt;In this example, we'll create an tiny component library in Vue that has a light and dark color modes, and we use the current color mode to determine the colors of a descendant button component which exists at a much lower location in the component tree heirarchy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k8GsfXkd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://res.cloudinary.com/xtellar/image/upload/v1580207475/jbakebwa.dev/gifs/Jan-28-2020_18-14-16_v4qbjm.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k8GsfXkd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://res.cloudinary.com/xtellar/image/upload/v1580207475/jbakebwa.dev/gifs/Jan-28-2020_18-14-16_v4qbjm.gif" alt="Themed App using provide and inject"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All code can be found in this &lt;a href="https://codesandbox.io/s/using-provideinject-to-theme-vue-application-qumbr"&gt;codesandbox&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;code&gt;ThemeProvider&lt;/code&gt; component.
&lt;/h3&gt;

&lt;p&gt;We start by making a &lt;code&gt;ThemeProvider.vue&lt;/code&gt; component to provide two variables that we will need, namely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;$theme&lt;/code&gt; - This is the global app theme object with color variables from our design system&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;$colorMode&lt;/code&gt; - This is the current application color mode that the user prefers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I prefer to prefix provided variables with the &lt;code&gt;$&lt;/code&gt; so as to prevent namespace clashing in consumer components. It's easier for me to distinguish injected variables from local component variables.&lt;/p&gt;

&lt;p&gt;This is what the &lt;code&gt;ThemeProvider&lt;/code&gt; looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ThemeProvider&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;colorMode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;light&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="cm"&gt;/*
   * Here we provide the theme and colorMode we received
   * from the props
   */&lt;/span&gt;
  &lt;span class="nx"&gt;provide&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;$theme&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;$colorMode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;colorMode&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="nx"&gt;render&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;$slots&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;default&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Because this component doesn't render anything in the DOM, we don't need to have a template so we make it a &lt;a href="https://adamwathan.me/renderless-components-in-vuejs/"&gt;renderless component&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;code&gt;Button&lt;/code&gt; consumer component
&lt;/h3&gt;

&lt;p&gt;As the user toggles the color mode between light and dark, we need to inject the changed values in the button so as to reflect the corresponding theme styles accordingly. To do that we create a &lt;code&gt;Button.vue&lt;/code&gt; component.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight vue"&gt;&lt;code&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Button&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;inject&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$theme&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$colorMode&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;computed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;$theme&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="nx"&gt;colorMode&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;$colorMode&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;In our &lt;code&gt;Button.vue&lt;/code&gt; component we use a computed variable in order to preserve the reactivity of the variables provided by the &lt;code&gt;ThemeProvider.vue&lt;/code&gt; component.&lt;/p&gt;

&lt;p&gt;Hooray! With any luck, you should be seeing these changes in your child component as well. For a more fully fleshed out example of how you can use &lt;code&gt;provide&lt;/code&gt;/&lt;code&gt;inject&lt;/code&gt;, here's a &lt;a href="https://codesandbox.io/s/using-provideinject-to-theme-vue-application-qumbr"&gt;codesandbox example.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a id="when-to-use"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  When to use &lt;code&gt;provide&lt;/code&gt; &amp;amp; &lt;code&gt;inject&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;In most applications, you will most probably not need to use the &lt;code&gt;provide&lt;/code&gt;/&lt;code&gt;inject&lt;/code&gt; features in Vue. A lot of the problems that it solves can be easily solved with proper state management using Vuex, or even props. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;provide&lt;/code&gt; and &lt;code&gt;inject&lt;/code&gt; are primarily provided for advanced plugin / component library use cases. It is NOT recommended to use them in generic application code.&lt;br&gt;
~ &lt;a href="https://vuejs.org/v2/api/#provide-inject"&gt;Official Vue.js Docs&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a id="conclusion"&gt;&lt;/a&gt;&lt;br&gt;
Thank you for reading!&lt;/p&gt;

&lt;p&gt;It's my first time writing on DEV and I'd like to improve my writing as well as my knowledge. I'll be happy to receive your feedback and hopefully answer some questions about &lt;code&gt;provide&lt;/code&gt; and &lt;code&gt;inject&lt;/code&gt; 🖖🏽&lt;/p&gt;

</description>
      <category>vue</category>
      <category>reactivity</category>
      <category>provide</category>
      <category>inject</category>
    </item>
  </channel>
</rss>
