自己的沙场:全同态加密研究分享 http://blog.sciencenet.cn/u/chzg99 不要对我说生命中无聊的事,不要对我说失败是命运的事。

博文

解析比特币白皮书—交易

已有 4463 次阅读 2018-9-1 08:31 |个人分类:信息安全|系统分类:论文交流

 

    前面给大家解析了摘要和引言,今天给大家解析白皮书的下一部分:交易。

 

2. 交易

 

    第一句话,We define an electronic coin as a chain of digital signatures.目前的中文版都翻译错了。

    这句话的意思是:在比特币系统中,一个数字货币被看作是由数字签名构成的链。而数字签名是干什么的?是用于对交易的签名。所以一个数字货币被看作是由交易构成的链。

    注意比特币系统是一个点对点的数字货币系统,所以在该系统中“币”是一个非常重要的概念。如何在系统中体现币呢?

 

    事实上,币是在交易中流动的。每一次交易,币就从一个人的手中转移到另外一个人的手中,不断循环流动。根据上面的定义,在比特币系统中,一个数字货币被看作是一个由交易构成的链,该链反映了该币的每一次交易。注意,这里的链与区块链不是一个意思。

 

   这就是为什么经常说,比特币里面没有币,而只有交易的原因。在比特币系统中,所有体现币的地方,都用该币的最近一次交易来代替说明。

 

   那么这里的数字签名是干什么的?这需要知道数字签名的功能是什么?

 

   数字签名功能有三个:

 

第一,证明该消息来自于发送者,该功能称为认证;

第二,发送者不能否认自己发过该消息,该功能称为不可抵赖;

第三,发送的消息在传输的过程中没有改变,该功能称为消息的完整性。

 

那么交易的内容是什么呢?交易的内容就是:付款人将该币支付给收款人。

 

为了证明付款人能够将该币支付给收款人,必须说明四个问题:

 

第一,  该币属于付款人;

第二,  付款人同意将该币支付给收款人;

第三,  付款地址必须是收款人的地址;

第四,  该币没有被双花。

 

    那么如何保证上面的前三点的呢?白皮书紧接着说:

 

Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin.

    就是付款人(数字货币的所属人)通过将上一笔交易以及收款人的公钥(即收款地址)进行哈希函数计算,然后对该哈希值进行数字签名,最后将签名附在该币的后面,以达到证明付款人能够将该币支付给收款人的目的。

    为什么付款人要对上一笔交易签名呢?因为要保证该币属于付款人(币的所属权)。由于比特币系统中,币是由交易体现的,所以该币应该是之前由某人支付给了当前付款人(即产生了一笔交易),也就是追溯币的来源,从而说明该币属于付款人。如果不能追溯到该币的上一笔交易,则无法说明该币属于当前付款人。

    公钥在这里代表收款人的地址。对上一笔交易和公钥进行哈希计算,是为了缩短签名内容的长度。

    紧接着白皮书说:

A payee can verify the signatures to verify the chain of ownership.

   即收款人通过验证数字签名来达到验证币的所属权的目的。

 

   紧接着白皮书说:

The problem of course is the payee can't verify that one of the owners did not double-spend the coin.

    前面说了,为了证明付款人能够将该币支付给收款人,必须说明四个问题,前三个问题都有了着落,而第四个问题“该币没有被双花”却没有说如何解决。即收款人无法验证在这些交易中,该币没有被双花。

 

A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank.

 

     解决双花问题的一个通常解决办法是引入一个可信的中心,或者货币发行方,通过它们检查每一笔交易。每次交易完后,货币发行方从付款人那里减掉相应的货币,并且从收款人那里增加相应的新币。只有通过货币发行方发行的货币才被认为没有被双花的。显然这种解决方法使得整个货币系统依赖于一个中心,即货币发行方,就像我们现在的银行,每一笔交易都是由它来处理。

 

We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received.

    所以我们需要一种方法让收款人知道,在此之前该币并没有被双花过。双花什么意思?就是该币被当前付款人使用后,又被付款人第二次使用。从交易角度来说,对当前付款人该币产生了2笔交易,这两币交易是有先后顺序的。第一笔交易是合法的,而第2笔交易就是双花,是非法的。理解到这个层次,才能对白皮书中的这句话理解:For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. 即对当前付款人来说,该币产生的第一次交易(最早的一笔交易)才是我们关注的,因为这笔交易是合法交易。而对于该币产生的后面交易都属于双花,所以并不需要关注(因为这些双花交易都是要被废掉的)。注意这里的语境都是对当前付款人来说的,即该币的所属人。很多翻译都是直接按照字面意思翻译,读者会读起来感到莫名其妙,前词不达后语。

 

    为此,我们必须知道交易的先后顺序,这样才能确定每一笔交易是否合法或者双花,从而把不该存在的交易剔除。就是这句话的含义:The only way to confirm the absence of a transaction is to be aware of all transactions. 这句话很多人不能够理解。确实单从字面上很难理解其含义。

 

    紧接着白皮书对比了中心化系统下采用的方法。在基于中心化的货币发行方的模型下,货币发行方知道所有的交易,从而可以判断交易的先后顺序,故而避免双花。

 

而在去中心化环境下,由于没有中心,如何形成一个唯一的且交易具有先后顺序 的账本呢?方法是交易在系统内公开广播,从而让所有参与者都知道交易。光是知道交易是不够的,关键是对交易的顺序达成一致共识。因此需要构建一个系统,让系统内的所有参与者能够对交易的先后顺序达成共识(注意这里再次说明交易的先后顺序是多么重要。为什么重要?因为可以解决双花。为什么能够解决双花?因为可以确定该币的第一笔交易。),即系统内每个参与者手上都具有唯一的相同的交易链(避免了交易链的不一致)。

收款人需要证实他收到的每一笔交易都是系统内大多数节点认可的不是双花的交易,即在此之前对该收款人来说,该币没有被花费过,即第一笔交易。所有这一切都是为了解决双花问题。注意上面只是提出了需求(因此需要构建一个系统……),并没有给出如何做到对交易顺序达成一致共识的方法。

 

 本文首发在微信公众号:btc201800


该文章的音频,发在喜马拉雅“区块链杂谈”节目中。

base_aHR0cDovL20ueGltYWxheWEuY29tLzQyOTI3MjQzL3NvdW5kLzExOTc3NzQ4Mg==@258.png




https://blog.sciencenet.cn/blog-411071-1132159.html

上一篇:即生瑜,何生亮— MAC 地址与IP地址
下一篇:最清晰的比特币白皮书解析-时间戳服务
收藏 IP: 39.185.202.*| 热度|

1 周亢

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-17 06:00

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部