<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by online dreaming on Medium]]></title>
        <description><![CDATA[Stories by online dreaming on Medium]]></description>
        <link>https://medium.com/@akumaigorodski?source=rss-28b19bf3fec8------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*DPP8wKMnmmNsEy4_2qKEUw.jpeg</url>
            <title>Stories by online dreaming on Medium</title>
            <link>https://medium.com/@akumaigorodski?source=rss-28b19bf3fec8------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 21:46:41 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@akumaigorodski/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Multipart Payments]]></title>
            <link>https://medium.com/@akumaigorodski/multipart-payments-647cdf5cc15a?source=rss-28b19bf3fec8------2</link>
            <guid isPermaLink="false">https://medium.com/p/647cdf5cc15a</guid>
            <category><![CDATA[lightning-network]]></category>
            <category><![CDATA[bitcoin]]></category>
            <dc:creator><![CDATA[online dreaming]]></dc:creator>
            <pubDate>Wed, 03 Apr 2019 08:06:23 GMT</pubDate>
            <atom:updated>2019-04-03T08:27:24.568Z</atom:updated>
            <content:encoded><![CDATA[<iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FM9YlHc9PNVw%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DM9YlHc9PNVw&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FM9YlHc9PNVw%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="640" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/7e94ae97df3b18baa69ceb418b7a709a/href">https://medium.com/media/7e94ae97df3b18baa69ceb418b7a709a/href</a></iframe><blockquote>Here I have 3 channels, the largest of them has a capacity of 2 000 000 SAT. Then I get a 3 000 000 SAT multipart invoice which gets split into 5 smaller payments. When attempting to make a final partial payment there is a need for rebalancing so <a href="https://medium.com/@akumaigorodski/automatic-iterative-rebalancing-e9c6216969aa">AIR</a> is carried out automatically before proceeding further.</blockquote><p>Place to try it out: <a href="http://b.lightning-wallet.com/multipart/">http://b.lightning-wallet.com/multipart/</a>.</p><p>Wallet which supports this on TestNet: <a href="https://play.google.com/store/apps/details?id=com.lightning.wallet&amp;hl=en">BLW</a> v0.3–116 at Google Play or <a href="https://github.com/btcontract/lnwallet/blob/testnet2/app/app-release.apk">direct APK download</a>.</p><p>Technical description: <a href="https://github.com/btcontract/lnurl-rfc/blob/master/spec.md#5-multipart-payments">LNURL</a>.</p><p>Besides atomicity AMP idea has a useful property of single payment being split into a bunch of smaller transactions, because once divided a large payment has way better delivery chances.</p><p>Furthermore, atomicity itself is often not required and partially fulfilled payments are sometimes more preferable to atomic ones. For example, consider a case when someone refills a balance on a lightning-enabled site using non-atomic 5-part payment: even if only 1 part is successful that is still better than nothing at all.</p><p>Therefore, it makes sense to enable payments which can be broken into smaller parts but are not atomic. As of update 0.3–116 <a href="https://play.google.com/store/apps/details?id=com.lightning.wallet&amp;hl=en">BLW</a> supports such a scheme on TestNet and it works as follows:</p><ol><li>When generating an LN invoice payee software embeds a special <em>multipart</em> <a href="https://github.com/btcontract/lnurl-rfc/blob/master/spec.md#5-multipart-payments">LNURL</a> tag which contains a callback URI. An effect of this is multipart-enabled wallets now recognize this possibility while other wallets just see a usual LN payment request.</li><li>Wallet asks user permission to split a payment in case if sending it in one piece has failed or if no single channel has enough balance to handle it.</li><li>Once accepted wallet calls an embedded URI and gets a JSON response which contains additional invoices, it then proceeds with spreading total payment amount across these invoices and fulfilling them one at a time.</li></ol><p>My hope is that multipart/AIR/AMP combined with unbounded channels have a potential to solve current liquidity issues for good.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=647cdf5cc15a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Automatic Iterative Rebalancing]]></title>
            <link>https://medium.com/@akumaigorodski/automatic-iterative-rebalancing-e9c6216969aa?source=rss-28b19bf3fec8------2</link>
            <guid isPermaLink="false">https://medium.com/p/e9c6216969aa</guid>
            <category><![CDATA[bitcoin]]></category>
            <category><![CDATA[lightning-network]]></category>
            <dc:creator><![CDATA[online dreaming]]></dc:creator>
            <pubDate>Wed, 06 Mar 2019 15:19:14 GMT</pubDate>
            <atom:updated>2019-03-21T14:28:16.905Z</atom:updated>
            <content:encoded><![CDATA[<iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fhnc6GwfzFls%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dhnc6GwfzFls&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fhnc6GwfzFls%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="640" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/a32ceb86c69c616fcbd3ea3281e447e5/href">https://medium.com/media/a32ceb86c69c616fcbd3ea3281e447e5/href</a></iframe><p>If there are many open channels but none of them has enough balance to fulfill an invoice on its own then wallet may simply send a bunch of payments to itself in order to achieve a required capacity in one selected channel, and then pay through it.</p><p>This idea is <a href="https://twitter.com/renepickhardt/status/1102481472643129344">not</a> <a href="https://twitter.com/bitconner/status/1102703057173864449">new</a> but to the best of my knowledge it has not been implemented anywhere up until now. I abbreviate it as AIR and BLW will support it as of 0.03–112 update. Here’s how it works:</p><ul><li>When user scans an invoice wallet checks if it can be fulfilled using any of currently present channels, if such channel is found then it’s going to be an ordinary off-chain payment.</li><li>If no single fitting channel is found but invoice can still be fulfilled by combining multiple balances then wallet initiates an AIR before ultimately fulfilling an invoice.</li><li>Once AIR is started wallet selects one accumulator channel and sends a payment from other local channel into selected one. Wallet does this automatically and iteratively since reaching a required balance may need multiple payments from different channels.</li></ul><h3>How does AIR compare to AMP?</h3><p>AIR solves a similar problem and does have some pros and cons when compared to proposed AMP methods. According to <a href="https://lightningwiki.net/index.php/AMP">https://lightningwiki.net/index.php/AMP</a> there are three AMP flavors of which two seem realistic: OG AMP and Base AMP.</p><h4>How do they treat delivery failure</h4><p>OG AMP is truly atomic: either recipient gets all payment parts and reconstructs a preimage or they don’t and the whole combined payment fails.</p><p>Base AMP is “economically atomic”, that is, recipient is incentivized to wait for all payment parts to arrive before fulfilling it but underpaid payments may happen if some parts fail along the way and sorting this out may be messy.</p><p>AIR is not atomic at all but this is fine because recipient and sender is the same person. If rebalancing iteration fails you simply get the funds back, and you are free to start another AIR attempt any time.</p><h4>OG AMP removes an invoice and it’s not always good thing</h4><p>Signed payment request and preimage as proof-of-payment simply do not exist here. This is often fine but when one purchases some kind of service I’d argue it’s not since one would want to have a proof that service has been paid for just in case if anything goes wrong.</p><p>Both Base AMP and AIR keep a signed invoice in place, it can be said they are equal in this regard.</p><h4>AIR is limited by channel capacity, AMP has better delivery chances</h4><p>Since AIR results in an single off-chain payment it can’t be used to send more than a single largest channel capacity allows to. Also it’s easier to deliver a few small payments rather than a big one.</p><p>For this reasons AIR can’t be treated as full AMP replacement but rather as a method which wallet should prefer when requested payment sum is relatively low, otherwise AMP should be used.</p><p>For those interested, here’s an in-depth link and discussion about how the same idea can be applied to routing nodes: <a href="https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-March/001891.html">https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-March/001891.html</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e9c6216969aa" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Instant channels enable safe Lightning payments with unconfirmed funding]]></title>
            <link>https://medium.com/@akumaigorodski/instant-channels-enable-safe-lightning-payments-with-unconfirmed-funding-8d640defa183?source=rss-28b19bf3fec8------2</link>
            <guid isPermaLink="false">https://medium.com/p/8d640defa183</guid>
            <category><![CDATA[lightning-network]]></category>
            <category><![CDATA[bitcoin]]></category>
            <dc:creator><![CDATA[online dreaming]]></dc:creator>
            <pubDate>Sun, 10 Feb 2019 11:20:49 GMT</pubDate>
            <atom:updated>2019-02-10T11:20:49.941Z</atom:updated>
            <content:encoded><![CDATA[<iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FxHOOr0AFwZs%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DxHOOr0AFwZs&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FxHOOr0AFwZs%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="640" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/19b804455165cde3505e871d11bf398c/href">https://medium.com/media/19b804455165cde3505e871d11bf398c/href</a></iframe><h4>Try it on TestNet right now: <a href="https://lightning-wallet.com/instant/">https://lightning-wallet.com/instant/</a></h4><h4>What is going on?</h4><p>When channel is funded in a special way an amount present in it can be spent <em>immediately</em>, without waiting for a funding transaction to become confirmed. This introduces no additional risks to either channel side, can be standardized with minor Lightning protocol changes and works on TestNet today.</p><p>This idea was brought to me by <a href="https://medium.com/u/f27442469ad8">Kixunil</a> and the gist is: if Bob the funder decides to push a certain amount to Alice the fundee on channel opening then pushed amount can be spent by Alice right away.</p><p>Pushing is essentially giving money away for free as far as LN protocol is concerned, an example: if total channel capacity is <strong>1 BTC</strong> and Bob decides to push <strong>0.5 BTC</strong> to Alice then initial channel funds distribution would be <strong>(0.5 Alice / 0.5 Bob)</strong>.</p><h4>Why would Bob do this?</h4><p>Pushing may sound obscure but it’s in fact surprisingly applicable to a wide range of real-life scenarios, a few examples:</p><ul><li>Alice gives fiat to Bob in person and thus purchases an incoming channel with converted amount in BTC pushed to her.</li><li>Alice redeems a voucher online and orders an incoming channel with voucher value pushed to her.</li><li>Alice the trader withdraws her exchange balance in a form of new <strong>Alice / Exchange</strong> channel with balance once again pushed to her.</li></ul><p>This “special” case is so ubiquitous it may eventually become <em>the</em> way to use Lightning Network for end users.</p><h4>Why is immediate spending from such a channel safe?</h4><p>From Alice perspective, the pushed off-chain funds she has in an unconfirmed channel are not really her funds until a funding transaction gets included in a block. So, if anything, Alice has an incentive to spend these funds off-chain while they are unconfirmed on-chain.</p><p>From Bob perspective, he owes a pushed amount to Alice until a channel gets confirmed on-chain so he should not mind Alice spending these funds off-chain before that happens and thus clearing Bob’s debt.</p><p>Now, the central issue: what if a funding transaction gets thrown out of mempool eventually, would not Bob incur a financial loss if Alice manages to spend pushed amount off-chain before that? The answer is no, he would not, let’s analyze this edge case step by step:</p><ol><li>Alice pays <strong>0.5 BTC</strong> to Bob with fiat, Bob opens a <strong>1 BTC</strong> channel to Alice and pushes <strong>0.5 BTC</strong> to her, so initial distribution is <strong>(0.5 Alice / 0.5 Bob).</strong></li><li>Bob already has a <strong>(0.6 Bob / 0.4 Carol)</strong> channel and Alice pays <strong>0.1 BTC</strong> to Carol through Bob, so both channel states are updated and new distribution is <strong>(0.4 Alice / 0.6 Bob), (0.5 Bob / 0.5 Carol)</strong>.</li><li><strong>Alice / Bob</strong> channel funding hangs in a mempool for weeks and eventually gets thrown out so there is no more an on-chain basis for their channel, so it gets removed from their wallets. Bob has lost <strong>0.1 BTC</strong> in <strong>Bob / Carol</strong> channel while gained nothing in a by-now non-existing <strong>Alice / Bob</strong> channel, but Bob still has fiat which Alice gave him so effectively he now owes <strong>0.4 BTC</strong> to Alice which he can refund or utilize while opening a new channel to Alice.</li></ol><h4>Can this be extended to a full blown trustless case?</h4><p>Sort of yes, here’s how: Alice and Bob create a special non-RBF funding transaction which has two outputs:</p><ul><li>First output is a <strong>0.5 BTC</strong> P2WPKH transfer from Alice to Bob, this is her paying to Bob for opening of channel with a pushed amount.</li><li>Second output is <strong>1 BTC</strong> channel funding from Bob with <strong>0.5 BTC</strong> pushed to Alice off-chain.</li></ul><p>Unlike previous case, here Bob does take risks if Alice spends her pushed amount off-chan and funding gets thrown out of mempool eventually, but Bob can always CPFP a first output if transaction starts hanging in mempool for a long time or if double spend is detected.</p><h4>Is it hard to implement this?</h4><p>Not at all, the <a href="https://github.com/lightningnetwork/lightning-rfc/issues/565#issuecomment-460601680">currently proposed way</a> is just a matter of introducing a new <em>turbo</em> bit in channel flags which would allow funder to signal an operational channel state once funding is broadcasted and fundee to accept it once it sees a funding in a mempool.</p><p><a href="https://github.com/btcontract/eclair/commits/turbo-channels-demo">Eclair implementation</a> (please don’t use it on MainNet yet).</p><p><a href="https://github.com/btcontract/lnwallet/tree/testnet">BLW implementation</a> for TestNet.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8d640defa183" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Watchtower support is coming to Bitcoin Lightning Wallet]]></title>
            <link>https://medium.com/@akumaigorodski/watchtower-support-is-coming-to-bitcoin-lightning-wallet-8f969ac206b2?source=rss-28b19bf3fec8------2</link>
            <guid isPermaLink="false">https://medium.com/p/8f969ac206b2</guid>
            <category><![CDATA[watchtower]]></category>
            <category><![CDATA[bitcoin]]></category>
            <category><![CDATA[lightning-network]]></category>
            <dc:creator><![CDATA[online dreaming]]></dc:creator>
            <pubDate>Wed, 10 Oct 2018 08:26:40 GMT</pubDate>
            <atom:updated>2019-06-23T09:47:55.685Z</atom:updated>
            <content:encoded><![CDATA[<p>As of 0.2–76 update <a href="http://lightning-wallet.com/">BLW</a> will have watchtower functionality present and enabled by default. You will no longer have to care about getting your wallet online periodically if you use BLW to receive Lightning payments.</p><p>For those interested in details I’d like to explain here what exact problem is being addressed and how my implementation tries to do it in a technologically sound and economically sustainable way.</p><h3><strong>What is the problem?</strong></h3><p>Every Lightning payment attempt creates a valid Bitcoin commitment transaction which fixates current channel balance distribution. This transaction can be broadcasted by either party at any time, even if a state it captures gets invalidated later by subsequent Lightning payments.</p><p>To understand why this can be dangerous let’s consider the following picture which illustrates a channel opening and a number of following payments which create a trail of valid commitment transactions.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fsik-lsWVmeRO7_2NIz8yw.png" /><figcaption>First I open a channel, then make 3 outgoing payments and then an incoming one. <strong>UPDATE: last (e) payment is +4, not +3.</strong></figcaption></figure><p>States <strong>b)</strong> through <strong>d)</strong> depict outgoing payments. After each outgoing payment you only have less money and your peer only has more so if they want to break a channel at some point the only rational choice is to spend the last commitment transaction, otherwise it would be a gift to you. This is the idea behind send-only wallets such as Eclair for Android: they don’t allow receiving Lightning funds but also don’t require you to become online periodically and there is no need for a watchtower.</p><p>Now let’s look at the last <strong>e)</strong> payment. This is an incoming one which shifts part of channel balance back to you. The issue here is that commitment transactions for payments <strong>c)</strong> and <strong>d)</strong> don’t go anywhere and your peer may be tempted to broadcast those since they are more beneficial to peer than current channel state.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xPpELQHgfAM85XDkuSaToQ.png" /><figcaption>Once <strong>(e)</strong> payment is there old states <strong>(c)</strong> and <strong>(d)</strong> would would give your peer more on-chain funds if peer were to broadcast a corresponding commitment transaction. <strong>UPDATE: last (e) payment is +4, not +3.</strong></figcaption></figure><p>What protects you from funds loss here is that each commitment transaction sends funds to a limbo address which is designed in such a way that your peer needs to wait a number of blocks in order to finally transfer those coins into their wallet, but you can sweep the whole channel balance right away once your wallet sees a broadcasted commitment transaction.</p><p>Obviously, for this to work someone capable of punishing a misbehaving peer needs to be online periodically. In BLW the wait period is set to 2016 Bitcoin blocks and up until now this long delay was the only thing protecting users from channel breaches.</p><p>This approach was far from perfect as it’s absolutely reasonable to assume someone could just forget to launch an app at least once per 2016 blocks and thus get into risk of funds getting stolen.</p><h3><strong>How watchtower improves a situation</strong></h3><p>The idea is simple: watchtower is a service which is always online and watching for channel breaches even at times when your wallet is offline. Implementation is also pretty straightforward, here is a complete high-level overview of an algorithm:</p><p><strong><em>1.</em></strong> On every incoming or outgoing Lightning payment BLW creates a blob of signatures and public keys required to punish a peer in case if corresponding commitment transaction gets broadcasted. This blob is then saved into local BLW database.</p><p><strong><em>2.</em></strong> After every incoming payment BLW futher looks into local database and searches for past payments which your peer might be now tempted to broadcast (those would be <strong>c)</strong> and <strong>d)</strong> in a picture above).</p><p><strong><em>3.</em></strong> For every found payment BLW encrypts a punishment blob with it’s corresponding commitment transaction ID used as decryption key, then cuts TXID in half so we obtain an (encrypted blob, halfTXID) pair.</p><p><strong><em>4.</em></strong> Once all the pairs are ready BLW sends them to watchtower in a series of packs each containing of up to 20 pairs (the reason for such batching is explained below).</p><p><strong><em>5.</em></strong> Watchtower saves every pair in a database and continuously listens to new blocks looking if any new halfTXID matches the one it has in a database. If it does, this means your peer has broadcasted an old channel state. Watchtower now has a fullTXID which it uses to decrypt a corresponding blob and broadcast punishment transactions.</p><h3><strong>Watchtower service has economical challenges</strong></h3><p>Running it requires a reasonable infrastructure: at a minimum watching server needs to have enough resources to store potentially billions of blobs and run a Bitcoin node. As such, it can not be expected for watchower to provide a service for free, there should be a reward of some kind or else an owner might be tempted to just stop an operation at some point and leave wallet users insecure*.</p><blockquote><em>* Even if watchtower is not there all of a sudden you still can punish a peer all by yourself if they breach a channel and you manage to get your wallet online during the next 2016 blocks.</em></blockquote><p>One popular proposal for making it incentive compatible is to include a watchtower reward in every punishment blob so when a breach happens watchtower gets a part of channel balance by just publishing a punishment transaction. In my opinion this approach is flawed for two reasons:</p><p><strong><em>1.</em></strong> Channel breaches are not expected to happen often so it does not seem to me that service will be able to sustain itself by earning on rewards alone.</p><p><strong><em>2.</em></strong> This gives some weird incentives: watchtower now wants all peers to breach their channels as often as possible. This may result in hacks and other attempts to influence LN node owners.</p><h3><strong>Storage tokens as a solution</strong></h3><p>Those who use BLW already know it has an accompanying maintenance server called <a href="https://github.com/btcontract/olympus">Olympus</a> which takes Chaumian-style <a href="http://lightning-wallet.com/storage-tokens#storage-tokens">ecash tokens</a> for storing various user data.</p><p>Until now these tokens were only used to store encrypted channel backups but now Olympus also provides a watchtower service which requires one storage token for watching of up to 20 encrypted blobs. This is the reason BLW batches pairs of (encrypted blob, halfTXID) into packs of up to 20 items before sending them to Olympus: every pack has a storage token attached so watching service gets paid every time it accepts a blob.</p><p>Currently Olympus charges 1000 SAT per 50 tokens so each token costs 20 SAT. Thus, storing each commitment transaction costs about 1 SAT.</p><p>BLW acquires tokens automatically when there is a need for them by fulfilling an LN payment issued by Olympus server, the whole process is mostly transparent to users, the only noticeable thing would be 1000 SAT Lightning payments occasionally popping up in a wallet payment list.</p><p>All that said, user is free to opt out of this scheme at any time and rely solely on getting online per 2016 block periods, as shown on a screenshots below.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*j9AxJMvMVYfMQ2b36cBmAA.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*spEIuZC011RKGz5S4bqNww.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*8TQI4yYkslpS7v3UswpU_g.jpeg" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8f969ac206b2" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[I’m launching a Lightning Network on BCA mainnet]]></title>
            <link>https://medium.com/@akumaigorodski/im-launching-a-lightning-network-on-bca-mainnet-29dda2206047?source=rss-28b19bf3fec8------2</link>
            <guid isPermaLink="false">https://medium.com/p/29dda2206047</guid>
            <category><![CDATA[atom]]></category>
            <category><![CDATA[bitcoin]]></category>
            <category><![CDATA[lightning-network]]></category>
            <dc:creator><![CDATA[online dreaming]]></dc:creator>
            <pubDate>Thu, 24 May 2018 15:30:03 GMT</pubDate>
            <atom:updated>2018-05-24T15:30:03.766Z</atom:updated>
            <content:encoded><![CDATA[<p>It is already fully functional and everyone is welcome to try it out.</p><p>Bitcoin Atom info:<br><a href="https://bitcointalk.org/index.php?topic=2515675.0">https://bitcointalk.org/index.php?topic=2515675.0</a></p><p>Atom Lightning Wallet on Google Play: <br><a href="https://play.google.com/store/apps/details?id=com.lightning.walletapp.bca">https://play.google.com/store/apps/details?id=com.lightning.walletapp.bca</a></p><p>Atom Lightning Wallet sources:<br><a href="https://github.com/btcontract/lnwallet-atom">https://github.com/btcontract/lnwallet-atom</a></p><p>Eclair Atom binaries and sources:<br><a href="https://github.com/btcontract/eclair-atom/releases">https://github.com/btcontract/eclair-atom/releases</a></p><p>A tipping widget to spend your BCA:<br><a href="http://bcatip.lightning-wallet.com/">http://bcatip.lightning-wallet.com/</a></p><h3><strong>Why doing this?</strong></h3><p><strong>First and foremost</strong>, I want LN to be readily available in places where miners have less censorship power by design because LN critically relies on refunding on-chain transactions to be confirmed in a reasonable time-frame or else a race condition becomes possible where an attacker may steal a part of channel balance and get away with it.</p><p>Current LN refunding transactions are easily discernible and we have just a handful of large miner pools who technically can stop processing some or all of them. While it may seem like pulling off this type of attack is not in pools’ best interest we should never forget that powerful miner supported forks do exist. Large mining companies such as Bitmain openly despise Bitcoin so given the right market conditions they may attempt to play games with LN in order to lure investors into BCH where they have total control.</p><p>BCA uses PoW/PoS consensus which may have issues of it’s own but it does give businesses and investors a direct means to keep LN going even if miners don’t want it to, by an option of pushing refunding transactions via PoS blocks. Functional Lightning Network based on a hybrid consensus should remind miner monopolists that there are many places where investors could go in case of what, including those where miners have less power, not more.</p><p><strong>Second</strong>, I want to try various approaches which currently seem nonviable on BTC based LN and see how they play out:</p><p>- <em>toSelfDelay</em> of up to 8640 blocks is accepted thus turning “online at least once a day” rule into “online at least once per two months”. The upside is this effectively eliminates the need for watchtowers, the downside is up to 2 months of waiting if peer becomes unresponsive and you close a channel uncooperatively.</p><p>- Maximum channel capacity of ~0.16 BTC is removed in BCA which hopefully will increase liquidity and remove unnecessary load from blockchain and LN routing graph.</p><p>- BCA nodes are very tolerant to fee-rate disparity and accept a difference of up to 150 times. Low fee-rate tolerance is currently one of the main reasons for broken channels on BTC mainnet.</p><p>Of course, LN does not have a global consensus and I won’t be able to enforce these rules once new nodes start joining but judging from BTC experience node operators tend to adhere to default settings so these rules stand a good chance of taking off.</p><p>I may be wrong about everything but there seem to be no downside in doing this. LN success on BCA will reward every Bitcoin investor and strengthen it’s success on BTC while failure of any kind will supply us with knowledge about what should not be done.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=29dda2206047" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>