热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DanteNetwork发布第一版基于SubstrateInk!技术栈

达成W3FGrants的第二个里程碑DanteNetwork是一个支持多链互操作的基础设施网络,打通不同架构体系,不同功能特点的链之

达成 W3F Grants 的第二个里程碑

Dante Network 是一个支持多链互操作的基础设施网络,打通不同架构体系,不同功能特点的链之间的协作通道,一直是 Dante Network 致力达成的目标。

在此之前,我们已经发布了包括 EVM,WASM 等在内的多个版本的 SDK,这次,我们完成并正式发布了 Substrate Ink!的版本 SDK。

Polkadot 的 Substrate 框架是一套非常成熟与便利的区块链开发工具,基于 Substrate 框架开发的区块链可以选择拍卖并接入 Polkadot 的平行插槽,也可以完全独立运行,实用性很强,适用范围也很广,市场上很多区块链都基于此开发,因此,Substrate Ink!技术栈一直都是我们支持的重点方向之一。

这次关于 Substrate Ink!技术栈的发布也是我们在 Web3 Foundation 的 Grant 的第二个里程碑,目前也已经通过了里程碑的验收。

接下来,我们将就本次里程碑的相关研究过程进行一个梳理和总结,包括核心算法以及开发过程中所沉淀的体验和经验,希望能够为关注或从事多链研究及开发的朋友提供一些帮助。

想直接了解全部细节可以通过该链接访问:

(https://github.com/dantenetwork/protocol-stack-for-ink)

核心算法 — 解决 Permission 和 Trustless 的问题

在深度研究和亲自尝试了多种跨链解决方案之后,我们发现大部分解决方案的方式都是见证人机制,无论是中继链还是 MPC 多签的方式,这是一种快速可用的方式,但是在 Permissionless 和 Trustless 方面还存在着不足 -- 一般而言,中继链或者 MPC 网络的节点都有准入许可,并且数量不多。

所以,从一开始,我们尝试解决问题就是:如何在没有任何假设的情况下,通过去信任的链下环境连接多链,而每条链都是一个不同的可信共识空间。

使用加密承诺验证并结合多层博弈模型来让所有的链下节点面临囚徒困境,对他们而言最好的策略就是做诚实的事。

我们坚持以完全开放和去中心化的方式来构建 Dante 协议,这建立在独立的异构共识空间可以被完全确保能进行安全交互的基础上。

毫无疑问,这个交互安全是完全可以被保证的。

研究及开发成果

从底层协议开始,我们完整地构建了整个 Dante Network 的互操作网络。 我们将之分为“三层架构”,包括了共识验证层,安全质量层和服务表述层,它们分别定义和实现了如何对多链间的数据进行路由和验证,如何针对不同的应用场景配置不同的交互策略,以及如何对数据进行封装和表达以适应用户的服务需求,更详细的信息可以通过该链接了解:(https://dantenetwork.medium.com/techtabloid-brief-introduction-of-dante-technical-stack-4ee9af40a079) 。

非常感谢 W3F ,作为跨链领域的专家和实战高手,给予了我们很多启发和支持。

迄今为止,我们已经完成了服务表述协议层的开发,这包括了 SQoS 层的基础安全以及共识验证层的信念验证算法。

基于以上完成的工作,我们现在可以实现部署在 Polkadot 平行链上的智能合约与部署在其他生态上的智能合约 / 资源进行远程调用。

对于“Ink!” 技术栈“服务表述层”的源代码可以在该链接中访问详情:

(https://github.com/dantenetwork/message-ink/tree/ink-2.0-alpha.3)。

我们提供一个“Message Payload”,可以让用户自行定义数据结构。通过这种方式,让数据能在“Ink!”和其他技术栈的智能合约之间被轻易地读取。也就是说,用户可以从需求的层面来更好地考虑定义自己的数据结构,而无需更多地考虑兼容“Ink!”、“solidity-EVM”、“Rust-Near”、“Cadence-Flow”等不同技术栈中底层编码和解码机制的差异。

SQoS 对于基础设施来说是非常必要的,因为它所服务的应用程序可能根据其应用场景对安全需求会有很大的不同。 对于 Ink!的 SQoS 基础项使用的源码可以通过该链接访问:

(https://github.com/dantenetwork/protocol-stack-for-ink/tree/feature-sqos) 。

例如,最简单的配置项“verification threshold”,它决定着需要验证并达成一致的消息副本数量,理论上越多越安全,但是可能会带来效率上的损耗;

而“authority context”项维护了跨不同共识空间的内容,它在当目标链上的被调用者需要确认源链上调用者的身份和权限时可能会非常有用;

此外,在远程调用过程中抛出错误时,“error rollback”项非常重要。 “hidden & reveal”和“optimistic”等项目有点复杂,详细信息可以在源代码中找到。

信念验证机制是由三个核心算法组成,它很基础但非常实用,可以通过该链接访问更多内容:

(https://github.com/dantenetwork/protocol-stack-for-ink/tree/main/contracts/algorithm#router-selection) 。

简单来说,信念验证机制是由权益证明(PoS)和可信度证明(PoC)组成,而可信度则是通过链下节点的历史工作表现来评估。

以上只是基本但很必要的点,它们构成了 Dante 协议的 MVP,我们也在此基础上推出了第一个测试网。详细的部署信息可以在测试网链接中找到:(https://github.com/dantenetwork/testnet)。

此外,开发人员可以通过我们提供的 SDKs 来免费试用 Dante 协议以此进行更便捷的全链 dApps 开发,访问链接如下:

(https://github.com/dantenetwork/On-Chain-SDK)。

为什么选择 Polkadot 生态系统

在跨链领域方面,Polkadot 有着绝对的技术优势和经验,其中继链的解决方案也和一般的中继链解决方案有着显著的不同,尽管还是见证人的方式,但是波卡的平行链和中继链 (Polkadot) 是共享验证者的,这让它们有着相同的共识空间和信任基础,而非多段不相关的共识空间的简单串联,成为 Polkadot 的验证者节点需要有足够的 staking,但是并没有其他复杂或者晦涩的准入门槛。

当然,这也让 Polkadot 的实现难度和对平行链的要求非常高,比如需要以 Substrate 框架进行开发,并且由于平行插槽的数量有限,必须要拍卖成功才能接入平行插槽。

实际上,Dante 的理念和 Polkadot 的非常相似,我们都致力于构建去中心化协作的未来,并且,很巧的是,Polkadot 和 Dante Network 的解决方案即是一种解决思路上的互补,也是一种覆盖面上的互补。

Dante 提供了一种异构共识空间的解决方案,正如开篇所提到的,兼容各种不同的架构体系和功能特点的链。

在 Polkadot,各个平行链之间通过 Substrate 和平行插槽连接在一起,而通过 Dante Network,它们可以再次没有平行插槽或者根本不是 Substrate 架构的更多的链进行交互。

基于 Substrate Ink!的开发体验!

在基于 Substrate Ink!搭建 Dante 协议的过程中,我们发现无论是工程开发方面,还是算法研究方面都非常有难度。

由于构建的出发点是 Permissionless 和 Trustless,并且还要具备实用性 — — 没错,我们并不想只是搞一顿理论研究,我们希望的是能够真正投入使用的东西 — — 这让整个项目的难度大为增加,因此需要一些非常系统的架构设计,非常专业的代码实现以及非常精巧的算法,我们需要考虑到多个不同技术栈之间许多技术实现的细节。这在实行起来很复杂,但同时又很有趣。幸运的是,困难成为了我们不断前行的动力。

目前,一个基于“Substrate Ink!”智能合约的项目仍然在开发中。我们现在可以基于该智能合约去开发其他所有的技术栈(如 solidity-EVM)。 特别的是,由于“Pallet”支持链级组件的原因,基于“Ink!”的智能合约可以和“Substrate Pallet”进行交互来实现一些更灵活的功能。实际上,我们团队正在基于 Dante 开发一个基于“Substrate pallet”特点的全链 DEX 协议,这个协议可能会对当前提供交换协议服务平台有一个极大的改进。

未来的工作

我们坚持以 Permissionless 和 Trustless 的方式来构建 Dante 协议,因此我们可能还有很长的路要走。

首先,我们正在构建一些 Dante Network 协议的高级功能,以期达到更高的、更有效的安全性。我们将基于密码算法和多层博弈模型的承诺验证机制来构建链下节点的囚徒困境,而这保证了虽然 Dante Network 的节点是 Permissionless 的,但对所有节点来说,确保做诚实的事情是他们最优的选择。

此外,一个基于 Dante 协议的全链 Token 协议正在开发。这个 Token 可以在没有任何担保的情况下在所有我们支持的链之间自由地流通和使用。基于这套协议,我们可以帮助 DOT 以及 Polkadot 生态上的任意一种 Token 成为这样一种全链 Token,打个比方来说,如果有人在 Polkadot 上转移一些 DOT,那么所有 Dante Network 连接的链上,都可以看到 DOT 所有权的变迁,反之,在其他链上,也可以发起 DOT 的转移指令 ( 只要指令的发起人是 DOT 所有者 ),与此同时,在 Polkadot 链上,这个转移将会被看到并确认。

另外,Dante Network 也正在考虑为 Substrate 构建一个 Pallet,将 Dante Network 的协议和功能模块化地封装进去,这样,平行链的开发者可以更方便地使用我们对应的互操作功能。

关于 Web3 基金会

通过访问官网了解更多有关 Web3 Foundation 的信息,也可以通过Medium 或者 Twitter 获得更多细节。

加入 Dante Network

Dante Website | Dante Twitter | Dante Telegram |

Dante GitHub | Dante Discord |

联系我们

Email: Nika@dantechain.com


推荐阅读
  • 查找给定字符串的所有不同回文子字符串原文:https://www ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • Go语言实现堆排序的详细教程
    本文主要介绍了Go语言实现堆排序的详细教程,包括大根堆的定义和完全二叉树的概念。通过图解和算法描述,详细介绍了堆排序的实现过程。堆排序是一种效率很高的排序算法,时间复杂度为O(nlgn)。阅读本文大约需要15分钟。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • 判断编码是否可立即解码的程序及电话号码一致性判断程序
    本文介绍了两个编程题目,一个是判断编码是否可立即解码的程序,另一个是判断电话号码一致性的程序。对于第一个题目,给出一组二进制编码,判断是否存在一个编码是另一个编码的前缀,如果不存在则称为可立即解码的编码。对于第二个题目,给出一些电话号码,判断是否存在一个号码是另一个号码的前缀,如果不存在则说明这些号码是一致的。两个题目的解法类似,都使用了树的数据结构来实现。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • Opencv提供了几种分类器,例程里通过字符识别来进行说明的1、支持向量机(SVM):给定训练样本,支持向量机建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。函数原型:训练原型cv ... [详细]
  • 四月份NFT优质榜单
    四月份NFT优质榜单 ... [详细]
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
  • 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)【下载本文PDF进行阅读】设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • HashMap的扩容知识详解
    本文详细介绍了HashMap的扩容知识,包括扩容的概述、扩容条件以及1.7版本中的扩容方法。通过学习本文,读者可以全面了解HashMap的扩容机制,提升对HashMap的理解和应用能力。 ... [详细]
  • 【前端工具】nodejs+npm+vue 安装(windows)
    预备先看看这几个是干嘛的,相互的关系是啥。nodejs是语言,类比到php。npm是个包管理,类比到composer。vue是个框架&# ... [详细]
author-avatar
mobiledu2502911073
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有