主页 > imtoken官方下载2.9.8 > 区块链以太坊技术秘密

区块链以太坊技术秘密

imtoken官方下载2.9.8 2023-10-05 05:10:43

21 世纪技术官指南:在本文中,我们将向您介绍开源区块链以太坊背后的主要概念以及它如何确保我们交易的安全性。

1. 什么是以太坊?

以太坊是一个用于构建和运行分布式应用程序的开源区块链平台。 以太坊是一个可扩展的“单例”模式的计算机网络,我们可以理解为每个人都可以使用的单台计算机。 它也是一个几乎为零的公共区块链基础设施平台。

任何加入以太坊区块链的人都可以向平台上传程序并请求执行上传的程序。

2. 以太坊虚拟机

EVM 是以太坊的核心,是一个可编程的区块链。 开发人员可以使用它来创建任何复杂的操作。 EVM 侧重于提供安全性,可以防止常见的网络攻击,例如 Dos(拒绝服务)。

可用于加密数字货币,如区块注册、银行交易等。支持P2P网络,保证通信无干扰传输。

总之,开发者可以将其理解为智能合约的运行环境,这与Java中Java虚拟机的原理是一致的。

3. 以太坊客户端

以太坊客户端支持以下开发语言:

4. 什么是矿工

它为用户提供计算处理能力。 加入网络后,您在以太坊网络中就有了一个节点,可以接收交易、传播交易、验证交易并执行交易。 它可以接收一种名为“以太”的小型加密货币,这是验证网络的交易费用。

让我们了解一些关于矿工的重要事情。

以太币(Ether currency):这是一种用于转换区块链网络计算贡献的加密货币,可以兑换比特币和美元。

工作证明:解决一个复杂的数学问题以成功“挖掘”一个区块被称为“工作证明”。

5. 以太坊如何运作?

以太坊上的一切都是基于账户的。 以太坊状态下有两种账户区块链技术来源于以太坊,都有账户余额。

1) 外部账户 (EOA) - 这些是用户控制的账户。 他们可以进行交易(转账或触发合约代码)。 这通常由不携带任何相关代码的私钥控制。

例如,钱包地址如下所示:

0x2easdf8745dfgszxcvkhsdf543sfg5shhhkjha(公钥版本)。

2) 合同——这是一个系统或内部代码。 它维护一个数据存储以调用其他合约。 合同存储正在进行的合同或多个用户之间的关系。 例如合约的钱包地址如下:

0x9812dfgfdskjhgfgszxcvkhsdf543swg5shskkmh

以太坊中的每一个动作都是由一个 EOA 发起的交易产生的,它可以触发与另一个 EOA 或合约的交易。 合约代码由参与以太坊网络的每个节点的 EVM 执行。 合约可以执行交易/调用其他合约。

账户交互可以理解为下图:

智能合约

智能合约是一种无风险执行透明交易的代码(使用合约账户)。 可以通过下图来理解。

以太坊密钥文件

私钥:这是一个 64 个字符的字符串。 64 位以外的字符串是有效密钥。

公钥或钱包地址:哈希私钥的最后40个字符,以十六进制格式的'ox'开头。

看下面的关键转换图(private to public)

现在让我们看看以太坊的一些可以用来代替以太坊的工具。

以太扫描网

这是一个区块浏览器。 图中的箭头指向一些重要的元素。

ethstats.net

下面是以太坊仪表板,用于显示以太坊统计数据。

区块链交易

“一个签名的数据包,用于存储从外部账户 (EOA) 发送到区块链上另一个账户的消息。

——詹姆逊

如果你想在区块链中做任何事情,你都必须通过交易。 在事务中包含以下属性:

1)To(recipient):收件人或合约地址

2)From(发送者):发起交易的发送者(账户或合约地址)

3) Gas Price:EVM 中的每个 OpCode(我们要执行的任何计算步骤都有相同的 OpCode)都有固定的价格。 Gas 是交易的发送方需要为以太坊区块链上的每个操作支付的执行费用。 由于它是一种“加密燃料”,因此被命名为“Gas”。

4) Gas Limit: Maximum Computable Step Transactions are executed; 这意味着每笔交易都有有限数量的允许计算步骤。

5) Gas usage:所有OpCodes执行的所有Gas的总和。

6) 价值:已交易的以太币(以太币的基本单位称为Wei)。

7) 签名:用于识别发送者的身份区块链技术来源于以太坊,以便验证发送者的意图。

8) Nonce:发送账户的交易序号; 这有助于以正确的顺序索引和处理交易。

9) 区块高度:这里是唯一的区块编号。

10)数据:有效载荷; 原始数据或合同。

如果你指定的 gas 太少,如果交易开始执行,它可能会用完 gas 并以“gas”异常停止。

注意:以太坊加密算法不是基于 RSA 加密。 相反,它使用椭圆曲线加密 (ECC) 算法。

什么是操作码?

这是指示机器执行特定操作的机器语言指令。 因此,OpCode可以理解为汇编语言。

无论我们作为智能合约或交易的一部分编写什么代码,它都会被 EVM(以太坊虚拟机)编译和解释,并生成一个等效的 OpCode,以便 EVM 可以执行它。

这些操作中的每一个都有一些成本,以“gas”来衡量。 任何交易中所有操作码的累计总和就是该交易的总成本。

一些以太坊操作码及其含义如下。

暂停和算术运算:

0x00 STOP 停止执行

0x01 ADD 加法运算

0x02 MUL乘法运算

0x03 减法运算

0x04 DIV整数除法运算

0x05 SDIV 有符号整数

0x06 MOD 取模

0x07 SMOD 有符号模

0x08 ADDMOD模数

0x09 MULMODModulo

0x0a EXP指数运算

0x0b SIGNEXTEND 扩展二进制补码有符号整数的长度

比较和按位逻辑运算:

0x10 LT小于比较

0x11 GT 大于比较

0x12 SLTSigned 小于比较

0x13 SGTSigned 大于比较

0x14 EQ 相等比较

0x15 ISZERO 简单非运算符

0x16 AND 按位与运算

0x17 OR 按位或操作

0x18 XOR 按位异或运算

0x19 NOT 按位非运算

0x1a BYTE 从字中检索单个字节

SHA3​​:

0x20 SHA3 计算 Keccak-256 哈希

环境信息:

0x30 ADDRESS 获取当前执行账户的地址

0x31 BALANCE 获取给定账户的余额

0x32 ORIGIN 获取执行起始地址

0x33 CALLER 获取调用方地址。 这是直接负责本次执行的账户地址

0x34 CALLVALUE 通过负责本次执行的指令/交易获取存入的值

0x35 CALLDATALOAD 获取当前环境的输入数据

0x36 CALLDATASIZE 获取当前环境输入数据的大小

0x37 CALLDATACOPY 将当前环境中的输入数据复制到内存 消息调用指令或交易传递的输入数据

0x38 CODESIZEG 获取当前环境运行的代码大小

0x39 CODECOPY将当前环境运行的代码复制到内存中

0x3a GASPRICE 获取当前环境的gas价格

0x3b EXTCODESIZE 获取账户代码的大小

0x3c EXTCODECOPY 复制账户代码到内存

区块信息:

0x40 BLOCKHASH 获取最近 256 个完整区块之一的哈希值

0x41 COINBASE 获取区块受益人地址

0x42 TIMESTAMP 获取区块的时间戳

0x43 NUMBER 获取区块编号

0x44 DIFFICULTY 获取区块的难度

0x45 GASLIMIT 获取区块的gas limit

堆栈、内存、存储和进程操作:

0x50 POPR 从堆栈中移除项目

0x51 MLOAD 从内存中加载字

0x52 MSTORES 将字存入内存

0x53 MSTORE8 将字节保存到内存

0x54 SLOAD 从存储器中加载字

0x55 SSTORES 将字存入存储器

0x56 JUMP改变程序计数器

0x57 JUMPI 有条件地改变程序计数器

0x58 PC 获取递增前程序计数器的值

0x59 MSIZE 获取活动内存的字节大小

0x5a GAS 获取可用gas的数量,包括相应的减少量

0x5b JUMPDEST 标记有效的跳转目的地

系统操作:

0xf0 CREATE使用关联代码创建一个新帐户

0xf1 CALLMessage-呼叫账户

0xf2 CALLCODEMessage-使用备用帐户代码呼叫此帐户

0xf3 RETURNHalt 执行返回输出数据

0xf4 DELEGATECALL 消息调用此帐户,使用替代帐户的代码,但保留“sender”和“value”的当前值

我们不需要编写低级程序(使用OpCode),因为在设计智能合约时有高级语言的发展。

主交易成本

估计交易成本

如果 GasLimit = 2100 且 GasPrice =23.089 gWei

上面表达式的解释是——“我们想以 23.089gWei 的价格购买最多 2100 gas”

因此,估计的最大交易成本

= GasLimit * Gas​​Price = 2100 * 23.089

= 53104.7 gWei

实际交易成本

如果 GasUsed = 2040 和 GasPrice = 23.089gWei

上面表达式的解释是——“我们以 23.089gWei 的价格花费了 2040Gas。”

所以,实际交易成本 = GasUsed * Gas​​Price

= 2040 * 23.089

= 47101.56 gWei

我们希望本文能让您更好地了解区块链和以太坊交易流程。

祝您学习愉快!