当前位置: 首页 > 编程日记 > 正文

EOS技术学习笔记

链客,专为开发者而生,有问必答!

此文章来自区块链技术社区,未经允许拒绝转载。
在这里插入图片描述

EOS.IO软件引入了一种新的块链架构,旨在实现分布式应用的性能扩展。这是通过创建一个可以构建应用程序的类似操作系统的架构来实现的。该软件架构提供帐户,身份验证,数据库,异步通信以及在数以百计的CPU或群集上的程序调度。该技术的最终形式是一个块链体系架构,该区块链每秒可以支持数百万个交易,同时普通用户无需支付使用费用。

我是这样理解这个摘要的.

大家好,我是EOS.IO。我的基因是区块链,我立志长大后要成为一个超级大的平台,我的理想是所有人都能在我的平台上轻松的搭建区块链应用。从小我就为了这个目标而努力,并且做了很多事情,例如:提供帐户,身份验证,数据库,异步通信以及在数以百计的CPU或群集上的程序调度(不懂没关系,我都为你做好了,您只要用就行了)。在我这个平台上每秒可以支持数百万个交易,同时普通用户不用付钱。

其实我有点像安卓系统或者苹果系统,开发者在我这里开发软件,而普通用户可以直接用。又有点像微信,微信提供了账户,支付系统等各种基础设施,然后你们在上面开发小程序就可以了。是不是很牛逼,那就支持我吧。

  1. 背景

区块链技术源于2008年推出的比特币,自那时以来,企业家和开发人员一直在努力推广该技术,以便在单个块链平台上支持更广泛的应用。

现在已经有许多针对特定场景的应用了,例如:BitShares(去中心化交易所【2014】)和steem(社交媒体平台【2016】),这两个应用已经成为日活跃用户上万的成功应用。

这两个应用的性能已经非常高,用户体验和我们平常经常访问的新浪、淘宝等网站差不多了。

但是呢,这样的应用并不多。区块链应用没有广泛传播,其主要的原因是现有的区块链平台使用费用高昂,性能有限。

要创建EOS的想法,就是在这样的背景诞生的。

  1. 区块链应用的要求

要解决费用高昂,性能有限等问题,成为一个成功的区块链应用平台块,应该满足以下要求:

1、支持百万级别用户

2、免费使用

3、轻松升级和Bug恢复

4、低延迟

5、串行性能

6、并行性能

以上6点是保证用户在使用软件过程中保持操作顺畅的基本条件,缺一不可。想想要是你打开一个软件需要等10秒,好不容易登录进去了,又一卡一卡的,你会继续用下去吗?要是我,肯定立马卸载,从此再也不想看到这个软件了。普通用户对软件的基本要求就是操作顺畅,然后才能谈下一步,从这一点看以上要求很重要。

3.共识算法(DPOS)

要满足上面提到的性能要求,到目前为止只有一种技术能够做到,那就是区块链共识算法(DPOS)。这种算法为什么这么叼,它的原理又是怎样的呢?

它的中文名叫做股份授权证明机制(又称受托人机制),它的原理是让每一个持有比特股的人进行投票,由此产生101位代表 , 我们可以将其理解为101个超级节点或者矿池,而这101个超级节点彼此的权利是完全相等的。从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。DPOS的出现最主要还是因为矿机的产生,大量的算力在不了解也不关心比特币的人身上,类似演唱会的黄牛,大量囤票而丝毫不关心演唱会的内容。

根据这种算法,全网持有代币的人可以通过投票系统来选择区块生产者,只要被选中,谁都可以参与区块链的生产。

EOS.IO里预计每3秒生产一个区块,相比目前市值最大的比特币10分钟产生一个区块已经快了200倍。任何时刻,只有一个生产者被授权产生区块。如果在某个时间内没有成功出块,则跳过该快。

区块是什么,干嘛用的呢?

现实世界记录交易数据一般用账本,账本里的每一页都记录交易数据,而这一页就相当于区块链里的区块,许多区块组成了一个大的账本,这个账本就是一条链。于是,转为计算机类的语言,交易(数据)写在区块里,区块是一种记录交易的数据结构。其实区块链是一个数据库(系统),一个放在非安全环境中的分布式数据库系统。(数据库是存储数据用的)

EOS.IO架构中区块产生是以21个区块为一个周期。在每个出块周期开始时,21个区块生产者会被投票选出。前20名出块者首选自动选出,第21个出块者按所得投票数目对应概率选出。所选择的生产者会根据从块时间到处的伪随机数进行混合。以便保证出块者之间的连接尽量平衡。

如果出块者错过一个块,并且在最近24小时内没有产生任何块,则这个出块者将被删除。者确保了网络的顺利运行。

交易确认

由DPOS共识算法维护的区块链一般出块者都是100%在线的。这就是说一个交易平均1.5秒后,会被写入区块链中,同时被所有出块节点知晓这笔交易。这就意味着只需要1.5秒,一笔交易可以认定为99.9%被区块链接收了。

在区块链里,一笔交易要被确认,需要被大部分节点肯定并记录,因为网络以及其他未知因素的影响,就会导致区块链的应用会有延迟和数据吞吐量的问题,而EOS所说的1.5秒就可以被确认,如果真的能做到这样的效果,真的是很牛逼了。

在应用使用过程中,有一些非正常情况,例如:软件bug,网络堵塞或恶意出块者出现。对于这些情况EOS也做了相应的处理,确保一个交易是不可逆转的。

交易证明(TaPoS)

当一笔交易被确认后,系统就会把交易信息记录到区块里,以便以后审查。当然这里还有许多问题需要处理,例如:如果每个人都有一个账本,难保有人会篡改账本内容。EOS是这样处理的:EOS.IO软件要求每个交易都包括最近的区块头的哈希。

这个哈希有两个目的:

1.防止分叉区块链上出现大量交易记录;

2.使得系统能感知到用户是否在分叉出来的区块链上

随着时间的推移,所有用户最终直接确认块链,这使得难以伪造假冒链,因为假冒将无法从合法链路迁移交易。

相关文章:

PHP的一种缓存方案静态化

1,解决的问题。 2.如何实现。 面对大流量网站频繁访问数据库的一种优化,比如博客网站。不可能每个人查看都访问一次数据库。为了解决大量不必要访问的问题。 可以把第一次的内容保存为html页面。再以后定义的过期时间内都访问该静态页面。 以下是一个小的demo index…

python获取机器唯一标识_开发中常用工具 - 获取设备的唯一标识、UDID、UUID、keychain保存UUID、判断网络...

UDID全名:Unique Device Identifie(设备唯一标识符)说明:UDID,即设备唯一标识符,这是除序列号之外每台iOS设备的独一无二的号码。UDID只是和设备相关的,是用来区分每一个唯一的iOS设备(包括iPhone、iPad等)&#xff0c…

区块链安全入门笔记

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 虽然有着越来越多的人参与到区块链的行业之中,然而由于很多人之前并没有接触过区块链,也没有相关的安全知识,安…

PHP程序员的技术成长规划

PHP程序员的技术成长规划 作者:黑夜路人(2014/10/15) 按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个…

【资源共享】RK3288 WiFiBT 开发配置参考说明

本文档主要介绍RK3288平台的WiFi&BT配置说明。 下载地址:http://dev.t-firefly.com/thread-13642-1-1.html更多开发资料请到社区精华系列“资源共享”专栏下载http://dev.t-firefly.com/forum-263-1.html转载于:https://www.cnblogs.com/TeeFirefly/p/9001757.h…

软件工程实训有必要吗_人工智能专业值得读吗?就业如何?

要说这几年的风口,人工智能首当其冲。热门是否代表了好就业?我觉得不是;那是不是就不好就业?我觉得也不是。先来看看这些耸人听闻的标题吧——“人工智能人才缺口超过500万,补齐人才短板乃是当务之急“人工智能就业前景…

区块链共识算法:PoS即权益证明 DPoS委托授权的权益证明

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 随着比特币价格暴涨,基于比特币的区块链技术引起各方关注,其核心就是共识算法。随着区块链技术的发展共识算法也在不断创新与…

【洛谷P1697】货车运输

首先,对于所有从x能到达y的路径中,限重越大越好 因此我们用Kruskal最大生成树得到一片森林(不一定都联通) 之后dfs维护森林的深度和LCA的预处理limit[x][0](x向上跳2^i步的边权最小值) 对于每个询问&…

win7上Docker使用

1、启动docker: Docker Quickstart Terminal (快捷键)启动docker 2、SECURECRT工具链接docker: 转载于:https://www.cnblogs.com/aibaiyang/p/9007074.html

qt4的quick程序升级到qt5_最新8月书单出炉!送给你程序员

8月好书赏不停,喜欢的就收藏一下。1、计算广告:互联网商业变现的市场与技术(第2版)作者:刘鹏、王超全球第一本全面讲解计算广告与互联网变现秘密的专业图书升级版北冥乘海生 刘鹏老师力作&#…

都说区块链颠覆未来,区块链究竟能改变什么?

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链,有时像个天使,有时像个魔鬼。 有人说它是金融泡沫,说他是彻底的庞氏骗局;有人说它能改变世界…

python银行家算法代码_避免死锁的银行家算法C++程序实现

本篇博文为追忆以前写过的算法系列第二篇(20081021)温故知新目的:具有代表性的死锁避免算法是Dijskstra给出的银行家算法。本实验是基于银行家算法的思想通过编写C程序实现银行家算法的计算机程序化。使其更有用。同一时候也加深了有关自愿…

shell脚本编程学习笔记(四)shell操作数据库

一、数据库基本操作 1)登录mysql服务器:mysql -u root -p 密码 2)查看数据库:show databases 3)查看表:show tales from db; 4)查看表结构:desc table; 5)创建表&#xf…

WebFrom模拟MVC

如&#xff1a; aspx前台 这样写生成页面时不会产生新的html标签&#xff0c;用控件则会产生新的html标签 <h1><% title %></h1> <p><% content %></p><ul> <% foreach (string item in list){%> <li>…

区块链的未来在哪里

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 经历了早期的野蛮成长之后&#xff0c;区块链行业的发展开始回归理性客观的发展阶段。探索区块链对于互联网行业的支持作用&#xff0c;而非颠覆作…

Spring注解之 @EnableScheduling计划任务注解

要实现计划任务&#xff0c;首先通过在配置类注解EnableScheduling来开启对计划任务的支持&#xff0c; 然后在要执行计划任务的方法上注解Scheduled&#xff0c;声明这是一个计划任务 示例&#xff1a;计划任务执行类 在这个类中的方法上需要Scheduled注解配合EnableSchedulin…

python爬虫案例_推荐上百个github上Python爬虫案例

现在学生都对爬虫感兴趣&#xff0c;这里发现一些好的github开源的代码&#xff0c;分享给各位1、awesome-spider 该网站提供了近上百个爬虫案例代码&#xff0c;这是ID为facert的一个知乎工程师开源的&#xff0c;star6000https://github.com/facert/awesome-spider​github.c…

二元一次方程组

二元一次方程组&#xff08;C语言&#xff09; 学生&#xff1a;缪晓敏&#xff0c;施嘉依 #include <stdio.h>#include <math.h>int main() {double a1,b1,c1,a2,b2,c2,d,e,f;printf("a1 b1 c1 : ");scanf("%lf %lf %lf",&a1,&b1,&am…

超级账本(Hyperledger Fabric)源码分析之一:总览

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 一、编译 1、环境准备 需要提前在linux或者mac机器上安装如下软件 1&#xff09;Go&#xff0c;注意设置好gopath&#xff08;笔者安装的是go1.8…

建模与设计01

转载于:https://www.cnblogs.com/invisible2/p/9016732.html

Bzoj2110--Wc2011Xor

考虑如果我们已经到达了终点&#xff0c;那么从终点出发显然可以异或上图中任何地方一个环的异或值后再回到终点&#xff0c;那么我们显然可以在到达终点后根据环的异或值调整自己 所以我们可以先处理出环上的异或值&#xff0c;我的做法是先做一颗生成树&#xff0c;然后dfs确…

usb打印机命令_Hyper-V与你的虚拟机共享设备、USB设备

仅适用于 Windows 虚拟机。增强会话模式可通过 RDP(远程桌面协议)将 Hyper-V 与虚拟机连接起来。 这不仅会改善你的整体虚拟机查看体验&#xff0c;而且使用 RDP 连接还可以使虚拟机与你的计算机共享设备。 由于 RDP 在 Windows 10 中默认打开&#xff0c;所以与 Windows 虚拟机…

以太坊源码分析之随心笔记

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 以太坊索引 table.go 定期随机选取一些节点找他们要他们的节点&#xff0c;放到本地&#xff0c;也就是一个随机找节点的table 里头的bucket 和 no…

ACM_求N^N的前5位数和后5位数(数论)

NNNNN Time Limit: 2000/1000ms (Java/Others) Problem Description: 对于整数N&#xff0c;求N^N的前5位和后5位&#xff08;1057题加强版) Input: 多组测试数据&#xff0c;每组测试数据输入为一个整数n&#xff08;6 < n < 10^9&#xff09;&#xff0c;n为0时结束。 …

ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)

我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理&#xff08;序列化为json&#xff0c;xml等&#xff09;&#xff0c;但是如果Controller的自动序列化后的结果不是我们想要的该怎么办呢&#xff1f;其实在MVC中有一个GlobalConfiguratio…

ai为什么要栅格化_三大优势告诉你,为什么一定要加盟AI定制家居

随着90后、00后逐渐成为社会的主力&#xff0c;他们也进入到了住房和家居市场&#xff0c;成为消费的主力军。和以前的消费者不同&#xff0c;生活条件更为优越的他们有能力&#xff0c;有想法追求更好的生活和居住环境&#xff0c;于是定制家居市场在这样的市场条件下蓬勃发展…

当区块链遇到零知识证明

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 什么是零知识证明 零知识证明的官方定义是能够在不向验证者任何有用的信息的情况下&#xff0c;使验证者相信某个论断是正确的。这个定义有点抽象&a…

从条纹边框的实现谈盒子模型(转)

类似下面这个图形&#xff0c;只使用一个标签&#xff0c;可以有多少种实现方式&#xff1a; 假设我们的单标签为 div: 1<div></div>定义如下通用 CSS: 12345div{position:relative;width: 180px;height: 180px;}这一题主要考查的是盒子模型 Box Model 与 背景 bac…

python表格筛选打印_按行名进行表格筛选:awkpythonR

引入Excel确实很强大。用Excel查找一行很容易&#xff0c;同样的事情1000次就很复杂。批量查询的需求应运而生~实验狗确实需要各种帮助&#xff0c;不然就傻傻复制啦~1.awk读取多个文件awk BEGIN{OFSFS"\t"}ARGIND1{print $0, $1;}ARGIND2{} file1 file21)awk初步提取…

SVG和canvas

1、SVG实现的圆环旋转效果 参考&#xff1a;http://www.softwhy.com/article-6472-1.html 2、SVG中的图形可以通过 transform"matrix(0,-1,1,0,0,440)"进行旋转。 3、svg代码可以单独放在一个后缀名为 .svg 的文件中保存起来。这个文件就是矢量图片文件。 这点用来制…