<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 前言 本節對前面內容做一個總結,以便更加清晰地看到區塊鏈的實現方式,包含技術、設計思路、類的組織等。 # 類圖 ![](https://img.kancloud.cn/9b/f6/9bf6be8cc155f0614f2dbe95d0a0317f_1701x1437.png) 在Go語言里面的類的function和field的訪問控制包括private和public兩種,他們的區別是:大寫字母命名的均為public,小寫字母命名的都是private。 # 三個核心類 Block、Blockchain、Transaction是三個核心類。 (1)Block類:區塊 ![](https://img.kancloud.cn/4f/ed/4fedaa85226f30d64d6e0d24d543dcac_328x320.png) Block是區塊鏈進行擴展最重要的地方。 接下來,我們將在區塊鏈里面增加Data字段,以將更多的信息保存到區塊鏈上。 (2)Transaction類:交易 ![](https://img.kancloud.cn/0b/18/0b18c3bbef663780562be8f57644a723_632x412.png) 一個交易,包含輸入輸出,它體現了區塊鏈的核心設計:在匿名情況下,如何保證交易的可靠進行,將交易發送人以前未花費的輸出納入到本次交易的輸入,交易完成后,零錢發回到交易發送人。此外,對輸入的簽名和上鏈前的校驗(輸入包含自校驗所需的所有信息),也是保證匿名交易達成的重要設計。 交易的輸入和輸出,我們將在后面進行擴展成腳本語言,解決多重簽名需求,并實現真正的智能合約。 (3)Blockchain:區塊鏈 ![](https://img.kancloud.cn/2e/0c/2e0cf8405486453c64cd1b767d6d920a_707x510.png) 區塊鏈是分布式數據庫。 我們把Block、UTXO、UTXOBlock保存到數據庫中。其中最關鍵的是Block數據庫表,為了提高效率,我們將UTXO、UTXOBlock也存入到數據庫中。 # 區塊鏈的主要應用場景 在區塊鏈的主要交易場景中,交易是P2PKH(Pay To Public Hash),涉及三個節點: (1)中心節點 (2)錢包節點 (3)礦工節點 1. 中心節點創建一個區塊鏈。 2. 一個其他(錢包)節點連接到中心節點并下載區塊鏈。 3. 另一個(礦工)節點連接到中心節點并下載區塊鏈。 4. 錢包節點創建一筆交易。 5. 礦工節點接收交易,并將交易保存到內存池中。 6. 當內存池中有足夠的交易時,礦工開始挖一個新塊。 7. 當挖出一個新塊后,將其發送到中心節點。 8. 錢包節點與中心節點進行同步。 9. 錢包節點的用戶檢查他們的支付是否成功。 用例圖: ![](https://img.kancloud.cn/5f/65/5f65d82f41da98d5559fbc8b71a1e5ec_861x1131.png) 請求區塊同步時序圖: ![](https://img.kancloud.cn/a5/c3/a5c3cd96c52f0fd106bb111c7e81c360_356x231.png) 交易處理時序圖: ![](https://img.kancloud.cn/b4/1e/b41e8342df81b18737e3d7b2983a23bb_786x263.png) # 區塊鏈的網絡通信主要功能 1)區塊同步。通過網絡請求,下載本地缺失的區塊; 2)發送交易。 3)接收交易,通過挖礦將交易上鏈。 # 區塊鏈應用層通信協議設計 ![](https://img.kancloud.cn/49/4c/494c7a488e9646b4e189c7947ab33513_447x134.png) 慣常的做法,我們會用command+payload的方式設計應用層協議,其中要注意到是,command的長度一般需要固定,在解析傳送來的數據時候,先解析命令,再在不同命名的處理函數中,解析該命令的payload。 Go很適合網絡開發,struct是網絡進行payload傳輸很適合的定義方式。 # 區塊鏈網絡通信特點 1、區塊鏈是P2P網絡,因此加入區塊鏈的每一個節點,既是服務器,也是客戶端。 所以,一般在sendData時候,都會將發送者的addr作為payload的一部分,發送給對方。 2、P2P通信,是點對點的強通信方式,多次請求-回答完成交互,從發送“麻煩告訴我你版本是什么”開始,發現本地版本比對方低,于是接著發送“麻煩告訴我你有什么”,對方將回復區塊或交易的概要(哈希列表),再緊接著向對方要具體的數據(如某個區塊或者某個交易)。 3、由于是P2P通信,所以每次請求-回答的數據都很小:在區塊鏈中,每次請求只會請求一個區塊的數據或者一個交易的數據,這將最大限度保證通信的可靠性。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看