polygon馬蹄鏈智慧合約dapp系統開發|NFT鏈遊戲搭建技術

搭建猿punk2558發表於2023-03-08

隨著社交媒體平臺的出現,Web 2.0時期開始於2004年。在Web 2.0時代,使用者能夠上傳自己的文字、圖片和影片等內容到平臺上,不再是內容的被動接受者,而是可以創造內容並與其他人進行交流。在Web 2.0時代,人們變成各種應用程式的使用者,並在這些產品上創造大量的內容,這些資料被一箇中心化的平臺所掌控。

Web 3.0的概念是由以太坊聯合創始人、polygon馬蹄鏈智慧合約13z開4z77z558發,Polkadot創造者Gavin Wood在2014年提出的,代表了下一代的去中心化網際網路,並賦予了個體價值。Web 3.0關注的是透過區塊鏈等去中心化技術形成的“誰創造,誰擁有”的關係價值,對接:punk2558。

以太坊官網對Web 3.0主要特點的總結如下:

Web3 is decentralized:instead of large swathes of the internet controlled and owned by centralized entities,ownership gets distributed amongst its builders and users.

Web3 is permissionless:everyone has equal access to participate in Web3,and no one gets excluded.

Web3 has native payments:it uses cryptocurrency for spending and sending money online instead of relying on the outdated infrastructure of banks and payment processors.

Web3 is trustless:it operates using incentives and economic mechanisms instead of relying on trusted third-parties.

Web 2.0與Web 3.0開發正規化對比

Web 2.0開發正規化:

需要開發登入、註冊功能,讓使用者繫結郵箱、繫結手機,需要搭建資料庫來儲存使用者註冊資訊以及使用者互動資料

使用前端程式碼語言(JavaScript,HTML,CSS)來開發頁面邏輯,需要搭建一個伺服器來部署前端頁面

使用後端程式碼語言(像Node.js,Java,Go等)來開發業務邏輯,並需要搭建一個伺服器來部署後端服務,並需要運維服務

所有程式碼、資料都部署在中心化的伺服器上,所有控制權歸開發者

Web 3.0開發正規化:

不需要使用者繫結郵箱,繫結手機,可以直接透過錢包登入,也不需要儲存使用者資訊

可以不需要搭建前端伺服器,使用者可透過IPFS或arweave儲存前端頁面,並進行訪問

不需要搭建後端伺服器,後端邏輯是用智慧合約編寫的,執行在EVM上的

不需要搭建資料庫,歷史資料與資料庫操作透過TheGraph來實現

truffle提供了很多專案模板,可以快速搭建一個去中心化應用的程式碼骨架。我們使用webpack專案模板來構建Hello合約。在smartcontract目錄下,執行如下命令:

truffle unbox webpack

初始化專案的時候,它會建立執行一個完整Dapp所需的檔案和目錄。我們將strings.sol和Hello.sol兩個合約檔案移動到contracts目錄下,並刪除contracts目錄下原有的ConvertLib.sol和MetaCoin.sol檔案(Migrations.sol合約用來管理應用合約的部署,因此請勿刪除)。目錄結構如下:

smartcontract

├──app

├──contracts

├──Hello.sol

├──Migrations.sol

└──strings.sol

├──migrations

├──1_initial_migration.js

└──2_deploy_contracts.js

├──node_modules

├──package.json

├──test

├──truffle.js

└──webpack.config.js

修改部署指令碼

目錄migrations(遷移的意思)非常重要。truffle使用該目錄下的指令碼來管理合約的部署。在前面幾篇教程中,我們是透過自己編寫編譯部署指令碼deploy.js,並在node控制檯中執行來將Hello合約部署到區塊鏈上的。有了truffle,以後再也不用這麼做了。

第一個指令碼1_initial_migration.js的作用是向區塊鏈部署Migrations合約。這個合約的作用是儲存並跟蹤已經部署的最新合約。每次執行指令碼時,truffle就會向區塊鏈查詢獲取已部署好的合約,然後部署新的合約。部署完成後,這個指令碼會更新Migrations合約中的last_completed_migration欄位指向最新部署的合約。

我們可以簡單地把Migrations合約當成是一個資料庫表,欄位last_completed_migration總是保持最新狀態。

我們來修改第二個指令碼2_deploy_contracts.js:

//artifacts物件為truffle框架提供

//artifacts.require()方法與Node中的require()方法類似

//編譯合約程式碼。自動呼叫solc編譯器來編譯合約程式碼並返回編譯結果物件

var stringsContract=artifacts.require("./strings.sol");

var HelloContract=artifacts.require("./Hello.sol");

//部署器物件deployer為truffle框架提供

module.exports=function(deployer){

//部署string.sol合約

deployer.deploy(stringsContract);

//將已部署的strings合約類庫連線到Hello合約

deployer.link(stringsContract,HelloContract);

//部署Hello.sol合約

deployer.deploy(HelloContract);

};

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70020115/viewspace-2938725/,如需轉載,請註明出處,否則將追究法律責任。

相關文章