《详解比特币白皮书》-Transaction(交易)

该部分比较难理解,如有疑问可以给我留言,详细交流。

Transactions

We define an electronic coin as a chain of digital signatures. 

我们定义一个电子货币它是一个数字签名链。

注:define coin as chain看起来很奇怪,我们潜意识里币应该是一个一个的,但是链是一个长条状,直觉中很难把coinchain联系到一起。但是比特币本质却是是一个链条,这个链是由一条一条交易记录时间顺序串在一起。Coin其实并不存在,一个人都多少个币(coin)其实是遍历链上所有交易记录推算出来的。

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. 

收款人可以通过验证签名来验证所有权的变化。

哈希函数:可以把人意长度的数据映射为固定长度数据的函数。

非对称加密算法:非对称加密算法需要两个密匙,公钥和私钥。如果用公钥加密,只有对应的私钥才能解开,如果用私钥加密,只有对应的公钥才能解开。因为加密和解密是两个不同密钥,所以这种算法叫非对称加密算法。

非对称加密过程:甲方生成一对密钥,并将其中一把作为公钥向其他方公开;得到该公钥的乙方使用公钥对信息加密后再发送给甲方;甲方再用自己保存的另一把密钥进行解密。或者,甲方可以使用乙方的公钥对信息签名后再发送给乙方;甲方再用自己的私钥对乙方发送回来的数据就行验签。

摘要:文件-(导入哈希函数)->得到摘要

数字签名:摘要-(私钥加密)->生成数字签名

把签名附加在文件后面发送给某人,某人收到后,把数字签名用公钥解密,得到摘要。证明文件发送人是本人。

某人再对文件内容使用哈希函数,把得到的摘要进行比对,如果两者一致,证明文件未被修改。

交易流程:下图中的中间的Transaction,付款者是Owner 1 ,收款者是Owner 2。那么假如现在Owner1要给Owner2支付5个比特币,那么交易流程为:把Owner2的公钥和Owner1的前一笔交易进行哈希运算(得到摘要),然后Owner1用自己的私钥对这个摘要进行加密,从而得到数字签名。然后加在这条交易信息的末尾。

Owner2收到以后,拿着这笔交易里公布的Owner1的公钥来解密,则可以判断出这笔交易来自于Owner1。私钥只会存在于A那里。(私钥加密公钥解密,或者公钥加密,私钥解密)。

私钥数字签名,公钥验证数据。公钥确定钱包地址,私钥确定所有权。

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. 

在基于发币中心(铸币厂)的模型当中,发币中心本身就能获知所有交易,并判决哪个最先。

注:铸币厂远离其实很简单比如现在的网上银行(或者支付宝),当A给B转账100块钱,实际上是银行开启了一个transaction,让A的账户上-100块,然后让B的账户上+100块。这个-100块和+100块实际上就是银行这个“铸币厂”,销毁了A的100块钱,然后又生产了100块钱给了B(只不过整个流程都只是体现在信息的流动上)。正因为如此,所以才要保证这个“货币”只能从这个“铸币厂”(银行)发行,并且这个“铸币厂”被双方都共同信任,每一笔交易都“必须”通过这个“铸币厂”而没有其他途径。现有的体系也正是由银行"铸币厂"(唯一信任方)来保证A的账户-100的同时只有B的账户+100而不会同时C的账户也+100(双重支付)。(银行自身的“监督”体制保证每天的对账,银行内部的监管。而这些监督的代价,就是维护这个体系的成本)。

另一方面,之所以银行能知道一笔钱是否被双重花费了,是因为这个银行具备了当前交易之前的所有的“历史交易”,它验证一个交易是否合法的方式就是去检查之前的所有交易的结果是否满足当前这笔交易的要求。

我们需要给收款人(payee)一个方法去知道之前的拥有者们(owners)没有签署过更早的交易。对于这个目的,最早(earliest)的交易才是重要的,所以我们不必关心后面的交易是否尝试去双重支付。唯一的确保一个交易存在性的方法就是拥有查询所有的交易。在基于铸币厂模型中,这个铸币厂拥有所有的交易并且决定哪一个交易最新到达(which arrived first)。为了在没有一个可信任方的情况下完成这件事情,交易必须被公开公告,并且我们需要一个系统让所有参与者对只对在一个单链顺序历史(which they were received)上达成共识。收款人需要证明在每一次交易的期间,大多数节点都同意这是他们第一次收到的(was the firstreceived)

这里指出首先是付款人才会发生双重支付,而收款人是担心付款人会不会干这件事情(废话,因为利益是由付款人转移到收款人上的)。“最早的交易才是重要的”这句话是说,双重支付发生的基础是,首先要已经发生过一个交易,然后付款人想无视这笔交易,再次使用这个交易已经用过的货币发起另一次交易。所以这个最早的交易指代的是“已经发生过的交易”。铸币厂并不关心想要发起双重支付的人的两笔(或以上)的交易哪笔是这个付款方认为先发生的,他只关心此刻这个付款方发起的这个交易是否“合法”(也就是之前这个人有没有已经用过这笔钱了)。所以是铸币厂确认哪个交易在前,而不是由付款人决定哪个在前的。那么此时的这个铸币厂并不归属任何一个第三方,那么这个交易就必须被“广而告之”,让所有参与进来的人都知道这件事情发生了,并且所有人都知道以前发生的所有“历史事件”来验证此时被广播的这个交易是否是合法的。但是我们知道,要让所有参与的人都保持一致是一件相当相当困难的事情,这也就是区块链所解决的问题。而最后一句话就是说收款人需要大多数人(超过51%)都认为那个交易是合法的了,那么才能说明这个交易是合法的。

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. 

收款人需要证据证明,在交易(完成)的时刻,大多数节点公认这笔交易是最先的。

猜你喜欢

转载自blog.csdn.net/q602968956/article/details/85006135
今日推荐