如果你是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數量
英國財政大臣:政府在周二的辯論中沒有任命加密沙皇的計劃:金色財經報道,英國財政部經濟大臣Andrew Griffith告訴立法者,政府在周二的辯論中沒有任命加密沙皇的計劃。辯論由跨黨派加密和數字資產全議會小組 (APPG) 主持,該小組在6月初發布了一份報告,要求政府任命一名官員專門監督加密監管。英國財政部早些時候曾提議將加密貨幣作為金融服務進行監管,目前議會正在通過一項與此相關的法案。
Griffith表示,政府沒有計劃設立一個特定的加密貨幣沙皇,但我作為經濟部長和作為一個負責英國金融監管的人,承諾將正確地倡導這個行業。Griffith此前希望英國成為一個加密貨幣中心。[2023/6/13 21:34:34]
并且由于ERC721創新性的賦予了一個ID對應地址的變量?_owners,從而與ERC20僅_balances?進行地址與余額的管理,區分出了FT(同質化)與NFT(非同質化)的差別。
Mint?意思為鑄造,即每個NFT的創造過程,例如之前的愛死機NFT?當奈飛的NFT忘記了web2的業務安全
Mint?獲取到該NFT的資產證明。
從源代碼中可以看到,Mint?主要是進行了安全判斷:
判斷1:確保轉入的不是0x00地址(黑洞地址無法轉出,轉入則資產損失)
DeFi借貸平臺Everlend Finance以流動性緊縮為由關閉其應用程序:金色財經報道,基于 Solana 的 DeFi 借貸協議 Everlend Finance 已關閉其應用程序平臺,Everlend團隊已將該平臺轉為僅提款模式,并敦促用戶刪除其資產。公告稱,該應用程序將繼續運行,直到處理完所有提款。該團隊還概述了在未來兩周內支付所有已籌集和未使用資金的計劃。Everlend 將關閉的決定歸因于 DeFi 借貸參與者面臨的流動性緊縮。[2023/2/2 11:43:33]
判斷2:確保此交易所操作的NFTID是不存在的
最終代碼執行的操作是:
操作1:將轉入地址的_balances?所持有總數加1
操作2:將對應?NFTID?的所有者修改為轉入的地址
操作3:完成交易則發出emit?事件,可以讓鏈下監聽到這次交易的數據
中間有_beforeTokenTransfer和_afterTokenTransfer 屬于虛函數,作為標準,是讓項目方可以再不修改標準協議的情況下增加一些特定的邏輯代碼用的。
safeMint 意為安全的鑄造,從代碼實現中可以看到他本身也是調用了MInt 但是他額外增加了_checkOnERC721Received 的判斷,這點是屬于ERC165的標準,相當于在完成轉入操作后,則判斷對方地址,是否是黑洞地址(即無法發起交易NFT操作的地址)是防止轉入對象為合約地址時候,其合約沒有預設置好轉出的函數,導致資產在內無法被轉走,從而造成永久損失。
比特幣波動指數昨日回升至47.68,單日漲幅3.36%:1月6日消息,由金融指數公司 T3 Index 聯合比特幣期權交易平臺 LedgerX 推出的 BitVol(比特幣波動)指數昨日小幅回升至 47.68,相較于 1 月 4 日(46.13)單日漲幅 3.36%。據悉,BitVol 指數衡量從可交易的比特幣期權價格中得出的 30 天預期隱含波動率。
注:隱含波動率,是指實際期權價格所隱含的波動率。它是利用 B-S 期權定價公式,將期權實際價格以及除波動率σ以外的其他參數代入公式而反推出的波動率。期權的實際價格是由眾多期權交易者競爭而形成,因此,隱含波動率代表了市場參與者對于市場未來的看法和預期,從而被視為最接近當時的真實波動率。[2023/1/6 15:39:20]
設計初衷可見:https://eips.ethereum.org/EIPS/eip-165
是讓合約接口標準化的提案,在編程語法中interface 是接口的意思,在其中定義的函數可以不實現僅僅放上函數名字相關參數,在程序復雜的時候,相當于目錄一般告訴別人我都有什么功能。
但是接口的寫法各有千秋,名字定義參數類型,甚至是否存在都有不同,
所以此提案最終形成了ERC165標準,規范了接口的識別規則。
美國SEC起訴芝加哥地區加密公司非法出售代幣:金色財經報道,根據9月14日的一項法律訴訟,美國證券交易委員會指控Chicago Crypto Capital關于BXY代幣150萬美元的首次代幣發行(ICO)存在虛假陳述,并且未注冊證券發行。該機構正在尋求追繳或歸還所有投資者的資金,并進行處罰。(The Block)[2022/9/15 6:57:04]
使用流程是:
STEP 1?判斷是否存在?supportsInterface?函數,并且其符合165標準
STEP?2通過?supportsInterface?函數,判斷是否具有轉出NFT的函數
(PS:讓合約具備NFT接收轉出功能,可通過引入?IERC721Receiver.sol?拓展包來實現)
標準協議設計有兩種轉移方式,transfer?和?transferFrom,作用于兩種場景:
transfer 轉移:由用戶調用,將本消息發送的錢包所持有的NFTID轉移到指定地址
transferFrom 從轉移:用某機構調用,需要用戶先授權某地址,讓其有權可轉移。
類比一下:
transfer?就是現金交易,從自己口袋里拿錢支付
美國前財長薩默斯:美聯儲通脹預測看起來很荒謬:6月11日消息,美國前財長薩默斯表示,在最新的通脹數據打破了通脹觸頂的希望后,美聯儲未能對自己的錯誤作出解釋,也未能意識到對其信譽的損害。“很明顯,通脹峰值理論,比如‘短暫性’理論是錯誤的,”薩默斯在接受采訪時表示,“美聯儲從3月份開始預測,到今年年底,通脹率將降至2%區間,坦率地說,當時的預測是癡心妄想,今天看來更加荒謬。”薩默斯稱,“美聯儲說得沒錯,但我認為他們沒有意識到去年和今年年初的錯誤造成了多大的損害。這些錯誤意味著它們從根本上不具有可信性。”(金十)[2022/6/11 4:18:07]
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 美金
真可謂寸土寸金!
5月30日-6月5日邀請新用戶數量排名前十的用戶分別為: 幣安8月14日調整BLZUSDT U本位永續合約杠杠和保證金階梯:金色財經報道.
1900/1/1 0:00:00看跌的加密貨幣市場對NFT的熱度產生了重大影響。在5月的最后幾天,就Google數據而言,對NFT的興趣達到了26的低點。這相當于在不到六個月的時間內下降了76%.
1900/1/1 0:00:00賬戶里最多時近一千萬元的資產,在短短3天之內幾乎歸零。今年35歲的程序員郭瑞度過了自己人生中最灰暗的一周。他向公司請了一周假,每天無法入睡,只有在妻子的逼迫下才能吃上一點食物.
1900/1/1 0:00:00朋友,你聽說過 " 元宇宙 " 嗎?你想探索馬爾代夫的海底嗎?想在火星漫步嗎?或是想在私人游艇上開 Party 嗎?未來已來,在數字鋼筋構建起來的元宇宙中.
1900/1/1 0:00:00近日,隨著元宇宙的興起,Web3.0成為各大廠商、投資人關注的熱詞。中國證監會科技監管局局長姚前不久前發表文章《Web3.0是漸行漸近的新一代互聯網》,指出互聯網正處在Web2.0向Web3.0.
1900/1/1 0:00:00雖然全球股市在2022年進入熊市,但是DeFi熊市已經持續了一年之久。 關鍵點 DeFi熊市已經持續了一年多,與此同時,其許多頂級項目從歷史最高點下跌了超80%.
1900/1/1 0:00:00