区块链-一些基本概念

Hash

collision resistance(collision free): 是说在密码学中,对于一个hash函数,很难找到两个不同的输入使得其hash之后的输出是一样的。Collision resistance is a property of cryptographic hash functions: a hash function H is collision resistant if it is hard to find two inputs that hash to the same output; that is, two inputs a and b such that H(a) = H(b), and a ≠ b.

hiding:hash函数的计算过程是单向的,是不可逆的。给定一个输入X,可以计算其hash值 H(X),但是通过H(X),很难知道其输出为X。当然蛮力求解也是一个办法。hiding性质的前提是:(1)输入空间较大;(2)输入的分布比较分散。

digital commitment(digital equivalent of a sealed envelope):通过collision resistance和hiding的性质,就可以得到digital commitment这个性质。
请参考Digital Envelopes and Signatures

puzzle friendly: 要想使得计算得到的hash值在某一个范围之内,则只能够一个一个的输入去尝试,很难直接找到某个值使得其hash值在某一个范围内。挖矿 也是就是这个意思。挖矿就是把区块中的一些信息+随机数进行hash,使得其结果前K位数为0,才能够满足要求。挖矿无捷径,只能够去大量的试。所以也就产生了 工作量证明(POW)

工作量证明(POW) : 就是做了大量的尝试之后,才得到符合要求的结果,这个过程叫做工作量证明。

签名

签名用的是私钥,验证签名使用的是公钥

如何保证两个人的公钥,私钥都是不一样的?
理论上可以做到,但是实际上不可能,其概率比地球爆炸的概率还要低

数据结构

hash pointers:与普通的指针的区别:普通的指针指向所在内存的起始地址,但是hash 指针除了保存起始地址之外,还会保存指向内存的hash值,这样就可以很容易的验证这块内存(这个区块)是否被篡改。

tamper-evident log : 防篡改log,就是利用了区块链中后一个区块中会保存前一个区块中的hash值。牵一发动全身!
数据结构-hash

Merkle tree : 典型的属于以时间换空间。与链式的区块一样,其中root hash也能够检测出这个区块链是否被篡改。可以用logn的时间定位出那个区块被修改.
Merkle tree

全节点:包含真正交易数据的节点。

轻节点:只包含hash header的节点。

merkle proof

  • (proof of membership) : 证明merkle tree中包含了某个交易。比如,某个全节点A向一个轻节点B转了一笔账,所以A需要向B发送一个merkel tree,然后B就可以来证明这个merkle tree是否是正确的。时间复杂度O(log n)
  • (proof of no membership) :遍历全部的区块,O(n)。但是,如果所有的区块是按照hash值排序的话(sorted merkle tree),那么就可以利用O(log n)的时间来验证某个交易是否在这个merkel tree中。

备注: hash 指针不能够有环。否则就会造成循环依赖,造成死锁了。

共识协议

双花攻击(double spending attack)

共识协议
转账的时候,输入A要说明两个东西:(1)币的来源,来证明我有钱可以给你转账。(2)A的公钥 (3)A的公钥的hash,也就是之前币的来源的那个区块的输出的hash值。这样通过(2)和(3)来验证是否是真的A转账,还是某一个A’冒充A,像用A来进行转账骗钱。

分布式共识

consensus in bitcoin

  • sybil attack(女巫攻击):某个超级计算机产生的账户个数超过了总数的一半。所以比特币的投票机制并不是利用账户的数目来投票,而是按照计算力来投票。

分叉攻击(forking attack)

分叉攻击

正常分叉

两个机器同时挖到矿了,就有可能同时产生两个区块都连接在合法链的最后。
正常分叉

比特币-实现

比特币:Transaction-based ledger
以太坊:account-based ledger

UTXO(Unspent Transaction Output)

指的是那些收到的比特币,但是没有花出去的数据,全部保存在UTXO的数据结构中。目的:为了防止双花,用来校验双花的。也就说是UTXO保留了所有的那些没有花出去的比特币。

Transaction Fee (交易费)

为什么大家都争抢着去拥有这个记账权呢?因为获得记账权的那个节点能够获得两方面的奖励(1)区块奖励,这个占据了大头(2)交易费

Bernoulli trial

Bernoulli trial:a random experiment with binary outcome