以太坊简介
什么是区块链?
对区块链最好的描述是将其描述为一个公共数据库,它由网络中的许多计算机更新和共享。
"区块"指的是数据和状态是按顺序批量或"区块"存储的。 如果你向别人发送 ETH,需要将交易数据添加到一个区块中才算成功。
"链"指的是每个区块加密引用其父块。 在不改变所有后续区块的情况下,一个区块的数据是不能改变的,这需要整个网络的共识。
每一个新的区块和整个链必须得到网络中每个节点的同意。 这是为了让大家拥有相同的数据。 为此,区块链需要一个共识机制。
以太坊目前使用的是工作量证明共识机制。 这意味着,任何人想要在链上添加新的区块,都必须解决一个困难的难题,该难题需要大量的算力来解决。 解决了这个难题,就 "证明"你已经花费了算力资源。 这样做被称为挖矿。 挖矿可以试错,成功添加一个区块,可以获得 Eth 奖励。 另一方面,考虑到你在生产区块上花费的资源,虚假打包区块并不是一个有吸引力的选择。
新的区块会被广播到网络中的节点,经过检查和验证,同步更新状态。
综上所述,当你向别人发送 ETH 时,这笔交易必须被打包并包含在一个新的区块中。 然后将更新后的状态与整个网络共享。 更多细节:
观看 Austin 带你了解区块链:
以太坊简介
在以太坊网络中,有一个单一的、规范的计算机(称为以太坊虚拟机,或 EVM),其状态是以太坊网络中每个人都同意的。 每个参与以太坊网络的人(每个以太坊节点)都会保存一份这台计算机的状态。 此外,任何参与者都可以广播请求这台计算机进行任意计算。 无论何时这样的请求被广播时,网络上的其他参与者就会验证、确认并进行("执行")计算。 这导致 EVM 的状态改变在整个网络中传播。
计算的请求称为交易请求,所有交易的记录以及 EVM 的当前状态都存储在区块链中,而区块链又由所有节点存储并达成一致。
加密机制确保交易一旦被验证为有效并添加到区块链上,以后就不能被篡改;同样的机制也确保所有的交易都是以适当的 "权限"来签名和执行的(除了 Alice 自己,任何人都不能从 Alice 的帐户发送数字资产)。
什么是以太币(ether)?
以太币这个货币的目的是,允许算力市场的存在。 这种市场为参与者提供了一种经济激励,从而验证/执行交易请求,并为网络提供计算资源。
任何参与者在广播交易请求时,还必须向网络提供一定数量的以太币,作为赏金,奖励给最终完成验证交易、执行交易、将交易打包到区块链并向网络广播的人。
支付的以太币数量是一个与计算时间有关的函数。 这也可以防止恶意参与者通过请求执行无限循环或资源密集型脚本来故意堵塞网络,因为这些行为者将不断地被收费。
什么是 dapps?
实际上,参与者不会想每次在 EVM 上请求计算时都写新代码。 而是应用开发者将程序(可重复使用的代码片段)上传到 EVM 存储中,然后用户通过不同的参数对这些代码片段的执行提出请求。 我们把这些被上传至网络并由网络执行的程序称为智能合约。
简单来说,你可以把智能合约想象成一种自动售货机:一个脚本,用某些特定参数调用时,如果满足某些特定条件,就会执行一些操作或计算。 例如,一个简单的(自动售货机)智能合约可以创建和分配数字资产的所有权,如果调用者将以太币发送给特定的接收者。
任何开发者都可以创建智能合约并公开到以太坊网络中,使用区块链作为其数据层,并因此向网络支付费用。 然后,任何用户都可以调用智能合约来执行其代码,并再次向网络支付费用。
因此,通过智能合约,开发者可以任意构建和部署复杂的面向用户的应用和服务:市场、金融工具、游戏等等。
术语
Blockchain 区块链
所有在以太坊网络历史上提交的区块构成的序列。 如此命名,是因为每个区块都包含前一个区块的引用, 这有助于我们在所有区块间保持顺序(同时保存了精确的历史)。
ETH 以太币
以太坊的原生加密货币。 用户向其他用户支付以太币,以使自己的代码执行请求得以满足。
EVM 以太坊虚拟机
以太坊虚拟机是一个全局虚拟计算机,它的状态在以太坊网络每个参与者都保持一致。 任何参与者都可以请求执行 EVM 上的任意代码;代码执行会改变 EVM 的状态。
Nodes 节点
存储着 EVM 状态的实体机器。 节点间相互通讯传播关于 EVM 状态变化和新增的信息。 任何用户都可以通过向节点广播执行请求来执行代码。 以太坊网络本身就是所有以太坊节点及其通信的总和。
帐户
存储以太币的容器。 用户可以初始化帐户,将以太币存入帐户,并将以太币转给其他用户。 帐户和帐户余额储存在 EVM 中的一个大表格中,它们是 EVM 总体状态的一部分。
交易
“交易请求”是 EVM 上代码执行请求的正式术语。 “交易”是指已完成的交易请求和相关的 EVM 状态变更。 任何用户都可以从节点广播一个交易请求到网络。 交易请求要真正影响 EVM 一致性状态,就必须由其他节点验证、执行和“提交到网络”。 执行任何代码都会导致 EVM 的状态更改;一旦提交后,该状态更改将广播到网络中的所有节点。 这是交易的一些例子:
- 从我的帐户发送 X 以太币到 Alice 的帐户。
- 将一些智能合约代码发布到 EVM 内存中。
- 使用 Y 参数执行 EVM 中 X 地址的智能合约代码。
区块
交易量很巨大,因此交易是分批或分区块“提交”的。 区块通常包含数十至数百笔交易。
智能合约
智能合约是开发者发布在 EVM 内存中的代码片段(一个程序)。 任何人都可以通过提出“交易请求”来请求执行智能合约代码。 因为通过发布智能合约,开发者可以将任意可执行的应用程序(游戏、市场、金融工具等)写入 EVM。 这些合约通常也被称为 dapps 或去中心化应用。
延伸阅读
相关教程
- 一个开发者的以太坊指南,第一部分 -一个初学者使用 Python 和 web3.py 方式非常友好地探索以太坊的方式。