I'm curious to why is there a 684 transaction limit for each campaign when using the lighthouse crowd funding app. If I was wanting to raise 25 BTC for a project, the minimum that someone that would have to fund me is .036 (about $10 today). This leaves out the ability for people wanting to fund $1-$5. Just curious to why is there that limit and why wont it enable smaller amounts? I was contemplating on using lighthouse or nxt's monetary system.

1 Answer 1


Lighthouse's Frequently Asked Questions (FAQ) says:

Currently you cannot accept more than 684 pledges for your project. This is due to limitations in the Bitcoin protocol - the final contract that claims the pledges is a single Bitcoin transaction, and thus is limited to 500 kilobytes by the Bitcoin block size and protocol relay rules.

Note: "500 kilobytes" is a typo---I just confirmed this via email with Lighthouse author Mike Hearn. The correct size for standard transactions is 100 KB. Mike is also thinking about bumping up the standard size in his Bitcoin XT project to allow miners to opt-in to the larger size. (That hard limit, for now, is slightly less than 1 megabyte---a whole block.)

Of that 100 KB, a small part is the output (TxOut) that pays the receiver of the funds (you, in your case). If you use a standard P2PKH or P2SH pubkey script, the output will be 34 bytes or less. There's also a small part dedicated to the transaction metadata (such as the transaction version number); the size of the metadata varies a bit by how many pledges you get, so lets round it up to 20 bytes. That leaves 99,946 bytes left for pledges.

99946 / 684 = 146 bytes per plegde (rounded down). A pledge is a single input (TxIn) that pays the output described above. The input is (if necessary) pre-spent to ensure it has exactly the pledge amount---that means there's no change output to worry about. The Lighthouse design document doesn't explicitly say what type of input it spends, but I'll assume it only spends P2PKH inputs using compressed public keys, which are:

... for a total of 144 bytes.

The Lighthouse FAQ also says in that same section:

A future version of Lighthouse could optimise its usage of transaction space to bump up the maximum number of pledges by another few hundred.

I suspect the optimization Mike is implying would be using P2PK inputs, which would be:

  • 36-byte outpoint
  • up to 72-byte signature
  • 1-byte signature hash
  • 1 byte of data pushes

... for a total of 110 bytes. If implemented, this would allow 99946 / 110 = 908 pledges per transaction, or about a 30% increase. There are a few other ways to optimize, such as requiring smaller signatures, but these provide rapidly diminishing marginal gains.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.