ZmnSCPxj [ARCHIVE] on Nostr: π
Original date posted:2021-08-31 π Original message: Good morning aj and Rene, ...
π
Original date posted:2021-08-31
π Original message:
Good morning aj and Rene,
> On Thu, Aug 26, 2021 at 04:33:23PM +0200, RenΓ© Pickhardt via Lightning-dev wrote:
>
> > As we thought it was obvious that the function is not linear we only explained
> > in the paper how the jump from f(0)=0 to f(1) = ppm+base_fee breaks convexity.
>
> (This would make more sense to me as "f(0)=0 but f(epsilon)->b as
> epsilon->0, so it's discontinuous")
I as well, "discontinuous" is how I would understand it, and it really needs to be pointed out to me that f(0)=0 and the sudden step to f(1)=1*prop + base is problematic.
>
> > "Do we really want users to solve an NP-hard problem when
> > they wish to find a cheap way of paying each other on the Lightning Network?"
>
> FWIW, my answer to this is "sure, if that's the way it turns out".
>
> Another program which solves an NP-hard problem every time it runs is
> "apt-get install" -- you can simulate 3SAT using Depends: and Conflicts:
> relationships between packages.
Thank you for this, I now understand why functional package managers like Nix and Guix etc. exist.
> I worked on a related project in Debian
> back in the day that did a slightly more complicated variant of that
> problem, namely working out if updating a package in the distro would
> render other packages uninstallable (eg due to providing a different
> library version) -- as it turned out, that even actually managed to hit
> some of the "hard" NP cases every now and then. But it was never really
> that big a deal in practice: you just set an iteration limit and consider
> it to "fail" if things get too complicated, and if it fails too often,
> you re-analyse what's going on manually and add a new heuristic to cope
> with it.
>
> I don't see any reason to think you can't do roughly the same for
> lightning; at worst just consider yourself as routing on log(N) different
> networks: one that routes payments of up to 500msat at (b+0.5ppm), one
> that routes payments of up to 1sat at (b+ppm), one that routes payments
> of up to 2sat at (b+2ppm), one that routes payments of up to 4sat at
> (b+4ppm), etc. Try to choose a route for all the funds; if that fails,
> split it; repeat. In some case that will fail despite there being a
> possible successful multipath route, and in other cases it will choose a
> moderately higher fee path than necessary, but if you're talking a paying
> a 0.2% fee vs a 0.1% fee when the current state of the art is a 1% fee,
> that's fine.
Well, something similar is already done by C-Lightning, and the `pay` algorithm even includes a time limit after which it just fails instead of retrying (roughly equivalent to setting an iteration limit, and actually more practical since it is not the number of CPU iterations that matters, it is real time during which user economic preferences may change).
And for large enough payments, it *still* does not succeed often enough in practice.
I pointed out elsewhere that failure-to-pay has an economic cost.
This economic cost is the difference between the value of the product being bought, minus the value of the bitcoin being used to pay for it.
(remember, economic value is subjective to every economic actor; the economy is simply how the differences in value plays out as actors exchange objects, where each actor has its own subjective valuation of that value.)
We can ask the user explicitly for a numeric amount equivalent to this cost, by the simple question "how much are you willing to pay in order for this transaction to succeed?" i.e. "what is the maximum transaction fee you will accept?"
Thus, failing to deliver imposes an economic cost on users, a cost that Lightning Network, rightfully or not, has implicitly promised to reduce in comparison to onchain transactions.
For myself, I think a variant of Pickhardt-Richter payments can be created which *adapts to* the reality of the current network where `base_fee > 0` is common, but is biased against `base_fee > 0`, can be a bridge from the current network with `base_fee > 0` and a future with `#zerobasefee`.
With C-Lightning and its plugin nature allowing alternate implementations of `pay`, this can be done without requiring an entire new LN implementation.
If popular enough, because it demonstrates actual ability to transfer large funds at low fees, this can force forwarding nodes to learn that `#zerobasefee` earns them more funds (such as if they use a hill-climbing algorithm like I described to discover optimal feerates that gives them maximum earnings).
Then `#zerobasefee` just wins economically.
So I think this really just needs a good implementation somewhere.
Regards,
ZmnSCPxj
Published at
2023-06-09 13:03:36Event JSON
{
"id": "5e863e44ef6684c18ef3a79e51640b9bbeb098dcf221307c470a69bd7454af82",
"pubkey": "4505072744a9d3e490af9262bfe38e6ee5338a77177b565b6b37730b63a7b861",
"created_at": 1686315816,
"kind": 1,
"tags": [
[
"e",
"01d9c9502f49dd38e6e1b40b488725a995f866aed238951b8ee32ae941e02526",
"",
"root"
],
[
"e",
"4ad90d1ca6eea07b19fec7e2a29b6a8b84c641f4bbdb6f9590878b4a62016e4d",
"",
"reply"
],
[
"p",
"f0feda6ad58ea9f486e469f87b3b9996494363a26982b864667c5d8acb0542ab"
]
],
"content": "π
Original date posted:2021-08-31\nπ Original message:\nGood morning aj and Rene,\n\n\u003e On Thu, Aug 26, 2021 at 04:33:23PM +0200, RenΓ© Pickhardt via Lightning-dev wrote:\n\u003e\n\u003e \u003e As we thought it was obvious that the function is not linear we only explained\n\u003e \u003e in the paper how the jump from f(0)=0 to f(1) = ppm+base_fee breaks convexity.\n\u003e\n\u003e (This would make more sense to me as \"f(0)=0 but f(epsilon)-\u003eb as\n\u003e epsilon-\u003e0, so it's discontinuous\")\n\nI as well, \"discontinuous\" is how I would understand it, and it really needs to be pointed out to me that f(0)=0 and the sudden step to f(1)=1*prop + base is problematic.\n\n\u003e\n\u003e \u003e \"Do we really want users to solve an NP-hard problem when\n\u003e \u003e they wish to find a cheap way of paying each other on the Lightning Network?\"\n\u003e\n\u003e FWIW, my answer to this is \"sure, if that's the way it turns out\".\n\u003e\n\u003e Another program which solves an NP-hard problem every time it runs is\n\u003e \"apt-get install\" -- you can simulate 3SAT using Depends: and Conflicts:\n\u003e relationships between packages.\n\nThank you for this, I now understand why functional package managers like Nix and Guix etc. exist.\n\n\u003e I worked on a related project in Debian\n\u003e back in the day that did a slightly more complicated variant of that\n\u003e problem, namely working out if updating a package in the distro would\n\u003e render other packages uninstallable (eg due to providing a different\n\u003e library version) -- as it turned out, that even actually managed to hit\n\u003e some of the \"hard\" NP cases every now and then. But it was never really\n\u003e that big a deal in practice: you just set an iteration limit and consider\n\u003e it to \"fail\" if things get too complicated, and if it fails too often,\n\u003e you re-analyse what's going on manually and add a new heuristic to cope\n\u003e with it.\n\u003e\n\u003e I don't see any reason to think you can't do roughly the same for\n\u003e lightning; at worst just consider yourself as routing on log(N) different\n\u003e networks: one that routes payments of up to 500msat at (b+0.5ppm), one\n\u003e that routes payments of up to 1sat at (b+ppm), one that routes payments\n\u003e of up to 2sat at (b+2ppm), one that routes payments of up to 4sat at\n\u003e (b+4ppm), etc. Try to choose a route for all the funds; if that fails,\n\u003e split it; repeat. In some case that will fail despite there being a\n\u003e possible successful multipath route, and in other cases it will choose a\n\u003e moderately higher fee path than necessary, but if you're talking a paying\n\u003e a 0.2% fee vs a 0.1% fee when the current state of the art is a 1% fee,\n\u003e that's fine.\n\nWell, something similar is already done by C-Lightning, and the `pay` algorithm even includes a time limit after which it just fails instead of retrying (roughly equivalent to setting an iteration limit, and actually more practical since it is not the number of CPU iterations that matters, it is real time during which user economic preferences may change).\n\nAnd for large enough payments, it *still* does not succeed often enough in practice.\n\nI pointed out elsewhere that failure-to-pay has an economic cost.\nThis economic cost is the difference between the value of the product being bought, minus the value of the bitcoin being used to pay for it.\n(remember, economic value is subjective to every economic actor; the economy is simply how the differences in value plays out as actors exchange objects, where each actor has its own subjective valuation of that value.)\nWe can ask the user explicitly for a numeric amount equivalent to this cost, by the simple question \"how much are you willing to pay in order for this transaction to succeed?\" i.e. \"what is the maximum transaction fee you will accept?\"\n\nThus, failing to deliver imposes an economic cost on users, a cost that Lightning Network, rightfully or not, has implicitly promised to reduce in comparison to onchain transactions.\n\nFor myself, I think a variant of Pickhardt-Richter payments can be created which *adapts to* the reality of the current network where `base_fee \u003e 0` is common, but is biased against `base_fee \u003e 0`, can be a bridge from the current network with `base_fee \u003e 0` and a future with `#zerobasefee`.\nWith C-Lightning and its plugin nature allowing alternate implementations of `pay`, this can be done without requiring an entire new LN implementation.\nIf popular enough, because it demonstrates actual ability to transfer large funds at low fees, this can force forwarding nodes to learn that `#zerobasefee` earns them more funds (such as if they use a hill-climbing algorithm like I described to discover optimal feerates that gives them maximum earnings).\nThen `#zerobasefee` just wins economically.\n\nSo I think this really just needs a good implementation somewhere.\n\nRegards,\nZmnSCPxj",
"sig": "947f3df9a63526c6ff558a955863e40ff1fbc212e5fb59118f9f4931634e9eabef82dbbc217162cea7922562c705e55364d83ef7025a38e5d3ee6a173571a697"
}