Ryan Grant [ARCHIVE] on Nostr: 📅 Original date posted:2015-11-23 📝 Original message: Alice intends to pledge ...
📅 Original date posted:2015-11-23
📝 Original message:
Alice intends to pledge to Bob's crowdfunded project, and will
create a one-input, one-output, anyone-can-pay transaction, valid
for one month. Bob publicized his address, anchored to an open
channel on the Lightning Network. Alice has already received
Bob's hashed preimage R. They plan to use an intermediary node
run by Hubab.
/ the problem /
Alice needs some special Lightning protocol option to indicate
that only the final hop should be rewritten and signed as
anyone-can-pay.
All other anyone-can-pay donors need to pay to the same output.
However, Lightning does not normally reuse public keys for fresh
Commitment Transactions.
Bob's Lightning software needs to leave all anyone-can-pay
fragments alone until they are valid together.
Crowdsourcing initiatives usually deal in larger amounts of money
than the initiators can raise beforehand, which would preclude
matching the amount in an initial Funding Transaction.
/ routed option /
Alice sends Hubab a normal channel transaction, using the HTLC,
to cover the cost plus fees. Alice can then send Hubab special
instructions on how to create a SIGHASH_ANYONE_CAN_PAY for Bob,
using the HTLC. Hubab does so.
Bob can receive transactions of arbitrary complexity. Once Bob
receives the pledge transaction from Alice, it should not be
revoked, as in normal bidirectional use of Lightning channels.
It should lie out-of-band until the anyone-can-pay output is
claimed. Bob does not update any related Commitment
Transactions, until the anyone-can-pay is fulfilled.
Hubab will be able to spend her normal channel transaction when
Bob reaches his goal. Bob's crowdfunding software will
concatenate scriptPubKeys of the pledges delivered by Hubab, with
their HTLCs, to claim the anyone-can-pay output, releasing R.
/ other issues /
Crowdfunding events could lock up money for a long time, since
execution is not handed over to the network when the HTLC
commitment is initiated. Lightning Network nodes will price
their fees accordingly. When fee discovery comes about, it
should be aware of the different transaction types.
Pledges have longer lives than payments, and it's not an error to
change one's mind about them. The protocol needs an
update_revoke_pledge_htlc, to revoke accepted pledges that have
not yet expired or caused other errors.
Hubab may need to route further, to Carol. Hubab needs to be
aware of more in the route than her handoff address, such as
whether the next destination is final.
Hubab (or Carol), when signing the SIGHASH_ANYONE_CAN_PAY
transaction, needs to select an input matching the exact amount.
Did I get this right?
Is there a simpler way to do crowdfunding with the Lightning
Network?
Published at
2023-06-09 12:45:12Event JSON
{
"id": "dc3f7cb23f2d8cac8d7f895cc4133c5f91e177471812a1e60acca561233e6f9e",
"pubkey": "2f55bf03677afdb15d004a39383afba6220aa6c059cafa7b8827b87934d3c254",
"created_at": 1686314712,
"kind": 1,
"tags": [
[
"e",
"68ac17aa7e734914beb176631e3675cbd778a7a3b83d04d841ef0b109745954f",
"",
"reply"
],
[
"p",
"9456f7acb763eaab2e02bd8e60cf17df74f352c2ae579dce1f1dd25c95dd611c"
]
],
"content": "📅 Original date posted:2015-11-23\n📝 Original message:\nAlice intends to pledge to Bob's crowdfunded project, and will\ncreate a one-input, one-output, anyone-can-pay transaction, valid\nfor one month. Bob publicized his address, anchored to an open\nchannel on the Lightning Network. Alice has already received\nBob's hashed preimage R. They plan to use an intermediary node\nrun by Hubab.\n\n/ the problem /\n\nAlice needs some special Lightning protocol option to indicate\nthat only the final hop should be rewritten and signed as\nanyone-can-pay.\n\nAll other anyone-can-pay donors need to pay to the same output.\nHowever, Lightning does not normally reuse public keys for fresh\nCommitment Transactions.\n\nBob's Lightning software needs to leave all anyone-can-pay\nfragments alone until they are valid together.\n\nCrowdsourcing initiatives usually deal in larger amounts of money\nthan the initiators can raise beforehand, which would preclude\nmatching the amount in an initial Funding Transaction.\n\n/ routed option /\n\nAlice sends Hubab a normal channel transaction, using the HTLC,\nto cover the cost plus fees. Alice can then send Hubab special\ninstructions on how to create a SIGHASH_ANYONE_CAN_PAY for Bob,\nusing the HTLC. Hubab does so.\n\nBob can receive transactions of arbitrary complexity. Once Bob\nreceives the pledge transaction from Alice, it should not be\nrevoked, as in normal bidirectional use of Lightning channels.\nIt should lie out-of-band until the anyone-can-pay output is\nclaimed. Bob does not update any related Commitment\nTransactions, until the anyone-can-pay is fulfilled.\n\nHubab will be able to spend her normal channel transaction when\nBob reaches his goal. Bob's crowdfunding software will\nconcatenate scriptPubKeys of the pledges delivered by Hubab, with\ntheir HTLCs, to claim the anyone-can-pay output, releasing R.\n\n/ other issues /\n\nCrowdfunding events could lock up money for a long time, since\nexecution is not handed over to the network when the HTLC\ncommitment is initiated. Lightning Network nodes will price\ntheir fees accordingly. When fee discovery comes about, it\nshould be aware of the different transaction types.\n\nPledges have longer lives than payments, and it's not an error to\nchange one's mind about them. The protocol needs an\nupdate_revoke_pledge_htlc, to revoke accepted pledges that have\nnot yet expired or caused other errors.\n\nHubab may need to route further, to Carol. Hubab needs to be\naware of more in the route than her handoff address, such as\nwhether the next destination is final.\n\nHubab (or Carol), when signing the SIGHASH_ANYONE_CAN_PAY\ntransaction, needs to select an input matching the exact amount.\n\nDid I get this right?\n\nIs there a simpler way to do crowdfunding with the Lightning\nNetwork?",
"sig": "b0ab75dd7db8460b235f46999994960cc36f64f9c51d260fbebf12cb51b675c564dda884f16353d4b0713ae6ec96901b144552fb70e3e0f3e6dbfe57249ee9c6"
}