2016-07-28 81 views
1

我是区块链新手。据我所知,区块链保留了所有交易的记录,每笔交易都使用私钥签署。然而,为什么任何人都无法进入任意数量的比特币交易?说,解决一个只有1比特币,但它的所有者可以创建一个100比特币的交易,并仍然签署。比特币是什么机制来验证交易的传出和传入量?区块链如何验证交易金额有效

回答

0

也许这个link比特币交易如何工作将帮助你。看看“如果输入和输出量不匹配怎么办?”

此外,由于区块链使用分布式总账,因此所有节点都将在事务被接受之前对其进行验证。此外,应该有连锁店的审计员确保欺诈活动不会发生。希望这可以帮助。

1

比特币的区块链包含所有曾经发生过的交易的历史记录。客户当然可以选择少存储,而区块链可以通过不存储很久以前已经花费的交易来修剪。

比特币地址在传统银行分类帐的意义上在技术上没有“平衡”。相反,地址有能力花费发送给它的交易。

深入研究技术细节,我们来看看地址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)加上块中包含的所有交易的交易费用。

+0

我明白了。那么每个新的交易都是源自先前的交易权利?比方说,如果你有两个输入,一个是2 BTC,另一个是1个BTC,它让你共有3个BTCS;而你想花2.5亿美元,所以每个投入都会有两笔交易,对吧? – Yangrui

+1

@yangrui除了coinbase交易,所有交易参考(并在这样做,防止任何其他交易从引用)以前的交易。 如果你有两个单独的交易,一个2 BTC,另一个用于1 BTC,您将创建一个事务,其花费两个输入交易,支付2.5 BTC的人,并支付剩余的0.5 BTC你操控的改变地址(或0.5减去要支付,作为总的输入减去总输出= txFee交易费用)。交易既可以花费也可以不花费,您不能部分花费一笔交易。 –