前端页面和智能合约是如何合二为一的? 在前文中, 我们提到了 Arweave 中是可以直接存储不同 content-type 的文件的. 我们可以把前端的页面直接存储到 Arweave 中, 打开这个交易数据时就直接可以看到一个完整的页面! (比如 这个交易 中存储的 数据, 点开就直接是一个渲染好的前端页面) 通过这个例子, 我们其实就可以了解了为什么前端页面可以是智能合约. 因为我们在打开 Arweave 代码数据的同时, 浏览器也为我们渲染好了页面. 我们不仅能看到页面的源码, 也能看到页面. 这在以太坊上是做不到的, 以太坊的智能合约在浏览器眼里只是一串文本, 浏览器是渲染不成页面的. 当开发者在开发的时候, DApp 的逻辑和合约的逻辑都可以写在前端里, 然后通过 HTTP API 来将需要存储的交易和数据存储到 Arweave 上. 如何保证数据存储可信和计算可信? Arweave 的生态开发者和 Sam Williams 所倾向于的共识是 基于数据的共识 (由 Arweave 生态开发者, everFinance Founder outprog 首次提出). 合约的页面源码存储在 Arweave 上, 具备确定性, 我们可以随意查看. 同时每个交互的数据也存储在链上, 这就保证了数据的存储可信. 在我们渲染出合约页面的同时, 现代浏览器为我们提供了一个几乎完全统一的执行环境, 这就保证了计算可信. 通过这样的设计, Arweave 的智能合约同时保证数据永存/数据不可变/数据可追溯/数据成本低. 合约代码如何升级呢? 当想要升级合约或前端样式的时候, 开发者只需要重新发布一次新版的合约到 Arweave 上, 这就会生成一个新的 Arweave 交易, 更新前端页面以及合约内容.
|