1. 比特币的定义
了解了数字签名后,我们终于可以开始介绍比特币的技术定义。
由于任何货币的价值都体现在连接付款方与收款方,即交易/转账(Transaction)。因此比特币被定义为包含了付款信息和收款信息的一条记录,即:
一枚电子货币(an electronic coin)是一串付款人的数字签名。
中本聪的比特币白皮书仅用这一句话就定义了比特币,可见这个的抽象定义非常简洁。接下来将具体解释其含义。举例来说,我们假设由B向A转账了0.5BTC,那么A所收到的比特币的定义为:
A的BitCoin = ( B的比特币,A的身份,金额)
为了避免第三方伪造交易,冒用B的身份转账,则需要使用上文提到的『数字签名』技术来 证明货币的确由付款者B发出。同时收款人A的身份则通过A的公钥来指定,则有:
A的BitCoin = B的私钥加密(B的BitCoin,A的公钥,金额0.5)
因此货币转移即为公开发布一个字符串,这个字符串按照以下规则生成:
收款人的BitCoin = 付款人的私钥加密(付款人的BitCoin,收款人的公钥,金额)
可以发现,比特币的定义是递归的。即一个有效的比特币,来自其付款人拥有的有效比特币。这就产生一个问题:那么第一个比特币如何定义?该问题会在后文的区块链中解释。
2. 交易验证:
收款人收到比特币之后,为验证其有效性,需要证明以下3个问题:
- 该比特币的付款人真实
- 该比特币的收款人是自己,且金额正确
- 付款人的比特币是有效的
具体操作上,收款人使用付款人的公钥解密比特币,获取以下信息:
- 付款人的比特币
- 收款人的公钥
- 金额
首先,成功通过付款人公钥解密该货币,即证明了付款人的真实性。其次核对收款人的公钥、金额,确认收款信息正确。最后,需要验证付款人的比特币是真是有效的。
而付款人的比特币的有效性,则通过前一付款人的公钥解密,递归验证。直到验证到有效的创始比特币。
3. 找零
实际的比特币支付中,可能出现这两种情况:
- A向B支付了10比特币,而B需要将收到的10比特币拆出5比特币支付给C。此即比特币的拆分问题,也称为『找零』。
- A和B均向C支付了5比特币,现在C需要向D支付10比特币。此即比特币的合并问题。
针对这些需求,比特币做出该规定:任何比特币交易可以包含无数个付款比特币,和最多两个收款地址。
那么针对上文中的情况1,可以使用这样的支付方式:
C收到的比特币=(
付款人:B的10.0比特币,
收款人1:B,收款金额5.0,
收款人2:C,收款金额5.0
)
即在支付过程中,通过将自己设定为第二个收款人,即实现『找零』的功能。
对于上文中的情况1,可以使用这样的支付方式:
D收到的比特币=(
付款人1:C的5.0比特币(来自A),
付款人2:C的5.0比特币(来自B),
收款人1:D,收款金额10.0,
)
即在支付过程中,将零散的金额设为付款人,即可实现合并支付。不仅如此,合并支付与找零可以同时使用,实现比特币的灵活流通。
4. 手续费
理论上,一个比特币交易中的付款与收款总金额应当是相等的。但实际上,收款金额往往比总付款金额要少。其中的差额被称为比特币交易的『手续费』。
例如:A向B转账1.0比特币的交易信息可能为
B收到的比特币=(
付款人:A的1.0比特币,
收款人:B收款金额0.99,
)
那么这笔交易的手续费则为0.01。
所有交易的手续费都将被比特币网络的维护者(即计算节点)收取,具体将在接下来的文章中介绍。