以太坊学习-笔记1

2023-10-26

加密:

  • 以太坊有两种不同类型的账户:外部拥有账户(EOA)和合约。EOA 的以太坊地址是从密钥对的公钥部分生成的
  • 以太坊使用的系统是基于公钥加密的系统,密钥是成对出现的,由一个私有(秘密)密钥和一个公共密钥组成。私钥提供对账户的控制权,公钥将其识别给其他人
  • 公钥密码术(也称为“非对称密码术”)
  • 基于椭圆曲线上的算术运算 based on arithmetic operations on an elliptic curve

1)椭圆曲线密码学是一种基于离散对数问题的非对称或公钥密码学,通过椭圆曲线各点上的加法和乘法表示。

2)在椭圆曲线算术中,以素数为模的乘法很简单,但除法(逆运算)实际上是不可能的。这称为离散对数问题,目前没有已知的陷门。椭圆曲线密码学广泛用于现代计算机系统,是以太坊(和其他加密货币)使用私钥和数字签名的基础。椭圆曲线密码学提供了一种将消息(即交易细节)与私钥相结合以创建只能在知道私钥的情况下生成的代码的方法。该代码称为数字签名。椭圆曲线数学意味着任何人都可以通过检查数字签名是否与交易细节和请求访问的以太坊地址相匹配来验证交易是否有效。

  • 私钥只是一个随机选取的数字。私钥的所有权和控制权是用户控制与相应以太坊地址相关的所有资金以及访问授权该地址的合约的根源。私钥用于通过证明交易中使用的资金的所有权来创建花费以太币所需的签名。私钥必须始终保密,因为将其透露给第三方就等于让他们控制由该私钥保护的以太和合约。还必须备份私钥并防止意外丢失。如果它丢失了,它就无法恢复,它所保护的资金也将永远丢失。以太坊私钥的大小2的256次方
  • 公钥是椭圆曲线上的一个点,这意味着它是一组满足椭圆曲线方程的 x 和 y 坐标。公钥可以从私钥中计算出来,但私钥不能从公钥中计算出来。
  • 哈希散列函数:加密散列函数是一种单向散列函数,可将任意大小的数据映射到固定大小的位串。

特性:1)输入可以任意长度,输出是固定长度;2)计算消息的哈希值是有效的(线性复杂度);3)不相关性,输入的微小改动导致输出大不相同,以至它无法与原始消息的散列相关联;4)不可逆性,从消息的哈希值来计算消息是不可行的;5)防碰撞特性,计算两条不同消息而产生相同哈希输出值,应该是不可行的。

  • 以太坊使用 Keccak-256,尽管它在代码中通常称为 SHA-3。
  • 以太坊地址是十六进制数字,标识符来自公钥的 Keccak-256 哈希值的最后 20 个字节。
  • nodeJS

use the term “smart contracts” to refer to immutable computer programs that run deterministically in the context of an Ethereum Virtual Machine as part of the Ethereum network protocol

用智能合约这个词代指:作为以太坊网络协议的一部分,在以太坊虚拟机的上下文中确定性运行的不可变计算机程序

Computer programs:智能合约是计算机程序,

immutable:不可变性,一旦部署后,智能合约就无法更改

Deterministic:确定性,智能合约的执行结果对于每个运行它的人都是相同的

EVM context:在以太坊虚拟机的背景下,智能合约在非常有限的执行环境下运行

Decentralized world computer:EVM 在每个以太坊节点上作为本地实例运行

以太坊中的所有智能合约都是由 EOA 发起的交易执行的。智能合约在任何意义上都不是“并行”执行的——以太坊世界的计算机可以被认为是一台单线程机器。

事务的成功终止在不同的场景下有不同的含义:

(1) 如果一笔交易从一个 EOA 发送到另一个 EOA,那么该交易对全局状态(例如账户余额)所做的任何更改都会被记录;

(2) 如果交易从 EOA 发送到不调用任何其他合约的合约,则记录全局状态的任何变化(例如账户余额、合约的状态变量);

(3) 如果交易从 EOA 发送到仅以传播错误的方式调用其他合约的合约,则记录对全局状态的任何更改(例如账户余额、合约的状态变量);

(4) 如果交易从 EOA 发送到合约,该合约以不传播错误的方式调用其他合约,那么记录的全局状态可能只有一些变化(例如,账户余额、非错误合约),而对全局状态的其他更改不被记录(例如错误合约的状态变量)。

否则,如果事务被还原,它的所有影响(状态更改)都会“回滚”,就好像事务从未运行过一样。

合约不能被修改,但是可以“删除”,从其地址中删除所有代码及存储状态,留下一个空白账户;

删除合约,需要执行EVM的操作码:SELFDESTRUCT ,以前叫做SUICIDE。该操作花费“negative gas ”,即gas退款,从而激励网络客户端资源从存储状态的删除中释放。但是执行该操作的前提是合同的编码中有自毁程序这段、程序可访问,否则无法删除。

这个操作不会删除合约的交易历史(过去),因为区块链本身是不可变的。

编程语言可以分为两种广泛的编程范式:声明式和命令式,也分别称为函数式和过程式。

在声明式编程中,编写的函数用来表达程序的逻辑,而不是其流程。例如SQL。命令式编程是程序员编写一组结合程序逻辑和流程的过程,例如java,c++。

solidity版本控制模型,该模型将版本号指定为由点分隔的三个数字:MAJOR.MINOR.PATCH。Solidity 将“次要”编号视为主要版本,将“补丁”编号视为次要版本。因此,在 0.6.4 中,6 被认为是主要版本,4 被认为是次要版本,补丁是0。

Solidity 程序可以包含一个 pragma 指令,该指令指定它兼容的 Solidity 的最小和最大版本,并可用于编译您的合约。

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

以太坊学习-笔记1 的相关文章

  • 以太坊day(4)

    以太坊day 4 一 遇见的错误 1 1 Error Invalid JSON RPC response 二 goland上进行合约的开发 2 1 需要的源 2 2 合约文件 2 3 编译合约 2 4 部署合约 2 5 获取合约实例 2 6
  • 测试中

    root ubu blockchain2 ll total 44 drwx 5 root root 4096 Aug 4 09 48 drwxr xr x 23 root root 4096 Jul 26 11 26 rw r r 1 ro
  • 以太坊智能合约部署与交互

    启动容器来执行geth命令 root ubu blockchain2 docker run i blockchain101 ethereum geth 1 6 5 geth attach http 45 32 252 88 8201 Wel
  • IPFS环境搭建和用ipfs-api访问ipfs网络

    ipfs是去中心化星际文件系统 本文介绍节点软件ipfs环境搭建和使用方法 学习ipfs api在nodejs代码中访问ipfs网络 一 ipfs节点安装与使用 1 1下载节点软件 到官网下载windows版的ipfs节点软件 32位 64
  • Flashswap 学习笔记(附代码)

    什么是Flashswap 利用交易的原子性 可以在这样的同一笔交易中调用智能合约 同时完成借和还 参考下图 Flashswap流程 代码 流程 代码 SPDX License Identifier GPL 3 0 pragma solidi
  • 以太坊的企业系统集成

    最流行的开源Java集成库 Apache Camel现在支持以太坊的JSON RPC API 以太坊生态系统 以太坊是一个开源 公共 区块链平台 用于运行智能合约 它提供了一个去中心化的图灵完备虚拟机 可以执行脚本和加密货币 用于补偿参与者
  • 以太坊学习笔记(三)——搭建以太坊私链

    以太坊私链的搭建可以直接通过下载程序进行安装 也可以通过编译源码安装 本文介绍通过编译源码进行安装 编译源码 1 准备环境 我们下载的是go语言的源码 首先需要正确的安装go语言环境 如何正确安装go语言环境 大家可以去网上找教程 2 下载
  • 聊聊区块链--如何投资数字货币

    想知道更多关于区块链技术知识 请百度 链客区块链技术问答社区 链客 有问必答 未经允许 拒绝转载 https www liankexing com note note page id 7071 html 1 比特币 bitcoin 比特币是
  • 以太坊的状态树 Merkle Patricia Tree

    Merkle Patricia Tree Merkle树 https www cnblogs com fengzhiwu p 5524324 html Merkle Tree 通常也被称作Hash Tree 顾名思义 就是存储hash值的一
  • 通过python构建一个区块链来学习区块链

    了解区块链Blockchains如何工作的最快方法就是构建一个区块链 你来到这里是因为 和我一样 你对加密钱币的崛起感到很兴奋 而且你想知道区块链是如何工作的 想了解它们背后的基本技术 但理解区块链并不容易 或者至少不适合我 我在密集的视频
  • 以太坊网络架构解析

    以太坊网络架构解析 版权 0x7F 知道创宇404区块链安全研究团队 https www cnblogs com southx p 9334639 html 0x00 前言 区块链的火热程度一直以直线上升 其中以区块链 2 0 以太坊为代表
  • 认识一下以太坊、EOS和Hyperledger等不同的区块链

    不同的区块链智能合约和区块链技术现在风靡一时 越来越多的人出于某种原因试图进入这个神奇的世界 如果你是这项技术的新手并正在寻找基于区块链的开发平台的快速入门 那么本指南非常适合你 我们将重点关注和比较的平台是 Ethereum EOS Hy
  • 带你玩转以太坊智能合约的”Hello World“

    学习目标 使用solidity语言撰写智能合约 开发前的准备 Ubuntu环境下Atom编辑器安装及使用 安装所需工具 安装nvm 安装node 安装npm 启动testrpc 建立项目 目录结构 新建HelloWorld合约 代码说明 编
  • Solidity中引入的SPDX是什么

    Solidity中引入的SPDX是什么 起因 Solidity 0 6 8 要求引入 SPDX 许可证 否则会出现警告 Warning SPDX license identifier not provided in source file
  • solidity通用模式访问限制

    通用模式 访问限制 访问限制是智能合约的一种通用模式 但你不能限制任何人获取你的智能合约和交易的状态 当然 你可以通过加密来增加读取难度 但是如果你的智能合约需要读取该数据 指加密的数据 其他人也可以读取 你可以通过将合约状态设置为私有来限
  • 在一台电脑上用不同端口同步以太坊区块链节点

    首先要获取第一个节点的信息 在第一个节点的控制台中输入 gt admin nodeInfo enode 将输出的结果用鼠标操作复制 然后在第二个节点的JS控制台中添加第一个节点为静态节点 输入 gt admin addPeer 例如admi
  • js连接web3,连接小狐狸metamask钱包,实现链不对后切换网络和创建网络

    直接上代码 我这里吧所有配置都改成正式的链56 一旦用户的小狐狸钱包现在的链不一致 就询问切换网络 没有就创建网络 网络切换成功后 收到监听 重新连接一下web3 就是重新调用一些connectWeb3这个方法 再连接合约 connectW
  • 以太坊智能合约各方法对应的签名编码

    erc20智能合约常见方法对应的签名编码 常见例如交易 transfer address uint256 编码为 web3 sha3 transfer address uint256 substring 0 10 gt 0xa9059cbb
  • 从Java到区块链:如何成为区块链开发人员

    最近这些天 区块链是每个开发人员的谈资 来自各个领域的许多软件开发商现在正试图进入区块链市场 我们与Mobilunity的区块链软件开发人员Eugene Kyselev 讨论了他是如何走出区块链开发方面的第一步的 希望对大家有所帮助 JAX
  • 以太坊区块链学习之在私链上部署合约

    上一篇博客介绍了如何搭建私链并在私链上创建账户 挖矿 查看余额 本篇将介绍在私链上部署合约并与之交互 本篇开发环境为MacOS 10 12 建议读者使用macOS系统或者Ubuntu系统 第一步 进入geth客户端 启动私链 进入geth客

随机推荐

  • 分享Figma一些非常快速、省时、省力的功能和小技巧

    众所周知 越来越多的大工厂正在使用它figma了 那你的figma它是如何使用的 您是否遇到过一些问题或操作不方便的事情 今天 我想和大家分享Figma一些非常快速 省时 省力的功能和小技巧 因为文章属于直译 所以良心哥在编辑时帮你整理知识
  • [系统安全] 五十一.恶意家族分类 (2)基于API序列和深度学习的恶意家族分类实例详解

    您可能之前看到过我写的类似文章 为什么还要重复撰写呢 只是想更好地帮助初学者了解病毒逆向分析和系统安全 更加成体系且不破坏之前的系列 因此 我重新开设了这个专栏 准备系统整理和深入学习系统安全 逆向分析和恶意代码检测 系统安全 系列文章会更
  • 反馈及运放基础了解

    在电子电路中 将输出量 输出电压或输出电流 的一部分或全部通过一定的电路形式作用于输入回路 用来影响其输入量 放电电路的输入电压或输入电流 的措施称为反馈 基本放大电路的输入信号称为净输入量 它不但决定于输入信号 输入量 还与反馈信号 反馈
  • 将linux上的项目传到github上

    在网友的帮助下 终于学会了这一招 1 首先要确定你的linux上有安装了git 2 到你的网页github上新建一个仓库 将其clone到linux上 3 将你的项目放进这个空的仓库 文件夹 3 1 执行命令 git add 4 执行命令
  • 日语动作变形

    动1动词 动2动词 动3动词 基本型 可以作为连体形 行 買 帰 飲 呼 書 食 起 寝 変 準 変 変 来 连用形 行 買 帰 飲 呼 書 食 起 寝 変 準 変 変 来 体 也就是连用形 词尾由 段变为 段加 行
  • 这一年,谢谢自己

    兜兜转转间 这个开局有些艰难的2020就已经过半了 这些日子 你过得还好吗 不管是努力抵抗病痛 还是奋力工作生活 其实一直以来 我们都在路上 摸爬滚打 艰难前行 我们总是在追寻 在求索 为了所爱的人 而默默付出努力 却仍时时觉得对不起他们
  • 基于R语言tidyverse包的数据分析实践

    目录 1 tidyverse包基础 1 0 下载使用tidyverse 1 1 数据清洗 1 1 1 提取数据 1 1 2 数据整理与采样 1 1 3 缺省值处理 1 1 4 重复值处理 1 1 5 异常值处理 1 2 数据预处理 1 2
  • 【bug】ClassCastException 同一个类为什么还会类转换异常?

    错误日志 2021 11 11 20 51 18 304 maomao 3896 nio 8081 exec 2 ERROR c maomao common GlobalExceptionHandler 79 java lang Class
  • Kafka的认证

    Kafka支持基于SSL和基于SASL的安全认证机制 基于SSL的认证主要是指Broker和客户端的双路认证 即客户端认证broker的证书 broker也认证客户端的证书 Kafka还支持通过SASL做客户端认证 SASL是提供认证和数据
  • 数据结构与算法--图的深度优先搜索 (DFS)

    深度优先搜索即是 从起点出发 从规定的方向中选择一个不断往前走 走到头为止 然后尝试另一种方向直到最后的终点 DFS解决的是连通性问题 即从A是否能到达B 采用DFS进行遍历的话 必须依赖栈 后进先出 假设有一个图 里面有A B C D E
  • chromeOS中配置Java环境,部署Tomcat,Eclipse开发环境

    本文基于ChromeOS 版本107 0 5304 110 正式版本 基于java 1 8 0 202 基于apache tomcat 9 0 63 基于eclipse jee 2022 09 R 设置 开发者 Linux开发环境 启用 c
  • Spring Boot + vue-element 开发个人博客项目开发(十、通知公告功能实现)

    前面设计的通知公告中有两个字段不规范 现在我们重新调整一下 调整如下 原先的 noticeContent text NULL COMMENT 公告内容 createBy VARCHAR 128 NOT NULL COMMENT 创建者 修改
  • Qt界面编程(五)—— QDialog对话框(标准对话框、消息对话框、标准文件对话框)

    目录 1 基本概念 1 1 模态对话框 1 2 非模态对话框 2 标准对话框 3 消息对话框 3 1 About 3 2 AboutQt 3 3 Critical 3 4 Infomation 3 5 Question 3 6 warnin
  • ThreadPoolExecutor问题定位

    今天定位了一个内存泄露的问题 错误如下 Exception in thread http exec 24 java lang OutOfMemoryError unable to create newnative thread 众所周知 内
  • 应用程序无法正常启动(0x000007b)或者找不到dll文件(以vcruntime140d.dll为例)的原因原理分析和解决方法(亲测已解决)

    文章目录 一 问题1 由于找不到vcruntime140d dll 无法继续执行代码 重新安装程序可能会解决此问题 二 问题2 应用程序无法正常启动 0x000007b 请单击 确定 关闭应用程序 三 Windows目录下的SysWOW64
  • 【开始学习React Hook(1)】Hook之useState

    react hook是react推出的一种特殊函数 这些函数可以让你在不创建react class的情况下依然可以使用react的一些特性 诸如目前react的钩子函数拥有的所有特性 最常用的hook有useState useEffect
  • 网络安全——从新手入门到大师的学习攻略

    最近经常有网友问我网络安全方面怎么样从入门到大师 或者成为黑客 红客等 其实我想说的是 只要你有毅力 能坚持学习各种必须的网络安全技术和理论知识 随着时间的积累 最终一定会成为你心中最想成为的网络安全专家 本文就着重讲解下网络安全从入门到大
  • Docker搭建漏洞靶场(Vulhub、Vulnapp、Vulfocus)

    文章目录 vulhub 靶场搭建 简介 环境搭建过程 vulnapp靶场搭建 vulfocus靶场搭建 简介 环境搭建 vulhub 靶场搭建 简介 Vulhub是一个面向大众的开源漏洞靶场 无需docker知识 简单执行一条命令即可编译
  • 数据中心联盟第五批大数据产品评测结果出炉,腾讯云大数据斩获多个奖项

    欢迎大家前往腾讯云社区 获取更多腾讯海量技术实践干货哦 近日 在数据中心联盟组织的第五批大数据产品评测中 腾讯云大数据平台取得了两项第一名 特别在Hbase性能上有非常亮眼的表现 其他各项成绩也名列前茅 本月7日 中国通信标准化协会常务副秘
  • 以太坊学习-笔记1

    加密 以太坊有两种不同类型的账户 外部拥有账户 EOA 和合约 EOA 的以太坊地址是从密钥对的公钥部分生成的 以太坊使用的系统是基于公钥加密的系统 密钥是成对出现的 由一个私有 秘密 密钥和一个公共密钥组成 私钥提供对账户的控制权 公钥将