链资讯 链资讯
Ctrl+D收藏链资讯

SVG:五分钟学会如何使用Solidity创建链上NFT_coinbase和binance

作者:

时间:

链下NFT

这就引出了一个问题,不是所有的NFT都在链上吗?任何在以太坊区块链的NFT工作过的人都可以告诉你,链上数据存储确实存在限制;因为这是非常昂贵的,而且大多数NFT项目都是在链下存储图像和元数据文件。通常我们看到的存储在“链上”的唯一数据是元数据(我们的tokenURI)的不可变哈希——描述这个哈希的最简单的方法是链接到我们实际的NFT,这里的区别是哈希依赖于创建它的数据;改变源,哈希不再有效,因此它是不可变的。任何人都可以运行一个IPFS节点就像任何人都可以运行一个区块链节点矿工或共识。

现在,我们可能对Loot这样的“链上”项目很熟悉,这个项目是如何完成的?我们真的能在链上存储合适的视觉媒体吗?

答案是肯定的,但它需要一些东西,即Base64编码和SVG图像类型。两者都允许我们处理文本数据,而不是像PNG或JPEG这样典型的内存“重”视觉数据。这意味着我们需要做两件事:

Base64编码我们的json元数据

以SVG格式编码图像渲染的“指令”

幸运的是,浏览器可以理解这两种格式,基于浏览器的市场可以以与IPFS存储哈希的链接相同的方式呈现我们的NFT,然而,浏览器不是“获取和缓存”图像,而是为我们呈现图像。

Base64编码

实现链上元数据存储并避免对任何工具(如IPFS)的需求的一种方法是对其进行base64编码,并将其直接存储在我们的NFT代币数据中。在我们的例子中,tokenURI会以编码格式返回实际的元数据:这不再是一个“链接”,而是元数据本身。

加密支付网关Alchemy Pay与ZD Group合作,共享其四张香港金融牌照:据官方公告,加密支付网关宣布,它已与全球投资基金Mouette Securities的母公司ZD Group合作。在此战略合作框架下,ZD Group向Alchemy Pay提供投资及共享其香港证券及期货事务监察委员会(SFC)和保险业监管局(IA)授权的四张金融牌照,而Alchemy Pay承诺为ZD Group的所有业务提供加密支付解决方案。

其中,ZD Group已与Alchemy Pay共享其获证监会授予的香港1类、4类和9类金融服务牌照。这三张牌照是在香港开展金融投资业务的关键和强制性牌照,分别涵盖证券交易、证券咨询和资产管理等领域。此外,Alchemy Pay还将获得香港保险业监管局颁发的ZD Group旗下Sunbright Wealth Management所持有的保险经纪公司牌照。[2023/3/13 13:00:44]

正如我所说的,我们将利用来自GitHub的现有Base64.sol库。可以从github导入或简单地克隆/复制代码,并从粘贴此文件的同一目录导入此文件。

关于Base64的编码需要注意的是,编码并不是一种数据压缩形式,因此我们并没有减少数据的大小,我们只是将其存储在浏览器可以解码的格式中。我们的元数据不是非常大,这就是我们的NFT图像的情况。下面是一个例子:

ZD上线新加坡BitSG币星交易所:据官方消息,支点平台币ZD将于新加坡时间4月24日14:00(GMT+8)正式上线币星。

据介绍,支点交易所官方发行的平台积分通证一ZD,广泛应用于抵扣交易手续费、打新认购、加入支点股东、认证OTC商家等多个场景及权益,将不断赋予ZD在支点全球生态中的价值,并持续回购销毁至最终总量2100万为止,打造极致通缩的通证经济模式。

币星BitSG是新加坡本土数字资产交易所,2017年创立。已获节点资本,链上产业基金等多家机构战略投资,旗下的币星实验室,已为超过200个项目提供了合规,法务,孵化等一站式服务。币星也是新加坡首批在金管局申请支付服务牌照的交易所,通过区块链技术赋能实体经济。[2020/4/23]

在我们的示例代码中,我们利用了函数'BuildMetaData',它接受一个tokenId(我们的NFT的ID),并返回一个base64编码的json文本字符串,其中包含OpenSea使用其名称、描述、属性呈现我们的NFT所需的一切,非常重要的是,我们的形象。它还利用了我将在下面解释的BuildImage函数。

以下是我们的元数据示例:

{?"name":"NFT1",?"description":"Thisisouron-chainNFT",?"image":"data:image/svgxml;base64,PHN2ZyB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCBpZD0ic3ZnXzExIiBoZWlnaHQ9IjYwMCIgd2lkdGg9IjUwMyIgeT0iMCIgeD0iMCIgZmlsbD0iaHNsKDI5Myw1MCUsMjUlKSIvPjx0ZXh0IGZvbnQtc2l6ZT0iMTgiIHk9IjEwJSIgeD0iNSUiIGZpbGw9ImhzbCg5MCwxMDAlLDgwJSkiPlNvbWUgVGV4dDwvdGV4dD48dGV4dCBmb250LXNpemU9IjE4IiB5PSIxNSUiIHg9IjUlIiBmaWxsPSJoc2woOTAsMTAwJSw4MCUpIj5Tb21lIFRleHQ8L3RleHQPHRleHQgZm9udC1zaXplPSIxOCIgeT0iMjAlIiB4PSI1JSIgZmlsbD0iaHNsKDkwLDEwMCUsODAlKSIU29tZSBUZXh0PC90ZXh0Pjx0ZXh0IGZvbnQtc2l6ZT0iMTgiIHk9IjEwJSIgeD0iODAlIiBmaWxsPSJoc2woOTAsMTAwJSw4MCUpIj5Ub2tlbjogMTwvdGV4dD48dGV4dCBmb250LXNpemU9IjE4IiB5PSI1MCUiIHg9IjUwJSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iaHNsKDkwLDEwMCUsODAlKSIdXNlclRleHQ8L3RleHQPC9zdmc",?"attributes":}

金色财经现场报道 石木资本Omer Ozden: 区块链的法律也等同于一种科技:金色财经现场报道,在世界区块链大会·三点钟峰会宏观经济探讨部分,石木资本董事长、真格基金海外投资首席顾问,优客工场联合创始人Omer Ozden作了题为“中美区块链进化论”的主题演讲。Omer Ozden指出:中国正在经历迄今发展最好的年代,Omer曾提出VIE模式帮助了中国众多互联网企业在美国融资。Omer说,法律科技是全球化的,是在全球范围内分布应用,法律发展要跟上科技发展的变化,区块链领域,每3-6个月法律环境就会改变,变化速度非常快,所以对区块链说,法律也是一种科技。当前世界区块链涌入部分国家地区正是看到了“法律就是一种科技”的价值。[2018/4/24]

通常情况下,我们的“image”值是这样的:

{"image":"ipfs://QmWwMDLz6hQKCqjYba5cSHdrNUvPvAdndtaWjdFpm52GYm/1.gif"

}

那么我们的image值是怎么回事?我们的image值是1-SVG和2-SVG也是Base64编码的;这意味着我们的SVG文本已经像json(文本)数据一样被进行了编码。

可以注意到,我们在编码后的json中添加了一些内容,如下所示:

“application/json数据:;base64。”

BTC五分钟下跌1.44% 48小时新低:BTC正在下跌,五分钟下跌1.44%,一小时下跌2.9%。最低点8800美元,为48小时新低。[2018/5/1]

这只是简单地描述了数据是什么,以及接收方或接收方浏览器如何对其进行相应的解码。

ABI编码

我们还在整个项目代码中执行ABI编码。在我们的例子中,ABI编码或应用程序二进制接口只允许我们连接多行文本。“This”,“is”,“my”,“code”如果没有被编码成单个字符串,就会导致错误。

SVG文件

什么是SVG,为什么它对我们很重要?

SVG或可伸缩的矢量图形本质上允许我们以xml类型格式或文本形式存储图像;可以存储在链上的文本。我们不是存储大的图像数据,而是用文本描述我们想要的图像,并以我们的浏览器和OpenSea可以为我们呈现的方式对其进行编码。我们可以设置图像的各种特征,包括大小,颜色,甚至可以为我们呈现的文本。

可以这样想,如果我想给你发送一张简单的图片,我可以通过电子邮件或文本发送一张高分辨率的PNG图像,或者你可以简单地用几个词描述它,然后让你的收件人为你呈现或生成它。如果数据传输是昂贵的,我们可以做一个“权衡”,通过增加接收者的成本(作为努力)来降低成本。

下面的文本描述可能要传输的数据密集程度要低得多,然后是高清PNG。只要收件人有工具可以轻松地呈现这一点,我们就大大降低了数据存储或传输方面的成本:

比特币五分钟内上涨1.01%:据huobi pro数据,BTC五分钟内上涨1.01%,上涨金额为89美元,目前价格为9028.78美元。[2018/4/28]

“500x500大小的蓝色背景,白色文字写着‘HelloWorld’”

我们的示例代码在函数BuildImage中描述SVG的参数。

有很多很棒的生成SVG的在线工具和模板,我鼓励你找到一些有助于将自己的想法变为SVG的工具。

确保使用百分比进行布局,因为应用开发的“硬编码”值可能会在我们增加或减少渲染的屏幕尺寸时带来问题。1000像素作为文本的起始点是可以的,直到我们将设备的屏幕尺寸减小到1000x1000以下,在这种情况下,我们最好将其设置为80%。

我们的SVG,在ABI和Base64编码之前:

'','','SomeText','SomeText','SomeText','Token:',_tokenId.toString(),"",'',currentWord.value,"",

""

我们将再次注意到我们已附加有关数据的详细信息:

“data:image/svgxml;base64”

用户输入

我们的智能合约更有趣的功能之一是用户能够通过将一些文本数据输入到mint函数中来为最终的NFT做出贡献。这个用户输入被保存为“内存字符串”,然后通过BuildImage函数动态地添加到我们的SVG数据中。

我限制了文本输入的大小并为此限制添加了一个错误,但用户可以完全了解他们可能添加的内容。这是不可改变的,永远存在于区块链。

我们的mint函数通过在函数上添加一个字符串期望来实现这个功能:

functionmint(stringmemory_userText)publicpayable{??uint256supply=totalSupply();??bytesmemorystrBytes=bytes(_userText);??require(strBytes.length<=stringLimit,"Stringinputexceedslimit.");??require(exists(_userText)!=true,"Stringalreadyexists!");????WordmemorynewWord=Word(????string(??????abi.encodePacked(????????"NFT",????????uint256(supply1).toString()??????)????),????"Thisisouron-chainNFT",????randomNum(361,block.difficulty,supply).toString(),????randomNum(361,block.timestamp,supply).toString(),????_userText??);??if(msg.sender!=owner()){????require(msg.value>=0.005ether);??}??wordsToTokenId=newWord;//Addwordtomapping@tokenId

??_safeMint(msg.sender,supply1);

NFT和智能合约互动

如果你正在使用Remix之类的工具,可以简单地修改提供的代码,将其上传到Remix,编译并部署以进行测试。

由于我们的mint函数需要用户输入字符串数据,能够添加文本,然后利用我们的tokenURI函数来查看产生的内容,这是相同的tokenURI函数,像OpenSea这样的市场将利用来检索或解析我们的NFT数据和图像。

那么我们该怎么做呢?要在您的浏览器中呈现它,然后需要复制“字符串”之后的所有内容并将其粘贴到我们的浏览器中。将其粘贴到我们的浏览器中的结果将如下所示:

此外,我们可以通过复制“image”值来查看我们的图像,我们想要复制的部分在这里突出显示:

结果如下所示:

?????图像数据粘贴到我们的本地浏览器中

我们的NFT

这样,我们就创建了一个智能合约,允许用户在生成文本时输入文本,生成包含用户输入的SVG数据,将其编码为Base64,并将其添加到同样是Base64编码的元数据中。其结果是,链上NFT将在OpenSea等市场中呈现如下内容:

原文链接

标签:SVGBASSTRMAGSVG币coinbase和binanceStrikeXImage Generation AI

比特币交易所热门资讯
BTC:哈佛大学区块链俱乐部:加密第一,游戏第二?深度解析链游的困境与出路_区块链运用的技术中不包括哪一项内容

原文作者:杨德源、曾岳琦,HarvardBlockchainClub原文编译:0xzshanzha在80年代,基于文本的MUD游戏占据了主导地位.

ALY:Chainalysis数据:2021年共有140亿美元流入与犯罪有关的加密钱包,创历史新高_Cross Chain Finance

据英国《金融时报》1月6日消息,数据公司Chainalysis研究显示,2021年共有140亿美元流入与犯罪有关的加密钱包,较2020年增加了一倍多,创历史新高.

BAS:ZDCoin关于上线XIAO/ZD交易对的公告_ASTRO币

尊敬的ZDCoin用户:为提供用户更好的交易体验,ZDCoin平台将于2020年3月2日11:00上线XIAO/ZD交易对.

TPS:支点国际站关于上线LON充值有礼活动的公告_CHTT币

尊敬的用户: 为回馈用户,即日起至2021年1月8日24:00期间充值不低于10枚LON即可获赠99枚平台币ZD,每个ID仅可领取一次赠币。注:充值达标后次日赠币到账.

COI:ZDCoin关于XIAO流通量说明的公告_Siddcoin

尊敬的ZDCoin用户:为切实保障用户的资产增值,XIAO项目方现和平台达成协议,协议如下:1、XIAO团队承诺在2020年6月1日前,不再增加流通.

MAR:BitMart首发上线CYBERLINK (CBL)_BitMart

亲爱的BitMart用户:BitMart将于2022年1月17日首发上线代币CYBERLINK(CBL)。届时将开通CBL/USDT交易对.