每天分享最新软件开发,Devops,敏捷,测试以及项目管理最新,最热门的文章,每天花3分钟学习何乐而不为,希望大家点赞,加关注,你的支持是我最大的动力。
到现在为止,我只在 Web3工作了一年左右,但是我可以诚实地说,NFT 对我来说是最令人兴奋的方面。不过,我说的不是猿猴或朋克。PFP (个人资料图片)项目和艺术,虽然是一个冷静和简单的概念证明的技术,不会创造一个更好的世界。
相反,我对 NFT 的实际效用感到兴奋。允许游戏玩家拥有自己的资产,向音乐家和艺术家提供公平的版税佣金,以及在提供甜蜜的数字纪念品的同时使音乐会门票不可能剥离,这些都是我觉得有趣的用例。
然而,构建和与 NFT 交互并不总是最容易的事情。作为开发人员,我们需要清晰的资源来有效地构建项目,以便为用户提供更好的体验。
我最近听说了 Infura 的 NFT API 的内部测试版,所以我想我应该去看看,看看它是如何改进我的开发工作流程的。在本文中,我将探索 Infura 的 NFT API 的功能,并使用来自 Infura 的 Github 的 Lootbox NFT 示例项目对其进行测试。
根据 Infura 网站上的这篇博客文章,NFT API 将帮助我“加快我的价值评估时间”,并允许我通过一个方便的 SDK 与任何与 NFT 相关的东西进行交互。此外,我可以构建和验证我的 NFT,创建元数据模板,并轻松创建 NFT。因此,我的第一印象是,我可以开始使用 API 端点创建 NFT 并与其交互,而不是构建智能契约并部署它们。
听起来很有用!我完全支持测试任何有助于改进我的开发过程的工具。Infura 的 NFT API 套件似乎对任何从 Web2转换过来的开发人员都很有帮助,因为您可以在没有 Solidy 的情况下运行 API 端点。
现在让我们深入研究一下,看看这个 NFT API 能够做些什么。
快速浏览一下 Infura 网站上的 NFT API 文档,就可以证明我的第一印象是正确的。我将能够使用 Infura 的 API 端点在我的 NFT 契约上部署和调用方法,而不必实际编写智能契约代码。这是一个巨大的节省时间!
部署契约很简单。我创建 JSON 格式的 NFT 元数据,将元数据上传到另一个 Infura 项目中的 IPFS,然后创建一个简单的部署脚本并用 node 运行它。我还要做一个。Env 文件来保存一些环境变量。我的部署脚本最终看起来是这样的:
JavaScript
import { config as loadEnv } from 'dotenv';import { SDK, Auth, TEMPLATES } from '@infura/sdk';loadEnv();const auth = new Auth({ projectId: process.env.INFURA_PROJECT_ID, secretId: process.env.INFURA_PROJECT_SECRET, privateKey: process.env.WALLET_PRIVATE_KEY, chainId: 4, });const sdk = new SDK(auth);const myNFTContract = await sdk.deploy({ template: TEMPLATES.ERC721Mintable, params: { name: 'My NFT Contract', symbol: 'MYNFT', contractURI: 'https://MY_NFT_METADATA_URL', }, });console.log(`Contract address is: ${myNFTContract.contractAddress}`);然后,我用 Node 运行它。Infura 为我创建了一个聪明的合同,并在幕后上传到 Etherum。之后,我只需要确保在代码中指定的 chainId 有一些标记; 在本例中,是 Rinkeby testnet (chainId: 4)。从这里,我可以从这个合同中创建 NFT 或者收集合同元数据。
这是一个更容易的方法来创建一个 NFT 契约比编写 Solidy 代码和部署它自己!
NFT API 还提供了从钱包收集 NFT 信息、将 NFT 从一个钱包传输到另一个钱包以及许多其他 NFT 方法的方法。这些包括向矿工列表添加地址、设置版税信息和更改合同 URI。
总的来说,似乎 Infura 的 NFT API 确实有助于改善我的开发工作流程。将构建和与 NFT 交互的所有必要功能打包在一个易于使用的 SDK 中是非常方便的!
但是关于它能做什么已经足够了: 让我们看看这个 API 是如何工作的!
与 NFT API 一起,Infura 在他们的 Github 上发布了一个 NFT Gallery 项目来演示它的功能。我所要做的就是输入一个 Infura 项目 ID 和机密,然后将我的 MetaMask 钱包连接到 dApp 前端。然后 dApp 使用 API 获取所有 NFT,以便在前端很好地显示。因此,为了分解这个问题,我需要这个项目的以下内容:
一个Infura account Infura 账户Infura 项目的身份和秘密钱包扩展 里面有 NFT我们开始吧!
在启动 Lotbox 项目之前,我想收集必要的项目。因此,首先,我将登录到 Infura 并创建一个新项目。然后,我可以获取项目 ID 和项目密钥,以备以后使用。
这一步会很快,因为我已经在浏览器中安装了扩展。但是,如果跟随本文的人没有这样的扩展,可以从 Metamask 为您的特定浏览器下载这个扩展。然后按照以下步骤创建一个新帐户。
接下来,我将登录并将帐户切换到存放 NFT 的钱包地址。如果你需要获得一个 NFT,你可以去你最喜欢的市场购买一个或者尝试使用 Infura NFT API 自己创建一个;)。不管怎样,你的钱包里都需要一些乙醚。
有了所有的准备工作,我就可以开始构建项目了,所以接下来,我将把项目回购复制到我的本地机器上。我将首先导航到我要使用的文件夹,然后键入以下命令:
git clone https://github.com/INFURA/nft-api-lootbox-gallery-app.git接下来,我将把目录更改为项目文件夹,并使用纱线安装依赖项:
cd nft-api-lootbox-gallery-appyarn安装完所有程序之后,我需要做的最后一件事就是创建一个。存储环境变量和秘密的 env 文件。我只需要复制已经存在的文件并将我的变量添加到其中。
cp .env .env.local 现在我将打开该项目,并添加我的项目 ID 和我最近创建的 Infura 项目的项目秘密。也有一个选项输入任何钱包的帐户地址查看他们的 NFTs,但我有我自己的我想在 Lootbox NFT Gallery 看到。
在完成了所有设置之后,我终于可以运行 Lotbox 项目了。但首先,我想浏览一下代码,看看在引擎盖下发生了什么。
基于 Lootbox 项目的 README 文件,最重要的组件位于 page/index.tsx、 hook/useWallet.ts 和 pages/api/assets.ts 文件中。所以我打算浏览一下,看看我能不能弄清楚这个项目是如何使用 Infura NFT API 的。
在查看这些文件之后,我可以看到页面/index.tsx 文件包含显示项目前端的代码。如果 showGallery 状态变量为 true,那么它应该显示我的 NFT。如果为 false,那么它应该显示带有 Connect Wallet 按钮的欢迎文本。这个 Connect Wallet 按钮连接到 hook/useWallet.ts 文件中的一些函数,所以我接下来将在这里检查。
在 hook/useWallet.ts 文件中,我可以看到应该抓取我的 NFT 的函数; 具体来说,就是 getTokens 函数。
JavaScript
const getTokens = async (accountAddress: string) => { try { const { data } = await axios.post('/api/assets', { accountAddress }); return data.assets; } catch (error) { setTimeout(() => { setErrorMessage('Error getting tokens'); }, 2000); return; } };这个函数似乎使用/api/asset 文件中的一个参数发出 POST 请求,并返回带有我的资产的结果。因此,查看页面/API/sets.ts 文件,我可以看到使用 NFT API 的位置。
JavaScript
1 try {2 const { data } = await axios.get( `https://nft.api.infura.io/networks/1/accounts/${accountAddress}/assets/nfts`,3 {4 headers: {},5 auth: {6 username: `${process.env.INFURA_PROJECT_ID}`,7 password: `${process.env.INFURA_PROJECT_SECRET}`8 }9 }10 );这段代码调用 NFT API 的 get 函数,使用我的 Infura Project ID 和 Project Secret 访问我的帐户,并在 JSON 对象中返回我的 NFT。沿着返回 page/index.tsx 文件的路径,如果 hook/useWallet.ts 中的 getTokens 函数没有超时,它将返回我的 NFT,将 setGallery 状态变量切换为 true,并在页面上显示我的 NFT。
酷! 所以我对它的工作原理有了一个想法: 让我们看看它的实际应用!
要在本地运行项目,我只需要输入:
yarn dev在导航到 http://localhost:3000/之后,我可以看到一个漂亮的 Lootbox 项目前端。
单击 Connect Wallet 会提示我的 MetaMask 钱包弹出来批准连接请求。
连接之后,它立即开始获取我的代币。这就是我现在知道 dApp 正在使用 NFT API 的地方。
一旦获取成功,它将在一个奇特的图库中显示我的 NFT,允许我浏览并选择每一个,以便更好地查看它们。太棒了!
我对 Infura NFT API 的评价是,它是一个缩短我开发时间的工具,我可以用它做很多事情。从一个易于使用的 API 构建、创建和与 NFT 交互非常方便。虽然我更熟悉使用 Solidy 构建 NFT 契约并使用 Truffle 部署它们,但是我可以很容易地看到这将如何帮助 Web2开发人员顺利地过渡到 Web3。对于许多 Web2开发人员来说,使用 JavaScript 而不是编写智能契约将大大节省时间。
我建议你自己试试 NFT API。还在内测阶段,但任何人都可以注册。要了解更多关于其功能的信息,您可以查看这个 YouTube 演示或 Infura 的文档。
版权声明:我们致力于保护作者版权,注重分享,被刊用文章【编辑合同用什么软件(在)】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!;
工作时间:8:00-18:00
客服电话
电子邮件
beimuxi@protonmail.com
扫码二维码
获取最新动态
