在加密货币孤岛之间建立安全且高可用性的桥梁
CoinXP交易公链首席架构师 Dr. Che 在 Medium 上的最新分享,用一个具体的比特币跨链存储和提取的例子讲解如何在在加密货币孤岛之间建立安全且高可用性的桥梁。

在今天的市场,有许多不同的区块链公链项目。每一个公链项目形成自身可信的生态体系。在每一个生态系统内部,所有交易都被全部参与者、主要参与者,或选出代表的子集共同协同验证。大部分的公链项目也通过内嵌冗余提供高可用性。一切都运行良好,只要逻辑只在一个主链之内,或者我们称他为加密数字孤岛。
众所周知,一个封闭的系统通常不会产生任何重要价值。在真实世界的应用中,单独一个公链项目内的逻辑无论如何终将想要和外部世界进行通讯。将区块链项目的期望属性传播到外部世界是一个具有挑战性的问题,需要大量的思考和许多讨论。在本文中,我想讨论一条公链想要与另一条公链通讯的特定场景。本文提供了一种在两条公链之间实现安全且高可用性的桥梁的解决方案。可以从提供的解决方案轻松扩展到不同主链之间的专有网络解决方案。
为了加强这个问题,让我们制定一个更具体的例子。假设我们已经构建了一个基于区块链主链的加密数字货币交易平台。所有交易委托账本和交易更新均由选定的代表进行验证。成功闯入的一个或多个代表的黑客无法操纵任何交易,因为大多数代表都会拒绝它。由于他们需要大多数代表参与共谋,所以也不太可能进行串通。结果,区块链本身被认为是安全和透明的,因此可以被信任。只要加密数字货币的交易是独立的,就一切都好。
因此,如果说加密货币的交换支持比特币和其他数字货币之间的交易,我们需要支持存储和提取比特币。存储和提取可被视为比特币主链和加密数字货币交易主链之间的双向流量。让我们讨论如何构建具有安全性和高可用性属性的这种桥。
用户工作流
当加密数字货币的交易用户开立账户时,他/她被分配一个比特币存款地址。用户可以通过任何比特币钱包或第三方工具在这个地址做存储,余额会应反映在他/她的帐户中。用户还可以通过提供有效的比特币地址从加密数字货币交易所中提币。在交易所方面,需要支持以下三个操作:
-
分配一个新的比特币地址;
-
用户存款时增加其帐户余额;
-
调整用户帐户余额,并在用户提出取款请求时将比特币发送到用户提供的地址。
示例服务
可以使用比特币全节点(比特币客户端)构建示例服务。现在让我们执行所需的操作:
-
分配一个新的比特币地址
在原始比特币客户端API调用列表中执行getnewaddress
-
在用户比特币地址做存入币时,增加用户帐户余额
在原始比特币客户端API调用列表中执行getblock, 并扫描将比特币发送到比特币地址的交易
-
调整用户帐户余额并将比特币发送到用户提供的地址
在原始比特币客户端API调用列表中执行sendtoaddress,并将比特币发送到用户提供的地址
哪里可能会出错!
即使没有黑客出现,这个示例服务也存在足够多的问题:
-
服务主机可能会关闭;
-
比特币全节点可能落后;
-
私钥可能会泄露或丢失;
-
私钥的所有者可以提走比特币并跑路。
黑客还可以发动其他几种攻击:
-
黑客可以将 getnewaddress的流量重定向到假代理;
-
黑客可以在中间充当人,用他/她的地址替换用户比特币地址;
-
黑客可以返还虚假存款,并拥有比特币余额而无需做任何存款。
上述情景会降低服务的可用性,或导致完全的安全漏洞。
一个安全且高可用性的服务
现在,让我们讨论如何实现解决上述所述问题的安全性且高度可用性的服务。该提案的主要内容是分配比特币地址的所有权,并使用同一组代表来验证跨链操作。比特币地址的所有权分配相对简单,我们可以直接采用比特币支持的多重签名功能。跨链操作验证比较棘手,下面将对这部分重点进行讨论。
-
分配一个新的比特币地址
1. 随机选择一个活跃代表
2. 所选代表使用所有代表的公钥,创建一个多重签名的地址
3. 加密数字货币交易所接收多签名地址
4. 加密数字交易所要求每位代表执行以下操作:
a. 查询比特币主链以获取地址信息
b. 验证地址的公钥是否与代表的匹配
5. 如果N(N/2 <M <N)个代表中的M成功完成了步骤4,则将地址添加到用户的帐户,否则,请返回步骤1
-
当存入比特币地址时,增加用户帐户余额
1. 每个代表维护自己的比特币全节点并扫描每个块中的交易
2. 如果找到比特币地址的存款,请将信息发送回加密货币交易所
3. 如果收集到相同信息的地址数大于N(N / 2 <M <N)个中的M个,就增加用户帐户余额
-
调整用户帐户余额并将比特币发送到用户提供的地址
1. 随机选择一个活跃代表
2. 所选参与者创建将比特币发送到用户提供的地址的请求
3. 加密数字货币交易所收到请求
4. 加密数字交易所要求每个代表执行以下操作:
a. 验证用户提供的地址是否有效
b. 验证用户帐户是否有足够的余额
c. 验证提案与区块链上的记录匹配
d. 签署请求
5. 如果N(N / 2 <M <N)个参与者中的M个在步骤4中签署了请求,请调整用户帐户余额。选定的代表发出已签名的多签交易。否则,请返回步骤1
6. 加密数字交易所要求代表监控交易
7. 如果收到N(N / 2 <M <N)个通知中的M个已完成交易,请标记提币完成
哪里可能会出错!
让我们复原简单服务的失败场景,看看会发生什么:
-
服务器主机可能关机 — 没有问题, 只要M个服务仍在运行;
-
比特币全节点可能落后 — 没有问题, 只要超过M个服务器是最新的;
-
私钥可能泄露或丢失 — 没有问题,只要M个私钥没有泄露或丢失;
-
私钥的所有者可以取走比特币并跑路 — 没有问题,只要少于M个代表串通作弊。
那么来自黑客的威胁呢?
-
黑客可以将getnewaddress的流量重新定向到假代理 — 没有问题,只要流量被重定向到少于M个假代理;
-
黑客可以在中间充当人,用他/她的地址取代用户的比特币地址 — 没有问题,只要小于M的中间人攻击成功;
-
黑客可以返还虚假存款,并拥有比特币余额而无需做任何存款 — 没有问题,只要少于M个代表遭到黑客入侵。
这就是我们承诺建立的安全且高度可用的服务。由于它充当比特币主链和加密数字货币交易主链之间的加密数字桥梁,因此整体系统是安全的,高可用性的,并且可以被信任。
- 免责声明
- 世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
- 风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
- 世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。

B特币笔记



