在区块链侧链上进行Dapp技术开发

我在白皮书里提到过,asch使用的是不一样于以太坊和比特币的侧链架构,dapp是运行在侧链上的,每套侧链对应一个dapp。

侧链的独立性

侧链架构的好处是代码和数据独立,不增长主链的负担,避免数据过分膨胀,其实是一种自然的分片机制。 侧链有独立的区块链,有独立的受托人或者说见证人,同时也有独立的节点网络,就是说一个侧链产生的区块只会在全部安装了该侧链的节点之间进行广播。javascript

独立性既是优势,也是缺点。开发者完成了dapp的开发工做以后,还要考虑运维,也就是说要寻找足够的节点来运行它,不然难以维持足够的安全性。 从这一点来看,与以太坊相比,是缺陷,以太坊上一旦发布一个dapp,全部的节点均可觉得它工做,并为它提供安全保障。java

侧链的灵活性

可是侧链架构依然有存在的必要性,由于并不是全部的应用都须要那么高的安全性。Asch给用户提供了一种能够选择的灵活性。 比方说,假设asch有1000个节点,那么其中有的dapp比较重要,须要500个节点来运行它,有的dapp不那么重要,可能只须要100个节点,这彻底是由用户和开发者决定的。 在以太坊上,则只能选择一种,即所有节点都来运行它。听说以太坊也打算实现一种分片的机制,实际上这在asch系统中是一个早就解决了的问题。 另外,对于比较重要的、安全性要求较高的应用,咱们依然能够选择在主链上开发,可是不可能对全部开发者开放这种权力,仍是为了不主链的膨胀和不可控(DAO事件)。node

侧链的灵活性还表如今,全部的区块链参数是能够定制的,简单的好比区块间隔、区块奖励、交易费的去向等,高级用户还能够修改共识算法。 不过最重要的仍是业务逻辑,侧链上能够轻易的开发出与你的业务相关的交易类型或者智能合约。 这一点是与侧链的发明者blockstreams不一样,blockstreams的侧链,只是一个不一样的货币系统而已,开发新型交易和智能合约很不容易。mysql

以下图所示 黑色的圆圈表明一个节点,64个节点组成了主链的网络。红色方框以内的是1号侧链,其侧链网络是由12个节点组成。蓝色方框以内的是2号侧链,其网络是由36个节点组成。git

sidechain deploy architecture

主链与侧链的互利关系

Asch的主链与侧链之间是互惠互利的关系,asch为侧链提供基础设施,好比数据库写入的api,网络通信api,加密api等等,侧链则能够为asch补充更多的节点,以壮大整个系统。 侧链的开发者不须要提供全部的机器,能够利用已经存在主链节点,只须要节点主人安装该应用便可。 另外,主链的代币XAS能够转入侧链中,因为XAS能够在交易所交易,就至关于为侧链的资产提供了一种价值的媒介。 开发者在侧链发行一种资产后,能够直接与XAS兑换,不须要考虑交易平台的问题。github

解决生产力问题

咱们在sdk中为侧链提供了一套模板,或者说脚手架,也能够叫作开发框架,侧链的大部分底层功能都是写好的,dapp开发者只须要关心具体的业务逻辑,在这一点上,与以太坊的dapp开发难度至关。 Asch的侧链框架使用的语言是nodejs,咱们内置了很多经常使用的库让开发者直接使用,固然开发者也能够自行安装所须要的,有一个庞大的JavaScript社区做为后盾。算法

下面是asch内置的模块 inbuilt modulessql

解决安全问题

这里的安全问题与上面提到的由于节点不足致使的问题不同,这里说的安全问题是指侧链代码对安装者形成侵犯的问题。 咱们但愿每个asch节点都能安装一个侧链,并且asch节点的主人无需信任侧链的开发者。这就须要提供一种安全防范的措施,好比,防止侧链代码读取文件系统、进行网络操做。 在asch系统中,侧链代码会以子进程的方式启动,子进程首先加载一个使用沙箱机制隔离的javascript虚拟机,这个js虚拟机就是没有require以及任何多余模块的裸体虚拟机。 而后咱们为这个虚拟机植入一个定制的require和一些经常使用且安全的模块, 最后再加载侧链的代码。 咱们还经过进程间通信的方式提供一系列的api。 这样,侧链的框架就拥有了足够多的api,同时侧链的安装者也没有任何风险。数据库

process structure

相关文章
相关标签/搜索