详解以太坊

news2025/3/1 22:03:47

以太坊原理

以太坊通过建立终极的抽象的基础层-内置有图灵完备编程语言的区块链-使得任何人都能够创建合约和去中心化应用,并在其中设立他们自由定义的所有权规则、交易方式和状态转换函数。

图灵完备:能够运行非常复杂的运算,最简单的理解是它支持循环的操作,而比特币的验证是不支持循环的。

以太坊虚拟机(EVM)是以太坊中智能合约的运行环境。它不仅被沙箱封装起来,事实上它被完全隔离,也就是说运行在EVM内部的代码不能接触到网络、文件系统或者其它进程。甚至智能合约与其它智能合约只有有限的接触。

对比比特币

外部账户:可用私钥控制的

合约账户:一旦创建,只能是合约里面的代码控制,不能人为控制,但可以人为触发

有向无环图DAG ( Directed Acyclic Graph)

因为以太坊是12s出一个块,所以在12s内可能出现上图的状况,其实在实际情况中,高度2的两个块后面可能还有很多其他块,我们选择最长的当做主链,如果是比特币的话,未做主链的块不会得到任何奖励,如下图

而以太坊的话,会给未做主链的块适当奖励,如下图

状态转移

以太坊区块链

临时分叉

区块头

ommerHash:包含叔区块的Hash

beneficiary:挖洞矿后奖励的存放地址

logsBloom:日志过滤器

number:交易数量

gasLimit:要运行以太坊付出的花费限制

gasUsed:运行以太坊的花费

mixHash:和nonce结合起来做挖矿运算

stateRoot:账户所有信息会生成一个Merkle patricia tree,把树根存储在其中

transactionsRoot:所有的transaction形成Merkle patricia tree,把树根存储集中

receiptsRoot:为每一个transaction做了一个收据,把收据集合起来形成Merkle patricia tree

以太坊账户

包含四个部分:

  • 序号,用于确定每笔交易只能被处理一次的计数器,参与生成交易的id
  • 账户目前的以太币余额,以太币(Ether)是以太坊内部的主要加密燃料,用于支付交易费用。 以太币的最小单位为Wei, 最大单位为以太,1 Ether=10^18Wei
  • 账户的合约代码,如果有的话
  • 账户的存储(32byte to 32byte key-value map)

账户信息被称为world state,放在db上管理

外部账户:用户用公钥、私钥控制

合约账户:由合约编译后的code控制

tips:外部账户和内部账户,是在相同的地址空间,相同的数据结构有不同的功能

重放攻击

Gas

什么是Gas(气)?

由以太坊网络上的交易而产生的每一次计算,都会产生费用,这个费用是以称之为”gas”的来支付,gas就是用来衡量在一个具体计算中要求的费用单位,智能合约最原子运算所需花费的单位。
例如 :一个位移运算需要1气,一个相加运算需要3气;

gasPrice

1气和以太币(wei)的兑换价格

一次Transaction的所有花费

Total_fee= value (转移给对方账户的以太币数量)

  • transaction fee
  • gas* gasPrice (执行智能合约的花费,此为上限,以实际执行步数为准,gasReal*gasPrice)

Gas Limit

允许的最大花费:以太坊中有循环操作和一些其他复杂的操作,限制最大花费。

image

交易

智能合约(Smart contract)

  • 智能合约概念于1995年由Nick Szabo首次提出。
  • 是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
  • 智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。
  • 一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。

智能合约的定义

“智能合约”- 根据事先任意制订的规则来自动转移数字资产的系统。

Smart contracts are pieces of code that live on the blockchain
and execute commands exactly how the were told to.

智能合约就是存储在区块链上的代码,用以实现执行特定的功能。

例子:

if HAS_EVENT_X_HAPPENED() is true:
    send(party_A,10000)
else:
    send(party_B,10000)

一个运行在安全环境下的计算机程序,可以直接控制数字资产.

安全环境:

  • 由可信的人,组织运行的服务器(公有云).
  • 准去中心化的计算机网络(私有链).
  • 去中性化的计算机网络(公有链).

法律合约:”我承诺如果X发生的话,则给你发送10000元”.

智能合约:”我将10000元发送给一个计算机程序,如果X发生了,这个程序会把10000元发送给你,否则将返还给我”.

tips:法律合约可能会出现耍赖的情况

一个运行在安全环境下的计算机程序,可以直接控制数字资产.

  • 域名
  • 房地产权
  • 证券
  • 票据
  • 专利许可证
  • 游戏装备
  • 数字货币...

为什么要用智能合约:

  • 自动处理
  • 减少依靠信任的程度。信任依赖集中在数量很少的数据源,而不是大量的合约执行机制。

智能合约 VS 法律合约

法律合约智能合约
适合主观性佳(如需人类的判断)的请求适合于客观性佳(可用数学去衡量价值)
高成本低成本
事后执行事前预防
依赖于处罚依赖于抵押品或者保证金
受限于具体的地理范围全球性的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412337.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于共享储能电站的工业用户日前优化经济调度

目录 1 主要内容 共享电站示意图 目标函数 2 部分程序 3 程序结果 4 程序链接 1 主要内容 该程序方法复现《基于共享储能电站的工业用户日前优化经济调度》算例2和算例3,根据共享储能电站的商业运营模式,将共享储能电站应用到工业用户经济优化调度…

〖Python网络爬虫实战⑨〗- 正则表达式基本原理

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付…

【Linux】用户命令(创建,修改,切换,删除,密码)

目录 1.创建 查看用户信息 查看id 2.修改 修改用户名 修改用户uid 操作前: 操作后 修改组名 操作前: 操作后: 修改组id 操作前: 操作后: 操作前: 操作后: 3.切换用户 4.删除 操作前: 操作…

如何在Spring Boot中使用Spring MVC

目录 1.MVC 2.Spring MVC 3.Spring Boot中使用Spring MVC 3.1.配置 3.1.1.文件配置 3.1.2.代码配置 3.2.使用 3.2.1.映射处理器 3.2.2.传参 3.2.3.参数转换 3.2.4.数据校验 3.2.5.数据模型 3.2.6.视图和解析器 3.2.7.拦截器 1.MVC MVC 是一种常见的软件设计模式…

企业级信息系统开发讲课笔记2.4 利用MyBatis实现条件查询

文章目录零、本节学习目标一、查询需求二、打开MyBatisDemo项目三、对学生表实现条件查询(一)创建学生映射器配置文件(二)在MyBatis配置文件里注册学生映射器配置文件(三)创建学生映射器接口(四…

macOS Ventura 13.3.1 (22E261) Boot ISO 原版可引导镜像

本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。另外也支持在 Windows 和 Linux 中创建可引导介质。 macOS Ventura 13.3.1 为 Mac 提供下…

os库的使用与第三方库安装脚本

os库基本介绍 os 顾名思义,就是与操作系统相关的标准库。如:文件,目录,执行系统命令等。 os库是Python标准库,包含几百个函数 常用路径操作、进程管理、环境参数等几类 路径操作:os.path子库&#xff0…

安捷伦34970A

18320918653 34970A Agilent 34970A 数据采集器|安捷伦数据采集器|34970A 您可信任的测量: 我们把销售良好数字多用表测量引擎嵌入在3槽主机箱中。您能获得优异的测量能力,带有内置信号调整的通用输入,模块化的灵活性,低廉的售…

Ubuntu20.04配置CuckooSandbox环境

Ubuntu20.04配置CuckooSandbox环境 因为最近要做恶意软件分析,阅读论文发现动态分析的效果普遍比静态分析的效果要好一些,所以需要搭建一个动态分析的环境,查阅资料发现Cuckoo Sandbox是不错的自动化分析环境,但是搭建起来还是比…

机器学习相关建议

1、开发机器学习系统或者优化的路径 训练数据量的增加对机器学习系统的影响增加特征集或减少特征集改变正则化参数尝试增加多项式特征 | 高偏差、欠拟合 | 高方差、过拟合 | | ------------------ | ------------------------------ | | 尝试增加多项式特征 | 尝试减少特征的数…

30-60K,转型云原生架构师和SRE需要哪些能力?

你好,我是王炜,欢迎和我一起学习云原生的核心技术。 先来简单介绍一下我自己吧。作为前腾讯云 CODING 架构师,现在深圳氦三科技的联合创始人,同时也是中国云原生社区深圳站的负责人,我见证了云原生在国内从萌芽到蓬勃…

【k8s完整实战教程6】完整实践-部署一个federated_download项目

系列文章:这个系列已完结,如对您有帮助,求点赞收藏评论。 读者寄语:再小的帆,也能远航! 【k8s完整实战教程0】前言【k8s完整实战教程1】源码管理-Coding【k8s完整实战教程2】腾讯云搭建k8s托管集群【k8s完…

【算法的复杂度】

算法的时间复杂度和空间复杂度一、算法效率二、时间复杂度1. 时间复杂度的概念2. 大O的渐进表示法3. 常见时间复杂度计算举例三、空间复杂度一、算法效率 算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一…

采用多种方式实现项目的查询多级缓存(六)

4.7.Nginx本地缓存 现在,整个多级缓存中只差最后一环,也就是nginx的本地缓存了。如图: 4.7.1.本地缓存API OpenResty为Nginx提供了shard dict的功能,可以在nginx的多个worker之间共享数据,实现缓存功能。 1&#xf…

【创建者模式】原型模式

文章目录优秀借鉴1、简介2、结构3、浅拷贝和深拷贝4、浅拷贝实现4.1、实现步骤4.2、结果分析5、深拷贝思路5.1、clone方法5.2、序列化与反序列化6、应用场景优秀借鉴 什么是原型模式(Prototype)?应用场景是什么? 【设计模式】原…

PointNN:一种无参数化的高效点云特征提取方法

前言 本文需要一些三维点云相关基础,非常适合深蓝学院修过相关课程的同学阅读。 点云处理从最早期的手工设计特征,到之后渐渐有一些深度学习的尝试,经历了 multi-view或者3D卷积等等的混沌时期,知道 pointnet 的横空出世&#x…

微服务治理框架(Istio)的认证服务与访问控制

本博客地址:https://security.blog.csdn.net/article/details/130152887 一、认证服务 1.1、基于JWT的认证 在微服务架构下,每个服务是无状态的,由于服务端需要存储客户端的登录状态,因此传统的session认证方式在微服务中不再适…

分享:前端开发使用基于 ChatGPT 的各类 AI Copilot 辅助开发

前言 现在谁还没听过 ChatGPT,通没通网我不确定,但一定不是搞开发的 网上各种教注册OpenAI账号的、卖key的,然后就可以去各类基于ChatGPT api的插件、应用使用。但是这类都属于不合规的方式,这里不推荐 虽然因为种种原因&#x…

nuxt.js - 【最新】简单快捷的 element ui 组件库的主题色更改,批量统一覆盖替换解决方法,无需npm装包。(适用于新手小白的方法,很简单)

效果图 最新解决方案,简单便捷且不用npm安装任何第三方包就能搞定。 原来的主题色是蓝色 ,可以通过本篇博客提供的方法,统一变成其他主题颜色,比如下面的紫色: 下面就是真实的运行效果,保证可行~ 这样就不用每个组件单独去写样式覆盖颜色了! 定制主

【C++】STL理解【容器】

【C】STL理解【容器】 1. STL概念引入 长久以来,软件界一直希望建立一种可重复利用的东西,以及一种得以制造出”可重复运用的东西”的方法,从函数(functions),类别(classes),函数库(function libraries),类别库(class libraries…