和英文版对照着看,英文版在此:http://download.youkuaiyun.com/download/q1177660557/10243551
arcblock 提及最多的就是社区和用户体验
旨在①加速区块链在各行各业的应用②快速区块链开发
当今区块链的问题:
性能差劲(比特币7笔每秒,以太坊也就多了几笔)、用户不友好(目前所有的方式都是针对专业人士的)、极大的开发cost(难上手、开发慢、收手续费,轻松上手是区块链广泛传播的重要因素)、平台局限性(platform lock-in,开发人员开发前需要决定支持哪个区块链,然后再实现对应区块链的代码,很难对dapp进行移植。开发人员不应该被局限在某一个特定区块链技术,正如你的app不能只适用于桌面,或者不能只适用于winodws,也要支持其他平台)、平庸没特点(功能太少,社区也没有鼓励机制。区块链的奖励机制并没不涉及对开发人员的激励)
arcblock 平台:
ab有着全新的设计来进行解决上述问题。首先不同于先辈们,ab是一个平台服务,并非一个独立的软件包或者一堆api接口。ab是整合云计算和区块链的解决方案。
ab是一个激励驱动的市场(incentive-driven marketplace),这个市场是可重用服务、组件和应用程序的世界。“矿工”在ab中不仅提供计算机资源,还会提供可用组件、新服务,也会时刻准备部署应用程序。
贡献资源或服务的人都会有代币奖励,以此来构建一个良性的、自增长、自进化社区文化。而且ab总是强调ab出自社区,源自社区的力量。
ab的OCAP(open chain access protocol)协议的功能是连接多个不同区块链。开发者还需要在不同的区块链中不停地评估不停的切换,随着区块链的发展,OCAP都可以解决这些问题。OCAP消除了平台局限性问题,且支持应用程序在多个区块链上运行,极大的提高的开发人员和用户的体验。
blocklet是另一个开创性的组件,吸收了当下流行的微服务架构和无服务计算技术。blocklet是一个高级的应用程序协议,所有的平台上所有的语言都可以实现。blocklet可以撬动全部的原生平台的能力来提供同样水平的性能,替代在低效的虚机上运行。
blocklet不仅仅是访问区块链,它可以连接所有现有的数据源,可以进行链上和链下计算。
ab的优势:
建立新的代币经济
ab所有的服务都是代币经济驱动的。ab是一个由激励驱动的经济体系,它鼓励区块链社区合作共建一个更好的生态系统,而非仅仅是基础的服务平台。
极致的体验
ab的搭建是以用户体验为中心的自顶向下的策略。相比之下,很多现存的方案都把注意力放在了区块链技术本身,并以牺牲用户体验为代价。ab为应用程序的开发提供了实时响应式的体验。用户只需从浏览器或者下载移动app即可。
ab同样极大的提高的开发者得体验。无需再考虑底层的区块链协议。有了ab区块链适配器,工程师甚至不用在本地区块链节点上进行应用程序的开发和测试。
云端构建
ab设计之初就是要运行在云端的,当然也可以在单个计算机上进行开发和测试。
这个设计原则使得ab从底层上区别于其他区块链平台。ab中,每个节点可以是“逻辑节点”,由一个或多个虚拟机组成,或者一组提供云服务的服务器组成的计算环境。这个方法着实向前迈了一大步,加快了区块链的部署的同时也将应用程序与下一层抽离。
构建于开放的标准
ab构建于开放的标准之上。ab尽可能在不重复造轮子的基础上满足开发者的需求。除了开源ab的核心组件,ab还会向社区贡献其他区块链技术。
ab架构
ab的目标是构建稳定的、可扩展的、易使用的平台,这个平台的功能是构建和部署dapp。
设计原则
基于以下几个核心原则:
-用户体验是第一位
-性能
-基于开放标准的系统构建
-基于激励驱动的经济系统
系统架构
ab为主流区块链应用程序发明了一系列革命性技术,为的就是让大众更方面的使用。
<此处有图>
开放链访问协议(open chain access protocol)
OCAP为访问底层区块链提供一个抽象层,就像ODBC或者JDBC面向一堆数据库的功能一样。OCAP支持你的应用程序工作在不同的区块链上,无需再为了不同的区块链平台而改动业务逻辑。
基石(Blocklet)
基石是一个无服务的计算架构组件,用于运行多种类型的应用程序。基石可以写智能合约、可以写oracle、可以写资源、可以资产处理、也可以进行链下业务逻辑处理。基石通过OCAP与底层的区块链进行通信,也可以内嵌基于Algorand的共识算法(http://colabug.com/1922498.html)。
所有人可以使用基石构建服务和组件,并且在激励机制下将其贡献给社区。当组件被他人使用的时候,组件贡献者会收到代币奖励。
基石组件(Blocklet Components)
基石组件是预建立的基石,相当于是基石+一些预置的功能或服务,比如代币服务、用户识别系统。基石组件都是高度可用且定制的。
基石组件可以快速搭建并运行你的应用程序,能更快的开发应用程序。基石组件提供的服务包括:用户识别、代币的使用、钱包、消息、通知服务等。开箱即用或者自由组合都是ok的。
基石组件可以自己开发,也可以使用社区中现有的。可以去arcblock marketplace app去查找。
去中心化的发布订阅网关(decentralized pub/sub gateway)
基石支持分布式消息系统,像Api网关一样支持消息的发布和订阅。ab的网关使用的是分布式的设计和安全通信信道。你的应用程序可以运行在浏览器,也可以运行在移动端,给用户实时响应式体验。
网关默认支持多种不同的网络协议,比如websocket、ddp、https和mqtt。高级开发者可以用新的网络协议扩展网关以满足自己的需求。
市场和代币经济(marketplace and token economy)
ab有一个完全可订制化代币经济管理者(器)。ab甚至可以创建继承了ab所有功能的独特代币。
ab市场是一个本地的应用程序,为的就是使社区贡献和交易可重用的组件。
云节点(cloud nodes)
ab是第一个视云服务为节点的平台,ab拥有一个更高层的抽象,保证了性能和安全性。
尽管ab更愿使用云节点,但你也可以在传统的节点上运行ab。一般,进行测试和开发的时候,开发者更愿意在本地运行。
使用云节点并非是向中心化和不安全的妥协,事实上,云节点是在下一层保证了去中心化和安全保障。
云节点的安全由云提供商来保障,大多数情况下,云提供商比个人能提供更安全可靠,比家庭之间或矿场间的p2p更安全和可靠。
核心组件(Core Components)
下面讲述我们的核心组件和算法。
开放链访问协议(open chain access protocol)
ab的OCAP支持你的应用程序适配多种多样的区块链协议,包括比特币、以太坊、超级账本啥的。
开始我们会闭源开发,等时间成熟我们会开源的。
<此处有图>
OCAP层(open chain access protocol layer)
OCAP定义了些高级的、通用的api,使得可以开放连接,访问其他的区块链协议。该层是由链适配器(chain adapter)在下面提供支持,每个链适配器对应了一种特定的区块链协议,比如比特币、以太坊啥的。
OCAP层包含了三级别api:
第一级别:普通链api。该级别的api组提供了OCAA(open chain access apis)的基础。
所有的链适配器必须支持这个级别所有的api。
第二级别:普通链数据api。该级别的api组支持对区块链数据的基本的访问,将底层的区块链按有限状态机来对待。
链适配器必须支持该级别所有的api,不过,也可以实现一个不同的功能组。
第三级别:原生链api。该级别的api组暴露了底层区块链协议的原生功能。链适配器是否支持该接别的api组是可选的,反正你要是能利用起来的话肯定是更好呗。
链适配器(chain adapters)
OCAL使得ab支持多种区块链协议。应用程序开发者可以从多个不同的区块链、节点类型和部署类型中自由选择。这些功能的使然都归功于链适配器。
链适配器像一个设备驱动一样,将底层不同的区块链协议都转换成统一的api。有些链适配器的实现需要你包含链上和链下的实现。基于OCAL已经实现的的api组,链适配器会被归为上述三个级别中之一。
ab计划首先实现比特币、以太坊和超级账本的链适配器,然后开源代码,大家可以按需自定义链适配器。ab也会
链适配器市场(chain adapter marketplace)
就是链适配器的市场,大家可以贡献,贡献者能得到使用者的奖励。
视区块链为服务(relationship with blockchain as a service)
过去一年,好多云提供商领头者提供一种新的平台服务叫做baas。bass给用户提供一个私有链或公开链,通常已经优化部署或节点类型。
IBM是最早的先行者,提供了超级账本的服务。ms、azure、amazon都提供。
现存的baas都可以很好的兼容ab。他们都简化了针对普通用户的部署,ab简化了开发人员对区块链开发的环境搭建和部署。
第一阶段我们想把ab跟baas(比如aws)整合,这样一来用户就更容易进行ab开发了。
设计原则与灵感(design principles and inspiration)
为了设计OCAP,我们调查了很多现有的各种方案、跟很多开发人员沟通、从计算机和数据库的发展史里借鉴。
OCAP的结构的灵感就来源于数据库中的开放连接设计(open connectivity)
回看数据库系统和应用程序的开发跟区块链有很多相似的地方,区块链在一个系统中的地位就相当于数据库的地位。可以很公平地认为区块链扮演着分布式的数据库的角色。大多区块链本身建立在数据库的基础之上,包括比特币和以太坊。
基石(Blocklet)
基石是ab的核心。除了是应用程序协议,更是组成ab的一个软件架构。ab平台构建在一系列的基石之上。
OCAP允许基石与底层的区块链通信。分布式发布订阅网关允许基石与用户浏览器和移动端app中的客户端代码进行通信。
总之,基石是整个系统的最核心的组件。
<此处有图>
微服务架构(micro-service architecture)
微服务架构与区块链应用程序是完美的匹配。作为SOA的一个变种,微服务架构将应用程序组织成松耦合的服务。每个服务都是细粒度的且对不严重依赖协议。将应用程序解构成多个小服务有助于功能模块化,同时使得应用程序更容易被理解、开发和测试。
ab正是设计成通过基石技术来克服区块链固有的局限的事件驱动的微服务。基石通过OACP与底层的区块链进行通信,使得在安全的访问外部数据的同时保证数据的完整性。
无服务计算(serverless computing)
无服务计算是一个云计算执行模型,在该模型下云提供商动态的分配着机器资源。大多无服务提供商提供计算运行时或者faas(function as a service)平台,只执行应用程序的逻辑而不存储应用程序的数据。
无服务计算模型跟区块链很合拍,大多数基石可以实现成一个无服务的程序。通过aws、azure等来提供无服务执行环境。
需要注意的是微服务架构和无服务涉及不同级别的抽象。可以利用无服务计算实现微服务完美嵌入微服务架构中,开发者也可以用无服务计算实现其他目的,并不总是非得用无服务计算来进行微服务的实现。
基石类型(blocklet types)
基石天生有弹性,可以用于开发各种各样的应用程序。这部分描述一些常用的基石类型。
链下逻辑(off-chain logic)
由于基石的微服务原生性,它除了可以访问区块链还可以访问数据源。例如,基石可以连接数据库、外部的restful api等其他数据源。基石可以用于开发各种应用逻辑,即使该逻辑跟区块链没关系。
现实生活中,去中心化应用程序总是离链运行一些逻辑组件。基石提供一整套应用开发方案,所以工程师不必再用不同的框架来对付应用程序的不同的部分。
链下和链上逻辑(off-chain and on-chain logic)
很多情况下,应用程序业务逻辑既要处理链上的也要处理链下的,而且需要连接对应的数据。例如,链上代码不能访问外部数据和事件,比如时间和市场。调用链上智能合约或区块链外部的代码或数据会打破信用的高墙,且降低交易可信度。这些情况下,链下基石扮演着链上和链下逻辑的桥梁,将所有的业务逻辑粘合起来。
资产和资源处理(assets and resource handling)
应用程序通常需要处理资源和资产,例如照片、视频、音频和文档。由于区块链并不是为处理大量数据而设计的,典型的区块链应用程序会用链下方案来处理这些资源和资产。传统的方法是利用aws s3,或者更去中心化的方案IPFS。
无论你采用什么方法,基石都有能力去跟你资源和资产的存储系统进行通信。有的时候,资产需要被映射在其链上代币或其他标示,或者通过区块链上的记录来验证。而基石正是这些逻辑的完美的家。
智能合约(smart contract)
基石通过OCAP安全地与链上代码进行通信,通信的同时可以使你在实现高性能的智能合约,同时还能维持信任高墙验证交易的可信性。
链上和链下的要运行的逻辑量完全取决于工程师。除了一个极端,工程师可以简单地视区块链为状态机,而把大部分逻辑放到基石中。另一个极端,工程师想开发一个复杂的、纯链上的合约,在这类合约上基石仅仅像stub一样,触发和监控链上执行的活动。
神谕(Oracle)
在基石的设计中,神谕是智能合约里的一个类型,它用外部数据源作为事件触发条件。基石中实现神谕很简单。
基于基石的设计会强迫工程师在设计和开发阶段去考虑链上逻辑和链下逻辑的分离。这样在不妥协安全和信用的情况下,提高这些阶段的效率。
基石的实现(blocklet implementation)
在ab开发的第一个阶段,基石的开发和测试都会基于aws。
由于基石本身是一个应用协议和架构,所以可以用不同的语言和架构来实现。不过第一版应该是nodejs和go。
基石组件(blocklet component)
之前说过了。
去中心化发布订阅api网关(decentralized pub/sub api gateway)
基石有一个分布式消息系统支持发布和订阅功能,像api网关一样。ab的网关使用的是去中心化的设计和安全通信信道。应用程序可以在浏览器和移动端app中运行,快速响应用户。
<此处有图>
api 网关(api gateway)
api网关是微服务架构中重要的一环。它为复杂的子系统提供api接口,为用户屏蔽了地层复杂的实现。在ab中所有的功能都是基于基石的,基石除了直接与客户端通信还会与api网关通信。
网关支持多种网络协议。
<此处有图>
发布和订阅(pub/sub)
发布和订阅是消息流通的一个方式,发布者只管按类发布消息不管谁接收,如果有订阅者的话,只会接收到它订阅的消息,其他的消息一概无视,也不管谁发布的。
发布和订阅模式是消息队列机制的子集,通常是一个单独的面向消息的中间件系统。大多消息系统都支持发布/订阅和消息队列。这种模式使得网络伸缩性增强,且拓扑结构更好整。
去中心化和安全(decentralized and secure)
我们使用了完全的去中心化设计来实现和简化云服务。ab的api网关可以拆箱即用,做到了0配置。同样也支持基于域名的寻址、集群和更安全。
<此处有图>
去中心化的媒体和资产(decentralized media and assets)
基石可以通过其他系统来处理媒体资源,也可以帮你创建链下数据,或者用链上数据验证链下数据。当前,大多数去中心化的应用程序都采用链下逻辑来处理数据。比如中心化的解决方案aws s3或者azure,或者去中心化方案ipfs或swarm。
相比造轮子,我们更鼓励应用开发者直接采用最合适的现有方法来处理媒体资产。我们预计大部分应用程序开发者都会使用中心化方法,因为是最简单且最成熟的。此外,在大多数应用程序中,媒体和资源和区块链并没什么必要的联系,但也不乏有开发者会采用ipfs或混合方法。ab允许你决定自己最合适的方法。
目前ab采用中心化的方案来处理媒体资源,未来会采用去中心化方案。
客户端库和框架(client library/framework)
ab为客户端应用程序的开发提供库和框架。这些库包括支持web、ios和android平台。使用Electron框架,web版可以很轻松的打包成桌面应用,给windows和mac使用。
对于应用程序开发而言,这是一个重要的优势。工程师们可以把更多的经精力放到客户端和用户体验。ab使得开发dapp和传统的方式一样简单。ab的设计支持开发者选用喜欢的框架和工具,这样他们就可以利用社区的资源和支持。
<此处有图>
algorand共识算法(algorand)
ab是第一个在生产中采用algorand算法的区块链。
algorand是由micali发明的,2012年图灵奖的获得者,micali是密码学和区块链技术的先锋。当micali看到比特币的pow的时候,认为应该有所提高,algorand就是提高的方法。
<此处有图>
algorand随机选取一小组的节点,用来产生下一个区块,然后按区块交易的百分比来获得奖励。这种方式一定不会被黑客所改写。小组节点的选取是由hash算法来进行的,所以不会被人为选取。micali建议采用伪随机数生成器,该生成器是预先指定的,并且你想用多久用多久,直到选定了委员们。小组通过重订的拜占庭协议来决定下一个块的产生,小组的领导是随机选取的。
ab在很多地方使用algorand算法和它的变种。例如,我们使用algorand算法来选择基石从哪个智能合约开始执行,同样用于给原生代币提供动力的高性能区块链。
代币经济和服务(the token economy and the service)
ab之所以独特不光因为api和库,还因为拥有丰富特性的鲁棒平台。此外,服务都是运行在自由的原生代币系统之上,该系统由最新的区块链技术驱动的。
arcblock代币(ABT,the arcblock token)
abt是ab平台原生的。为了支撑高性能的交易,我们建立了一个优化过的区块链,致力于服务ab自己的代币系统和公共账簿(Public ledger)。设计的目标是要实现每秒交易数10万多,对于大部分应用程序来说已经很足够了。
arc是被设计用来在不同的场景下使用的通用代币。在ab中,arc基本的价值是支付ab系统的使用。像云计算服务,arc用来支付服务的使用。
<此处有图>
比特币和以太坊用户需要对每次的交易交付手续费,而ab是让应用程序的提供者(开发者吧)为用户交纳交易费用,这种方式极大的提高了用户体验。ab要求开发者们锁定一定量的arc代币,以防一些紧急服务任务不时之需。
ab代币和erc20代币兑换是1:1的,这简化了代币兑换,也允许开发者在以太坊社区中进行开发。应用程序开发者可以利用建立在erc20代币上的生态系统的优势来进行高性能和全功能的代币服务。
矿工们(miners)
ab允许矿工运行ab平台服务,加入到所有的服务网络中。矿工在ab社区中的角色跟比特币和以太坊是很不一样的。
资源矿工(resource miner)
资源矿工贡献自己的计算资源给ab系统。可以是作为云计算的一个节点,也可以是自己作为主机的计算资源。
在ab的设计中,矿工的资源可以自用可以分享,决定权在矿工自个儿,随时可以切换。
组件矿工(component miner)
组件矿工贡献软件组件给ab系统,比如链适配器、基石(blocklet)组件或者随时准备部署的应用程序。组件可能是打包好的代码,可以被其他的应用程序重用和部署;也可能是一组仅仅通过基石接口进行暴露的服务,比如基于深度学习的图像识别的服务可能在哪儿运行着,但却以基石包一层来提供服务,这样其他应用程序就可以调用这个服务。
智能合约规定了当一个组件由多个矿工来共同完成时劳务费该怎么分配。
ab市场(the arcblock marketplace)
ab市场是运行在ab平台上的一个dapp,该dapp像每个市场一样提供列表、搜索、评估、使用和可重用组件排名。
市场也在维护着组件质量和其开发者的名声的反馈,还有其它信息,这些信息帮助用户来评估可重用组件。市场里所有的信息都在公共账簿(Public ledger),该账簿由ab的区块链技术来提供技术支持,以保证公开透明可信。
代币基础服务(token foundation service)
代币基础服务是由基石组件组成的。
ab代币全部是由基石来完成的,代币基础服务也是由基石power的,而且代币经济服务(token economy services)是由基石构建快(blocklet building block)组成的。应用程序开发者可以使用基石很轻松地处理由代币触发的事件和搞定复杂的业务逻辑。ab中的分布式账簿可以确保你的代币的安全、高效且可靠。
像其他基石组件,为代币基础服务提供功能的基石也可以升级,也可以通过区块链社区进行扩展。
应用程序代币(application token)
在ab中,开发者可以基于原生代币进行代币的个性化定制,前提是基于原声代币的所有特性。
ab可以很容易地创建个性化经济。代币不仅是加密数字化货币,他们可以代表很多东西,从用户身份、证书和文档到现实生活实体,ab可以是你在你的应用程序中代币(动词)你所有。