ZmnSCPxj [ARCHIVE] on Nostr: π
Original date posted:2019-04-01 π Original message: Good morning Christian, > ...
π
Original date posted:2019-04-01
π Original message:
Good morning Christian,
>
> There are two ways we can use this:
>
> - A simple variant in which we just tell a single trampoline what the
> intended recipient is (just a pubkey, and an amount) and it'll find a
> route.
>
> - A complex variant in which a trampoline is given a next hop, and a
> smaller onion to pass along to the next hop. The trampoline doesn't
> learn the intended recipient, but can still route it.
The simple variant definitely tells the trampoline who the payee is, so I would reject it.
> Multi-trampoline routing
> =========================
>
> The more complex proposal involves nesting a smaller onion into the
> outer routing onion. For this the sender generates a small onion of, for
> example, 10 hops whose length is only 650 bytes instead of the 20 hops
> for the outer routing onion. The hops in the inner/smaller onion do not
> have to be adjacent to each other, i.e., they can be picked randomly
> from the set of known nodes and there doesn't need to be a channel
> between two consecutive hops, unlike in the outer/routing onion. The
> hops in the smaller onion are called trampolines `t_1` to `t_10`.
>
> The construction of the smaller onion can be identical to the
> construction of the routing onion, just needs its size adjusted. The
> sender then picks a random trampoline node `t_0` in its known
> neighborhood and generates a routing onion containing the smaller onion
> as payload to `t_0` and signaling data (final recipient, amount, inner
> onion). Upon receiving an incoming payment with trampoline instructions
> a trampoline `t_i` unwraps the inner onion, which yields the next
> trampoline `t_{i+1}` node_id. The trampoline then finds a route to
> `t_{i+1}`, serializing the inner onion (which was unwrapped and is now
> destined for `t_{i+1}`) and creating the outer routing onion with that
> as the payload. Notice that, like in the simple variant, `t_i` generates
> a new outer onion, which means we don't have any issues with shared
> secrets and HMACs like in rendezvous routing. Resolution is also
> identical to above.
>
> This construction reuses all the onion primitives we already have, and
> it allows us to bounce a payment through multiple trampolines without
> them learning their position in this nested path. The sender does
> not have to have a total view of the network topology, just have a
> reasonable chance that two consecutive trampolines can find a route to
> each other, i.e., don't use mobile phone as trampolines :-)
Naively, would it not be possible?
Suppose a mobile phone keeps only a small subset of the routemap due to memory constraints, but has high uptime because it is the precious mobile device of somebody who uses the mobile phone at all hours.
When the mobile phone trampoline is unable to route to the next trampoline, could it not "delegate" this by looking for some node in its smaller routemap that it believes (by some other mechanism) to be more likely to route to the next trampoline?
Could this be implemented by replacing only the front of the trampoline-level onion?
(presumably with some adjustment of how the HMAC is computed for the new trampoline layer)
If we will change to use trampoline-level onions then maybe we can change things somewhat to support this usage better.
Otherwise it would seem that possible trampolines would have to advertise themselves as such.
It would be better if a trampoline could be just "taken out of a hat" and selected randomly.
And as long as the trampoline is able to *delegate* the routing to some other trampoline, and there is sufficient fee, payment can succeed.
Regards,
ZmnSCPxj
Published at
2023-06-09 12:54:48Event JSON
{
"id": "77aea91b5764d496b98ce2855a08580f4cae2f3962751a42684d8fa9c99f2247",
"pubkey": "4505072744a9d3e490af9262bfe38e6ee5338a77177b565b6b37730b63a7b861",
"created_at": 1686315288,
"kind": 1,
"tags": [
[
"e",
"60d26284fa5c438b86871bb223a7961f45c149bf53b3a176e75fc003d1d27577",
"",
"root"
],
[
"e",
"43ccf0981912e7f95eaef07307df4bd73466cfed2bcdfd330b0f6d211a31fe2a",
"",
"reply"
],
[
"p",
"72cd40332ec782dd0a7f63acb03e3b6fdafa6d91bd1b6125cd8b7117a1bb8057"
]
],
"content": "π
Original date posted:2019-04-01\nπ Original message:\nGood morning Christian,\n\n\n\u003e\n\u003e There are two ways we can use this:\n\u003e\n\u003e - A simple variant in which we just tell a single trampoline what the\n\u003e intended recipient is (just a pubkey, and an amount) and it'll find a\n\u003e route.\n\u003e\n\u003e - A complex variant in which a trampoline is given a next hop, and a\n\u003e smaller onion to pass along to the next hop. The trampoline doesn't\n\u003e learn the intended recipient, but can still route it.\n\nThe simple variant definitely tells the trampoline who the payee is, so I would reject it.\n\n\n\u003e Multi-trampoline routing\n\u003e =========================\n\u003e\n\u003e The more complex proposal involves nesting a smaller onion into the\n\u003e outer routing onion. For this the sender generates a small onion of, for\n\u003e example, 10 hops whose length is only 650 bytes instead of the 20 hops\n\u003e for the outer routing onion. The hops in the inner/smaller onion do not\n\u003e have to be adjacent to each other, i.e., they can be picked randomly\n\u003e from the set of known nodes and there doesn't need to be a channel\n\u003e between two consecutive hops, unlike in the outer/routing onion. The\n\u003e hops in the smaller onion are called trampolines `t_1` to `t_10`.\n\u003e\n\u003e The construction of the smaller onion can be identical to the\n\u003e construction of the routing onion, just needs its size adjusted. The\n\u003e sender then picks a random trampoline node `t_0` in its known\n\u003e neighborhood and generates a routing onion containing the smaller onion\n\u003e as payload to `t_0` and signaling data (final recipient, amount, inner\n\u003e onion). Upon receiving an incoming payment with trampoline instructions\n\u003e a trampoline `t_i` unwraps the inner onion, which yields the next\n\u003e trampoline `t_{i+1}` node_id. The trampoline then finds a route to\n\u003e `t_{i+1}`, serializing the inner onion (which was unwrapped and is now\n\u003e destined for `t_{i+1}`) and creating the outer routing onion with that\n\u003e as the payload. Notice that, like in the simple variant, `t_i` generates\n\u003e a new outer onion, which means we don't have any issues with shared\n\u003e secrets and HMACs like in rendezvous routing. Resolution is also\n\u003e identical to above.\n\u003e\n\u003e This construction reuses all the onion primitives we already have, and\n\u003e it allows us to bounce a payment through multiple trampolines without\n\u003e them learning their position in this nested path. The sender does\n\u003e not have to have a total view of the network topology, just have a\n\u003e reasonable chance that two consecutive trampolines can find a route to\n\u003e each other, i.e., don't use mobile phone as trampolines :-)\n\nNaively, would it not be possible?\n\nSuppose a mobile phone keeps only a small subset of the routemap due to memory constraints, but has high uptime because it is the precious mobile device of somebody who uses the mobile phone at all hours.\n\nWhen the mobile phone trampoline is unable to route to the next trampoline, could it not \"delegate\" this by looking for some node in its smaller routemap that it believes (by some other mechanism) to be more likely to route to the next trampoline?\nCould this be implemented by replacing only the front of the trampoline-level onion?\n(presumably with some adjustment of how the HMAC is computed for the new trampoline layer)\n\nIf we will change to use trampoline-level onions then maybe we can change things somewhat to support this usage better.\n\nOtherwise it would seem that possible trampolines would have to advertise themselves as such.\nIt would be better if a trampoline could be just \"taken out of a hat\" and selected randomly.\nAnd as long as the trampoline is able to *delegate* the routing to some other trampoline, and there is sufficient fee, payment can succeed.\n\nRegards,\nZmnSCPxj",
"sig": "32d95df95bd156c567b7e0d9dd8c0063a6df6e8b8686b5d3a3a193036ced2f6d9514e3ddc560cdeb3c64ee158520b1d0c5fe7f8cf6c3e9f21e615be852eb1214"
}