三层式LINK区块链技术构架大公开

不同于一般以区块链技术为主的作法,LINE区块链在设计之初就为了发展dApp区块链应用而设计,LINE首席技术官朴懿彬更以服务导向的区块链(Services-oriented Blockchain)来形容自家的区块链技术LINK。她希望,LINK可以成为各种dApp区块链应用或服务的大平台,尤其以用户贡献内容的服务为主打。

早在9月,LINE就先发布了两个示范性dApp应用,一个是问答平台Wizball和未来预测票选服务4Cast。Wizball上线不到三个月,累积问题数已经接近3万题,回答数也高达了11万次。

LINE也在今年11月的东京开发日大会中,由LINE区块链实验室代币经济平台负责人Toshimasa Nasu披露了自家区块链平台构架。

Toshimasa Nasu指出,LINE想要实现的代币经济,就是要解决现有奖励平台、奖励机制的问题。

例如,常见的奖励平台不一定能直接对用户给给奖励,有时反而是平台获益较大,另一个问题是这类系统非常复杂,信息透明度也不够高,例如服务供应商如何发布奖励,承诺发布1百万点是否完全发出?点数规则为何?过期与否如何关注?点数规则变动了,用户如何得知?万一点数规则不公平,用户又何从对抗或抗议等问题,都是因为点数机制不够透明所致。“因为点数平台掌握在平台供应商手上,没有一套透明化的公开机制。”他解释。

就连LINE自己已有一套非常成功的点数系统,光从2017年9月到2018年8月期间,已经发布了328亿多个LINE Point点数,也有一套对应的商业模式,可以作为广告营销活动之用,也是LINE重要营收来源之一。不过,但Toshimasa Nasu认为,LINE Point平台还不够好,区块链技术才会是奖励机制未来更好的选择,不但可以直接奖励用户,又容易在线上,或甚至是线下流通与交换。

LINE的区块链称为LINK区块链,包括了三层架构,分布式应用的dApp层、中间给开发者用的LINK框架,以及实际的区块链底层LINK Network。
因为区块链可以记录所有的点数,而且点数发布的历史记录可以开放给所有人读取,所有的奖励点数也可以由这个区块链网络上所有的人共享,就算点数被偷了,通过区块链技术很容易可以关注其下落,就算有人篡改点数记录的数据,只要和历史数据比对发现不一致,就可以揪出篡改的人。“透明化和安全是LINE选择区块链来打造代币经济的原因。”他说。

不过,现行的区块链技术仍有不少上手使用的瓶颈,他解释,对用户来说,得要先创建钱包,并且要妥善保管那一串很难记忆的复杂私钥,要探索有哪些相关服务也非常困难。而对开发者而言也有不小的挑战,要兼顾安全又有扩展性的区块链服务,需要深入了解技术,还要创建适当的网络安全测量机制。“这些都是LINK区块链想要解决的挑战。”

也因此,LINE采取了三层式的LINK区块链技术构架,第一层是去中心化的dApp应用层,也可说是服务层。第二层是一套可供开发者快速打造自家区块链dApp应用的LINK框架,可以提供所需的常用API模块。最下层是LINK Network底层,也就是一般所谓的区块链技术层,负责产生内存块,以及验证交易时的内存块,核心是共识算法和一套高度扩展性的构架。

LINK框架与底层运行构架

LINK框架中包含了开发dApp常用的组件,可以用来调用底层LINK Netwok进行内存块交易处理,LINK底层主要由负责共识验证的C-Node节点和查找专用的只读节点S-Node组成。

在第一层dApp层中,所有的dApps应用都是分布式的应用程序,这些应用部署在各自开发者或运维者的环境中,但这些dApp的核心必须使用来自LINK提供的智能合约(Smart Contract),来定义LINK点数交换的规则。换句话说,LINK智能合约就是dApp的核心业务逻辑机制。

而且,Toshimasa Nasu强调,dApp的智能合约必须公开,让所有人可以看到。智能合约中也必须提供一些基本的信息,包括服务商的钱包中持有多少点数,这些点数要如何提拨给用户等规则。LINE目前也提供了一个线上区块链信息平台LINK Scan,可以直接浏览所有的智能合约信息,如4Cast和Wizball这两个示范性dApp的合约都在站上公开可查找。

LINE也提供了一套智能合约模板,可供开发者直接使用。开发者设计智能合约不需要专用的开发语言,可以使用Python就能设计,也能直接调用LINK框架来创建智能合约。

而中间层的LINK框架,则是一套公开可用的API框架,提供多种不同的API模块,例如可用来检查钱包账目或内存块信息的API,也可在用户一登录dApp时,就自动创建钱包,并设计了一套私钥安全保管机制,来降低区块链应用的开发门坎。不过,LINE目前还没完全对外开放dApp的上架。

目前LINK框架包括了LINK Scan UI组件、LINK Admin/TDK UI组件,这是两个可供设计LINK区块链信息关注或管理界面的API组件,另在LINK API模块中则有内存块数据模块、联机模块、钱包模块、Replayer模块、前端API模块和查找模块。开发者可以通过这些API就足以访问底层区块链来进行交易或创建内存块,不过,Toshimasa Nasu表示,不一定非得通过LINK框架才能访问底层LINK区块链,开发者也可自己串联底层区块链的组件。LINK框架只是将dApp常用的API功能打包成一套框架。LINK框架也采用了API开发常见的gRPC和JSON-RPC协议。

“借助dApp和LINK框架层的设计,我们想要创造一个用户容易探索服务,服务商容易开发dApp应用的平台,才称其为服务导向的区块链。”Toshimasa Nasu解释。

进一步来看LINK区块链的技术底层LINK Network,在LINK区块链中,包括了区块链本身,以及周边的多种服务监控机制。LINK Chain采用了LINE的IMON监控系统,另外也采用了撑起每天2,500亿则信息的关键平台Kafka来提供区块链上所有内存块的探索和关注,也就是LINK Scan平台,“这是确保LINK透明化的关键机制。”Toshimasa Nasu强调。

另一个LINK区块链特别的设计是,Toshimasa Nasu指出,LINK利用区块链技术来创建和验证内存块,而内存块交易信息则是记录在LINE惯用的开源内存式数据库Radis和分布式数据库HBase中。

在区块链的共识验证构架上,LINK设计了两种运算节点,一种是负责执行共识算法的C-Node节点(Consensus-Node),所有内存块创建或验证都是通过C-Node节点,另外会从C-Node节点中轮流指派特定节点担任主要节点的角色,称为C-Node Leader。C-Node节点集群自有一套L7负载平衡机制来交付广播信息。

LINK另外还有一类节点,称为S-Node(Sync-Node)。Toshimasa Nasu解释,这是一般传统区块链没有的节点类型,S-Node节点不是用来负责验证或产生内存块的节点,而是专供查找用途的只读节点,S-Node会自动同步取得C-Node完整的内存块数据副本,但只提供查找而无法修改内容。

LINK设计参考了LINE过去提供大量即时通信服务的经验,信息查找的需求,远高于信息写入的需求,而LINE团队设计区块链时,特别强调LINK区块链的透明化设计,这类节点也是专供LINK Scan探索服务之用的节点,而不需要向C-Node验证节点来查找信息,而影响了验证节点的执行性能。

LINK区块链主链与周边服务

除了共识计算用的C-Node和查找专用的S-Node节点之外,LINK区块链也采用了自家IMON监控系统,以及撑起每天2,500亿则信息的关键平台Kafka,来提供区块链上所有内存块的探索和关注,内存块交易信息则是记录在LINE惯用的开源内存式数据库Radis和分布式数据库HBase中。

在共识算法上,LINK采用了1999年提出的实用拜占庭容错算法(Practical Byzantine Fault Tolerance,简称PBFT)。Toshimasa Nasu解释,LINK优先考虑验证速度,才选择PBFT。这也是现在追求交易速度的区块链技术,惯用的主流共识算法之一。

在PBFT共识算法中,会有两种角色的验证节点,Leader(主要节点)和Replica(副本节点),在LINK中,所有C-Node都可说是Replica节点,并从中指定一个C-Node担任Leader节点的角色。

PBFT进行内存块共识计算时,分成三个阶段,包括Pre Prepare预先预备阶段、Prepare预备阶段和Commit确定阶段。首先,当有内存块交易需求的用户(也就是dApp)先向Leader节点提出内存块交易需求,Leader节点就会进入Pre Prepare阶段,先产生一个临时内存块,并将这个内存块的信息,广播给所有副本节点。

接着就是进入Prepare阶段,这就是内存块验证的阶段,每一个C-Node副本节点会确认这个内存块的创建过程是否正确,验证确认后,这些C-Node再互相发送验证确认的信息,广播给其他C-Node。

一般在PBFT算法中,在一定时间内,一个C-Node收到全体验证节点中的三分之二的C-Node节点送来的验证确认信息后,就可以将这个内存块视为最终的内存块,并且进入最后的Commit(确定)阶段,这时,这批C-Node再度送出确定这是最终内存块的信息,并再次广播给其他人,同样的,一个C-Node收到超过三分之二的节点送来“最终内存块”的确定通知,代表多数节点都同意(创建共识)这是定案的最终内存块,这就完成了整个PBFT共识计算,成功地创建了一个内存块,而这个共识计算中的“最终内存块”就是那个完成的正式内存块,各C-Node就可以将其记录下视为是区块链上的正式内存块。最后再由Leader节点,将这个正式内存块的信息,回复给提出内存块交易请求的用户。

另有一个分散运算的设计是,LINK不会将主要节点集中在少数的C-Node上,“一旦这个Leader节点产生的内存块数,达到上限,或者是无法再产生节点(例如宕机)后,就要换人担任Leader节点,采取轮流担任制。”Toshimasa Nasu解释。

为了日后扩展所需,在C-Node内,也采取了模块化设计构架,包括了四大模块,用户界面模块(支持REST和jsonRPC)、消息队列(Message Queue)、网络界面(还细分成内部服务和外部服务),另外在C-Node内部Channel设计上,还分为LINK核心模块和LINK服务模块。

LINK核心包括了Peer管理机制(Peer Manager)、内存块管理机制(Peer Manager)、共识管理机制(Consensus Manager)和广播管理机制(Broadcast Manager),而LINK服务模块则有基础币管理机制(Base Coin Manager)、STEP管理机制(STEP Manager)、治理管理机制(Governance Manager)和LINK合约管理机制(LINKContract Manager)。

不只内存块创建或交易是通过PBFT共识计算过程,在LINK中,智能合约的更新也是通过同样的PBFT共识计算过程,但又与内存块的共识处理过程略有不同。

Toshimasa Nasu解释,通过PBFT更新智能合约是LINK独特的设计,首先只有在白名单中允许的dApp,可以直接将要更新的智能合约打包成一个压缩文件,(不用先由Leader节点产生暂时内存块的作法),将合约档送到C-Node进行共识计算,同样经过三阶段验证(Pre Prepare、Prepare和Commit三阶段),最后可以产生一个共同接受变更的新版智能合约。

不过,因为智能合约是一段代码,因此在Prepare验证时,还得把压缩后的合约解开,产生临时性的智能合约和对应的执行环境,来进行内存块交易的合约试算验证,速度上比原本内存块验证还要多费上一番功夫。

他估计,等到LINK框架开放给所有人之后,就会进一步把LINK区块链技术公开,让第三方也可以自己创建一套LINK区块链,也可以让LINK区块链成为一套联盟链,有一个主要的根链(Root-Chain),同时也可以有多个子链(Leaf-Chain)构架。这个联盟链的构架,Toshimasa Nasu称其为LINEAR NETWORK。不过,在开发日大会上,LINE还没有披露子链如何与根链之间串联的机制细节。

开发者如何用LINK框架来执行dApp?打造dApp的管理者,要先用LINK框架创建管理者帐号,也同步就会创建了管理者钱包,接着是帮自家dApp注册,同时也要创建这个dApp所要使用的智能合约,并付款来取得一批LINK币(或提拨LINK币),以供智能合约支付给用户之用,管理者这时也会取得已付款的帐单。

另外,管理者需在管理者钱包中,设置一个可以访问钱包的白名单,目前也允许多位管理者帐号共同管理钱包和dApp。

除此之外,LINK框架还提供了“运维者”的角色,可以由管理者创建运维者数据,并有对应的运维者钱包和运维者钱包白名单。

用户得使用自己的LINE帐号,才能登录各种dApp应用,这时LINE框架会自动创建用户的钱包,当用户在dApp上的活动符合奖励规则时,例如在Wizball上发言可获得LINK点数奖励,就会由dApp进行LINK点数转账,通过LINK框架调用智能合约,并检查这个dApp是否符合钱包的白名单(一个管理者钱包可供多个dApp共享),也同步检查运维者钱包,最后再依据合约判断要转出多少LINK币到用户钱包中,或是否要分润(或付费)多少LINK币到运维者钱包中。

所有这些帐号管理、交易的记录,都可通过LINK Scan UI组件来关注,开发者可以了解dApp调用LINK框架来访问LINK Network完成指令的每一个过程。

Line已经在8月上线了LINK的主链,Toshimasa Nasu表示,预计在12月底在内部上线LINEAR Network构架,以便在明年第一季时,可以开放第三方伙伴上传各自的dApp,“明年第二季时,则会全面开放LINK的dApp给所有人。”这是LINE首度公开的LINK区块链未来发展进程。

到了明年,dApp不只可以通过LINK框架访问底层链LINKEAR Network,也可以直接调用底层的节点功能,例如直接查找S-Node上的数据,或者,dApp开发者也可以自己部署一套LINK子链的区块链,让dApp直接读取子链上的信息。

Toshimasa Nasu表示,目前LINK区块链仍是一套部署在LINE内部的私有区块链,来进行各种优化设计,一但完成优化之后,会把LINK底层区块链技术公开。“LINK一定会开源,放到GitHub上发布代码。”他强调,只是目前还没有确切的时间表。

LINK将成联盟链构架

LINK区块链未来将成为一种联盟链构架,dApp不只可以通过LINK框架访问底层链LINKEAR Network,也可以直接调用底层的节点功能,例如直接查找S-Node上的数据,或者,等到LINK区块链开源后,dApp开发者也可以自己部署一套LINK子链的区块链,让dApp直接读取子链上的信息。