I will sketch out here the RAFT-inspired MultiPTLC competition algorithm. I think in practice, the idea of “just have the LSPs probe in parallel first” will get us high-enough probability of success that MultiPTLC is unnecessary even in a future PTLC world (its “only” improvement is that, after the “LSPs probe in parallel” phase, Ursula can send out all successful probed paths instead of having to select one as with HTLC or PTLC; that is the point of MultiPTLC, that it can provide paths starting at multiple LSPs, not just one as would the “trampoline routing” case), so I will not go into much detail. The assumptions I need are that (1) the sender has to give some nonce to the receiver in the onion and (2) the receiver also receives a blinded path to the “sender” (in the case of MultiPTLC, the “sender” that does the retrying in parallel is actually the LSP, not Ursula). So in the MultiPTLC package that contains all the Ursula-side signatures and the onions, Ursula provides the HASHES of the receiver-side nonce (which the receiver has to present to the “sender” when it requests for the receiver-can-claim scalar; LDK in particular can use it for a “stateless” design where the receiver-can-claim scalar is HMAC(node_secret, receiver_request_nonce)), and of course the outward onions encrypt the receiver-request nonce to the receiver. Suppose the LSP quorum set is a 2-of-3 of Alice, Bob, and Charlie. Alice and Bob receive the responses from the receiver close enough in time that relativistic time dilation due to network speed-of-light transmission speeds make “who came first?” ambiguous. Both of them validate that the receiver-request nonce matches the hash given in the MultiPTLC package. then send to each other as well as Charlie. They then proceed to proof-of-work, creating a “block” by appending a 64-bit counter to the receiver-request-nonce and its hash, and hashingg and incrementing the counter until it achieves some work target. They then build additional blocks by hashing the previous hash appended with another 64-bit counter. Alice,and Bob hen have the policy that “if I see that my competitor has gotten a block before I do, I will concede, stop doing proof-of-work and become a follower” and Charlie (who was not lucky enough to get any request from the receiver) will follow along as “whoever has the longest chain gets my vote” (alternatively, it can treat itself as having a block height of 0 and a simple presentation of receiver-request-nonce plus its hash from the MultiPTLC package, without additional proof of work, as height 1, which would be equivalent). Suppose Alice wins blocks faster than Bob, and Bob concedes. Then Charlie, Bob, and Alice are in full agreement and any 2 of them can form the 2-of-3 required to instantiate the branch of the MultiPTLC that goes to Alice. Even if Bob refuses to concede defeat, if Charlie sees Alice have a longer number of blocks, Charlie will follow Alice anyway (Charlie provides a signature signing against the longest chain it saw from Alice, and then Alice can present it to the other participants — this bit is important once we think of 3-of-5 or 4-of-7 cases, once Alice has gotten itself and 2 others in a 3-of-5 case, it can present the 2 signatures of its longest blockchain plus its own as a fiat accompli to the 2 followers it won so they can form a quorum that agrees Alice won) and signs the necessary k-of-n that enables the MultiPTLC branch that goes to Alice, so that Alice can now safely release the receiver-can-claim scalar to the receiver. The proof-of-work is necessary to ensure that LSPs only degrade their security to k-of-n; the original RAFT algorithm requires only random timeouts, but a cheating LSP can set their timeout to 0 to get the leadership and win every time and thus every LSP has to trust every other LSP if we did not have proof-of-work-randomized-timeouts, whereas proof-of-work forces time to pass due to thermodynamics (produced proof-of-work is thermodynamically “colder” than normal, implying there was an improbability pump / refrigeration process that had to have increased global entropy (and the arrow of time goes from globally low entropy to globally high entropy, thus proving time passed) to get local negentropy at the block hashes) and at least k-of-n is needed to agree on who won.