数字藏品发行和交易平台,理论上只要有智能合约和前端程序就足够了。

智能合约负责实现数字藏品的铸造、变更所有者以及上架、一口价、拍卖等功能,并将数据记录到区块链上。

前端接入钱包插件(如MetaMask)的SDK可以实现私钥的管理。再接入web3.js或ether.js可以实现对智能合约的调用。

如此,平台的核心功能从铸造藏品到交易藏品,均可通过前端访问区块链网关接口调用智能合约的形式来实现。此时的架构,既是去中心化的应用程序的架构。

然而在系统的实际运行中,智能合约的局限性导致其对数据汇总的支持不够友好。当我们想要拉取一个藏品货架列表时,当我们想要根据藏品类型进行筛选,或者当我们想要按照售价进行排序时,合约的响应速度让我们深感无力,甚至有些时候,合约压根就无法给出相应的功能支持。因此整个系统中少不了使用中间件接口服务进行数据支持。

两个选择,要么我们使用thegraph同步合约数据,并提供接口支持。此时架构依然算是去中心化。

要么我们自己搭建服务器,编写同步程序将区块链上的数据同步到中心化的数据库,如MySQL。编写接口程序方便前端程序进行列表查询。此时架构已经开始趋于中心化架构。

相对比thegraph,自建中间件服务器能提供更多、更灵活的数据服务。同时可以对用户信息进行管理。比如给每个用户钱包地址配上昵称、标签等功能。为今后建立用户中心打好基础。或者对列表中的某些item进行隐藏。让用户的操作体验更好。

以上是一个web3应用的基础框架。数据的流动是从合约到数据库。

而另外一种模式是让数据从中心数据库流动到合约。一般半中心化的架构会使用这种配置。

比如说半中心化的数字藏品交易所。虽然也会将数字藏品发给用户,但实际上用户的钱包地址是系统生成的内部的钱包地址。由平台统一管理用户私钥。用户之间的交易数据,也是先保存到数据库,然后再慢慢同步到链上合约。

这种架构的优势在于不完全依赖具体的区块链网络,同时可支持多个区块链网络的接入,甚至可以隐藏掉区块链功能。让交易只在数据库的级别流转。直到用户使用“提现”功能将NFT数字藏品转移到自己的钱包中。使得交易速度大大加快,也节省了部分区块链的使用手续费。

另有优势则是让平台变现的能力加强,此处不过多解释。