diff --git a/docs/paper/liquidity.aux b/docs/paper/liquidity.aux index afd712c..2de8e4a 100644 --- a/docs/paper/liquidity.aux +++ b/docs/paper/liquidity.aux @@ -18,59 +18,59 @@ \providecommand\HyField@AuxAddToCoFields[2]{} \@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{4}{section.1}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Our Contributions}{6}{subsection.1.1}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {2}Preliminaries}{7}{section.2}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {3}Background}{7}{section.3}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {2}Preliminaries}{6}{section.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {3}Background}{6}{section.3}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Payment Channels \& the Lightning Network}{7}{subsection.3.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Boostrapping Problems in the Lightning Network}{10}{subsection.3.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}New Routing Node Boostrapping}{10}{subsection.3.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}New Service Boostrapping}{11}{subsection.3.4}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {3.5}End User Boostrapping}{12}{subsection.3.5}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {3.6}Market Design \& Auction Theory}{13}{subsection.3.6}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {3.7}Money Markets \& Capital Leases}{14}{subsection.3.7}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {4}Bootstrapping Problems as Solved by CLM}{15}{section.4}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Bootstrapping New Users via Sidecar Channels}{15}{subsection.4.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Boostrapping Problems in the Lightning Network}{8}{subsection.3.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}New Routing Node Boostrapping}{9}{subsection.3.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}New Service Boostrapping}{9}{subsection.3.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.5}End User Boostrapping}{11}{subsection.3.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.6}Market Design \& Auction Theory}{11}{subsection.3.6}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.7}Money Markets \& Capital Leases}{12}{subsection.3.7}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4}Bootstrapping Problems as Solved by CLM}{13}{section.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Bootstrapping New Users via Sidecar Channels}{13}{subsection.4.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Demand Fueled Routing Node Channel Selection}{13}{subsection.4.2}\protected@file@percent } \citation{autopilot} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Demand Fueled Routing Node Channel Selection}{16}{subsection.4.2}\protected@file@percent } \citation{amp} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Bootstrapping New Services to Lightning}{17}{subsection.4.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Cross-Chain Market Maker Liquidity Sourcing}{17}{subsection.4.4}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {4.5}Instant Lightning Wallet User On Boarding}{18}{subsection.4.5}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {4.6}Variance Reduction in Routing Node Revenue}{18}{subsection.4.6}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {5}The Channel Lease Marketplace}{18}{section.5}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}High-Level Description}{18}{subsection.5.1}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Auction State Machine}}{20}{figure.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Lightning Channel Leases}{22}{subsection.5.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Non-Custodial Auction Accounts}{24}{subsection.5.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Order Structure \& Verification}{25}{subsection.5.4}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.5}Auction Design}{27}{subsection.5.5}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.1}Auction Specification}{27}{subsubsection.5.5.1}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {6}The Shadowchain: A Bitcoin Overlay Application Framework}{30}{section.6}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}High-Level Description}{31}{subsection.6.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Comparison To Related Frameworks}{32}{subsection.6.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.3}The Shadowchain Framework}{32}{subsection.6.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.1}Shadowchain Orchestrator}{33}{subsubsection.6.3.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.2}Lifted UTXOs}{33}{subsubsection.6.3.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.3}The Shadowchain}{34}{subsubsection.6.3.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.4}Shadowchain Operation}{38}{subsubsection.6.3.4}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {7}Lightning Pool: A Channel Liquidity Marketplace as a Shadow Chain}{40}{section.7}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Instantiating a CLM}{40}{subsection.7.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.1.1}System Initialization}{40}{subsubsection.7.1.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.1.2}Lightning Pool Accounts}{42}{subsubsection.7.1.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.1.3}Channel Leases in the Lightning Network}{45}{subsubsection.7.1.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.1.4}Order Structure}{47}{subsubsection.7.1.4}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.1.5}Node Rating Agencies}{49}{subsubsection.7.1.5}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.1.6}Uniform Price Market Clearing \& Matching}{50}{subsubsection.7.1.6}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.1.7}The Batch Execution Transaction}{51}{subsubsection.7.1.7}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}the Lightning Pool Shadowchain}{52}{subsection.7.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.1}Lightning Pool Accounts as Lifted UTXOs}{52}{subsubsection.7.2.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.2}Auction Batch Proposal}{52}{subsubsection.7.2.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.3}Shadowchain Batch Execution}{52}{subsubsection.7.2.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.4}Unconfirmed Batch Cut-Through}{53}{subsubsection.7.2.4}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.5}Auction Upgrades}{53}{subsubsection.7.2.5}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {8}Security Analysis}{53}{section.8}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {9}Future Directions}{54}{section.9}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {10}Related Work}{54}{section.10}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {11}Conclusion}{54}{section.11}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Bootstrapping New Services to Lightning}{14}{subsection.4.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Cross-Chain Market Maker Liquidity Sourcing}{14}{subsection.4.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.5}Instant Lightning Wallet User On Boarding}{15}{subsection.4.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.6}Variance Reduction in Routing Node Revenue}{15}{subsection.4.6}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5}The Channel Lease Marketplace}{15}{section.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}High-Level Description}{15}{subsection.5.1}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Auction State Machine}}{16}{figure.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Lightning Channel Leases}{18}{subsection.5.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Non-Custodial Auction Accounts}{19}{subsection.5.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Order Structure \& Verification}{20}{subsection.5.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.5}Auction Design}{22}{subsection.5.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.1}Auction Specification}{22}{subsubsection.5.5.1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6}The Shadowchain: A Bitcoin Overlay Application Framework}{24}{section.6}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}High-Level Description}{25}{subsection.6.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Comparison To Related Frameworks}{26}{subsection.6.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3}The Shadowchain Framework}{26}{subsection.6.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.1}Shadowchain Orchestrator}{26}{subsubsection.6.3.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.2}Lifted UTXOs}{26}{subsubsection.6.3.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.3}The Shadowchain}{27}{subsubsection.6.3.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.4}Shadowchain Operation}{30}{subsubsection.6.3.4}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {7}Lightning Pool: A Channel Liquidity Marketplace as a Shadow Chain}{31}{section.7}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Instantiating a CLM}{32}{subsection.7.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.1.1}System Initialization}{32}{subsubsection.7.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.1.2}Lightning Pool Accounts}{33}{subsubsection.7.1.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.1.3}Channel Leases in the Lightning Network}{36}{subsubsection.7.1.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.1.4}Order Structure}{38}{subsubsection.7.1.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.1.5}Node Rating Agencies}{39}{subsubsection.7.1.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.1.6}Uniform Price Market Clearing \& Matching}{40}{subsubsection.7.1.6}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.1.7}The Batch Execution Transaction}{41}{subsubsection.7.1.7}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}The Lightning Pool Shadowchain}{43}{subsection.7.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.1}Lightning Pool Accounts as Lifted UTXOs}{43}{subsubsection.7.2.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.2}Auction Batch Proposal}{43}{subsubsection.7.2.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.3}Shadowchain Batch Execution}{44}{subsubsection.7.2.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.4}Unconfirmed Batch Cut-Through}{44}{subsubsection.7.2.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.5}Auction Upgrades}{44}{subsubsection.7.2.5}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {8}Security Analysis}{45}{section.8}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {9}Future Directions}{45}{section.9}\protected@file@percent } \bibstyle{abbrv} \bibdata{main} -\@writefile{toc}{\contentsline {section}{\numberline {12}Acknowledgments}{55}{section.12}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {10}Related Work}{46}{section.10}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {11}Conclusion}{46}{section.11}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {12}Acknowledgments}{46}{section.12}\protected@file@percent } diff --git a/docs/paper/liquidity.log b/docs/paper/liquidity.log index 2872a1c..eb2234d 100644 --- a/docs/paper/liquidity.log +++ b/docs/paper/liquidity.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020) (preloaded format=pdflatex 2020.10.16) 27 OCT 2020 15:01 +This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020) (preloaded format=pdflatex 2020.10.16) 27 OCT 2020 22:19 entering extended mode restricted \write18 enabled. file:line:error style messages enabled. @@ -13,8 +13,8 @@ Package: etex 2016/08/01 v2.7 eTeX basic definition package (PEB,DPC) ) (/usr/local/texlive/2020basic/texmf-dist/tex/latex/base/article.cls Document Class: article 2019/12/20 v1.4l Standard LaTeX document class -(/usr/local/texlive/2020basic/texmf-dist/tex/latex/base/size12.clo -File: size12.clo 2019/12/20 v1.4l Standard LaTeX file (size option) +(/usr/local/texlive/2020basic/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2019/12/20 v1.4l Standard LaTeX file (size option) ) \c@part=\count168 \c@section=\count169 @@ -913,22 +913,22 @@ File: umsb.fd 2013/01/14 v3.01 AMS symbols B ) [1 {/usr/local/texlive/2020basic/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] -(./liquidity.toc -Overfull \hbox (7.84819pt too wide) in paragraph at lines 34--34 - [] [][]\OT1/cmr/bx/n/12 Lightning Pool: A Chan-nel Liq-uid-ity Mar-ket-place a -s a Shadow - [] - -[2]) +(./liquidity.toc [2]) \tf@toc=\write5 \openout5 = `liquidity.toc'. - [3] [4] [5] [6] + +Overfull \hbox (102.91747pt too wide) in paragraph at lines 107--128 +\OT1/cmr/m/n/10 (cite) is the largest de-ployed Layer 2 pay-ment chan-nel net-w +ork (cite https://lightning.network/lightning- + [] + +[3] [4] [5] [6] Underfull \hbox (badness 10000) in paragraph at lines 278--291 [] -[7] + Underfull \hbox (badness 10000) in paragraph at lines 296--312 [] @@ -938,28 +938,33 @@ Underfull \hbox (badness 10000) in paragraph at lines 318--340 [] -[8] [9] [10] [11] [12] -Overfull \hbox (8.50488pt too wide) in paragraph at lines 547--563 -\OT1/cmr/m/n/12 http://www.cramton.umd.edu/papers2010-2014/cramton-market-desig -n.pdf). +[7] [8] [9] [10] +Overfull \hbox (5.72276pt too wide) in paragraph at lines 523--535 +[]\OT1/cmr/m/n/10 From the per-spec-tive of at-tempt-ing to achieve a sim-i-lar + level of user-experience [] -[13] [14] + +Overfull \hbox (5.75082pt too wide) in paragraph at lines 547--563 +\OT1/cmr/m/n/10 http://www.cramton.umd.edu/papers2010-2014/cramton-market-desig +n.pdf) for + [] + +[11] Underfull \hbox (badness 10000) in paragraph at lines 617--620 [] -[15] +[12] [13] -LaTeX Warning: Citation `autopilot' on page 16 undefined on input line 686. +LaTeX Warning: Citation `autopilot' on page 14 undefined on input line 686. -[16] -LaTeX Warning: Citation `amp' on page 17 undefined on input line 715. +LaTeX Warning: Citation `amp' on page 14 undefined on input line 715. -[17] [18] [19] [20 +[14] [15] [16 -] [21] [22] [23] [24] [25] [26] +] [17] [18] [19] [20] [21] Underfull \hbox (badness 10000) in paragraph at lines 1181--1182 [] @@ -969,7 +974,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 1187--1190 [] -[27] + Underfull \hbox (badness 10000) in paragraph at lines 1206--1209 [] @@ -980,11 +985,19 @@ Underfull \hbox (badness 10000) in paragraph at lines 1210--1215 [] +Overfull \hbox (4.5301pt too wide) in paragraph at lines 1216--1222 +[]\OT1/cmtt/m/n/10 ModifyAccount($\OT1/cmr/m/n/10 \OML/cmm/m/it/10 ; P[]$\OT1/ +cmtt/m/n/10 ) $\OMS/cmsy/m/n/10 !$ \OT1/cmr/m/n/10 ($\OML/cmm/m/it/10 b; \OT1/c +mr/m/n/10 []$). The \OT1/cmtt/m/n/10 ModifyAccount \OT1/cmr/m/n/10 al-go-rithm + takes + [] + +[22] Underfull \hbox (badness 10000) in paragraph at lines 1236--1241 [] -[28] + Underfull \hbox (badness 10000) in paragraph at lines 1242--1247 [] @@ -995,6 +1008,16 @@ Underfull \hbox (badness 10000) in paragraph at lines 1258--1261 [] +Overfull \hbox (22.78574pt too wide) in paragraph at lines 1262--1272 +[]\OT1/cmtt/m/n/10 MatchMake($\OMS/cmsy/m/n/10 f\OT1/cmr/m/n/10 ^^B[]\OML/cmm/m +/it/10 ; [] ; \OT1/cmr/m/n/10 ^^B[]\OMS/cmsy/m/n/10 g$\OT1/cmtt/m/n/10 ) $\OMS/ +cmsy/m/n/10 !$ $\OT1/cmr/m/n/10 ^^H[] = \OMS/cmsy/m/n/10 f\OT1/cmr/m/n/10 (^^B[ +]\OML/cmm/m/it/10 ; \OT1/cmr/m/n/10 ^^B[])\OML/cmm/m/it/10 ; [] ; \OT1/cmr/m/n +/10 (^^B[]\OML/cmm/m/it/10 ; \OT1/cmr/m/n/10 ^^B[])\OMS/cmsy/m/n/10 g$\OT1/cmr/ +m/n/10 . The \OT1/cmtt/m/n/10 MatchMake + [] + + Underfull \hbox (badness 10000) in paragraph at lines 1262--1272 [] @@ -1004,18 +1027,18 @@ Underfull \hbox (badness 10000) in paragraph at lines 1276--1284 [] - -Overfull \hbox (30.3216pt too wide) in paragraph at lines 1289--1299 -[]\OT1/cmtt/m/n/12 ClearMarket($\OT1/cmr/m/n/12 []\OML/cmm/m/it/12 ; \OT1/cmr/ -m/n/12 ^^H[]\OML/cmm/m/it/12 ; \OMS/cmsy/m/n/12 f\OT1/cmr/m/n/12 []\OML/cmm/m/ -it/12 ; [] ; \OT1/cmr/m/n/12 []\OMS/cmsy/m/n/12 g\OML/cmm/m/it/12 ; c[]$\OT1/c -mtt/m/n/12 ) $\OMS/cmsy/m/n/12 !$ $\OT1/cmr/m/n/12 ( []\OML/cmm/m/it/12 ; \OMS/ -cmsy/m/n/12 f\OT1/cmr/m/n/12 ^^@[]\OML/cmm/m/it/12 ; [] ; \OT1/cmr/m/n/12 ^^@[] -\OMS/cmsy/m/n/12 g\OML/cmm/m/it/12 ; \OMS/cmsy/m/n/12 f\OT1/cmr/m/n/12 []\OML/ -cmm/m/it/12 ; [] ; \OT1/cmr/m/n/12 []\OMS/cmsy/m/n/12 g\OT1/cmr/m/n/12 )$. +[23] +Overfull \hbox (18.43501pt too wide) in paragraph at lines 1289--1299 +[]\OT1/cmtt/m/n/10 ClearMarket($\OT1/cmr/m/n/10 []\OML/cmm/m/it/10 ; \OT1/cmr/ +m/n/10 ^^H[]\OML/cmm/m/it/10 ; \OMS/cmsy/m/n/10 f\OT1/cmr/m/n/10 []\OML/cmm/m/ +it/10 ; [] ; \OT1/cmr/m/n/10 []\OMS/cmsy/m/n/10 g\OML/cmm/m/it/10 ; c[]$\OT1/c +mtt/m/n/10 ) $\OMS/cmsy/m/n/10 !$ $\OT1/cmr/m/n/10 ( []\OML/cmm/m/it/10 ; \OMS/ +cmsy/m/n/10 f\OT1/cmr/m/n/10 ^^@[]\OML/cmm/m/it/10 ; [] ; \OT1/cmr/m/n/10 ^^@[] +\OMS/cmsy/m/n/10 g\OML/cmm/m/it/10 ; \OMS/cmsy/m/n/10 f\OT1/cmr/m/n/10 []\OML/ +cmm/m/it/10 ; [] ; \OT1/cmr/m/n/10 []\OMS/cmsy/m/n/10 g\OT1/cmr/m/n/10 )$. [] -[29] + Underfull \hbox (badness 10000) in paragraph at lines 1315--1319 [] @@ -1025,35 +1048,37 @@ Underfull \hbox (badness 10000) in paragraph at lines 1320--1324 [] -[30] [31] [32] -Overfull \hbox (48.66086pt too wide) in paragraph at lines 1486--1488 -[][]\OT1/cmr/bx/n/12 Definition 6.2. []\OT1/cmr/m/n/12 (Lifted UTXO). A \OT1/cm -tt/m/n/12 Lifted UTXO \OT1/cmr/m/n/12 is a tu-ple, $\OML/cmm/m/it/12 ^^^[] \OT1 -/cmr/m/n/12 = (\OML/cmm/m/it/12 A[]; T[]; P[]; P[]\OT1/cmr/m/n/12 )$, +[24] [25] +Overfull \hbox (34.69582pt too wide) in paragraph at lines 1486--1488 +[][]\OT1/cmr/bx/n/10 Definition 6.2. []\OT1/cmr/m/n/10 (Lifted UTXO). A \OT1/cm +tt/m/n/10 Lifted UTXO \OT1/cmr/m/n/10 is a tu-ple, $\OML/cmm/m/it/10 ^^^[] \OT1 +/cmr/m/n/10 = (\OML/cmm/m/it/10 A[]; T[]; P[]; P[]\OT1/cmr/m/n/10 )$, [] - -Overfull \hbox (6.85005pt too wide) in paragraph at lines 1494--1497 -\OT1/cmr/m/n/12 able to uni-lat-er-ally move the funds back to the "base" Bit-c -oin blockchain. - [] - -[33] +[26] Underfull \hbox (badness 10000) in paragraph at lines 1574--1575 [] - +[27] Underfull \hbox (badness 10000) in paragraph at lines 1580--1583 [] -[34] + Underfull \hbox (badness 10000) in paragraph at lines 1597--1601 [] +Overfull \hbox (4.87465pt too wide) in paragraph at lines 1602--1609 +[]\OT1/cmtt/m/n/10 LiftUTXO($\OML/cmm/m/it/10 T[]; \OMS/cmsy/m/n/10 f\OML/cmm/m +/it/10 U[]; [] ; U[]\OMS/cmsy/m/n/10 g\OML/cmm/m/it/10 ; P[]$\OT1/cmtt/m/n/10 ) + $\OMS/cmsy/m/n/10 !$ $\OML/cmm/m/it/10 ^^^[]$\OT1/cmr/m/n/10 . The \OT1/cmtt/m +/n/10 LiftUTXO \OT1/cmr/m/n/10 al-go-rithm takes + [] + + Underfull \hbox (badness 10000) in paragraph at lines 1602--1609 [] @@ -1068,16 +1093,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 1629--1633 [] -[35] -Overfull \hbox (3.89569pt too wide) in paragraph at lines 1649--1656 -[]$\OML/cmm/m/it/12 B[] \OT1/cmr/m/n/12 = (\OML/cmm/m/it/12 T[]; \OMS/cmsy/m/n/ -12 f\OML/cmm/m/it/12 ^^^[]; [] ; ^^^[]\OMS/cmsy/m/n/12 g\OML/cmm/m/it/12 ; \OT -1/cmr/m/n/12 ^^A[]\OML/cmm/m/it/12 ; \OMS/cmsy/m/n/12 f\OML/cmm/m/it/12 ^^^[]; -[] ; ^^^[]\OMS/cmsy/m/n/12 g\OML/cmm/m/it/12 ; U[]\OT1/cmr/m/n/12 )$, is the s -had-owchain - [] - - +[28] Underfull \hbox (badness 10000) in paragraph at lines 1658--1664 [] @@ -1087,7 +1103,14 @@ Underfull \hbox (badness 10000) in paragraph at lines 1677--1679 [] -[36] + +Overfull \hbox (1.4192pt too wide) in paragraph at lines 1680--1688 +[]\OT1/cmtt/m/n/10 CommitBlock($\OML/cmm/m/it/10 B[]$\OT1/cmtt/m/n/10 ) $\OMS/c +msy/m/n/10 !$ $\OT1/cmr/m/n/10 (\OML/cmm/m/it/10 b; TX[]\OT1/cmr/m/n/10 )$. The + \OT1/cmtt/m/n/10 CommitBlock \OT1/cmr/m/n/10 takes a valid shad-owchain + [] + + Underfull \hbox (badness 10000) in paragraph at lines 1693--1697 [] @@ -1097,18 +1120,12 @@ Underfull \hbox (badness 10000) in paragraph at lines 1698--1704 [] - +[29] Underfull \hbox (badness 10000) in paragraph at lines 1723--1728 [] -[37] [38] [39] -Overfull \hbox (3.36722pt too wide) in paragraph at lines 1838--1846 -\OT1/cmr/m/n/12 In this sec-tion, we build upon the prior sec-tions out-lin-ing - the ab-stract \OT1/cmtt/m/n/12 Channel - [] - - +[30] [31] Underfull \hbox (badness 10000) in paragraph at lines 1855--1861 [] @@ -1118,7 +1135,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 1862--1868 [] -[40] + Underfull \hbox (badness 10000) in paragraph at lines 1870--1871 [] @@ -1128,97 +1145,109 @@ Underfull \hbox (badness 10000) in paragraph at lines 1901--1908 [] -[41] +[32] Underfull \hbox (badness 10000) in paragraph at lines 1924--1931 [] -[42] +[33] Underfull \hbox (badness 10000) in paragraph at lines 2001--2007 [] -[43] [44] +[34] Underfull \hbox (badness 10000) in paragraph at lines 2060--2063 [] - +[35] Underfull \hbox (badness 10000) in paragraph at lines 2086--2092 [] -[45] [46] [47] +[36] [37] Underfull \hbox (badness 10000) in paragraph at lines 2213--2224 [] - -Overfull \hbox (25.82823pt too wide) in paragraph at lines 2253--2253 - [] - [] - -[48] +[38] Underfull \hbox (badness 10000) in paragraph at lines 2264--2271 [] -[49] -Underfull \hbox (badness 10000) in paragraph at lines 2317--2324 + +Underfull \hbox (badness 10000) in paragraph at lines 2273--2281 [] -[50] [51] [52] [53] [54] +[39] +Underfull \hbox (badness 10000) in paragraph at lines 2316--2323 + + [] + +[40] [41] +Underfull \hbox (badness 10000) in paragraph at lines 2458--2464 + + [] + +[42] [43] [44] [45] No file liquidity.bbl. -[55] -Package atveryend Info: Empty hook `BeforeClearDocument' on input line 2601. -Package atveryend Info: Empty hook `AfterLastShipout' on input line 2601. +[46] +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 2678. +Package atveryend Info: Empty hook `AfterLastShipout' on input line 2678. (./liquidity.aux) -Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 2601. -Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 2601. +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 2678. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 2678. Package rerunfilecheck Info: File `liquidity.out' has not changed. -(rerunfilecheck) Checksum: B6991DE7A350295028D8E92AB9DD4ED9;4109. +(rerunfilecheck) Checksum: 91FC0561CE4BE9C64FB5D6FC33A6E30F;4109. LaTeX Warning: There were undefined references. -Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 2601. +Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 2678. ) Here is how much of TeX's memory you used: - 22873 strings out of 482056 - 436728 string characters out of 5937674 - 1489931 words of memory out of 5000000 - 37771 multiletter control sequences out of 15000+600000 - 546404 words of font info for 79 fonts, out of 8000000 for 9000 + 22974 strings out of 482056 + 438359 string characters out of 5937674 + 1744530 words of memory out of 5000000 + 37766 multiletter control sequences out of 15000+600000 + 545019 words of font info for 74 fonts, out of 8000000 for 9000 319 hyphenation exceptions out of 8191 - 69i,22n,68p,915b,1779s stack positions out of 5000i,500n,10000p,200000b,80000s + 69i,21n,68p,915b,1764s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on liquidity.pdf (55 pages, 385594 bytes). +1/public/amsfonts/cm/cmbx6.pfb> +Output written on liquidity.pdf (46 pages, 469035 bytes). PDF statistics: - 896 PDF objects out of 1000 (max. 8388607) - 810 compressed objects within 9 object streams - 336 named destinations out of 1000 (max. 500000) + 1016 PDF objects out of 1200 (max. 8388607) + 931 compressed objects within 10 object streams + 436 named destinations out of 1000 (max. 500000) 437 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/docs/paper/liquidity.out b/docs/paper/liquidity.out index d4609ca..de8c1f5 100644 --- a/docs/paper/liquidity.out +++ b/docs/paper/liquidity.out @@ -40,7 +40,7 @@ \BOOKMARK [3][-]{subsubsection.7.1.5}{Node Rating Agencies}{subsection.7.1}% 40 \BOOKMARK [3][-]{subsubsection.7.1.6}{Uniform Price Market Clearing \046 Matching}{subsection.7.1}% 41 \BOOKMARK [3][-]{subsubsection.7.1.7}{The Batch Execution Transaction}{subsection.7.1}% 42 -\BOOKMARK [2][-]{subsection.7.2}{the Lightning Pool Shadowchain}{section.7}% 43 +\BOOKMARK [2][-]{subsection.7.2}{The Lightning Pool Shadowchain}{section.7}% 43 \BOOKMARK [3][-]{subsubsection.7.2.1}{Lightning Pool Accounts as Lifted UTXOs}{subsection.7.2}% 44 \BOOKMARK [3][-]{subsubsection.7.2.2}{Auction Batch Proposal}{subsection.7.2}% 45 \BOOKMARK [3][-]{subsubsection.7.2.3}{Shadowchain Batch Execution}{subsection.7.2}% 46 diff --git a/docs/paper/liquidity.pdf b/docs/paper/liquidity.pdf index bc7e14c..dbc2154 100644 Binary files a/docs/paper/liquidity.pdf and b/docs/paper/liquidity.pdf differ diff --git a/docs/paper/liquidity.synctex.gz b/docs/paper/liquidity.synctex.gz index 4da5bf4..7727e53 100644 Binary files a/docs/paper/liquidity.synctex.gz and b/docs/paper/liquidity.synctex.gz differ diff --git a/docs/paper/liquidity.tex b/docs/paper/liquidity.tex index 90ba7b2..5325247 100644 --- a/docs/paper/liquidity.tex +++ b/docs/paper/liquidity.tex @@ -1,6 +1,6 @@ \RequirePackage{etex} -\documentclass[12pt,a4paper]{article} +\documentclass[10pt,a4paper]{article} \usepackage{hyperref} \usepackage{amsthm} \usepackage{amsfonts} @@ -2238,7 +2238,7 @@ algorithms used in our order tagging scheme: Given these algorithms, we now define our order tag generation and validation implementations: -\begin{pchstack}[boxed,center, space=1em] +\begin{pcvstack}[boxed,center, space=1em] \procedure[syntaxhighlight=auto]{GenOrderTag($P_{acct}$, $\Theta$)}{ m \gets K_{nonce} \| V_{ver} \| P_{acct} \| \Delta_{base} \concat \Delta_{aux} \\ tag \gets \texttt{Sign$(\{\Theta.L_{pub}, \Theta.M_{pub}\dots \}, m$)} \\ @@ -2250,7 +2250,7 @@ implementations: b \gets \texttt{Verify($\{P_{acct}, P_{M_pub_0}, \dots, P_{M_pub_i} \}, m$)} \\ return b } -\end{pchstack} +\end{pcvstack} We omit the implementations of \texttt{SubmitOrder} and \texttt{CancelOrder} as the depend on the specific environment in which the auctioneer is implemented @@ -2277,7 +2277,7 @@ ratings that can be given to a Lightning Node with $\hat{t_0}$ containing words, we create a series of node sets, with the higher node tiers having less nodes than lower tiers. This creates a natural system of concentric circles where as the tier index increases, the set of nodes shrinks, and eventually -only higher quality nodes remain. +only higher quality nodes remain. \\ Building off this notion of tiered node sets, we define the following algorithm for our node rating agency: @@ -2290,8 +2290,7 @@ for our node rating agency: \end{pchstack} Given this algorithm, we now specify our of the additional auxiliary order -attribute $\Delta_{aux}$ as: -\[ +attribute $\Delta_{aux}$ as: \[ (N_{tier}, \dots) = \Delta_{aux} \] @@ -2340,10 +2339,10 @@ order $\Theta_{bid}$: Given this function we define our implementation of the \texttt{MatchMake} algorithm: \begin{pchstack}[boxed,center, space=1em] - \procedure[linenumbering,syntaxhighlight=auto, addkeywords={map, filter}]{\texttt{MatchMake(O: $\{\Theta_0, \ldots, \Theta_n\}$)}}{ + \procedure[linenumbering,syntaxhighlight=auto, addkeywords={map, filter, sort}]{\texttt{MatchMake(O: $\{\Theta_0, \ldots, \Theta_n\}$)}}{ \texttt{matchSet} \gets \{\} \\ - \texttt{asks} \gets filter(O, \Theta_{i}.O_{type} == Ask) \\ - \texttt{bids} \gets filter(O, \Theta_{i}.O_{type} == Bid) \\ + \texttt{asks} \gets sort(filter(O, \Theta_{i}.O_{type} == Ask)) \\ + \texttt{bids} \gets sort(filter(O, \Theta_{i}.O_{type} == Bid)) \\ for bid in bids: \\ \t for ask in asks: \\ \t \t if \texttt{MatchPossible(bid, ask)}: \\ @@ -2353,7 +2352,10 @@ algorithm: \end{pchstack} We note that several optimizations here are possible to reduce the worst-case -running time of the algorithm which we leave open for future work. +running time of the algorithm which we leave open for future work. We also +assume that the set of valid orders has been flittered out before being passed +into this algorithm based on the current target batch fee rate and the posted +max batch fee rate of each order. \begin{center} \textbf{Uniform Price Clearing} @@ -2373,7 +2375,34 @@ carried out: These two actions comprise the \texttt{ClearMarket} and \texttt{MarketClearingPrice} algorithms. For our market clearing price, we -select the Last Accepted Bid market clearing rule (cite). +select the Last Accepted Bid market clearing rule (cite), chosing to go with a +buery's mid marking price. Given this price clearing algorithm, we now define +our implementaion of the market clearing algorithms: +\begin{pcvstack}[boxed,center, space=1em] + \procedure[linenumbering,syntaxhighlight=auto, addkeywords={len, filter, sort}]{\texttt{MarketClearingPrice($\Phi_b$)}}{ + \texttt{lastPair} \gets \Phi_b[len(\Phi_b - 1)] \\ + return \texttt{lastPair.bid.$\alpha_{rate}$} + } + + \procedure[linenumbering,syntaxhighlight=auto, addkeywords={newLease, filter, sort}]{\texttt{ClearMarket($\Psi_{A}, \Phi_b, \{\Psi_0, \dots, \Psi_n\}, c_{price}$)}}{ + \texttt{leases} \gets \{\} \\ + \texttt{accts} \gets \{\} \\ + for \texttt{orderPair} in \Phi_b: \\ + \t \texttt{lease} \gets \texttt{newLease(orderPair)} \\ + \t \texttt{orderPair.taker.balance} \mathrel{{-}{=}} \texttt{lease.premium} \\ + \t \texttt{orderPair.maker.balance} \mathrel{{+}{=}} \texttt{lease.premium} \\ \\ + \t \texttt{orderPair.taker.balance} \mathrel{{-}{=}} \texttt{exeFee(lease.amt)} \\ + \t \texttt{orderPair.maker.balance} \mathrel{{-}{=}} \texttt{exeFee(lease.amt)} \\ + \t \texttt{$\Psi_{A}$.balance} \mathrel{{+}{=}} \texttt{exeFee(lease.amt)} \\ \\ + \t \texttt{leases} \gets \texttt{leases} \cup \texttt{lease} \\ + \t \texttt{accts[orderPair.taker]} \gets \texttt{orderPair.taker} \\ + \t \texttt{accts[orderPair.maker]} \gets \texttt{orderPair.maker} \\ \\ + return (\Psi_{A}, \texttt{leases, accts}) + } +\end{pcvstack} + +Notice that we omit the observance of chain fees, as that will be applied to +each input/output during the later batch construction phase. % matching, multi-attribute % series of matching predicates? @@ -2382,7 +2411,7 @@ select the Last Accepted Bid market clearing rule (cite). \subsubsection{The Batch Execution Transaction} -Once we've laired the market, we'll now move onto the batch execution phase. +Once we've cleared the market, we'll now move onto the batch execution phase. During this phase, we'll construct the batch transaction which executes a given batch, and also gather all the necessary witnesses for each participant of the batch so we can properly spend their on-chain account outputs. Remember @@ -2393,29 +2422,62 @@ batch before they sign off on it. \textbf{Batch Transaction Construction} \end{center} -A given batch transaction contains the following inputs: -\begin{itemize} - \item The set of trader account inputs involved in the batch. - \item The input of the master auctioneer itself. -\end{itemize} +A given batch transaction contains the following inputs: the set of trader +account inputs involved in the batch, and the input of the master auctioneer +itself. In addition to these inputs which can only eb spent each each user +authorized the proposed batch, we also add the following outputs: a trader's +new incremented account output which reflects the market clearing, the set of +channels created as part of the channel lease, and the incremented auctioneer +account. Note that the format of the batch transaction itself may change +multiple times during this phase if participants reject the batch, or if fee +changes causing the auctioneer to consider a subset of the prior set of orders. -As well as the following outputs: -\begin{itemize} - \item A trader's new incremented account output which reflects the market - clearing. - - \item The set of channels created as part of the channel lease. - - \item The incremented auctioneer account. -\end{itemize} - -We now define the complete \texttt{ConstructBatch} and \texttt{ExecuteBatch} -methods: +Taking this into consideration, we define our implementation of +\textbf{ConstructBatch} as follows: +\begin{pcvstack}[boxed,center, space=1em] + \procedure[linenumbering,syntaxhighlight=auto, addkeywords={len, newTx, sort}]{\texttt{ConstructBatch($\Delta_i$)}}{ + \texttt{tx} \gets newTx() \\ + \texttt{tx.addIn($\Delta_i.\Psi_{A}$)} \\ \\ + for acct in \Delta_i.\Psi: \\ + \t \texttt{tx.addIn(acct.prevOut)} \\ + for acct in \Delta_i.\Psi^\prime: \\ + \t \texttt{acct.Value} \mathrel{{-}{=}} \texttt{feeShare($\Delta_i$, acct)} \\ + \t \texttt{tx.addOut(acct.txOut)} \\ \\ + for lease in \Delta_i.\Gamma: + \t \texttt{tx.addOut(lease.txOut)} \\ \\ + \Psi_{A}.value \mathrel{{-}{=}} \texttt{feeShare($\Delta_i, \Psi_{A}$)} \\ + \texttt{tx.addOut($\Delta_i.\Psi_{A}^\prime$)} \\ + return tx + } +\end{pcvstack} \begin{center} \textbf{Batch Transaction Execution} \end{center} +Once the batch has been constructed, the auctioneer then needs to propose the +batch to each trader, and collect the necessary set of signatures required to +spend each trader's account input. During this execution phase, we assume that +this is the final set of traders that wish to be a part of this batch. Once the +auctioneer has all the necessary signatures to broadcast a batch, the batch +execution transaction can be broadcast, ending this auction epoch. \\ + +We define batch execution in the context of Lightning Pool as follows: +\begin{pcvstack}[boxed,center, space=1em] + \procedure[linenumbering,syntaxhighlight=auto, addkeywords={await, newTx, sort}]{\texttt{ExecuteBatch($B_{t_i}$)}}{ + b \gets 0 \\ + for i, input in B_{t_i}.inputs: \\ + \t witness \gets await reqSig(input) \\ + \t B_{t_i}.witness \gets witness \\ \\ + if \texttt{scriptVerify($B_{t_i}$)}: \\ + \t return 1 \\ + else \\ + \t return 0 + } +\end{pcvstack} + +% make this a more involved diagram? + % need to also describe side-car channel as well? % batch execution @@ -2431,7 +2493,7 @@ methods: % filll in the rest as well -\subsection{the Lightning Pool Shadowchain} +\subsection{The Lightning Pool Shadowchain} In this section, we complete the Lightning Pool system by demonstrating out its implemetnation of a Channel LEase Marketplace can be impleneted using our @@ -2444,21 +2506,26 @@ shadowchain application overlay framework. \subsubsection{Lightning Pool Accounts as Lifted UTXOs} First, we link the concept of our non-custodial accounts in the CLM realm to a -lifted UTXO. The process of lifting and unlifting a UTXO is simply a serie sof +lifted UTXO. The process of lifting and unlifting a UTXO is simply a series of operations required to create, modify or close an account: + \begin{pcvstack}[boxed,center, space=1em] - \begin{pchstack}[boxed,center, space=1em] - \procedure[linenumbering,syntaxhighlight=auto, addkeywords={map, filter}]{\texttt{LiftUTXO(O: $\{\Theta_0, \ldots, \Theta_n\}$)}}{ - } + \procedure[linenumbering,syntaxhighlight=auto, addkeywords={map, filter}]{\texttt{LiftUTXO($T_{expiry}, \{U_{N_0}, \ldots, U_{N_n}\}, P_{0}$)}}{ + \texttt{inputs} \gets \{U_{N_0}, \ldots, U_{N_n}\} \\ + return \texttt{NewAccount($T_{expiry}, P_{0}$, inputs)} + } - \procedure[linenumbering,syntaxhighlight=auto, addkeywords={map, filter}]{\texttt{UnliftUTXO(O: $\{\Theta_0, \ldots, \Theta_n\}$)}}{ - } - \end{pchstack} + \procedure[linenumbering,syntaxhighlight=auto, addkeywords={map, filter}]{\texttt{UnliftUTXO($\Psi_{U}$)}}{ + (b, _) \gets \texttt{ModifyAccount($\Psi_{U}, P_{auction_p}$)} \\ + return b + } - \begin{center} - \procedure[linenumbering,syntaxhighlight=auto, addkeywords={map, filter}]{\texttt{ExitChain(O: $\{\Theta_0, \ldots, \Theta_n\}$)}}{ - } - \end{center} + \procedure[linenumbering,syntaxhighlight=auto, addkeywords={map, filter}]{\texttt{ExitChain($\phi_{U}, B_{height}$)}}{ + if \phi_{U}.T_{blocks} < B_{height}: \\ + \t return 0 \\ + (b, _) \gets \texttt{ModifyAccount($\Psi_{U}, P_{auction_p}$)} \\ + return b + } \end{pcvstack} % compare them, state how same idea, define exit chain method, and lift+unlift @@ -2470,15 +2537,21 @@ maps 1:1 to the concept of blocks in the shadowchain domain. Given this insight, we now dfine the \texttt{ConstructBlock} and \texttt{ProposeBlock} algorithms: \begin{pchstack}[boxed,center, space=1em] - \procedure[linenumbering,syntaxhighlight=auto, addkeywords={map, filter}]{\texttt{ConstructBlock(O: $\{\Theta_0, \ldots, \Theta_n\}$)}}{ + \procedure[syntaxhighlight=auto, addkeywords={map, filter}]{\texttt{ConstructBlock($\phi_{live}, T_{xn}, E_{exe}, \Delta_F$)} $\rightarrow$}{ + \Phi_b \gets \texttt{MatchMake($T_{xn}$)} \\ + c_{price} \gets \texttt{MarketClearingPrice($\Phi_{b}$)} \\ + \texttt{ClearMarket} \gets \Delta_F \\ + \Delta_i \gets \texttt{ClearMarket($\Psi_{A}, \Phi_{b}, \Psi, c_{price}$)} \\ + return \Delta_i } - \procedure[linenumbering,syntaxhighlight=auto, addkeywords={map, filter}]{\texttt{ProposeBlock(O: $\{\Theta_0, \ldots, \Theta_n\}$)}}{ + \procedure[syntaxhighlight=auto, addkeywords={map, filter}]{\texttt{ProposeBlock($B_S, \phi_{live}$)}}{ + b \gets \texttt{ValidateBatch($B_S, \phi_{live}$)} \\ + return b } \end{pchstack} -% define server construction -% client verification of function +% need to define validate batch as well, also cast above? \subsubsection{Shadowchain Batch Execution} @@ -2487,7 +2560,9 @@ shadowchain, we now define the series of methods that will be utilized to allow clients to execute the their local version of the state transition function to accept new proposed batches: \begin{pchstack}[boxed,center, space=1em] - \procedure[linenumbering,syntaxhighlight=auto, addkeywords={map, filter}]{\texttt{CommitBlock(O: $\{\Theta_0, \ldots, \Theta_n\}$)}}{ + \procedure[linenumbering,syntaxhighlight=auto, addkeywords={map, filter}]{\texttt{CommitBlock($B_S$)}}{ + (b, TX_{id}) \gets \texttt{ExecuteBatch($B_S$)} \\ + return b } \end{pchstack} @@ -2501,7 +2576,13 @@ requires ensuring that all produced channel leases will still exist in the final combined blocks, and the end state of each accoutn refelcts any conseqeutive market clearing opportunities: \begin{pchstack}[boxed,center, space=1em] - \procedure[linenumbering,syntaxhighlight=auto, addkeywords={map, filter}]{\texttt{CoalesceBlocks(O: $\{\Theta_0, \ldots, \Theta_n\}$)}}{ + \procedure[linenumbering,syntaxhighlight=auto, addkeywords={set, filter}]{\texttt{CoalesceBlocks(F: $\{B_{S_0}, \cdots, B_{S_N}\}$)}}{ + \texttt{inputs} \gets set(F) \\ + \texttt{leases} \gets \texttt{extractLeases(F)} \\ + \texttt{accts} \gets \texttt{endAcctState(F)} \\ \\ + \texttt{tx} \gets \texttt{ConstructBatch($\Delta_i$(inputs, leases, accts))} \\ + b \gets ExecuteBatch(t) \\ + return b } \end{pchstack} @@ -2511,7 +2592,8 @@ Finally, we define the process by which we upgrade the CLM shadowchain itself. As this is an off-chain process, each participant of the shadowchain is able to call the followin algorithm to update in a de-synchronized manner: \begin{pchstack}[boxed,center, space=1em] - \procedure[linenumbering,syntaxhighlight=auto, addkeywords={map, filter}]{\texttt{UpgradeChain(O: $\{\Theta_0, \ldots, \Theta_n\}$)}}{ + \procedure[linenumbering,syntaxhighlight=auto, addkeywords={map, filter}]{\texttt{UpgradeChain($\Delta_{new}, E_{exe}^\prime, T_{xn}^\prime$)}}{ + return 0 } \end{pchstack} @@ -2554,14 +2636,6 @@ off-chain order execution, Pool has a number of attractive security properties: \section{Future Directions} -off chain order transperncy - -zkp of valid block - -linear progamming constraints for order matching - -coupon channels - As is clients verify each Shadowchain blocks within the CLM system, but they have no assurance that their order was actually included in the mach making function. In this manner, the auctioneer can silently ignore a set of orders. @@ -2582,14 +2656,17 @@ the future cash flows of the "coupon channels". \section{Conclusion} -In this work, we've put forth a new sbatraction over capital aobligations on -teh Lightning Netowkr, that we call channel leases. Channel lease can be bought -and sold on a Channle Liqudiity Marketplace diretyl solving a series of -bootrapping challenges the networkj faces. To implmenet a Channle LEase -marketpalce in a secure manner, we put forth the concetp of a shadowchain -application framework. In conjunction with the concept of a node rageting's -agency, the Channel Lease Marketplace is a new way for routing node operators -to earn yield within the Lightning Netowrk. +In this work, we've put forth a new abstraction over capital obligations in the +Lightning Network, which we call channel leases. Channel leases can be bought +and sold on a Channle Liqudiity Marketplace directly solving a series of +bootrapping challenges the network faces, commonly referred to as: the inbound +liquidity problem. To implement a Channel Lease Marketplace in a secure manner, +we put forth the concept of a shadowchain application framework which is of +independent use. We then concretely construct Lightning Pool, the first +\texttt{CLM} implemented on top of the base Bitcoin blockchain. Lightning Pool +allows those with idle capital to earn yieild on their Bitcoin, and also allows +those that need inbound to receive over the network to obtain a reliable soure +of incoming payment bandwidth. \section{Acknowledgments} diff --git a/docs/paper/liquidity.toc b/docs/paper/liquidity.toc index 048d16b..263c5ec 100644 --- a/docs/paper/liquidity.toc +++ b/docs/paper/liquidity.toc @@ -1,53 +1,53 @@ \contentsline {section}{\numberline {1}Introduction}{4}{section.1}% \contentsline {subsection}{\numberline {1.1}Our Contributions}{6}{subsection.1.1}% -\contentsline {section}{\numberline {2}Preliminaries}{7}{section.2}% -\contentsline {section}{\numberline {3}Background}{7}{section.3}% +\contentsline {section}{\numberline {2}Preliminaries}{6}{section.2}% +\contentsline {section}{\numberline {3}Background}{6}{section.3}% \contentsline {subsection}{\numberline {3.1}Payment Channels \& the Lightning Network}{7}{subsection.3.1}% -\contentsline {subsection}{\numberline {3.2}Boostrapping Problems in the Lightning Network}{10}{subsection.3.2}% -\contentsline {subsection}{\numberline {3.3}New Routing Node Boostrapping}{10}{subsection.3.3}% -\contentsline {subsection}{\numberline {3.4}New Service Boostrapping}{11}{subsection.3.4}% -\contentsline {subsection}{\numberline {3.5}End User Boostrapping}{12}{subsection.3.5}% -\contentsline {subsection}{\numberline {3.6}Market Design \& Auction Theory}{13}{subsection.3.6}% -\contentsline {subsection}{\numberline {3.7}Money Markets \& Capital Leases}{14}{subsection.3.7}% -\contentsline {section}{\numberline {4}Bootstrapping Problems as Solved by CLM}{15}{section.4}% -\contentsline {subsection}{\numberline {4.1}Bootstrapping New Users via Sidecar Channels}{15}{subsection.4.1}% -\contentsline {subsection}{\numberline {4.2}Demand Fueled Routing Node Channel Selection}{16}{subsection.4.2}% -\contentsline {subsection}{\numberline {4.3}Bootstrapping New Services to Lightning}{17}{subsection.4.3}% -\contentsline {subsection}{\numberline {4.4}Cross-Chain Market Maker Liquidity Sourcing}{17}{subsection.4.4}% -\contentsline {subsection}{\numberline {4.5}Instant Lightning Wallet User On Boarding}{18}{subsection.4.5}% -\contentsline {subsection}{\numberline {4.6}Variance Reduction in Routing Node Revenue}{18}{subsection.4.6}% -\contentsline {section}{\numberline {5}The Channel Lease Marketplace}{18}{section.5}% -\contentsline {subsection}{\numberline {5.1}High-Level Description}{18}{subsection.5.1}% -\contentsline {subsection}{\numberline {5.2}Lightning Channel Leases}{22}{subsection.5.2}% -\contentsline {subsection}{\numberline {5.3}Non-Custodial Auction Accounts}{24}{subsection.5.3}% -\contentsline {subsection}{\numberline {5.4}Order Structure \& Verification}{25}{subsection.5.4}% -\contentsline {subsection}{\numberline {5.5}Auction Design}{27}{subsection.5.5}% -\contentsline {subsubsection}{\numberline {5.5.1}Auction Specification}{27}{subsubsection.5.5.1}% -\contentsline {section}{\numberline {6}The Shadowchain: A Bitcoin Overlay Application Framework}{30}{section.6}% -\contentsline {subsection}{\numberline {6.1}High-Level Description}{31}{subsection.6.1}% -\contentsline {subsection}{\numberline {6.2}Comparison To Related Frameworks}{32}{subsection.6.2}% -\contentsline {subsection}{\numberline {6.3}The Shadowchain Framework}{32}{subsection.6.3}% -\contentsline {subsubsection}{\numberline {6.3.1}Shadowchain Orchestrator}{33}{subsubsection.6.3.1}% -\contentsline {subsubsection}{\numberline {6.3.2}Lifted UTXOs}{33}{subsubsection.6.3.2}% -\contentsline {subsubsection}{\numberline {6.3.3}The Shadowchain}{34}{subsubsection.6.3.3}% -\contentsline {subsubsection}{\numberline {6.3.4}Shadowchain Operation}{38}{subsubsection.6.3.4}% -\contentsline {section}{\numberline {7}Lightning Pool: A Channel Liquidity Marketplace as a Shadow Chain}{40}{section.7}% -\contentsline {subsection}{\numberline {7.1}Instantiating a CLM}{40}{subsection.7.1}% -\contentsline {subsubsection}{\numberline {7.1.1}System Initialization}{40}{subsubsection.7.1.1}% -\contentsline {subsubsection}{\numberline {7.1.2}Lightning Pool Accounts}{42}{subsubsection.7.1.2}% -\contentsline {subsubsection}{\numberline {7.1.3}Channel Leases in the Lightning Network}{45}{subsubsection.7.1.3}% -\contentsline {subsubsection}{\numberline {7.1.4}Order Structure}{47}{subsubsection.7.1.4}% -\contentsline {subsubsection}{\numberline {7.1.5}Node Rating Agencies}{49}{subsubsection.7.1.5}% -\contentsline {subsubsection}{\numberline {7.1.6}Uniform Price Market Clearing \& Matching}{50}{subsubsection.7.1.6}% -\contentsline {subsubsection}{\numberline {7.1.7}The Batch Execution Transaction}{51}{subsubsection.7.1.7}% -\contentsline {subsection}{\numberline {7.2}the Lightning Pool Shadowchain}{52}{subsection.7.2}% -\contentsline {subsubsection}{\numberline {7.2.1}Lightning Pool Accounts as Lifted UTXOs}{52}{subsubsection.7.2.1}% -\contentsline {subsubsection}{\numberline {7.2.2}Auction Batch Proposal}{52}{subsubsection.7.2.2}% -\contentsline {subsubsection}{\numberline {7.2.3}Shadowchain Batch Execution}{52}{subsubsection.7.2.3}% -\contentsline {subsubsection}{\numberline {7.2.4}Unconfirmed Batch Cut-Through}{53}{subsubsection.7.2.4}% -\contentsline {subsubsection}{\numberline {7.2.5}Auction Upgrades}{53}{subsubsection.7.2.5}% -\contentsline {section}{\numberline {8}Security Analysis}{53}{section.8}% -\contentsline {section}{\numberline {9}Future Directions}{54}{section.9}% -\contentsline {section}{\numberline {10}Related Work}{54}{section.10}% -\contentsline {section}{\numberline {11}Conclusion}{54}{section.11}% -\contentsline {section}{\numberline {12}Acknowledgments}{55}{section.12}% +\contentsline {subsection}{\numberline {3.2}Boostrapping Problems in the Lightning Network}{8}{subsection.3.2}% +\contentsline {subsection}{\numberline {3.3}New Routing Node Boostrapping}{9}{subsection.3.3}% +\contentsline {subsection}{\numberline {3.4}New Service Boostrapping}{9}{subsection.3.4}% +\contentsline {subsection}{\numberline {3.5}End User Boostrapping}{11}{subsection.3.5}% +\contentsline {subsection}{\numberline {3.6}Market Design \& Auction Theory}{11}{subsection.3.6}% +\contentsline {subsection}{\numberline {3.7}Money Markets \& Capital Leases}{12}{subsection.3.7}% +\contentsline {section}{\numberline {4}Bootstrapping Problems as Solved by CLM}{13}{section.4}% +\contentsline {subsection}{\numberline {4.1}Bootstrapping New Users via Sidecar Channels}{13}{subsection.4.1}% +\contentsline {subsection}{\numberline {4.2}Demand Fueled Routing Node Channel Selection}{13}{subsection.4.2}% +\contentsline {subsection}{\numberline {4.3}Bootstrapping New Services to Lightning}{14}{subsection.4.3}% +\contentsline {subsection}{\numberline {4.4}Cross-Chain Market Maker Liquidity Sourcing}{14}{subsection.4.4}% +\contentsline {subsection}{\numberline {4.5}Instant Lightning Wallet User On Boarding}{15}{subsection.4.5}% +\contentsline {subsection}{\numberline {4.6}Variance Reduction in Routing Node Revenue}{15}{subsection.4.6}% +\contentsline {section}{\numberline {5}The Channel Lease Marketplace}{15}{section.5}% +\contentsline {subsection}{\numberline {5.1}High-Level Description}{15}{subsection.5.1}% +\contentsline {subsection}{\numberline {5.2}Lightning Channel Leases}{18}{subsection.5.2}% +\contentsline {subsection}{\numberline {5.3}Non-Custodial Auction Accounts}{19}{subsection.5.3}% +\contentsline {subsection}{\numberline {5.4}Order Structure \& Verification}{20}{subsection.5.4}% +\contentsline {subsection}{\numberline {5.5}Auction Design}{22}{subsection.5.5}% +\contentsline {subsubsection}{\numberline {5.5.1}Auction Specification}{22}{subsubsection.5.5.1}% +\contentsline {section}{\numberline {6}The Shadowchain: A Bitcoin Overlay Application Framework}{24}{section.6}% +\contentsline {subsection}{\numberline {6.1}High-Level Description}{25}{subsection.6.1}% +\contentsline {subsection}{\numberline {6.2}Comparison To Related Frameworks}{26}{subsection.6.2}% +\contentsline {subsection}{\numberline {6.3}The Shadowchain Framework}{26}{subsection.6.3}% +\contentsline {subsubsection}{\numberline {6.3.1}Shadowchain Orchestrator}{26}{subsubsection.6.3.1}% +\contentsline {subsubsection}{\numberline {6.3.2}Lifted UTXOs}{26}{subsubsection.6.3.2}% +\contentsline {subsubsection}{\numberline {6.3.3}The Shadowchain}{27}{subsubsection.6.3.3}% +\contentsline {subsubsection}{\numberline {6.3.4}Shadowchain Operation}{30}{subsubsection.6.3.4}% +\contentsline {section}{\numberline {7}Lightning Pool: A Channel Liquidity Marketplace as a Shadow Chain}{31}{section.7}% +\contentsline {subsection}{\numberline {7.1}Instantiating a CLM}{32}{subsection.7.1}% +\contentsline {subsubsection}{\numberline {7.1.1}System Initialization}{32}{subsubsection.7.1.1}% +\contentsline {subsubsection}{\numberline {7.1.2}Lightning Pool Accounts}{33}{subsubsection.7.1.2}% +\contentsline {subsubsection}{\numberline {7.1.3}Channel Leases in the Lightning Network}{36}{subsubsection.7.1.3}% +\contentsline {subsubsection}{\numberline {7.1.4}Order Structure}{38}{subsubsection.7.1.4}% +\contentsline {subsubsection}{\numberline {7.1.5}Node Rating Agencies}{39}{subsubsection.7.1.5}% +\contentsline {subsubsection}{\numberline {7.1.6}Uniform Price Market Clearing \& Matching}{40}{subsubsection.7.1.6}% +\contentsline {subsubsection}{\numberline {7.1.7}The Batch Execution Transaction}{41}{subsubsection.7.1.7}% +\contentsline {subsection}{\numberline {7.2}The Lightning Pool Shadowchain}{43}{subsection.7.2}% +\contentsline {subsubsection}{\numberline {7.2.1}Lightning Pool Accounts as Lifted UTXOs}{43}{subsubsection.7.2.1}% +\contentsline {subsubsection}{\numberline {7.2.2}Auction Batch Proposal}{43}{subsubsection.7.2.2}% +\contentsline {subsubsection}{\numberline {7.2.3}Shadowchain Batch Execution}{44}{subsubsection.7.2.3}% +\contentsline {subsubsection}{\numberline {7.2.4}Unconfirmed Batch Cut-Through}{44}{subsubsection.7.2.4}% +\contentsline {subsubsection}{\numberline {7.2.5}Auction Upgrades}{44}{subsubsection.7.2.5}% +\contentsline {section}{\numberline {8}Security Analysis}{45}{section.8}% +\contentsline {section}{\numberline {9}Future Directions}{45}{section.9}% +\contentsline {section}{\numberline {10}Related Work}{46}{section.10}% +\contentsline {section}{\numberline {11}Conclusion}{46}{section.11}% +\contentsline {section}{\numberline {12}Acknowledgments}{46}{section.12}%