[發明專利]一種基于區塊鏈賬戶模型的無序交易控制方法有效
| 申請號: | 201710198966.4 | 申請日: | 2017-03-29 |
| 公開(公告)號: | CN106991607B | 公開(公告)日: | 2020-04-10 |
| 發明(設計)人: | 謝晗劍;岳利鵬 | 申請(專利權)人: | 杭州溪塔科技有限公司 |
| 主分類號: | G06Q40/04 | 分類號: | G06Q40/04 |
| 代理公司: | 杭州求是專利事務所有限公司 33200 | 代理人: | 邱啟旺 |
| 地址: | 310012 浙江省杭州市西湖區*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 區塊 賬戶 模型 無序 交易 控制 方法 | ||
技術領域
本發明涉及一種基于區塊鏈賬戶模型的無序交易控制方法,改進了現有基于賬戶模型的區塊鏈中關于有序交易的規則,添加了無序交易相關的控制規則,以及防止雙重花費相關的策略。
背景技術
區塊鏈是一種新的分布式技術,由一個個順序排列而成的交易組成塊,再由一個個順序排列而成的塊組成鏈,每個塊包含一個自增的高度作為編號,還有一個時間戳用于記載打包時間。用戶使用私鑰簽名發出的交易,廣播后由記賬節點打包進入區塊鏈存儲,記賬節點再廣播給其他只讀節點進行驗證。交易的合法性由用戶的簽名決定,用戶需要對不同的交易生成不同的簽名。
區塊鏈一般分為未花費交易輸出(UTXO)模型和賬戶(Account)模型,為了防止雙重花費,UTXO模型的方法是:一個未花費的貨幣或者狀態只允許被用作交易輸入一次。賬戶模型的方法是:為每個交易指定一個自增的數字編號,數字編號決定了交易的按序執行,中間不能跳序,相同的編號不能使用多于一次。
賬戶模型的自增數字編號方法目前還只能適應低頻的交易場景,如果用戶需要短時間內發送多筆交易,需要在客戶端自己維護多筆交易的自增交易編號,然后發送到節點后等待打包入塊。但由于區塊鏈網絡的分布式特性,交易廣播的過程中會出現亂序或丟失的情況,導致記賬節點如果發現交易不是按序增加的,會被認為是非法交易丟棄或暫緩打包。最嚴重的情況是中間某一個編號的交易丟失,則會導致后續所有交易均被丟棄或暫緩打包,客戶端又不能很快得到反饋結果,只能等待隨機的時間后重新發起丟失的交易。
發明內容
本發明的目的在于針對現有技術的不足,提供一種基于區塊鏈賬戶模型的無序交易控制方法。
本發明的目的是通過以下技術方案實現的:一種基于區塊鏈賬戶模型的無序交易控制方法,其特征在于,包括以下步驟:
步驟1:用戶按照區塊鏈協議的賬戶規則,生成地址user。
步驟2:用戶在本地客戶端生成自身已經上鏈存儲的交易ID列表user_onchain_ids,置為空,生成發送中的交易ID列表user_pending_ids,也置為空。
步驟3:記賬節點和同步節點在本地生成已上鏈存儲交易ID列表node_onchain_ids,結構為map(user=>ID列表)。記賬節點和同步節點每同步一個塊,就遍歷區塊中所有的交易,將交易對應的user和交易ID,添加入node_onchain_ids中。記賬節點生成入塊中交易ID列表node_adding_ids,結構為map(user=>ID列表)。
步驟4:用戶按照區塊鏈協議的交易ID格式,為每一筆交易生成ID,需確保該交易ID不在user_onchain_ids和user_pending_ids中,并廣播交易,同時將該交易ID添加入user_pending_ids中。
步驟5:記賬節點在出塊時,接收用戶廣播的交易,判斷交易ID是否存在于node_onchain_ids或node_adding_ids中,如果都不存在,則為合法交易,并添加該交易到node_adding_ids中,繼續后續操作,否則為雙重花費交易,做非法交易處理。
步驟6:記賬節點在完成區塊打包并廣播區塊后,將node_adding_ids中所有的交易ID分別加入到node_onchain_ids中,并清空當前塊的node_adding_ids。
步驟7:用戶實時同步區塊鏈,接收到新塊后,執行其中的交易,如果存在自己的交易,則將該交易ID從user_pending_ids中去除,并加入到user_onchain_ids中。
進一步地,所述區塊鏈協議的交易ID格式區塊鏈協議制定者設定,包括長度length和類型type。
進一步地,用戶在交易丟失或希望覆蓋user_pending_ids列表中的交易時,重復使用user_pending_ids列表中的交易ID,但仍然不能與user_onchain_ids列表中的ID重復。
進一步地,所述步驟7中,若區塊鏈分叉,需回退區塊。回退區塊時,遍歷待回退區塊中的所有交易,將交易對應的user和交易ID,從node_onchain_ids中刪除。
本發明有益效果在于:本發明采用唯一性的ID來防止雙重花費和重放攻擊,使交易不再依賴固定順序,可以采用無序的方式直接入的鏈,滿足了客戶端單賬戶高并發交易的場景需求,避免了以往丟失交易后引起其他交易被暫緩的情況。
附圖說明
圖1為總體架構示意圖。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于杭州溪塔科技有限公司,未經杭州溪塔科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710198966.4/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:交易數據處理方法及裝置
- 下一篇:用戶賬戶的管理方法、系統及服務器





