主頁 > 區塊鏈 > 區塊鏈可擴展性技術:閃電網路

區塊鏈可擴展性技術:閃電網路

2021-06-10 08:24:21 區塊鏈

哈爾濱工程大學 區塊鏈討論課
2018201125 陳曉龍
2018201204 魏金龍
參考博客/視頻:
https://www.bilibili.com/video/BV1yW411B7F5?t=16
https://www.bilibili.com/video/BV1et411d7m9?t=553
https://www.8btc.com/article/92887
https://www.zhihu.com/question/46515457
歡迎指正!

區塊鏈可擴展性技術:閃電網路

區塊鏈技術的瓶頸

區塊鏈技術發展到現在遇到一個瓶頸,就是交易吞吐量和交易速度的問題,位元幣在目前區塊大小是1MB的情況下,處理交易的能力是7筆每秒,而VISA支付處理量大約是4000筆每秒,平時我們使用的支付寶、微信等工具交易處理量也遠大于位元幣網路,交易的緩慢,會造成網路的擁堵,這樣用戶之間就會就手續費這個問題產生競爭,從而能夠盡早被礦工處理,進一步會使轉賬的手續費變的更加昂貴,這是非常不利于位元幣的普及使用的,

閃電網路

閃電網路使小額的、經常發生的在兩個用戶之間的交易可以快速地完成,不需要很長的交易確認時間,

閃電網路的核心思想

閃電網路的核心思想是,小額的和日常經常發生的交易無需發生在鏈上,這就避免了每秒處理7個交易的限制,可以很快地處理交易,所以閃電網路被稱為線下方案,
閃電網路的關鍵技術有兩個:序列到期可撤銷合約RSMC(Revocable Sequence Maturity Contract)、哈希時間鎖定合約HTLC(Hashed Timelock Contract),

RSMC

下面通過一個簡單的例子來闡述一下閃電網路的整個作業程序,

每天早上上課的時候我都會從宿舍旁邊買早餐,假設我使用位元幣付款,想象一下我會遇到什么麻煩,第一個是我需要等待很長的時間,讓位元幣網路確認我的交易,這樣我買一個早餐都要等上一個小時或更長時間,我就也不用上課了,可以直接吃午飯了,第二個是,我買一個早餐可能只需要0.00005 BTC,對于這種小額付款,手續費都可能比付款高,

那怎么解決呢?

我想向買早餐的大媽賒賬,每個月結一次帳,這樣我所有交易的處理時間都集中在一次交易上,手續費也只需要付一次交易的手續費,

大媽卻是想讓我直接預付,將一整個月的帳在月初提前支付,

其實我們都是無法相信彼此的,大媽怕我突然某天不來了賴賬,我怕大媽哪天拿著我的錢跑路了,所以我們都無法說服對方讓對方來使用我們的方案,

RSMC的解決方案是:

借助閃電網路,我與大媽之間可以建立一個支付通道,要實作這個通道,我們都要把一些位元幣發送到一個多重簽名地址,這個通道需要我們雙方的共同的簽名才能建立,同時建立一個賬單,這個支付通道是建立在主鏈之上的,所有人都可以看到,

比如我發送了0.001 BTC、大媽發送了0 BTC(可以發送0,因為大媽不需要付款)到這個多重簽名地址,如下圖所示,

當我每天消費的時候,我只要對賬單進行修改即可,如下圖所示,

需要注意的是,修改賬單之后,前面的賬單應該是被舍棄的,應用的永遠都是最新的賬單,
我們兩個人應該都是有權力去結束這個通道的,這個通道被結束的時候,最后的賬單會被上傳到多重簽名地址中,然后主鏈會將我們兩個之間的賬單進行處理,

我們發現整個程序只會有兩次在主鏈上的交易,

在這個程序中,我們可以發現兩個安全性問題,以下面賬單為例,

在這里插入圖片描述

  1. 不合作

    我們兩個人應該都有權力去結束這個通道的,因為如果大媽想結束通道,結賬,而我始終拒絕的話,賬單就遲遲不能被主鏈所處理,但是當前的賬單是只有一個賬單,提交賬單必須要兩個人同意才行,我們應該合理地改變資料結構,使我們兩個人都能獨立地結束這個通道,

  2. 舊版本

    我們在解決上面一個問題之后,我們兩個人都能獨立結束通道,但這就會引出一個新的問題,賬單最終的版本應該是4號賬單,我獨立結束通道,提交1號賬單到主鏈上,那就相當于白嫖了所有的早餐,這個問題也必須要解決,舊版本必須在有新版本之后被廢除,

接下來我們來看RSMC是如何解決兩個問題的,

通道建立

RSMC創建

通道建立只需要雙方在鏈下準備一套類似上圖的交易結構,完成后僅將funding交易發布到區塊鏈上即可,
交易圖中帶有尖括號的簽名表示待填入,

流程如下:

  1. 雙方各拿出0.5 BTC構造Funding Tx,Funding Tx需要Alice和Bob的多重簽名,此時,兩個人都未簽名,不廣播,
  2. Alice構造Commitment Tx,包括C1a和RD1a,并交給Bob簽名,Bob簽名后再發送給Alice,C1a有兩個輸出,第一個輸出為多重簽名地址,第二個輸出為Bob 0.5 BTC,Bob構造Commitment Tx,包括C1b和RD1b,并交給Alice簽名,C1b的結構與C1a類似,
  3. C1a的第一個輸出為RD1a,這個交易需要Alice2和Bob的同時簽名,會輸出給Alice 0.5 BTC,此型別交易帶有seq,seq=1000表示交易RD1a只能在包含其父交易C1a的區塊得到1000個確認后才能被收錄,

不合作

上面的交易結構其實就可以解決不合作的問題,

這套交易結構是完全準備就緒的一套結構,Funding Tx要提交到區塊鏈上,只需要Alice和Bob的私鑰簽名,

如果Alice想要單方面結束通道:因為C1a中Bob已經簽過名,所以Alice只要在C1a上用自己的私鑰簽名,然后就可以在區塊鏈上發布交易C1a,這時候seq就會起作用,seq=1000,那么Alice必須等C1a被收錄并得到1000個確認之后才能發布交易RD1a,這個輸出的分配是給Alice 0.5 BTC,而第二個輸出則是立即會給Bob分配 0.5 BTC,也就說,單方面結束交易通道的一方會受到延遲提款的懲罰,這個機制也為解決“舊版本”問題提供了基礎,

交易更新

交易更新

如果Alice從Bob那里買了0.1 BTC的商品,那么通道的余額分配就會發生改變,變成Alice :0.4 BTC,Bob:0.6 BTC,Alice和Bob會構建新的Commitment Tx,分別是上圖的C2a、RD2a,C2b、RD1b,

那么上面提到的**“舊版本”**的問題怎么解決呢?

RSMC采用的方法非常巧妙,

舊版本問題 在創建C2a,C2b之后,Alice和Bob會交換Alice2與Bob2的私鑰,就意味著他們都放棄了C1a,C1b,

如果說Alice想要提交舊版本的C1a來賴賬,Alice在C1a上補完自己的簽名,發布到區塊鏈上,因為RD1a需要有1000個確認,也就是大約10000分鐘的時間,7天的時間,才能收到分配給自己的0.5 BTC,但是Bob將會立馬看到被廢除的C1a被發布,而且他已經有了Alice2 的私鑰,那么他就會立馬發布交易塊BR1a,交易塊的內容是把原本分配給Alice的0.5 BTC也分配給自己,那么這1.0 BTC就全是Bob的了,因為BR1a中沒有seq=1000的限制,而且他的父交易已經被放出,這個交易塊會立即執行,Bob會很快收到0.5 BTC,這樣,如果Alice敢這樣干,她會有很大的損失,這個措施也正好照應了RSMC的含義——序列到期可撤銷合約,

需要說明的是,在正常的情況下,如果C1a沒有提交,Bob雖然有Alice2 的私鑰,但是他沒有Alice 的私鑰,所以就無法提交C1a這個賬單,也就無法發布BR1a,所以對雙方來說都是安全的,

HTLC

參考
https://www.8btc.com/article/92887

協議內容

我們還會發現一個問題,這個支付通道是建立在兩個人之間的,那么我每次與一個人交易,都要新建立一個新的交易通道,

在閃電網路中,我們并不需要這樣做,我們可以利用閃電網路來傳遞 BTC,也就是說如果你想與Bob進行一次交易,但是與他之間沒有交易通道,而你和Bob都和Charlie有交易通道,那么你們就可以通過Charlie來進行交易了,如下圖所示
中轉交易

這個中轉交易就要使用哈希時間鎖定合約(HTLC)來實作了,

通過HTLC,Alice和Bob可以達成這樣一個協議:協議將鎖定Alice的0.1 BTC,在時刻T到來之前(T以未來的某個區塊鏈高度表述),如果Bob能夠向Alice出示一個適當的R(稱為秘密),使得R的哈希值等于事先約定的值H(R),Bob就能獲得這0.1 BTC;如果直到時刻T過去Bob仍然未能提供一個正確的R,這0.1 BTC將自動解凍并歸還Alice,

實體

接下來來看一個例子,

在這里插入圖片描述

Alice想要支付Dave 0.05BTC,但他們之間沒有支付通道,Alice找到了通過Bob、Carol到達Dave的一個通道,

Dave生成一個秘密R并將Hash(R)發送給Alice,Alice不需要知道R,

Alice和Bob商定一個HTLC合約:只要Bob能在3天內向Alice出示哈希正確的R,Alice會支付Bob 0.052 BTC;如果Bob做不到這點,這筆錢3天后自動退還Alice,

同樣地,Bob和Carol商定一個HTLC合約:只要Carol能在2天內向Bob出示哈希正確的R,Bob會支付Carol 0.051 BTC;如果Carol做不到這點,這筆錢到期自動退還Bob,

最后,Carol和Dave商定一個HTLC合約:只要Dave能在1天內向Carol出示哈希正確的R,Carol會支付Dave 0.05 BTC;如果Dave做不到這點,這筆錢到期自動退還Carol,

一切就緒后,Dave及時向Carol披露R并拿到0.05 BTC;現在Carol知道了R,她可以向Bob出示密碼R并拿到0.051 BTC(差額部分的0.001 BTC成了Carol的傭金);Bob知道R后當然會向Alice出示并拿到他的那份0.052 BTC,差額部分的0.001 BTC成了Bob的傭金,

在這里插入圖片描述

整個程序很容易理解,最終效果是Alice支付了0.052 BTC,Dave安全地拿到0.05 BTC,整個閃電支付網路為此收取的傭金成本是0.002 BTC,上述程序中的全部動作都發生在位元幣區塊鏈之外,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/286444.html

標籤:區塊鏈

上一篇:【swarm測驗極簡指南】如何獲得bzz獎勵?0.6.2版本手動安裝指南

下一篇:go 語言開發環境如何搭建?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • JAVA使用 web3j 進行token轉賬

    最近新學習了下區塊鏈這方面的知識,所學不多,給大家分享下。 # 1. 關于web3j web3j是一個高度模塊化,反應性,型別安全的Java和Android庫,用于與智能合約配合并與以太坊網路上的客戶端(節點)集成。 # 2. 準備作業 jdk版本1.8 引入maven <dependency> < ......

    uj5u.com 2020-09-10 03:03:06 more
  • 以太坊智能合約開發框架Truffle

    前言 部署智能合約有多種方式,命令列的瀏覽器的渠道都有,但往往跟我們程式員的風格不太相符,因為我們習慣了在IDE里寫了代碼然后打包運行看效果。 雖然現在IDE中已經存在了Solidity插件,可以撰寫智能合約,但是部署智能合約卻要另走他路,沒辦法進行一個快捷的部署與測驗。 如果團隊管理的區塊節點多、 ......

    uj5u.com 2020-09-10 03:03:12 more
  • 谷歌二次驗證碼成為區塊鏈專用安全碼,你怎么看?

    前言 谷歌身份驗證器,前些年大家都比較陌生,但隨著國內互聯網安全的加強,它越來越多地出現在大家的視野中。 比較廣泛接觸的人群是國際3A游戲愛好者,游戲盜號現象嚴重+國外賬號安全應用廣泛,這類游戲一般都會要求用戶系結名為“兩步驗證”、“雙重驗證”等,平臺一般都推薦用谷歌身份驗證器。 后來區塊鏈業務風靡 ......

    uj5u.com 2020-09-10 03:03:17 more
  • 密碼學DAY1

    目錄 ##1.1 密碼學基本概念 密碼在我們的生活中有著重要的作用,那么密碼究竟來自何方,為何會產生呢? 密碼學是網路安全、資訊安全、區塊鏈等產品的基礎,常見的非對稱加密、對稱加密、散列函式等,都屬于密碼學范疇。 密碼學有數千年的歷史,從最開始的替換法到如今的非對稱加密演算法,經歷了古典密碼學,近代密 ......

    uj5u.com 2020-09-10 03:03:50 more
  • 密碼學DAY1_02

    目錄 ##1.1 ASCII編碼 ASCII(American Standard Code for Information Interchange,美國資訊交換標準代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,并等同于國際標準ISO/IE ......

    uj5u.com 2020-09-10 03:04:50 more
  • 密碼學DAY2

    ##1.1 加密模式 加密模式:https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html ECB ECB : Electronic codebook, 電子密碼本. 需要加密的訊息按照塊密碼的塊大小被分為數個塊,并對每個塊進 ......

    uj5u.com 2020-09-10 03:05:42 more
  • NTP時鐘服務器的特點(京準電子)

    NTP時鐘服務器的特點(京準電子) NTP時鐘服務器的特點(京準電子) 京準電子官V——ahjzsz 首先對時間同步進行了背景介紹,然后討論了不同的時間同步網路技術,最后指出了建立全球或區域時間同步網存在的問題。 一、概 述 在通信領域,“同步”概念是指頻率的同步,即網路各個節點的時鐘頻率和相位同步 ......

    uj5u.com 2020-09-10 03:05:47 more
  • 標準化考場時鐘同步系統推進智能化校園建設

    標準化考場時鐘同步系統推進智能化校園建設 標準化考場時鐘同步系統推進智能化校園建設 安徽京準電子科技官微——ahjzsz 一、背景概述隨著教育事業的快速發展,學校建設如雨后春筍,隨之而來的學校教育、管理、安全方面的問題成了學校管理人員面臨的最大的挑戰,這些問題同時也是學生家長所擔心的。為了讓學生有更 ......

    uj5u.com 2020-09-10 03:05:51 more
  • 位元幣入門

    引言 位元幣基本結構 位元幣基礎知識 1)哈希演算法 2)非對稱加密技術 3)數字簽名 4)MerkleTree 5)哪有位元幣,有的是UTXO 6)位元幣挖礦與共識 7)區塊驗證(共識) 總結 引言 上一篇我們已經知道了什么是區塊鏈,此篇說一下區塊鏈的第一個應用——位元幣。其實先有位元幣,后有的區塊 ......

    uj5u.com 2020-09-10 03:06:15 more
  • 北斗對時服務器(北斗對時設備)電力系統應用

    北斗對時服務器(北斗對時設備)電力系統應用 北斗對時服務器(北斗對時設備)電力系統應用 京準電子科技官微(ahjzsz) 中國北斗衛星導航系統(英文名稱:BeiDou Navigation Satellite System,簡稱BDS),因為是目前世界范圍內唯一可以大面積提供免費定位服務的系統,所以 ......

    uj5u.com 2020-09-10 03:06:20 more
最新发布
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:46:47 more
  • Hyperledger Fabric 使用 CouchDB 和復雜智能合約開發

    在上個實驗中,我們已經實作了簡單智能合約實作及客戶端開發,但該實驗中智能合約只有基礎的增刪改查功能,且其中的資料管理功能與傳統 MySQL 比相差甚遠。本文將在前面實驗的基礎上,將 Hyperledger Fabric 的默認資料庫支持 LevelDB 改為 CouchDB 模式,以實作更復雜的資料... ......

    uj5u.com 2023-04-16 07:28:31 more
  • .NET Core 波場鏈離線簽名、廣播交易(發送 TRX和USDT)筆記

    Get Started NuGet You can run the following command to install the Tron.Wallet.Net in your project. PM> Install-Package Tron.Wallet.Net 配置 public reco ......

    uj5u.com 2023-04-14 08:08:00 more
  • DKP 黑客分析——不正確的代幣對比率計算

    概述: 2023 年 2 月 8 日,針對 DKP 協議的閃電貸攻擊導致該協議的用戶損失了 8 萬美元,因為 execute() 函式取決于 USDT-DKP 對中兩種代幣的余額比率。 智能合約黑客概述: 攻擊者的交易:0x0c850f,0x2d31 攻擊者地址:0xF38 利用合同:0xf34ad ......

    uj5u.com 2023-04-07 07:46:09 more
  • Defi開發簡介

    Defi開發簡介 介紹 Defi是去中心化金融的縮寫, 是一項旨在利用區塊鏈技術和智能合約創建更加開放,可訪問和透明的金融體系的運動. 這與傳統金融形成鮮明對比,傳統金融通常由少數大型銀行和金融機構控制 在Defi的世界里,用戶可以直接從他們的電腦或移動設備上訪問廣泛的金融服務,而不需要像銀行或者信 ......

    uj5u.com 2023-04-05 08:01:34 more
  • solidity簡單的ERC20代幣實作

    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "hardhat/console.sol"; //ERC20 同質化代幣,每個代幣的本質或性質都是相同 //ETH 是原生代幣,它不是ERC20代幣, ......

    uj5u.com 2023-03-21 07:56:29 more
  • solidity 參考型別修飾符memory、calldata與storage 常量修飾符C

    在solidity語言中 參考型別修飾符(參考型別為存盤空間不固定的數值型別) memory、calldata與storage,它們只能修飾參考型別變數,比如字串、陣列、位元組等... memory 適用于方法傳參、返參或在方法體內使用,使用完就會清除掉,釋放記憶體 calldata 僅適用于方法傳參 ......

    uj5u.com 2023-03-08 07:57:54 more
  • solidity注解標簽

    在solidity語言中 注釋符為// 注解符為/* 內容*/ 或者 是 ///內容 注解中含有這幾個標簽給予我們使用 @title 一個應該描述合約/介面的標題 contract, library, interface @author 作者的名字 contract, library, interf ......

    uj5u.com 2023-03-08 07:57:49 more
  • 評價指標:相似度、GAS消耗

    【代碼注釋自動生成方法綜述】 這些評測指標主要來自機器翻譯和文本總結等研究領域,可以評估候選文本(即基于代碼注釋自動方法而生成)和參考文本(即基于手工方式而生成)的相似度. BLEU指標^[^?88^^?^]^:其全稱是bilingual evaluation understudy.該指標是最早用于 ......

    uj5u.com 2023-02-23 07:27:39 more
  • 基于NOSTR協議的“公有制”版本的Twitter,去中心化社交軟體Damus

    最近,一個幽靈,Web3的幽靈,在網路游蕩,它叫Damus,這玩意詮釋了什么叫做病毒式營銷,滑稽的是,一個Web3產品卻在Web2的產品鏈上瘋狂傳銷,各方大佬紛紛為其背書,到底發生了什么?Damus的葫蘆里,賣的是什么藥? 注冊和簡單實用 很少有什么產品在用戶注冊環節會有什么噱頭,但Damus確實出 ......

    uj5u.com 2023-02-05 06:48:39 more