简单了解区块链技术以及比特币

(转载请注明作者和出处:https://yangningbocn.github.io 未经允许请勿用于商业用途)

视频地址: https://www.youtube.com/watch?v=obRzfcvMshM

比特币主要技术和特点:

  1. 利用SHA-256算法和非对称加密算法制作数字签名
  2. 利用区块链中的区块存储比特币和交易记录
  3. 设置额外的工作从而控制单位时间内生成区块的个数
  4. 给予一定数量的比特币和交易费奖励生成区块链的矿工,激励矿工加入区块链社区,促进区块链社区的成长和发展
  5. 不依赖银行和其他金融机构,达到去中心化的目的
  6. 比特币的总量不超过2100万

SHA-256函数与非对称加密算法

SHA-256函数

全称是安全哈希算法.用此方法把原始记录转化为256个二进制数字串

非对称加密算法

加密算法通过把SHA-256生成的哈希值加密后,生成新的字符串,然后再通过解密来达到还原哈希值
非对称指的是,用私钥来加密,用公钥来解密,私钥只有自己拥有,公钥可以通过私钥推到,但是公钥不能反推到私钥.

整个流程如下:

  1. SHA-256计算原始信息得到256位的二进制哈希值
  2. 哈希值经过老王的私钥加密,得到加密后的哈希值,这个加密后的哈希值就是老王的数字签名
  3. 老李得到老王的数字签名,用老王提供的公钥来解密得到哈希值1
  4. 老李再使用SHA-256把老王的原始信息计算得到哈希值2
  5. 如果哈希值1 = 哈希值2,那么说明这个数字签名是针对这个原始信息的,签名是老王的,记录使没有经过篡改的.

比特币在SHA-256和非对称加密算法例子的改进和适配

  1. 使用比特币作为基础货币
  2. 使用支付作为专业的名字
  3. 用一种方法确认付款方是否有足够的比特币进行支付,这个方法是这次交易的判断依据是上一次交易获得的比特币.比如:老王支付20比特币给老李->支付10比特币给老张+支付10比特币给老李
    流程如下
    老李支付时发送:支付消息 + 付款方的数字签名(针对该消息的) + 老李的公钥
    老张接收到支付消息后:
  • 判断是否足够金额
  • 用SHA-256解析接收到的支付消息,转化为哈希值1
  • 使用老李的公钥对老李的数字签名进行解密,得到哈希值2
  • 如果哈希值1=哈希值2,交易成功
  1. 交易双方使用账号进行交易
    账号是通过把公钥输入某个函数得到
  2. 转账记录的存储和维护
    很多设备同时存储和维护

三个一致性方面的问题和解决方案

三个一致性方面的问题:

  • 如何进行同步
  • 如何防止记录被篡改
  • 如何防止同一笔比特别收入被重复使用

比特币利用区块链解决三个一致性方面的问题:

  1. 区块中包含很多交易信息
  2. 区块线性连接成为一个区块链
  3. 由矿工产生新区块,在此之前需要接收网络上的结点,并验证,然后才能去产生新区块
  4. 使用额外的工作的方法限制矿工单位时间产生的新区快的数量
    额外的工作为:
  • 新制作的区块内容(组成一个字符串):前一个区块的SHA-256函数值 + 这个新区块的基本信息 + 这个新区块所包含的所有交易记录.每一个区块都含有上一个的SHA-256值
  • 在字符串后面加上一个随机数,组成新的字符串.新的字符串经过SHA-256计算后得到的256位的二进制数.如果这个256位二进制数的前72位全是0,则完成了这个额外的工作.
    每一位为0的概率为0.5,72位全为0的概率为1/72
    额外的工作完成之后把:前一个区块的SHA-256函数值 + 这个新区快的基本信息 + 这个新区快所包含的所有交易记录+找到的随机数 组成一个新的字符串,然后生成新区块加到区块链的末尾.

对矿工的激励措施

  1. 比特别网络奖励
  2. 交易费收入

比特币网络的调整

  1. 增加额外工作的难度,前73位为0
  2. 同时生成了2个新区块,看下一个新区块产生在谁的后面,那么就用谁.
  3. 比特币网络只采用最长的新区块

你可能感兴趣的:(简单了解区块链技术以及比特币)