生活中我们都有自己的银行账户,转账是在银行账户之间进行的。同样,比特币转账就是把比特币从一个比特币地址转移到另一个比特币地址上的过程。确定支付后交易信息会在比特币网络进行全网广播。矿工每隔10分钟会将比特币网络中未被记账的交易打包进一个区块,这就完成了一次确认,此时比特币已转到对方账户,其中会用到比特币数字签名。那么比特币的数字签名到底是什么呢?交易时还有哪些机制呢?
一、比特币的数字签名
比特币的数字签名,就是只有比特币转账中转出的人才能生成的,一段防伪造的字符串。通过验证该数字串,一方面证明该交易是转出方本人发起的,另一方面证明交易信息在传输中没有被更改。
数字签名由数字摘要和非对称加密技术组成。首先通过数字摘要技术把交易信息缩短成固定长度的字符串,然后用自己的私钥对摘要进行加密,形成数字签名。
完成后,需要将完整交易信息和数字签名一起广播给矿工,矿工用某个人的公钥进行验证,如果验证成功,说明该笔交易确实是某个人发出的,且信息未被更改。
非对称加密技术是指数字签名加密的私钥和解密的公钥不一致。看起来好复杂,其实真实转账过程只需要你输入私钥就瞬间完成啦!
二、比特币转账要手续费
比特币转账手续费是交易者付给矿工的一笔费用,用于激励矿工竞争记账为比特币提供足够的算力从而确保比特币网络的安全,有的地方也叫做矿工费。
用户在比特币网络发起一笔转账时,一般需要支付给记账矿工一定的转账手续费。转账手续费一般为0.0001-0.0015个比特币,由于区块能容纳交易记录的容量有限,矿工会优先打包手续费高的交易,所以多付手续费可以更快被记账。比特币交易手续费的存在能提高转账门槛,有效防止区块链中充斥垃圾信息,并且能够保证在比特币被挖完之后矿工仍有动力维护比特币网络。
我们经常在银行间进行转账,银行间转账手续费一般是按照转账金额的一定比例收取。
比如跨行转账手续费约为5‰,异地转账的手续费为1‰-1%不等,而跨国转账除了支付以上手续费以外,还需支付50-200元每笔的电报费。
而区块链资产之间的转账手续费与转账的金额大小无关,按字节收费。以比特币转账为例,一笔普通交易约占250字节,手续费约为0.001-0.0015个比特币(约20-30元)。如果你需要在一笔交易中同时转账给多个比特币地址,那么这笔交易所占字节数会更大,所以你需要多付一些手续费,才会有矿工及时打包你的交易。即便如此,从转账成本来看,用区块链进行跨国转账还是有很大的优势。
三、从发出交易到矿工打包
当你发起一笔比特币转账后,你需要将交易广播至全网,挖矿节点接到这笔交易后,先将其放入本地内存池进行一些基本验证,比如该笔交易花费的比特币是否是未被花费的交易。如果验证成功,则将其放入“未确认交易池”(Unconfirm Transaction),等待被打包;如果验证失败,则该交易会被标记为“无效交易”(Invalid Transaction),不会被打包。也就是说,挖矿节点在比拼算力的同时还需要及时验证每笔交易,更新自己的“未确认交易池”。节点抢到记账权后,将从“未确认交易池”中抽取约近千笔“未确认交易”进行打包。有时候我们的交易不能被及时打包,是因为“未确认交易池”中的交易笔数太多,而每个区块能记录的交易笔数有限。
四、比特币交易和找零机制
比特币转账可以一次把多个地址的余额转出,也可以一次转入多个地址。
举个例子,你需要支付给某个人5个比特币,但是你的A/B/C 3个地址里各有1/2/2个比特币,每个地址的余额都不足以支付5个比特币。这时候,你可以发起一笔转账,同时把A/B/C三个地址共5个比特币转账给他。
再举个例子,如果你的比特币地址有5个比特币,但是你只需要转1个给另一个地址。你需要在转账的时候告诉矿工:我有5个比特币,其中1个转给某个人,另外4个转回给我自己(可以是原地址或创建新的地址)。千万别忘了说哦,不然剩余的4个比特币就全给矿工当手续费了,这就是比特币的找零机制。
五、总结
交易是比特币中最重要的部分,比特币结构中的一切,都是为了保证交易顺利进行并最终保存在区块链中而存在的。所以无论是新手投资者还是资深玩家,对于比特币交易的相关知识都要有一个系统性地学习,只有这样才能更好地玩转比特币。