2020 区块链 golang 版本(3)

zidea · · 606 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

封面

学区块链会不会过时

我们通过比特币了解到区块链,所以大家认为比特币的兴衰就代表区块链发展趋势,其实比特币只不过是区块链的一个最佳实践罢了。现在还是处于区块链的起步阶段。而且区块链无论在应用上还是技术上都还有广泛的空间。随着比特币出现之后以太坊的出现有推动了区块链的发展。

我们都知道在比特币中涵盖多种技术,今天我们就来谈一谈比特币的几个关键技术

密码学

比特币被称为加密货币,虽然所是加密货币,但是其实比特币的交易会会在全网广播。比特币中主要应用了密码学中的哈希签名

哈希运算

我们先说哈希运算,因为输入空间远远大于输出空间,所以不同值经过哈希运算得到哈希值相同是难免的。哈希值取值可能为 2^{256},但是输入是无限空间,不同值经过哈希运算得到相同哈希值的现象叫做哈希碰撞。但是没有方法可以认为制造出哈希碰撞。要找出和某一个值相同哈希值只能用蛮力(brute-face)。
那么 hash 在区块链有什么应用

  • 防止篡改
  • 工作量证明

防止篡改

因为 hash 运算有计算不可逆和碰撞阻力的性质,所以具有防止篡改的性质。在 hash 运算,需要具有一定条件才能够实现 hash 运算不可逆,分别是输入空间足够大,而且输入分别均匀。那么对于不满足以上条件我们可以通过在信息上添加随机数来满足以上两个条件。

Hash(x||nonce)

  • nonce 在密码学中表示随机数

工作量证明挖矿

我们知道区块链是由一个一个区块先后连接,每一个区块是由区块头和区块体两个部分组成,区块头有一个字段 nonce 是有用户指定,我们通过尝试用不同随机数进行计算来得出一个落在指定范围的hash数。那么 hash 值如果具有 puzzle friendly 也就是说明在计算hash值(挖矿)是没有捷径的。一旦某一个节点计算出了落在指定范围的hash值,大家验证是很简单,通过比较计算hash值和目标值的大小即可。
在比特币采用 hash 是 SHA(Secure Hash Algorithm )256

签名

签名主要应用在比特币中的账户管理。在比特币中开户很简单,就是创建一个公钥和私钥的对。一个公私钥对在比特币中就代表一个账户。公钥和私钥的对来源与非对称加密体系。加密和解密用同一个秘钥体系是我们熟悉的对称加密体系。
在非对称加密体系,加密用公钥,解密用私钥。Alice 将自己公钥给 John,John 用 Alice 公钥对信息加密后发送给 Alice,Alice 收到信息后用自己私钥进行解密这种加密解密方式就是非对称加密。那么加密和解密都用接收方(Alice)的公钥和私钥。

以前我们认为 MD5 是一种安全 hash 算法,现在大家可能不再怎么认为了。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:zidea

查看原文:2020 区块链 golang 版本(3)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

606 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传