专栏名称: Achain平台
即时更新Achain最新动态。
目录
相关文章推荐
51好读  ›  专栏  ›  Achain平台

重磅干货,一篇读懂区块链!

Achain平台  · 公众号  ·  · 2018-04-04 10:05

正文


行业盛事·巨星云集

3月30日~31日,“区块链技术及应用峰会(BTA)·中国”在北京喜来登长城饭店盛大开启。本次大会由CSDN、火星财经主办,中关村区块链产业联盟、柏链道捷、区块链大本营、TokenSky联合主办。可谓 重磅推出,万众瞩目

区块链以其耀目的生命力,极速席卷全球,吸引了最in最尖端的圈层。本次大会更是群贤毕至,熠熠生辉,聚集了众多区块链 技术巨匠、投资巨擘,商业巨咖。 区块链发展最核心最敏锐的思维, 在这里碰撞激荡,花火四溅。

解码风云·巅峰洞见

最重磅,最令人瞩目的压轴,自然是区块链的思维领袖Achain。Achain李谱作为本次大会的超级嘉宾,带来了区块链的钻石级演讲 《智能合约——构建未来信任的基石》

李谱

Achain技术合伙人

毕业于清华大学软件学院,区块链领域大名鼎鼎的开发专家。曾担任阿里巴巴资深工程师,傲游浏览器、UC浏览器研发工程师。

他专业而又深入浅出的分享了智能合约的精髓及设计原则。

他指出区块链本质就是程序,而区块链发展的动力永远是技术。鼓励想要涉足区块链的人群,简单理解,深研技术。


振聋发聩·受益匪浅

李谱演讲实录:

智能合约— 构建未来信任的基石

大家好,我是来自Achain的李谱。

Achain上线以来,一直致力于帮助开发者发布智能合约。迄今为止,运行在Achain上的智能合约已经达到87个,涉及金融、游戏等各个领域。Achain建立在RDPOS共识机制基础之上,大约每隔十秒产生一个区块,到目前为止,Achain产生了210万区块,七十万笔交易,40%是合约调用。

从以上数据我们可以看到, 智能合约对于Achain来说至关重要!

1

智能合约的重要性

Achain分为三层:

  • 接口层

    包括CMD、RPC和API

  • 逻辑层

    包括NET、wallet、GLUA虚拟机、本地脚本以及合约

  • 存储层

    包括内存缓存和物理DB


Achain最上面是接口层,中间是逻辑层,构成Achain的业务体系。

逻辑层中的虚拟机、本地脚本以及合约这三个部分构成了Achain智能合约的体系。虚拟机是基于LUA智能合约编写的,在里面进行一些改善来适用。

第三层是存储层。 如果Achain上运行的是智能合约,就会启动GLUA虚拟机进行计算,计算完成之后,存储到里面。

智能合约总体设计原则

2

四点原则:

设计一个智能合约是典型的虚拟机的应用,这里面要考虑的因素特别多,最重要的是这四点原则。

  • 数据设计

    Achain能够提供一整套完整数据的存储和存取。

    Achain能够很方便的把数据从底层的数据库中取出来,组成虚拟机需要的数据,然后传给虚拟机,等到数据再传回来的时候进行存储。

  • 区块大小

    我们都知道区块链是以区块为存储的,而区块大小有一定上限,这个大小是10兆。我们的数据不能过大,如果过大,所承担的合约调用数据会非常少,这样会直接影响到合约调用的性能。

  • 产块时间

    指区块产生的时间。

    Achain产生一个区块大约需要十秒。包含两部分内容,前三秒用于全网同步,后七秒留给合约调用。

  • 处理时间

    指Glua虚拟机执行合约的一个时间。

    留给合约调用的时间只有七秒,我们的处理时间必须尽可能少,在七秒中做尽可能多的事情。

这四个约束条件特别有意思,区块大小和数据设计讲的是空间的问题;处理时间和产块时间讲的是时间的问题。这两个问题鱼和熊掌不能兼得,让处理时间和数据设计尽可能达到一定平衡。

数据设计其实是这四个里面最重要的一点,因为数据设计不合理,会直接影响你的储备时间,影响合约调度的效率。

3

合约数据的存储

数据设计一个存储方案,需链上协同链下。链上存储动作,链下存储状态。链条上面有区块,而区块很小,需要同步,不能无限的存东西。

我们把这个分到链下来,链下资源相对来说比较充足,因为我们可以发动全网,可以链下存储动作,链下存储状态,链下把链上的动作翻译成状态存在链下。

在这个方案之下要面对一个最复杂的问题:容器类。容器类的特点是能够添加数据。但总有一天会添加得非常大,怎么办呢?我们通过引用after来存储动作,实现增加条目、删除条目、修改条目。怎么理解?其实就是程序遇到before,把自己数据库里关键字的条目删掉,再把after重新插一遍。有了这个增删改,我们把复杂数据的存储变成了一个动作,这个动作可以存在区块上。

1个例子

下面举一个简单的例子,这个例子中间是时间轴,在时间轴之上,表示的是链上,也就是区块;时间轴之下表示的是链下,也就是本地存储。然后下面我画了四个区块,这四个区块分别代表四种不同的操作。

  • 第一个区块







请到「今天看啥」查看全文