主页 > imtoken钱包app安卓版 > 区块链学习笔记14-以太坊账户

区块链学习笔记14-以太坊账户

imtoken钱包app安卓版 2023-01-17 22:47:20

14. 以太坊账户基于交易账本

比特币使用基于交易的分类账。 在这种模式下,系统不会记录每个账户中有多少钱。 必须要根据UTXO里面的信息去计算,包括想知道这个人总共有多少资产。 比特币,即使你查看这个人的所有账户,他在 UTXO 中有多少比特币用于那些有私钥的账户。 优点是隐私保护比较好。 自己有多少钱,可能连自己都说不清楚,别人就不清楚了。

但这带来了一个问题。 使用起来很别扭,和我们日常的体验不太一样。 例如转账时,A需要转B10BTC比特币发展模式是什么,A需要说明这10个币的来源,其中7个是上一笔交易收到的,另外3个是上一笔交易收到的,证明合法性硬币的来源,这与我们通常去银行的经历不同。 银行就是你存钱的地方。 说明钱的来源,这样下次你花钱的时候,就不用说明每一笔钱的来源以后要花,必须一次性花完,不能只花一部分,只花一部分会怎样? 健康)状况

在这里插入图片描述

剩余的 7 个比特币将用作交易费用。 这个时候矿工会很开心,但是如果你不开心,这个时候你应该把他们转回给自己,如下图

在这里插入图片描述

莱特币和比特币是通用货币吗_比特币发展_比特币发展模式是什么

许多比特币钱包可以自动生成用于接收余额的地址。 每次交易更换一个新的地址也有利于隐私保护,但也有别于我们的日常习惯。 比如在银行,人家给你转十块钱,你有三万元,你就得转三万元,剩下的七万元你不用操心,放在账户里就行了。 问题是在比特币系统中没有维护账户的交易概念。

基于帐户的模型

以太坊采用基于账户的账本模型,类似于银行账户。 系统中要显示的记录是每个账户有多少以太币。

比如A转账B10ETH,只需要检查这笔交易的合法性,看A的账户中是否有足够的钱。 比如A的账户有100个ETH,10个ETH转给B,没问题,不用解释。 100个以太币中,具体是哪10个转给了B,币的来源就不用解释了,之前是哪笔交易,B以后也有可能转3个以太币给C,以及剩下的就不用转给何自己了,因为他有显示余额的概念,所以剩下的币可以直接打到账户里,不用哈希指针,不用解释硬币的来源。 这样做的好处是对双花攻击有天然的防御能力,因为不管币的来源是什么,你每花一次钱,都会从你的账户里扣,花两次就扣两次.

莱特币和比特币是通用货币吗_比特币发展_比特币发展模式是什么

重放攻击(replay attack):A->B(10ETH)在网络上发布。 一段时间后,交易被写入区块链,A认为转账交易完成,假设B是恶意的,在网络上重新广播这笔交易,其他节点看到是新的就会扣掉A的钱转移。

解决方案:

加上一个counter nonce,记录这个账户历史上发布了多少笔交易,然后在转账的时候,交易笔数必须成为交易内容的一部分,一起包含进去,这些都是通过签名者的签名来保护的已发布的交易。

比如A->B(10ETH),A一共发出了20笔交易,也就是21笔,所以写nonce=21,然后在整个内容上写上A的签名,如下图

比特币发展模式是什么_莱特币和比特币是通用货币吗_比特币发展

在这里插入图片描述

然后把上图中的交易发布到网上。 由于签名的保护,nonce 值不能被其他人更改。 然后系统中的每个节点维护A的状态,不仅要维护A账户上的钱,还要维护nonce的值,一开始nonce=0,每次收到A发出的交易,nonce +1。

比如一开始节点A以nonce=20开始,现在发布了一笔交易。 节点看到交易来了,是合法的,可以执行交易。 同时更新一下, nonce=21 ,如果以后有人重放这个交易,节点会看到这个nonce已经是21了,已经执行过了,所以不会再执行了。

在这里插入图片描述

莱特币和比特币是通用货币吗_比特币发展模式是什么_比特币发展

以太坊账户分类 external owned account(外部账户)

定义:上面提到的比特币中的账户是由公私钥控制的,本地生成一对公私钥,私钥控制账户的控制权,也称为普通账户。

Status:balance(账户余额),nonce(计数器)

智能合约账户(contract account)

莱特币和比特币是通用货币吗_比特币发展_比特币发展模式是什么

合约账户不受公私钥对控制。 除了balance和nonce,还有code(代码),storage(相关的state-storage,包括每个state的值),一个合约可以调用另一个合约,所以必须通过nonce值记录调用次数,但合约账户不能主动发起交易。 根据以太坊的规定,所有交易只能由外部账户发起。 如果外部账户发起交易调用合约账户,合约账户可以发送消息调用另一个合约,但他不能自己发起交易。

调用合约账户

创建合约将返回一个地址。 知道这个合约的地址,就可以调用这个合约。 在调用过程中,状态会发生变化,因此存储也会发生变化。

系统设计中账户模型的改进

以太坊的创始人是 Vitalik,一个 19 岁的孩子。 在他最初创建以太坊时,比特币已经有了比较成熟的代码可以作为参考。 他为什么不使用现有的比特币代码并制作另一个? .

系统设计可以改进,改变出块时间,挖矿难题,不一定是账户系统,比特币基于交易模型的好处之一就是隐私保护,但是以太坊需要支持的智能合约,智能合约需要参与者要有一个比较稳定的身份,这和日常生活差不多。 例如,您与某人签订合同。 如果你和他签下契约,他的身份是一样的。 签订合同后,他的身份发生了变化。 你如果找不到,那就有问题了,另外一个人可能会突然出现,说他当初跟你签了合同,只是换了个身份而已,这会给执行带来一些困难合同。 包括以后发生纠纷的时候,你也要知道合同原来是跟谁签的。

现在有人提出用智能合约来实现一些金融衍生品,即所谓的金融衍生品,比如期权、期货,就是将一笔钱投入到合约中,来预测未来的价格走势。 如果预测是正确的,一些收入将给你。 钱是会退还给你的,但问题是,如果投资后你投资的账户发生变化,那时候钱怎么退还给你呢? 此问题不仅适用于外部帐户。 合约账户的问题就更严重了。 如果你往合约账户里投钱,投完后地址会变,找不到就麻烦了。 因此,以太坊在创建这个系统的时候,考虑了一些现有的现有模型的优缺点,最终没有采用比特币中基于交易的账户模型比特币发展模式是什么,而是采用了基于账户的账户模型。 从目前的情况来看,这还是一个比较合适的决定。 至于以太坊的账户,希望保持稳定,无论是个人账户还是合约账户,如果需要隐私保护,也可以创建多个账户,根据情况使用不同的账户进行不同的交易.