国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于區(qū)塊鏈的定時交易執(zhí)行方法與流程

      文檔序號:12721863閱讀:345來源:國知局

      本發(fā)明在現(xiàn)有區(qū)塊鏈協(xié)議的基礎(chǔ)上,添加了交易執(zhí)行順序協(xié)議,特別是其定時功能的規(guī)則和方法。



      背景技術(shù):

      區(qū)塊鏈?zhǔn)且环N新的分布式技術(shù),由一個個順序排列而成的交易組成塊,再由一個個順序排列而成的塊組成鏈,每個塊包含一個自增的高度作為編號,還有一個時間戳用于記載打包時間。用戶數(shù)據(jù)的安全性依賴公私鑰體系,只有用戶私鑰簽名的交易才是合法的交易,故他人無法代為發(fā)起,且每個交易只存在唯一ID,以確保無法重復(fù)發(fā)起。

      用戶每次操作需主動為新交易單獨簽名并廣播進(jìn)網(wǎng)絡(luò),但由于網(wǎng)絡(luò)的分布式特性,交易存在一定的丟失概率、交易廣播入網(wǎng)及節(jié)點打包入塊需要時間、網(wǎng)絡(luò)擁塞時需排隊等待、出塊時間間隔不固定等多種因素,導(dǎo)致用戶無法完全控制自己的交易在哪個高度被打包。如果用戶需要在某個時間(高度)打包交易,目前只能手工發(fā)起或編寫客戶端定時腳本的方式,在那個時間點附近廣播交易,后需等待一段隨機(jī)性的時間,才能查看在哪個高度入塊,如果長期等不到入塊結(jié)果,則推斷交易可能已經(jīng)失敗,需重新發(fā)起。



      技術(shù)實現(xiàn)要素:

      本發(fā)明的目的在于針對現(xiàn)有技術(shù)的不足,提供一種基于區(qū)塊鏈的定時交易執(zhí)行方法。

      本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的:一種基于區(qū)塊鏈的定時交易執(zhí)行方法,包括以下步驟:

      (1)區(qū)塊鏈從創(chuàng)世塊啟動時,設(shè)置所有高度的“定時隊列”為空,設(shè)置全鏈的“順延隊列”為空。

      (2)節(jié)點每次啟動時,設(shè)置本地的“未處理交易池”為空。

      (3)用戶發(fā)起每筆交易時,指定一個“定時高度”字段,一個“是否順延”字段,并生成交易ID,然后簽名廣播。

      (4)節(jié)點在收到每個交易并驗證簽名后,加入本地的“未處理交易池”,并繼續(xù)廣播。

      (5)先按照塊物理大小或計算量限制設(shè)置“塊最大容量”,然后按照如下優(yōu)先級提取交易,并進(jìn)行打包:

      (5.1)節(jié)點在某“出塊高度”打包交易時,首先從當(dāng)前“出塊高度”的“定時隊列”中從頭至尾提取交易,并按照“塊最大容量”進(jìn)行打包。如果當(dāng)前高度的塊容量不足,則判斷當(dāng)前高度定時隊列中的剩余交易的“是否順延”字段,為“是”的交易加入全鏈的“順延隊列”的隊尾,為“否”的交易則不做操作。

      (5.2)如果當(dāng)前“出塊高度”的“定時隊列”中的交易處理完成,且塊仍有容量,則從全鏈的“順延隊列”提取交易并打包。

      (5.3)如果全鏈的“順延隊列”處理完了,塊仍有容量,則從“未處理交易池”提取交易并打包。如果交易的“定時高度”小于等于“出塊高度”,則打包并執(zhí)行交易;如果大于“出塊高度”,則打包但不執(zhí)行交易,并將該交易加入該“定時高度”的“定時隊列”的隊尾。

      進(jìn)一步地,上述方法中,用戶通過以下方式撤銷交易:

      (1)用戶可以發(fā)起撤銷某定時交易的“撤銷交易”,指定“待撤銷的交易ID”,并簽名廣播。

      (2)節(jié)點在打包“撤銷交易”時,首先根據(jù)ID找到該“待撤銷交易”,驗證其原始發(fā)起用戶和該“撤銷交易”的發(fā)起用戶一致,并且其設(shè)定的“定時高度”大于當(dāng)前“出塊高度”,則將該ID的交易從“定時隊列”中刪除,否則為非法撤銷。

      本發(fā)明的有益效果在于:該方法解決了區(qū)塊鏈了沒有定時機(jī)制的問題,降低了交易廣播出去后不知何時才能被打包的不確定性,同時考慮到塊最大容量的問題,可以讓用戶選擇是否順延,滿足用戶的不同需求。

      附圖說明

      圖1為本發(fā)明所述方法的流程圖。

      具體實施方式

      本發(fā)明一種基于區(qū)塊鏈的定時交易執(zhí)行方法,如圖1所示,包括以下步驟:

      步驟1:區(qū)塊鏈從創(chuàng)世塊啟動時,設(shè)置所有高度的“定時隊列”為空,設(shè)置全鏈的“順延隊列”為空。

      1.1:隊列并不需是塊內(nèi)的實際數(shù)據(jù)存儲結(jié)構(gòu),只需是鏈的邏輯結(jié)構(gòu),可直接在內(nèi)存中緩存實現(xiàn)不存儲在鏈上。

      步驟2:節(jié)點每次啟動時,設(shè)置本地的“未處理交易池”為空。

      步驟3:用戶發(fā)起每筆交易時,指定一個“定時高度”字段,一個“是否順延”字段,并生成交易ID,然后簽名廣播。

      用戶在某高度設(shè)置定時交易前需留意,若該高度已有的“定時隊列”可能已經(jīng)超過“塊最大容量”,則后續(xù)的待執(zhí)行交易可能在執(zhí)行時被打入“順延隊列”,無法保證在設(shè)定的高度打包,可能需要修改定時高度。用戶如果希望簡單地將交易設(shè)置為立即生效,可以將“定時高度”置為0或其他較小的值。

      步驟4:節(jié)點在收到每個交易并驗證簽名后,加入本地的“未處理交易池”,并繼續(xù)廣播。

      步驟5:先按照塊物理大小或計算量限制設(shè)置“塊最大容量”,然后按照如下優(yōu)先級提取交易,并進(jìn)行打包:

      步驟5.1:節(jié)點在某“出塊高度”打包交易時,首先從當(dāng)前“出塊高度”的“定時隊列”中從頭至尾提取交易,并按照“塊最大容量”進(jìn)行打包。如果當(dāng)前高度的塊容量不足,則判斷當(dāng)前高度定時隊列中的剩余交易的“是否順延”字段,為“是”的交易加入全鏈的“順延隊列”的隊尾,為“否”的交易則不做操作。

      步驟5.2:如果當(dāng)前“出塊高度”的“定時隊列”中的交易處理完成,且塊仍有容量,則從全鏈的“順延隊列”提取交易并打包。

      步驟5.3:如果全鏈的“順延隊列”處理完了,塊仍有容量,則從“未處理交易池”提取交易并打包。如果交易的“定時高度”小于等于“出塊高度”,則打包并執(zhí)行交易;如果大于“出塊高度”,則打包但不執(zhí)行交易,并將該交易加入該“定時高度”的“定時隊列”的隊尾。

      該打包順序規(guī)則為底層協(xié)議,由于其他節(jié)點保留了相同的“定時隊列”、“順延隊列”,所以可以根據(jù)新塊的“塊最大容量”做相同順序的驗證,以決定該塊是否合法。

      此外,用戶可以發(fā)起撤銷某定時交易的“撤銷交易”,指定“待撤銷交易ID”,并簽名廣播。節(jié)點在打包“撤銷交易”時,首先根據(jù)ID找到該“待撤銷交易”,驗證其原始發(fā)起用戶和該“撤銷交易”的發(fā)起用戶一致,并且其設(shè)定的“定時高度”大于當(dāng)前“出塊高度”,則將該ID的交易從“定時隊列”中刪除,否則為非法撤銷。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1