本文为转载,原文地址为 waksana 。

以太坊简介

简单来说,以太坊就是一个图灵机。它包含一个状态 (state),其中包括所有钱包状态、智能合约及其状态。状态类似于图灵机的无限纸带,无限纸带上同时存储着数据和程序。用户通过交易 (transaction) 向以太坊发送指令,它会根据指令进行操作或运行智能合约,得到一个新的状态 (state’)。

State' = Process State Transactions

这个图灵机与众不同之处在于,任何人都无法篡改它的状态,也无法阻止它的运行。这些优势源自于它的底层数据结构:区块链。

区块链

区块链是一种类似于链表的数据结构,链表是一个经典数据结构,每一个项都有一个指向前继 (或者后继) 的指针。区块链在链表的基础上做了一个改动,把链表指向前继指针换为前一个区块的哈希。每一个新的区块都包含前面区块的哈希值,一直传递到第一个区块。中间任何区块的数据修改都会让该区块后的所有区块哈希产生变化。这就让区块链具备了感知篡改的能力。

FirstBlock = {...}
Block2 = {... previousBlock: hash(FirstBlock) }
Block3 = {... previousBlock: hash(Block2) }

到这里,区块链是一个能够感知篡改的,只能追加数据的存储结构,还无法胜任以太坊的需求。需要注入一些灵魂让区块链活起来。

加密货币

区块链是一个静态的数据结构,只有活着的区块链才有防篡改,去中心化等等特性。其中的关键因素就是加密货币。

首先,每一个新的区块都会产生一些加密货币。按规则创建区块的人有权力添加一条交易把这些加密货币添加到自己的钱包状态中去。这导致人们热衷于创建新的区块。为了避免无成本的随意创建区块,记账人需要证明自己投入了相当多的资源来获得创建区块的权力。这个资源就是算力和电费。这些花费唯一的意义就是证明自己投入了这些资源。偶尔多个竞争者会同时获得记账权,这时解决争端的方式是以最长的链为正确的链。

在大家争相创建区块的时候,去中心化就产生了。创建区块的权力根据算力的大小随机的分发给竞争者。大家踊跃验证别人创建区块的正确性。然后马上投入下一个区块的算力竞争。任何篡改之后的区块链都无法被其他人认可,并且由于算力的累积也无法追赶上最长链。

记账人不仅仅需要承担工作量证明的算力,还需要把用户的交易 (trancation) 收集起来,并且从上一个区块的状态 (State) 通过执行这些交易 (transaction) 获得新的状态 (State’)。这时,另一个问题出现了,就是如何鼓励记账人把用户发送的交易加入区块中。这里加密货币也起到了关键作用:记账人除了能获得区块新增的加密货币外,还能从每个用户交易当中获取小费,这样记账的人就倾向于把小费更多的交易纳入区块中。

小费还解决了图灵机的停机问题,在普通的图灵机中,我们没办法判定一个程序是否会停机,在以太坊中,任何一个操作都需要一定量的小费,当智能合约长时间运行的时候小费会被耗尽,这就是停机的时候。

区块链和加密货币提供了一个竞争的记账人构成的去中心化的状态转移机器(类似图灵机中的读写头)但是区块链提供的存储系统却是不可篡改只能追加的。和以太坊所需要的状态模型不太匹配。状态的模型需要能够修改以前的数据,比如一个智能合约中参数的值,或者一个钱包中的余额。

状态树

在以太坊中,用户钱包和智能合约,都有一个 40 个 16 进制数长度的地址。用户的地址里存着他的余额和用户状态;智能合约的地址里存着代码和智能合约的参数值。

为了实现地址到状态的存储和更改,以太坊采用了一种称为默克尔路径压缩字典树(MPT)的数据结构。这种存储结构类似于一棵字典树,其中地址被用作键,叶节点中存储的内容是对应地址的状态。由于 MPT 的结构,状态的更改可以方便地进行。通过将树的指针替换为哈希指针,可以计算出整个状态的哈希值,从而将所有状态的哈希存储在区块链中。这种存储方式可以验证巨大的状态内容,同时状态可以使用其他存储和同步方式。矿工的记账过程可以看作是从旧状态计算出新状态,并将新状态的哈希记录在新区块中。

最后

以太坊在区块链上实现了一个去中心化的不可篡改的图灵机。他把记账人当作图灵机的读写头,把状态树当作图灵机中无穷长的纸带,通过 MPT 把状态压缩成一个 hash 值,有种一叶一世界的感觉,应该是一区块一世界。


原文转载地址

  1. https://www.marsshen.com/posts/df475880/

区块链系列 - 以太坊简介相关推荐

  1. 区块链技术以太坊简介

    文章目录 以太坊开发 以太坊简介 以太坊组成成分 以太坊中的重要概念 区块链技术(也称之为分布式账本技术),是一种互联网数据库技术,其特点是去中心化,公开透明,让每一个人均可参与的数据库记录 ❤️

  2. 新一代区块链系统——以太坊将带领我们去往何方?

    从2020年末至2021年五月上旬,币圈一直风头正盛,大部分虚拟货币的价格一路高歌猛进.进入五月,比特币甚至一度涨到6万美元一枚,以太币也突破了4000美元的大关. 但是好景不长,五月下旬币圈马上迎来 ...

  3. 区块链系列教程——geth命令详解

    本文是区块链系列的第二篇,上一篇区块链系列教程--创建属于自己的区块链大概介绍了区块链的基本内容,并且使用geth客户端创建了私链,给了各位读者较为直观的感受.本文简单介绍geth命令,这对后面的教程 ...

  4. 区块链及以太坊入门介绍

    一.区块链入门介绍 阮一峰写的挺好的:   http://www.ruanyifeng.com/blog/2017/12/blockchain-tutorial.html 区块链技术:是一个去中心化的 ...

  5. 区块链扫盲之7,区块链与以太坊

    通过深入了解比特币系统我们已经知道,区块链是源自比特币的底层技术,它让我们可以无须借助任何第三方中介直接进行价值表示和价值转移,它还给数字世界带来了价值表示物--通证.区块链将使互联网从"信 ...

  6. 【系列】区块链与以太坊实战(1)-基础知识

    请扫描本文结尾的二维码关注我的微信公众号,或在微信搜索 极客起源 即可关注,每个工作日都有文章更新. 李宁老师的区块链与以太坊系列文章开张了,本系列文章将全面阐述区块链与以太坊的基本概念以及核心技术, ...

  7. 【区块链】以太坊区块链技术初探

    2019独角兽企业重金招聘Python工程师标准>>> [国内首家]以太坊区块链实战教学:http://edu.csdn.net/course/detail/6455 LinApex ...

  8. 区块链兼容以太坊智能合约

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 引言 随着区块链技术以及应用的普及,越来越多的区块链出现在大众视野中.由于区块链技术的开源特性,任何公司和个人都可以方便 ...

  9. js 文件不让通过地址访问_区块链与以太坊实战(5):访问以太坊节点的N中方式...

    ---------支持作者请转发本文-----------本文主要介绍用web3.js访问以太坊节点的几种方式,主要包括HTTP和Web两种访问方式.1. 什么是Web3.jsWeb3.js是一套用J ...

最新文章

  1. 阿里云服务器 Windows连接不成功 提示“你的凭证不工作” 解决方法
  2. 大剑无锋之mysql列转行【面试推荐】
  3. UnityShader之Shader分类篇【Shader资料2】
  4. 简单的oracle备份恢复批处理文件 -- 转
  5. 连续加班2周做出来的功能,老板说先不做了
  6. (软件工程复习核心重点)第六章实现和测试-第八节:调试
  7. 解析OA技术,规避使用风险
  8. java内存模型作用是什么_什么是JVM内存模型?
  9. CNN更新换代!性能提升算力减半,还即插即用
  10. 数据抓取的艺术(三)
  11. TCP长连接开发相关,调试工具SocketTool与框架GatewayWorker
  12. OD教程(去除NAG窗口--PE文件结构)
  13. 手机自学html,5套Bootstrap手机模板HTML源文件分享
  14. 7-1 掉入陷阱的数字
  15. Elasticsearch 集群报错 master not discovered yet
  16. Qt Https http 请求案例
  17. 条件格式实现ABC分析
  18. 「干货」从动态的角度分析DDR的时序结构
  19. 电脑CPU和内存占用过高
  20. 解决Django报错:SQLITE 3.8.3 OR LATER IS REQUIRED

热门文章

  1. Android 集成Face++ 人脸识别(3.0+SDK)
  2. tplink错误代码51215_tplink升级提示错误代码18000导致升级不成功解决办法
  3. clickhouse-jdbc 源码学习
  4. JS对象中添加新的属性及修改字段名
  5. java按秒查询数据_ClickHouse留存分析工具十亿数据秒级查询方案
  6. 【愚公系列】2022年11月 微信小程序-优购电商项目-授权页面
  7. vue npm install --save-dev css-loader出现的错误
  8. iPhone X全屏适配
  9. 将折旧表分配至公司代码时提示公司代码分录不完全解决方案
  10. m277打印机 重置_惠普M277n说明书