ArcBlock / dappideas

Ideas collection for decentralized apps
7 stars 0 forks source link

一种新思维 DApp 架构思路 #127

Open mave99a opened 3 years ago

mave99a commented 3 years ago

几个基本的思考:

因此核心idea是: 用HTML+JS构建一个基于浏览器上面的基于web的新内核来运行app, dapp就是在这些新内核上运行。

这个idea最早来自于设计Zoe和DAO,因为Zoe和DAO都设计成会安装很多实例的,每个实例高度一致,只是被配置为不同的东西,而用户又很可能需要跨实例去访问或者在实例之间跳转。

--

思路是, 这个dapp是个shell, 或者更像一种特殊的terminal, 其展现的样式是由数据来驱动的。 或者可以认为这是一个在浏览器上实现的一种更高层浏览器。

这个浏览器浏览的就不是HTML和https, 而是可以基于更高层的protocol, 比如IPFS, 比如采用 p2p技术等, 比如支持身份和钱包,采用更好的name service等。

可以认为zero net是这样的一个shell. 比如web based rss reader也属于这样一种web 上的高层的浏览器(RSS的浏览器)。类似的如基于浏览器的terminal (https://github.com/huashengdun/webssh ),基于浏览器的 X Windows (https://xpra.org/html5/connect.html ) 都算是类似的这种思路(只不过实现了更古老的协议)。

这个做好了可以翻墙,可以突破封锁 (采用安全连接,并可以很方便re route或者proxy连接),并且有更好的性能和体验。 这个如果作为我们dapp标准的app框架,会非常棒。 我们在设计zoe的时候也考虑了这个思路,只有这样才能完美实现节点的去中心化。

--

不知道有没有有一些框架已经做了这个。

[Browser + JS framework] ---> 形成一个新的app browser 类似native app + same framework

不知道比如flutter这种是不是其实就是这样的东西。 过去的Meteor其实也算是这样的东西。 或者更早的netvibes, 也是这样的。

或者一个比如为hybrid mobile app写的web 框架也许算这类。

mave99a commented 3 years ago

可以实现一个service worker来作为我们dapp的通用传输层,这样相当于每个web app都自带一个backend来处理来自不同服务端的网络连接,避免某个节点 offline而带来差的用户体验。

有人有这样的思路: How To Run a Proxy Server Inside Your Browser https://betterprogramming.pub/how-to-run-a-proxy-server-inside-your-browser-8b96ea2ef1ea

https://github.com/DannyMoerkerke/sw-proxy

其实IPFS的 service worker也是此思路,只不过IPFS service worker仅仅做了IPFS GW。 我这个思路是一个相当于backend, 一个相当于browser或通用app shell, 从而形成一种新的app架构。

--

更进一步,这个架构还可以自动启动服务端的ABT Node和Blocklet来给自己提供更好的服务,例如成为proxy来连接其他的服务,翻墙,选择不同的接入IP等。 这里的ABT Node可以是on demand的, 用完就删除那种,更好保护隐私。 这有点像一个网络的机器,最基本的JS相当于BIOS或者boot loader, 然后就能load入基本的框架,自己接入安全的网络,进入去中心化世界。

mave99a commented 3 years ago

可以结合 @linchen1987 那个对 abt node console改进的思路。

mave99a commented 3 years ago

Dat protocol的做法是实现一个自定义浏览器: https://beakerbrowser.com

这么做代价太大,用户安装成本高,比zero net还难

mave99a commented 2 years ago

https://www.farcaster.xyz 提出的想法差不多,支持farcast的app相当于是一种特殊的浏览器,可以浏览farcaster支持的内容。 不过farcaster只是个协议,没做app这端的事。 它的app相当于通过ethereum的smartcontract 可以找到一个用户的实际内容发布地址,然后从那里抓去数据。 我觉得这个设计并不合理,还不如 activitypub。

https://www.farcaster.xyz/docs/the-basics

mave99a commented 1 year ago

https://crossbell.io https://crossbell.io/explore

这个设计有一些这个想法