Core questions about BlockChain

177 阅读4分钟

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

图片.png

Blocks+Blockchain

Blocks

图片.png

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一枚比特币,但是发送了两次信息

解决思路:为比特币创建序列号

问题:

  1. 如何创建序列号?

  2. 如何知道哪个序列号属于哪个人?

  3. 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:

图片.png

cryptocurrency mining( proof-of-work concensus )

cost of mining

图片.png

Ethereum

Ethereum is a decentralized platform that runs smart contracts.

Ethereum使用accounts

All accounts==network state 新块生产出来=>网络状态变化

使用acoounts的优缺点

优点:

  1. 节省空间

  2. 对于智能合同来说更加直观

缺点:

为了阻止replay attacks,每笔交易必须nonce(随机数

说明replay attacks: bob收到了来自alice的一笔钱,然后他向全网再次广播这次交易,那他的钱会再额外增加一次嘛?不可以,因为他无法修改该报文的nonce(他没有alice的私钥,无法加密传送修改后的报文)

以太坊智能合同的四个用处

  1. 存储数据
  2. 管理合同
  3. 提供功能
  4. 当作外部账户

EVM Gas and Fee

避免合同代码出现死循环

图片.png

合同的执行需要燃气。

在交易的开始,会从发送者的账户扣除 燃气量*燃气费。如果交易成功,会返还剩余的燃气费。如果燃气不够用,会回滚状态,并且不会返还。

购买燃气==购买算力