我是区块链新手。我理解区块链保存所有交易的记录,并且每个交易都使用私钥签名。然而,为什么任何人都不能输入任意数量的比特币交易呢?比方说,地址a只有1个比特币,但它的所有者可以创建100个比特币的交易,并仍然对其进行签名。比特币验证交易流出和流入金额的机制是什么?
发布于 2016-08-22 02:14:39
比特币的区块链包含了它曾经发生过的所有交易的历史记录。客户当然可以选择更少的存储,而区块链可以通过不存储很久以前已经花费的事务来修剪。
从技术上讲,比特币地址没有传统银行账本意义上的“余额”。相反,地址具有使用发送到它的事务的能力。
为了深入研究技术细节,让我们看一下address 1PkCAVKjPz1YK7iJwT8xTLxBXR1av8dL98
(我拥有它)。
我最近在TxID 432794be2e056275cafb0eeb7ab59a24444dd4c9e00cd9702a49c2a655a3e705
的交易中收到了一笔0.004 BTC的非常小的交易。
该事务的(十六进制编码的)原始数据是:0100000001e9a24c1d1b8d10b13482cdcbbb90d894577292c4d0c0c1427411fb9d82ea710c010000006b483045022100d9a5433c1381b39b7e02b0b0f042990e7c16cfea252b05ccfef2e85c2dab2a6f022057c7def782fe3b0d7e5e0eae277d2a5890844da7d72309817a2dac22a6307c6001210390d78cb0c1d34d4417db7e0a9a9f125a689dc29dc2197a01a5f827a20f870f62ffffffff01801a0600000000001976a914f97df8f593e0056d337c274fd81a163f47a17d3788ac00000000
它的人类可读的形式是:
{
"txid": "432794be2e056275cafb0eeb7ab59a24444dd4c9e00cd9702a49c2a655a3e705",
"size": 192,
"version": 1,
"locktime": 0,
"vin": [
{
"txid": "0c71ea829dfb117442c1c0d0c492725794d890bbcbcd8234b1108d1b1d4ca2e9",
"vout": 1,
"scriptSig": {
"asm": "3045022100d9a5433c1381b39b7e02b0b0f042990e7c16cfea252b05ccfef2e85c2dab2a6f022057c7def782fe3b0d7e5e0eae277d2a5890844da7d72309817a2dac22a6307c60[ALL] 0390d78cb0c1d34d4417db7e0a9a9f125a689dc29dc2197a01a5f827a20f870f62",
"hex": "483045022100d9a5433c1381b39b7e02b0b0f042990e7c16cfea252b05ccfef2e85c2dab2a6f022057c7def782fe3b0d7e5e0eae277d2a5890844da7d72309817a2dac22a6307c6001210390d78cb0c1d34d4417db7e0a9a9f125a689dc29dc2197a01a5f827a20f870f62"
},
"sequence": 4294967295
}
],
"vout": [
{
"value": 0.00400000,
"n": 0,
"scriptPubKey": {
"asm": "OP_DUP OP_HASH160 f97df8f593e0056d337c274fd81a163f47a17d37 OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a914f97df8f593e0056d337c274fd81a163f47a17d3788ac",
"reqSigs": 1,
"type": "pubkeyhash",
"addresses": [
"1PkCAVKjPz1YK7iJwT8xTLxBXR1av8dL98"
]
}
}
]
}
因此,地址1PkCAVKjPz1YK7iJwT8xTLxBXR1av8dL98
能够“花费”事务432794be2e056275cafb0eeb7ab59a24444dd4c9e00cd9702a49c2a655a3e705
。这笔交易的产值是0.004 BTC,所以我不能进行试图花更多钱的比特币交易。无论如何,让我们试着这样做。
我将创建一个原始事务,该事务尝试将0.01BTC输出到1MgLu9L7ftmGQM84xhKYKw8pTXiSANwggs
,输出余额为0.004 BTC:
bitcoin-rpc createrawtransaction '[{"txid":"432794be2e056275cafb0eeb7ab59a24444dd4c9e00cd9702a49c2a655a3e705","vout":0}]' '{"1MgLu9L7ftmGQM84xhKYKw8pTXiSANwggs":0.01}'
返回原始事务:
010000000105e7a355a6c2492a70d90ce0c9d44d44249ab57aeb0efbca7562052ebe9427430000000000ffffffff0140420f00000000001976a914e2d3595bd0a55c16f4b19f5cd996568dd7e811f688ac00000000
然后我可以签署交易:
bitcoin-rpc signrawtransaction 010000000105e7a355a6c2492a70d90ce0c9d44d44249ab57aeb0efbca7562052ebe9427430000000000ffffffff0140420f00000000001976a914e2d3595bd0a55c16f4b19f5cd996568dd7e811f688ac00000000
它返回:
{
"hex": "010000000105e7a355a6c2492a70d90ce0c9d44d44249ab57aeb0efbca7562052ebe942743000000006b483045022100ce3fad8ccdee48f1fe9060ef81624d3bbe721293feb8ee06a96751e65b9c423e0220106a3e80d5fdf93df5dbf037d8cfd32af70a405586e12294c937308a3c57b10e012102f2acb810346866908108dd86462ee5400b15786739f5e908711d2d15d9dd2238ffffffff0140420f00000000001976a914e2d3595bd0a55c16f4b19f5cd996568dd7e811f688ac00000000",
"complete": true
}
我可以获取返回的十六进制,这是一个有效格式化的事务,并将其提交给网络:
bitcoin-rpc sendrawtransaction 010000000105e7a355a6c2492a70d90ce0c9d44d44249ab57aeb0efbca7562052ebe942743000000006b483045022100ce3fad8ccdee48f1fe9060ef81624d3bbe721293feb8ee06a96751e65b9c423e0220106a3e80d5fdf93df5dbf037d8cfd32af70a405586e12294c937308a3c57b10e012102f2acb810346866908108dd86462ee5400b15786739f5e908711d2d15d9dd2238ffffffff0140420f00000000001976a914e2d3595bd0a55c16f4b19f5cd996568dd7e811f688ac00000000
这给了我一个错误:
66: insufficient priority (code -26)
这是一个客户端错误,但是如果我要成功地将原始事务广播到网络,其他对等点将只需查找引用的(或“花费的”)事务432794be2e056275cafb0eeb7ab59a24444dd4c9e00cd9702a49c2a655a3e705
,并看到我的新事务的输出总和大于我试图花费的事务的输出总和。
这条规则有一个例外: coinbase交易为矿工生成比特币,因此允许输出正确的区块补贴(最初为50 BTC,但在大约一个半月前减半后,目前为12.5 BTC )加上区块中包含的所有交易的交易费。
发布于 2017-12-19 10:02:35
我知道这篇文章已经很老了,但是有一个验证比特币交易的完整列表:
发布于 2016-08-12 03:59:27
也许这篇关于比特币交易如何工作的link会对你有所帮助。看看名为“如果输入和输出数量不匹配怎么办?”
此外,由于区块链使用分布式分类帐,因此所有节点都将在接受事务之前对其进行验证。此外,链上应该有审计人员,以确保欺诈活动不会发生。希望这能有所帮助。
https://stackoverflow.com/questions/38627112
复制相似问题