41

OFGP:开源网关协议实现跨链价值流通

 5 years ago
source link: http://www.huoxing24.com/newsdetail/20181031134459442044.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

U3Yraqf.jpg!web

(普罗斯旺的收获,梵高)

蓝狐笔记之前有过多篇跨链的文章,跨链是区块链行业最重要的领域之一。互联网的信息流通是信息传递,可以拷贝、粘贴,自由流通,不会有什么问题。但区块链涉及的是价值的流通,价值在不同的链之间自由流转,首先要解决双重支付的问题,否则会引起价值混乱,比如一份钱可以重复使用,比如造成通货膨胀。这会让价值本身失去意义。

但是跨链又是未来区块链形成真正生态的重要支撑,不同链之间的孤岛问题必须得到解决。这让跨链成为绕不过去的问题。一旦实现不同链之间的资产自由流通,可以释放出不同链的潜力,尤其是当实际应用场景产生,资产可以自由兑换和支付,可以实现用户体验极佳的区块链世界。就像你去欧洲旅游,直接用人民币而不用欧元购买咖啡的无缝体验一样。

目前跨链的解决方案有了不同的探索,包括中继、侧链、哈希锁定、公证人机制、分布式私钥控制等。比如中继模式(Relay),以BTC-Relay为例,简单来说就是通过在以太坊上部署Relay合约,第三方提交btc区块头。区块头包含btc交易数据,Relay合约则校验区块头合法性。该模式的主要问题是第三方提交区块头会涉及到大量手续费。假如调用Relay交易无法覆盖该手续费,从成本角度来讲较难持续。

目前来看,已有的这些侧链模式、中继模式、链下状态通道模式等,都比较难用完全去中心化的方式来解决跨链问题,且需要较长的时间落地和实践。

最近蓝狐笔记关注到OFGP的跨链解决方案,它是通用的去中心化的网关系统,它采用了联盟链的方式来推动跨链价值流通,就目前阶段,落地性较好,也是蓝狐笔记期待能快速落地的一个跨链方案,值得关注。

OFGP是开放联盟网关协议,英文称之为Open federated gateway protocol for pegged sidechain,它是侧链模式的跨链,也是跨链解决方案的一种。侧链模式主要原理是双向锚定方案:主链token会被发送到主链的一个地址,token被锁定,该地址代币由侧链的最小交易证明(SPV)解锁。OFGP通过去中心化的网关协议,让跨链价值转移变得方便。

OFGP从何而来

OFGP是由iBitcome发布的开放联盟网关协议,它的目标是希望实现不同链之间的价值转移。iBitcome是一款去中心化的钱包。去中心化钱包发展的重要路径之一,就是跨链钱包。所谓的跨链钱包就是不仅可以实现不同链资产的存储和转账,还可以在钱包中实现币币交易和跨链价值转移。去中心化钱包,最后还可以把各种不同的应用接入进来,形成一个类似于去中心化应用商店,用户在不同应用之间可以自由实现跨链的资产转移,最终形成一个价值自由流通的生态系统。

从iBitcome的发展路径来看,它应该不仅仅有钱包的功能,还希望打造区块链的生态系统。目前看,iBitcome原生接入了DEx.top去中心化交易所,实现移动端的币币交易功能。

按照这个发展路径,它顺势开发出了OFGP开放联盟网关协议,跟DEx.top合作,实现把BCH链上资产转移到以太坊,以太坊资产也可以转移到BCH链。它是通过BCH-WBCH-ETH的方式,通过锚定主链资产,发布ERC-20的侧链资产WBCH,然后实现跟以太坊之间的资产的互通。

当然OFGP是开放联盟网关协议,其他主体都可以使用OFGP协议来搭建自己的去中心化跨链交易服务,不仅仅是iBitcome钱包,其他钱包或者交易所或其他区块链项目都可以按照自己的需要来搭建。

那么,OFGP到底是什么?

OFGP是去中心化的开放联盟网关协议

OFGP是去中心化的通用网关协议,主要在主链和侧链之间实现价值转移。协议的共识机制是Braft协议,这在后续会阐述。通过Braft共识协议,OFGP可以将主链资产转移到侧链,资产在侧链上应用于各种实际场景,可以有游戏、房租租赁、借贷、社交、打车等高频场景。

在某种意义上,通过跨链方案,也在一定程度上解决了主链扩展性的问题。通过把资产转移到侧链,既可以保证资产的安全,也能通过侧链的更高的吞吐量实现更快速的交易。

OFGP的去中心化网关协议有哪几个值得关注的特性?

1.可实现多公链价值互通和生态构建

运用OFGP协议可实现多个公链之间的价值流通和生态构建,比如ETH、BTC、BCH、ADA、EOS、Tezos等。

比如BCH和ETH公链之间不仅可以价值互通,还可以实现用户的互通,实现场景用户的扩展。也就是说,使用OFGP协议有利于构建跨公链的生态体系。

总之,OFGP通过价值连接,可解决公有链的孤岛问题。

2.去中心化的网关协议

这里很重要的一点就是OFGP是去中心化的协议,网关系统是分布式的,公开可验证,完全透明,可信任。

它不属于任何一方,是通用的。任何机构或个人都可以搭建自己的联盟网关。网关不是通过中心机构来担保,而是通过共识机制实现可信任的结果,保证资产的安全。

目前Mallow是第一家运行OFGP的多节点网关联盟,所以也称之为创世网关联盟。由于OFGP是开放的联盟网关协议,你也可以无须许可即可利用OFGP部署自己的网关联盟,完成主链资产抵押认证,把价值传递到侧链,实现价值传输。

3.用户对资产具有掌控权

用户可以将资产自由地从主链移入侧链,或从侧链转回主链,拥有资产的完全控制权。

4.提升了扩展性

通过把主链资产转入侧链,应用于侧链更丰富的交易场景,实现了扩展性。

5.联盟网关模式

在传统的侧链架构设计中,一般并没有独立的网关设计。它主要是通过侧链上的节点自身完成多重签名,大多数的侧链都是针对单一主链设计开发的。

OFGP针对这种现状,构建的是联盟网关,它一方面通过维护主链和侧链SPV节点来对主链和侧链的交易进行验证,一方面采用M/N的方式进行多重签名投票,保证了资产的安全性。

OFGP这样设计的好处是它可以接入更多的公链并实现它们之间的价值流通。传统的侧链要求主链代币持有人对侧链团队有充分信任,这种模式不利于侧链的发展。OFGP的联盟网关则通过让主链信任的节点组成联盟网关来执行签名操作,实现了资产转移的安全和可信。

OFGP网关中有签名者(signer)和观察者(watcher)两个不同的角色。主链信任的signer节点执行签名,观察者监控不同类型的主链和侧链的出块情况。这种情况下,侧链开发者或其它第三方开发者可以根据协议做简单适配即可接入联盟网关,获得更多主链信任。

为了实现可靠的安全,OFGP采用了Braft共识机制来构建联盟网关,实现签名、锁定、解锁等操作的真实、透明、可追溯、不可篡改。

也就是说OFGP一方面降低了侧链的跨链价值流通门槛,另一方面也获得更多公链的支持,可以支持更丰富的交易场景。

那么,具体来说,OFGP是如何架构的,它的基本跨链流程是什么样的?

OFGP的基本跨链流程

要想理解OFGP的跨链协议,首先来看它的跨链基本流程。

OFGP协议负责主链和侧链之间的协议通信。它要实现把主链资产转移到侧链,在侧链上发币;也要实现把侧链资产回兑到主链。另外,还有很重要的一点就是,在双向锚定过程中保证资产安全和汇率合理。

OFGP开放联盟网关协议有两个关键角色:Signer、Watcher。

Signer主要负责资产从侧链转回主链的回兑交易签名,还有网关的共识协议,是开放式联盟网关的核心角色。Watcher则主要负责网关和链之间的交互,监听链上的交易信息,同时适配不同的主链和侧链。

具体流程来说,用户要完成一笔跨链交易,首先用户把主链资产发送到主链上的特定地址。该特定地址是多重签名地址,由去中心化网关生成。多重签名地址的好处是,可以保证资产被安全的锁定在该地址上。因为只有某一个或几个网关成员无法完成这笔资产的转账,根据多签算法而定,需要达到一定比例的相关成员签名才能解锁该资产。

一旦用户把主链资产发送到特定地址后,监听链上交易信息的watcher就会监控到该主链交易,然后它会把这笔交易的信息发送给Signer,信息包括了主链交易的tid、特定地址的address、交易金额、侧链相应的充值地址。

在收到信息之后,signer会通过tid来验证交易的真实性和准确性,一旦确定交易不会被撤销,signer会在联盟链上保存这笔跨链交易的信息。此外,signer还会向侧链发起请求,要求发币。这样完成了资产从主链向侧链转移的过程。

举个例子,代币从BCH转移到ETH的基本流程:首先BCH链上向特定的多签地址转入一定数量的BCH,然后相应的网关会到ETH链上的合约里面给特定账户进行充值一定数量的代币。仔细来说,leader(Braft算法的角色,后面会提及)创建ETH的交易输入,广播给网络中的所有节点,节点收到签名请求,对交易内容进行校验。如校验通过,则会调用合约接口,发起充值交易。节点签名后去ETH链上监听交易是否完成,如完成,则创建一笔网关内部交易,记录两条公链的交易信息。

那么,如果用户想把自己的资产从侧链转移到主链呢?用户首先需要在侧链发起回兑请求。发起回兑请求之后,会在侧链上完成燃烧代币的交易。这个时候watcher把监控到的信息发送给signer,signer会在侧链验证该交易是否真实和准确,在确定交易不会被撤销后,通过Braft共识算法来达成共识。如果共识达成,则signer会发起主链交易,解锁用户的部分代币。同时,Signer会在链上保存相关信息。

举个例子,从ETH把代币回兑到BCH的基本操作:首先在ETH合约上进行代币燃烧,相应的网关会在BCH上发起一笔从多签地址到用户地址的交易。具体来说,leader创建一个待签名的BCH交易,广播给网络中的其他节点,节点收到签名请求,对交易内容进行校验,如校验通过,则签名并把签名广播给网络中的其他节点。一旦,签名数达到要求,则发送交易到BCH链。同时,节点还从链上监听交易是否最终被确认,一旦交易确认,会创建一笔网关内部交易,记录两条公链的交易信息。

OFGP协议要求主链能够支持多重签名的地址或合约。比如BTC、BCH等链是原生支持的,ETH等通过智能合约也可以实现多签的合约支持。对侧链的要求是,Signer能够控制发币和销毁代币的操作,为了保证资产安全,也需要加入多重签名的验证。

jaeayue.jpg!web

(整体流程图)

总的来说,就是在主链上锁定一定数量的代币,然后根据锁定代币在侧链发行新的代币。反过来,就是侧链上进行回兑,销毁一定数量代币后,在主链上解锁相应数量的代币。这里涉及到的汇率,不管是从主链到侧链的发币,还是侧链回主链的回兑的汇率都会由去中心化的网关来确定。主链和侧链通过去中心化网关实现双向锚定。

OFGP的 独有 共识机制:Braft

OFGP的共识机制是基于Raft上改进的算法,称之为BFT RAFT算法(Byzantine Fault Tolerant Raft),简称为Braft算法。

Raft算法是基于leader选举的一种协议。Raft有leader、follower和candidate三种角色,这些角色是可以相互转换的。

通过加入BFT的改进,Braft可实现网关多个节点的一致性,同时也提供容错性,包括一般性的网络故障,如节点不能工作,以及拜占庭故障等。目前的设计是在节点数量为3f+1的网络中,失效节点数为f,网络仍然可以保持正确运行。

Braft节点也有跟raft类似的leader、follower、candidate三种角色,同时它把时间划分为term,而不是系统时钟。每个term期间从选举leader开始,选出leader后进行请求消息同步。如果当前term没有可用的leader,会进入新的term。

不同节点之间通过RPC进行通信,其中有两个核心的RPC:RequestVote和AppendEntries。RequestVote RPC由candidate节点发送给其他节点,请求其他节点为自己投票。如果某个candidate节点获得了多数票,则该candidate角色转变为leader角色。AppendEntries PRC则是由leader节点发送给其他节点,一是提供心跳机制,证明其还在工作;另外就是用户复制log。

Braft共识算法的核心之一是选举leader,那么leader是如何选出来的?Braft的选举跟raft算法类似,当leader宕机或广播假消息,节点会对leader进行校验,同时广播校验结果。当所有节点收集到其他节点发过来的异常校验结果,一旦收集的节点数达到f+1,就会触发leader的选举。触发leader选举后,candidate开始向其他节点发送RequestVote RPC的投票请求,节点获得足够的票数(2f+1),candidate即可转换成为leader角色。为验证合法性,新leader当选后需要向其他节点展示自己的投票信息。

当leader选举完成后,节点如何同步共识?Leader主要负责打包区块并广播出去。

区块打包过程有三种状态,一是广播状态,节点校验本地term以及区块高度,确认交易并广播有效消息;二是验证状态,一旦验证通过的节点数达到2f+1(总节点数为3f+1),则信息被确认为有效。最后是上链提交状态。节点达成验证状态,被2f+1节点确认后,就可以广播区块上链,同时开始添加新区块。

在Braft协议中,节点是动态加入或退出,但节点的加入或退出必须得到大多数节点的认可。

节点加入前需要设置引导节点,通过引导节点获取所有节点信息。新节点向所有节点广播自己的加入请求信息,leader收到加入请求后,会把下一个区块设置为Reconfig类型,用于节点信息的变更;而其他节点收到加入请求后,会等待leader信息的Reconfig区块。一旦Reconfig区块共识达成,各节点把新节点信息加入到集群信息。同时,为了防止任意节点加入集群,新节点加入前需要在集群节点加上自己的host和pubkey信息,只有通过集群节点的校验后才能发起加入请求。

节点的退出也需要通知其他节点。节点广播退出请求后,leader会把下一个区块设置为Reconfig类型,其他节点开始等待leader的Reconfig区块。一旦Reconfig类型的区块共识完成,各节点把该节点的标记为退出。

最后需要关注的一点是交易过程存在异常情况的处理:比如leader创建的交易输入和输出作弊、leader不发起交易、不同节点之间的全节点不完全同步、双花、网络异常(发送签名失败或交易上链失败等)。OFGP针对这些异常情况,有自己的解决方案,这里不再详述。

其他需要关注的点

在OFGP协议中需要客户端,比如钱包来操作网关交易。用户通过钱包可以完成充值和回兑的请求。充值本质上就是在主链上发起一笔交易。不过,在交易过程中,还需要用户提供侧链地址。此外,构造交易数据时,需要按照OFGP协议的数据格式填充相关的侧链地址信息。

还有一点是关于私钥管理。signer负责解锁主链代币及侧链发币的签名。这里涉及到维护多重签名地址的私钥管理。为了兼顾安全和实用,OFGP采用了私钥隔离加密存储、私钥生成及签署服务独立运行,并通过私钥代理服务层对整体业务流程提供签名数据输出服务。

OFGP协议可以应用到哪些场景?

随着区块链增多,不同链之间有天然的价值流通需求。毕竟不可能一条链一统世界,这意味着不同的链会满足不同的场景需求。不同的场景需求都会涉及到价值的使用。这样,用户的资产就有了在不同链之间进行流通的需求。

OFGP是去中心化的联盟网关协议,它可以实现资产跨链流通,通过把资产从主链转移到侧链实现更高的扩展性和更丰富的落地场景。OFGP作为跨链模式的一种,它也可以在整个跨链价值生态中发挥出自己的作用。

让我们假设Bob是一位共享出行打车链的司机,该打车链是基于以太坊的侧链,Bob拥有打车链的token;Alice是共享房屋租赁链的房主,该租赁链是基于BCH的侧链,Alice拥有该租赁链token;不管是Bob要租赁Alice房间,还是Alice要打Bob的车,双方都可以使用自己的打车链token或租赁链token来支付服务费用,而无须为了打车或租赁房屋专门去交易所购买该打车token或租赁token。这中间可以通过OFGP协议进行价值的兑换和流通。

这样的场景下,通过跨链价值流通,实现无缝交易和支付,用户体验更好。因为资产流通的摩擦变小,这会释放出不同区块链之间的潜力,最终带来整个生态体系的成长。

最终来说,在跨链流通的过程中,同时完成用户、数据、使用场景的连接,会构建出一个更大的价值生态。

除了跨链价值流通,具体来说,OFGP的侧链模式在支持侧链创新、去中心化交易所等方面也有自己的应用场景。

由于OFGP网关可以实现主链资产向侧链转移,在保证侧链资产安全性的同时,也允许侧链有更高的吞吐量来完成更高频的场景需求。侧链可以把重心放在用户的实际需求上,不用担心资产的安全。现实中的各种应用,比如游戏、金融、社交、共享经济都可以在侧链上进行更多创新的探索,比如游戏领域的loom network正在积极探索侧链的应用场景。

又比如,可在侧链构建更高效的去中心化交易所。传统的去中心化交易所一般是依赖某一条主链,如基于以太坊的去中心化交易所。而通过OFGP的去中心化网关协议可以将不同币种映射到同一条侧链,可以实现价值流通,例如建立BCH-ETH的网关,把BCH映射到ETH上的一种代币上,假设名为“BGE”的token,“BGE”是基于以太坊的ERC20 token。那么,在基于以太坊上开发的去中心化交易合约中加入BGE和ETH的交易对,就可以实现BCH和ETH的交易。

结语

跨链是解决区块链孤岛问题的重要方法。通过去中心化的网关模式来解决跨链问题,有相对较好的落地性,同时它通过侧链模式,实现主链和侧链资产的双向锚定,在某种程度上,它也实现了区块链的扩展性。

一方面它保证了资产的安全,另外一方面,给了侧链更大的扩展空间,在吞吐量上有了很大提升,同时,让侧链可以更专注于实际需求的探索和落地。这也是区块链未来发展的重要探索方向。

OFGP侧链模式的跨链可以加速不同链资产之间的流通,也可以推动更多侧链的探索,有利于形成更加丰富的区块链生态场景。目前一些侧链的探索逐渐有了一些进展,比如loom network的游戏应用探索等,未来还会有金融、社交、共享经济等领域的探索。

这些基于侧链的探索越多,场景越丰富,不同链之间的价值跨链需求就越大,OFGP的联盟网关协议的需求也会越大。这是一个相互促进和共荣共进的关系。期待OFGP的跨链和区块链的侧链探索一起能够尽快取得突破,从而推动整个区块链生态体系的进展。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK