比特幣代碼分析7 交易校驗
阿新 • • 發佈:2018-12-07
數字 key hash 序列號 才會 第一個 100萬 pub 匹配 每一個收到交易,比特幣節點都驗證該交易,有效的交易將被傳遞到各個附近節點,這將確保只有有效的交易才會在網絡中傳播, 而無效的交易將會在第一個節點處就被廢棄。
校驗選項列表:
每一個節點在校驗每一筆交易時,都需要對照一個長長的標準列表
1、交易語法與數據是否正確
2、輸入與輸出列表都不能空(>=1)
3、交易大小 < max_block_base_size(1M)
4、0 < 輸出值與總量 < 2100萬
5、輸出點中hash!=0,N!=-1(哈希值不能為零、序列號N不能為-1)
6、nlocktime<int_max
7、交易字節>=100字節
8、解鎖腳本(scriptSig)只能夠將數字壓入棧中,並且鎖定腳本(scriptPubkey)必須要符合isStandard的格式 (該格式將會拒絕非標準交易)
9、池中或位於主分支區塊中的一個匹配交易必須是存在的
10、對於每一個輸入,如果引用的輸出存在於池中任何的交易,該交易將被拒絕
11、驗證孤立交易
12、coinbase交易需經過100個確認
13、輸出必須存在,且未被花費
14、0< 輸入值與總量 < 2100萬
15、如果輸入值的總和小於輸出值的總和,交易將被中止
16、交易費用太低,則交易被拒絕
17、每一個輸入的解鎖腳本必須依據相應輸出的鎖定腳本來驗證
校驗選項列表:
每一個節點在校驗每一筆交易時,都需要對照一個長長的標準列表
1、交易語法與數據是否正確
2、輸入與輸出列表都不能空(>=1)
3、交易大小 < max_block_base_size(1M)
4、0 < 輸出值與總量 < 2100萬
5、輸出點中hash!=0,N!=-1(哈希值不能為零、序列號N不能為-1)
6、nlocktime<int_max
7、交易字節>=100字節
8、解鎖腳本(scriptSig)只能夠將數字壓入棧中,並且鎖定腳本(scriptPubkey)必須要符合isStandard的格式 (該格式將會拒絕非標準交易)
10、對於每一個輸入,如果引用的輸出存在於池中任何的交易,該交易將被拒絕
11、驗證孤立交易
12、coinbase交易需經過100個確認
13、輸出必須存在,且未被花費
14、0< 輸入值與總量 < 2100萬
15、如果輸入值的總和小於輸出值的總和,交易將被中止
16、交易費用太低,則交易被拒絕
17、每一個輸入的解鎖腳本必須依據相應輸出的鎖定腳本來驗證
比特幣代碼分析7 交易校驗