1. 程式人生 > >03.比特幣知識點詳解,你成功的速度一定比父母老去的速度快

03.比特幣知識點詳解,你成功的速度一定比父母老去的速度快

1.第一部分

01.簡述比特幣的歷史

比特幣(BTC)是一種點對點的去中心化的數字貨幣,是人類是歷史上第一個真正的數字貨幣。2009年比特幣誕生的時候,中本聰打包了第一個區塊,獲得了50個比特幣作為挖礦獎勵。挖礦獎勵每4年減半一次,現在每打包一個區塊只能獲取12.5個比特幣。按此計算,比特幣預計2140年發行完畢,總量約為2100萬枚,準確的說是20999999.97690000枚。 隨著比特幣的發展,越來越多的人投入到比特幣的使用中,德國是全球首個接收比特幣支付的國家,微軟、戴爾等知名企業也紛紛接受比特幣作為支付貨幣。比特幣是全球流通的,不受國家、區域的約束,有網路就可以。比特幣也是第一次真正實現了私有財產是神聖不可侵犯的,只有掌握私鑰的人才是比特幣的真正主人。

02.去中心化和中心化的概念是什麼?

通俗的說 : 中心化:幾個經過認證的嘉賓在‘講話’,所有其他人在聽。 去中心化:每個人都可以‘講話’,每個人都可以選擇聽或者講。 在一個分佈有眾多節點的系統中,每個節點都具有高度自治的特徵。節點之間彼此可以自由連線,形成新的連線單元。任何一個節點都可能成為階段性的中心,但不具備強制性的中心控制功能。節點與節點之間的影響,會通過網路而形成非線性因果關係。這種開放式、扁平化、平等性的系統現象或結構,我們稱之為去中心化。 隨著主體對客體的相互作用的深入和認知機能的不斷平衡、認知結構的不斷完善,個體能從自我中心狀態中解除出來,稱之為去中心化。 去中心化,不是不要中心,而是由節點來自由選擇中心、自由決定中心。簡單地說,中心化的意思,是中心決定節點。節點必須依賴中心,節點離開了中心就無法生存。去中心化的意思,是節點決定中心,中心必須依賴節點,中心離開了節點就無法存在。在去中心化系統中,任何人都是一個節點,任何人也都可以成為一箇中心。任何中心都不是永久的,而是階段性的,任何中心對節點都不具有強制性。

03.什麼是挖礦?

每一個比特幣的節點都會收集所有尚未確認的交易,並且會將其歸集到一個數據塊中,這個資料塊將和前面一個數據塊整合在一起。礦工節點會附加一個隨機調整數,並計算前一個數據塊的SHA-256 Hash運算值。挖礦節點不斷進行重複嘗試,直到它找到的隨機調整數使得產生的Hash值低於某個特定的目標為止。

04.挖礦的原理是什麼?

在這裡插入圖片描述 原理是工作量證明:節點向網路廣播交易,這些廣播出來的交易需要經過礦工的驗證,礦工們會用自己的工作證明結果來表達確認,確認後的交易會被打包到資料塊中,資料塊會串起來形成連續的資料塊鏈。由於Hash算是不可逆的,因此尋找到符合要求的隨機調整數將會非常困難,因此需要一個可以預計總次數的不斷試錯的過程。這時,工作量證明機制就發揮作用了。當一個節點找到了符合要求的解,那麼它就可以向全網廣播自己結果。其他節點就可以接收這個新解出來的資料塊,並檢驗其是否符合規則。只要其他節點通過計算Hash值發現其確實滿足要求(比特幣要求的運算目標),那麼該資料塊就是有效的,其他的節點就會接受該資料塊,並將其附加在自己已有的鏈條之後。

05.比特幣的系統基本引數是什麼?

  1. 出塊時間 十分鐘,系統根據當前出塊時間動態調整難度值,(每2016個塊調整一次,2周),使得時間穩定在十分鐘左右,包括同步時間,校驗時間,計算時間等。
  2. 出塊獎勵 最初50BTC,每21萬個塊獎勵減半,十分鐘,21萬106024365 = 4年,當前簡歷為12.5BTC,每4年減半
  3. 比特幣總量 2100萬個, 2140年挖完
  4. 區塊容量 考慮同步效率 1M大約容納4000條交易 1M/每筆交易的位元組= 交易數(1024*1024/233 =4200)
  5. 每秒成交量 4200/600s = 7筆/秒
  6. 單位 1BTC = 10**8sat(聰)
  7. 安身立命之本

06.區塊結構是什麼?

在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述 普通轉賬交易 創世塊資訊

07.比特幣交易的流程是什麼?

首先你要確認兩個問題,1,如何保證使用者只能使用到自己的比特幣,因為比特幣賬本是全網公開的2,如何保證一筆交易的有效性? 在這裡插入圖片描述 由於Alice挖礦被獎勵了12.5個比特幣。而Alice在一筆交易中,需要轉賬給Bob10個比特幣。而Bob最終確認並接收了Alice傳送的10個比特幣,而同時由於多出了2.5個比特幣。其實這筆交易最終是生成了2個輸出,一個是傳送給Bob的10個比特幣,另一個是找零產生的發給Alice的2.5個比特幣(備註:這裡不考慮交易費)。 1. 最開始,Alice由於挖礦被獎勵了12.5個比特幣,從而產生一筆Coinbase交易。這個交易中包含一個輸入和一個輸出。輸出中,包含當前輸出的索引、金額、鎖定指令碼和接受者的公鑰。這裡鎖定指令碼的作用是,設定成只有Alice才能使用這筆輸出。而要使用這個UTXO,就必須要證明自己是Alice。如何證明,我們會在後面解。 2. 然後,由於Alice要傳送給Bob10個比特幣,那麼她首先要做的就是確認自己有沒有足夠的“餘額”去支付這筆交易。我們在上一節說了,要計算使用者的餘額,就要遍歷Alice的所有交易記錄,這裡,我們假設Alice就只有一筆Coinbase交易,也就是說Alice當前的餘額是12.5個比特幣。由於12.5大於所要支出的10個比特幣,所以交易可以進行。 3. 接下來,就是要建立一筆交易。這筆交易包含1個輸入、2個輸出(一個傳送給Alice,一個找零發給自己)。 4. 上一步,我們驗證了該交易中輸入所引用的上一筆UTXO確實是Alice的,從而證明了該輸入的有效性。接下來,就需要建立2個輸出,一個是給Bod的10個比特幣,同時包含一個鎖定指令碼,該鎖定指令碼限定只有Bod才能使用;另一個是找零產生的輸出,傳送給Alice的2.5個比特幣,同樣的也包含一個鎖定指令碼,並且限定只有Alice本人才能使用。 5. 最後交易建立完成後,就向比特幣網路廣播出去,當比特幣網路確認這筆交易並且將這筆交易在下一次挖礦競賽中,將該交易打包進區塊中並得到全網共識確認後,這筆交易就確認有效了。 6.比特幣的基本交易過程就基本這樣。

08.p2p網路是什麼?

P2P技術屬於覆蓋層網路(Overlay Network)的範疇,是相對於客戶機/伺服器(C/S)模式來說的一種網路資訊交換方式。在C/S模式中,資料的分發採用專門的伺服器,多個客戶端都從此伺服器獲取資料。

優點是:資料的一致性容易控制,系統也容易管理。 缺點是:因為伺服器的個數只有一個(即便有多個也非常有限),系統容易出現單一失效點;單一伺服器面對眾多的客戶端,由於CPU能力、記憶體大小、網路頻寬的限制,可同時服務的客戶端非常有限,可擴充套件性差。 P2P技術正是為了解決這些問題而提出來的一種對等網路結構。在P2P網路中,每個節點既可以從其他節點得到服務,也可以向其他節點提供服務。這樣,龐大的終端資源被利用起來,一舉解決了C/S模式中的兩個弊端。 對等網路的基本結構: 集中式對等網路(Napster、QQ) 無結構分散式網路(Gnutella) 結構化分散式網路(第三代P2P Pastry、Tapestry、Chord、CAN) DHT結構 樹形結構 網狀結構 應用:迅雷,BitTorrent,PPLive

09.base64是什麼?

意義:按照RFC2045的定義,Base64被定義為:Base64內容傳送編碼被設計用來把任意序列的8位位元組描述為一種不易被人直接識別的形式 作用:於某些系統中只能使用ASCII字元。Base64就是用來將非ASCII字元的資料轉換成ASCII字元的一種方法。base64特別適合在http,mime協議下快速傳輸資料。 原理:Base64編碼方法要求把每三個8Bit的位元組轉換為四個6Bit的位元組,其中,轉換之後的這四個位元組中每6個有效bit為是有效資料,空餘的那兩個 bit用0補上成為一個位元組

10.錢包和地址是什麼關係?

錢包:建立私鑰公鑰,儲存私鑰,相當於錢包,可以存放多個地址 地址:類似於錢包中不同的銀行卡 私鑰:類似於每張銀行卡上有一個密碼 注意,地址是無法反推回私鑰的,這裡能取到私鑰是因為wallet.dat中儲存了私鑰,通過地址訪問了私鑰,而不是通過地址生成

在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述

2.第二部分

01.big.int的相關操作是什麼?

書上說不要在16,17歲愛上一個人,因為這個人會讓你得不到,又忘不掉

02.工作量證明邏輯是什麼?

Pow挖礦演算法:即工作證明,就是說,你獲得多少貨幣,取決於你挖礦貢獻的有效工作。算例越高,挖礦時間越長,你獲得的貨幣就越多。 挖礦演算法其實就是通過一個Hash函式

03.bolt資料庫的儲存格式是什麼?

04.bolt資料庫的讀寫操作是什麼?

05.gob編碼實現原理是什麼?

06.gob解碼實現原理是什麼?

07.迭代器基本邏輯是什麼?

08.命令列解析功能是什麼?

3.第三部分

01.位元找零機制是什麼?

02.鎖、解鎖指令碼的原理和作用是什麼?

03.utxo轉賬流程是什麼?

04.coinbaseTX的特點是什麼?

05.遍歷output的原理是什麼?

06.遍歷input的原理是什麼?

07.過濾input的原理是什麼?

08.普通交易的建立原理是什麼?

4.第四部分

01.FindNeedUTXO實現原理是什麼?

02.ecdsa簽名校驗是什麼?

03.對公鑰的序列化處理機制是什麼?

04.公鑰生成地址原理是什麼?

05.ripemd160處理雜湊方式是什麼?

06.錢包儲存/載入錢包原理是什麼?

07.使用gob.Register原因是什麼?

08.存Wallets結構是什麼?

09.ListAllAddresses函式原理是什麼?