Z-DAG:
使用Nakamoto共識安全參數進行實時加密支付的交互式定向非循環圖協議
JagdeepSidhu,Msc.?,EliotScott?,AlexanderGabriel?
?Syscoin核心開發人員,BlockchainFoundry有限公司
Email:,
?英國林肯大學,林肯自治系統中心,
郵箱:
摘要--Z-DAG代表零確認定向非循環圖。該技術可以使商家和消費者應用程序間的交互協議內,實現高統計概率實時結算的銷售點。
1.簡介
Z-DAG是一種即時結算協議,在確認Syscoin服務交易時被用作工作量證明的補充系統。本質上,Z-DAG只是一個有向非循環圖,其中驗證節點對在其內存池接收的交易排序進行驗證。整個網絡中的驗證節點使用Z-DAG來確保交易順序有絕對的共識,并且沒有余額溢出。
1.0.1Z-DAG
Z-DAG是一種跨Syscoin資產運行的即時結算協議。資產所有權通過私鑰來證明,該私鑰匹配與資產相關聯的每個唯一地址。Z-DAG以決定性的方式管理交易的余額和狀態。當在短時間內通過多個節點創建多個交易而使資產錯誤轉移時,它可以有效防止雙重支出。
1.0.2.DAG結算
之所以允許Z-DAG交易即時結算,是因為通過執行交互式協議,每個節點接收到實時交易,此過程中,在發送方和接收方之間極有可能出現最小時延,這就使得礦工很大可能在實時交易時看到交易順序,與此相比,在一個區塊之內則具有更大可能性進行微小交易結算。即便在沒有區塊確認的情況下,交易的參與者也可以就結算達成一致,因為網絡能夠預測下一個區塊中的交易是怎樣的,以及它們如何排序。在創建區塊期間,礦工的任務是從他們的內存池中構建一個有序的交易列表,它們按時間排序。請注意,一貫傳統中,礦工從內存池中選擇付費最高的交易,此處該規則保持不變,在根據最高費用選擇交易集后會產生額外排序。基于時間的排序具有可忽略不計的處理要求,因此對礦工并無害處,并可在創建區塊時自動完成。
如果礦工未能做到這一點,他們的區塊將被置于不被對等方驗證的風險,因為如果處理亂序,余額可能會溢出。每個對等方都進行嚴格的驗證,以確保在處理區塊時,不會出現任何的負余額,就像比特幣處理UTXO時,嚴格按照標準檢查余額一樣。成功的礦工將這些列表寫入新的區塊,然后通過驗證網絡中的節點繼續被接受或拒絕。驗證節點使用這些區塊中所包含的交易列表來驗證沒有余額溢出,他們可以交叉檢查以確定網絡是否處于確定狀態。如果網絡不處于確定性狀態,就意味著節點驗證和礦工存在結果沖突,則沖突的交易和區塊將被拒絕。如果驗證節點斷定它們處于絕對共識狀態,則區塊中的交易將被確認并正常添加到狀態數據庫。在交易開始時,對于由同一資產持有者進行的后續轉移,適用非強制性的10秒延遲。此延遲旨在創建最小時延,從而簡化交易的排序。如果用戶發送兩個交易,第二個交易在第一個交易產生后10秒,那么網絡上的足夠節點應該能夠確定哪個交易是原始傳輸。如果在此延遲內進行了轉移,則沖突狀態設定,并且接收節點會把違反交互協議的交易拒之門外;見圖2。實時狀態和PoW塊之間的任何差異將在確認區塊時得到解決,因為PoW總是回滾到先前的狀態并重放礦工所看到的正確的交易順序。通過使用這種概率方法,Z-DAG交易能夠實時進行結算,并且在最小時延內,雙重支出風險可以忽略不計。內存池驗證和交易信息的網絡延遲將通過并行操作得到高度優化,并且將允許概率場景,其中礦工在最小時延階段之后可以更高概率以與大多數網絡相同的順序看到交易。
圖1.1:這表示交易的實時排序,作為DAG中頂點的線性排序o=中,u位于v前面。余額實時持續,并設法檢測雙重支出。在區塊1001,訂單由礦工保存并由PoW結算。
zkSync 生態永續合約協議Phezzan Protocol決定關閉,將在GitHub上開源代碼:4月24日消息,zkSync 生態去中心化永續合約協議 Phezzan Protocol 發推稱,經過多次討論,團隊決定關閉 Phezzan。Phezzan 推特賬戶將永遠不會再更新,Phezzan Discord 將在 24 小時內關閉。此外,Phezzan 代碼將在 GitHub 上開源。[2023/4/24 14:22:47]
1.0.3.PoW分區容差+DAG即時結算
除了可以促進快速交易,Z-DAG還允許在區塊上結算交易,并且,使用PoW作為Syscoins首要共識方法所獲得的任何安全性不會有任何閃失。PoW是DAG運行的后備和分區容差,每個區塊都構建一個新的DAG。如果接收者愿意的話他們可能期望簡單地等待一分鐘/區塊進行區塊確認,或者等待6分鐘/塊以進行徹底確認。通常,對于基于代幣的去中心化網絡來加速交易,必須進行某種類型的功能組合。采用這種方法的系統通常選擇犧牲去中心化和/或獎勵機制;例如使用Ripple和Nano采用的共識協議。Syscoin的解決方案保留了支持網絡的去中心化、安全性和獎勵礦工機制。
1.1技術概述
Syscoin即刻交易結算的方法與比特幣的創始人SatoshiNakamoto最初提出的想法有異曲同工之妙。Satoshi在他/她對“比特幣零時自動販賣機”問題的回應中稱,通過在交易之間創建延遲,率先通過網絡傳播的一個傳輸比另一個更具有指數優勢。由此,交易很容易按序排列,從而使Z-DAG能夠被確定地構建;這是一種其他系統在結構上無法復制的方法,除非它們是可以按照確定性排序編碼到其共識模型中的、具有內置規則的去中心化系統。這是Z-DAG的精髓。有關其他工作的更多詳細信息以及沒有中心化如何導致解決問題失敗,詳見“相關工作”章節。
圖1.2:A節點向網絡廣播它正在向B節點發送一定數量的資產。一旦B節點收到交易通知,余額會立即在其錢包中體現。在挖到一個區塊時,交易通過網絡確認。在區塊確認時,資產的狀態回復到前一個區塊的狀態,而有序的區塊則繼續進程以達到新的余額。需注意,驗證區塊進程與實時余額的結果相同時,余額保持不變。
1.2.互動游戲
協議共識由資產轉移的接收者通過調用“資產分配發送者狀態”功能來強制執行,該功能確保發送者使用資產進行的任何交易都遵守最小時延,并且還標記了一個主要的錯誤狀態以檢測雙重支出。如果發送者沒有遵守協議規則,接收者可能決定不遵守銷售點,或等待或拒絕他們的交易結束。這些規則不是由網絡共識強制執行的,因此可以在網絡帶寬和計算資源更便宜和更有效時進行優化。當進行有效轉移時,接收該已廣播交易的礦工將其包含在未確認、等待在區塊中挖出的交易隊列中。雖然交易的接收方能夠在收到交易通知后立即獲取其資金,但直至挖出一個區塊,該交易才算真正完成;在挖出區塊之前,該筆交易會被當作毫無疑問會存留而進行結算。一旦挖出一個區塊,交易就會得到確認,資金在PoW置信之下最終完成;詳見圖1.3。事實上,這只是兩個置信模型的故事,Z-DAG置信模型位于統計概率內,即PoW排序將與某些確定性匹配,并且PoW確認允許確定性:一旦在X區塊上確認,則在統計概率上他們不太可能回滾。此外,由于置信模型不會持續超過區塊,因此在一個時域內,此類模型的費用市場也進行了優化,以避免由于區塊已滿而導致費用呈指數上升的情況。因為在Z-DAG置信度模型中,你真正關心的只是未檢測到雙重支出,關心的是你的交易最終會結算別人為Z-DAG交易支付的費用,并且可能比標準交易少很多,因為別人并未爭相在下一個區塊中進行結算。同樣值得一提的是,Z-DAG的主要用例是用于銷售點,在這種銷售點中,發生概率結算并且允許買方在無需等待買賣雙方都確信交易準確完整的情況下進行區塊結算,買家可以無需理睬具有某種類型的履行服務的銷售。
1.3多線程和并行簽名驗證
馬斯克成立人工智能公司X.AI:金色財經報道,根據美國內達華州的備案文件,馬斯克在該州新成立了一家名為X.AI的人工智能公司。近期,馬斯克創建了一家叫做“X”的空殼公司,將自己擁有的推特、SpaceX、特斯拉、Neuralink等所有公司打包加入其中。如今,“X”公司再添新丁X.AI,并且要與OpenAI展開競爭。[2023/4/15 14:05:04]
為了加速跨網絡的新廣播交易,Syscoin使用獨特的方法來驗證簽名、中繼交易。節點的任務是在驗證其簽名之前先中繼任何轉入的交易;詳見圖1.4。一旦節點中繼了新交易,它就會將該交易添加到包含其他未經檢查的交易的線程池隊列中。線程池基于有界MPMC無鎖隊列,基于DmitryVyukov的工作,每個入列/出列操作1個CAS。通過將交易中繼優先于簽名驗證,預期接收者將以指數方式更快地收到資金匯入的消息,從而更迅速獲取新的余額。多線程還大大減少了簽名驗證所需的時間;有關內存池并發驗證過程,請參閱附錄A中的算法1。
1.3.1并發驗證追索政策
作為預防惡意傳播無效交易的不良參與者的措施,在遇到錯誤簽名時,Syscoin節點被指示實施簡單協議。當節點檢測到交易已被錯誤簽名時,它會設置一個標識,以便將后續請求進入內存池的交易返回單線程模式。然后,節點繼續在單線程模式下,對余下的未檢查交易隊列進行60秒解析,并摒棄在此時遇到的任何錯誤簽名的交易。此外,當節點處于單線程模式時,它會反轉其慣常操作順序,并在中繼未檢查的交易之前解析交易隊列。通過使用這個簡單的協議,能夠更快地傳播有效交易,而無效交易則會被快速捕獲并丟棄;在驗證剩余的內存池的情況下,關于60秒的追索策略詳見附錄A的算法1。
圖1.3:在左側的序列圖中,兩個節點嘗試從同一地址交易資金。由于兩個交易的總和都在發送地址的余額之內,因此允許在兩個區塊上確認交易。在右側的序列圖中,兩個節點嘗試從同一地址交易資金,但其中一個被拒絕。在第一個交易被確認并且在發送地址的余額減少之后,第二個交易變為非法并被標記為雙重支出,隨后被中繼到網絡的其余地方。
圖1.4:傳統的區塊鏈網絡要求每個節點在中繼之前首先檢查傳入交易的簽名;這種區塊技術會阻礙廣播速度。而如上所示的Z-DAG進程會在檢查簽名之前立即中繼交易,從而顯著加快網絡上的移動速度。
2.網絡傳輸和處理
現在我們已經描述了我們如何解決問題,接下來展示在Syscoin的主節點網絡環境中檢測和處理雙重支出的概率。直覺判斷,由于我們將驗證與中繼分離,我們使用統計模型得出結論:10秒驗證窗口足以讓傳統商品硬件支撐與峰值吞吐量下運行的VISA/Masternode網絡的相匹配的速度。
2.1傳輸路徑
主節點k之間的共同對等體的預期數量取決于網絡中的主節點m的總數以及每個主節點具有的對等體p的數量。隨后,預期的共同對等體數量是:
當主節點i是一個共同對等體時,Xi為1,反之則為0。由于主節點們從一組主節點集合中隨機選擇他們的對等體,因此歸納為
如果我們假設主節點的總數為1000,兩個主節點之間的共同對等體的預期數量是0.625。那么發生這種情況的概率是多少?
對于一對主節點正好具有n個共同對等體的概率,見下列公式:
對于每個具有25個對等體的1000個主節點,概率如下:
安全起見,假設我們的25個對等體中只有22個是獨一無二的。然后在兩個跳數之后我們可以達到484個主節點,在3個跳數之后我們可以達到所有主節點。對于更高的主節點總量,這些幾率可以提高。通過網絡的慣常路徑有5個步驟,3個在主節點的網格內,2個在其邊界處。
2.2傳輸延遲
我們收集了一個300字節ICMP傳輸的、主節點到主節點、客戶端到主節點的數據集。該數據集包含2086個樣本,每個樣本是兩個主機之間10次傳輸的平均傳輸時間。為了模擬單個跳數的傳輸延遲,我們將伽馬分布擬合到該樣本集。
40,000,000 SAND 從未知錢包轉移到 Binance:金色財經報道,Whale Alert監測數據顯示,北京時間2023年2月5日02:03,40,000,000 SAND (價值約31,231,469美元) 從未知錢包轉移到Binance。[2023/2/5 11:47:45]
圖2.1.將伽馬分布與我們的樣本集進行匹配
提供給我們伽馬分布k和θ的兩個定義參數
k=1:471680θ=0:077714
為了估算端到端的傳輸時間,我們必須總結5個以上的伽瑪分布。這給我們帶來一組新的定義參數
k=7:358398θ=0:077714
現在我們可以計算傳輸在給定時間內到達的概率,反之亦可以計算,我們需要等待多長時間才能以所需的概率獲得傳輸。
圖2.2.隨著時間推移5個跳數后tx到達的概率
2.3網絡處理能力
由于交易的接收方在接受銷售點交易之前等待10秒,并且通過網絡可能的雙重支出交易占用了多達2.3秒,因此她有7.7秒的備用時間。此時間可用于驗證其他簽名。換言之,如果一個商家有累計的7.7s時間可以驗證簽名,她仍然可以及時發現雙重支出交易。
我們對新的并行簽名驗證機制進行了測試,以創建一個樣本集,用來為簽名驗證時間作模型。我們使用libsecp256k1對進入內存池的交易輸入進行ECDSA簽名驗證。libsecp256k1使用有效的可計算自同態來將被乘數P分成2半,以便為我們提供30%的速度提升。比特幣已禁用這一功能,但實際是為了在未來的版本中啟用它。我們還啟用了所有硬件優化。我們堅持使用傳統硬件,以獲得目前主節點正在運行的云提供商上的現有計算硬件的典型平均吞吐量。這些數字代表了今天用低成本硬件應該可能實現的目標,而不是隨著網絡周圍的速度和基礎設施的有機增長而變得更有利的具有前瞻性的數字。
使用這個模型,我們可以找出商家在10秒等待時間所剩下的7.7s中可以驗證的簽名數量。在10秒窗口中驗證的293.3千個簽名意味著網絡通過4核接收器節點,每秒最大理論吞吐量為29.33千個交易。假設發送方和接收方元組之間存在虛擬交易,則每個資產交易最多可容納250個接收方,這意味著每秒大約有73.3萬個交易的最大吞吐量。如果商家運行更快的機器,這些數字會更顯著增加。
圖2.3.在7.7s中驗證簽名的可能性
3.相關工作
Syscoin的共識方法基本上以Satoshi的工作量證明算法為中心。Z-DAG協議是共識第二層,其目的是允許交易在確認之前得到解決;Z-DAG不能單獨確保共識。Syscoins通過同時使用DAG和PoW解決快速交易問題的方法既高效又獨特。許多其他去中心化服務完全使用基于DAG的網絡結構,甚至更多地繼續使用PoW或PoS。像IOTA和NANO這樣的項目已經創建了自己的基于DAG的協議,這些協議在很大程度上犧牲了PoW的經過驗證的安全性,但反之又獲得了快速處理交易的能力。許多老的服務,即比特幣和類似的衍生出的項目,為了安確保安全繼續使用PoW,但是他們的用戶經常被交易時間緩慢并且具有限制而影響。
3.1.相關工作類比
如前所述,IOTA和NANO是兩種基于DAG的典型服務,它們創建了自己獨特的方法來確保其網絡節點之間的去中心化共識。可以說,NANO的方法受到Satoshi的工作證明的啟發,因為它用于確保網絡的共識。然而,NANO的共識基本上是通過使用他們稱為“區塊晶體”的DAG結構來實現的。與Syscoin不同,Nano網絡上的節點保留了各自的區塊鏈。交易按其時間戳排序,用于形成有向非循環圖。在交易期間,發送方和接收方都產生它們自己的區塊,這些區塊反映它們各自參與交易,然后廣播到網絡。發送方和接收方都使用PoW驗證自己的交易,這免除了在網絡上指定礦工。為防止犯規,NANO采用PoS和投票系統,以確保交易符合網絡要求的標準。
瑞士比特幣礦企White Rock Management計劃將業務拓展至美國等多個國家:6月28日消息,總部位于瑞士、使用可持續能源的加密礦企White Rock Management計劃將其比特幣挖礦業務擴展到包括美國(主要關注中部地區)在內的其他國家,使其挖礦地點多樣化,并在2024年將其比特幣網絡算力份額從目前的不到1%提高到1.5%。White Rock在德克薩斯州獲得了一處地點,并正在“深入談判”,以確保在其他州(包括懷俄明州)獲得更多業務開展地點。
該公司表示,在考察基礎設施和監管方面,美國總體上是一個有吸引力的國家。該公司還專注于為并購交易做準備,它認為在最近的市場拋售之后,并購交易很快就會到來。(Business Insider)[2022/6/28 1:37:07]
IOTA用于確保其網絡共識的方法幾乎完全覆蓋了傳統模型。IOTA依賴于網絡共享的主DAG,它們稱之為“Tangle”。在Tangle中,交易作為頂點存在并形成長鏈。當一個交易試圖加入需要通過網絡確認的Tangle時,則在它之前的另外兩個必須先被批準。因此,通過參與IOTA交易,用戶可以幫助加速網絡。因此,與NANO類似,每個節點都可以視作自己的礦工。然而,由于IOTAs系統至今并未完全去中心化,因此爭議不斷,備受詬病。針對所謂的“34%攻擊”,IOTA在當前的成熟度上依然處于結構性脆弱狀態。“34%攻擊”與威脅PoW系統的“51%攻擊”非常相似,但它明顯具有更大的隱患。當交易加入DAG時,tangle會隨著時間的推移逐漸增加,但它可以抵御這種攻擊增加。在tangle到達某個成熟點之前,作為臨時補救措施,IOTA設立了一個集中協調器節點來防止34%攻擊。
完全依賴PoW共識的去中心化服務從經過嚴格測試和驗證的安全性中獲益頗豐,但由于交易時間緩慢而處于瓶頸狀態。對于待確認交易,必須將它們包括在通常遠距離挖出的區塊中;在比特幣中,每10分鐘一次。這種強制性的時間限制使得許多現實的加密貨幣應用程序無法進行交換。通常,區塊內交易的順序由礦工任意決定。唯一的例外是,交易必須在它們所依賴的任何交易之后出現。這種隨機性使得區塊無法被可靠預測;同時也是Syscoin在驗證區塊之前對交易進行拓撲排序的原因。交易的實時視圖可以反映區塊內的排序,這需要協議支持,而這些正是比特幣和其他PoW實踐所缺乏的。因此,依賴于這種PoW鏈進行零確認結算的技術,與在核心層具有協議支持的技術相比,基本上不具有相同的安全屬性。
比特幣-XT通過轉播雙重支出交易并讓商家實時檢測雙重支出,實現了零確認結算方案,但容易受到所謂的的延遲攻擊,而在Syscoin中,通過讓商家查詢,隨機抽選主節點,來響應資產分配發件人狀態,則可以有效地避免。
未獲取PoW支持的實踐受到分區容錯問題的影響。本質上,DAG實踐基于性能而非一致性進行權衡。隨著時間的推移,PoW鏈可能具有更大的一致性,并且最終不會出現像IOTA一樣需要協調DAG結構的問題。在Syscoin中,實踐PoW+DAG意味著使用PoW作為每個DAG的參照,因此不需要采取協調措施讓DAG保持如何形成或驗證的一致性。
Syscoin的Z-DAG協議對接收方驗證交易的方式沒有任何限制,只有資產分配發送方狀態是參考實施,以確保滿足相鄰發送方交易之間的最小延遲,并確保未檢測到發送方雙重支出。用戶可以自由地實踐最小時延,甚至可取決于網速增加的情況,將可接受的實時交易之間的延遲從10秒調整到更短的時間,以便更快地傳播交易。一言以蔽之,可以動態調整延遲進行優化,從而更好地跟上平均傳播速率。例如,相比于內存池以驗證機制為瓶頸的速率填充時,當內存池相對較空,交易在網絡上傳播應該更快。我們將此作為未來的一個小作業。
3.2.使用比特幣的中心化服務
解決以前稱為“快速交易”問題的另一種方法是應用程序級環繞解決方案。BitPay等實體為基于加密貨幣構建的企業提供區塊鏈計費服務;例如BitPay建立在比特幣之上。BitPay模式使用票據和加密到法定貨幣的轉換技術。BitPay為客戶開具比特幣支付票據,在收到之后,轉換回法定貨幣以重返交易。此外,BitPay還賦予企業和客戶選擇他們愿意承擔的交易風險承受等級的能力。該風險承擔系統根據自交易啟動以來,在比特幣網絡上挖出的區塊數量來調整其風險等級。如果在確認付款之前,交易要求挖出更少數量的區塊,則欺詐風險更大,反之,如果需要更多數量的區塊,風險也同樣巨大。
Binance:此前暫停比特幣提現是由小型硬件故障引起:6月14日消息,幣安解釋此前暫停比特幣提現約3個小時的原因。幣安已修復周一早些時候錢包整合節點上的幾個小型硬件故障,這些待處理的合并交易的Gas費很低,這導致后來的提現交易(指待處理的合并UTXO)被積壓,無法成功處理。
為了解決這些問題,幣安表示必須改變邏輯,只從合并交易或成功的提現交易中獲取成功的UTXO,此修復還將防止同樣的問題再次發生。幣安已恢復比特幣網絡提現。[2022/6/14 4:24:15]
4.未來工作
可以通過各種技術改進此項工作,以增加在最小延遲時間內驗證的統計概率。一種方法是檢查綁定驗證器的隨機數量以進行驗證。
4.1.SPVZ-DAG
Z-DAG的簡單支付驗證方法可以通過詢問隨機仲裁的接收方來確定有關Z-DAG交易的詳細信息。通過隨機仲裁,您可以將從接收器上的主機節點無效檢測雙重支出的概率下放到一組節點以及所選隨機仲裁的游戲技巧的可能性。從立即發送協議的隨機仲裁選擇中可以看出,在沒有合理懷疑的情況下使用這種驗證機制進行銷售點應用是安全的,特別是當隨機性并非由一種更易于利用的決定性的種子,而是由接收者播種。
這種類型的驗證對于未運行完整節點的銷售點終端尤其有用,但可以將端點引用到綁定驗證器完整節點的隨機化仲裁,以針對每個交易對它們進行驗證。
5.結論
通過對比Syscoin與相關工作可以看出,Z-DAG協議是針對上述“快速交易”問題的精妙有效的解決方案。它使用戶能夠在沒有任何第三方參與的情況下,立即結算Syscoin服務的轉移,而且欺詐風險可以忽略不計。Z-DAG交易不需要賣家或客戶采取任何其他步驟就可以直接在Syscoin網絡上快速交易。使用Z-DAG,可以通過比特幣證明的絕對安全性快速結算客戶交易。
致謝
我們感謝SatoshiNakamoto,感謝Bitcoin核心開發人員一直以來在軟件工程上的卓越成就,使人們可以在其成果之上開發創新產品。
參考資料
ArthurBrittoDavidSchwartzNoahYoungs.TheRippleProtocolConsensusAlgorithm.URL:https://ripple.com/files/rippleconsensuswhitepaper.pdf.
EvanDuffield.Dashpay.URL:https://github.com/dashpay/dash/wiki/Whitepaper.
ArthurGervais.TamperingwiththeDeliveryofBlocksandTransactionsinBitcoin.URL:https://scalingbitcoin.org/papers/bitcoin-block-transaction-delivery.pdf.
ColinLeMahieu.Nano:AFeelessDistributedCryptocurrencyNetwork.URL:https://nano.org/en/whitepaper.
SatoshiNakamoto.Bitcoin:Apeer-to-PeerElectronicCash.URL:https://bitcoin.org/bitcoin.pdf.
SatoshiNakamoto.Bitcoinsnackmachine(fasttransactionproblem).URL:https://bitcointalk.org/index.php?topic=423.20.
SergueiPopov.TheTangle.URL:https://assets.ctfassets.net/r1dr6vzfxhev/2t4uxvsIqk0EUau6g2sw0g/45eae33637ca92f85dd9f4a3a218e1ec/iota143.pdf.
JagdeepSidhu.Syscoin3.0:APeer-to-PeerElectronicCashSystemBuiltForBusinessApplications.URL:https://syscoin.org/Syscoin3.0WhitepaperCondensed.pdf.
DmitryVyukov.BoundedMPMCqueue.URL:http://www.1024cores.net/home/lock-free-algorithms/queues/bounded-mpmc-queue.
PieterWuille.OptimizedClibraryforECoperationsoncurvesecp256k1.URL:https://github.com/bitcoin-core/secp256k1.
6.附錄A:Z-DAG協議偽代碼
算法1:內存池并行驗證和Z-DAG實時共識
結果:一旦跨網絡參與者收到消息,資產分配余額將實時傳輸
1CallassetallocationsendRPC;調用資產分配發送RPC
2SignandsendTXtonetwork;簽署并發送TX到網絡
3foreachtransactionreceivedfrompeerdo對于從對等體do收到的每筆交易
4Accepttomemorypool;接受到內存池
5ifnow()-nLastMultithreadMempoolFailure<60secondsthen
如果now-n最后多線程Mempool失敗<60秒則
6setbMultiThreaded=false;設置b多線程=false
7else其他
8PreliminaryinputcheckssameasBitcoin;初步輸入檢查與比特幣相同
9ifbMultiThreaded==falsethen如果b多線程=false則
10forallinputsdo對于所有輸入
11Dosignatureverification;簽名驗證
12ifIfsignatureverificationfailsthen如果簽名驗證失敗則
13returnfalse;返回false
14else其他
15Addtransactiontomemorypool;將交易添加到內存池
16Relaytransactiontonetworkpeers;中繼交易到網絡對等體
17else其他
18Addtransactiontomemorypool;將交易添加到內存池
19Relaytransactiontonetworkpeers;中繼交易到網絡對等體
20Addtransactiontothreadpoolqueueforsignatureverification;將交易添加到線程池隊列以進行簽名驗證
21Threadpoolconcurrentlychecksforsignaturevalidity;線程池同時檢查簽名有效性
22ifsignatureverificationfailsthen如果簽名驗證失敗則
23setnLastMultithreadMempoolFailure=now();設置n最后多線程內存池失敗=now()
24return;返回
25else其他
26ZeroconfirmationSyscoinconsensusupdates;更新零確認Syscoin共識
27ifupdatefailsthen如果更新失敗則
28setnLastMultithreadMempoolFailure=now();設置n最后多線程內存池失敗=now()
29return;返回
30else其他
算法2:資產分配發件人狀態RPC
結果:根據Z-DAG交互協議規則檢查收到的交易是否確實有效
1setstatus=OK;設置狀態=OK;
2ifsenderwasfoundinassetAllocationConflicts(double-spenddetectionbuffer)then如果在資產分配沖突中找到發送方則
3setstatus=MAJORCONFLICT;設置狀態=MAJORCONFLICT;
4else其他
5Orderallin-transitassetallocationsfromsenderinorderbyascendingtime;按遞增時間順序對發件人的所有在途資產分配進行排序;
6setmapBalances=senderbalancefromlastPoWblock(lastknowngoodstate);設置mapBalances=上一個PoW塊的發送方余額;
7forallin-transitassetallocationsdo對于所有在途資產配置
8settxRef=in-transitassetallocationfetchedfrommempool;設置txRef=從內存池獲取的在途資產分配;
9iftxRefisinvalidthen如果txRef無效則
10continue;繼續
11else其他
12iftimereceivedof2adjacenttransactions<=minimumlatency(10seconds)then如果接收到2個相鄰交易的時間<=最小延遲則
13setstatus=MINORCONFLICT;設置狀態=MAJORCONFLICT
14else其他
15forallallocationssentinthistransactiondo對于次交易中發送的所有分配
16setsenderBalance=senderBalancesendingamount;設置發送方余額=發送方余額-發送金額;
17setmapBalances=mapBalances-sendingamount;設置map余額=map余額-發送金額;
18ifsenderBalance<=0then如果發送方余額<=0則
19setstatus=MINORCONFLICT;設置狀態=MAJORCONFLICT
20else其他
21returnstatus;返回狀態
算法3:區塊構造
Result:ABlockisconstructedoutoftransactionsrelatedtoSyscoinand/orSyscoinassets結果:區塊是由與Syscoin和/或Syscoin資產相關的交易構成的
1Craftblockfromtransactionsqueuedinthememorypool,orderedbyhighestfeefirst;在內存池中排隊的交易的區塊,按最高費用第一排序;
2Orderallin-transitassetallocationsfromsenderinorderbyascendingtime;按遞增時間順序對發送方的所有在途資產分配進行排序;
3TestvalidityofSyscoinassettransactionsinblock;以區塊為單位,測試Syscoin資產交易的有效性;
4ifIfblockisinvalidbecausetransactionscausebalanceoverflowsthen
If如果由于交易導致余額溢出,區塊無效,則
5removeinvalidtransactionsfromblockandcallBlockConstructionagain;從區塊中刪除無效交易并再次調用區塊構建;
6else其他
7TestvalidityofstandardSyscoinblocktransactions;測試標準Syscoin區塊交易的有效性;
8SolveblockPoWandrelayblocktothenetwork;解決區塊PoW并中繼區塊到網絡;
比特幣四小時 2020.2.5在9416附近介入的中線多單A可以繼續持有。因為這個多單的介入位置足夠低,所以可以承擔比較多一些的波動,用來搏取下一次的啟動向上.
1900/1/1 0:00:00親愛的BKEXer: BKEXGlobal將于2020年2月7日20:30至2020年2月10日20:30舉辦“CVP大放送活動”活動.
1900/1/1 0:00:002020年02月11日,巴比特綜合指數完成每月定期調整。考慮流通市值和交易額(加權平均)等因素,02月份調整后的8BTCCI指數成份剔除項目成份ZRX,新增項目成份CRO、BTG.
1900/1/1 0:00:00尊敬的用戶: BiKi礦池將于2020年2月5日19:00開啟USDT定期理財,年化6%活動,活動詳情如下:募集時間:2020-2-519:00至2020-2-1319:00計息時間:2020-.
1900/1/1 0:00:002月7日晚間,SheKnows開年辯論第二場——“創業之痛,區塊鏈團隊如何度過生死劫?”正式舉行.
1900/1/1 0:00:00本文由小蔥APP原創,轉載請注明出處,閱讀更多請登陸https://xcong.com/或下載小蔥APP.
1900/1/1 0:00:00