以太坊價格 以太坊價格
Ctrl+D 以太坊價格
ads
首頁 > PEPE幣 > Info

區塊鏈:新手入門:如何使用Flow和IPFS創建類似NBA Top Shot的NFT

Author:

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

隨著非同質化代幣NFT市場進入狂熱的階段,回顧相對早期的NFT并記住CryptoKitties所面臨的挑戰是一件有趣的事情。DapperLabs團隊構建的平臺是第一個潛在大規模采用的真實示例,也是以太坊區塊鏈上的第一個真正壓力。

從那以后,隨著Rarible、OpenSea、Foundation和Sorare等平臺的涌現,NFT開始蓬勃發展。這些平臺每月都有數百萬美元的資金流入。盡管早期存在一些困難,但大多數情況已經在以太坊區塊鏈上發生了。但是,DapperLabs的團隊在經歷了CryptoKitties之后,開始著手構建一個通用的新區塊鏈,但也非常適合NFT用例。這樣做的目的是解決在以太坊上所遇到的許多NFT問題,同時為該領域的開發者和收藏家提供更好的體驗。他們的新區塊鏈Flow已經證明自己有能力獲得一些知名度。NBA、UFC甚至Dr.Seuss都在使用Flow。

我們最近寫了一篇關于在IPFS上創建具有內置資產支持的NFT的文章,并且討論了NFT領域中的責任問題,以及我們認為IPFS可以提供的幫助。現在是時候討論如何在IPFS支持的Flow上創建NFT。Flow區塊鏈的主要早期應用是NBATopShot。我們將創建一個非常基本的鑄造NFT過程的副本,然后在IPFS上備份NFT元數據和資產。

由于我們喜歡piatas,而不是NBA的精彩視頻,因此我們的NFT將專注于可交易性piatas在派對上被銷毀的視頻。

本教程由三個部分組成:

1.創建合約并鑄造代幣。

2.創建一個應用程序來查看通過此合約創建的NFT

3.創建一個市場,將NFT轉讓給其他人,同時在IPFS上轉讓NFT的基礎資產

讓我們從第一個教程開始。

設置

我們需要安裝FlowCLI。在Flow的文檔中有一些很好的安裝說明,但我將在這里復制它們:

ios系統

brewinstallflow-cli

Linux操作系統

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

Windows系統

央行反洗錢局負責人:利用比特幣等虛擬貨幣進行洗錢的新手段更加隱蔽:最高人民檢察院第四檢察廳、中國人民銀行反洗錢局負責人就聯合發布懲治洗錢犯罪典型案例答記者問,隨著社會經濟的快速發展,各類犯罪與洗錢活動相互交織滲透,洗錢犯罪充當助紂為虐、為虎作倀的角色,洗錢手段不斷翻新,涉案金額持續攀升。為非法吸收公眾存款、集資詐騙等涉眾型犯罪轉移非法資金的洗錢案件持續高發,利用網絡販、跨境販并清洗資贓的洗錢犯罪呈現多發態勢,利用比特幣等虛擬貨幣進行洗錢的新手段更加隱蔽......各類洗錢犯罪活動給社會穩定、金融安全和司法公正造成嚴重威脅。根據黨中央、國務院對反洗錢工作的重要部署要求,最高人民檢察院、中國人民銀行充分發揮部門職能,著力加強協同合作,有力打擊了各類洗錢違法犯罪活動,依法嚴懲了一批犯罪分子。(中國金融新聞網)[2021/3/19 18:59:34]

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

我們將在IPFS上存儲資產文件。為了簡化操作,我們可以使用Pinata。您可以在這里注冊一個免費帳戶,然后在這里獲取一個API密鑰。

我們還需要安裝NodeJS和文本編輯器,以幫助突出顯示Flow智能合約代碼的語法。您可以在此處安裝Node。VisualStudioCode具有支持Cadence的擴展。

讓我們創建一個目錄來記錄我們的項目。

mkdirpinata-party

切換到該目錄并初始化新的Flow項目:

cdpinata-partyflowprojectinit

現在,在您最喜歡的代碼編輯器中打開項目,然后開始工作。

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

在我們繼續前進之前,重要的是要指出,從現在開始,我們對Flow區塊鏈所做的一切都將在模擬器上完成。然而,將項目部署到測試網或主網就像更新flow.json文件中的配置設置一樣簡單。現在將文件設置為模擬器環境,然后我們就可以開始編寫合約了。

更新flow.json中的合約對象,如下文所示:

Blockstream首席執行官:在過去兩周,已幫助新手購買超過100萬美元的BTC:Blockstream首席執行官Adam Back發推表示,在過去兩周中,他已經幫助剛接觸加密貨幣的人購買了超過100萬美元的比特幣。他強調,這些這些投資者已經購買BTC并長期存儲。他們此前從未對BTC感興趣,因其有利的價格條件,被認為在當前的經濟動蕩中是不相關的對沖,于是他們決定對BTC進行存儲。[2020/4/3]

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

然后,將該文件中的deployments對象更新為如下文所示:

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

這是告訴FlowCLI使用模擬器來部署我們的合約,它還引用了帳戶和我們即將編寫的合約。實際上……

讓我們開始寫這個合約吧。

合約

Flow提供了關于創建NFT合約的出色教程。這是一個很好的參考點,但是正如Flow所指出的,他們尚未解決NFT元數據問題。他們希望將元數據存儲在鏈上。這是個好主意,他們肯定會想出一個合乎邏輯的方法。然而,我們現在想用元數據鑄造一些代幣,并且我們想要與NFT相關聯的媒體文件。元數據只是一個組成部分。我們還需要指向代幣最終代表的媒體。

如果您熟悉以太坊區塊鏈上的NFT,您可能知道這些代幣背后的許多資產存儲在傳統數據存儲和云托管提供商中。這是可以的,除非它不是。我們過去曾寫過關于內容尋址內容的天才,以及在傳統云平臺上存儲與區塊鏈相鄰數據的弊端。這一切歸結為兩點:

資產應該是可驗證的應該很容易轉移維護職責IPFS解決了這兩個問題。然后,Pinata以一種簡單的方式分層,將該內容長期固定在IPFS上。這正是我們希望支持NFT的媒體所需要的,對吧?我們希望確保我們能夠證明所有權,提供關于NFT的數據,并確保我們對基礎資產具有控制權,而不是一些副本。

打開PinataPartyContract.cdc,讓我們開始工作。

第一步是定義我們的合約。我們將在此基礎上添加更多內容,但我們從自定義PinataPartyContract開始,并在其中創建一個資源。資源是存儲在用戶帳戶中的項目,并可以通過訪問控制措施進行訪問。在這種情況下,NFT資源最終是因為用于表示NFT的東西擁有。NFT必須是唯一可識別的。該id屬性使我們能夠識別代幣。

聲音 | 央行上海總部:區塊鏈等新興技術為解決金融發展不平衡、不充分的問題提供了新手段:人民銀行上海總部相關負責人在接受專訪時表示,金融科技作為新形勢下金融與科技深度融合的產物,為解決金融發展不平衡、不充分的問題提供了新手段。其核心是利用云計算、大數據、人工智能和區塊鏈等新興技術改造或創新金融產品、經營模式和業務流程。這一創新業務形式的出現, 有效提升了金融服務能力和效率, 降低了金融交易成本, 拓展了金融發展廣度與深度,也已成為傳統金融業改革轉型的重要抓手。金融科技挑戰與機遇并存、效率與風險相伴,要堅持正本清源、守正創新,規范引導金融科技健康有序發展。上述負責人表示,“監管沙箱”是一種包容式的監管手段。人民銀行上海總部將積極研究探索監管沙箱機制,在人民銀行總行的支持下探索有利于推動我國金融科技創新的監管方式。(中國證券報)[2019/12/5]

接下來,我們需要創建一個資源接口,該接口將用于定義哪些功能可供給其他人使用(例如,不是合約所有者的人):

將其放在NFT資源代碼的正下方。這個NFTReceiver資源接口表示,我們定義的任何可以訪問該資源的人都可以調用以下方法:

存款獲取ID理想主義者獲取元數據接下來,我們需要定義代幣收集接口。可以將其視為容納所有用戶NFT的錢包。

這個資源中有很多內容,但是很快就會有意義。首先,我們有一個名為ownedNFTs的變量。這很簡單。它跟蹤該合約中用戶擁有的所有NFT。

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

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

最后,我們擁有NFT收集資源的所有可用功能。請注意,并非所有這些功能都可以使用。如果您還記得,我們在NFTReceiver資源接口中定義了任何人都可以訪問的功能。

我想指出存款功能。就像我們擴展了默認的FlowNFT合約以包含metadataObjs映射一樣,我們也擴展了默認的deposit功能以獲取額外的元數據參數。我們為什么要這樣做?我們需要確保只有代幣的鑄造者才能將元數據添加到代幣中。為了保持這種私密性,我們將初始的元數據添加限制在鑄造執行中。

聲音 | 李少平解讀最高法“五五改革綱要”: 要推動區塊鏈存證等科技創新手段深度運用:據中國之聲《央廣新聞》消息,《最高人民法院關于深化人民法院司法體制綜合配套改革的意見》,即《人民法院第五個五年改革綱要(2019—2023)》今日發布。最高人民法院副院長李少平在對該文件進行解讀時表示,“五五改革綱要”在前期工作基礎上,提出要構建中國特色社會主義現代化智慧法院應用體系,不斷破解改革難題、提升司法效能。其中,要推動語音識別、圖文識別、語義識別、智能輔助辦案、區塊鏈存證、常見糾紛網上數據一體化處理等科技創新手段深度運用。[2019/2/27]

我們幾乎完成了合約代碼。因此,在Collection資源的正下方,添加以下內容:

首先,我們有一個功能,該功能在調用時創建一個空的NFT集合。這就是首次與我們的合約交互的用戶創建存儲位置的方式,該存儲位置映射到我們定義的資源存儲位置。

之后,我們再創建一個資源。這很重要,因為沒有它,我們將無法鑄造代幣。NFTMinter資源包括一個idCount,以確保我們的NFT永遠不會有重復的ID。它還具有實際創建NFT的功能。

在NFTMinter資源的正下方,添加主合約初始化程序:

僅在部署合約時才調用此初始化函數。它有三個功能:

1.為集合的部署者創建一個空集合,以便合約的所有者可以從該合約中創建并擁有該NFT。

2.集合資源發布在公共位置,并引用我們在開始時創建的NFTReceiver接口。這就是我們告訴合約NFTReceiver上定義的函數可以被任何人調用的方式。

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

完整的合約可以在這里找到。

現在我們已經準備好了一個合約,讓我們來部署它,對嗎?我們應該在FlowPlayground上對其進行測試。看那里,點擊左邊欄的第一個帳戶。用我們的合約代碼替換示例合約中的所有代碼,然后單擊“部署”。如果一切順利,您應該會在屏幕底部的日志窗口中看到這樣的日志:

Circle加密投資應用添加面向新手投資者的功能:自2018年3月宣布推出應用后,初創公司Circle將從本周二開始提供全套服務。Circle高級產品經理Rachel Mayer表示,周二推出的其中一項功能就是面向新用戶的“購買市場(Buy the Market)”工具。據悉,對于那些缺乏具體投資計劃或方案的新手投資者來說,用戶只需選擇想要投資的資金,系統會將投資自動劃分到各種幣種,用戶確認購買即可。[2018/5/23]

16:48:55DeploymentDeployedContractTo:0x01

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

flowprojectstart-emulator

現在,在我們的模擬器運行且正確配置了flow.json文件的情況下,我們可以部署合約了。只需運行以下命令:

flowprojectdeploy

如果一切順利,您將看到以下輸出:

Deploying1contractsforaccounts:emulator-accountPinataPartyContract->0xf8d6e0586b0a20c7

現在,我們在Flow模擬器上有一個合約,但是我們想要鑄造一個代幣。讓我們以這個話題來結束這篇文章。

鑄造NFT

在本教程的第二篇文章中,我們將致力于通過應用程序和用戶界面使鑄造過程更加友好。為了更好地理解并展示元數據如何在Flow上與NFT一起使用,我們將使用Cadence腳本和命令操作。

讓我們在pinata-party項目的根目錄中創建一個新目錄,并將其稱為transactions。創建了該文件夾后,在其中創建一個名為mintpinatparty.cdc的新文件。

為了編寫交易,我們需要在我們提供給NFT的元數據中引用一個文件。為此,我們將通過Pinata上傳一個文件到IPFS。出于本教程的目的,也因為我們的NFT專注于在派對上被砸的piata的可交易視頻,您可以上傳一個孩子在生日聚會上敲擊piata的視頻。您可以上傳任何所需的視頻文件。您可以上傳所需的任何資產文件,并將其與您的NFT關聯,但本教程系列的第二篇文章將會提供視頻內容。一旦您準備好了視頻文件,請在這里上傳。

上傳文件后,系統將提供一個IPFS哈希。復制此哈希,因為我們將在鑄造過程中使用它。

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

這是一個非常簡單的交易,這在很大程度上歸功于Flow簡化了工作,使事情變得容易,但是讓我們來看看它。首先,您將注意到頂部的import語句。如果您還記得,當我們部署合約時,我們收到了一個賬戶。這是我們需要參考的。因此,將0xf8d6e0586b0a20c7替換為部署時的帳戶地址。

接下來我們定義交易。這里發生的所有事情都與我們計劃執行的交易相關。

我們在交易中做的第一件事是定義兩個引用變量receiverRef和mininterref。在這種情況下,我們既是NFT的接受者,也是NFT的執行者。這兩個變量引用了我們在合約中創建的資源。如果執行交易的人沒有訪問資源的權限,則交易將失敗。

接下來,我們有一個prepare功能。該功能獲取嘗試執行交易的人的帳戶信息,并進行一些驗證。我們試圖“借用”定義的NFTMinter和NFTReceiver這兩個資源上的可用功能。如果執行交易的人無法訪問這些資源,那么交易就會失敗。

最后,我們有execute功能。在這個功能中,我們為NFT構建元數據,鑄造NFT,然后在將NFT存入我們的帳戶之前關聯元數據。如果您注意到了,我創建了一個元數據變量。在這個變量中,我添加了一些關于我們的代幣的信息。由于我們的代幣表示的是一個piata在派對上被打碎的事件,而且我們試圖復制您在NBATopShot中看到的大部分內容,所以我在元數據中定義了一些統計數據。孩子揮桿擊中piata的速度、揮桿的角度和等級。我只是覺得這些數據很有趣。不過,您可以以類似的方式為您的代幣輸入有意義的任何信息。

您將注意到,我還在元數據中定義了一個uri屬性。這將指向托管與NFT相關聯的資產文件的IPFS哈希。在這種情況下,被擊中的是piata的實際視頻。您可以用先前上傳文件后收到的哈希值替換哈希值。

我們在哈希前加上ipfs://有幾個原因。這是IPFS上對文件的正確引用,可以與IPFS的桌面客戶端和瀏覽器擴展一起使用。既然Brave瀏覽器提供了對IPFS內容的本機支持,我們也可以直接將其粘貼到Brave瀏覽器中。

我們調用鑄造代幣的mintNFT函數。然后我們必須調用存款功能來將其存入我們的帳戶。這也是我們傳遞元數據的地方。如果您還記得,我們在存款功能中定義了一個變量關聯,它將元數據添加到相關的代幣ID。

最后,我們只需注銷已鑄造和存放代幣的事實。

現在,我們幾乎已經準備好發送交易并鑄造NFT。但是首先,我們需要準備我們的賬戶。在項目的根文件夾中,從命令行創建一個新的私鑰進行簽名。

執行以下命令:

flowkeysgenerate

這將為您提供一個公鑰和一個私鑰。**始終保護您的私鑰**

我們將需要私鑰來簽署交易,因此我們可以將其粘貼到我們的flow.json文件中。我們還需要指定簽名算法。以下是您的帳戶在flow.json文件現在應該是這樣的:

"accounts":{"emulator-account":{"address":"YOURACCOUNTADDRESS","privateKey":"YOURPRIVATEKEY","chain":"flow-emulator","sigAlgorithm":"ECDSA_P256","hashAlgorithm":"SHA3_256"}},

如果打算將該項目中的任何一個存儲在github或任何遠程git存儲庫上,請確保不包括私鑰。您可能想要.gitiignore您的整個flow.json。盡管我們只使用本地模擬器,但保護密鑰是一個很好的做法。

現在我們已經更新了此信息,我們可以發送交易。這樣做就像運行以下命令一樣簡單:

flowtransactionssend--code./transactions/MintPinataParty.cdc--signeremulator-account

我們從flow.json引用我們寫的交易文件和簽名者帳戶。如果一切順利,您應該會看到以下輸出:

Gettinginformationforaccountwithaddress0xf8d6e0586b0a20c7...SubmittingtransactionwithID4a79102747a450f65b6aab06a77161af196c3f7151b2400b3b3d09ade3b69823...SuccessfullysubmittedtransactionwithID4a79102747a450f65b6aab06a77161af196c3f7151b2400b3b3d09ade3b69823

現在,我們需要做的最后一件事是驗證代幣是否在我們的帳戶中,并獲取元數據。要做到這一點,我們將編寫一個非常簡單的腳本,并從命令行調用它。

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

這個腳本可以用類似于使用以太坊智能合約的只讀方法的方式來考慮。它們是免費的,只是從合約中返回數據。

在我們的腳本中,我們從部署的地址導入合約。然后我們定義一個主要功能。在這個函數中,我們定義了三個變量:

nftOwner:這只是擁有NFT的帳戶。我們從部署合約的帳戶中創建了NFT,因此在我們的示例中,取決于將來的合約設計,這可能并不總是正確的。功能:我們需要從部署的合約中“借用”可用的能力。請記住,這些功能是受訪問控制的,因此,如果某個功能不能被試圖借用它的地址使用,那么腳本將失敗。我們借用了NFTReceiver資源的功能。receiverRef:這個變量簡單地獲取我們的功能,并告訴腳本從部署的合約中借用。現在,我們可以調用函數。在這種情況下,我們希望確保所涉及的地址確實收到了我們鑄造的NFT,然后我們希望看到與代幣關聯的元數據。

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

flowscriptsexecute./scripts/CheckTokenMetadata.cdc

對于元數據輸出,您會看到類似以下的輸出:

{"name":"TheBigSwing","swing_velocity":"29","swing_angle":"45","rating":"5","uri":"ipfs://QmRZdc3mAMXpv6Akz9Ekp1y4vDSjazTx2dCQRkxVy1yUj6"}

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

接下來,我們將提供一個關于構建前端React應用程序的教程,該應用程序將允許你通過獲取元數據并解析該元數據來顯示您的NFT。

祝您好運

Tags:NFTPinata區塊鏈NFT價格NFT幣Pinata幣是什么幣區塊鏈工程專業學什么區塊鏈存證怎么弄區塊鏈技術發展現狀和趨勢

PEPE幣
以太坊:以太坊社區分歧,其子網Reddit頻道版主在爭議中辭職

TaylorMonahan,加密錢包初創公司MyCrypto的首席執行官,自2016年以來一直擔任以太坊子網的版主.

1900/1/1 0:00:00
比特幣:千騰商學院|6億USDT加入預增發池 增發指令將在今后不定期執行

頭條 ▌泰達向ERC20USDT預增發池添加6億USDT北京鏈安Chainsmap監測系統發現,北京時間7月30日下午14點以后.

1900/1/1 0:00:00
BTC:Hegic:是時候改變DeFi期權游戲了

介紹 Hegic是基于以太坊的鏈上期權交易協議。該平臺一個月前推出,已經在DeFi領域引起了很多的關注。Hegic提供了良好的流動性,這是它的前輩未能做到的.

1900/1/1 0:00:00
加密貨幣:【分析】2018年比特幣價格將無法達到新高

加密貨幣投資者都認為比特幣跌到這個價格,已經是探到底了,現在該上漲了;然而,經濟學家和獨立投資者TuurDemeester認為,在今年剩下的時間里,我們可以看到比特幣橫向盤或者向下的.

1900/1/1 0:00:00
以太坊:V神慌得一批!EOS每日DApp用戶和交易量超過以太坊

昨日上午加密貨幣市場研究員KevinRooke編制了EOS和以太坊的Dapp活躍用戶量和24小時交易量數據圖發現EOS的Dapp用戶量已在不知不覺當中超過了以太坊.

1900/1/1 0:00:00
加密貨幣:動亂中的委內瑞拉和救命稻草加密貨幣

委內瑞拉的與經濟動蕩受到反對派國民議會議長胡安瓜伊多組織大規模抗議活動,呼吁軍方幫助他結束尼古拉斯·馬杜羅的統治。近期動蕩的影響委內瑞拉加密貨幣的采用大幅增長.

1900/1/1 0:00:00
ads