<?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: Lauren Dutton</title>
    <description>The latest articles on DEV Community by Lauren Dutton (@laurenmxv).</description>
    <link>https://dev.to/laurenmxv</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%2F951578%2Fd0311db5-912b-47e4-926e-298254e7f784.jpg</url>
      <title>DEV Community: Lauren Dutton</title>
      <link>https://dev.to/laurenmxv</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/laurenmxv"/>
    <language>en</language>
    <item>
      <title>EIP-6963: Simplifying Wallet Integration for Web3 Developers</title>
      <dc:creator>Lauren Dutton</dc:creator>
      <pubDate>Wed, 17 May 2023 21:22:34 +0000</pubDate>
      <link>https://dev.to/laurenmxv/eip-6963-simplifying-wallet-integration-for-web3-developers-4dka</link>
      <guid>https://dev.to/laurenmxv/eip-6963-simplifying-wallet-integration-for-web3-developers-4dka</guid>
      <description>&lt;p&gt;Developers in the world of Web3 face challenges when integrating wallets into their decentralized applications. The traditional method of injecting Ethereum providers into the window.ethereum object can create conflicts and limit user choices, ultimately degrading the user experience. Ethereum Improvement Proposal 6963 (EIP-6963) was introduced to address these issues. This proposal offers a standardized solution utilizing window events for seamless communication between Ethereum libraries and injected scripts. By implementing EIP-6963, developers can streamline wallet integration, enhance user choice, and ensure compatibility among different wallets, thus enabling seamless interoperability across the Web3 ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Streamlining Wallet Integration:&lt;/strong&gt;&lt;br&gt;
EIP-6963 introduces a mechanism that simplifies the integration of various wallet options into decentralized applications (dApps). This standardized approach eliminates conflicts and empowers developers to offer multiple wallet choices to users. With EIP-6963, wallet integration becomes a user-friendly and seamless experience, allowing developers to focus on building innovative dApps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lowering the Barrier to Entry:&lt;/strong&gt;&lt;br&gt;
One significant impact of EIP-6963 is its ability to reduce the complexity associated with integrating wallets into Web3 applications. This simplification lowers the barrier to entry for new developers entering the blockchain space. It enables them to easily incorporate blockchain functionality into their applications without the intricacies of wallet integration. As a result, more developers can effortlessly enter the Web3 arena, fostering growth and innovation within the ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enhanced User Onboarding to Web3:&lt;/strong&gt;&lt;br&gt;
EIP-6963 plays a crucial role in improving the onboarding experience for users entering the world of Web3. By allowing users to select their preferred wallet provider, they gain control and flexibility over their interactions with Ethereum networks. This enhancement makes the overall user experience more intuitive and accessible, especially for newcomers navigating and interacting with dApps. Users have the freedom to choose and utilize multiple wallets, enabling a personalized and flexible experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Promoting Interoperability:&lt;/strong&gt;&lt;br&gt;
EIP-6963's emphasis on interoperability has a transformative impact on the Web3 ecosystem. By enabling seamless interactions between different wallets and decentralized applications, collaboration and innovation among wallet providers are encouraged. This fuels the development of new features and services, ultimately strengthening the Web3 ecosystem and driving the adoption of decentralized applications.&lt;/p&gt;

&lt;p&gt;Ethereum Improvement Proposal 6963 (EIP-6963) brings significant benefits to Web3 developers by providing a standardized solution that simplifies wallet integration, enhances user onboarding, and promotes interoperability within the ecosystem. With EIP-6963, developers can seamlessly integrate multiple wallet providers, fostering fair competition and expanding user choices. This streamlined integration process empowers developers to focus on building innovative dApps, while users benefit from a more accessible and user-friendly Web3 experience. &lt;/p&gt;

&lt;p&gt;Authors of EIP-6963: Pedro Gomes (&lt;a class="mentioned-user" href="https://dev.to/pedrouid"&gt;@pedrouid&lt;/a&gt;), Kosala Hemachandra (@kvhnuke), Richard Moore (@ricmoo), Gregory Markou (@GregTheGreek), Kyle Den Hartog (@kdenhartog), Glitch (@glitch-txs), Micah Zoltu (@MicahZoltu), Jake Moxey (@jxom), Pierre Bertet (&lt;a class="mentioned-user" href="https://dev.to/bpierre"&gt;@bpierre&lt;/a&gt;), Darryl Yeo (&lt;a class="mentioned-user" href="https://dev.to/darrylyeo"&gt;@darrylyeo&lt;/a&gt;)&lt;/p&gt;

</description>
      <category>ethereum</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Leveraging the Infura Dashboard for Project Analytics</title>
      <dc:creator>Lauren Dutton</dc:creator>
      <pubDate>Wed, 17 May 2023 18:21:07 +0000</pubDate>
      <link>https://dev.to/laurenmxv/leveraging-the-infura-dashboard-for-project-analytics-158b</link>
      <guid>https://dev.to/laurenmxv/leveraging-the-infura-dashboard-for-project-analytics-158b</guid>
      <description>&lt;p&gt;Infura equips developers with a comprehensive dashboard that provides invaluable insights and statistics. This article will give an overview of each component of the Infura dashboard, highlighting the data they represent and demonstrating how leveraging this information can optimize project efficiency and performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Requests Volume:&lt;/strong&gt;&lt;br&gt;
The Requests Volume component on the dashboard showcases the total volume of requests sent to Infura within the selected time period. This metric provides a comprehensive overview of your project's demand and usage patterns. Look for patterns, spikes, or dips in request volumes. Compare the volume data across different time periods to identify growth trends, seasonal fluctuations, or sudden changes that may require further investigation.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;2. Network Requests Volume:&lt;/strong&gt;&lt;br&gt;
The Network Requests Volume component reveals the breakdown of aggregate request volumes for the top five networks utilized in your project. This granular data offers insights into the specific networks experiencing the highest traffic. By understanding the demand distribution across different networks, you can identify potential performance issues, or congestion allowing you to optimize network selection or allocate additional resources strategically. The Infura Dashboard also monitors network outages and can be checked at &lt;a href="https://dev.tourl"&gt;status.infura.io&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;3. Method Request Volumes:&lt;/strong&gt;&lt;br&gt;
The Method Request Volumes component provides a detailed breakdown of the aggregate request volumes for the top five methods used on each network within your project. This data allows you to delve into the most frequently utilized methods. By closely monitoring these volumes, you can gain insights into usage patterns, optimize code and gas consumption for commonly used methods, and even explore opportunities for cost reduction and transaction efficiency.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;4. Requests Activity:&lt;/strong&gt;&lt;br&gt;
The Requests Activity component presents a comprehensive breakdown of the total request volumes, successful requests, and failed requests based on networks and methods used within your project. This information is crucial for monitoring the health and performance of your dapp. By having insight into failed requests, you can promptly spot any potential issues. This real-time feedback enables you to take proactive measures to rectify errors, optimize performance, and deliver a seamless user experience.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;5. Eth_call Activity:&lt;/strong&gt;&lt;br&gt;
Eth_call Activity component focuses on the eth_call method, which serves as the primary means to access already mined data from the blockchain about a particular smart contract. Analyzing eth_call activity can provide deeper insights into the requests youre making to the blockchain, integrate external data and monitor contract interactions. Identify the frequency and nature of these interactions This empowers you to make informed decision and optimize the performance and security of your dapp. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to put this data to work:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Optimization: Analyze the data from Requests Volume, Method Request Volumes, and Network Requests Volume to identify performance bottlenecks, optimize code, and allocate resources effectively, resulting in improved project responsiveness.&lt;/li&gt;
&lt;li&gt;Scalability: Utilize Requests Volume to plan for peak usage periods and ensure your project can scale seamlessly to meet increased demand, guaranteeing a consistently smooth user experience.&lt;/li&gt;
&lt;li&gt;Error Handling: Monitor Requests Activity to identify failed requests and take prompt action to diagnose and rectify errors, minimizing disruptions and optimizing project reliability.&lt;/li&gt;
&lt;li&gt;Cost Optimization: Analyze Method Request Volumes to optimize gas consumption, transaction costs, and identify areas for efficiency improvement, resulting in cost savings for your project.&lt;/li&gt;
&lt;li&gt;Network Selection: Utilize Network Requests Volume to make informed decisions when selecting networks, ensuring optimal performance, and minimizing potential network-related issues.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Infura's dashboard provides developers with many insights into project performance and usage patterns. By leveraging the data available in your dashboard, you can make informed decisions, optimize performance, and scale your decentralized application.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Deploy NFT Smart Contracts without Solidity</title>
      <dc:creator>Lauren Dutton</dc:creator>
      <pubDate>Mon, 15 May 2023 20:36:08 +0000</pubDate>
      <link>https://dev.to/laurenmxv/deploy-nft-smart-contract-without-solidity-5do</link>
      <guid>https://dev.to/laurenmxv/deploy-nft-smart-contract-without-solidity-5do</guid>
      <description>&lt;p&gt;If your new to web3, or just getting started with Solidity, building out an end to end ERC721 or 1155 smart contract to deploy your NFT collection is no easy feat. In this blog post, we'll explore how you can use Infura's NFT API/SDK to deploy collection using exclusively javascript. &lt;/p&gt;

&lt;p&gt;Supported Networks:&lt;br&gt;
Infura's NFT SDK supports various networks, including Arbitrum, Avalanche (C-Chain), Ethereum, Palm, and Polygon. It's important to note that the write operations on the Palm Testnet network are only supported by the SDK, while read operations can be performed using REST APIs.&lt;/p&gt;

&lt;p&gt;Getting Started:&lt;br&gt;
Before diving into the code, make sure you have the latest version of Node.js installed on your system. Once that's done, let's initialize a new project and install the necessary libraries.&lt;/p&gt;

&lt;p&gt;Get Test Funds:&lt;br&gt;
Head over to &lt;a href="https://dev.tourl"&gt;faucet.infura.io&lt;/a&gt; to grab some Sepolia ETH, we're going to need it to deploy our contract. &lt;/p&gt;

&lt;p&gt;Create a new project directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;new_project
&lt;span class="nb"&gt;cd &lt;/span&gt;new_project
npm init &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install the required libraries:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-S&lt;/span&gt; @infura/sdk
npm i dotenv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a .env file:&lt;br&gt;
Create a .env file in the project root directory and add the following data:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;INFURA_API_KEY=&amp;lt;API-KEY&amp;gt;
INFURA_API_KEY_SECRET=&amp;lt;API-KEY-SECRET&amp;gt;
WALLET_PUBLIC_ADDRESS=&amp;lt;WALLET-PUBLIC-ADDRESS&amp;gt;
WALLET_PRIVATE_KEY=&amp;lt;WALLET-PRIVATE-KEY&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace the placeholders with your own Infura project credentials, and add a wallet address and its private key for testing on the supported network.&lt;/p&gt;

&lt;p&gt;Create your ContractURI:&lt;br&gt;
This will just be a link to a pinned chunk of json code that tells our program what the metadata of your collection looks like. From the example below mine looks like this:&lt;br&gt;
{&lt;br&gt;
    "description": "jet", &lt;br&gt;
    "image": "&lt;a href="https://gateway.pinata.cloud/ipfs/QmWtgDewkagKn7ZYTFyHfkJ3uYCnmL3gfdWdSQpXs4VCaN/jet_img3.png"&gt;https://gateway.pinata.cloud/ipfs/QmWtgDewkagKn7ZYTFyHfkJ3uYCnmL3gfdWdSQpXs4VCaN/jet_img3.png&lt;/a&gt;", &lt;br&gt;
    "name": "my airplane nft"&lt;br&gt;
  }&lt;br&gt;
and the image links to a picture of an airplane. My metadata indicates that there is only 1 token in the collection, but you can keep adding to the json file for each token as long as they are unique.  &lt;/p&gt;

&lt;p&gt;Code Implementation:&lt;br&gt;
Now that we have the project set up and the required libraries installed, let's dive into the code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Import the libraries and load the environment variables.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;SDK&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Auth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;TEMPLATES&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@infura/sdk&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dotenv&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Create Auth object&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;auth&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Auth&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;projectId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;INFURA_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;secretId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;INFURA_API_KEY_SECRET&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;privateKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;WALLET_PRIVATE_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;rpcUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;RPC_URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;chainId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;11155111&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Instantiate SDK&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sdk&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;SDK&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;deployContract&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newContract&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;sdk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;deploy&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;TEMPLATES&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ERC721Mintable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;params&lt;/span&gt;&lt;span class="p"&gt;:&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;Airplanes&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;symbol&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;JET&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;contractURI&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://gateway.pinata.cloud/ipfs/Qmbta8RRbdXjyvXwkuqmbsXkZ8ZRoMezNsP7g6n9Db1Mx1&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;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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Contract address:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;newContract&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;contractAddress&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&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;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;An error occurred:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&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="nx"&gt;deployContract&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Explanation:&lt;br&gt;
The code above demonstrates a basic implementation using Infura's NFT SDK. First, we import the necessary libraries and load the environment variables from the .env file. The Auth object is then created using the provided credentials.&lt;/p&gt;

&lt;p&gt;Next, we instantiate the SDK with the Auth object. Inside the &lt;code&gt;deployContract&lt;/code&gt; function, we make use of the &lt;code&gt;sdk.deploy&lt;/code&gt; method to deploy a new NFT contract. We specify the template as &lt;code&gt;TEMPLATES.ERC721Mintable&lt;/code&gt; and provide additional parameters like the contract name, symbol, and contractURI.&lt;/p&gt;

&lt;p&gt;Upon successful deployment, the contract address is logged to the console. This address represents the newly deployed NFT contract. &lt;/p&gt;

&lt;p&gt;Congratulations! You have successfully deployed an ERC721Mintable NFT and are now are the owner of a token on the Sepolia testnet. Want proof? You can check this out &lt;a href="https://sepolia.etherscan.io/"&gt;Sepolia Etherscan&lt;/a&gt;&lt;/p&gt;

</description>
      <category>web3</category>
      <category>nft</category>
      <category>blockchain</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
