区块链技术——比特币、区块链、如何交易、攻击比特币、比特币历史与未来
比特币
接下来我们将从以下三个方面进行介绍:
什么是区块链
解决账本中心化
法币是由我们信任的中心化机构来记账的,有没有非中心化的方式呢
防止篡改
哈希函数
将任意长度字符串,转换成固定长度(例如256位)的输出,输出掖被叫哈希值
特点:
- 很难找到两个不同的x和y,使得h(x)=h(y),也就是说。两个不同的输入,会有不同的输出
- 已知输出,很难找到对应的输入
区块
- 将总账本拆分成区块
- 每个区块记录一段时间内的交易
区块链
在每个区块上,增加区块头,其中记录副区块的哈希值,将所有区块按顺序连接起来,形成区块链,子区块存储父区块的哈希值,若不一样则有人进行了修改
核心功能
创造信任,法币依靠政府公信力,比特币依靠技术。
如何交易
地址和私钥
私钥:一串256位的二进制数字,地址是由私钥转化来的,但地址不能反推私钥,地址及身份,一个地址、私钥产生后,只有进入区块链账本,才被大家知道
银行密码和私钥不同:
- 银行卡密码可以修改,私钥一旦生成,无法修改
- 银行卡需要申请,(地址、私钥)
数字签名技术
- 签名函数Sign:(张三的私钥,转账信息:张三转10元给李四)=本次转账签名
- 验证函数Verify:(张三的地址,转账信息:张三转10元给李四,本次转账签名)=True
- 签名只能由私钥持有者签名,任何人可以通过验证函数Verify(),来验证此次签名是否由持有张三秘钥的张三本人发出。是则返回true,不是返回false。
比特币中,私钥就是一切
记账人
除了我之外的任何人(包括记账人),都无法动用我们的钱,除非由私钥
中心化记账的缺点:
拒绝服务攻击
厌倦后停止服务
中心机构易被攻击,比如破坏服务器、网络、监 守自盗、法律终止、政府干预等
去中心记账
- 去中心化,人人都可以记账,每个人都可以保留完整账本。
- 任何人都可以下载开源程序,参与P2P网络,监听全世界发送的交易 ,参与记账
- 获得记账权的记账节点,将得到50个比特币的奖励,每21万个区块后,奖励减半,总量约2100万枚,预计2040年开采完。
- 记录一个区块的奖励,也是比特币唯一 的发行方式
分配记账权POW
找到某随机数,使得以下不等式成立,SHA256哈希函数(随机数、父区哈希值、交易池中的交易)<某一特定值
难度调整
- 每个区块之间时间间隔并不是正好十分钟
- 比特币每隔2016个区块(两周)会加大或减小难度,使得每个区块的平均时间是10分钟
攻击比特币
篡改交易
由于哈希函数和去中心化,无法篡改
拒绝服务攻击
不收入某项交易,该矿工不接受,其他旷工接受
双花交易攻击(double spending)
同一笔钱花两次,会验证账户上是否还有钱,看交易池中已有交易,该用户没有该款项,则不会达成交易。
分叉
两个矿工同时发现矿,会形成两个区块,同时公布两个区块,有的跟着A区块,有的跟着B区块,之后全网会知道这两个区块,但只有一条主链,怎么判断主链呢,区块最多的则为主链,即A和B谁先发现新区快谁就为主块。
<问题1>分叉前用废区块的钱进行了支付,然后一直顺着另一区块往下挖
<问题2>51%算力的问题
比特币历史与未来
如何更新
P2P的网洛,更新后有的节点不升级到最新版本怎么办:
- 软分叉:软版本节点,不接受老版本节点产生的区块。但老版本节点接受新版本节点产生的区块。
解决方式:更新成新节点 - 硬分叉:新版本节点,不接受老版本节点产生的区块。但老版本节点也不接受新版本节点产生的区块
核心开发人员、矿工、投资者、普通用户、商家、支付