以太坊
简介
以太坊是一条区块链,其中嵌入了计算机。 它是以去中心化、无需许可、抗审查的方式构建应用程序和组织的基础。
在以太坊宇宙中,有一台规范化计算机(称为以太坊虚拟机,或 EVM),其状态得到以太坊网络中所有人的一致同意。 每个参与以太坊网络的人(每个以太坊节点)都会保存一份该计算机的状态。 此外,任何参与者都可以广播请求这台计算机进行任意计算。 每当广播这样的请求时,网络上的其他参与者就会检查、验证并进行(“执行”)该计算。 该执行会导致以太坊虚拟机的状态变化,并且在整个网络中传播。
以太币
简介
以太坊上的原生加密货币
铸造Eth
以太坊分类账上创造新以太币的过程
燃烧Eth
指的是以太坊发生交易时,支付的基础燃料费被销毁,从而永久退出流通的过程
传输 ETH
查询 ETH
去中心化应用
定义
一个 dapp 的后端代码在一个去中心化 P2P 网络上运行
特点
去中心化:dapp 在以太坊上运行,没有任何一个人或团体可以控制
确定性:无论执行的环境如何,都执行相同的功能
图灵完备:dapp 可以根据所需资源执行任何操作
隔离性:在 EVM 的虚拟环境中执行,不会因只能合约问题妨碍区块链网络的正常运行
开发好处
零停机时间:一旦部署,整个网络都能支持提供服务
隐私:不需要真实身份来部署或与Dapp交互
抵制审查:没有实体可以阻止提交交易,或读取区块链数据
数据完整性 :区块链本身不可更改以及无可争议
无需信任的计算/可验证的行为:智能合约可以分析并保证以可预测的方式执行,而无需信任中心化组织。
开发缺陷
维护难,发布的区块链代码和数据难更改,很难更新
性能开销大,每个节点都得运行和存储交易,而且达成共识也需要时间
网络拥塞
用户体验差
集中化,建立在以太坊基础层之上的用户友好型和开发人员友好型解决方案最终看起来都像集中式服务
账户
定义
是一个具有以太币 (ETH) 余额的实体,可以在以太坊上发送交易。 帐户可以由用户控制,也可以作为智能合约部署。
类型
外部所有的帐户 (EOA)
由任何拥有私钥的人控制
创建帐户是免费的
一般先随机生成私钥,然后根据签名算法生成公钥, 通过获取公钥 Keccak-256 哈希的最后 20 个字节并校验码前面添加 0x,可以为帐户获取公共地址。
可以发起交易
外部所有的帐户之间只能进行以太币和代币交易
由一对加密密钥组成:控制帐户活动的公钥和私钥
有助于证明交易实际上是由发送者签名的,并防止伪造。
合约帐户
部署到网络上的智能合约,由代码控制
创建合约存在成本,因为需要使用网络存储空间
合约地址通常在将合约部署到以太坊区块链时给出。 地址产生自创建人的地址和从创建人地址发送的交易数量(“nonce”)
只能在收到交易时发送交易
从外部帐户向合约帐户发起的交易能触发可执行多种操作的代码,例如转移代币甚至创建新合约
合约帐户没有私钥。 相反,它们由智能合约代码逻辑控制
交易
定义
交易是由帐户发出,带密码学签名的指令。 帐户将发起交易以更新以太坊网络的状态。
交易类型
常规交易:从一个帐户到另一个帐户的交易。
合约部署交易:没有“to”地址的交易,数据字段用于合约代码。
执行合约:与已部署的智能合约进行交互的交易。 在这种情况下,“to”地址是智能合约地址。
燃料
定义
执行交易需要耗费燃料
基础费
每个区块都有一个基础费作为底价。
该公式将前一个区块的大小(所有交易中使用的燃料数量)与目标大小进行比较。 如果超过目标区块大小,每个区块的基础费将最多增加 12.5%。
优先费(小费)
激励矿工将交易添加到区块中的费用,不会销毁
最高费用
要在网络上执行交易,用户可以为他们愿意支付的交易执行费用指定最高限额。交易要完成,必须基础费加小费低于最高费用
存在原因
每次计算都需要收费,这样可以防止不良行为者给网络带来垃圾信息,确保以太坊安全
交易生命周期
1. 发送交易,加密算法生成交易哈希
2. 节点将交易广播,并与其他交易一起包含在一个集合中
3. 挖矿节点挖取区块,并将交易包含进入区块,验证交易
4. 验证后广播,让其他节点同步,同步成功后将交易状态变成最终确定状态
区块
定义
区块是指一批交易的组合,并且包含链中上一个区块的哈希。 这将区块连接在一起(成为一个链),因为哈希是从区块数据中加密得出的。区块的任何修改,hash都将改变,导致后续区块无效,且hash也将改变,所有节点都能发现,这也是为什么区块链不可篡改的原因。
产生原因
为了确保以太坊网络上的所有参与者保持同步状态并就交易的确切历史达成共识,我们将交易分为多个区块。 这意味着同时有数十个(甚至数百个)交易被提交、达成一致并同步。
权益证明协议
出块时间
出块时间是指两个区块之间的时间间隔。 在以太坊中,时间划分为每 12 秒一个单位,称为“时隙”。
区块大小
区块本身的大小是有界限的。 每个区块的目标大小为 1500 万单位燃料,但区块的大小将根据网络需求而增加或减少,直至达到 3000 万单位燃料的区块限制(目标区块大小的 2 倍)。
以太坊虚拟机(EVM)
定义
是真实存在并由数以千计运行以太坊客户端的计算机共同维护的一个实体。太坊虚拟机定义从一个区块到另一个区块计算新的有效状态的规则。
以太坊状态转换函数
在给定输入的情况下,它会产生确定性的输出。
状态
是一种称为改进版默克尔帕特里夏树的巨大数据结构,它保存所有通过哈希关联在一起的帐户并可回溯到存储在区块链上的单个根哈希
节点和客户端
定义
“节点”是指任何以太坊客户端软件的实例,它连接到也运行以太坊软件的其他计算机,形成一个网络。 客户端是以太坊的实现,它根据协议规则验证数据并保持网络安全。客户端又分为执行层和共识层即“执行客户端”和“共识客户端”
节点类型
轻节点
不下载所有区块,而是下载区块头,所有请求都想全节点请求
轻节点不参与共识(即它们不能成为矿工或验证者),但可以访问以太坊区块链,其功能与全节点相同
所需资源少,无需功能强大的硬件
全节点
存储全部区块链数据,会定时修剪,不一定包含所有状态数据
参与区块验证,验证所有区块和状态
所有状态都可以从全节点中获取
为网络提供服务,并应要求提供数据
归档节点
存储全节点中保存的所有内容,并建立历史状态存档。
对于区块浏览器、钱包供应商和链分析等服务来说却很方便。
运行节点好处
对自己
能够以私有、自给自足和无需信任的方式使用以太坊。 你无需信任网络,因为你可以使用自己的客户端验证数据
对网络
多种节点对以太坊的健康、安全和运行恢复能力非常重要。
网络
定义
是指可在其中进行开发、测试或布置生产用例的各种不同以太坊环境。
种类
以太坊主网
以太坊测试网
私有网络