Bitcoin
一种加密货币,通过加密技术的使用,来规范货币的生成,以及核实资金的转移,独立于中央银行运作。
Where does value come from?
Bitcoin has value because people believe it has.
Identity in Bitcoin
笔名==地址==公钥
A Bitcoin transaction
发送者声明地址和数量,交易广播到网络,网络中的矿工们验证它然后添加到交易历史中
outputs can only be spent once
Blocks+Blockchain
Blocks
Blockchain
the entire series of blocks 'chained' together
UTXO analogy
==unspent transaction outputs.
在比特币系统中并没有账户的概念,有的是遍布全网区块链的UTXO。所谓UTXO是指关联比特币地址的比特币金额的集合,是一个包含数据和可执行代码的数据结构。一个UTXO的基本单位是“聪”,“聪”是比特币的最小计量单位,一个比特币等于10^8聪。一个UTXO一旦被创建则不可分割,只能当做交易的输入被花费掉,花费后产生新的UTXO,花费后产生新的UTXO,这样周而复始地实现货币的价值转移。因此我们使用的比特币钱包看到的账户余额实际上时UTXO聚合计算的产物。
交易中的输入与输出
比特币中的一笔「交易」也较为复杂。假设今天,Fred给了Alice 2个BTC,Ted给了Alice 3个BTC,我们把这两笔寄给Alice,总和为5的BTC称为Unspent Transaction Outputs即未花费交易输出:也就是说现在Alice拥有了两笔Unspent Transcation Outputs,可以当作他未来转钱给别人的input。
如果现在Alice想要转5 BTC给Bob,他要将前面两笔总和刚好为5的UTXO当作这笔交易的输入。而矿工要验证的就是并没有其他交易在先前的区块当中,已经使用过这笔Unspent Output。如果同一笔输出已经被发送过,那它就不是Unspent了,这就是比特币预防Double Spending的方法。
double spending 问题
alice 想给bob一枚比特币,但是发送了两次信息
解决思路:为比特币创建序列号
问题:
-
如何创建序列号?
-
如何知道哪个序列号属于哪个人?
-
bob如何知道最开始该序列号的比特币是alice的
解决方案一:让银行来记录每个序列号的归属和变动。
concerns:lose the decentralized nature
解决方案二:making everyone the bank.Now everyone has a complete record of all transactions.this is called the blockchain.
现在bob只需要在自己的数据副本里面检查这个比特币确实属于Alice
问题:
What if Alice sends her transaction to Bob and Charlie simultaneously?
解决方案:
Everyone verifies transactions,in this case,other bitcoin users will notice and reject the transactions.
问题:
如果Alice在网络中复制多份伪造节点,并且让这些节点都声称Alice所做的交易有效。(Sybil Attack)
解决方案: the proof-of-work
想要造成double spending,伪造节点在发送两个伪造确认前需要做两道难的数学题,而诚实节点只需要做一道
proof of work
easy to verify,hard to compute
major assumption of Bitcoin:
cryptocurrency mining( proof-of-work concensus )
cost of mining
Ethereum
Ethereum is a decentralized platform that runs smart contracts.
Ethereum使用accounts
All accounts==network state 新块生产出来=>网络状态变化
使用acoounts的优缺点
优点:
-
节省空间
-
对于智能合同来说更加直观
缺点:
为了阻止replay attacks,每笔交易必须nonce(随机数
说明replay attacks: bob收到了来自alice的一笔钱,然后他向全网再次广播这次交易,那他的钱会再额外增加一次嘛?不可以,因为他无法修改该报文的nonce(他没有alice的私钥,无法加密传送修改后的报文)
以太坊智能合同的四个用处
- 存储数据
- 管理合同
- 提供功能
- 当作外部账户
EVM Gas and Fee
避免合同代码出现死循环
合同的执行需要燃气。
在交易的开始,会从发送者的账户扣除 燃气量*燃气费。如果交易成功,会返还剩余的燃气费。如果燃气不够用,会回滚状态,并且不会返还。
购买燃气==购买算力