Ultrain NFT 發行框架介紹

買賣虛擬貨幣
NFT(Non-Fungible Token)資產也稱為異質化代幣,是區塊鏈上最經常發行的一類資產。它代表的是一類具有唯一性的資產,如藝術品,奢侈品,門票……這一類資產的有一個共同的特點,即它們都具有唯一性。當它們數字化之後在鏈上發行後,能夠與物理世界的物品產生一一對應的關係。NFT資產在以太坊平臺上由ERC721和ERC2477描述,在Ultrain上由UIP09協議描述。符合這些協議描述的資產,可以方便的在對應區塊鏈網路發行和轉移。發行區塊鏈上的NFT資產存在一定的學習門檻,這些問題導致普通的業務公司不能簡單便捷地釋出和管理NFT,同時由於區塊鏈的透明性,也會有一些隱私方面的顧慮。為了解決這些問題,Ultrain開發了一個專門用於NFT發行管理的框架--DAIF(Digital Assets Issuing Framework)。基於該框架,開發者可以快速的發行NFT資產,透過該框架發行的NFT資產,不僅可以獨立執行,也可以互相互動,組合,形成新的NFT資產。Ultrain同時也在進行NFT數字資產交易平臺的研發,我們希望能提供一個類似Uniswap的交易平臺,讓基於DAIF框架發行的NFT數字資產可以在該平臺上去中心化的流轉。本文介紹NFT的發行和管理中需要面對的問題、解決這些問題的方法以及如何利用Ultrain DAIF來完成NFT的發行和管理。1. 我們面對的一些問題
區塊鏈能夠解決現實社會生活中的許多問題,但是因為區塊鏈的透明性,這就意味著所有的資訊都是公開的,每個人都可以看到這些資訊。這當然是很一個很美妙的特性,但是在某些特定的商業應用中,並不是所有的資訊都適合公開給每一個人。那麼有沒有辦法,既能保持區塊鏈技術的透明和不可篡改性,又能滿足保護隱私的要求呢?在目前主流的區塊鏈應用平臺上,無論是以太坊還是EOS,儲存大資料都是一件很昂貴的事情。大資料除了會佔用共識節點的大量資源,同時還會拖累區塊鏈的網路速度。甚至在很多情況下,將大資料儲存在區塊鏈上根本就是一件不可能完成的任務。但是在實際的商業應用中,儲存產品圖片、創作的文章、發行某個具有智慧財產權的軟體……都是非常普遍的行為。那麼,就不能將這些大資料儲存在區塊鏈上,同時保持高效嗎?當區塊鏈逐漸變成一種基礎服務的時候,是不是每一個公司都要同時配置區塊鏈開發的人員,同時又要配置業務開發人員呢?每個區塊鏈平臺的開發人員都要配置嗎?2. 我們準備怎樣解決這些問題上面我們提到了三個主要問題:隱私保護、大資料儲存、鏈和業務邏輯隔離。對於隱私保護問題,DAIF利用Merkle樹的可驗證原理,允許業務開發人員自己來決定哪些資料要公開源資料,哪些資料只公開源資料的hash。不管是公開源資料還是公佈hash,都可以保證可驗證性,即批露的源資料必定是原始資料的一部分。
對於大資料儲存問題,DAIF可以方便的與去中心化儲存網路IPFS整合,將圖片、音樂、軟體……的原始檔案儲存在IPFS 上,然後在區塊鏈上只儲存這些檔案的IPFS檢索地址hash。任何對這些檔案感興趣的人,都可以透過 地址hash下載到這些檔案,就能夠驗證這些檔案的真偽。對於隔離區塊鏈和業務邏輯,DAIF提供了經過審查的合約原始碼。這些原始碼實現了以太坊平臺上標準的ERC721和ERC2477協議, 以及Ultrain平臺上的UIP06和UIP09協議。同時,DAIF提供了錢包外掛、網路外掛、交易外掛等豐富的外掛。業務開發人員只需要關注自己的業務,然後呼叫這些外掛的API,就可以輕鬆的將交易傳送到對應的鏈上,不需要關注不同區塊鏈之間的差異。3. 我們是怎麼做到的DAIF為了完成上述目標,引入了以下關鍵概念和相應的工作流程。一、關鍵概念1、Schema檔案

Schema檔案用來描述NFT資產的屬性資訊,包括屬性(一般是JSON格式)的結構、每個欄位的資料型別。每一個欄位叫做一個節點。一個典型的schema檔案定義如下:

Schema檔案是一個公開檔案,任何人可以查閱。Schema檔案本身無須上鍊,但是它的hash,稱為schemaId,必須上鍊,以便於驗證內容是否被更改。

2、Metadata

Metadata是滿足schema定義的子資料結構,也就是已經被批露的資訊。如果我們按照上述定義的schema,發行一個如下的NFT:

同時, 我們決定批露以下路徑的資訊:

那麼產生的metadata就是如下的資訊:

Metadata是能夠公開出來的資料,無需上鍊。

3、Evidence檔案

Evidence檔案是儲存在中心伺服器上的證明檔案,它的內容包括NFT屬性中每 個節點內容的hash,如果這個節點的內容被批露了的話,也包括批露的節點內容明文。上述metadata定義的NFT資訊所生成的evidence如下:

4、imprint

imprint是一個hash值,它由NFT所有節點的evidence組成的Merkle樹的根節點的hash值 。這個值在NFT發行時就已經確定,並且被記錄到鏈上。除非將來變更了NFT的屬性,否則imprint值不會改變。它的主要作用是用來驗證批露的節點資訊是否正確。

上述發行的NFT的imprint將會是如下值:

二、工作流程

DAIF封裝了NFT發行過程中的所有操作,業務開發人員只需要呼叫對應的API即可,無須關注實現細節。

1、發行NFT

利用DAIF發行NFT相當簡單,只要按以下幾個步驟定義好NFT的屬性資訊和發行資訊。

首先,在Schema檔案中的描述NFT屬性資訊,然後對schema檔案進行hash,得到SchemaId。

然後,定義好需要批露的資料paths。

接著,準備好NFT的資料,計算出它的imprint和metadata。

接著,將imprint資訊釋出到鏈上;將evidence資訊釋出到公共伺服器上。

至此,發行NFT的工作就完成了。

如果以實際程式碼來表示上述流程的話,那麼它應該是這樣的:

2、驗證NFT的資訊

在實際的應用過程中,如果NFT持有人向你提供如下的Metadata資訊,表示這個NFT確實有滿足你的需求的資訊,那麼你要怎麼驗證他提供的Metadata未經篡改呢?

在發行NFT過程中,我們已經提到,每一個NFT都有一個對應的evidence檔案,它是公開的,透過這份Metadata,我們就能夠知道這個NFT的schema資訊和evidence檔案的URL。同時,imprint是儲存在鏈上的,也可以方便的拿到它。那麼在DAIF裡面,就能夠很方便驗證這份Metadata是否真實了。

3、變更批露資訊

由於變更批露資訊不涉及修改NFT的原始資訊,所以也就不會改變imprint。因而只需要將發行NFT步驟中的部分操作抽取出來,重新生成metadata和evidence就可以了,不用更新鏈上資訊。

4、變更NFT的原始資訊

和變更批露資訊不同,變更原始資訊會導致imprint改變,所以如果需要變更NFT的原始資訊,就相當於把發行NFT的步驟重新走一遍,然後在鏈上更新imprint資訊,同時更新evidence和metadata資訊。

4. 總結

在前面的章節中,我們描述了致力於解決的問題、解決這些問題的原理、以及利用DAIF框架來實際操作。透過這些章節,我們就能夠利用DAIF框架,滿足我們發行NFT資產的需求。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;