区块链学习笔记(一)——比特币概念以及密码学相关的知识

自己做一些让自己读得懂的笔记

1.Bitcoin History

In 2008, a person under the pseudonym Satoshi Nakamoto published a paper Bitcoin: A Peer-to-Peer Electronic Cash System. Bitcoin software was released in January 2009 and the mining of the Bitcoin cryptocurrentcy officially started. The genesis block included the
“The Times” headline: “Chancellor on brink of second bailout for banks”. The article was about the state of the British financial system following the 2007–2008 financial crisis, and many believe that this is a hint to the purpose of Bitcoin: to create a more stable financial system. Satoshi Nakamoto vanished from the digital space shortly after releasing the code
for Bitcoin, and it is unknown who this person (or possibly a group of people) is. The first known commercial transaction using bitcoin happened in 2010 - two pizzas were bought for 10000 bitcoin.

直接引用了一下教材,简单的解释就是:
比特币是一种加密货币,是一种数字资产,使用密码学来控制其创建和管理,而不是依靠中央机关。所以它具有去中心化。"比特币 "一词是在2008年10月31日发表的一份白皮书中定义的。
创立比特币的原因是为了创造一种不受政府或金融机构控制的数字货币。比特币被设计成一种点对点的货币,意味着它可以直接从一个用户发送到另一个用户,而不需要第三方中介。

1.1 一个关于bitcoin的时间线
  • 2008: Satoshi Nakamoto publishes the Bitcoin white paper.
  • 2009: The first Bitcoin block is mined.
  • 2010: The first known commercial transaction using Bitcoin takes place.
  • 2011: The Bitcoin price reaches $1 for the first time.
  • 2013: The Bitcoin price reaches $1,000 for the first time.
  • 2017: The Bitcoin price reaches $20,000 for the first time.
  • 2018: The Bitcoin price crashes to $3,000.
  • 2021: The Bitcoin price reaches $65,000 for the first time.

关于区块链要读的一些文献这里给个传送门:http://t.csdn.cn/5F64K
(后续如果我看了我也会做笔记写出来的)

关于区块链的学习
这里推荐b站肖臻老师的《区块链技术与应用》,下面是他讲的有关密码学方面的笔记,后面应该也会挑着密码学的部分做笔记

2. Crytography of the Blockchain

bitcoin is a crypto-currency(比特币是一种加密货币),但是其实区块链(blockchain) 上所有的数据都是公开的,转账的金额都是公开的。
区块链密码学知识上涉及的一个是哈希函数,另外一个是签名。

2.1 the Hash function
2.1.1 collision resistance

其他的说法是collision free不过他不是很喜欢

if x ! =y
then H(x) = H(y)

哈希碰撞是客观存在的,不能人为的去制造哈希碰撞,没有高效的方法
暴力遍历寻找,但是这种方法也不实际,考虑到输入空间比较大的情况
(brute-force)

用来对信息求摘要 (message->digest)
H(m) 用来检测对m的篡改

MD5( 淘汰,因为已经知道如何人为制造哈希碰撞)

2.1.2 Hiding

哈希函数是单向不可逆的
由前得到后,得到后推不到前
前提条件是:输入空间要足够大,分布要比较均匀
x -> H(x)

digital commitment / digital equivalent of a sealed envelope(数字等效的密封信封)

两个特性collision resistance 和 hiding 来实现
预测结果不能提前公开
可以把预测结果作为输入,算出一个哈希值
可以公布出哈希值,作为sealed envelope,第二天收盘之后在公布结果
但是这样输入的结果很有限,容易预测出结果,股票就那么点

常用的方法是输入后面拼接一个随机数,之后再一起取哈希
这里引入了nonce(在挖矿miner 后面也会出现)
H(x|| nonce) 保证了输入足够随机,分布均匀

2.1.3 puzzle friendly

哈希值的计算,事先是不可预测的,不能猜测出结果,如果你希望你的哈希值的落在某个范围内,只能一个一个输入去试。
比如你可以尝试得到下面这个proof:
前面20位都是0 (总共是256位)
H(x) -> 000000000(20个零)XXXXXX
(其实已经有点挖矿的概念了)
miner‘s task is to find a nonce
nonce 是你可以寻找的随机数,通过改变它进行哈希得到你想要的结果

比特币是区块链,区块链就是一个一个区块(block)组成的链表(chain),每个区块有一个块头(block header),块头里面有很多域(domain)
其实后面会知道的就是 (XX|| XX|| nonce)

挖矿的目的就是对这个块头求哈希,使得整个
H(block header)<= target‘s space
在目标的范围内,其实也就是proof of work,是你工作量的证明

概念在这里:

Proof of Work (PoW) is a consensus mechanism used in blockchain networks, including Bitcoin. It is a computational puzzle that requires a significant amount of computational power to solve. The purpose of PoW is to ensure the security and integrity of the network by making it difficult and resource-intensive for malicious actors to manipulate the blockchain.
In PoW, miners compete to solve a complex mathematical problem, typically a cryptographic hash function, by repeatedly hashing different inputs until they find a solution that meets certain criteria. This solution is known as the "proof" and serves as evidence that the miner has expended a significant amount of computational effort.

第一段是proof of work的概念,第二段是矿工们的工作以及通过这个指标来进行工作量的证明。

“difficult to solve, but easy to verify”
虽然找到一个合适的nonce需要很大的工作量,但是一旦找到之后发布(broadcast)出去,其他人要验证(validate its valid)是不是符合要求是很容易的,只需要算一次哈希值来判断。

比特币中用的哈希函数叫做 SHA-256 (secure hash algorithm)

2.2 Signature

因为比特币是去中心化的,它没有第三方进行管理,是P2P结构,所以在比特币中如果你要注册,就只需要个人开户,创立公钥和私钥一对
(public key and private key)
这就代表了一个账户,比特币的信息
Bitcoin: local generate public(address) privacy(password)

  • 不理解的自己可以去了解非对称加密算法(加密用的是公钥,解密用的是私钥(但是这样不能保证identification 身份认证))

比特币是反过来,先用私钥进行签名 verifiied key,验证签名用的是这个人的公钥,因为我要明白的是这个人给我转钱

  • 公私钥对产生的相同怎么办?
    实际当中不可行,位数为256,为什么要做这种暴力拆解的事情
    他说比地球爆炸的概率还要小。

前提是有一个好的随机源
a good source of randomness

每一次签名都需要好的随机源,防止泄露私钥