2016-07-28 65 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交易費用)。交易既可以花費也可以不花費,您不能部分花費一筆交易。 –