区块链学习(3)

2023-05-16

区块链学习(3)

  • 以太坊账户
  • 交易的数据结构
  • 交易中的nonce
  • 交易中的gas
  • gas的计算
  • 交易的 value 和 data
  • 特殊交易:创建(部署)合约

以太坊账户

  • 外部账户(externally owned accounts),由密钥控制。matemask钱包属于这一类
  • 合约账户(contract accounts),由智能合约的代码控制
    在这里插入图片描述

交易的数据结构

交易是包含以下数据的序列化二进制消息:
• nonce:由发起人EOA发出的序列号,用于防止交易消息重播。
• gas price:交易发起人愿意支付的gas单价(wei)。
• start gas:交易发起人愿意支付的最大gas量。
• to:目的以太坊地址。
• value:要发送到目的地的以太数量。
• data:可变长度二进制数据负载(payload)。
• v,r,s:发起人EOA的ECDSA签名的三个组成部分。
• 交易消息的结构使用递归长度前缀(RLP)编码方案进行序列化,该方案
专为在以太坊中准确和字节完美的数据序列化而创建

交易中的nonce

• 黄皮书定义: 一个标量值,等于从这个地址发送的交易数,或者对于关联
code的帐户来说,是这个帐户创建合约的数量。
• nonce不会明确存储为区块链中帐户状态的一部分。相反,它是通过计算发
送地址的已确认交易的数量来动态计算的。
• nonce值还用于防止错误计算账户余额。nonce强制来自任何地址的交易按
顺序处理,没有间隔,无论节点接收它们的顺序如何。
• 使用nonce确保所有节点计算相同的余额和正确的序列交易,等同于用于防
止比特币“双重支付”(“重放攻击”)的机制。但是,由于以太坊跟踪
账户余额并且不单独跟踪 UTXO ,因此只有在错误地计算账户余额时才会
发生“双重支付”。nonce机制可以防止这种情况发生。

交易中的gas

• 当由于交易或消息触发 EVM 运行时,每个指令都会在网络的每个节点上
执行。这具有成本:对于每个执行的操作,都存在固定的成本,我们把这
个成本用一定量的 gas 表示。
• gas 是交易发起人需要为 EVM 上的每项操作支付的成本名称。发起交易时,
我们需要从执行代码的矿工那里用以太币购买 gas 。
• gas 与消耗的系统资源对应,这是具有自然成本的。因此在设计上 gas 和
ether 有意地解耦,消耗的 gas 数量代表了对资源的占用,而对应的交易费
用则还跟 gas 对以太的单价有关。这两者是由自由市场调节的:gas 的价
格实际上是由矿工决定的,他们可以拒绝处理 gas 价格低于最低限额的交
易。我们不需要专门购买 gas ,只需将以太币添加到帐户即可,客户端在
发送交易时会自动用以太币购买汽油。而以太币本身的价格通常由于市场
力量而波动

gas的计算

• 发起交易时的 gas limit 并不是要支付的 gas 数量,而只是给定了一个
消耗 gas 的上限,相当于“押金”
• 实际支付的 gas 数量是执行过程中消耗的 gas (gasUsed),gas
limit 中剩余的部分会返回给发送人
• 最终支付的 gas 费用是 gasUsed 对应的以太币费用,单价由设定的
gasPrice 而定
• 最终支付费用 totalCost = gasPrice * gasUsed
• totalCost 会作为交易手续费(Tx fee)支付给矿工

可以通过eth.estimateGas 估计一下gas 的值

交易的 value 和 data

• 交易的主要“有效负载”包含在两个字段中:value 和 data。交易可
以同时有 value 和 data,仅有 value,仅有 data,或者既没有 value
也没有 data。所有四种组合都有效。
• 仅有 value 的交易就是一笔以太的付款
• 仅有 data 的交易一般是合约调用
• 进行合约调用的同时,我们除了传输 data, 还可以发送以太,从而交
易中同时包含 data 和 value
• 没有 value 也没有 data 的交易,只是在浪费 gas,但它是有效的

特殊交易:创建(部署)合约

• 有一中特殊的交易,具有数据负载且没有 value,那就是一个创建新
合约的交易。
• 合约创建交易被发送到特殊目的地地址,即零地址0x0。该地址既不
代表 EOA 也不代表合约。它永远不会花费以太或发起交易,它仅用
作目的地,具有特殊含义“创建合约”。
• 虽然零地址仅用于合同注册,但它有时会收到来自各种地址的付款。
这种情况要么是偶然误操作,导致失去以太;要么是故意销毁以太。
• 合约注册交易不应包含以太值,只包含合约的已编译字节码的数据有
效负载。此交易的唯一效果是注册合约

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区块链学习(3) 的相关文章

  • ubuntu进入initramfs,系统黑屏

    ubantu黑屏 解决方法 解决方法 1 如果在initramfs模式输入reboot重启 xff0c 或者长按开机键强制关机重启 xff0c 然后选择ubuntu xff08 高级选项 xff09 中的修复模式 xff08 recover
  • You must specify at least three points for the robot footprint,reverting to previous footprint

    找到 costmap common params yaml xff0c 修改成如下形式 xff1a robot radius 0 20 distance a circular robot should be clear of the obs
  • 基于Anaconda3.8环境安装Python3.6

    基于Anaconda3 8环境安装Python3 6 1 通过如下命令查看当前已经装好的python环境 conda info e 2 通过python V 查看当前所处的版本 3 装好anaconda3 8以后想再安装一个python3
  • PX4无人机环境搭建

    PX4无人机资料开发 1 1 Ubuntu系统的安装及相关工具使用ubuntu 系统安装以及基础使用系统安装ubuntu基础使用常用工具使用git常用命令 1 2PX4开发环境搭建编译工具链的安装code安装使用 1 1 Ubuntu系统的
  • 3 FlightPlot安装使用方法

    FlightPlot安装使用方法 下载flightPlot源码下载切换openjdk 版本重启安装flightPlot 下载flightPlot源码 git clone recursive https github com PX4 Flig
  • 在Windows下安装TensorFlow和Keras

    在Windows下安装TensorFlow和Keras 1 安装 Anaconda3 5 1 0 Windows x86 64 exe xff0c 之前用的版本 xff0c 也可以下载更新的版本 绝大多数都选用默认选项即可 xff0c 遇到
  • 初学STM32

    编译出错 xff1a Error L6002U could not open file o No such file or directory 原因 xff1a 汉化出问题
  • 百度可视化工具Sugar简单介绍以及使用说明

    百度可视化工具Sugar简单介绍以及使用说明 介绍使用指南免费试用快速入门 使用流程使用示例 这是我个人的第一篇博客 最近因为工作原因 xff0c 需要了解百度可视化工具Sugar xff0c 因此在这里做个总结 xff0c 同时也为自己梳
  • 四小时Jsp期末作业速成——MyBlog个人博客系统(javaweb:非框架)

    MyBlog个人博客系统 xff08 javaweb 非框架 xff09 目录第一章 系统简介 31 1 背景及意义 31 2 开发目的 31 3 开发环境 3 第二章 系统设计 42 1 系统分析 42 1 1 系统需求分析 42 1 2
  • 【已解决】Ubantu问题记录:在连接网线的情况下ubuntu系统ping网关不通以及无法上网

    问题背景 xff1a 我们的服务器配置了两张在同一网段下的网卡 xff0c 卡 eno4 连接以太网ip xff1a 192 168 2 10 网关192 168 2 1 卡 eno2 ip xff1a 192 168 2 12 网关192
  • ros知识点

    工作空间 一个典型的ROS工作空间目录结构如下 所有ROS程序都必须放置在某个ROS工作空间 workspace 下 xff0c 我们在主目录下创建一个名为catkin ws的ROS工作空间 ROS工作的空间名字可以随便取 xff0c 一般
  • 我有一个IT梦

    介绍 作为一名大二的学生 xff0c 接触计算机基础技术近乎俩年 xff0c 俩年来我愈加发觉计算机是一门发展力很强的学科 它多式多样 xff0c 更像是一种挑战 xff0c 对于好强的我来说 xff0c 越来越着迷计算机的世界 纵然未知的
  • Mac 自动代理切换

    Mac 自动代理切换 背景 xff1a 工作有时需要用goole搜索 xff0c 所以会配置一下公司提供的HTTP和HTTPS代理 xff0c 但是下班之后回到家 xff0c 只有公司内网才能访问代理 xff0c 所以还需要把代理关掉 每次
  • 仅拉取git远程仓库中特定的单个分支

    结论 拉取git远程仓库中特定的单个分支的关键在于 xff1a 调用git clone时候 xff0c 添加 branch选项与 single branch git clone git clone克隆远程仓库时 xff0c 默认会依次做以下
  • Windows10通过网线连接树莓派ubuntu server系统

    Windows10通过网线连接树莓派ubuntu server系统 材料 xff1a 烧录ubuntu server 18 04镜像的树莓派 xff0c 网线一根 xff0c Window10电脑 操作 Windows10通过网线连接树莓派
  • 树莓派安装ROS操作系统并配置VNC连接

    树莓派 4B xff08 2G xff09 的准备工作 一 烧录ubuntu server 18 04 LTS镜像二 ubuntu系统安装桌面三 树莓派开启VNC连接1 使用dconf editor2 开启桌面共享服务3 Windows端下
  • Vscode配置树莓派ROS的开发环境

    树莓派安装ROS系统和远程连接配置我的这篇博客 附上连接 xff1a https blog csdn net weixin 44815966 article details 112697896 开发ros机器人时 xff0c 为了方便开发和
  • ROS操作系统 opencv-python读取摄像头+rviz可视化

    ROS操作系统 opencv python读取摄像头 43 rviz可视化 一 安装opencv python二 opencv读取摄像头三 图片转换为ROS图片格式并且在rviz显示 测试环境 xff1a 树莓派ubuntu 18 04 5
  • Git 报错:Connection closed by remote host. fatal: Could not read from remote repository.

    Git deploy 部署报错 xff1a ssh exchange identification Connection closed by remote host fatal Could not read from remote repo
  • RabbitMQ详解(二):Docker安装RabbitMQ

    一 安装并运行二 其他操作 在Docker上安装部署RabbitMQ方便快捷 xff0c 不需要额外安装Erlang环境 xff0c 所以写该篇文章先来介绍如何在Docker上部署RabbitMQ 一 安装并运行 1 在docker hub

随机推荐

  • android 注解和反射 (入门以及使用)

    先来看一看今天的效果 代码效果 效果不重要 重要的是代码 注解 官方解释 从JDK5开始 Java增加对元数据的支持 xff0c 也就是注解 xff0c 注解与注释是有一定区别的 xff0c 可以把注解理解为代码里的特殊标记 xff0c 这
  • Linux ubuntu安装LLVM12+Clang

    安装之前确保安装cmake3 20以上版本 参考https blog csdn net weixin 42888638 article details 125617062 从官网下载安装包 llvm project 12 0 0 src t
  • 总线?什么是总线?

    近期 有些小朋友问我 xff1a Jing哥啊 xff0c 计算机好多基础我都不懂 xff0c 看编程视频讲到的时候 xff0c 什么数据总线 xff0c 地址总线我都不懂 其实阿Jing以前也有这个困扰 xff0c 一直困扰 xff0c
  • FreeRTOS学习 任务调度

    任务调度 任务调度实现在多个任务之间轮流使用CPU xff0c 他的主要工作分为三个阶段 xff1a 保存当前任务上下文到任务栈选择新任务恢复新任务的上下文 这三个步骤需要在中断服务函数中执行 xff0c 所以要求执行的速度要快 xff0c
  • FreeRTOS学习 信号量

    信号量 FreeRTOS 学习仓库 xff1a https gitee com killerp free rtos study 在深入理解了消息队列后 xff0c 信号量也就很容易学习了 因为信号量就是使用消息队列实现的 信号量是特殊的消息
  • Java-CSS基础选择器

    标签选择器 HTML标签作为标签选择器的名称 p为标签选择器 p 属性 font size 20px 声明 值 类选择器 lt 标签名 class 61 34 类名称 34 gt 标签内容 lt 标签名 gt class为类名称 xff1b
  • Java-CSS层次选择器

    层次选择器 后代选择器 选择器 xff1a E F xff08 两个选择器之间必须要以空格隔开 xff09 功能 xff1a 选择匹配的F元素 xff0c 且匹配的F元素被包含在匹配的E元素内 lt p gt 1 lt p gt lt p
  • arm-linux-gcc踩坑1

    嵌入式实验要用到交叉编译arm linux gcc xff0c 其中遇到一些问题 xff0c 记录如下 1 安装交叉编译器并更新环境 xff1a export PATH 61 PATH usr local arm 4 6 2 bin gcc
  • python实现基本算法之归并排序(Merge sort)

    基本算法之归并排序 Merge sort 基本算法 04 归并排序 Merge sort 算法 往期请看选择排序 xff0c 插入排序 xff0c 归并排序 xff0c 快速排序等等都发布的 xff01 欢迎大家批评指正 xff01 文章目
  • Linux学习笔记——第一章 Linux是什么如何学习

    前言 鸟叔的Linux私房菜第四版 学习笔记 1 Linux是什么 1 1 Linux是什么 Linux是一套操作系统 xff0c 就像Windows一样 操作系统会有效率的控制计算机硬件的资源分配 xff0c 并提供计算机运作所需要的功能
  • MaxWell的使用

    Maxwell的使用 1 Maxwell的概述 1 1 官网简介 This is Maxwell s daemon an application that reads MySQL binlogs and writes row updates
  • 对图像维度进行调整(升降维和调整顺序)

    图片路径 xff1a img path span class token operator 61 span span class token punctuation span span class token operator span d
  • 题目 3:逆函数随机采样

    题目 3 xff1a 随机采样 小透明 任务定义 已知 LaplaceX 随机变量X xff0c 它的均值为 0 xff0c 方差为 1 通过一个均匀分布的随机抽样 xff0c 实现对x p x 的抽样 xff0c 并得到对应的 100 个
  • VMware虚拟机如何为GPU直通启用

    查阅了很多资料是 目前的我的电脑显卡不支持 xff0c 基本上N卡的好多常用卡都不支持 具体可以查看以下内容 https www dell com support article zh hk sln288103 E5 A6 82 E4 BD
  • PX4 docker gazebo 安装踩坑记

    本来想在Linux上自己一步步搭建 px4的仿真gazebo程序的 xff0c 查了资料发现docker已经打包好了 xff0c 就直接找到这个目录 xff0c 跟着一步一步的安装 PX4 docker 但是在安装的过程中 xff0c 有一
  • 关于paddlepaddle使用推理模式时CUDA error:out of memory错误的解决办法

    在paddlepaddle的export py导出的模型 xff08 也就是生成 model params deploy yaml三个文件 xff09 xff0c 运行时报错Out of memory error on GPU 0 Cann
  • k8s学习(2)- 虚拟机搭建搭建Kubernetes集群(1.24.2)

    虚拟机搭建搭建Kubernetes集群 环境规划 虚拟机搭建配置网络解决和主机复制粘贴的问题使用MobaXterm连接虚拟机安装vmware tools xff08 建议使用MobaXterm xff09 配置yum源关闭防火墙关闭Swap
  • [enforce fail at inline_container.cc:145] . PytorchStreamReader failed reading zip archive: failed f

    weights span class token operator 61 span span class token string 39 yolov5s pt 39 span ckpt span class token operator 6
  • AX210 PCIE网卡 安装记录(linux)

    AX210 PCIE网卡 安装记录 win11 安装安装之前安装之后 Linux 安装 装了 win11 和 Ubuntu 双系统 xff0c 需要分别安装 win11 安装 安装之前 家里500M宽带 安装之后 卖家发的驱动装上没反应 自
  • 区块链学习(3)

    区块链学习 xff08 3 xff09 以太坊账户交易的数据结构交易中的nonce交易中的gasgas的计算交易的 value 和 data特殊交易 xff1a 创建 xff08 部署 xff09 合约 以太坊账户 外部账户 xff08 e