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

EOS技术白皮书学习笔记(五)治理、脚本和虚拟机

本文由币乎社区(bihu.com)内容支持计划赞助在看本文前,最好先了解区块链相关概念:比特币,以太坊,钱包,智能合约,秘钥等本节将EOS技术白皮书第7节【治理】、第8节【脚本和虚

本文由币乎社区(bihu.com)内容支持计划赞助

在看本文前,最好先了解区块链相关概念:比特币,以太坊,钱包,智能合约,秘钥等

本节将EOS技术白皮书第7节【治理】、第8节【脚本和虚拟机】一起学习,对照前面的文章配合学习,有助于更好的理解EOS。

7、治理

EOS 是为商用分布式应用设计的一款区块链操作系统,以后EOS上会有很多应用,应用多了难免会有许多不可预见的问题,而这些问题不可能完全在系统软件层面被解决。所以,在遇到这方面问题的时候,EOS提前做好了解决方案。而目前存在的区块链产品没有这部分解决方案,例如我们熟悉的比特币和以太坊,因为没有这样的解决方案,社区经常因为一些原因分裂,导致分叉。2017年比特币已经被分叉无数次了,以太坊也已经出现了数次分叉,而这样的结果就是没有考虑到那些在软件层面之外的问题所造成的。

下面我们来学习下EOS是怎么做的?
EOS认识到,治理的权力应该给Token持有者,而不应该是区块生成者。所以EOS的做法是,Token持有者可以将自己的权利代理给区块生成者,这样区块的生成者就有了相应的权限(冻结账户、更新有缺陷的应用程序、提出对底层协议硬分叉的改变等)。当然权限代理出去后,并不是说区块生成者就可以随便乱用权限,那些权限是受限的、被监督、被检查的。
可以用下面的结论总结这种权力:
所有的区块链变更都需要区块生产者同意,如果区块生产者拒绝Token持有人想要的变更,那么他将被投票出局,如果区块生产者的变更没有经过Token持有人的同意,那么其他非区块生产者的全节点会拒绝该改变。

冻结账户

什么情况下需要冻结账户?
一个智能合约可能会出现异常,比如说因为bug的原因导致行为不正确或者资源消耗不在一个合理的范围内,这时候区块生产者就有权力冻结账户,冻结后这个账户所作的行为就没用了。当然也不是随便就能冻结,冻结账户需要21分之17的区块生产者同意才行,如果区块生产者滥用权力,解决方案也很简单,就是将他投票出局,这样被冻结的账户就会被解冻。

改变帐户代码

如果“冻结账户”已经不能解决问题,不可预知的代码(病毒)已经造成了破坏,此时EOS可以支持在不需要硬分叉的前提下修改账户代码。这有点类似于交易的回滚。当然与冻结账户类似,也需要21个中的17个区块生产者同意才行。

宪法

EOS操作系统可以用区块链技术在签名用户之间建立P2P服务协议或约束性合约,也就是所谓的“宪法”。宪法内容定义了仅依靠代码无法完全执行的用户间义务,同时结合相互间的公认规则,确立司法权和适用法律。每一个在网络中签名广播的交易,其签名信息中必须包含宪法的哈希值,以明确约束合约签名者。

关于这一块,也是为了解决当遇到代码无法解决的关于法律法规的问题时的做法。因为EOS是全球性的,每个国家都有不同的法律,那么在EOS上的软件或智能合约就需要遵循当地的法律。EOS把那些法律条款记录在哈希值里,当用户执行某些智能合约的时候,必须选择一个法律条款,通过这样的方式来约束合约签名者。

升级协议和宪法

我们都知道“宪法”会随着当地环境的变化而变化,所以EOS也提供了修改的方法。
EOS操作系统使用源代码定义宪法和协议,同时也定义了宪法及协议的更新方法。对宪法或协议进行变更,需要完成以下步骤:

1.区块生产者(译注:miner/delegate/witness,因此没有译作矿工)提交一个宪法变更动议,并获得17/21以上的赞成票;
2.区块生产者将17/21以上的赞成票维持连续30天;
3.要求所有用户都使用新宪法的哈希值确认交易;
4.区块生产者采用修改源代码的方式反映宪法变更,使用git提交的哈希值将变更提交到区块链上;
5.区块生产者继续将17/21以上的赞成票维持连续30天;
6.变更的代码7天后生效,源代码修改通过后,将有1周的时间来对所有节点的进行升级;
7.所有没有升级为新代码的节点将自动关闭。

根据EOS操作系统的默认配置,更新区块链来添加新功能这一进程需要2到3个月时间,而修复那些不需要更改宪法的非关键性漏洞需要1到2个月时间。
一般情况下变更所花费的时间比较久,当遇到特殊情况的时候,EOS也提供了解决方案。

紧急变更

面临一个损害用户利益的有害漏洞或安全漏洞时,区块生产者可以加速宪法变更过程。一般来说,加速新特性更新过程或修复无害漏洞,都是违反宪法的行为。

8、脚本和虚拟机

本节是EOS技术白皮书第8节,主要讲第三方开发者基于EOS系统的开发机制,相关脚本和虚拟机。

1.EOS操作系统将首先作为一个传递账户间已认证信息的平台
2.脚本语言和虚拟机的实现将独立于EOS操作系统技术
3.任何开发语言或虚拟机,只要有适当的、性能足够的沙箱,都可以通过API与EOS集成在一起。

上面说“只要有适当的、性能足够的沙箱,都可以通过API与EOS集成在一起”,这就有点像我们常用的短信接口,微信接口一样的。例如要在微信上开发小程序,就需要遵循微信提供的接口,开发好后就可以在微信上运行了。

模式定义的消息

在账户之间发送的所有消息都是由区块链共识状态的一个模式定义的,该架构允许消息在二进制和JSON格式之间的无缝转换。

账户和账户之间发送消息使用的是二进制的方式发送,这样更高效和易操作性,但是二进制人类是看不懂的,所以EOS支持数据可以转化为Json格式的字符串,这样我们就看的懂了。

模式定义的数据库

数据库状态也使用类似的模式定义,这确保所有应用程序存储的数据都以一种格式呈现,同时具备JSON的人类可读性,以及二进制格式的高效率存储和易操作性。

这点和上面相同,使用二进制存储数据,但是支持转换成json格式,供人类理解。

将身份验证与应用程序分离

为了最大化并行运算,为了将(从程序日志中重新生成应用程序状态的)计算任务降至最低。
EOS操作系统将验证逻辑分为三个部分:
1.确认消息在内部是一致的;
2.确认所有的前置条件都是有效的;
3.修改应用程序状态。
验证消息的内部一致性是只读的,不需要访问区块链状态,这意味着它可以最大化并行运算来执行。验证前置条件(例如需求平衡)也是只读的,因此也可以从并行运算中获益。只有对应用程序状态进行修改才需要写访问,并且需要按顺序对每个应用程序进行处理。
身份验证是验证消息是否可以应用的只读过程,应用程序实际上就是在做这项工作。实时的计算都需要执行,但交易一旦被包含在区块链中,就不再需要执行身份验证操作了。

这里和之前学过的“应用程序的确定性并执行”讲的内容相似,可以回顾之前的内容进行理解。

虚拟机独立架构

EOS操作系统软件的目的是可以支持多种虚拟机,同时可以随着时间推移持续按需求增加新的虚拟机。出于这个原因,本文不会讨论任何特定语言或虚拟机的细节,但即便如此,目前也已经有三种虚拟机正在评估接入EOS系统。

这应该和window上vm虚拟机差不多吧,意思就是在EOS这个系统中可以安装其他系统,这个其他系统就是在虚拟机上运行的。

Wren

Wren(http://wren.io)是一种小型的、快速的、基于类别的编程语言。Wren的开发人员将其描述为“就像是把小型tak文件装进lua大小的软件包,再加上一点Erlang特性,再包进一个熟悉的、现代的语法里面”。之所以选择Wren语言和虚拟机,是因为它的短小精悍、易于文档记录和理解的代码库。它还具有非常好的性能,并且可以很容易地嵌入C++应用程序中。

Web Assembly【web 组件】(WASM)

WASM是构建高性能Web应用程序的新兴Web标准,通过少量适配就可以被明确定义和沙箱化。WASM的好处在于业界广泛支持,因此可以用熟悉的语言开发开发智能合约,例如C或C++。

以太发人员已经开始适配WASM,以提供适当的沙箱并使用以太坊WASM定义(https://github.com/ewasm/design)。这种方法很容易改编后用于EOS系统软件集成。

以太虚拟机(EVM)

这个虚拟机已经被用于大多数现有的智能合约,并且可以在EOS系统区块链上使用。可以想象,在EOS操作系统区块链上,EVM合约可以在内部沙箱中运行,只需要少量适配就可以与其他EOS应用程序交互。

配合学习笔记系列文章一起读会更好理解哦
上一篇:EOS技术白皮书学习笔记(四) – 令牌模型和资源使用

本文首发于微信公众号:lin-mingtan 欢迎关注交流 .


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • Android源码中的Builder模式及其作用
    本文主要解释了什么是Builder模式以及其作用,并结合Android源码来分析Builder模式的实现。Builder模式是将产品的设计、表示和构建进行分离,通过引入建造者角色,简化了构建复杂产品的流程,并且使得产品的构建可以灵活适应变化。使用Builder模式可以解决开发者需要关注产品表示和构建步骤的问题,并且当构建流程发生变化时,无需修改代码即可适配新的构建流程。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
author-avatar
笨雄不笨
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有