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

NFT教程:用Flow和IPFS創建NFT_NFT

Author:

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

非同質化代幣(NFT)市場正在進入狂熱,回顧NFT早期的發展歷程,回憶CryptoKitties所暴露出挑戰是很有意思的。CryptoKitties由DapperLabs的團隊打造,是讓以太坊第一次出現“大規模”使用的案例。

從那之后,NFT就開始成長之路,Rarible、OpenSea、Foundation、Sorare等平臺紛紛涌現。這些平臺每月都有數百萬元的流量。盡管磕磕碰碰,但大部分依舊在以太坊區塊鏈上發生著。但DapperLabs的團隊在經歷了CryptoKitties之后,著手建立一個新的通用的,很適合NFT使用場景區塊鏈。他們這樣做的目標是想解決在以太坊上看到的許多NFT的問題,同時為該領域的開發者和收藏者提供更好的體驗。他們的新區塊鏈Flow,已經證明了自己能夠落地,并吸引一些大牌。,如NBA、UFC、甚至Dr.Seuss都在使用Flow。

我們最近寫了使用IPFS上保存標的資產來創建NFT,并且討論NFT領域的責任問題,以及IPFS如何提供幫助。現在,這篇文章談談如何在Flow上創建IPFS支持的NFT。Flow區塊鏈早期的主要應用之一是NBA巔峰對決。我們要重新建立一個非常基本的NFT鑄幣過程,然后在IPFS上回溯NFT元數據和標的資產。

由于我們喜歡pi?atas,所以我們的NFT將不再是NBA精彩的視頻,而是一個可交易的pi?atas視頻。

本教程有3篇文章

創建合約和鑄造代幣

創建一個應用程序,以查看通過該合約創建的NFT。

創建一個市場,將NFT轉讓給他人,同時也轉移在IPFS上的標的資產。

環境設置

我們需要安裝FlowCLI。在Flow的文檔中有一些很好的安裝說明:

macOS

brew?install?flow-cli

Linux

sh?-ci?“$(curl?-fsSL?https://storage.googleapis.com/flow-cli/install.sh)"

Windows

iex?“&?{?$(irm?‘https://storage.googleapis.com/flow-cli/install.ps1')?}”

我們將在IPFS上存儲資產文件。我們使用Pinata來簡化操作,可以在這里注冊一個免費賬戶,獲取一個API密鑰。在本教程的第二篇文章中會使用PinataAPI,但在本篇文章中我們使用Pinata網站。

我們還需要安裝NodeJS和一個文本編輯器,它可以幫助高亮顯示Flow智能合約(這是用一種叫做Cadence的語言編寫)代碼的語法。VisualStudioCode有一個支持Cadence語法的插件。

讓我們為項目創建一個目錄:

mkdir?pinata-party

進入該目錄,并初始化一個新的flow項目:

cd?pinata-partyflow?project?init

現在,使用你最喜歡的代碼編輯器中打開項目,讓我們開始工作。

你會看到一個flow.json文件,我們很快就會用到它。首先,創建一個名為cadence的文件夾。在該文件夾內,再添加一個名為contracts的文件夾。最后,在contracts文件夾中創建一個名為PinataPartyContract.cdc的文件。

Cool Pets系列NFT24小時交易額超300萬美元,增幅達466%:4月15日消息,據NFTGo.io數據顯示,Cool Pets系列NFT24小時交易額達307.7萬美元,增幅達466.71%。截至目前,該系列NFT地板價為1.377ETH,24小時跌幅19.98%。[2022/4/15 14:27:17]

說明一下,我們現在所做的一切關于Flow區塊鏈的工作都將在模擬器上完成。但是,將一個項目部署到測試網或主網,只需要更新flow.json文件中的配置這樣簡單。我們現在就把這個文件設置成模擬器環境,然后就可以開始寫我們的合約了。

更新flow.json中的合約對象,代碼如下:

"contracts":?{?????"PinataPartyContract":?"./cadence/contracts/PinataPartyContract.cdc"}

然后,更新該文件中的deployments對象,代碼如下:

"deployments":?{?????"emulator":?{??????????"emulator-account":??????}}

這是在告訴FlowCLI使用模擬器來部署我們的合約,它也在引用我們即將寫的合約...

合約

Flow有一個關于創建NFT合約的出色教程。他是一個很好的參考,但是正如Flow自己指出的,他們還沒有解決NFT元數據的問題。他們希望在鏈上存儲元數據。這是個好主意,他們一定會想出一個合理的辦法來。然而,我們現在想要鑄造一些帶有元數據的代幣,并且我們想要關聯上對應的媒體文件。元數據只是其中一個組成部分。我們還需要指出代幣最終代表的媒體文件。

如果你熟悉以太坊區塊鏈上的NFT,你可能會知道,許多代幣的標的資產都存儲在傳統的云服務器上,這樣做是可以的,但又弊端。我們曾寫過關于IPFS內容可尋址,以及在傳統云平臺上存儲區塊鏈數據的弊端,歸結起來主要有兩點:

資產應可核查

應該很容易轉移維護責任

IPFS解決了這兩點。而Pinata則以一種簡單的方式將該內容長期保存在IPFS上。這正是我們的NFT關聯的資料所需要的?我們要確保能夠證明擁有NFT的所有權,并確保我們能控制對標的資產--媒體文件或其他內容,確保不是復制品。

考慮到這一點,讓我們寫一份合約,它可以鑄造NFT,將元數據關聯到NFT,并確保元數據指向存儲在IPFS上的標的資產。

打開PinataPartyContract.cdc,編寫一下代碼:

pub?contract?PinataPartyContract?{??pub?resource?NFT?{????pub?let?id:?UInt64????init(initID:?UInt64)?{??????self.id?=?initID????}??}}

第一步是定義合約,后面會添加更多的內容,但我們首先定義PinataPartyContract,并在其中創建一個resource。資源是存儲在用戶賬戶中并通過訪問控制措施進行訪問。在這里,NFT資源最終用來代表NFT所擁有的東西。NFT必須是唯一的,id屬性允許我們標識代幣。

接下來,我們需要創建一個資源接口,我們將用它來定義哪些能力可以提供給其他人。

pub?resource?interface?NFTReceiver?{??pub?fun?deposit(token:?)??pub?fun?getIDs():???pub?fun?idExists(id:?UInt64):?Bool??pub?fun?getMetadata(id:?UInt64)?:?{String?:?String}}

Nansen報告:三分之一的NFT系列最終將幾乎沒有交易活動:3月24日消息,根據區塊鏈分析公司Nansen今天發布的一份報告,三分之一的NFT最終將成為“死亡系列”,幾乎沒有交易活動。這一結論是基于對一些NFT系列的觀察得出的,這些系列在過去30天內的銷售交易少于10筆,或者已經下架。(Blockworks)[2022/3/24 14:16:22]

把這個代碼放在NFTresource代碼的下面。這個NFTReceiver資源接口用來定義對資源有訪問權的人,就可以調用以下方法:

deposit

getIDs

idExists

getMetadata

接下來,我們需要定義代幣收藏品接口。把它看成是存放用戶所有NFT的錢包。

pub?resource?Collection:?NFTReceiver?{????pub?var?ownedNFT:?@{UInt64:?NFT}????pub?var?metadataObjs:?{UInt64:?{?String?:?String?}}????init?()?{????????self.ownedNFT?<-?{}????????self.metadataObjs?=?{}????}????pub?fun?withdraw(withdrawID:?UInt64):?????pub?fun?deposit(token:?)?{????????self.ownedNFT?<-!?token????}????pub?fun?idExists(id:?UInt64):?Bool?{????????return?self.ownedNFT?!=?nil????}????pub?fun?getIDs():??{????????return?self.ownedNFT.keys????}????pub?fun?updateMetadata(id:?UInt64,?metadata:?{String:?String})?{????????self.metadataObjs?=?metadata????}????pub?fun?getMetadata(id:?UInt64):?{String?:?String}?{????????return?self.metadataObjs!????}????destroy()?{????????destroy?self.ownedNFT????}}

這個資源里有很多東西,說明一下。首先,有一個變量叫ownedNFT。這個是很直接的,它可以跟蹤用戶在這個合約中所有擁有的NFT。

接下來,有一個變量叫metadataObjs。這個有點特殊,因為我們擴展了FlowNFT合約功能,為每個NFT存儲元數據的映射。這個變量將代幣id映射到其相關的元數據上,這意味著我們需要在設置代幣id之前,將其設置為元數據。

然后我們初始化變量。定義在Flow中的資源中的變量必需初始化。

最后,我們擁有了NFTCollection資源的所有可用函數。需要注意的是,并不是所有這些函數大家都可以調用。你還記得在前面,NFTReceiver資源接口中定義了任何人都可以訪問的函數。

我尤其想指出deposit函數。正如我們擴展了默認的FlowNFT合約以包含metadataObjs映射一樣,我們正在擴展默認的deposit函數,以接受額外的metadata參數。為什么要在這里做這個?因為需要確保只有token的minter可以將該元數據添加到token中。為了保持這種私密性,將元數據的初始添加限制在鑄幣執行中。

adidas Originals與Prada將合作推出基于Polygon的NFT:1月21日,adidas Originals 與意大利奢侈時裝品牌 Prada 將合作推出基于 Polygon 網絡的 NFT 項目。adidas for Prada Re-source 項目將允許粉絲貢獻自己的設計。從 1 月 24 日起,用戶可以注冊數字錢包,為該項目貢獻匿名照片,數字藝術家 Zach Lieberman 將選出 3000 件社區鑄造的 NFT 藝術品,并創作出一個單獨的 NFT。NFT 作品將于 1 月 28 日至 31 日期間在數字藝術市場 SuperRare 進行拍賣,銷售收益將捐贈給支持藝術家和創作者的慈善機構 Slow Factory。[2022/1/21 9:03:54]

合約代碼就快完成了。因此,在Collection資源的下面,添加以下內容:

pub?fun?createEmptyCollection():?pub?resource?NFTMinter?{????pub?var?idCount:?UInt64????init()?{????????self.idCount?=?1????}????pub?fun?mintNFT():?}

首先,我們有一個函數,在調用時創建一個空的NFTCollection。這就是第一次與合約進行交互的用戶如何創建一個存儲位置,該位置映射到定義好的Collection資源。

之后,我們再創建一個資源。它很重要的,因為沒有它,我們就無法鑄造代幣。NFTMinter資源包括一個idCount,它是遞增的,以確保我們的NFT不會有重復的id。它還有一個功能,用來創造NFT。

在NFTMinter資源的下方,添加主合約初始化函數;

init()?{??????self.account.save(<-self.createEmptyCollection(),?to:?/storage/NFTCollection)??????self.account.link<&{NFTReceiver}>(/public/NFTReceiver,?target:?/storage/NFTCollection)??????self.account.save(<-create?NFTMinter(),?to:?/storage/NFTMinter。

這個初始化函數只有在合約部署時才會被調用。它有三個作用。

為收藏品的部署者創建一個空的收藏品,這樣合約的所有者就可以從該合約中鑄造和擁有NFT。

Collection資源發布在一個公共位置,并引用在一開始創建的NFTReceiver接口。通過這個方式告訴合約,在NFTReceiver上定義的函數可以被任何人調用。

NFTMinter資源被保存在賬戶存儲中,供合約的創建者使用。這意味著只有合約的創造者才能鑄造代幣。

合約全部代碼可在這里找到。

現在合約已經準備好了,讓我們來部署它,對嗎?我們也許應該在FlowPlayground上測試一下。到那里,點擊左側側欄的第一個賬號。將示例合約中的所有代碼替換為我們的合約代碼,然后點擊部署。如果一切順利,你應該在屏幕底部的日志窗口中看到這樣的日志。

16:48:55?Deployment?Deployed?Contract?To:?0x01

路易威登推出基于NFT的游戲應用程序:金色財經報道,隨著接近成立200周年,奢侈品牌路易威登(Louis Vuitton)推出了基于NFT的游戲應用程序“Louis: TheGame”,以慶祝創始人的生日。該游戲包含創始人生活的歷史和軼事,還包括NFT藝術家Beeple(Mike Winkelmann)的藝術作品。玩家在游戲過程中可以收集總共30種NFT,Beeple為此提供了10種獨特的NFT。[2021/8/3 1:32:07]

現在我們已經準備好將合約部署到本地運行的模擬器上。在命令行中,運行:

flow?project?start-emulator

現在,如果模擬器的運行正確和flow.json文件的正確配置,我們可以部署合約。只需運行這個命令:

flow?project?deploy

如果一切順利,你應該看到這樣的輸出:

Deploying?1?contracts?for?accounts:?emulator-accountPinataPartyContract?->?0xf8d6e0586b0a20c7

現在已經在Flow模擬器上上線了一個合約,但我們想鑄造一個NFT代幣。

鑄造NFT

在教程的第二篇文章中,我們將通過一個應用程序和用戶界面使鑄幣過程更加友好。為了看到所鑄造的內容,并展示元數據如何在Flow上與NFT一起工作,我們將使用Cadence腳本和命令行。

在pinata-party項目的根目錄下創建一個新的目錄,我們把它叫做transactions。創建好文件夾,在里面創建一個名為MintPinataParty.cdc的新文件。

為了編寫出交易,先需要提供給NFT的元數據一個引用文件。為此,我們將通過Pinata上傳一個文件到IPFS。這個教程中,我將上傳一個孩子在生日派對上砸pinata的視頻。你可以上傳任何你想要的視頻文件。你真的可以上傳任何你喜歡的資產文件,并將其與你的NFT關聯起來,在本教程系列的第二篇文章將期待視頻內容。一旦你準備好你的視頻文件,在這里上傳。

當你上傳文件后,你會得到一個IPFS哈希。復制這個哈希值,因為我們將在鑄幣過程中使用它。

現在,在你的MintPinataParty.cdc文件中,添加以下內容:

import?PinataPartyContract?from?0xf8d6e0586b0a20c7transaction?{??let?receiverRef:?&{PinataPartyContract.NFTReceiver}??let?minterRef:?&PinataPartyContract.NFTMinter??prepare(acct:?AuthAccount)?{??????self.receiverRef?=?acct.getCapability<&{PinataPartyContract.NFTReceiver}>(/public/NFTReceiver)??????????.borrow()?????????????panic("Could?not?borrow?receiver?reference")??????self.minterRef?=?acct.borrow<&PinataPartyContract.NFTMinter>(from:?/storage/NFTMinter)?????????????panic("could?not?borrow?minter?reference")??}??execute?{??????let?metadata?:?{String?:?String}?=?{??????????"name":?"The?Big?Swing",??????????"swing_velocity":?"29",??????????"swing_angle":?"45",??????????"rating":?"5",??????????"uri":?"ipfs://QmRZdc3mAMXpv6Akz9Ekp1y4vDSjazTx2dCQRkxVy1yUj6"??????}??????let?newNFT?<-?self.minterRef.mintNFT()??????self.receiverRef.deposit(token:?<-newNFT,?metadata:?metadata)??????log("NFT?Minted?and?deposited?to?Account?2's?Collection")??}}

NFTfi貸款總額超6萬美元:據Messari數據顯示,截止目前NFTfi用戶超過60人,同時NFTfi貸款總額超6萬美元,貸款總額在近2個月時間里迎來了翻倍。[2020/9/23]

這是一個非常簡單的交易代碼,這在很大程度上要歸功于Flow所做的工作,但讓我們來看看它。首先,你會注意到頂部的導入語句。如果你還記得,在部署合約時,我們收到了一個賬戶地址。它就是這里引用的內容。因此,將0xf8d6e0586b0a20c7替換為你部署的賬戶地址。

接下來我們對交易進行定義。在我們的交易中,我們首先要做的是定義兩個參考變量,receiverRef和minterRef。在這種情況下,我們既是NFT的接收者,又是NFT的挖掘者。這兩個變量是引用我們在合約中創建的資源。如果執行交易的人對資源沒有訪問權,交易將失敗。

接下來,我們有一個prepare函數。該函數獲取試圖執行交易的人的賬戶信息并進行一些驗證。它會嘗試借用兩個資源NFTMinter和NFTReceiver上的可用能力。如果執行交易的人沒有訪問這些資源的權限,驗證無法通過,這就是交易會失敗的原因。

最后是execute函數。這個函數是為我們的NFT建立元數據,鑄造NFT,然后在將NFT存入賬戶之前關聯元數據。如果你注意到,我創建了一個元數據變量。在這個變量中,添加了一些關于token的信息。由于我們的代幣代表的是一個事件,即一個pi?ata在派對上被打碎,并且因為我們試圖復制你在NBATopShot中看到的大部分內容,所以我在元數據中定義了一些統計數據。孩子揮棒打pi?ata的速度,揮棒的角度和等級。我只是覺得這些統計數字有意思。你可以用類似的方式為你的代幣定義任何有意義的信息。

你會注意到,我還在元數據中定義了一個uri屬性。這將指向IPFS哈希,它承載著我們與NFT相關的標的資產文件。在這種情況下,它是pi?ata被擊中的真實視頻。你可以用你之前上傳文件后收到的哈希值來替換。

我們用ipfs://作為哈希的前綴,有幾個原因。這是IPFS上文件的標識符,可以使用IPFS的桌面客戶端和瀏覽器擴展。也可以直接粘貼到Brave瀏覽器中。

調用mintNFT函數來創建代幣。然后調用deposit函數將其存入我們的賬戶。這也是我們傳遞元數據的地方。如果你還記得,我們在deposit函數中定義了一個關聯變量,將元數據添加到關聯的tokenid中。

最后,我們只需要日志記錄代幣已被鑄造和存入賬戶的信息。

現在我們差不多可以執行代碼發送交易鑄造NFT了。但首先,我們需要準備好我們的賬戶。在項目根目錄下的命令行中,創建一個新的簽名私鑰。

運行以下命令。

flow?keys?generate

這將返回你一個公鑰和一個私鑰,請始終保護好你的私鑰。

我們將需要私鑰來簽署交易,所以我們可以把它粘貼到flow.json文件中。我們還需要指定簽名算法。下面是flow.json文件中的accounts的內容:

"accounts":?{??"emulator-account":?{?????"address":?"YOUR?ACCOUNT?ADDRESS",?????"privateKey":?"YOUR?PRIVATE?KEY",?????"chain":?"flow-emulator",?????"sigAlgorithm":?"ECDSA_P256",?????"hashAlgorithm":?"SHA3_256"??}},

如果你打算在github或任何遠程git倉庫上存儲這個項目的任何內容,請確保你不包含私鑰。你可能想.gitignore你的整個flow.json。盡管我們只是使用本地模擬器,但保護你的密鑰是個好做法。

現在可以發送交易,簡單的運行這個命令:

flow?transactions?send?--code?./transactions/MintPinataParty.cdc?--signer?emulator-account

在flow.json中引用編寫的交易代碼文件和簽名賬戶。如果一切順利,你應該看到這樣的輸出:

Getting?information?for?account?with?address?0xf8d6e0586b0a20c7?...Submitting?transaction?with?ID?4a79102747a450f65b6aab06a77161af196c3f7151b2400b3b3d09ade3b69823?...Successfully?submitted?transaction?with?ID?4a79102747a450f65b6aab06a77161af196c3f7151b2400b3b3d09ade3b69823

最后,驗證token是否在我們的賬戶中,并獲取元數據。做到這一點,我們要寫一個非常簡單的腳本,并從命令行調用它。

在項目根目錄,創建一個名為scripts的新文件夾。在里面,創建一個名為CheckTokenMetadata.cdc的文件。在該文件中,添加以下內容:

import?PinataPartyContract?from?0xf8d6e0586b0a20c7pub?fun?main()?:?{String?:?String}?{????let?nftOwner?=?getAccount(0xf8d6e0586b0a20c7)????//?log("NFT?Owner")????let?capability?=?nftOwner.getCapability<&{PinataPartyContract.NFTReceiver}>(/public/NFTReceiver)????let?receiverRef?=?capability.borrow()???????????panic("Could?not?borrow?the?receiver?reference")????return?receiverRef.getMetadata(id:?1。

這個腳本可以被認為是類似于以太坊智能合約上調用只讀方法。它們是免費的,只返回合約中的數據。

在腳本中,導入部署的合約地址。然后定義一個main函數。在這個函數里面,我們定義了三個變量:

nftOwner:擁有NFT的賬戶。由于使用部署了合約的賬戶中鑄造了NFT,所以在我們的例子中,這兩個地址是一樣的。這一點不一定,要看你將來的合約設計。

capability:需要從部署的合約中借用的能力。請記住,這些能力是受訪問控制的,所以如果一個能力對試圖借用它的地址不可用,腳本就會失敗。我們正在從NFTReceiver資源中借用能力。

receiverRef:這個變量只是簡單地記錄我們的能力。

現在,我們可以調用函數。在這種情況下,我們要確保相關地址確實已經收到了我們鑄造的NFT,然后我們要查看與代幣相關的元數據。

讓我們運行的腳本,看看得到了什么。在命令行中運行以下內容:

flow?scripts?execute?./scripts/CheckTokenMetadata.cdc

你應該會看到元數據輸出的類似這樣的輸出。

{"name":?"The?Big?Swing",?"swing_velocity":?"29",?"swing_angle":?"45",?"rating":?"5",?"uri":?"ipfs://QmRZdc3mAMXpv6Akz9Ekp1y4vDSjazTx2dCQRkxVy1yUj6"}

恭喜你!你成功創建了一個Flow智能合約,鑄造了一個代幣,并將元數據關聯到該代幣,并將該代幣的底層數字資產存儲在IPFS上。作為教程的第一部分,還算不錯。

接下來,我們有一個關于構建前端React應用的教程,通過獲取元數據和解析元數據,讓你顯示你的NFT。

本翻譯由CellNetwork贊助支持。

來源:

https://medium.com/pinata/how-to-create-nfts-like-nba-top-shot-with-flow-and-ipfs-701296944bf

參考資料

登鏈翻譯計劃:https://github.com/lbc-team/Pioneer

翻譯小組:https://learnblockchain.cn/people/412

Tiny熊:https://learnblockchain.cn/people/15

正在進入狂熱:https://www.cnbc.com/2021/02/25/nfts-why-digital-art-and-sports-collectibles-are-suddenly-so-popular.html

CryptoKitties:https://www.cryptokitties.co/

DapperLabs:https://www.dapperlabs.com/

Rarible:https://rarible.com/

OpenSea:https://opensea.io/

Foundation:https://foundation.app/

Sorare:https://sorare.com/

著手建立一個新的通用的,很適合NFT使用場景區塊鏈:https://medium.com/dapperlabs/introducing-flow-a-new-blockchain-from-the-creators-of-cryptokitties-d291282732f5

Flow:https://www.onflow.org/

NBA:https://www.nbatopshot.com/

寫了使用IPFS上保存標的資產來創建NFT:https://learnblockchain.cn/article/2247

責任問題:https://medium.com/pinata/who-is-responsible-for-nft-289"??src="https://img.jinse.com/3638511_image3.png"?>

譯文出自:登鏈翻譯計劃

譯者:翻譯小組

校對:Tiny熊

Tags:NFTATAFLOWFLOFYZNFT價格Atari Tokenhashflow幣幣圈子TradeFlow

中幣
庫幣上線Rally (RLY)!_USDT

親愛的庫幣用戶: 我們很高興的宣布,庫幣將上線Rally(RLY)項目并支持交易對RLY/USDT.

1900/1/1 0:00:00
亦來云聯合創始人韓鋒:數據征信概念將引發下一波的高潮_亦來云

近期,亦來云聯合創始人韓鋒在幣世界主辦的《DeFi最前沿:趨勢討論與投資價值挖掘》分享會上,以《數據征信概念將引發下一波的高潮》這一主題,和大家討論了區塊鏈的發展歷史.

1900/1/1 0:00:00
浩然論幣:2021.3.17比特幣合約行情思路分析建議_比特幣

大家好,我是你們的朋友浩然論幣HR12818,浩然論幣公眾號同步專注數字貨幣行情分析,爭取為廣大幣友傳遞最有價值的幣市信息,歡迎廣大幣友的關注與點贊.

1900/1/1 0:00:00
幣虎已暫停BPS充提幣業務_OIN

尊敬的用戶: 因BPS節點維護升級,幣虎即刻起暫停BPS充提幣服務,升級期間不影響正常交易。恢復時間另行通知.

1900/1/1 0:00:00
幣安創新區上市Linear(LINA),引入Launchpad投入模式,投入BNB以7折購買LINA!_INE

親愛的用戶:幣安創新區將上市Linear,本次新幣上市將引入Launchpad投入模式,用戶可以在香港時間2021年03月18日13:00-17:00期間投入BNB以7折購買LINA.

1900/1/1 0:00:00
普通人該如何認知這一輪加密貨幣大牛市?_DEFI

開篇言明,這里所提到的普通人,是對指對區塊鏈行業缺乏基礎認知,但卻有心入場的每一個小白用戶。至于普通人參與的方式,可以是投資某一種加密貨幣,或者是加入區塊鏈行業從業、創業等,亦或是僅僅只流露出一.

1900/1/1 0:00:00
ads