布加迪评论|孙淑娟今天的智能合约非常复杂。它们支持更复杂的应用程序。智能合约需要存储、查询和处理更复杂、更大的数据。智能合约与数据高度耦合。因此,这些复杂的数据处理场景使得智能合约变得复杂且难以维护。开发者需要在合约中加入数据相关的逻辑,如数据查询、数据更新、数据过滤等。开发人员需要为不同的数据结构编写不同的函数。除了更高的复杂性,另一个问题是灵活性。当开发者需要使用复杂的过滤器查询数据时,需要在合约中添加自定义查询功能。开发者不能直接读取和过滤数据。在Web2环境下,数据库承担了所有与数据相关的工作。应用程序将干净的结构化数据存储在数据库中。开发人员可以使用SQL来读取所需的数据。数据与应用程序分离。Tableland就是为了解决这些问题而诞生的。Tableland声称是Web3原生数据库。1.机制由于链上数据存储空间大,Tableland使用链下数据库和链上智能合约进行权限检查和数据修改。图1(1)Dapp智能合约向Tableland智能合约发送数据更新请求。(2)Tableland智能合约检查调用者的权限并通过查询发送事件。(3)Tableland链下验证者网络监控链上事件并执行SQL。(4)同步Tableland链下的验证者网络。functionrunSQL(addresscaller,uint256tableId,stringmemorystatement)externalpayableoverridewhenNotPausednonReentrant{if(!_exists(tableId)||!(caller==_msgSenderERC721A()||owner()==_msgSenderERC721A()){可重入)未经授权();}uint256querySize=bytes(statement).length;如果(querySize>QUERY_MAX_SIZE){恢复MaxQuerySizeExceeded(querySize,QUERY_MAX_SIZE);}emitRunSQL(caller,ownerOf(tableId)==caller,tableId,statement,_caller,tableId));}虽然开发者可以使用智能合约来执行SQL,但是dapp智能合约无法获取任何返回值。这会损害可组合性。Tableland通过dapp前端、dapp智能合约和Tableland的三方交互解决了这个问题。Dapp前端读取数据,Dapp智能合约更新数据。Dapp前端从Tableland网关读取数据。Tableland网关可以直接与Tableland链下验证器网络交互。Tableland网关的功能类似于区块链RPC。借助网关,开发者无需搭建自己的网络节点。如果dapp前端向网关发送数据更新请求,网关会将请求转发给Tableland智能合约。图22.局限性作为“Web3原生数据库”,Tableland仍然有很多局限性:Dapp智能合约无法读取数据和接收执行结果。开发者不能将所有与数据相关的逻辑都放到智能合约中。一个表限制为100,000行和24列。一个数据单元限制为1kb。仅支持SQL的一个子集:CREATETABLE、INSERT、UPDATE、DELETE、SELECT、GRANT和REVOKE。仅支持某些类型,INT、REAL、TEXT、BLOB和ANY。3.应用Tableland自称是“Web3原生数据库”。这有点夸张,因为合约和数据之间的可组合性不好。现在Tableland可以应用于游戏和NFT。Tableland对NFT的支持很好。开发者创建表并插入NFT元数据后,即可获取网关链接。开发人员可以将此链接用作URI。function_baseURI()内部纯覆盖返回(字符串内存){function_baseURI()内部纯覆盖返回(字符串内存){return"https://testnet.tableland.network/chain/5/tables/79/id/";}左右滑动查看完整代码开发者以后可以使用TablelandCLI更新NFT元数据。4.路线图Tableland将于7月发布其NFT。NFT持有者可以获得更多的开发功能。未来,Tableland将在以下方面进行改进:支持更多的SQL。验证者网络是去中心化的。发行令牌并用于保护验证器网络。数据库管理面板。图35.FutureTableland并不是Web3原生数据库的终结。一个真正的Web3-native数据库应该满足以下要求:契约和数据分离。合约和数据之间的可组合性。应对审查阻力。支持地址和交易等Web3数据类型。用户拥有数据所有权。原文链接:https://hackernoon.com/a-web3-native-database-tableland
