比特币

比特币

blockchain

笔记是一个简化版本,实际上会稍微复杂一点点

  • 区块链(数据结构 + 哈希函数),保证账本不能被篡改
  • 数字签名技术,保证只有自己才能动自己的账户
  • P2P网络和POW共识,保证去中心化的运作方式

什么是区块链

将总账本拆分成区块(Block)存储

每个区块记录一段时间内的交易,例如:10分钟

每个区块上,有一个区块头。其中记录的一个信息是:父区块的哈希值

通过每个区块头存储父区块的哈希值,将所有区块按顺序连接起来,形成区块链

第一个区块不记录父区块信息,它被称为:创世区块

形成区块链后,篡改任一交易,会导致该交易区块哈希值和其子区块不同,发现篡改

即使基础篡改子区块头中的哈希值,会导致子区块的哈希值和孙区块中不同,发现篡改

只要记住最后一个区块的哈希值,任何篡改都能发现

比特币和区块链的本质:一个人人可见的大账本,只记录交易记录

核心技术:通过密码学 + 数据结构,保证账本记录不可篡改

核心功能:创造信任。法币依靠政府公信力,比特币依靠技术

如何交易

进行交易,需要有账号和密码,对应公钥和私钥

私钥:一串256位的二进制数字。获取不需要申请,甚至不需要电脑,自己跑硬币256次就可以了

地址有私钥转化而成。地址不能反推私钥

地址即身份,代表了在比特币世界中的ID

一个(地址、私钥)产生后,只有进入区块链账本,才被大家知道

与银行卡的区别

  • 银行卡密码可以修改,私钥一旦生成,无法修改
  • 银行卡需要申请,(地址、私钥)自己就可以生成
  • 银行卡实名,(地址、私钥)匿名
  • 个人申请银行卡有限,但(地址、私钥)可以无限生成
  • 银行卡可以挂失,私钥不能挂失(如果你忘记私钥,相当于你的比特币丢失了)

张三已经有了(地址、私钥),想要转给李四10元。如何将这个记录加到区块链账本中?

签名函数Sign(张三的私钥、转账信息:张三转给李四10元) = 本次转账签名

验证函数Verify(张三的地址、转账信息:张三转给李四10元、本次转账签名) == True

张三通过签名函数Sign(),使用自己的私钥对本次交易进行签名

任何人都能通过Verify(),来验证此次签名是否由持有张三私钥的张三本人发出

Sign()和Verify()由密码学保证不被破解

张三将转账信息和签名在全网公布。在账户有余额的前提下(通过账本推算),验证签名是True后,会记录到区块链账簿中去(需要矿工)

支持一对一、一对多、多对一、多对多的交易方式

比特币世界中,私钥就是你的一切,不要把私钥告诉任何人,不要忘记私钥

去中心化记账

不管谁记账(比如银行、政府或微信),都不用太担心

因为除了我之外的任何人,都无法动用这笔钱,除非他有我的私钥

中心化机构记账,效率反而高,但是历史上所有有中心化机构的加密货币尝试都失败了

中心化记账的缺点

  • 拒绝服务攻击(假设我是记账人,我知道某个转账地址是谁的,但是我很讨厌这个人,那么我可以拒绝帮他记账,或者我可以要挟他要一笔转账费用,否则这笔钱将永远无法转出)
  • 厌倦后停止服务
  • 中心机构易被攻击。比如:破坏服务器、网络、监守自盗、法律终止、政府干预等

所以比特币使用了去中心化记账

  • P2P(Peer To Peer)
  • 人人都可以记账,每个人都可以保留完整账本
  • 任何人都可以下载开源程序,参与P2P网络,监听全世界发送的交易,成为记账节点,参与记账

去中心化记账流程

  • 某人发起一笔交易后,向全网广播
  • 每个记账节点,持续监听、传播全网的交易。收到一笔新交易,验证准确性后,将其放入交易池并继续向其他节点传播
  • 因为网络传播,同一时间不同记账节点的交易池不一定相同
  • 每隔10分钟,从所有记账节点当中,按照某种方式抽取1名(挖矿),将其交易池作为下一个区块,并向全网广播
  • 其他节点根据最新的区块中的交易(先验证交易信息是否正确),删除自己交易池中的已经被记录的交易(没有被记录的交易保留),继续记账,等待下一次被选中

去中心化记账特点

  • 每隔10分钟产生一个区块,但不是所有在这10分钟内的交易都能被记录
  • 获得记账权的记账节点,将得到50个比特币的奖励。每21万个区块(约4年)后,奖励减半。总量月2100万枚,预计2040年开采完
  • 记录一个区块的奖励,也是比特币唯一的发行方式
  • 当然记录一个区块除了能获得奖励外,还能抽取一定比例的转账手续费(否则当比特币开采完后,矿工挖矿的意愿就会大幅减弱)

如何分配记账权,POW(Proof Of Work)方式

  • 记账节点通过计算以下数学题,来争夺记账权
  • 找到某随机数,使得以下不等式成立
  • sha256哈希函数(随机数、父区块哈希值、交易池中的交易) < 某一指定值
  • 除了从0开始遍历随机数碰运气之外,没有其他解法。解题的过程,就叫作挖矿
  • 谁先解对,谁就得到记账权
  • 某记账节点率先找到解,向全网公布。其他节点验证无误之后,在新区块之后重新开始新一轮计算。这个方式被称为POW
  • 假设2个矿工交易池中的交易完全一致,他们所需要的随机数也是不同的(因为挖矿的奖励或手续费本身也算一个交易,收款地址是矿工的地址)

难度调整

  • 每个区块产生时间并不是正好10分钟
  • 随着比特币的发展,全网算力不断提升
  • 为了应对算力的变化,每隔2016个区块(两周),会加大或减小难度,使得每个区块产生的平均时间是10分钟

攻击比特币

篡改交易

  • 哈希函数
  • 每个P2P节点都有完整的账本

拒绝服务攻击

  • 去中心化记账

双花交易攻击(double spending)

  • 矿工收入交易池的时候会对交易进行验证,假设他不验证并且争取到了记账权
  • 当他把区块向全网广播的时候,其他节点就会来验证区块中的交易,如果存在非法交易,那么这个区块就无效
  • 矿工就拿不到挖矿的奖励和交易的手续费,所以矿工不会这么干

分叉

  • 如果2个矿工同时争取到了记账权,那么这2个区块都会被添加到区块链中去,然后向全网广播
  • 有的节点先监听到了A区块,有的节点先监听到了B区块,那么他们会在A或B的基础上继续往下挖
  • 随着时间的推移,所有节点都会知道A和B同时挖出了区块,他们可以根据自己的选择沿着A或B继续往下挖
  • 直到A1或B1先挖出来,那么所有人继续沿着A1或B1继续往下挖,假设A1胜出那么B就废弃,同理B1胜出A就废弃
  • 因为区块链有个规定,最长的那条链叫作主链,只有主链上的区块和交易才会被承认
  • 当然如果有的矿工不服气,在短链上继续挖,想凭借自己的算力把短链挖成主链(在短时间内理论上是可能的,但是概率是极低的(除非你能超过全网51%的算力或运气极好)。时间拉长的话,概率就更低了)

当然如果有一个人能超过51%的全网算力,那么人们对比特币的信心就会有很大的影响,比特币的价格很可能会暴跌

比特币历史与未来

比特币之父:中本聪

  • 2007年5月开始编写比特币代码
  • 2008年注册域名bitcoin.org
  • 2008年10月发布白皮书,随后公布源代码
  • 2009年1月,比特币创世区块诞生,接下来两年,中本聪在社区持续活跃
  • 2010年11月,交接项目,从此不再出现

如果有一个人跳出来说自己是中本聪,如何验证呢?

  • 让他从创世区块中转一笔钱出来

谁决定比特币的发展方向

  • 比特币软件如何更新
  • 更新之后的节点不升级到最新版本怎么办
    • 软分叉:新版本节点不接受老版本节点产生的区块。但老版本节点接受新版本节点产生的区块
    • 硬分叉:新版本节点不接受老版本节点产生的区块。但老版本节点也不接受新版本节点产生的区块
  • 核心开发人员、矿工、投资者、普通用户、商家、支付服务商等,共同决定了一个数字货币的未来发展方向

results matching ""

    No results matching ""