浅谈区块链应用中的密码学原理

你印象中的区块链是什么?

比特币、以太坊等加密货币?这样的理解是片面的,可以这么说比特币是区块链最成功的应用。当然基于区块链的去中心化共识的应用层出不穷,下面将举几个应用场景!

i茅台摇号

i茅台是茅台推出的一个直销APP,完成注册认证的用户,可以通过摇号以出厂价的方式来购买茅台酒,当然摇号命中的概率很低,看一则新闻:
image

摇号的原理也很简单,如下:

image

通过引入区块链让这个摇号结果更加公正,基于这个场景的应用还是有很多的,大家可以自行思考。ps:大家有兴趣可以去薅羊毛哦!

数字人民币

数字人民币概念已经出来好几年了,已经在多个城市试点运行,深圳便是其中一个。

数字人民币可以减少实物成本,提高货币安全性,可以加强金融管控,抑制腐败,促进经济发展。真可谓利国利民,当然离大面积推广还有一定的距离,不过数字化已经是国家的战略了,未来一定大有可为!

数字人民币底层就使用了区块链技术,如图

image

pps:深圳这边已经有四大行+招商银行可以申请开通数字人民币钱包哦,因为在推广阶段,有不少羊毛可以薅

既然区块链应用这么广泛,那他底层到底是什么?怎么用一个比较简单通俗的语言来描述他?下面是我个人的一些学习心得,分享给大家

区块链使用了密码学中的两个功能,哈希和签名。

密码学中用到的哈希函数被称为cryptographic hash function: 它有两个重要的性质:

  • collision resistance

也称之为哈希碰撞,例如x≠y ,H(x)=H(y) 两个不同的输入,输出却是相等的,这就称哈希碰撞。它是不可避免的,因为输入空间总大于输出空间。

但实际的情况是,给出x,却很难找到y,除非蛮力求解(brute-force),在目前硬件情况下,工业已经证明了人为制造哈希碰撞不成立。

在BTC中,平均是10分钟就会产生一个共识的区块,输入空间是2^256,这么大的一个范围,这么短的时间内,就算用超级计算机来人为制造哈希碰撞是不可能的。

  • hiding

哈希函数的计算过程是单向的,不可逆的。从H(x)无法推导出x,hiding性质前提是输入空间足够大,分布比较均匀。如果不是足够大,一般在x后面拼接一个随机数,如H(x||nonce)。

这个很好理解,假设H(x)=x99+0.85x88+10086,比如你知道x=20,很容易求H(x),因为这个过程是代数运算,很简单,但是若已知H(x)=1000000,求出x,这个过程却很困难,这个过程称之为方程求解,当然实际情况下,这个H(x)会复杂得多。

另外一个就是签名

这里的签名就是指的非对称加密,在非对称加密中,需要一个公钥和一个私钥,公钥相当于银行账号,别人给你转账只要知道你的公钥就可以了,私钥相当于账户密码,知道了私钥就可以把账户上的钱转走。

公私钥用于验证签名。比如A要转10个比特币给B,A把交易发布到区块链里。别人怎么知道这个交易确实是A发起的?需要A在发布交易的时候用自己的私钥对交易进行签名,其他人收到交易后,再用A的公钥验证签名的正确性。

image

本文就介绍这么多,下一篇介绍区块链的数据结构!

posted @ 2022-10-17 20:45  暴走的耗子  阅读(305)  评论(0)    收藏  举报