比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > FTT > Info

源碼解讀:你買的NFT到底是什么?_NFT

Author:

Time:1900/1/1 0:00:00

如果你是WEB3加密界的新手,面對眾多概念無從入手,那么歡迎你,來對地方了!!

本文圍繞標準?ERC721協議,描述了Mint、?safeMint、?transfer等是如何實現資產管理的,并通過解讀代碼來了解它的安全性設計和以太坊數據上鏈成本構成。

1.所謂NFT資產是什么?

2.Mint和safeMint的差別

3.交易時會發生什么?有哪些細節設計

4.NFT哪些數據也存儲在鏈上?

5.以太坊上存儲有多貴?

Web3新手,有無技術背景均可:

研發——可無障礙閱讀,理解精美的合約設計

非研發——可能讀不懂列舉的代碼,但能體會標準協議的設計思路

在opensea上,可看到每個NFT都有個唯一的編號。

比如azuki系列中第4132號,在頁面的Details欄目可以看到其合約地址,ID編號,部署所在公鏈等信息,而Properties欄目則是其設定的具備各種屬性,對應的稀有度(非azuki本身攜帶,而是opensea整合計算的)。

而咱們回顧到源代碼(此處取ERC721標準庫openzepplin代碼),會發現程序記錄了全局性的兩個字典類型的變量,通過?_owners中用數字映射地址的方式記錄每一個ID?當前對應的所有者,同時也附帶用_balances?記錄了當前所有者總計持有的NFT數量

Binance面臨著隨著公司高管離職而不斷縮小的市場份額:金色財經報道,據The Block數據,Binance面臨著隨著公司高管離職而不斷縮小的市場份額。據悉,幣安公司的高級官員,包括總法律顧問Han Ng、首席戰略官Patrick Hillmann和合規高級副總裁Steven Christie告訴CZ,他們將離開公司。此次退出正值幣安在全球交易所中的市場份額下降之際。Binance的市場份額從1月份的72%下降至目前的58%。[2023/7/8 22:25:15]

并且由于ERC721創新性的賦予了一個ID對應地址的變量?_owners,從而與ERC20僅_balances?進行地址與余額的管理,區分出了FT(同質化)與NFT(非同質化)的差別。

Mint?意思為鑄造,即每個NFT的創造過程,例如之前的愛死機NFT?當奈飛的NFT忘記了web2的業務安全

Mint?獲取到該NFT的資產證明。

從源代碼中可以看到,Mint?主要是進行了安全判斷:

判斷1:確保轉入的不是0x00地址(黑洞地址無法轉出,轉入則資產損失)

判斷2:確保此交易所操作的NFTID是不存在的

最終代碼執行的操作是:

Coinbase:DEX不能像交易所一樣受到監管:金色財經報道,Coinbase周一向監管機構發送了一封新信,這次反對像集中式交易所一樣監管去中心化交易所的提議。Coinbase首席法務官Paul Grewel表示,像Uniswap這樣的去中心化交易所被稱為DEX,不可能以與國家證券交易所相同的方式進行注冊。這項提議在過程和實質上存在太多缺陷,無法推進。特別是,美國證券交易委員會試圖通過將關于其加密貨幣管轄權的不受支持的假設納入擬議規則來搶先國會行動。[2023/6/15 21:37:40]

操作1:將轉入地址的_balances?所持有總數加1

操作2:將對應?NFTID?的所有者修改為轉入的地址

操作3:完成交易則發出emit?事件,可以讓鏈下監聽到這次交易的數據

中間有_beforeTokenTransfer和_afterTokenTransfer 屬于虛函數,作為標準,是讓項目方可以再不修改標準協議的情況下增加一些特定的邏輯代碼用的。

safeMint 意為安全的鑄造,從代碼實現中可以看到他本身也是調用了MInt 但是他額外增加了_checkOnERC721Received 的判斷,這點是屬于ERC165的標準,相當于在完成轉入操作后,則判斷對方地址,是否是黑洞地址(即無法發起交易NFT操作的地址)是防止轉入對象為合約地址時候,其合約沒有預設置好轉出的函數,導致資產在內無法被轉走,從而造成永久損失。

Klaytn公布2023年計劃,將通過可持續性等要素以實現大規模采用:2月27日消息,韓國互聯網巨頭 Kakao 旗下公鏈 Klaytn 宣布 2023 年計劃,其愿景是通過可持續性、可驗證性和社區三要素實現大規模采用,其中包含 6 個戰略目標和 18 個詳細舉措,重點將圍繞優先考慮生態系統的可持續性,通過透明的治理和運營確保可驗證性,以及培養強大而充滿活力的社區。

其中,可持續性舉措包括健全代幣經濟學策略、優化金庫、推出 Klaytn 社區基金和 Klaytn 基金會基金、2023 年下半年啟動無許可網絡試點、優化節點規范等;可驗證性舉措包括組建 GC 部門委員會、啟動鏈上投票、啟動季度生態系統報告等;培養社區的舉措包括開發和啟動 Klaytn 的 Oracle、開放 SDK、推出 Metaverse 套餐、啟動黑客松 KlayMakers23、啟動 Web3 社交基礎設施的 Alpha 版本等。[2023/2/27 12:32:14]

設計初衷可見:https://eips.ethereum.org/EIPS/eip-165

是讓合約接口標準化的提案,在編程語法中interface 是接口的意思,在其中定義的函數可以不實現僅僅放上函數名字相關參數,在程序復雜的時候,相當于目錄一般告訴別人我都有什么功能。

泰國媒體巨頭T&B Media Global通過“股權-NFT”混合架構完成3億美元融資:10月4日消息,總部位于瑞士的數字資產銀行Sygnum已幫助泰國媒體巨頭環球媒體集團(T&B Media Global)通過“股權-NFT”混合架構完成3億美元的融資。T&B Media Global表示,這筆資金將用于推出其全新的互聯網元宇宙平臺Translucia。

據悉,Translucia平臺旨在為合作伙伴提供Launchpad,以利用區塊鏈基礎設施來構建互連元宇宙。Sygnum將為T&B Media Global提供數字資產服務,包括構建“股權-NFT”混合架構、開發元宇宙Token經濟模型、以及Token托管服務等。(techinasia)[2022/10/5 18:39:34]

但是接口的寫法各有千秋,名字定義參數類型,甚至是否存在都有不同,

所以此提案最終形成了ERC165標準,規范了接口的識別規則。

使用流程是:

STEP 1?判斷是否存在?supportsInterface?函數,并且其符合165標準

STEP?2通過?supportsInterface?函數,判斷是否具有轉出NFT的函數

(PS:讓合約具備NFT接收轉出功能,可通過引入?IERC721Receiver.sol?拓展包來實現)

A股收盤:深證區塊鏈50指數下跌2.15%:金色財經消息,A股收盤,上證指數報3267.2點,收盤下跌1.2%,深證成指報12246.55點,收盤下跌1.43%,深證區塊鏈50指數報2930.56點,收盤下跌2.15%。區塊鏈板塊收盤下跌1.96%,數字貨幣板塊收盤下跌2.54%。[2022/6/22 7:01:20]

標準協議設計有兩種轉移方式,transfer?和?transferFrom,作用于兩種場景:

transfer 轉移:由用戶調用,將本消息發送的錢包所持有的NFTID轉移到指定地址

transferFrom 從轉移:用某機構調用,需要用戶先授權某地址,讓其有權可轉移。

類比一下:

transfer?就是現金交易,從自己口袋里拿錢支付

transferFrom?就是掃碼扣款,由店家申請扣款,受制于用戶是否開通小額代扣權限

接下來咱們從代碼來看看,其中可能有會意想不到的細節。

他會檢測當前交易的?from?方是否是此NFTID的持有者,并且限制該NFT轉入0x00地址。其次進行?from?轉出地址和?to?轉入地址的余額刷新,修改?_balances全局變量并且重新設置_owners此NFTID的所有者地址修改為to。

這里有個防護的細節會先執行_approve(address(0), tokenId);? 清空歷史授權,如果沒有這一步,則資產完成了轉移,但是其NFTID的轉移授權依舊在,細思極恐:

這里的交易本質調用的是_safeTransfer 所以他的核心邏輯是require 部分,

這的一大細節是:_msgSender() ? 這是openzepplin的標準庫Context.sol 中的方法。

其實就是獲取當前交易的發送者地址,但這里使用了封裝版本,而不是直接使用msg.sender

是考慮到,可能存在一種交易類型“元交易” ,即交易的付費gas方和交易發起方不相同的情況。

所以一些處于中間環節的,類似library的合約需要考慮這種特殊情況。

其余部分判斷是確定是否有授權記錄,易于理解,不作贅述

交易的環節也看完后,其實很多新同學也頓感奇怪,原來我買的NFT只有一個ID的歸屬地址指向了我,從而達成了唯一性。那就算如此,稀有度信息放在哪里?我的NFT圖像本身在那里?

這就是涉及到ERC721的元數據拓展IERC721Metadata.sol

要放什么都可以,但是項目方往往在鏈上只存儲最基礎的ID+IPFS的地址。

咱們可以通過之前Etherscan教程方法來看看一些項目數據有什么?

Azuki上合約地址是:0xed5af388653567af2f388e6224dc7c4b3241c544

通過Read Contract可以查閱到,其元數據只存放了ipfs上的指向地址

而近期興起的Metaverse項目元宇宙土地sandbox和****Decentraland ,以及去年火熱的****Axie Infinity ,基本鏈上存儲元數據也只是ID+網址。

像mirror那些是專門設計低費用可進行高存儲,一個塊常規都是30M起步,大約是以太坊的1000倍。

這里是本文稍難的地方。咱們從源碼來分析鏈上存儲的成本構成以及金額換算

成本產生將有2個方面,按執行流程來看

用戶發起一筆交易,將要寫鏈上數據作為參數傳入,其大小是一筆成本

交易執行合約代碼,依據修改和使用,EVM計算消耗的gas成本。

咱們可以核對下以太坊黃皮書,里對交易數據大小所消耗gas有清晰的定義

可以看到交易所附帶的參數的價格:

每筆交易都有21000 GAS需要支付

為交易的每個非零字節數據或代碼支付68 GAS

為交易的每個零字節數據或代碼支付4 GAS

所以如果是再?Mint?的時候,登記上若干NFT屬性信息,交易的data部分會將abc等字符轉成2個十六進制表示,而每個字符為一個八位二進制,等于一個byte。所以可以約等于將data的長度除以2作為byte數。

而1kb的數據,如果都是非0的有信息量的文本信息,則等于增加是68*1000=6.8W 的gas消耗。按20gwei的gas價格和2000的eth兌換美元價格,可以估算出,每上鏈1kb數據在交易發起端就要:

20*(21000+68000)*1e9/1e18 * 2000 =?3.5美金

由于交易發起后,還有智能合約上存儲的邏輯,咱們從以太坊go源代碼中(EIP1283),來分析具體的消費量,代碼具體在函數內,太長了不全粘來:

func?gasSStore(evm *EVM, contract *Contract, stack *Stack, mem *Memory, memorySize uint64)(uint64, error)

歷史上GAS消耗的估算有經過若干迭代,如果是Petersburg或者 Constantinople 未激活的話,則不按下面邏輯進行計算

gas消耗計算,依賴3個種數據的管理形式(增刪改)

從零值地址到非零值(NEW VALUE),每個存儲槽需消耗2Wgas

從非零值地址到零值地址(DELETE),每個存儲槽需消耗5Kgas,但會有獎勵1.5W gas退回

從非零到非零(CHANGE),每個存儲槽需消耗 200 gas

注意,上述每一個存儲槽算32byte,1kb存儲則是32個存儲槽。Mint?的過程是新增存儲,所以如果新增1kb的數據存儲在鏈上代價將是64Wgas,換算成金額則是:

20*(640000)*1e9/1e18 * 2000 =?25 美金

真可謂寸土寸金!

Tags:NFTTRAINTGASPNFT幣TranchessMINTME幣gas幣是什么幣

FTT
金色觀察 | 一文看懂2022年的去中心化資產管理_NBS

去中心化資產管理 2022 什么是資產管理? 資產管理(通常可與投資管理、資金管理、投資組合管理、財富管理互換使用)是指代表他人處理金融資產和投資的服務.

1900/1/1 0:00:00
中國動漫集團成立元宇宙數字資產研究發展中心_數字藝術

中國動漫集團10日聯合李可染畫院舉行“元宇宙數字資產(NFT)研究發展中心”成立儀式。該中心旨在推動文化資源在元宇宙產品中的數字化應用,助力國家實施文化產業數字化發展戰略.

1900/1/1 0:00:00
監管進場 中國NFT何去何從?_區塊鏈

近日,一張中國NFT平臺二級市場資質要求在圈內悄悄流傳,如果消息屬實,90%的NFT公司將哭暈在廁所,尤其最后一條,相信絕大部分都搞不到.

1900/1/1 0:00:00
金色早報 | 報告:全球加密意識和采用率都在上升_區塊鏈

頭條 ▌報告:全球加密意識和采用率都在上升金色財經報道,隨著全球市場繼續面臨下行趨勢,人們將數字資產行業視為對沖通脹的工具,加密貨幣市場預計會得到更多采用.

1900/1/1 0:00:00
金色趨勢丨市場大波動即將到來?_BTC

金色晨訊 | 8月29日隔夜重要動態一覽:21:00-7:00關鍵詞:Filecoin、Qtum、Tether、Medalla 1.Filecoin已完成可信配置環節.

1900/1/1 0:00:00
注意 以下虛擬貨幣交易容易產生刑事風險_BOO

近期,虛擬貨幣市場迎來暴跌,市值曾經排名第三的露娜(LUNA)因被做空,價格已經無限歸零,其余各類主流虛擬貨幣都有著較大的波動,于是又一批茁長生長的韭菜開始冒頭.

1900/1/1 0:00:00
ads