白话区块链系列课程4:你的UTXO你做主

前言

在上一课中,我们提到了,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交易剖析》。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181117A0LQ5Q00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券