区块链与密码学第1-4讲:加密数字货币的交易
Posted Dig Quant
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链与密码学第1-4讲:加密数字货币的交易相关的知识,希望对你有一定的参考价值。
【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义】
1.4 加密数字货币的交易
加密数字货币交易有两种类型,一种是Coinbase交易,也就是挖矿奖励的加密数字货币,这种交易没有发送人。另一种就是我们常见的普通交易了,即普通地址之间的转账交易。我们可以看到下图中有无数密密麻麻的字符组成的字符串,这些字符串有什么作用呢?
图1-比特币的Coinbase交易和普通交易
接下来我们看一组字符串:
18e14a7b6a307f426a94f8114701e7c8e774e7f9a47e2c2035db29a206321725
16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM
这看似毫无关联的字符串,其实是一对“拜把子兄弟”,「私钥」和「公钥」。在加密数字货币系统中,私钥相当于身份证,能够证明你的身份。而公钥相当于家庭住址,大家可以通过公钥找到你。公钥是通过私钥“转化”而来,所以具有唯一性。也就是说,你的家只能通过你的身份证打开,但是如果你的身份证丢了可不支持补办哦~那么私钥是如何转换为公钥的呢?
加密数字货币使用了secp256k1椭圆曲线,其描述参数为:
E : y^2 ≡ x^3 + ax + b (mod p)
p: 代表有限域Fp的那个质数
a,b:椭圆方程的参数
G: 椭圆曲线上的一个基点G = (xG, yG)
n:G在阶
椭圆曲线?有限域?基点?看不懂没关系,也不用在乎公式是怎样计算的,我们可以把它当做一个“转化方式”,可以从私钥转化为公钥,再起一个比较简单的名字,比如“乾坤大挪移”。
加密数字货币科普之非对称加密
1976年,W.Diffie和M.Hellman在IEEE Trans.on Information刊物上发表了“ New Direction in Cryptography”文章,提出了“非对称密码体制即公开密钥密码体制”的概念,开创了非对称加密的先河。
例如,我们要去取一份机密文件,输入苹果,对方显示苹果才可以解密,就像我们日常去银行取钱输入的六位密码,这是对称加密。而非对称加密则是,输入苹果,对方是香蕉才能解密。“天王盖地虎,宝塔镇河妖”可以说就是运用了非对称加密。
非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行加密,同理,乙方使用自己的私钥来进行解密。
注:部分说明来源百度百科
比特币地址产生的过程就像是在工厂的流水线上生产一瓶啤酒,需要经过多个计算步骤最后才能产生比特币地址。
说明:表情包为配图,未成年人请勿模仿
下面我们一起看看,在加密数字货币工厂,如何在流水线上产生一条质量合格的加密数字货币地址:
第一步:产生私钥
随机选取32字节的数字,大小介于1~0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141之间
第二步:产生非压缩公钥(pubKey)
使用“乾坤大挪移”算法(椭圆曲线加密算法 ECDSA-secp256k1)计算私钥所对应的非压缩公钥。
第三步:X=SHA-256(pubKey)
得到公钥之后,进一步计算公钥的SHA-256哈希值
第四步:Y=RIPEMD-160(X)
取上一步结果,计算RIPEMD-160哈希值。
第五步:Z=addr version+Y
取上一步结果,前面加入地址版本号(比特币主网版本号“0 x 00”)
第六步:H=SHA-256(Z)
取上一步结果,计算SHA-256哈希值
第七步:K=SHA-256(H)
取上一步结果,计算SHA-256哈希值
第八步:len(K)[0:4]
取上一步结果的前4个字节(8位十六进制)
第九步:A=Z+ len(K)[0:4]
把这4个字节加在第五步的结果后面,作为校验。这就是比特币地址的16进制形态啦!
最后一步:base58(A)
用base58表示法变换一下地址,这就是最常见的比特币地址形态啦。
我们拿出这堂课最初展示的加密数字货币地址:
16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM。来举例说明加密数字货币地址的生产过程。
1、随机选取一个32字节的数作为私钥
(大小介于1~0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141之间) :
18e14a7b6a307f426a94f8114701e7c8e774e7f9a47e2c2035db29a206321725
2、使用“乾坤大挪移”算法(椭圆曲线加密算法 ECDSA-secp256k1)计算私钥所对应的非压缩公钥:
(共65字节,1字节0x04,32字节为x坐标,32字节为y坐标)
0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6
3、计算公钥的SHA-256哈希值:
600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408
4、计算上一步哈希值的RIPEMD-160哈希值:
010966776006953D5567439E5E39F86A0D273BEE
5、在上一步结果之间加入地址版本号:
(如比特币主网版本号"0x00")
00010966776006953D5567439E5E39F86A0D273BEE
6、计算上一步结果的SHA-256哈希值:
445C7A8007A93D8733188288BB320A8FE2DEBD2AE1B47F0F50BC10BAE845C094
7、再次计算上一步结果的SHA-256哈希值:
D61967F63C7DD183914A4AE452C9F6AD5D462CE3D277798075B107615C1A8A30
8、取上一步结果的前4个字节:(8位十六进制数)D61967F6,把这4个字节加在第五步结果的后面,作为校验。
(这就是比特币地址的16进制形态)
00010966776006953D5567439E5E39F86A0D273BEED61967F6
9、用base58表示法变换一下地址,就变成我们最初的那个地址啦!
16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM
16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM
就是我们常说的公钥,也就是钱包地址。我们以为的钱包有可能是这样的:
但其实加密数字货币钱包是一个抽象的概念,就是保存和管理比特币地址以及对应公私钥对的软件。根据终端类型的不同,加密数字货币钱包可以分为桌面钱包、手机钱包、网页钱包和硬件钱包。
按照私钥的存储方式,可以分为冷钱包、热钱包两种。
冷钱包是指互联网不能访问到私钥的钱包:
冷钱包往往依靠“冷”设备确保加密数字货币私钥的安全,比如不联网的电脑、手机、写着私钥地址的小本本等。冷钱包避免了被黑客盗取私钥的风险,但是可能面临物理安全风险,比如电脑丢失损坏等。
图2-冷钱包
热钱包是指互联网能够访问私钥的钱包:
热钱包往往是在线钱包的形式。使用热钱包时,最好在不同平台设置不同密码,且开启二次认证,以确保自己的资产安全。
图3-热钱包
加密数字货币科普之Hash不是加密?
Hash是加密数字货币系统中很重要的一个概念,不少人认为Hash是加密,其实是一种误解。Hash和加密是两种不同的密码学技术。加密是对传递数据进行编码处理的技术手段,使得编码后的数据对于未获知具体处理方式的其他方不可读。通常,我们将明文转换为密文的过程称为“加密”。
而Hash(哈希)又称数字摘要、散列、杂凑、指纹,是以任意长度的数据为输入输出相应固定长度的值。在区块链中,账户与交易都涉及哈希函数的使用。
点宽课堂第1-4讲今天就讲到这里啦,加密数字货币让无数的“淘金者”疯狂,投身进入挖矿的大部队中,加密数字货币究竟是如何挖出来的呢?下一节课我们将详解加密数字货币的挖矿原理。敬请期待~
本教程内容选编自教材和互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。
【区块链与密码学】课堂回顾:
点宽课堂第1-3讲:加密数字货币的通俗故事
-- 完 --
关注点宽学园,每周持续更新区块链系列课程,小宽带你进入区块链世界。
以上是关于区块链与密码学第1-4讲:加密数字货币的交易的主要内容,如果未能解决你的问题,请参考以下文章