數(shù)字藏品發(fā)行和交易平臺烁巫,理論上只要有智能合約和前端程序就足夠了署隘。
智能合約負(fù)責(zé)實(shí)現(xiàn)數(shù)字藏品的鑄造、變更所有者以及上架亚隙、一口價(jià)磁餐、拍賣等功能,并將數(shù)據(jù)記錄到區(qū)塊鏈上阿弃。
前端接入錢包插件(如MetaMask)的SDK可以實(shí)現(xiàn)私鑰的管理诊霹。再接入web3.js或ether.js可以實(shí)現(xiàn)對智能合約的調(diào)用。
如此恤浪,平臺的核心功能從鑄造藏品到交易藏品畅哑,均可通過前端訪問區(qū)塊鏈網(wǎng)關(guān)接口調(diào)用智能合約的形式來實(shí)現(xiàn)。此時(shí)的架構(gòu)水由,既是去中心化的應(yīng)用程序的架構(gòu)荠呐。
然而在系統(tǒng)的實(shí)際運(yùn)行中,智能合約的局限性導(dǎo)致其對數(shù)據(jù)匯總的支持不夠友好。當(dāng)我們想要拉取一個(gè)藏品貨架列表時(shí)泥张,當(dāng)我們想要根據(jù)藏品類型進(jìn)行篩選呵恢,或者當(dāng)我們想要按照售價(jià)進(jìn)行排序時(shí),合約的響應(yīng)速度讓我們深感無力媚创,甚至有些時(shí)候渗钉,合約壓根就無法給出相應(yīng)的功能支持。因此整個(gè)系統(tǒng)中少不了使用中間件接口服務(wù)進(jìn)行數(shù)據(jù)支持钞钙。
兩個(gè)選擇鳄橘,要么我們使用thegraph同步合約數(shù)據(jù),并提供接口支持芒炼。此時(shí)架構(gòu)依然算是去中心化瘫怜。
要么我們自己搭建服務(wù)器,編寫同步程序?qū)^(qū)塊鏈上的數(shù)據(jù)同步到中心化的數(shù)據(jù)庫本刽,如MySQL鲸湃。編寫接口程序方便前端程序進(jìn)行列表查詢。此時(shí)架構(gòu)已經(jīng)開始趨于中心化架構(gòu)子寓。
相對比thegraph暗挑,自建中間件服務(wù)器能提供更多、更靈活的數(shù)據(jù)服務(wù)斜友。同時(shí)可以對用戶信息進(jìn)行管理炸裆。比如給每個(gè)用戶錢包地址配上昵稱、標(biāo)簽等功能鲜屏。為今后建立用戶中心打好基礎(chǔ)晒衩。或者對列表中的某些item進(jìn)行隱藏墙歪。讓用戶的操作體驗(yàn)更好。
以上是一個(gè)web3應(yīng)用的基礎(chǔ)框架贝奇。數(shù)據(jù)的流動(dòng)是從合約到數(shù)據(jù)庫虹菲。
而另外一種模式是讓數(shù)據(jù)從中心數(shù)據(jù)庫流動(dòng)到合約。一般半中心化的架構(gòu)會(huì)使用這種配置掉瞳。
比如說半中心化的數(shù)字藏品交易所毕源。雖然也會(huì)將數(shù)字藏品發(fā)給用戶,但實(shí)際上用戶的錢包地址是系統(tǒng)生成的內(nèi)部的錢包地址陕习。由平臺統(tǒng)一管理用戶私鑰霎褐。用戶之間的交易數(shù)據(jù),也是先保存到數(shù)據(jù)庫该镣,然后再慢慢同步到鏈上合約冻璃。
這種架構(gòu)的優(yōu)勢在于不完全依賴具體的區(qū)塊鏈網(wǎng)絡(luò),同時(shí)可支持多個(gè)區(qū)塊鏈網(wǎng)絡(luò)的接入,甚至可以隱藏掉區(qū)塊鏈功能省艳。讓交易只在數(shù)據(jù)庫的級別流轉(zhuǎn)娘纷。直到用戶使用“提現(xiàn)”功能將NFT數(shù)字藏品轉(zhuǎn)移到自己的錢包中。使得交易速度大大加快跋炕,也節(jié)省了部分區(qū)塊鏈的使用手續(xù)費(fèi)赖晶。
另有優(yōu)勢則是讓平臺變現(xiàn)的能力加強(qiáng),此處不過多解釋辐烂。