Ethereum 以太坊基础

目录

1. Ethereum definition

2. smart contract

3. Ethereum Accounts

4. EVM

5. Ethereum Client

6.Ethereum wallet

7. Gas

8. Ethereum Transaction

9. Ether

10. Ethereum Network

11. Ethereum key


1. Ethereum definition

Ethereum是一个建立在区块链技术之上的去中心化应用平台。它允许任何人在平台上建立和使用通过区块链技术运行的去中心化应用(DApp)。

DApp和现在互联网C/S架构的应用不同,其后端是一个有N个节点计算机(矿工)组成的网络,

在前端,用户通过自己的钱包处理自己的数据,在后端核心逻辑使用智能合约运行在区块链上,实现去中心。

Dapp与客户端连接的节点,只是网络中的一份子,它不单独处理来自用户的请求(这个请求通常称之为“交易”),而是要把用户的请求广播到整个网络,待整个网络达成共识之后,整个请求才算处理完成

2. smart contract

智能合约是以太坊上运行的程序,和其他程序一样,它由代码和数据组成的。智能合约中的数据也称为“状态”,因为整个区块链就是由所有数据的确定的一个状态机

以太坊智能合约是 “图灵完备”的,因此理论上我们可以用它来编写能做任何事情的程序。 以下为一个简单的计数器合约

pragma solidity ^0.8.0;
contract Counter {
    uint counter;
    constructor() {
        counter = 0;
    }
​
    function count() public {
        counter = counter + 1;
    }
}

3. Ethereum Accounts

在比特币中运用的是基于Transantion的账户模型,使用UTXO的结构存储有关用户balance的数据,这种模式下并没有显式的记录每个账户的balance, 需自行计算用户具有私钥的UTXO的总值。(隐私性强,但实用性不佳)

以太坊中基于账户的模式,每个账户都包括了一个余额balance和以太坊特殊定义的数据(代码和内部存储),以太坊中有两类账户:

1)外部用户账户EOA

该类账户被公钥-私钥对控制(由人控制),可用来进行交易的发送(转币或触发合约调用代码)其中主要包含有对应的以太币余额,但没有关联代码

2)合约账户

该类账户被存储在账户中的代码控制,有对应的以太币balance和关联代码和自己存储空间,可通过交易或来自其他合约的调用消息来触发代码执行,并且可以操作自己的存储空间

·账户状态

账户状态有4个基本组成部分

外部用户账户和合约账户,它们都是用同样的地址形式来表示,在 EVM 层面是一样的,地址形式是一个20字节的16进制数。

外部用户账户的地址是由私钥推倒出来的,合约账户的地址则由创建者的地址和nonce计算得到

·nonce

如果账户是一个外部用户账户,nonce代表从此账户地址发送的交易序号。如果账户是一个合约账户,nonce代表此账户创建的合约序号

【注】:以太坊中有两种nonce , 一种是账号nonce——表示一个账号的交易数量;一种是工作量证明nonce——一个用于计算满足工作量证明的随机数。

4. EVM

·def

以太坊虚拟机(Ethereum Virtual Machine),是智能合约的运行环境, 用来执行以太坊上的交易。 可以把EVM当做JVM来理解,EVM 同样是一个程序运行的容器,合约通常以solidity语言编写后,通过EVM编译器编译为字节码,最终通过客户端部署到区块链网络中

以太坊虚拟机是一个被沙箱封装起来、完全隔离的运行环境,在EVM中运行的代码无法访问网络、文件系统和其他进程, 只能访问内部信息

·EVM兼容链

繁荣的以太坊生态导致各大公链意识到与其开发自己特色的虚拟机,不如主动兼容以太坊虚拟机,从而可快速的承接以太坊应用

目前比较流行的 EVM 兼容链有:Polygon 链、BNB 链(BSC)、OK链、Avalanche C 链、Fantom 等。他们和以太坊链一样,使用相同的地址格式,使用相同的 EVM 代码,支持以太坊开发工具及钱包。

每一个链有自己的chainId 和 相应的节点 RPC, 我们可以在 MetaMask 等通过添加自定义网络 RPC(Custom RPC) 来添加

5. Ethereum Client

以太坊客户端是一个软件应用程序,是以太坊网络中的节点程序,运行节点程序就可以加入的区块链网络中,成为一个节点。这个节点程序可以完成如创建账号、发起交易、部署合约、执行合约、挖掘区块等工作。

常见的以太坊客户端有:

6.Ethereum wallet

以太坊钱包是进入以太坊系统的门户,它包含了私钥,可以代表我们创建和广播交易,常见的wallet有:

1)metamask 一种浏览器扩展wallet,可在浏览器上运行,可以和Remix配合使用,用来部署和执行智能合约

2)jaxx 可在各种操作系统上运行的多平台、多币种的wallet

3)myetherwallet 基于web的wallet,可在任何浏览器中运行

7. Gas

前面提到,在EVM上运行的智能合约是 “图灵完备”的,理论上可以编写能做任何事情的程序。既然如此,恶意的执行者就可以通过执行一个包含无限循环的交易轻易地让网络瘫痪。

以太坊通过每笔交易收取一定的费用来保护网络不受蓄意攻击,这一套收费的机制称为 Gas 机制

Gas 是衡量一个操作或一组操作需要执行多少” 工作量” 单位。例如,计算一个Keccak256加密哈希函数,每次计算哈希时需要30个 Gas ,再加上每256位被哈希的数据要花费6个 Gas 。EVM上执行的每个操作都会消耗一定数量的 Gas ,而需要更多计算资源的操作也会消耗更多的 Gas 。

理解:可以把 Gas 看做是以太坊虚拟机的运行燃料,它在每执行一步的时候消耗一定的 Gas , 如果给定的 Gas 不够,无论执行到什么位置,,将会触发一个 out-of- gas 异常,当前交易所作的所有状态修改都将被还原。

8. Ethereum Transaction

函数调用信息封装在DATA字段中,把这个交易信息发送到要调用的智能合约的地址

·具体数据结构

交易是包含以下数据的序列化二进制消息:

9. Ether

ETH,对于用户来讲,最常用的是ether,1个ether就是我们常说的一个以太币(通常也简称为以太),对于开发者来说可能最常用的是wei, 它是以太币的最小单位, 其他的单位包括finney、szabo,其中wei还有几个衍生的单位:Kwei、Mwei以及Gwei

1 ether == 10^3 finney(即1000 finney)

1 ether == 10^6 szabo

1 ether == 10^18 wei

1 Gwei == 10^9 wei

1 Mwei == 10^6 wei

10. Ethereum Network

以太坊中有不同的网络,平常我们所说的以太坊一般是它的主网络,它是真正的以太坊区块链,主网网络是真正的价值网络。

而我们为了进行测试等工作还可以使用测试网络,测试网络会提供水龙头让开发者可以领取免费测试币。例如以太坊提供了GoerliSepolia 测试网 , Polygon 提供了 Mumbai 测试网

11. Ethereum key

1)private key 以太坊私钥是一个256位的随机数,用于发送以太的交易中创建签名来证明资金的所有权

2)public key 以太坊公钥是由私钥通过椭圆加密曲线secp256k1算法单向生成的512位数

3)address 地址是由公钥的keccak256单向哈希取最后20个字节派生出的标识符


【注】:因审核原因部分内容不完整

猜你喜欢

转载自blog.csdn.net/weixin_46516647/article/details/131463664
今日推荐