以太坊账户模式

以太坊账户模式指的是以太坊区块链网络中的账户系统。以太坊是一种基于区块链技术的智能合约平台,与比特币区块链不同,以太坊区块链上存在两种类型的账户:外部账户(Externally Owned Account,EOA)和合约账户(Contract Account)。

欧易
欧易(OKX)

全球三大交易所之一,注册领50U数币盲盒,币圈常用的交易平台!

币安
币安(Binance)

币安交易所是世界领先的数字货币交易平台,注册领100U。



以太坊账户模式

比特币采用的基于交易的账本,这种模式并没有显式的记录每个账户上有多少余额,需要根据UTXO中的信息推算。

以太坊账户模式

这种模式的优势是隐私保护比较好,但是使用上比较别扭,使用时需要说明交易的币的来源。

而且比特币系统中,如果要花掉前面的一个输出,必须把这个输出的所有币全部花完,不能只花一部分。例如:A转给B账户10 BTC,B在花这个输出时,只给C转了3 BTC,那么剩下的7 BTC会被当做交易费给了拥有记账权的矿工。所以,B在转给C账户3BTC时,还必须把剩余的7 BTC转给自己的另一个账户中。

以太坊采用的是基于账户的账本模型(account-based ledger)。

这种模型和我们日常的银行模式很类似。例如在以太坊中,A转账给B账户10 ETH,这个交易是否合法只需要检查A账户是否有足够的钱即可,不用说明币的来源是来自之前哪个交易的输出。B转账到C账户3 ETH时,也无需将剩余的币转到自己的其他账户。

以太坊这种模式对于double spending attack有天然的防御作用。但是与双花攻击对应的,还有一种攻击——重放攻击(replay attack)。以太坊中为了防范重放攻击,在交易中增加了一个nonce,用来记录这个账户有史以来一共发生了多少次交易。转账时,这个交易次数nonce要作为转账交易内容的一部分,将整个交易内容用交易者的签名做保护,一起发布出去。

以太坊中有两类账户:外部账户与合约账户。

以太坊外部账户

外部账户(externally owned account)类似比特币中的账户,本地产生一个公私钥对,利用私钥进行控制。有时也称为普通账户。

外部账户的状态有:余额(balance)、交易次数(nonce)。

以太坊外部账户(Externally Owned Account,EOA)作为以太坊网络中的一种账户类型,类似于比特币中的账户,采用公私钥对进行控制。在以太坊中,外部账户是由用户创建和拥有的,与智能合约账户(Contract Account)不同,外部账户通过私钥拥有者控制资产和执行交易。每个外部账户都有一个与之相关的余额和交易次数。

余额指的是该账户所持有的以太币数量,以太币是以太坊网络的本地加密货币,用于支付交易费用、执行智能合约等操作。外部账户的余额可以通过向该账户发送以太币进行增加,或者执行交易转移资产而减少。比如,当一个外部账户收到其他账户发送的以太币时,其余额会增加;而当该账户执行转账或支付交易费用时,余额则会减少。

外部账户还具有交易次数(Nonce)这一状态。交易次数是一个递增的整数,用于确保交易的顺序性和安全性。每当一个外部账户发送一笔交易时,其交易次数会加一。以太坊网络根据交易次数来检测和防止重放攻击,保证交易的唯一性和有效性。交易次数还有助于防止交易顺序的混乱,确保交易能够按照发送顺序被处理。

以太坊合约账户

合约账户(smart contract account)不是由私钥进行控制的。

合约账户不能主动发起交易,所有的交易只能有外部账户发起。外部账户发起一个交易,如果调用了一个合约账户,这个合约账户可以再调用另一个合约账户,这样是可以的,但是它不能自己平白的发起一个交易。

合约账户除了具有余额(balance)、交易次数(nonce)之外,还有代码(code)、存储(storage)。

在创建合约时会返回一个地址,知道这个合约的地址就可以调用这个合约,调用的过程中合约账户的storage会发生变化。

以太坊合约账户的特性决定了它与普通以太币账户的区别和作用。普通以太币账户由私钥控制,可以主动发起交易,而合约账户不具备这样的能力。它们并不存储私钥,因此无法主动发送交易。所有的交易都需由外部账户来发起并支付燃气费用。

当一个外部账户发起交易并调用合约账户时,合约账户可以再调用其他合约账户,这种多层嵌套调用是以太坊智能合约架构的一个重要特点。这种设计使得以太坊的区块链系统更加灵活和强大,使得各类复杂的智能合约和去中心化应用能够得以实现。

除了余额和交易次数外,以太坊合约账户还具有代码和存储。合约账户的代码决定了其逻辑和功能,而存储则是用来存储合约执行过程中的状态和数据。当调用合约时,合约账户的存储状态会相应发生改变,这一点在智能合约的执行过程中尤为重要。

在以太坊创建合约时,系统会返回一个合约地址。这个地址是用来唯一标识这个合约的,其他用户可以通过这个地址来调用该合约的功能。通过调用合约,可以执行其中定义的操作,同时改变合约账户的存储状态,实现各种复杂的逻辑和功能。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...