上一篇开场谈到了区块链钱包软件的角色与功能,本篇将开始谈其背后的技术,将分成两篇,此篇先说明以下功能。
1、创建私钥、地址2、传递讯息这边就先略过了两个功能的需求与目的,直接介绍其背后的技术原理。当然,你也可以回上一篇看一下,帮助后续的理解。
创建私钥、地址以创建地址的角度来说,整体是一个流程,过程中会有三个产物:私钥、公钥与地址。
[1]透过密码学SHA-256算法随机生成一个随机数,把它用来当作密码,称作私钥Private Key。
[2]将私钥,透过椭圆曲线密码学对应生成公钥Public Key。
[3]再将公钥,进行SHA-256散列等编码得到地址Address。
生成的流程是单向运算的,是不可逆的,公钥无法反推出私钥,地址无法反推出公钥。这样的特性,让钱包软件所生成的公钥与地址,可以在区块链上公开使用,即使任何人取得某个公钥或是地址,也无法推算出其私钥。
你可能早已知道私钥与地址的作用,那公钥是干嘛的呢?后面会提到
视觉化地址生成器http://royalforkblog.github.io/2014/08/11/graphical-address-generator/从区块链的角度来看,不同的区块链或是同一个区块链,都会有地址协议的不同的状况,于是钱包软件就需要针对性的设计,不同的地址生成方式。
不同的区块链,例如:比特币与以太坊,两者的地址协议是不同的,比特币地址:1Bn3YxHMpQod86v1kUKQDtgzqJSoWqNpax 以太坊地址:0x9f8b6c492cb8e97c77fbdb6cb2e31d6c808148a2若某区块链进行节点软件更新时,新版有着不同于旧版的地址协议,并且新旧版本互相兼容(新版本向后兼容/软分叉),就会造成同一个主链有着不同的地址协议。比特币有三种地址协议Legacy(1开头):1Bn3YxHMpQod86v1kUKQDtgzqJSoWqNpax Nested SegWit(3开头):3FnuwRTns9VMBD3JQwVJyGRLEosGKY8tqn Native SegWit(bc1开头):bc1qlaf8k2xqj64dxszgzmh8x7uqzawe0x5va6ykvl对于钱包软件而言,一个私钥只会生成一个公钥,至于公钥生成地址时,是可以用同一个公钥,对应不同地址协议,而生成不同地址的。
传递讯息要了解钱包软件与区块链的讯息沟通方面,需要先知道区块链的运作方式。
区块链是一个开放的资讯交换网络体系(P2P Network),任何参与者都可以发出交易讯息,也可以自由承接链上的任何交易需求,进行处理,也因为开放的网络环境之下,需要可靠且安全的验证讯息机制。
密码哈希函数:确保收到的交易讯息是正确或完整的。数字签名:确保交易讯息非假冒身份者所发出的。假冒身份恶意者佯装成A地址的所有者,发出交易讯息,要求将A地址的加密货币转入自己的地址中。讯息透过运算函数计算出一组字串,而这组字串可用于验证讯息是否有被修改过,或是讯息是不完整的。
我先说明验证流程,假设A端要传一封讯息给B端:
❶ A端将讯息Message,透过哈希函数运Hash( )运算出讯息摘要Message Digest。
❷ A端将讯息与讯息摘要一同传送给B端。
❸ B端拿到讯息后,将讯息透过哈希函数运算出讯息摘要。
❹ B端比对收到讯息摘要跟自己运算出来的,是否是一样的。
哈希函数算出来的讯息摘要,具有一个特性,不管来源讯息有多小的更动,只要有更动,就会运算出不一样讯息摘要,请见以下范例:
原来的讯息:王小明转100元谢小美讯息摘要:3009980c55ae9a33b175612866c0a7b0bfe01298aeea0ca4631bf3007d38caac将王与小之间,增加空格。修改后的讯息:王小明转100元谢小美讯息摘要:6203d40e264b1d24a4b03c0f5e6c26e0dbdbf4692d8bfea5b2de6411f6fcd24b所以利用比对讯息摘要,就可以辨识收到的讯息,是否在传输层Transport Layer中有被修改过,或是有不完整的情形,但它也仅为这样作用而已,它无法确认讯息来源是否为假冒身份者,例如:谢小美可以发出「王小明转100元谢小美」交易讯息,并附上可成功比对的讯息摘要。
来源端在传递讯息时,一并提供自己的数字签名,让接收端透数字签名确认,讯息是来源端所授权的,并非假冒身份者。
对应前述的验证流程,其实就是在传输层中,利用数字签名替代讯息摘要,如下:
❶ A端先将自己的公钥Public Key提供给B端。
❷ A端将运算出的讯息摘要,透过自己的私钥Private Key,执行签名运算Sign( ),产生了数字签名Signature。
❸ A端将讯息与数字签名一同传送给B端。(上图省略了讯息的传输示意)
❹ B端利用收到的数字签名与A端公钥,解密出讯息摘要。
透过A端私钥所运算出的数字签名,只有A端公钥能解开,反面来说,A端公钥是解不开其他人的数字签名,所以B端就能确保签名来源是A端所发出的,非假冒身份者。当然,最后一个解密运算步骤,是算不出A端私钥的,可以保全A端不会外流私钥。
简化来说,A端发出讯息与自己的公钥,并附上自己的数字签名(私钥加密),B端接受后,用A端公钥解密数字签名,若解开了代表讯息是A端所授权的,非假冒身份者,然后再验证讯息摘要,若是一样,就可以确保讯息是正确且完整的。
回归到钱包软件的部分,假设A端是钱包软件,就必须有执行哈希函数Hash Function与数字签名Digital Signature的能力!
以上就是区块链钱包技术原理(二)创建地址&数字签名的全部内容,望能这篇区块链钱包技术原理(二)创建地址&数字签名可以帮助您解决问题,能够解决大家的实际问题是塔岸网一直努力的方向和目标。
近年来,区块链技术不断发展,越来愈多的虚拟货币开始受到关注,而TWT币则是其中之一,Trust Wallet是一家加密货币钱包提供商,于2017年成立,最初是为以太坊提供支持的移动钱包应用程序,那么 TWT币未来前景怎么样?TWT币值得投资吗?TWT币未来前景怎么样?技术优势与发展潜力TWT币作为基...
10-27
加密货币继续成为市场焦点,这也为加密对冲基金打开了大门,某些对冲基金正在大量购买加密证券,这个新市场在主要银行、公司和投资者的支持下继续增长。加密货币对冲基金是什么意思?加密货币基金的建立允许与加密货币和数字资产相关的投资活动,加密货币基金通常是指风险投资或加密货币对冲基金,尽管存在交易所交易基金 ...
10-27
Shambala元宇宙是一个创作者生态系统,该项目在将玩家转变成创作者的同时,还推动了玩家对于整个游戏的扩展,并且还推动整个生态系统进化成为一个全新的虚拟游戏世界,BALA币就是这个生态系统的核心货币。BALA币发行量和流通量分析据小编调查得知,BALA币的发行总量为2,368,000亿枚,流通量为...
10-27
YGG币的英文全称是Yield Guild Games,它是a16z投资的一种NFTDIAbigail,a16z就是Andreessen Horowitz的简称,而Andreessen Horowit是硅谷最知名VC之一,这家公司2018年成立专门的区块链投资基金,现在已经成为了加密货币领域最知名投...
10-27
XCAD币的英文全称是XCAD Network,其实Xcad Network是一个能够为创作者提供DeFi工具的平台,该平台能够将每个创作者的观众及其内容的参与度进行通证化,并以此来创建一种激励经济。Xcad这一网络还能够为创作者提供一些独家的NFT市场,帮助创作者们来一键创建稀有版和限量版的NFT...
10-28