来源:小编 更新:2024-12-21 07:36:54
用手机看
以太坊(Ethereum)是一种去中心化的区块链平台,它不仅支持加密货币以太币(ETH)的交易,还允许开发者创建和部署智能合约。自2015年诞生以来,以太坊已经成为全球最大的智能合约平台之一。
在以太坊中,账户是参与交易和执行智能合约的基本单位。以太坊账户主要分为两种类型:外部账户(Externally Owned Account,EOA)和合约账户(Contract Account)。
外部账户由私钥控制,没有与之关联的智能合约代码。用户可以通过私钥发起交易、接收以太币和与智能合约进行交互。外部账户的地址由公钥的哈希值生成,任何人都可以通过地址查看账户的余额和交易历史。
合约账户包含智能合约代码,并由以太坊虚拟机(EVM)执行。合约账户可以接收以太币,并根据预定义的逻辑执行操作,如存储数据、执行计算、发送交易等。合约账户的地址由创建合约时的交易地址和该交易的序号共同决定,因此合约地址是唯一的。
以太坊交易是指由外部账户发起的行动,即由人管理而不是智能合约管理的账户。例如,如果Bob发送Alice 1 ETH,则Bob的账户必须减少1 ETH,而Alice的账户必须增加1 ETH。交易会造成状态的改变。
所提交的交易包括以下信息:
from:发送者的地址,该地址将签署交易。这将是一个外部账户,因为合约账户不能发送交易。
to:接收地址(如果是外部账户,交易将传输值。如果是合约账户,交易将执行合约代码)
signature:发送者的标识符。当发送者的私钥签署交易并确保发送者已授权此交易时,生成此签名。
nonce:一个有序递增的计数器
以太坊地址的生成过程如下:
曲线生成私钥,是由32字节的随机数生成。
采用椭圆曲线数字签名算法(ECDSA)将私钥(32字节)映射成公钥(65字节)。
公钥(去掉04后剩下64字节)经过Keccak-256单向散列函数变成了32字节,然后取后20字节并加上0x作为前缀所得就是ETH地址。
需要注意的是,以太坊地址的生成过程中并不涉及公钥的直接使用。公钥只是用于生成地址的中间步骤。
以太坊作为一种去中心化的区块链平台,其账户类型、交易机制和地址生成过程都是其核心组成部分。了解这些基本概念对于深入理解以太坊的工作原理具有重要意义。