我是区块链新手。据我所知,区块链保留了所有交易的记录,每笔交易都使用私钥签署。然而,为什么任何人都无法进入任意数量的比特币交易?说,解决一个只有1比特币,但它的所有者可以创建一个100比特币的交易,并仍然签署。比特币是什么机制来验证交易的传出和传入量?区块链如何验证交易金额有效
回答
也许这个link比特币交易如何工作将帮助你。看看“如果输入和输出量不匹配怎么办?”
此外,由于区块链使用分布式总账,因此所有节点都将在事务被接受之前对其进行验证。此外,应该有连锁店的审计员确保欺诈活动不会发生。希望这可以帮助。
比特币的区块链包含所有曾经发生过的交易的历史记录。客户当然可以选择少存储,而区块链可以通过不存储很久以前已经花费的交易来修剪。
比特币地址在传统银行分类帐的意义上在技术上没有“平衡”。相反,地址有能力花费发送给它的交易。
深入研究技术细节,我们来看看地址1PkCAVKjPz1YK7iJwT8xTLxBXR1av8dL98
(我自己)。
我最近收到一笔0.004 BTC的非常小的交易,与TxID 432794be2e056275cafb0eeb7ab59a24444dd4c9e00cd9702a49c2a655a3e705
交易。
的(十六进制编码)本次交易的原始数据是: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的交易中输出0.01 BTC到1MgLu9L7ftmGQM84xhKYKw8pTXiSANwggs
。004 BTC:
bitcoin-rpc createrawtransaction '[{"txid":"432794be2e056275cafb0eeb7ab59a24444dd4c9e00cd9702a49c2a655a3e705","vout":0}]' '{"1MgLu9L7ftmGQM84xhKYKw8pTXiSANwggs":0.01}'
返回原始交易:
010000000105e7a355a6c2492a70d90ce0c9d44d44249ab57aeb0efbca7562052ebe9427430000000000ffffffff0140420f00000000001976a914e2d3595bd0a55c16f4b19f5cd996568dd7e811f688ac00000000
然后我可以签交易:
bitcoin-rpc signrawtransaction 010000000105e7a355a6c2492a70d90ce0c9d44d44249ab57aeb0efbca7562052ebe9427430000000000ffffffff0140420f00000000001976a914e2d3595bd0a55c16f4b19f5cd996568dd7e811f688ac00000000
返回:
{
"hex": "010000000105e7a355a6c2492a70d90ce0c9d44d44249ab57aeb0efbca7562052ebe942743000000006b483045022100ce3fad8ccdee48f1fe9060ef81624d3bbe721293feb8ee06a96751e65b9c423e0220106a3e80d5fdf93df5dbf037d8cfd32af70a405586e12294c937308a3c57b10e012102f2acb810346866908108dd86462ee5400b15786739f5e908711d2d15d9dd2238ffffffff0140420f00000000001976a914e2d3595bd0a55c16f4b19f5cd996568dd7e811f688ac00000000",
"complete": true
}
我可以拿返回十六进制,这是一个有效的形式atted交易,并将其提交到网络:
bitcoin-rpc sendrawtransaction 010000000105e7a355a6c2492a70d90ce0c9d44d44249ab57aeb0efbca7562052ebe942743000000006b483045022100ce3fad8ccdee48f1fe9060ef81624d3bbe721293feb8ee06a96751e65b9c423e0220106a3e80d5fdf93df5dbf037d8cfd32af70a405586e12294c937308a3c57b10e012102f2acb810346866908108dd86462ee5400b15786739f5e908711d2d15d9dd2238ffffffff0140420f00000000001976a914e2d3595bd0a55c16f4b19f5cd996568dd7e811f688ac00000000
这给我的错误:
66: insufficient priority (code -26)
这是一个客户端的错误,但如果我是成功播出的原始交易的网络,其他同龄人只会查找引用(或“花”)交易432794be2e056275cafb0eeb7ab59a24444dd4c9e00cd9702a49c2a655a3e705
和看到总产量我的新交易比总产值我试图花交易大。
这个规则有一个例外:coinbase交易为矿工生成比特币,因此被允许输出正确的块补贴(最初是50 BTC,但是在一个半月前减半后目前是12.5 BTC)加上块中包含的所有交易的交易费用。
我知道这个帖子已经老了,但没有用于验证比特币transcation的完整列表:
- 1. 如何保持交易的运行余额并获得交易后的金额
- 2. 区块链如何验证新资产?
- 3. 区块链API确定交易确认
- 4. JavaScript验证货币金额
- 5. 一个帐户的所有交易金额总和的有效计算方法
- 6. 我们如何从贝宝获得交易费用金额?
- 7. 如何使用BitcoinJS设置交易费用金额?
- 8. 开盘交易的验证
- 9. 比特币区块链 - 验证过程
- 10. 条纹付款不验证金额
- 11. 验证支付金额与WorldPay的
- 12. 如何在magento成功交易后手动设置付款金额和到期金额?
- 13. jquery.validation() - 验证有效,但没有提交
- 14. 如何验证idToken有效
- 15. 如何通过nodejs观察区块链上的比特币交易?
- 16. Neo4jClient交易 - 交易完成时的验证错误
- 17. 根据交易金额为数据分配分数
- 18. 查找大于指定交易金额的帐户
- 19. 下载金融交易
- 20. 我们如何计算与Yodlee的重复交易,且金额不同?
- 21. 如何获得2不同类型的交易的金额的差异在MySQL
- 22. 使用PHP验证paypal交易ID?
- 23. NHibernate - 验证和交易的问题
- 24. jQuery的:与金额滑块
- 25. 您的金融机构已表示无法成功验证此交易。
- 26. 我们如何获得并验证交易收据?
- 27. 如何验证Sequelize交易,并使其看起来不错
- 28. 如何验证关联是否有效
- 29. 如何验证网址有效
- 30. jQuery验证没有验证或提交
我明白了。那么每个新的交易都是源自先前的交易权利?比方说,如果你有两个输入,一个是2 BTC,另一个是1个BTC,它让你共有3个BTCS;而你想花2.5亿美元,所以每个投入都会有两笔交易,对吧? – Yangrui
@yangrui除了coinbase交易,所有交易参考(并在这样做,防止任何其他交易从引用)以前的交易。 如果你有两个单独的交易,一个2 BTC,另一个用于1 BTC,您将创建一个事务,其花费两个输入交易,支付2.5 BTC的人,并支付剩余的0.5 BTC你操控的改变地址(或0.5减去要支付,作为总的输入减去总输出= txFee交易费用)。交易既可以花费也可以不花费,您不能部分花费一笔交易。 –