OFGP协议跨链解决方案
OFGP简介
现阶段跨链技术的发展现状
概述:
跨链技术的目的为了实现不同区块链下资产的交互,Vitalik曾在跨链交互报告[1]中提出三种跨链方式:公证人机制(Notary schemes)、侧链/中继(Sidechains/relays)和哈希锁定(Hash-locking)。下图展示了三种跨链方式的特性比较
公证人机制削弱了安全性,而哈希锁定机制的技术难度过高,侧链/中继模式由于具有可信化共识机制,且技术实现具有可行性因而得到广泛的发展。
现有侧链/中继实现跨链解决方案
概述:
中继作为不同区块链交互的实现手段,侧链作为载体通过不同共识协议保证跨链可以持续稳定的实现。
需要解决问题:
- 链间交互问题
不同区块链之间的信息传递,代币的锁定,兑换与释放。
- 交互的信任问题
增加交互过程中跨链用户的作恶成本,降低或杜绝跨链用户的作恶情况。
- 拜占庭容错
侧链节点的信任问题,在由少数节点作恶的情况下依然保证整条侧链的安全。
- 中间人攻击
当普通跨链用户增多,节点数量无法满足需求,用户通过向中间人提交信息,中间人再将信息传递至节点。为了保证中间人不作恶信息传递的安全,大多数跨链项目早期没有中间人的存在。
不同跨链项目为解决上述问题给出了不同的解决方案,下面将举例各项目的不同解决方案。
本文将重点介绍Mallow的实现方案
OFGP简介
Mallow:创世网关联盟,名字来源于《基地》中的一位行商Hober Mallow, 行商在星球之间进行贸易,通过商业贸易帮助化解了谢顿危机, Mallow希望通过自由的商业贸易来建立跨链的价值传输。
OFGP:是一套开放的联盟网关协议, 任何组织可以通过开源代码部署自己的网关联盟,完成主链上的资产抵押认证,将价值传递到侧链,实现跨链的价值传输,解决部分区块链拓展问题,并实现多个公有链孤岛的价值传输。
Mallow与OFGP的关系:
Mallow作为OFGP的率先实践者,联盟中节点部署OFGP协议,作为Mallow节点,处理OFGP各项事务。
OFGP框架图及框架图解释
网络层(Networking)
网络层作为OFGP基础部分,分为Mallow节点及公链两部分。Mallow节点作为OFGP协议软件程序的运行节点,承担数据验证,维护节点的责任;公链是具有独立区块数据,共识协议的公共区块链系统,OFGP协议便承担着连接各个公链的责任。
- Mallow节点
节点多签地址生成
多签私钥的安全管理
- 公链
BCH,ETH,BTC,EOS……
共识层(Consensus)
共识层作为各条公链信息交互及Mallow节点需要遵守的协议,维护着整个OFGP协议系统信息安全传递及稳定运行。各Mallow节点依托Braft算法,达到拜占庭容错的目的;跨链协议包括监听,信息传递,合约注册,权限管理等多事务。
- Braft
Braft节点
共识流程
节点动态加入退出机制
- 跨链协议
主/侧链监听(watcher)
交易签名,签名信息传递(signer)
交易广播,验证,主/侧链相应
业务层(Application)
在网络层及共识层外还需要业务层提供用户入口及查询的基础应用和以OFGP为技术基础的拓展应用,从而发挥出OFGP最大的附加价值。
- 基础应用
钱包,为用户提供OFGP协议使用入口。
区块链浏览器,为用户提供OFGP协议交易信息查询工具。
- 拓展应用
DEX,增加去中心化交易所的资产流通种类。
支付场景,OFGP的高效TPS为区块链应用场景的应用提供了可能。
智能合约,打破由于主链技术限制造成智能合约应用发展瓶颈。
OFGP框架详解
网络层(Networking)
Mallow节点
多重签名:多重签名技术就是多个用户同时对一个数字资产进行签名。可以理解为,一个数字资产账户多个人拥有签名权和支付权。多重签名的表现形式是m/n(m<n),一共有n个私钥可以给一个账户签名,而当m个地址签名时就可以支付一笔交易。在OFGP中n为Mallow节点总数,m为保证拜占庭容错的节点数目,m=(2n+1)/3。
由于OFGP协议中Mallow多节点将掌握一个账户的签名权利(持有私钥),为了均衡各节点权利,采用多签技术实现。
- 多签私钥管理
为了保证侧链发币交易请求的签名安全,以及多节点的私钥管理安全,OFGP设计了完善复杂的私钥管理结构。
OFGP使用了软件私钥管理方案,节点可以根据该方案在云端或者本地主机搭建服务。
私钥管理方案分为三大部分,密钥存储服务,密钥管理服务,私钥代理服务
私钥管理具体方案详见OFGP白皮书 3.6
https://github.com/ofgp/ofgp-core/wiki/Open-federated-gateway-protocol-(OFGP)-whitepaper
- 节点签名流程
OFGP的多签名流程实现复杂,保障了在私钥安全的情况下完成签名,加强了多签地址中资产的安全性。
- 外部服务向私钥代理服务发出签名请求(需提供必要的参数:待签名的数据以及用到的密钥的标识符)。
- 私钥代理服务检测请求方和请求内容合法后,将请求发送给私钥管理服务。
- 密钥管理服务执行签名。
- 密钥管理服务根据提供的标识符获取密钥的存储访问路径和解密密钥。
- 密钥管理服务通过存储访问路径从存储服务通过取得加密后的密钥,利用解密密钥解出原始密钥,对数据执行加签,完成后安全移除加载的密钥信息,返回加签后的数据给私钥代理服务。
- 私钥代理服务返回相关数据给外部服务请求方。
注:摘自OFGP白皮书
共识层(Consensus)
Braft
BraftChain共识协议基于 Raft算法,支持Byzantine Fault Tolerance,在不超过(n-1)/3个节点(节点总数为n,n>=4)出现异常的情况下可以正常运行。协议保证在正常运行时区块链不会出现暂时或永久的分叉,一次确认即为可靠确认。且交易确认速度可以达到秒级,节点运营方均为实名,并且有严格的增删节点机制,以保证网络质量以及异常情况可追责。
- Braft节点
Braft节点数最少为4个,且需要满足3f+1(f >0,且为整数)的限制,恶意节点数小于等于f时,网络可以正常运行;当需要有新的数据写入区块时必须有超过2f+1个节点的验证同意。
节点类型
Braft节点分为Leader,Candidate,Follower。服务器节点一定处于在三种状态之一,正常状态下只有一个服务器作为Leader,剩下的节点都可以被定义为Follower,Candidate从Follower中产生,Candidate作为一个状态,在正常运行没有出现选举的情况下节点中不会产生Candidate,且Candidate过程非常短暂。
leader负责打包区块并广播给所有的Follower,Follower负责对打包区块进行验证。
Follower在正常情况下不会发出任何请求,只相应来自Leader,Candidate的请求。当Follower在数据验证过程中发现错误,会发起重新Leader选举,收到多数票的候选节点会成为新的Leader。
任期(term)从一个新的Leader选举开始,结束于Follower的数据的失败,便会开始新的一轮投票选举。
- Braft的区块打包过程
Braft协议的区块打包过程可以理解为Raft的复制状态机(一致性算法的实现一种方式),目前Mallow中区块的出块的时间间隔为10s/块。
区块打包过程分为三个状态:
广播状态
节点需要对比验证本地Term,区块高度,确认自己为合法节点并广播自身节点有效消息。
验证状态
当已经验证过的节点数达到2f+1(总数3f+1),说明节点接受信息通过全网确认,信息有效,可以添加新的区块,Leader并广播新区块。
上链状态
广播区块链上链,并开始新区块的添加工作。
- 节点动态加入退出机制
节点的加入/退出必须得到大多数节点的认可;当有新节点请求加入或退出时,Leader会将下一个区块设置为Reconfig类型。
具体机制详见OFGP白皮书:https://github.com/ofgp/ofgp-core/wiki/Open-federated-gateway-protocol-(OFGP)-whitepaper
跨链协议
跨链协议指主链(ETH,BCH…)与侧链之间的通信协议,负责主链到侧链的发币,也负责侧链到主链的回兑,并且保证双向锚定过程中的资产安全和汇率合理稳定。
下图为跨链协议示意图:
Watcher:每一个公链都有watcher对其进行监控,当用户有代币跨链兑换请求时,将请求数据及交易数据发送给Signer。
Signer:对Watcher传递的交易请求信息进行验证签名,并在主链上验证用户在主链发送的请求交易
Mallow区块浏览器:https://explore.ofgp.io
BCH多签地址:pp3eju4zt9g3xpfps94s08vh9kfqh4t7zgcghf00uf
各节点以太坊地址:
0x6bcb244c6eb027ffed5c99943491637bc4824171
0x862775d4b99075883a18eed2cafcf0d9ae839e03
0x18945052716c87a4ab53063488f34f1a11b05ed2
0xb42c436da7ece89914f75bd7239105bcba13590d
GatewayVote合约地址:
0xd9c422d2205248e7ec4d4c21a6b270baa66784c0
WBCH Token合约地址:
0x286748cae9ee8f98a399032cf45cbbad8de3cb8a
- BCH — ETH 跨链流程
以该笔交易为例:
用户兑换0.01BCH为WBCH
- BCH主链请求交易
当用户需要发起BCH兑换,目前需要通过iBitcome钱包发起一笔交易,将需要转化的BCH发送至BCH多签地址(pp3eju4zt9g3xpfps94s08vh9kfqh4t7zgcghf00uf)
该笔交易详情信息:https://bch.btc.com/a38883fddd593f1e08ecd68c4d7b9e68ab2294070632ab8efdc1802aabe22b8a
包含接受WBCH的ETH地址在该交易的输入脚本中,Watcher监控到多签地址中有新交易转入并检测交易脚本中信息。
2. Mallow节点投票
Mallow节点在得到Watcher的信息后,后通过以太坊GatewayVote智能合约地址发起投票。
投票通过向GatewayVote合约发送交易实现,目前Mallow四个节点中只需要三个节点投票通过交易便得到通过确认。
follower节点发起投票交易:
https://etherscan.io/tx/0xb10963de4bde948c2d58a1508e6dfcd12588062bc5fcc14216eb0183a466a0a1
https://etherscan.io/tx/0x507cd9b007f23fa7de66300cac1cbcb5a69f5d291bf5070d72169aef584b0577
可以看到Follower节点投票的交易只有一个Confirmation的Event。
节点投票&发币交易:
https://etherscan.io/tx/0x188cc0b3045cba078067ee1b1d5b2d3b486dcd67f8703f8cb14759161b928edc
可以看到4个Event中,Confirmation进行投票,OperationDone表示投票结束,MintByGateway表示网关同意该笔兑换操作。Mint Event调用WBCH Token的合约,输入参数为WBCH接收地址及兑换数量,同时可以在WBCH Token的合约地址中看到该Event。
发币合约调用交易根据节点投票交易的上链顺序决定,第三个投票上链交易同时进行发币。
3. 侧链交易确认
在打开Mallow中该笔交易的ETH的Tx时,看到的交易为调用GatewayVote的交易,该笔交易调用了WBCH Token合约,进行WBCH Token的发放。同时在Mallow侧链中会对该交易进行记录生成Hash并写入区块。这样便完成了一次完整的BCH-WBCH兑换过程。
- ETH — BCH跨链流程
以该笔交易为例:
- WBCH燃烧
用户发起一笔WBCH燃烧交易:
https://etherscan.io/tx/0x494b74400505b343479e4c00f9bc869e475b97e21b35343ac1942a11bdb76302
该笔交易通过Burn Event对WBCH进行燃烧,并通过BurnForGateway Event与GatewayVote节点进行通信。可以在GatewayVote合约的Events中看过该笔燃烧交易。
2. 多签脚本投票验证
Watcher对Ethereum区块链进行监听,当有燃烧交易生成,Leader便创建一个待签名的BCH交易,广播给网络中的所有节点进行签名,节点收到签名请求后,对交易内容进行合法性校验,如果校验通过,签名,并将签名内容广播给网络中的所有节点,否则广播拒绝签名节点收集其他节点的签名结果,如果成功收集到满足多签个数的签名结果,则签名,并发送交易到BCH链。
3. BCH交易发送
当3个节点签名通过后,多签地址便会发送一笔BCH转账交易,同时在Mallow侧链上记录该笔交易。
https://bch.btc.com/9231cded28b78adcf85fa43bec517b1ab9d0a0e62fb5a577fc2a16ef1a6e5a48
业务层(Application)
基础应用
- 钱包
钱包作为普通用户储存数字资产以及与区块链交互的工具,作为OFGP跨链入口最为合适。
iBitcome为目前首家利用OFGP集合成Mallow联盟实现跨链的去中心化钱包。
- 区块链浏览器
区块链浏览器作为区块链数据的可视化工具,用户可以通过区块链浏览器查询Mallow交易数据。
Mallow区块链浏览器地址:https://explore.ofgp.io
拓展应用
- 去中心化交易所
OFGP作为跨链的实现方案,解决了公链之前的信息和价值交互的问题,更高的流动性将有机会增加更多的附加价值。
主流的去中心化交易所在以太坊上通过智能合约实现。Mallow所实现的BCH-WBCH方案,为BCH的去中心化交易提供了可能,并且打通了BCH/ETH的价值传输通道,对于BCH,ETH的价值拓展具有推动作用。
拓展与发展
目前Mallow实现了OFGP的稳定汇率单向跨链交互,Bitcoin Cash链上资产兑换为Ethereum链上等价资产及Ethereum链上资产反向兑换为Bitcoin Cash链上等价资产。双向资产不同汇率的原子交换将成为OFGP的拓展及发展的有力方向。
应用拓展
- OTC交易提供Atomic swap的服务
对于经验丰富的加密货币用户,大多数更愿意避免使用中心化交易所,希望能够避免通过第三方进行交易。OTC交易双方通过场外平台达成交易意向(如利于ETH兑换BCH),OFGP可以作为去中心化网关提供安全稳定的Atomic swap服务。交易双方将兑换数字货币打入特定多签地址,在通过OFGP协议验证认可后实现交换。
- BCH侧链提供网关支持
Bitcoin Cash 基于OmniLayer开发出wormhole协议,使用OP_RETURN操作码实现了智能合约的发币方案,极大拓展了Bitcoin Cash的应用场景。OFGP可以作为BCH侧链,为在BCH链上发行数字资产提供稳定的网关服务,提高BCH链上资产与其他数字资产的交互能力。
- 众筹
目前众筹多采用以太坊智能合约实现,且众筹大多接受ETH数字货币,OFGP为众筹方提供接受BCH及BCH链上资产的可能,以及利用WHC发起众筹接受ETH链上资产的可能。
目前单一的众筹渠道,限制了项目方的可选择性。但数字货币的发展难以预料,跨链技术的存在,可以丰富项目方的发币公链的选择,同时在ETH,BCH等公链发行等价数字货币。
- 代币映射
公链众筹项目早期多选择在以太坊发行代币,但项目主链开发完成,以太坊代币向项目主链的代币映射往往技术实现复杂,利用OFGP可以轻松实现代币的映射。
发展展望
- 公链资产互通
数字货币的发展对于数字货币的流动性要求越来越高,目前公链的价值孤岛将随着跨链技术的完善而逐渐打破。
公链下多币种的等价代币映射兑换。等价数字资产的互通仅是OFGP实现的第一阶段,BCH利用OP_RETURN操作码发行的数字货币,在以太坊中可以实现代币映射发行等价的ERC20 代币,同时ERC20 代币可以在BCH上映射发行OP_RETURN代币。
- 动态汇率的资产互通
目前在不同公链间生成等价值的跨链代币,虽实现了价值的跨链交互但具有很强的局限性。用户需要以去中心化的模式将BCH兑换为ETH,让需要先兑换为WBCH再通过去中心化交易所交易为ETH,这中间将产生大量损耗,增加用户兑换成本。
OFGP协议在技术升级中可以增加动态汇率的资产兑换功能,打破目前实现的等价代币兑换限制,实现去中心化机制的原子互换功能。
FAQ
通识方面
侧链与跨链之间的关系?
侧链是一种与主链(公链)的交互手段,作为多条主链交互载体,从而达到跨链的目的。
跨链的实现的意义?
跨链的根本意义增加了数字货币的流动性价值并丰富了公链的交互拓展能力,从而可以衍生出更多具有实际价值的拓展应用,如OTC交易,众筹等。
Mallow是什么?OFGP是什么?
Mallow是第一家运行OFGP的多节点组成的网关联盟,联盟希望通过自由的商业贸易来建立跨链的价值传输。
OFGP是一套开放的联盟网关协议, 任何组织可以通过开源代码部署自己的网关联盟,完成主链上的资产抵押认证,将价值传递到侧链,实现跨链的价值传输,解决部分区块链拓展问题,并实现多个共有链孤岛的价值传输。
Mallow和OFGP的关系?
Mallow是一家运行OFGP协议实现跨链技术的网关联盟。
Mallow侧链是联盟链吗?
Mallow侧链是联盟链,采用Braft共识协议。
Mallow和Liquid有什么区别?
Liquid是一个私有联盟的比特币侧链,意在提高比特币网络的交易速度及用户体验。Liquid建立在Elements 区块链平台之上,随着更多公链接入Elements,Liquid的跨链功能将得到丰富,但目前仅能实现侧链与比特币主链的跨链功能。
Mallow是致力于实现跨链功能的联盟网关侧链,意在建立公链间的交互渠道,打破公链的价值孤岛。目前已经实现BCH与ETH之前的数字货币价值交互。
技术方面
任何人都可以使用OFGP协议,开发自己的网关吗?
OFGP作为开源协议,任何人都可以利用OFGP建立自己的联盟网关。
OFGP开源协议地址:https://github.com/ofgp
OFGP选在Braft协议的原因?Braft协议具有哪些优势?
Braft协议保证在正常运行时区块链不会出现暂时或永久的分叉,一次确认即为可靠确认。且交易确认速度可以达到秒级,节点运营方均为实名,并且有严格的增删节点机制,以保证网络质量以及异常情况可追责。
为什么在WBCH的转账记录中仅能查到Burn及Transfer记录,没有代币生成的交易记录?
因为WBCH代币的生成过程是当Leader向GatewayVote合约发起投票交易,在该笔交易中同时调用WBCH的合约地址,实现发币过程。
GatewayVote智能合约具有哪些作用?
节点投票通过向GatewayVote合约发送交易实现;调用WBCH Token合约实现WBCH发放。
以目前4个Mallow节点,BCH兑换为WBCH总共需要在BCH及ETH上发起多少笔交易?
1. 用户向BCH多签地址转账需要兑换为WBCH的BCH
2.节点投票,向GatewayVote合约发起交易
3.节点投票,向GatewayVote合约发起交易
4.发起投票并调用WBCH合约发放WBCH代币,向GatewayVote合约发起交易
为什么在BCH兑换WBCH投票过程通过合约实现,WBCH兑换BCH投票过程通过多签脚本实现?
因为BCH为UTXO结构,无法向ETH一样通过智能合约实现投票过程。
使用方面
目前有哪些钱包支持Mallow协议?
目前iBitcome钱包支持Mallow协议,可以现实BCH对WBCH的兑换。
iBitcome钱包地址:https://www.ibitcome.com
在兑换时需要支付手续费吗?
目前Mallow属于测试阶段,在测试阶段用户不需要支付手续费,但需要支付区块链网络的矿工费用。在正式发布后用户需要正常支付兑换手续费。
在交易过程中,需要一定的区块确认高度吗?如需要BCH是几个?ETH是几个?
需要,BCH需要2个区块确认,ETH需要30个区块确认。
Mallow侧链的区块链浏览器地址?
最小BCH兑换WBCH额度?
0.01BCH
引用:
[1]https://blockstream.com
[2]https://blockstream.com/technology/sidechains.pdf
[4] https://ethresear.ch/t/plasma-cash-plasma-with-much-less-per-user-data-checking/1298
[5]https://ethresear.ch/t/minimal-viable-plasma/426
[6] https://github.com/cosmos/ethermint
[7]https://blog.cosmos.network/the-internet-of-blockchains-how-cosmos-does-interoperability-starting-with-the-ethereum-peg-zone-8744d4d2bc3f
[8] https://tendermint.com/static/docs/tendermint.pdf
[10] https://medium.com/@davekaj/blockchain-interoperability-cosmos-vs-polkadot-48097d54d2e2
[11]https://blockstream.com/technology/sidechains.pdf
[12]https://medium.com/crypto-economics/what-is-plasma-plasma-cash-6fbbef784a
[13]https://ethresear.ch/t/plasma-cash-plasma-with-much-less-per-user-data-checking/1298
[14]https://github.com/w3f/polkadot-white-paper/blob/master/PolkaDotPaper.pdf
[15]http://upyun-assets.ethfans.org/uploads/doc/file/f8ee4c6b670747e095ef00d8ac39eb67.pdf?_upd=Chain_Interoperability.pdf
[16]https://github.com/ofgp/ofgp-core/wiki/Open-federated-gateway-protocol-(OFGP)-whitepaper-en
[17]https://ramcloud.atlassian.net/wiki/download/attachments/6586375/raft.pdf
[18]https://github.com/ofgp/ofgp-core/wiki/Open-federated-gateway-protocol-(OFGP)-whitepaper-en