注:没有全部复原,抽取了主体知识,加入了一些自己的理解,强烈建议去学习肖臻老师的课程,这绝对算得上是国内区块链讲解的顶级教程,纯学术和技术
-
BTC使用的是基于模型的,Transaction-based ledger,想要只要余额需要根据UTXO模型一个个找,可能自己都不知道有多少钱,好处是隐私性比较好,但是比较别扭,与日常体验不一样
BTC中UTCXO别扭之处:)
1.A->B(10BTC),A可能一个来自于D(5BTC),另一个输入来源于E(5BTC),提供之前的输出,才能狗进行交易,
2.A->B(10BTC),B->C(5BTC),B只想转出去5个,但是BTC必须全部花出去,所以还需要将剩下的5BTC转回给自己
-
ETH账户是 account-based ledger
系统中要显式地记录每个账户中有多少个ether,类似于banks
-
优点:这种类型对于double spending attack(发出者不诚实spend again)具有天然的防御作用,花两次扣两次就可以
-
弱点:replay attack:A->B(10ether)重放攻击(接收者不诚实 receive again)
一个idea:在tx中加一个nonce,每发一次就+1
ps:改变余额需要所有全节点认可,自己没有办法随便改,不需要考虑
-
-
两类账户
- 外部账户 externally owned account 公私钥控制
- balance
- nonce:计数器,与BTC的随机数不一样
- 合约账户 smart contract account
- balance
- nonce
- 合约账户不能主动发起一个交易,只能调用另外的合约交易,所有交易只能由外部账户发起,
- code
- storage
- 外部账户 externally owned account 公私钥控制