Avalanche链及其共识介绍

Avalanche链学习笔记 本文将详细介绍Avalanche链的基本概念、架构、共识机制以及其应用场景,帮助读者更好地理解这个去中心化平台。Avalanche是一个高效、可扩展的去中心化智能合约平台,旨在通过创新的共识机制解决区块链的性能瓶颈。与传统的区块链网络不同,Avalanche的共识机制结合了经典共识和Nakamoto共识机制的特点,能够提供更高的吞吐量、快速的终结性和更低的能源消耗。AVAX是Avalanche网络的原生代币,主要用于支付交易费用、参与网络治理和质押(staking)。 阅读详情

一、什么是雪崩链(Avalanche)

Avalanche是新一代的公链项目,试图在不影响去中心化的情况下提高可扩展性。不同于传统的公链项目,如以太坊的愿景是成为世界计算机,而Avalanche的目标在华尔街,希望创建一个商业化的去中心化金融平台。当然 Avalanche 目前还是集中在币圈,这个愿景尚需时日。

主网上线时间:2020年9月

创始人:Emin Gün Sirer

Emin Gün Sirer 教授的主要成就:

  • 在比特币诞生之前,Emin Gün Sirer 教授已经发表过几十篇关于分布式系统、操作系统和网络领域的学术论文,而他的学术生涯中很多时间都集中于研究分布式系统的各个细节。2001 年,开发了一个叫 Karma 虚拟货币系统,就运用了POW,比中本聪早了7年。截止到目前,Karma 系统的那篇论文被引用次数最多。
  • 于2010年,联合创办了IC3 全称为「The Initiative For CryptoCurrency & Contracts」,目的是推进区块链基础设施的发展。
  • 比特币诞生后,发表论文《Selfish Mining》,证明了对比特币发起攻击并不需要 51% 的算力,如果矿工采用论文中的挖矿策略,就会挖到更多的比特币。诚实节点的全网算力至少需要 67% 才能保证系统的绝对安全。
  • Emin Gün Sirer 教授和团队转而研究如何安全保存加密货币的方案,提出了 Covenants 系统,主要是保障在资金被盗的情况下还可以取回。
  • 还研究过Layer 2网络,并提出 Teechain,类似于闪电网络。

愿景:实现所有资产数字化(现实资产和虚拟资产)

共识协议:Avalanche 和 Snowman 协议

代币:AVAX

发行上限:7.2亿(创世区块首先供给3.6亿枚)

采用权益证明机制(POS),两种方式质押获取奖励:

  • 验证者:至少质押2000个 AVAX
  • 委托:至少需要委托25个 AVAX 给验证者

交易费用机制:

  • 交易费用全部烧毁,而不是给验证者,增加AVAX的稀缺性
  • 交易发起者无需设置费用大小,由内建函数自动计算。网络越拥堵,费用越高
  • 创建子网需要的费用比普通转账要高,就是会消耗更多的AVAX

下图是官方给出的雪崩链与传统链的对比:

 总结来看,雪崩链的优势:

  • 吞吐量更大:超过4500 tps,远高于以太坊。
  • 交易终结更快:以比特币为例,比特币需要等待6个区块之后才能在概率上的保证你之前发送的交易不会被撤销或篡改。6个区块就是1小时。而雪崩链能在2秒以内完成。
  • 环保、不浪费电:BTC需要专门的矿机,ETH需要高性能的显卡,而雪崩链二手电脑的普通CPU就可以。
  • 验证者数量更多:雪崩链目前的验证者节点已经超过1000个,优于波卡。
  • 女巫攻击的防护机制:比特币和以太坊都是工作量证明,波卡和雪崩链是权益证明
  • 更安全:雪崩链的作恶节点比例需要达到80%的才能对网络构成威胁。

二、Avalanche 的架构

与传统区块链不同,Avalanche 不是一条区块链,而是许多区块链的集合,类似波卡。更准确的说, Avalanche 由很多个子网构成,子网下有很多条的区块链。

而在子网中,有一个特殊的子网,叫 Primary Network。它由3条区块链构成:

  • P链(Platform Chain):主要负责质押代币、协调网络验证者、创建自定义子网。当需要参与质押获得挖矿奖励时,是在这个链上进行的。
  • X链(Exchange Chain):主要负责点对点地创建和交易资产。我们一般从交易所提币到这个链上。
  • C链(Contract Chain):用于创建智能合约。地址格式同以太坊,主要在这个链上参与各种Dapp、DeFi项目。

 那么什么是子网呢?子网是一个验证小组:子网中有很多个验证节点,这些节点的工作是验证该子网下的单个或多个区块链。子网会设置成员资格条件,只有满足条件的验证者才能加入该子网。比如:

  • 要求验证者必须是某个国家的公民
  • 要求验证者完成实名认证
  • 要求验证者的电脑满足某种配置要求

另外子网还具有以下三个特点:

  • 每个区块链只可以由一个子网验证,但一个子网可以验证多个区块链
  • 验证者可以加入多个子网,但必须满足对应子网的成员资格条件
  • 每个验证者必须参与验证 Primary Network

接下来,我们来深入看一下 Primary Network 中的一些细节。Primary Network 相当于 Avalanche 的主网,负责验证 P链、X链和C链。这里也就明白了,为什么所有验证节点必须参与验证 Primary Network。因为节点越多越安全,Primary Network 负责的是整个 Avalanche 生态的安全。

P链、X链和C链的数据结构:P链和C链采用的是与传统区块链相同的线性结构,而X链的数据结构不是线性的,是一种叫做有向无环图的数据结构,简称Dag(之后会讲)。

共识协议:X链采用的共识协议也与其他链不同。X链采用 Avalanche 共识,P链和C链采用 Snowman 共识(两个共识的区别和实现方式会在之后说明)。

Primary network

 最后举一个形象的例子总结下Avalanche的架构。我们可以将 Avalanche 比作大学的一个专业,Primary Network 就是必修课,其他子网是选修课。所有同学相当于节点,同学们必须上必修课课程(维护网络安全),而选修课(相当于其他子网)可以由同学们自由选择。

有些同学想毕业后出国进修,所以他们会选择英语课(相当于实现特定功能的子网)。为了更好的完成英语的学习,同学们会组织各种学习小组(相当于区块链),如听力小组、作文小组等。

三、Avalanche 共识协议

共识是指一系列验证者对一个决议或决策达成一致的过程。在分布式系统过去40多年里,共识协议可以分成两大类,即经典共识协议(Classical Consensus Protocols)和中本聪共识协议(Nakamoto Consensus)。

Avalanche 共识就是将这两大类共识的优点结合,形成的新一代共识协议。Avalanche 共识协议让所有节点并行工作,随机询问其他验证者。经过足够多的重复子采样后,交易就可以大概率被认定为真。所以 Avalanche 共识是一种概率共识,,把出错的概率降到 几亿分之一。

(一)雪崩共识

Avalanche 共识的灵感来源于“吃瓜”,学术上叫 Gossip Network。比如某明星爆绯闻后,公众会有 “相信” 与 “不相信” 两种倾向。这个时候,小明就会询问身边的朋友或看微博评论以获取别人的观点(相当于对身边的人做抽样)。当获得的小样本的观点倾向于 “相信” 时,小明就会受到影响,也倾向于选择 “相信”。不光小明会 “吃瓜”,小红、隔壁老王、路人甲都会用类似的方法 “吃瓜”,很快,越来越多的公众就会对本次绯闻事件达成共识。即使过程中某明星出来辟谣(相当于作恶节点),但还是会向着某一个方向达成共识。接下来具体阐述 Avalanche 共识是如何实现的。Avalanche 共识的发展经历了4个阶段,每个阶段都在前一个基础上进行了升级。

1. Slush

第一个阶段是Slush, 是最简单的协议,也是雪崩共识家族中最基础的协议。Slush 中有很多节点,每个节点都有三种状态,即无状态、真和假,分别用黄色、蓝色和红色表示。

节点从无状态,即黄色开始。当某个节点收到交易后,该节点作为发起节点:

  • 首先,做出选择,蓝色代表接受交易,红色代表拒绝交易。假设该节点选择蓝色,即接受交易;
  • 接着,随机选择 5 个节点(5 是一个参数,实际要更大),询问各节点的选择;
  • 根据少数服从多数原则,确定小样本的倾向;
    • 如果5个中3个选蓝色,2个选红色,则小样本倾向为蓝色,发起节点维持原有状态不变;
    • 如果5个中1个选蓝色,4个选红色,则小样本倾向为红色,发起节点状态改为红色;

 以上过程,称为 子采样。由某个节点发起小样本抽样以达成局部共识。注意这里不是询问全部节点,而是随机询问小批量的节点,原理类似于机器学习中的小批量梯度下降,这是 Avalanche 速度快的一个原因。

只进行一轮子采样得到的结果是不可靠的,子采样会受到样本的随机扰动影响。只有进行足够多轮的子采样,也就是,重复子采样,才能大概率的确信该笔交易是否为真。

单个节点需要做的就是重复子采样。当某个节点被询问后,也就是被抽样后,相当于被激活,该节点就像之前第一个节点收到交易一样,重复着第一个节点需要做的工作。

首先,被激活的节点选择一个颜色,这里一个选择红色一个选择蓝色。然后分别进行重复子采样,并根据采样结果更新自己的选择。下边的节点收到的采样结果还是蓝色,所以状态不变;上边的节点将自己的状态更新为蓝色。

需要强调的是,为了演示方便,我只选择了2个。实际上被询问的5节点全部被激活,整个过程是并行的。信息传递的速度也是指数级别传播的,所以传播的速度会越来越快。就像滚雪球一样,开始很慢,逐渐加快速度,直到收敛,即达成共识。

Slush 具备以下特点:

  • 无记忆(memoryless):节点只保存当前状态的颜色,不保存历史记录;
  • 小样本:只询问小批量的节点,不像比特币要询问全部节点,所以会更快(原理类似小批量梯度下降);
  • 保证达成共识:即使在50对50的最坏情况下,也会因为样本的随机扰动使得结果倾向于某个颜色,同时重复采样会加强这种倾向;(例子:即使是抛硬币,小样本下也会出现某一面出现的次数大于50%。所以总会打破50/50的局面的。)
  • 不可逆:当网络有了一个显著倾向时(如蓝色占大多数),会加速向蓝色收敛,向红色收敛的概率则变得很低。这个过程类似滚雪球,沿着下坡方向会越来越快,但不会向上坡方向移动。

需要注意的是,当存在拜占庭节点或作恶节点时,Slush 协议安全性是不够的,这就引出了 Snowflake。

2. Snowflake

Snowflake 协议属于拜占庭容错算法(BFT),在 Slush 的基础上对每一个节点增加了一个计数器(counter)。具体来说:

  • 每个节点都有一个计数器;
  • 每一轮子采样完成后,如果颜色与上一轮相同,则计数器加1;
  • 每一轮子采样完成后,如果颜色不同,则计数器重置为0;
  • 当计数器的值超过阈值 β 时,则接受该节点所倾向的颜色。

也就是说,计数器记录的是连续获得相同颜色的次数,连续获得相同颜色的次数越多,说明分歧越小,当前结果的可靠性越高,当超过某个阈值时,就可以说该交易大概率是蓝色(或真)。

计数器可以防止拜占庭节点带来的负面影响。拜占庭节点通过引入不确定性,即他们的选择与诚实节点相反,以此来阻碍网络达成有效共识。

如果有拜占庭节点作恶,计数器的值会更频繁的归 0,很难超过阈值 β。对于拜占庭节点来说,只是在不停的重复子采样而不被接受,一直在做无用功。

3. Snowball

Snowball 在 Snowflake 原有计数器基础上增加了置信度(confidence)。Snowflake 中的计数器的记忆是短暂的,只能记录当前的数值,而不会保存历史的数值。而 Snowball 中 的置信度则记录了历史数值。

每一轮的子采样,都会带来随机扰动。而置信度考虑了历史数据,减少随机扰动带来的影响。

4. Avalanche

最终,Avalanche 在 Snowball 的基础上添加有向无环图(DAG:Directed Acyclic Graph)。DAG 是一种非线性的数据结构,而像比特币、以太坊等传统区块链的数据结构是线性的。一个明显的区别是一个 DAG 节点可以有多个父节点和多个子节点,而线性结构的节点只能有一个父节点和一个子节点(分叉不算)。

而 Snowman 共识建立在 Avalanche 共识之上,但对交易进行线性排序,即数据结构类似于比特币的线性结构。

四、具体的例子

举一个具体的例子来说明重复子采样、计数器和置信度如何在 Avalanche 共识中发挥作用。

假设每个区块只打包一笔交易,每轮子采样随机询问5个节点。β 等于6,即当计数器数值达到 6 时,该交易被接受。明确三个概念:

  • chit:当一轮子采样获得多数认可(子采样的过半数节点认可该交易),该交易获得1个chit(收据、凭证)
  • 置信度:该区块的chit与其所有后代区块的chit之和。
  • 计数器:计数器是每个区块及其后代连续获得多数认可的次数之和。

下图,交易B有2个后代D 和 E,B、D、E在上一轮子采样后均获得1个chit,所以交易B的置信度为3。交易A 有4个后代,其后代和自己都有1个chit,所以置信度为 4 + 1 = 5。

计数器计算方法类似,交易B的2个后代和自己都获得了1个chit,所以计数器的值应该为3。

当收到新交易G时,经过一轮子采样,交易G获得了多数认可,获得了1个chit。因为交易G为其他区块的后代区块,所以其他区块的置信度和计数器均加1。交易A的计数器数值从5变为6,满足了阈值 β 的要求,故被接受。

如果有人发动双花攻击,出现一笔与G冲突的交易G’,G 和 G’ 被放到冲突集合中。G’子采样没有获得多数认可(比如只获得了5个节点中的2票),所以G'没有得到chit。交易G'作为交易B和D的后代,交易B和D的计数器重置为0,置信度不变。而之前已经被接受的交易A不受影响。

对于两笔冲突的交易G和G'(即double spend,双花),各节点会接受置信度更高的交易G,并在其后边继续出块。

注:上面例子中的方框代表着一个一个的区块(官方命名为vertex,而不是block,为了好理解就本文还是叫成区块),每个区块包含父区块的哈希值和一些列交易。多笔交易被打包到区块后,看做一个整体被投票。如果一个区块被接受,那么其中的所有交易就都被接受;如果区块中有一笔交易不被认可,那么该区块以及其所有后代中的交易都被拒绝。

Snowflake to Avalanche:一种新型的亚稳态共识协议族 该论文于2018年5月首次披露,提出了一种基于亚稳态机制(metastable)的共识协议族。作者是一个神秘团队Team Rocket(火箭队?)。 所谓亚稳态,是指系统在某段时间内处于稳定状态,但在另外一段时间内可能是不稳定的。稳态代表了系统的最低能量点,而亚稳态则是一个局部的而非全局的最低能量点。以下图中的小球为例,如果用比较小的力推小球,则会停留在位置1这个亚稳态上,而如果用比较大的力... 阅读详情

相关推荐

万向区块链技术研究报告 | 雪崩协议 (Avalanche)技术调研

区块链技术迅猛发展,新想法、新概念、新名词层出不穷。万向区块链因此推出“技术研究报告”专栏,定期与大家分享在区块链行业创新及热门技术方面的研究成果,带领大家第一时间研究学习新技术,紧跟技术发展趋势,探索发掘技术的应用价值。 在《雪崩协议 Avalanche 技术调研》一文中,我们将共同探索Avalanche共识算法的工作原理、优缺点及其在联盟链中的应用场景。 本文作者:万向区块链通用架构技术部 陈炫慧 导论 2015年5月,康奈尔大学发表了一篇《从“雪花”到“雪崩”:一种新型的亚稳态共识协议族》.

WXblockchain1的博客 6477

公链之雪崩协议Avalanche(AVAX)

Avalanche是一个为去中心化金融应用所搭建的高性能公链。

西京刀客 1万+

如何开发和部署Avalanche智能合约

本篇技术教程将教大家如何在Avalanche区块链上开发和部署智能合约,并利用Chainlink Data Feeds将Avalanche上的混合型智能合约连通链下市场数据。 Chainlink Price Feeds现已在Avalanche主网上线,开发者能以Avalanche链完整的原生速度和低成本轻松获得Chainlink网络成熟可靠的喂价。Chainlink Price Feeds会从多个喂价源聚合数据,通过Chainlink去中心化的节点运营商网络将数据聚合至单一数据点,并保障数据的准确性以及市.

ChainlinkO的博客 3465

“雪崩共识”(Snowball Consensus)机制详细说明

每个节点(Node)会投票支持某个区块或交易。节点会随机与其他节点交流并传播自己的投票结果。如果某个区块或交易获得超过半数节点的支持,它就会被认为是最终确认的。

极客神殿 1178

avalanche:雪崩论文中讨论的各种共识算法的(当前为玩具)实现

雪崩 此仓库是的Go实现的开始。 目前,这是一个玩具实现,旨在对论文的思想进行编码。 目的是要有一个生产就绪的共识算法库来实现本文的各个部分。

avalanche:用Rust编写的Avalanche共识算法的教育研究实现

雪崩 用Rust编写的Avalanche共识的研究实现。 自述文件将很快更新。 现在,只需执行以下命令即可执行任何操作: cargo run Rustc版本 rustc 1.26.2 (594fb253c 2018-06-01)

Avalanche共识

1. 引言 Avalanche共识白皮书 中介绍了Avalanche区块链平台采用的Avalanche共识。 直观举例为: 房间里有很多人,大家一起决策中午是吃披萨还是烧烤。某些人初始可能选择披萨,另一些人初始选择烧烤。最终,大家的目的是达成共识。 每个人询问房间内的a random subset of people其希望午餐吃什么。若有多于一半选择披萨,则其也选择披萨——即采用其所询问的大多数人的选择。 每个人都重复以上过程,每轮,会有越来越多的人具有相同的选择。This is because the m

mutourend2010@gmail.com 958

Avalanche-怎样测试各种应用协议.

Avalanche-怎样测试各种应用协议.

Avalanche公链深度解析:创新共识、亚秒级最终性与生态竞争力

摘要:Avalanche定位为一个高性能、可扩展的Layer 1区块链平台,但它并不是一个新公链,其主网于2020年9月21日正式上线,有Ava Labs开发。Ava Labs成立于2018年,总部位于美国纽约,团队有康奈尔大学教授及其学生创立,聚焦于区块链技术的学术研究和工程实践。最近搞稳定币和Defi等Dapp的公链选型,看到这个不算新的公链令我眼前一亮,决定深度研究一下。 Avalanc...

weixin_40763397的博客 641

IEEE论文投稿必看:PDF eXpress报错font not embedded的3种修复方法(附Adobe Acrobat DC操作截图)

本文针对IEEE论文投稿时PDF eXpress系统常见的“font not embedded”报错,提供了三种核心修复方案。首先,详细解析了使用Adobe Acrobat DC进行专业修复的完整操作流程与关键技巧。其次,介绍了无需付费软件的开源与免费工具链(如Ghostscript)解决方案。最后,从源头出发,指导LaTeX和Microsoft Word用户在生成PDF时正确设置以确保字体自动嵌入,帮助研究者彻底解决格式问题,确保投稿顺利。

ujm56789012的博客 516

Claude Code长期记忆:优雅的上下文管理

ClaudeCode的上下文管理系统采用三层架构设计,通过智能压缩和优化策略在记忆容量与性能间取得平衡。系统包含短期记忆(高速工作区)、中期记忆(智能蒸馏器)和长期记忆(持久化知识库)。当Token使用率达到92%阈值时启动wU2压缩器,采用8段式结构化摘要保留关键信息,并配合智能文件恢复和渐进式预警机制。该系统通过分层处理、优雅降级和透明化交互,为AI应用提供了高效可靠的上下文管理方案,展现了在有限资源下实现智能记忆的艺术。

m0_53117338的博客 3812

Avalanche:公链中的隐形冠军

未来区块链之间一定会通过互操作形式连接在一起,不仅仅是让一条链上的资产转移到另一条区块链上,而是要构建一条数据、应用、服务、以及底层协议的通路,从这个角度来看,Avalanche更像是为区...

weixin_44672123的博客 948

深入解析Unity3D中PostLateUpdate突然占用大量时间的原因

在Unity3D的生命周期中,是一个在LateUpdate之后被调用的方法。它通常用于处理一些需要在所有更新(包括物理更新和动画更新)之后进行的逻辑。由于它在游戏循环的后期阶段被调用,因此它通常用于处理与渲染直接相关的任务,如相机调整、UI更新等。突然占用大量时间的问题可能由多种原因引起,包括复杂的逻辑处理、频繁的资源加载、不恰当的渲染优化、插件或第三方库的副作用以及内存泄漏或垃圾回收等。为了解决这个问题,开发者需要仔细审查和优化中的代码,同时利用Unity提供的工具来监控和分析游戏性能。

Yori_22的博客 979

near、solana、cardano、terra、avalanche

选取目前市值(截止2022-4-20)前20的几条公链作为比较对象,本文主要选取了near、solana、cardano、terra、avalanche这四条公链,其他几条公链以太坊、币安智能链、cosmos、polygon、波卡不在本次讨论范围之内。

KK下山去买菜 4025

【CTFWP】ctfshow-web40

CTFWP:ctfshow-web40

LongL_GuYu的博客 1861

【软件使用】Calibre部分提参的实战技巧与常见问题解析

本文深入解析Calibre部分提参(Partial Extraction)的实战技巧与常见问题,涵盖PEX、hcell和xcell文件的高级应用。通过实际案例展示如何提升电路仿真效率,解决时钟信号失真等复杂问题,并提供版图设计中的防坑指南,助力芯片设计工程师优化工作流程。

weixin_28717431的博客 160

区块链平台(Avalanche)

Avalanche凭借雪崩共识、三链架构和子网技术,在性能和灵活性上领先于多数公链,尤其在DeFi和企业级应用中表现突出。然而,中心化风险、生态单一性和历史稳定性问题仍需解决。随着Avalanche9000升级和全球采用计划推进,其有望在Web3和现实资产数字化领域占据重要地位,但需持续优化治理和拓展应用场景以应对市场竞争。

weixin_43156294的博客 2324

告别米级误差:手把手教你用Nordic nRF52840实现厘米级蓝牙测距(Channel Sounding实战)

本文详细介绍了如何利用Nordic nRF52840开发板和蓝牙信道探测(Channel Sounding)技术实现厘米级高精度测距。通过硬件配置、软件优化和实战案例,帮助开发者快速掌握低功耗蓝牙测距技术,适用于工业自动化、智能仓储等场景。

weixin_42741930的博客 476

Avalanche共识机制安全解析:随机抽样如何实现又快又稳?

分布式系统中,共识算法决定了网络在故障或恶意节点存在下的一致性。传统模型依赖全员验证,在开放公链中面临性能与去中心化的权衡。Avalanche采用概率性安全模型,通过随机抽样投票反复收敛,替代固定委员会的全量确认。每轮随机询问k个节点,结合alpha阈值与beta连续轮数,使攻击者的成功概率随轮次指数衰减。这种设计在保证高吞吐、低延迟的同时,为双花攻击、Sybil攻击及网络分区提供了可量化的防御边界。用户可根据业务风险偏好调整确认延迟,交易所在接入C链时可采用多节点交叉验证与确认窗口策略,平衡速度与安全。理

weixin_34208185的博客 356

双三相电机控制避坑指南:为什么你的SVPWM谐波大?四矢量调制实战解析

本文深入解析双三相电机控制中SVPWM谐波大的问题,并提供四矢量调制实战方案。通过分析谐波来源、四矢量调制原理及工程实现步骤,显著降低电流THD至3-5%,提升系统效率2.3个百分点。特别适合需要优化电机控制的工程师参考。

weixin_30645617的博客 397

【绝对要收藏-优秀论文范文】高项-度量绩效域

摘要:本文基于某水库数字孪生平台建设项目(2022.9-2023.5,645.97万元)的管理实践,从信息系统度量绩效域角度展开论述。项目构建了包含防洪调度等6大子系统的数字平台,实现洪水"四预"功能。重点分析了度量绩效域的五大要点:制定有效指标(如成本±8%偏差阈值)、多维数据采集、预警临界值设定、基于趋势的主动干预和持续改进机制。特别阐述了绩效问题的诊断方法,包括设备采购全周期成本分析、阶段性成本报告制度等。项目状态展示采用三维可视化看板,集成进度、成本、质量等多维度实时数据,最终实

xylllamm的博客 344

对话Ted:关于Avalanche的二三事

Avalanche是业内明星公链,在 2019 年 2 月完成了 600 万美金的 A 轮融资。a16z、Polychain、Coinbase 前 CTO Balaji Srinivas...

weixin_44672123的博客 1013

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Avalanche共识机制在秒级区块链确认中的应用实践

区块链共识机制是分布式系统的核心技术,其核心矛盾在于去中心化、安全性和性能的平衡。Avalanche共识通过创新的亚稳态决策算法,在保持去中心化的同时实现了秒级交易确认,突破了传统区块链的性能瓶颈。该技术在金融高频交易、物联网数据上链和游戏资产交易等场景展现出独特价值,特别是Chain33框架通过混合架构设计,将Avalanche的快速预确认与BFT的最终安全性相结合。实践中需注意网络拓扑优化、子网参数调优和智能合约设计等关键因素,这些工程实践对构建高性能区块链系统具有重要参考意义。

weixin_26742753的博客 142

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Avalanche Implementation -- Perlin

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34279579的博客 321

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: LibraBFT 共识算法介绍
下一篇: Polygon介绍
哦对的哦不对
博客等级 码龄5年 12粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值