(转载请注明作者和出处:https://yangningbocn.github.io 未经允许请勿用于商业用途)
视频地址: https://www.youtube.com/watch?v=obRzfcvMshM
比特币主要技术和特点:
- 利用SHA-256算法和非对称加密算法制作数字签名
- 利用区块链中的区块存储比特币和交易记录
- 设置额外的工作从而控制单位时间内生成区块的个数
- 给予一定数量的比特币和交易费奖励生成区块链的矿工,激励矿工加入区块链社区,促进区块链社区的成长和发展
- 不依赖银行和其他金融机构,达到去中心化的目的
- 比特币的总量不超过2100万
SHA-256函数与非对称加密算法
SHA-256函数
全称是安全哈希算法.用此方法把原始记录转化为256个二进制数字串
非对称加密算法
加密算法通过把SHA-256生成的哈希值加密后,生成新的字符串,然后再通过解密来达到还原哈希值
非对称指的是,用私钥来加密,用公钥来解密,私钥只有自己拥有,公钥可以通过私钥推到,但是公钥不能反推到私钥.
整个流程如下:
- SHA-256计算原始信息得到256位的二进制哈希值
- 哈希值经过老王的私钥加密,得到加密后的哈希值,这个加密后的哈希值就是老王的数字签名
- 老李得到老王的数字签名,用老王提供的公钥来解密得到哈希值1
- 老李再使用SHA-256把老王的原始信息计算得到哈希值2
- 如果哈希值1 = 哈希值2,那么说明这个数字签名是针对这个原始信息的,签名是老王的,记录使没有经过篡改的.
比特币在SHA-256和非对称加密算法例子的改进和适配
- 使用比特币作为基础货币
- 使用支付作为专业的名字
- 用一种方法确认付款方是否有足够的比特币进行支付,这个方法是这次交易的判断依据是上一次交易获得的比特币.比如:老王支付20比特币给老李->支付10比特币给老张+支付10比特币给老李
流程如下
老李支付时发送:支付消息 + 付款方的数字签名(针对该消息的) + 老李的公钥
老张接收到支付消息后:
- 判断是否足够金额
- 用SHA-256解析接收到的支付消息,转化为哈希值1
- 使用老李的公钥对老李的数字签名进行解密,得到哈希值2
- 如果哈希值1=哈希值2,交易成功
- 交易双方使用账号进行交易
账号是通过把公钥输入某个函数得到 - 转账记录的存储和维护
很多设备同时存储和维护
三个一致性方面的问题和解决方案
三个一致性方面的问题:
- 如何进行同步
- 如何防止记录被篡改
- 如何防止同一笔比特别收入被重复使用
比特币利用区块链解决三个一致性方面的问题:
- 区块中包含很多交易信息
- 区块线性连接成为一个区块链
- 由矿工产生新区块,在此之前需要接收网络上的结点,并验证,然后才能去产生新区块
- 使用额外的工作的方法限制矿工单位时间产生的新区快的数量
额外的工作为:
- 新制作的区块内容(组成一个字符串):前一个区块的SHA-256函数值 + 这个新区块的基本信息 + 这个新区块所包含的所有交易记录.每一个区块都含有上一个的SHA-256值
- 在字符串后面加上一个随机数,组成新的字符串.新的字符串经过SHA-256计算后得到的256位的二进制数.如果这个256位二进制数的前72位全是0,则完成了这个额外的工作.
每一位为0的概率为0.5,72位全为0的概率为1/72
额外的工作完成之后把:前一个区块的SHA-256函数值 + 这个新区快的基本信息 + 这个新区快所包含的所有交易记录+找到的随机数 组成一个新的字符串,然后生成新区块加到区块链的末尾.
对矿工的激励措施
- 比特别网络奖励
- 交易费收入
比特币网络的调整
- 增加额外工作的难度,前73位为0
- 同时生成了2个新区块,看下一个新区块产生在谁的后面,那么就用谁.
- 比特币网络只采用最长的新区块
网友评论