MetaForce(佛薩奇)矩陣2.0合約開發(fā)系統(tǒng)|(佛薩奇)源碼開發(fā)案例展示
在Web 2.0時代,用戶能夠上傳自己的文本、圖片和視頻等內(nèi)容到平臺上,不再是內(nèi)容的被動接受者,而是可以創(chuàng)造內(nèi)容并與其他人進行交流。在Web 2.0時代,人們變成各種應(yīng)用程序的用戶,并在這些產(chǎn)品上創(chuàng)造大量的內(nèi)容,這些數(shù)據(jù)被一個中心化的平臺所掌控。
Web 3.0的概念是由以太坊聯(lián)合創(chuàng)始人、Polkadot創(chuàng)造者Gavin Wood在2014年提出的,代表了下一代的去中心化互聯(lián)網(wǎng),并賦予了個體價值。Web 3.0關(guān)注的是通過區(qū)塊鏈等去中心化技術(shù)形成的“誰創(chuàng)造,誰擁有”的關(guān)系價值,佛薩奇合約系統(tǒng)13z開4z77發(fā)z558。
以太坊官網(wǎng)對Web 3.0主要特點的總結(jié)如下:
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開發(fā)范式對比
Web 2.0開發(fā)范式:
需要開發(fā)登錄、注冊功能,讓用戶綁定郵箱、綁定手機,需要搭建數(shù)據(jù)庫來存儲用戶注冊信息以及用戶交互數(shù)據(jù)
使用前端代碼語言(JavaScript,HTML,CSS)來開發(fā)頁面邏輯,需要搭建一個服務(wù)器來部署前端頁面
使用后端代碼語言(像Node.js,Java,Go等)來開發(fā)業(yè)務(wù)邏輯,并需要搭建一個服務(wù)器來部署后端服務(wù),并需要運維服務(wù)
所有代碼、數(shù)據(jù)都部署在中心化的服務(wù)器上,所有控制權(quán)歸開發(fā)者
Web 3.0開發(fā)范式:
不需要用戶綁定郵箱,綁定手機,可以直接通過錢包登錄,也不需要存儲用戶信息
可以不需要搭建前端服務(wù)器,用戶可通過IPFS或arweave存儲前端頁面,并進行訪問
不需要搭建后端服務(wù)器,后端邏輯是用智能合約編寫的,運行在EVM上的
不需要搭建數(shù)據(jù)庫,歷史數(shù)據(jù)與數(shù)據(jù)庫操作通過TheGraph來實現(xiàn)
truffle提供了很多項目模板,可以快速搭建一個去中心化應(yīng)用的代碼骨架。我們使用webpack項目模板來構(gòu)建Hello合約。在smartcontract目錄下,執(zhí)行如下命令:
truffle unbox webpack
初始化項目的時候,它會創(chuàng)建運行一個完整Dapp所需的文件和目錄。我們將strings.sol和Hello.sol兩個合約文件移動到contracts目錄下,并刪除contracts目錄下原有的ConvertLib.sol和MetaCoin.sol文件(Migrations.sol合約用來管理應(yīng)用合約的部署,因此請勿刪除)。目錄結(jié)構(gòu)如下:
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合約部署到區(qū)塊鏈上的。有了truffle,以后再也不用這么做了。
第一個腳本1_initial_migration.js的作用是向區(qū)塊鏈部署Migrations合約。這個合約的作用是存儲并跟蹤已經(jīng)部署的最新合約。每次運行腳本時,truffle就會向區(qū)塊鏈查詢獲取已部署好的合約,然后部署新的合約。部署完成后,這個腳本會更新Migrations合約中的last_completed_migration字段指向最新部署的合約。
我們可以簡單地把Migrations合約當(dāng)成是一個數(shù)據(jù)庫表,字段last_completed_migration總是保持最新狀態(tài)。
我們來修改第二個腳本2_deploy_contracts.js:
//artifacts對象為truffle框架提供
//artifacts.require()方法與Node中的require()方法類似
//編譯合約代碼。自動調(diào)用solc編譯器來編譯合約代碼并返回編譯結(jié)果對象
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);
};