比特幣程式碼分析7 交易校驗
每一個收到交易,比特幣節點都驗證該交易,有效的交易將被傳遞到各個附近節點,這將確保只有有效的交易才會在網路中傳播, 而無效的交易將會在第一個節點處就被廢棄。
校驗選項列表:
每一個節點在校驗每一筆交易時,都需要對照一個長長的標準列表
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、每一個輸入的解鎖指令碼必須依據相應輸出的鎖定指令碼來驗證
相關推薦
比特幣程式碼分析7 交易校驗
每一個收到交易,比特幣節點都驗證該交易,有效的交易將被傳遞到各個附近節點,這將確保只有有效的交易才會在網路中傳播, 而無效的交易將會在第一個節點處就被廢棄。校驗選項列表:每一個節點在校驗每一筆交易時,都需要對照一個長長的標準列表1、交易語法與資料是否正確2、輸入與輸出列表都不能空(>=1)3、交易大小
比特幣程式碼分析8 區塊校驗和確認
比特幣節點接收到一個區塊以後,都會進行校驗和確認,如下參考網路圖: 關鍵看看對區塊中的交易進行進一步的校驗程式碼:1.// First transaction must be coinbase, the rest must not be2.if (vtx.empty() || !vtx[0].IsCoinB
比特幣代碼分析7 交易校驗
數字 key hash 序列號 才會 第一個 100萬 pub 匹配 每一個收到交易,比特幣節點都驗證該交易,有效的交易將被傳遞到各個附近節點,這將確保只有有效的交易才會在網絡中傳播, 而無效的交易將會在第一個節點處就被廢棄。校驗選項列表:每一個節點在校驗每一筆交易時,都需
比特幣程式碼分析5 挖礦程式碼分析
本文描述礦工處理執行緒,通過本文學習,可以瞭解礦工挖礦的大致流程。主要包含挖礦費用交易的產生、當前交易池的打包處理,工作量證明等相關內容。流程圖(參考網路)如下所示:。 礦工處理函式1.void ThreadBitcoinMiner(void* parg)2.{ vfThreadRunning[3]
比特幣程式碼分析4 挖礦程式碼分析
本文描述礦工處理執行緒,通過本文學習,可以瞭解礦工挖礦的大致流程。主要包含挖礦費用交易的產生、當前交易池的打包處理,工作量證明等相關內容。流程圖(參考網路)如下所示:。 礦工處理函式1.void ThreadBitcoinMiner(void* parg)2.{ vfThreadRunning[3]
比特幣程式碼分析11 比特幣儲存機制
比特幣儲存機制 比特幣儲存系統由兩部分組成: kv 資料庫(levelDB)索引和普通資料檔案。普通檔案用於儲存區塊鏈資料,kv 資料庫用於儲存區塊鏈元資料。用於儲存區塊鏈資料的普通檔案以 blk00000.dat , blk00001.dat 檔名格式組成。其中 index 目錄儲存用於儲存區塊元資料。普
比特幣程式碼分析方法總結
最近我開始學習區塊鏈,一邊分析比特幣程式碼,一邊按照自己的理解實現了一遍(https://github.com/hindsights/xbtc),雖然功能不太完善,好在是基本上把比特幣的架構和重要技術細節理清楚了。現在回想起來,整個過程還算順利,但也走了一些彎路
比特幣腳本及交易分析 - 智能合約雛形
比特幣大家都有轉過賬,每筆交易是這樣的:張三賬上減¥200,李四賬上加¥200。在比特幣區塊鏈中,交易不是這麽簡單,交易實際是通過腳本來完成,以承載更多的功能個,這也是為什麽比特幣被稱為是一種“可編程的貨幣”。本文就來分析一下交易是如何實現可編程的。 未花費的交易輸出(UTXO) 先引入一個概念:未花費的
比特幣原始碼分析--深入理解比特幣交易
交易是比特幣最重要的一塊,比特幣系統的其他部分都是為交易服務的。前面的章節中已經學習了各種共識演算法以及比特幣PoW共識的實現,本文來分析比特幣中的交易相關的原始碼。 1 初識比特幣交易 通過比特幣核心客戶端的命令getrawtransaction和decoder
比特幣的機制1:記賬的方式,交易的語法,比特幣指令碼,P2PKH交易
原文連結:郭老師的備課資料 比特幣的共識機制生成了一個append-only的賬本,一旦交易在賬本中,再也不能更改。礦工——也即一些有較高計算力的節點,生成區塊,並且驗證交易是正確的(簽名是正確的、幣沒有重複花費)等。賬本和區塊鏈網路使得比特幣成為一種貨幣。在本文中,將介紹一些細節。
《詳解比特幣白皮書》-Transaction(交易)
該部分比較難理解,如有疑問可以給我留言,詳細交流。 Transactions We define an electronic coin as a chain of digital signatures. 我們定義一個電子貨幣它是一個數字簽名鏈。 注:define coin
比特幣原始碼分析--P2P網路初始化
區塊鏈和AI無疑是近期業界當之無愧的兩大風口。AI就不說了,區塊鏈從17年各種數字貨幣被炒上了天,一下成為了人們街頭巷議的焦點,本文撇開數字貨幣的投資不說,僅僅從技術層面來剖析一下區塊鏈各個部分的原理。畢竟目前已經有包括BAT等巨頭在內的許多公司投入到了區塊鏈的研發
比特幣原始碼解析(7)
0x00 摘要 區塊是區塊鏈的組成基本結構,也是交易資訊的載體,礦工通過挖礦的形式來產生新的區塊並獲得獎勵,新塊產生的過程也是一個交易打包的過程,只有加入到區塊中的交易才會被系統所有其他節點所認可,才
比特幣原始碼分析-網路(二)
比特幣原始碼分析-網路(二) https://www.jianshu.com/p/4b42d8698f35 眾所周知,比特幣網路是採用的P2P網路體系,所以,沒有明顯的客戶端與服務端的區別或者是概念,每一個節點既是自身的客戶端,又是其它節點的服務端。 在sync.h中,
比特幣原始碼解析(7) - 資料結構 - 區塊
比特幣原始碼解析(7) - 資料結構 - 區塊 https://blog.csdn.net/u012183589/article/details/77776730 0x00 摘要 區塊是區塊鏈的組成基本結構,也是交易資訊的載體,礦工通過挖礦的形式來產生新的區
比特幣原始碼解讀之交易發起
(本文使用的是比特幣v0.1.0版本 點選下載原始碼)本文主要描述交易是如何發起中,其過程包含交易的新建(包含交易的選擇,交易費的計算、簽名);提交交易請求;本節點接受交易(驗證、檢查並儲存交易等);最後廣播交易到其他節點中。流程圖如下所示:新建交易if(!CreateTra
比特幣原始碼分析--埠對映
上一篇文章分析了比特幣P2P網路中,一個節點是如何發現並連線到相鄰節點的。在P2P網路中,一個節點既是客戶又是伺服器,它還要接受其他節點的連線,為網路中其他節點提供服務。這篇文章著重分析一下比特幣P2P網路中是如何通過upnp來實現埠對映的。1 從騰訊的一道面試題說起
比特幣原始碼分析--比特幣架構
前面的一系列文章我們結合原始碼對比特幣的主要模組進行了梳理和分析。本文我們將這些模組拼接起來,看看比特幣的整體架構。 比特幣的整體架構圖如下: (1)P2P網路層 完成P2P的組網,網路連線管理,節點狀態的維護,為
搭建比特幣期貨平臺,合約交易系統開發
比較 設定 開發商 不同 如果 存在 盈利 先生 區塊鏈開發 搭建比特幣期貨平臺,合約交易系統開發期貨合約交易算是金融系統的衍生品交易,有現貨交易即會有期貨合約交易,區塊鏈行業也是如此。而在區塊鏈比特幣領域合約分為兩種“交割合約”和“永續合約”,兩種玩法截然不同,開發的系
比特幣情景分析
INV訊息 The inv message (inventory message) transmits one or more inventories of objects known to the transmitting peer. It can be s