精华内容
下载资源
问答
  • 做出与作出区别
    万次阅读
    2019-05-11 18:21:10

    参数检验与非参数检验的区别

     

    1,参数检验是针对参数做的假设,非参数检验是针对总体分布情况做的假设,这个是区分参数检验和非参数检验的一个重要特征。

    2,二者的根本区别在于参数检验要利用到总体的信息(总体分布、总体的一些参数特征如方差),以总体分布和样本信息对总体参数作出推断;非参数检验不需要利用总体的信息(总体分布、总体的一些参数特征如方差),以样本信息对总体分布作出推断。

    3,参数检验只能用于等距数据和比例数据,非参数检验主要用于记数数据。也可用于等距和比例数据,但精确性就会降低。

    非参数检验往往不假定总体的分布类型,直接对总体的分布的某种假设(例如如称性、分位数大小等等假设)作统计检验。最常见的非参数检验统计量有 3类:计数统计量、秩统计量、符号秩统计量

    ------------------------------------------------------------------------

    补充

    非参数检验

    1. 不需要对总体分布作任何事先的假设(如正态分布) 2. 从检验内容上说,也不是检验总体分布的某些参数,而是检验总体某些有关的性质,所以称为非参数检验 3. 前面进行的假设检验和方差分析,大都是在数据服从正态 分布或近似地服从正态分布的条件下进行的。但是如果总体的 分布未知,或对总体分布知之甚少的情况下,如何利用样本信息 对总体分布形态做出推断? 非参数检验 -指推断过程不涉及总体 分布中的参数

     

    转载自

    https://zhidao.baidu.com/question/327567757.html?qbl=relate_question_1&word=%B2%CE%CA%FD%B9%C0%BC%C6%D3%EB%B7%C7%B2%CE%CA%FD%B9%C0%BC%C6%C7%F8%B1%F0

    更多相关内容
  • 设计工程师在开发重型装备的过程中通常需要在不同种类的加速度传感器中做出选择。例如,在起重机,拖拉机,木材切割机以及建筑工程等重型机械中,设计者需要通过使用加速度传感器来测量设备工作时的俯仰和翻滚角。 ...
  • 设计工程师在开发重型装备的过程中通常需要在不同种类的加速度传感器中做出选择。例如,在起重机,拖拉机,木材切割机以及建筑工程等重型机械中,设计者需要通过使用加速度传感器来测量设备工作时的俯仰和翻滚角。 ...
  • 开源闭源的 5 个最大区别

    千次阅读 2022-05-11 01:06:04
    转载自|TARS 基金会作者 |...因此,单个公司或个人开发的软件相比,开源软件更便宜、更灵活。如今,开源软件已被公司和个人用户广泛使用,每年都会创建数千个新的开源项目。在本文中,我们将讨论开源开发模式...

    d28dd2b8c63b721d226f7604fbf8274b.gif

    转载自|TARS 基金会
    作者 | Isabella Ferreira

    开源软件是指公开可用的计算机源代码,其特性允许任何人都可以查看、修改和分发开源代码。其中,开源社区使用分散和协作的方式进行开源软件的开发。

    因此,与单个公司或个人开发的软件相比,开源软件更便宜、更灵活。如今,开源软件已被公司和个人用户广泛使用,每年都会创建数千个新的开源项目。

    在本文中,我们将讨论开源开发模式、自由、闭源和开源软件之间的区别,以及开源社区中的趋势。

    什么是开源模式

    开源社区有着一套用于开发开源软件项目的过程,也被称为开源开发模型[6]。首先,该过程是由一个新想法开始的,可以是一个新项目、新特性或是对现有项目的提升。然后,基于这个被提议的功能,社区里志愿的开发人员完成相关开发并创建一个对现有项目的合并请求。

    接着,社区中更有经验的人(通常是维护者或审查者)将审查被提交的代码更改并决定是否应将其合并到代码的主要版本中。审阅者/维护者也可能要求作出一定的修改。由社区决定在软件发布中包含该提议功能后,当前版本将作为一个开发版本来发布,即使它可能包含已知和未知的 bugs。

    然后,该软件将由社区进行测试,社区通过邮件列表或其他讨论渠道(例如Slack)讨论该软件,并提供反馈、创建错误报告或提交对遇到的错误的修复。项目成员和维护人员会记录并考虑社区反馈并改进实施,然后将提供新的开发版本。

    这个反馈循环一般需要发生多次,直到项目成员认为软件的执行足够稳定。当该执行能够作为稳定版本发布时,开发周期会随着开发版本(也称为开发树)继续进行,直到有更新的稳定版本可用。此外,开源软件是在开源许可下发布的,因此任何人都可以查看、修改和分发源代码。

    目前大多数开源项目都托管在 GitHub 上,一个分布式版本控制和源代码管理平台。GitHub 还允许开源项目跟踪错误、功能请求、文档和任务。通过访问 GitHub,用户可以访问源代码存储库,还可以通过开发新代码、修复错误或编写文档等方式为开源项目做出贡献。著名的开源项目有 Linux、 Kubernetes 和 TARS。

    如今,开源软件的使用比以往任何时候都多。开源项目可能会捐赠给开源基金会,这些非营利组织旨在支持新的开源项目,整合相关的开源项目,为项目提供业界的认可,通过治理促进开源项目的发展,并尽量减少潜在失败的风险。一个很好的例子是 2018 年捐赠给 Linux 基金会的 TARS 项目。在 LF 和广大开源社区的支持下,TARS 项目在 2020 年发展成为 TARS 基金会。

    自由、闭源和开源的区别

    自由软件运动由 Richard Stallman 于 1983 年通过 GNU 项目发起。这个想法是用户应该可以自由地查看源代码、修改并重新分发它。相反,专有或闭源软件是只有所有者才有权访问源代码的软件。闭源的软件不能被外界合法更改或复制,通常付费用户才能使用该软件。

    然而,自由软件长期以来被误解为人们认为自由软件意味着免费拥有它,也就是无需付费购买。事实并非如此!自由软件意味着开发者能够以自己想要的方式使用软件。

    为了解决这个误解,自由软件被开源取代,开源是一个专注于源代码的术语。开源一词是由 Christine Peterson 创造的,他在一个致力于使开发模型更广泛的工作组中提出了用开源软件替换自由软件的想法。该小组希望每个人都知道软件在共享、协作和开放时会更好发展,能够变得更灵活、更便宜,并且没有供应商锁定。

    1997 年,作为该工作组成员之一的 Eric Raymond 发表了著名的论文《大教堂与集市》 ,介绍了如何创建优秀的开源软件。到 1998 年,开源计划(OSI) 被创建并正式定义了开源术语及其定义。

    开源与闭源的 5 个区别


    在选择开源或是闭源软件时,考虑它们的特点是很有必要的,我们在下面列出了前 5 个差异[3]:

    1、价格:开源是没有许可或使用费,而闭源的使用成本会取决于软件的规模等。

    2、自由定制:开源是完全可定制的,但具体取决于开源许可证。然而,在封闭源代码中,用户需要向销售软件的公司请求更改。

    3、支持:流行的开源软件(如 Red Hat)有很多支持。除此之外,用户可以在用户论坛和邮件列表上找到社区的帮助。在闭源代码中,通常有一个专门的支持团队,支持取决于服务水平协议 (Service-level agreement; SLA)。

    4、安全性:开源软件有一个完整的社区来审查代码,这使得错误很快被发现并改正。在闭源代码中,软件分销商负责修复发现的错误。

    5、供应商锁定:开源没有供应商锁定。然而,在闭源代码中,使用专有软件要求大量投资,因此更换到不同的供应商可能会花费很多钱。

    谁在为开源做贡献

    与闭源软件相比,开源具有许多优势也被更广泛地使用。根据 2021 年  Octoverse 报告,2021 年有 7300 万以上的开发者使用了 GitHub 平台,其中 1600 万以上是新用户。

    图 1 显示了每个国家的项目数量。在 2017 年 11 月,在 Mombach 等作者进行的一项关于 5,388 个项目地分析中呈现这些项目分布在超过 77 个国家。

    这些年来,中国的项目一直在显着增长。从 2012 年到 2018 年,Linux 基金会的中国会员增加了 400% 以上 [4]。此外,中国公司现在在云原生计算基金会托管的项目的贡献排名第三,仅次于美国和德国。作为中国项目成长的一个例子, TARS 过去一年贡献者数量增加了 13%,提交数量增加了 34.23%。

    2675910bdcece7bd7ced1f88b2e6a335.png
    图 1:每个国家/地区的 GitHub 项目数量 [1]

    同样,2021 年 GitHub 上的大多数活跃用户来自北美和亚洲(见图 2)。虽然北美的活跃用户数量与 2020 年相比下降了 2.3%,但亚洲的活跃用户数量增加了 0.3%。

    关于 GitHub 用户,94% 的开源用户是男性,只有 6% 的开源贡献者是女性。根据一项开源调查 [5],与男性相比,为开源做出贡献的女性人数非常少,因为女性更有可能遇到让她们感到不受欢迎的语言或内容以及刻板印象。此外,女性也比男性更有可能向她们认识的人寻求帮助,而不是在公共论坛或渠道(如在开源软件中)寻求帮助。

    0977e0f3cb62dab39791ca3118f659e8.png
    图 2:活跃用户的地理分布,来自 2021 年 GitHub Octoverse 报告

    除了活跃用户数量众多,许多公司也为开源做出了贡献。根据开源指数(open source index),截至 2022 年 1 月,谷歌、微软和红帽是拥有员工为开源做出贡献的前 3 名组织(详见下图)。

    96742422377f3cf83dd4969ddf81474c.png
    图 3:组织按员工年初至今在 GitHub 上的开源贡献量排名,摘自 Open Source Index。

    总结

    开源软件比闭源软件有很多优势,其中包含的层面有价格、自由定制、技术支持、安全性以及供应商锁定。此外,美国和中国是 2021 年开源的主要贡献者,尤其中国项目一直在增长,而且中国开发者将成为国际开源软件组织的重要力量之一。  

    文献参考
    [1]Mombach, Thais, et al. “Open source development around the world: A comparative study.” arXiv preprint arXiv:1805.01342 (2018).
    [2]https://medium.com/intuit-engine‍ering/open-source-where-are-the-women-ae20623529ca
    [3]https://www.synopsys.com/glossary/what-is-open-source-software.html
    [4]https://merics.org/en/short-analysis/china-bets-open-source-technologies-boost-domestic-innovation
    [5]https://www.toptal.com/open-source/is-open-source-open-to-women
    [6]http://aaaea.org/Al-muhandes/2008/February/open_src_dev_model.htm


    腾源会是腾讯云成立的汇聚开源项目、开源爱好者、开源领导者的开放社区,致力于帮助开源项目健康成长、开源爱好者能交流协助、开源领导者能发挥领袖价值,让全球开源生态变得更加繁荣。

    8567dca6da40bccaec793a38c0721881.png

    欢迎关注「腾源会」公众号,期待你的「在看」👇

    展开全文
  • 这种找硬币方法其他找法相比,拿出的硬币个数是最少的。**这里使用的找硬币算法为:首先选出一个面值不超过六角三分的最大硬币,即二角五分;然后从六角三分中减去三角五分,剩下三角八分;再选出一个面值不超过...

    贪心算法

    当一个问题具有最优子结构性质时,可用动态规划法求解。有时会有更简单有效的算法。考察找硬币的例子。假设有4种硬币,它们的面值分别为二角五分、一角、五分和一分。现在要找给顾客六角三分钱。这时,自然地拿出2个二角五分的硬币、1个一角的硬币和3个一分的硬币交给顾客。这种找硬币方法与其他找法相比,拿出的硬币个数是最少的。这里使用的找硬币算法为:首先选出一个面值不超过六角三分的最大硬币,即二角五分;然后从六角三分中减去三角五分,剩下三角八分;再选出一个面值不超过三角八分的最大硬币,即又一个二角五分,如此一直做下去。这个方法实际上就是贪心算法。顾名思义,贪心算法总是做出在当前看来是最好的选择。 也就是说,贪心算法并不从整体最优加以考虑,所做的选择只是在某种意义上的最优选择。当然,我们希望贪心算法得到的最终结果也是整体最优的。找硬币算法得到的结果就是一个整体最优解。

    找硬币问题本身具有最优子结构性质,可以用动态规划算法来解,但贪心算法更简单,更直接,并且解题效率更高。这利用了问题本身的一些特性。例如,上述找硬币的算法利用了硬币面值的特殊性。如果硬币面值改为一分、五分和一角一分,而要找给顾客的是一角五分钱。还用贪心算法,将给顾客1个一角一分的硬币和4个一分的硬币。然而3个五分的硬币显然是最好的找法。虽然贪心算法不是对所有问题都可以得到整体最优解,但是对范围相当广的许多问题能够产生整体最优解,如最小生成树问题、图的单源最短路径问题等。在一些情况下,即使贪心算法不能得到整体最优解,但其最终结果却是最优解的很好的近似解。

    例:活动选择问题

    题目描述:设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si <fi 。如果选择了活动i,则它在半开时间区间[si, fi)内占用资源。若区间[si, fi)与区间[sj, fj)不相交,则称活动i与活动j是相容的。也就是说,当si≥fj或sj≥fi时,活动i与活动j相容。

    活动安排问题: 要在所给的活动集合中选出最大的相容活动子集合。

    活动安排问题的关键是如何按照一定的顺序安排活动,使得选出的活动间相容并能安排尽量多的活动。

    题解:由于输入的活动以其完成时间的非减序排列,所以每次总是选择具有最早完成时间的相容活动加入集合A中。直观上,按这种方法选择相容活动为未安排活动留下尽可能多的时间。也就是说,贪心选择的意义是使剩余的可安排时间段极大化,以便安排尽可能多的相容活动。

    若被检查的活动i的开始时间Si小于最近选择的活动j的结束时间fi,则不选择活动i,否则选择活动i加入集合A中。

    贪心算法并不总能求得问题的整体最优解。但对于活动安排问题,贪心算法greedySelector却总能求得的整体最优解,即它最终所确定的相容活动集合A的规模最大。这个结论可以用数学归纳法证明。

    #include<iostream>
    using namespace std;
    /*假设输入的活动结束时间按照增序排序。
    若输入活动的结束时间未排序,可对活动进行排序然后进行选择。
    */
     
    int s[12],f[12];
    bool a[11];
    int n=11;
    int Selector()
    {
        a[1]=true;
        int j=1;
        int count=1;
        for (int i=2;i<=n;i++) 
    	{
    		if(s[i]>=f[j]) 
    		{   
    			a[i]=true;   
    			j=i;     
    			count++;          
    		}
            else 
    			a[i]=false;
    	}
    	return count;
    }
     
    int main()
    {
    	cout<<"活动序号:"<<endl;
    	for(int i=1;i<=11;i++)
    		cout<<i<<" ";
    	cout<<endl<<"活动开始时间:"<<endl;
    	for(int i=1;i<=11;i++)
    		cout<<s[i]<<" ";
    	cout<<endl<<"活动结束时间:"<<endl;
    	for(int i=1;i<=11;i++)
    		cout<<f[i]<<" ";
    	int count=Selector();
    	cout<<endl<<"一共选择个"<<count<<"活动如下:"<<endl;
    	for(int i=0;i<=n;i++)
    		if(a[i])
    			cout<<i<<" ";
    	return 0;
    }
    

    贪心算法的基本要素

    贪心算法通过一系列选择来得到问题的解,所做的每个选择都是当前状态下局部最好选择,即贪心选择。许多可以用贪心算法求解的问题中可以看到,它们一般具有两个重要的性质:贪心选择性质和最优子结构性质。

    1. 贪心选择性质
    所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。在动态规划算法中,每步所做的选择往往依赖于相关子问题的解。因而只有在解出相关子问题后,才可以做出选择。而在贪心算法中,仅在当前状态下做出最好选择,即局部最优选择。 再去解做出这个选择后产生的相应的子问题。贪心算法所做的贪心选择可以依赖以往所做过的选择,但决不依赖将来所做的选择,也不依赖子问题的解。正是由于这种差别,动态规划算法通常以自底向上的方式解各子问题,而贪心算法则通常以自顶向下的方式进行,以迭代的方式作出相继的贪心选择,每作一次贪心选择就将所求问题简化为规模更小的子问题。

    对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所作的贪心选择最终导致问题的整体最优解。证明的大致过程为:首先考察问题的一个整体最优解,并证明可修改这个最优解,使其以贪心选择开始。做了贪心选择后,原问题简化为规模更小的类似子问题。然后用数学归纳法证明通过每一步做贪心选择,最终可得到问题的整体最优解。其中,证明贪心选择后的问题简化为规模更小的类似子问题的关键在于利用该问题的最优子结构性质。

    2. 最优子结构性质
    当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。 问题的最优子结构性质是该问题可用动态规划算法或贪心算法求解的关键特征。

    3. 贪心算法和动态规划算法的差异

    共同点: 贪心算法和动态规划算法都要求问题具有最优子结构性质,这是这两类算法的一个共同点。
    区别: 动态规划算法中,每步所做的选择往往依赖于相关子问题的解,因而只有在解出相关子问题时才能做出选择。而贪心算法,仅在当前状态下做出最好选择,即局部最优选择,然后再去解做出这个选择后产生的相应的子问题。

    贪心:每一步的最优解一定包含上一步的最优解,上一步之前的最优解则不作保留;

    动态规划:全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有的局部最优解 。

    举例说明:也就是说,假如你要求第十步的最优解,那么第十步的最优解肯定与第九步的最优解有关,而第九步的最优解肯定与第八步的最优解有关。可以这么理解,贪心算法第十步的最优解得把前面九步的最优解都用上了,但是动态规划你需要求第十步的最优解,这个最优解可能只与第八步,第三步,第一步有关,与第九步没有关系,我们为什么选择第八步而不选择第九步呢?是因为我们在计算第十步的最优解的时候其实把1-9步的组合的情况都计算了,选择了其中最优的解,也就是第八步的解,其实第十步解的构成与第九步没有关系,动态规划相当于穷举了1-9步最优情况下的组合,选了其中最优的作为第十步的最优解,而贪心算法第十步的最优解肯定是由第九步构成的。

    求一个问题的最优解相当于遍历所有的子集来找最优解,但是这样解随着解空间的维度成指数增长,动态规划其实就是一种遍历,但是他是带备忘录的遍历,对于前面算到的子问题,仅就不在计算而是直接查看备忘录,直接调用之前保存的值,这样就节省了大量的时间。

    展开全文
  • 1.Deciding when and who gets to propose a block 2.Deciding how commitments are logged & communicated 3.How byzantine behavior is documented 4.Punishment for byzantine behavior 使各种共识协议的区别在于...

    本文翻译自BM在Medium的文章,比较了当前的几种主流共识算法,论述了在DPOS在拜占庭容错机制下...
    本文翻译自BM在Medium的文章,比较了当前的几种主流共识算法,论述了在DPOS在拜占庭容错机制下的优势和可用性,原文见https://medium.com/@bytemaster/dpos-bft-pipelined-byzantine-fault-tolerance-8a0634a270ba。

    原文翻译

    There are two general blockchain consensus systems: those that produce unambiguous 100% finality given a defined set of validators and those which do not provide 100% finality but instead rely on high probability of finality.

    有两种普遍的区块链共识系统:在给定一系列验证者下,达成100%的确认;依赖于大概率,但不保证100%的最终确认。

    The first generation blockchain consensus algorithms (Proof of Work, Proof of Stake, and BitShares’ Delegated Proof of Stake) only offer high probability of finality that grows with time. In theory someone could pay enough money to mine an alternative “longer” Bitcoin blockchain that goes all the way back to genesis.

    第一代区块链共识算法(PoW,PoS,以及BitShares的DPoS)仅提供了随时间增长的大概率的确定性。从理论上讲,有人可以支付足够的钱来分叉一条更长的比特币区块链,分叉的链甚至可以追溯到创世区块。

    More recent consensus algorithms, whether HashGraph, Casper, Tendermint, or DPOS BFT all adopt long-established principles of Paxos and related consensus algorithms. Under these models it is possible to reach unambiguous finality under all network conditions so long as more than ⅔ of participants are honest.

    最近的共识算法,无论是HashGraph,Casper,Tendermint还是DPOS BFT都采用Paxos早已经确定的原则和相关共识算法。在这些模式下,只要有超过2/3的参与者是诚实的,就可以在所有网络条件下达成确定性的共识。

    Objective and unambiguous 100% finality is a critical property for all blockchains that wish to support inter-blockchain communication. Absent 100% finality, a reversion on one chain could have irreconcilable ripple effects across all interconnected chains.

    对于所有希望支持跨链通信的区块链来说,客观而明确的100%共识确认是一个关键属性。如果没有100%的确认,一条链上的重复,可能会在所有相互关联的区块链上产生不可调和的连锁反应。

    The abstract protocol for these more recent protocols involves:

    1.Propose block

    2.All participants acknowledge block (pre-commitment)

    3.All participants acknowledge when ⅔+ have sent them pre-commitments (commitment)

    4.A block is final once a node has received ⅔+ commitments

    5.Unanimous agreement on finality is guaranteed unless ⅓+ are bad and evidence of bad behavior is available to all

    ▲Abstract BFT Life Cycle

    一些最新共识协议的摘要包括以下几点:

    1.提案区块

    2.所有参与者承认这个区块(处于“预提交”状态)

    3.当⅔的区块已经发送给参与者“预提交”状态消息, 所有参与者承认这个“预提交”(处于已提交状态)

    4.一旦节点收到⅔+的“已提交”消息,这个区块就被确定下来。

    5.最终被确定下来的明确协议是有保证的,除非⅓+节点的诚信度不高,并且所有人都看到不良行为记录。

    What makes the various consensus protocols different are:

    1.Deciding when and who gets to propose a block

    2.Deciding how commitments are logged & communicated

    3.How byzantine behavior is documented

    4.Punishment for byzantine behavior

    使各种共识协议的区别在于:

    决定何时和何人去提案一个区块。

    决定如何记录和交流保证承诺

    拜占庭行为的记录方式

    拜占庭行为的惩罚方式

     

    Some of these differences are political and some of them are technical in nature.Examples of political differences include:

    1.DPOS elects the set of proposers & validators based upon stake

    2.Casper relies on proof-of-work to determine when and who and when gets to propose and bonded-stake-weight to determine who the validators are

    3.DPOS punishes objective and subjective bad behavior by voting people out

    4.Casper only punishes objective bad behavior by slashing bonds

    其中一些差异是政治性的,其中一些差异性是技术性的。政治差异的例子包括:

    1.DPOS根据权益选举一组提案者和验证者

    2.Casper依靠PoW来确定何时和何人提案一个区块,以及用抵押权益权重来决定谁是验证者。

    3.DPOS通过票选出局来惩罚主观和客观的不良行为

    4.Casper通过削减保证金,而且仅惩罚客观的不良行为

    Under normal conditions, the political differences make no day-to-day impact on the experience of users relying on the consensus mechanism to order and finalize transactions. The threshold for malicious behavior is so high and the penalties so great that for all practical purposes it doesn’t happen.

    It is the technical differences in the protocols that give rise to real-world impact on user experience. This includes things such as latency until finality, degrees of finality, bandwidth, and proof generation / validation overhead.

    在正常情况下,政治分歧不会对依靠共识机制订购和确定交易的用户的体验产生日常影响。恶意行为的门槛如此之高,惩罚如此之大,以至于所有的实际目的都不会发生。

    协议的技术差异会对用户体验产生真实的影响。这包括直到确认的延迟,确认的程度,带宽以及证明生成/验证的开销等事情。

    The simplest possible algorithm has everyone reach consensus on one block before any progress can be made on the next block. This involves every participant sending every other participant two messages per block. In a global network the speed of light limits the practical latency from time of proposal to the time a node receives ⅔+ commit messages to about one second (500ms round trip latency * 2 round-trips). All networks I have observed seem to be in the 2–3 second latency camp. These simple protocols also have a “timer” which introduces a new proposal if no consensus can be reached over the validity of the current proposal. This timer is generally longer than the expected confirmation time.

    Protocols like Casper attempt to minimize the overhead by relying on proof-of-work for short-term consensus and only reaching finality over every 100th block (checkpoint). This means Casper-based chains reach finality every 20 to 30 minutes.

    最简单的算法是每个人都可以在一个区块上达成共识,然后才能在下一个区块上取得进展。这意味着,每一个参与者给其他参与者在每个区块上发送两条信息。

    在全球网络中,光速限制了实际的延迟,从提案的时间到节点接收⅔+提案消息的时间大约为1秒(500ms往返延迟* 2次往返)。

    我观察到的所有网络似乎都在2-3秒的延迟阵营中。这些简单的协议也有一个“计时器”,如果没有就当前提案的有效性达成共识,则会引入新的提案。该计时器通常比预期的确认时间长。

    像Casper这样的协议试图减小开销,它的方案是依靠工作证明来达到短期共识,并且每第100个区块(即检查点)就会达成最终的确定性。这意味着基于Casper的区块链每20到30分钟才能达成最终的确定性。

    DPOS BFT Pipeline Consensus

    Modern Delegated Proof of Stake with BFT as implemented in EOSIO uses a pipelined approach to deliver the proposal, pre-commitment, and commitment messages. This means under normal operating conditions, every block advances the finality of one block and this is achieved by only requiring one proposal per time slot. In other words, the cost of DPOS with BFT finality in terms of signature verifications, hash calculations, network bandwidth, etc., is equal to the cost of older DPOS systems that relied upon eventual consistency and the longest chain rule similar to Bitcoin and Ethereum (pre Casper).

    DPOS BFT 流水线化的共识机制

    如今在EOS系统中所采取的的基于拜占庭容错的DPOS共识机制使用了一种流水线的方式来传输提案、预提交、已提交这三个状态的消息。这意味着在正常的情况下,每一个区块都会促进区块的确定性,并且这是通过每个时间空档仅需要一个提案来实现的。换而言之,基于拜占庭容错的DPOS的传输机制,无论是在签名验证、哈希计算还是网络带宽等方面,都与之前的DPOS体系是一样的,他们都基于最终的一致性和最长链法则,有点类似比特币和以太坊。

    Only DPOS BFT can efficiently scale to an unlimited number of validators (at cost to latency). Other protocols grow the resource requirements for finality with O(2N) the number of participants as everyone must talk to everyone twice for each block or checkpoint. With more parties involved,more signatures, network overhead, and storage are required and there is greater latency.

    只有DPOS BFT可以高效的扩展至无限的验证者数量(基于延迟成本)。其他协议以0(2N)个参与者的数量增加了对达成确定性的资源需求,因为对于每一个区块或检查点来说,每个人都必须与其他人交流两次。有了多方参与,就需要更多的签名、网络成本和存储空间,这会造成巨大延迟。

     

    Assuming DPOS BFT with two second block interval and 21 producers, finality can be reached after 1 minute, but a new block reaches finality every two seconds. This is achieved by pipelining the BFT confirmations. Platforms like EOSIO produce blocks every 500ms, but only rotate proposers every 12 blocks. This means BFT finality takes about 3 minutes based upon pure BFT DPOS block confirmations. The end result is 10x faster than Casper for finality for individual blocks, but a new block reaches finality every two seconds versus every 30 minutes.

    假设在DPOS BFT机制下出块间隔为两秒并具有21个生产者,这保证可以在1分钟后可以达成最终确认,但是新的区块每两秒达成最终确定性。 这是通过流水线化BFT确认实现的。 像EOSIO这样的平台每500毫秒产生一个区块,但是只能每12个区块进行一次更迭。 这意味着基于纯粹的BFT DPOS区块确认,最终需要大约3分钟。 结果就是以比Casper快10倍的速度获得单个区块,一个新区块每两秒就可以完成最终的确定性,比Casper漫长的三十分钟快多了。

    ▲DPOS BFT w/ optional Low-Latency Confirmation

    DPOS Hybrid Pipeline / Realtime BFT

    There are many applications where a three minute time for finality is undesirable and/or the DPOS proofs for light clients for a particular block are larger than desired. In this case, a blockchain can make the design choice to do a BFT pre-commit & commit message over every pending block. This gives DPOS-BFT chains finality latency of 1–2 seconds at the expense of the additional network overhead, storage requirements, and CPU usage. Unlike protocols such as Tendermint/Cosmos there can be multiple proposals “in-the pipeline” at the same time. It is even possible that some blocks never receive the “real time” commitment due to network splits, but never the less they are eventually indirectly confirmed.

    DPOS混合流水线化/即时拜占庭容错

    有许多应用程序需要三分钟的时间才能达成确定性,并且特定区块的轻客户端DPOS证明比预期的要大。 在这种情况下,区块链可以让设计人员选择在每个待形成区块上执行BFT预提交和提交消息。 这会使DPOS-BFT链的终端延迟为1-2秒,但会增加网络开销、存储要求和CPU使用率。 与Tendermint / Cosmos等协议不同,同时可以有多个“在线”提案。 由于网络分裂,有些区块甚至有可能从未收到“实时”消息,但他们最终会被间接确认。

    With the hybrid approach light clients can validate a block with 15 signatures and/or use more advanced cryptographic techniques to merge commit signatures into a single signature. Without the commit messages light clients can still reach BFT finality using a number of consecutive block headers.

    使用混合方法,轻客户端可以验证具有15个签名的区块或使用更高级的加密技术将提交签名合并到单个签名中。 如果没有提交消息,轻客户端仍然可以使用多个连续的块头来达到BFT的确定性。

     

    Degrees of Security

    It has long been understood that for many applications, such as blog posts and social media voting, waiting for 100% finality is overkill when 99.999% finality can be achieved in less than a second. Protocols like Casper give users the option of relying on Proof of Work confirmations when waiting for the next checkpoint is overkill.

    安全性

    人们早就知道,对于很多应用程序,比如博客文章和社交媒体投票,等待100%的确定性是浪费时间的,而99.999%的确定性可以在不到一秒内完成。 像Casper这样的协议,让用户在等待下一个检查点时依赖工作量证明来确认是不值得的。

    Some full nodes may not care to process the overhead of all BFT pre-commit/commit messages when all they require is blockchain state. It is enough to know that the block producers (proposers/validators) are reaching real-time consensus and that their blockheaders eventually prove BFT consensus a couple minutes later.

    当所需要的是区块链状态时,一些完整的节点可能并不在意处理所有BFT预提交/提交消息的开销。 知道区块生产者(提议者/验证者)正在达成实时共识,并且他们的区块头最终在几分钟后达成BFT共识,这已经足够了。

    Each consensus algorithm makes certain choices for users and degrades to less-secure variations in different ways. 

    Tendermint/Cosmos/Ripple don’t give users a choice to operate with anything less than full finality. Ethereum gives users a fall-back to proof-of-work, and DPOS-BFT falls back to the original DPOS guarantees.

    每一个共识算法都会为用户作出明确的选择并通过不同的方法消除不安全的可变因素。

    Tendermint / Cosmos / Ripple不允许用户选择使用未经完全确定的任何事物。 以太坊使得用户退回到PoW的时代,而DPOS-BFT则可以回归到最初的DPOS证明机制。

    It is even possible to layer the Casper checkpoint algorithm with slashing conditions on top of the DPOS BFT block proposal system. Such an approach would create multiple independent validator sets with both political and economic incentives for good behavior.

    在DPOS BFT区块提案系统之上,甚至可以通过削减保证金的机制将Casper检查点算法分层。 这种方法将创建多个独立的验证者集合,对于良好的行为既有政治激励又有经济激励效果。

    User Experience

    Delegated Proof of Stake with BFT optimizes the nominal case while being no-worse in the worst case. Under normal conditions, elected block producers are trusted public figures with legal liabilities and highly reliable nodes. The probability that a produced block will reach finality is already 99.999% which means that the average user gets near-certain finality in under a second. This is reliable enough for almost all day-to-day financial transactions. Larger financial transactions, such as buying a car, merely require the user to wait a few seconds for absolute finality.

    用户体验

    DPoS机制结合BFT不仅优化了常规情况,并且能在最坏的情况下及时挽救。在常规情况下,当选的节点是被公众信赖的,肩负法律责任且高度可靠。最终能够成功出块的概率早已达到了99.999%,这意味着每个用户在一秒内就能获得基本确定的结果,完全能够满足所有的日常交易。对于诸如购买汽车等这类较大型的金融交易,用户也只需要等待几秒钟就能完成交易。

    Each user can decide for themselves how much overhead and/or delay they wish to incur and how big the proofs they want to generate for inter-blockchain communication, whereas other protocols do not give users that choice.

    每个用户都可以自行决定开销数目或者他们想要搁置的、以及区块链间通信交流中他们想要得到的证明,而其他协议不会给用户这种选择。

    Conclusion

    All modern consensus algorithms that follow the BFT consensus principles originally introduced the 1980’s can reach a secure and final state in the worst-case of a partitioned network with ⅓ byzantine participants. Only DPOS BFT and EOSIO is optimized for the 99.999% case of 100% honest nodes without network partitions. DPOS BFT achieves this optimized performance without sacrificing the security guarantees that other protocols provide.

    所有遵循BFT共识原则的现代共识算法最初都是于二十世纪八十年代引入的,可以在分区网络的最坏情况下保证三分之一的“拜占庭”参与者达到最终安全状态。 只有DPOS BFT和EOSIO实现了对99.999%诚实节点进行优化,而无需网络分割。DPOS BFT无需牺牲其他协议提供的安全保证就实现了此项优化性能。

     

    展开全文
  • 相反,它和大数据,人工智能,云计算有着密不可分的联系,今天主要讲讲它和人工智能的区别与联系。 区别 一、什么是物联网? 1,物联网在之前被定义为通过射频识别(RFID)、红外线感应器、全球定位系统、激光扫描器、...
  • 1、更新项目至此版本: ...也不能提交,在更新后的版本做出修改,将提交失败2、复原至此版本: 格要复原的版本置为最新的版本,改交最新的版本号(执行更新操作,工作副本不变);在更新后的版本做出修改,提交成功 ...
  • 人工智能大数据的区别有哪些?下面37号仓小编给大家介绍一下。 什么是人工智能? 人工智能是一种计算形式,它允许机器执行认知功能,例如对输入起作用或作出反应,类似于人类的做法。传统的计算应用程序也会对数据...
  • 算法思想:将原问题划分成若干个规模较小而结构原问题相似的子问题,递归的解决这些子问题,然后再合其结果,就得到原问题的解 特征: 该问题的规模缩小到一定的程度就很容易解决 该问题可以分解为若干个规模较...
  • 《思考,快慢》学习总结

    千次阅读 2019-08-22 19:02:23
    这些就是导致我们做出的很多决策其实都是依赖系统1的直觉反应,而不是经过系统2的理性分析计算的----但对于这点,我们甚至都一无所知。 二、大脑思考机制引发的心理学效应 由于系统1和系统2的这种运作模式,...
  • 我们从辨别力的角度讨论后者,即做出公正的判决和所作出判决的合法性。 然后提出了一个关于自动化系统性能基准测试的论点,并就司法程序的侵蚀提出了批评。 我们以关于人类推理和黑匣子系统的公正性判断的相对合法...
  • 自从“大数据”一词走红以来,数据相关的一切都如雨后春笋般涌现。Web抓取,Web采集,Web挖掘,数据分析,数据挖掘等。有些词在某些时候可以互换,这使得理解起来更加困难。在竞争激烈的营销行业,深刻全面理解...
  • 贪心算法动态规划的区别

    万次阅读 多人点赞 2018-05-21 23:17:50
    要想清楚两者的区别,首先就要了解两者的基本概念性质。 贪心算法 基本思想:贪心算法并不从整体最优上加以考虑,它所做的选择只是在某种意义上的局部最优解。 基本要素:最优子结构性质和贪心选择性质。 ...
  • 图中数据为模拟数据 在商业世界中,管理决策人员获知的每条信息,作出的每个决定,都是关乎企业生存的关键。两者相比,商业智能BI产品已经得到了企业的认可,例如派可数据,有成熟的可视化自助分析,有零代码数据...
  • 机器视觉和计算机视觉是两个既有区别又有联系的专业术语。 机器视觉(machine vision)偏重于计算机视觉技术工程化,能够自动获取和分析特定的图像,以控制相应的行为。计算机视觉(computer vision)是采用图像...
  • 由于卷积层中输出特征面的每个神经元与其输入进行局部连接,并通过对应的连接权值局部输入进行加权求和再加上偏置值,得到该神经元输入值,该过程等同于卷积过程。[1]同样,图像识别的实质是将图像的像素数据经过...
  • IDSIPS的区别(HIDS、NIDS)

    千次阅读 2019-01-11 14:52:01
    HIDS和NIDS有什么区别 所谓入侵检测(Intrusion Detection),就是通过从计算机网络或计算机系统中的若干关键点收集信息并对其进行分析,从中发现网络或系统中是否有违反安全策略的行为或遭到袭击的迹象,并对此做出...
  • 1.立案和受理的区别(刑事和民事中立案和受理的区别) 法律规定:民事诉讼法123条,对符合本法第一百一十九条的起诉,必须受理。符合起诉条件的,应当在七日内【立案】,并通知当事人;不符合起诉条件的,应当在七日...
  • RTOSlinux区别

    万次阅读 2016-09-20 17:40:27
    多道批处理系统之间,有着截然不同的性能差别。用户的需求具体表现在以下几个方面: 人—机交互 共享主机 便于用户上机  分时系统的基本思想  时间片 :是把计算机的系统资源(尤其是 CPU时间)进行时间上...
  • 详说css预处理器(以及less、sass、stylus的区别

    万次阅读 多人点赞 2017-08-31 10:00:23
    我们一般用“.scss”就好,至于这两种文件扩展名的区别在于“.sass”是Sass语言文件的扩展后缀名,而“.scss”是SCSS语言文件的扩展后缀名,至于Sass和SCSS的详细区别这里不做介绍。你可以简单的理解为他们都是CSS预...
  • 贪心 基本思想 狭义的贪心算法指的是解最优化问题的一种特殊方法,解决过程中总是做出当下最好的选择,因为...这是贪心算法可行的第一个基本要素,也是贪心算法动态规划算法的主要区别。 贪心算法则通常以自顶向下
  • 以前的review只有编辑具体评价内容才能够上评,现在无需任何内容一样可以进行评价,区别最大的就是在于现在的ratings数量日渐增多,比以前更容易获得。但是现在的权重是否有改变,这才是卖家对此最大的疑点。不少...
  • 年度绩效管理持续性绩效管理的区别: 年度绩效管理 持续性绩效管理 年度反馈 持续性反馈 薪酬挂钩 薪酬脱离 指令、强制 指导、引导 聚焦结果 聚焦过程 基于劣势 基于优势 易有偏见 客观驱动 Pact组织在OKR+...
  • 具体区别为:各级机关中履行司法、行政执法、法制工作职责,以及为社会公共管理提供法律服务的职位,申论考试使用A类试卷;各级机关中从事财务管理、审计、经济管理等工作的职位,申论考试使用B类试卷;各级机关中除...
  • 俗理解T检验F检验的区别

    万次阅读 2018-07-15 19:36:20
    俗理解T检验F检验的区别2016年09月22日 11:36:52阅读数:24981,T检验和F检验的由来一般而言,为了确定从样本(sample)统计结果推论至总体时所犯错的概率,我们会利用统计学家所开发的一些统计方法,进行统计检定。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,694
精华内容 10,677
热门标签
关键字:

做出与作出区别