深入了解以太坊

news/2025/4/22 2:35:04
想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】
链客,有问必答!!

一、关于以太坊
        2013年,V神发布以太坊白皮书,2014年7月开始以太币的预售,圈内人称这种代币发行叫做“币众筹”,通过为期42天的预售,以太坊团队通过预售60102216个以太币募集了3万多个比特币,另外还对预售之前参与开发的早起贡献者、长期从事项目研究的开发者,分别按照当时以太币发售总量的9.9%进行分配,所以以太坊正式发行时有7200多万个以太币。以太坊预售结束后,采用工作量证明机制POW进行挖矿,每年按照当时发行总量的26%奖励矿工。
        2014年10月,以太坊将区块链的出块时间从60秒缩减到了12秒,目前基本稳定在15秒。每个区块奖励5个以太币,虽然都是采用POW挖矿机制,但是以太坊的出块机制和比特币还是有区别的,由于以太坊的出块时间短,导致以太坊很容易形成孤块。孤块是指不在最长链上的区块,比特币的孤块没有任何区块奖励,但是在以太坊中,孤块可以被引用,被引用的孤块被成为“叔块”,他们打包的数据也会记录在区块链中。和比特币不一样,以太坊的叔块有奖励,每个叔块可以获得4.375个以太币的奖励。
        以太坊是一个可编程的,图灵完备的区块链开发平台,相当于一个去中心化的全球计算机。在一个编程系统之上,通常会有一些编译和执行的虚拟机来做支撑。JAVA有JVM,在以太坊里,也有以太坊的虚拟机EVM可以执行任意复杂的算法代码,开发者可以使用现有的JavaScript或者python等编程语言,在以太坊上创造出自己想要的应用。通过以太坊的虚拟机,可以很简便的发行数字资产、编写智能合约、建立和运行去中心化的应用、成立去中心自治组织等。
        以太币(ETH)又被成为以太坊内部的燃料,和币类数字资产不同,以太坊除了用于转账,还用于支付智能合约的费用。为了避免以太坊区块链上充斥垃圾合约和垃圾应用,在以太坊上建立和运行智能合约,必须用以太币(ETH)支付智能合约费用。例如:在以太坊区块链上转账A新创造的数字资产,需要用以太币(ETH)支付手续费,而不是A新创造的数字资产。
二、关于以太坊虚拟机
        以太坊是一个可编程的区块链,与比特币不同的是,比特币定位于一个应用,而以太坊定位于平台,可以在这个平台上利用智能合约做各种应用。这样,以太坊成为了多种不同类型去中心化区块链的平台,包括但不限于密码学货币。
        以太坊在狭义上表示一套协议,这套协议定义了去中心化应用的平台,它的核心是以太坊虚拟机EVM。与其他区块链系统一样,以太坊同样包括 了一个点对点(P2P)协议。以太坊区块链数据库由连接到网络的多个节点维护和更新,这个网络上的每个节点都运行EVM并且执行相同的指令。因此,以太坊也可以被称为“世界计算机”。这种在整个以太坊网络上进行大规模并行计算不是为了获得更高的效率。实际上这个过程是以太坊上的计算比在传统计算机上的要缓慢而且昂贵很多。每个以太坊节点运行EVM是为了在区块链中保持一致。去中心化一致性使得以太坊具有非常高的容错性,保证了零宕机,而且使存储在区块链上的数据永远不可改变以及无法审查。
三、以太坊是如何工作的
        以太坊包含了许多类似比特币的功能和技术,同时也做了某些修改和创新。比特币区块链纯粹是一个关于交易的列表,而以太坊的基础单元是账户。以太坊区块链跟踪每一个账号的状态,账号间的所有状态的转移都是价值和信息的转移。以太坊有2种账户类型:
    外部拥有的账户(EOA),被私钥控制且没有任何代码与之关联;
    合约账户,由它们的合同代码控制且有代码与之关联,且只能由一个EOA账户“激活”。
        对于大多数人来说,两者最基本的区别是外部账户是由人掌控--因为人能控制私钥,进而控制外部账户。而合约账户则是由合同代码控制的,只有当外部账户发出指令,合约账户才能进行相应的操作。广受欢迎的“智能合约”是合约账户中的代码,是一个交易发送到账号上执行的程序。用户可以通过部署代码到区块链中创建一个新合约。
        和比特币一样的是,每次交易,用户都需要支付一定小额的费用,用来维护网络安全、稳定。节点通过收集交易费用来验证整个网络。网络中的节点(矿工)接受、传播、验证和执行交易,然后整理归档这些交易,打包成一个区块,与别的矿工竞争将区块添加到区块链中,添加成功的矿工将收到奖励。通过这些措施,鼓励人们为全网提供更多的算力。


https://dhexx.cn/news/show-2571295.html

相关文章

修改iptables,导致Docker应用意外停止无法启动问题

1.问题描述:服务器上开启端口时,修改了防火墙规则。重启之后发现docker某些应用意外停止,无法启动。 2.分析问题:首先对防火墙规则进行了修改,影响网络访问、端口开放等。使用 iptables -nvL命令查看各个rules多数据的处理。发现…

oracle中使用impdp数据泵导入数据提示“ORA-31684:对象类型已经存在”错误的解决...

转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/47448751 本文出自【我是干勾鱼的博客】 oracle中使用impdp数据泵导入数据时,假设导入之前已经创建了用户,会提示错误:“ORA-31684:对象类型已经存…

简单标签SimpleTag

想要开发自定义标签,大多数情况下都要重写doStartTag(),doAfterBody()和doEndTag()方法,并且还要知道SKIP_BODY,EVAL_BODY等等的变量代表着什么,在什么方法中使用。这样实在是太麻烦了! 因此,为了简化标签开发的复杂度…

Log4net使用(一)

转自:http://blog.csdn.net/much0726/article/details/3725563 转自:https://q.cnblogs.com/q/52302/ log4net,既要按日期分割日志文件,又要按文件大小分割。 -----------------------------------------------------------------…

spring源码之bean加载原理之XML篇

一、首先spring 中定义bean的方式有三种 基于xml定义 <beans><bean id"mybean" class"cn.test.***.UserService" init-method"init" destory-method"destory"> </bean> <bean id"message" class&quo…

Nginx基础笔记

压力测试工具&#xff1a;ab ab -n 请求数 -c 并发数 请求urlNginx&#xff1a; Nginx (engine x) 是一个高性能的HTTP和反向代理服务&#xff0c;也是一个IMAP/POP3/SMTP服务。 特点&#xff1a; IO多路复用epoll轻量级CPU亲和(affinity)&#xff1a;把每个worker进程固定在一…

java(4) 异常

1.Throwable 继承体系* Eorro* Exception --RuntimeException 该类及其子类用于表示运行时异常&#xff0c;Exception类下所有其他子类都用于表示编译时异常。--其他子类2.Throwable 常用方法* String getMessage() 返回此 throwable 的详细消息字符串* void printStackTrace…

maven之pom.xml配置文件详解

一、什么是pom pom代表项目对象模型&#xff0c;它是Maven中工作的基本组成单位。它是一个XML文件&#xff0c;在项目的根目录中。pom包含的对象是使用maven来构建的&#xff0c;pom.xml文件包含了项目的各种配置信息。 创建一个POM之前&#xff0c;应该要先决定项目组(groupI…

购物车作业01

li [手机,电脑,鼠标垫,键盘,鼠标] print(欢迎光临!) dic {} for x in li:print({}\t{}.format(li.index(x),x))dic.setdefault(li.index(x),x) while 1:num input(>>>/输入Q退出)if num.upper() Q:breakif num.isdigit():num int(num)if num > 0 and num <…

spring源码之bean加载原理之注解篇

上一节我们讲了xml如何加载bean&#xff0c;本次讲解如何通过注解加载、初始化bean。不懂得可以看下我上一篇文章&#xff1a;前文提要 注解加载的话分&#xff1a;xml 和 配置。如下&#xff1a; <context:component-scan base-package"xxx"/>ComponentScan …