实例分析: CommunityXYZ 是 Arweave 利润分享社区的仪表板和管理平台. CommunityXYZ 的 智能合约 是 Smartweave 的一个标准实现. 它使用了 TypeScript (相当于拓展版的 JavaScript ). 其中通过类似 JSON 的数据结构, 包含了用户的余额, vault, 角色, 投票情况等信息. 同时合约也实现了必需的 Transfer, increaseVault, 检查余额等功能. CommunityXYZ 所实现的 SmartWeave 合约完全可以放到前端页面代码库当中, 这样合约逻辑就可以保存在于前端当中. 缺点与优化: 如果仔细读 Smartweave 的设计思路, 你会发现这样的设计后, TPS 的上限成为了用户浏览器性能以及网络带宽上限. 但是, 将所有交易留给用户执行会出现一个问题, 如果一个合约的交易数量多了以后会不会造成一旦要得到最新状态, 就需要运行很久, 造成阻塞呢? 虽然在现实情况下, 正常但较多数量的交易不会造成很大的用户体验上的困扰 (现代网页中加载和运行的 JavaScript 文件大小其实是本身就很大的, 比如笔者正在使用的 notion.so 官网的 JavaScript 代码就有大约 2MB, 但是也是能够秒开 ), 但是如果遭到 DDoS 攻击, 有人上传非常多恶意交易数据 (比如几个 GB), 那么就肯定会有问题了. 为了解决这个问题, 我们可以在提交交易前, 通过一个另外的 Smartweave 合约过滤交易数据, 接收大量交易数据, 然后批量 rollup 到 AR 上. 同时, 开发者可以参考 Redstone 所实现的 Smartweave 合约. Redstone 通过浏览器多层缓存来减少不必要的交易数据的重复加载与运行, 可以大大优化客户端的合约性能. 或者由可信的用户来生成交易状态快照, 减少交易的运算. everFinance 的 token-demo (另一种基于存储的共识计算范式) everFinance 所实现的 token-demo 与 Smartweave 的设计思路基本一致, 同样是基于 Arweave 作为图灵机的纸带这一思想. token-demo 包含了两个应用模块: issuer (代币发行运营程序) 和 detector (代币验钞机程序). 代币发行运营程序, 提供了 Token 的 WEB 端页面, 提供了查询余额, 交易记录, 和提交交易的代币接口. 代币验钞机程序, 运行后自动加载 Arweave 上的数据 (就和我们在 Smartweave 一节中描述的 Lazy-execution 一样), 提供接口查询代币交易情况. 理论上来说, Arweave 的智能合约可以用无数种不同的形式来实现, 因此每个项目可能都会有自己不同的实现, 但大多数项目都使用了 Smartweave. Arweave 实际上是有类似 ERC-20 这样的代币标准的, 指定了各种 API. Arweave 上 Smartweave 的智能合约极大地简化了开发流程, 如果使用 Arweave 进行存储, 项目组可能根本就不需要专门的合约工程师. 5. PSC (利润分享社区) 解读PSC (利润分享社区) 介绍 (责任编辑:admin) |