前言
在上一课中,我们提到了,Cyber转出UT时,需要提供所使用的UTXO所有权证明,在传统的银行系统是很好实现的,小额只要输入自己的密码就可以了,大额也只要多一些身份的证明。那么,在Ulord系统内,是没有一个“银行”概念的,没有人帮我们存储密码,我们又是用一种什么方式证明对某一个UTXO的所有权呢?
数字签名
在日常生活中,我们经常需要用笔签名,如借条、合同等。签了名,就意味着认可相关文件上所描述的条款。人的笔迹有不可复制性,即便是专业模仿也可以通过技术鉴别出来,因此签名就具有唯一性的特点,并被法律认可。数字签名的原理跟用笔签名类似,只是采用了密码学的一些方法,在计算机网络中实现“签名”过程,达到确认身份的目的,简单地讲,就是加密技术代替人的笔迹。
数字签名有三个作用:
1)该消息是由已知的发送者(身份认证性)创建的;
2)发送方不能否认已发送消息(不可否认性);
3)消息在传输中未被更改(完整性)。
实现原理
假设Cyber要给乐淘淘转10个UT,这10个UT又是Bell之前转给Cyber的,为了简化起见,我们先忽略交易手续费的问题。Cyber先找到Bell之前给他的那个UTXO(10UT),把这个UTXO作为转账的输入,然后构建一个新的UTXO给乐淘淘(包含乐淘淘的收款地址、转出的UT数量等交易信息)。这样, Cyber要准备的交易数据就基本完成了,但是还差一个最重要的部分,就是数字签名!
Cyber对交易数据进行数字签名,涉及到两个步骤:
1)用一个哈希函数从广播文本中生成摘要,这里有一个新概念“哈希函数”,我们可以把它先理解为一个一般的函数,输入一串数字,得到一个固定长度的函数值,这个函数值就是摘要;
2)用自己的私钥对摘要进行加密,这样网络上其他节点可以用Cyber的公钥验证该条信息是否由Cyber本人发出(严格意义上讲,只要能拿出Cyber的私钥,我们默认这就是Cyber本人)。
经过上面两步处理后,Cyber将加密后的摘要作为数字签名和交易信息一起发送到Ulord区块链系统中,这些数据通过网络上的节点进行传播,达到乐淘淘。
注意:UT私钥、公钥和地址的关系是,由私钥可以推导出公钥,由公钥可以推导出地址,相反的方向不可行。
疑点剖析
(1)为什么数字签名后能确保数据不被改变?
上一部分讲到,一个签名被发送者的私钥加密,只有发送者的公钥可以解密,如果不能解密,原因可能是数据被篡改或者不是由发送者的私钥进行加密的,这样有利于网络上其他节点对交易信息的完整性进行验证。
(2)数字签名如何证明UTXO的所有权?
我们回到Bell给Cyber转10个UT的场景,在Ulord区块链已经记录了这个UTXO,该UTXO明确了收款地址是Cyber的UT地址。在Ulord区块链中,这些交易数据是分布式存储的,任何人不能篡改。所以只要Cyber能够提供该收款地址对应的唯一私钥,Ulord系统就默认Cyber对这个UTXO拥有所有权。
(3)Cyber为什么不直接提供私钥来证明自己的所有权?
如果直接提供私钥,那么网络上的其他节点也知道了Cyber的私钥,那么该私钥对应的UT地址上的其他数字资产都无安全性可言,就像你把银行卡的密码写在银行卡上,再告诉所有人银行卡放在哪里。为了避免这种尴尬,就采用数字签名的方式,一事一议,对每一笔交易进行签名,既能证明每一笔交易的合法性,又不至于泄露私钥。
结束语
本文简要介绍了Ulord区块链系统通过数字签名实现UTXO的确权。至此,我们把UTXO作为一个整体呈现给大家,让大家形成一种共识:UTXO就像一张张的纸币。这样做的目的只是为了让大家更好的理解。事实上,在Ulord区块链内,交易才是“最小功能单位”,UTXO只是从交易数据中抽象出来的概念,想要进一步了解UTXO的知识,请期待《CyberKuber白话区块链系列课程5:UT交易剖析》。
领取专属 10元无门槛券
私享最新 技术干货