在比特币中时怎样转账的?

in #cn6 years ago

我们在第一章讲到核心技术密码学的时候提到过数字签名,了解到数字签名是用来保证交易的持有者,在比特币系统即保证比特币隶属于谁,这也就是为什么说在比特币中私钥非常重要了,因为比特币没有账户的概念,只有通过私钥对一笔交易进行签名才能确定这笔交易的主人是谁。

公钥、私钥是属于非对称加密算法的两个不同的加密密钥,公钥是对外公开,任何人都可以获取,私钥是自己持有,不能给任何人看。用公钥加密数据,私钥解密数据我们一般称为加密,用私钥加密数据,用公钥解密数据我们一般称为签名。私钥签名也被称为数字签名(或者电子签名),用于表示电子数据的隶属权。对于非对称加密不熟悉的朋友可以再看看第一章密码学中的介绍,这里就不重复介绍了。

为了将比特币的工作原理给大家讲清楚,我们举一个微信支付的例子。比如Eric为了买一台电脑给Mike转账了5000元人民币,这时候在微信系统里就会从Eric的账户里减去5000元人民币,然后在Mike的账户里加上5000元。
在比特币系统中因为没有账户概念,所以它是以交易(比特币)为主体进行交易活动的。同样还是上面的例子,在比特币系统中将0.1个比特币(假设价值5000元人民币)转给Mike只是改变了所有权,即原来这0.1个比特币隶属于Eric,转账给Mike后,0.01个比特币的主人从Eric换成了Mike。

在比特币系统中具体实现参照下图。

Snipaste_2018-07-30_11-05-11.jpg

参照上图结合上面的例子详细介绍一下整个过程。Eric将0.1个比特币支付给Mike,实际上是将0.1个比特币和持有者的公钥计算了一个哈希(也称为散列、数字指纹,一个定长且唯一的字符串,不清楚可以查看第一章中密码学的概念),然后使用Eric的私钥对这个哈希进行签名,并将签名附加在0.1个比特币的末尾发送给Mike,Mike收到后使用Eric的公钥进行验证就可以确定这0.1个比特币的所有者了。

如果Mike买了一部手机将0.1个比特币转给Jack,方法和上面的过程一样。首先将0.1个比特币和Jack的公钥计算一个哈希,让后使用Mike的私钥对哈希进行签名,并将签名附在0.1个比特币末尾发给Jack,Jack收到了就可以使用Mike的公钥验证这0.1个比特币的所有权是属于Mike了。

这样交易可以一直进行下去,每笔交易过程都会被矿工打包在区块里,并被记录在区块链上。
你也可以将这个过程理解为在一个活页本上记账。Eric给Mike了0.1个比特币,系统就会在活页本上记上一页,Eric给Mike了0.1个比特币并签上Eric的大名,Mike给Jack了0.1个比特币,系统就会在活页本上记上一页,Mike给Jack了0.1个比特币并签上Mike的大名……

需要注意的是在比特币系统,交易的基本使用单位是是一个交易输出,简称UTXO,在实际交易中每笔交易都可能存在合并、找零,详细介绍请查看交易章节的内容。

Coin Marketplace

STEEM 0.30
TRX 0.12
JST 0.034
BTC 64455.55
ETH 3147.84
USDT 1.00
SBD 3.94