<p>Lighthouse's <a href="https://www.vinumeris.com/lighthouse/faq#max-pledges" rel="nofollow">Frequently Asked Questions (FAQ) says</a>:</p>

<blockquote>
  <p>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.</p>
</blockquote>

<p>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 <a href="https://github.com/bitcoinxt/bitcoinxt" rel="nofollow">Bitcoin XT</a> 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.)</p>

<p>Of that 100 KB, a small part is the <a href="https://bitcoin.org/en/developer-reference#txout" rel="nofollow">output (TxOut)</a> that pays the receiver of the funds (you, in your case).  If you use a standard <a href="https://bitcoin.org/en/developer-guide#term-p2pkh" rel="nofollow">P2PKH</a> or <a href="https://bitcoin.org/en/developer-guide#term-p2sh" rel="nofollow">P2SH</a> 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.</p>

<p><code>99946 / 684 = 146</code> bytes per plegde (rounded down).  A pledge is a single <a href="https://bitcoin.org/en/developer-reference#txin" rel="nofollow">input (TxIn)</a> 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 <a href="https://github.com/vinumeris/lighthouse/blob/master/docs/Design%20doc.md" rel="nofollow">Lighthouse design document</a> 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:</p>

<ul>
<li>36-byte <a href="https://bitcoin.org/en/developer-reference#outpoint" rel="nofollow">outpoint</a></li>
<li>up to 72-byte signature</li>
<li>1-byte <a href="https://bitcoin.org/en/developer-guide#signature-hash-types" rel="nofollow">signature hash</a></li>
<li>33-byte <a href="https://bitcoin.org/en/developer-guide#public-key-formats" rel="nofollow">compressed public key</a></li>
<li>2 bytes of data pushes</li>
</ul>

<p>... for a total of 144 bytes.</p>

<p>The Lighthouse FAQ also says in that same section:</p>

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

<p>I suspect the optimization Mike is implying would be using <a href="https://bitcoin.org/en/developer-guide#pubkey" rel="nofollow">P2PK</a> inputs, which would be:</p>

<ul>
<li>36-byte outpoint</li>
<li>up to 72-byte signature</li>
<li>1-byte signature hash</li>
<li>1 byte of data pushes</li>
</ul>

<p>... for a total of 110 bytes.  If implemented, this would allow <code>99946 / 110 = 908</code> 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.</p>

CC BY-SA 3.0
2015-02-12T13:13:03.860Z
2015-02-12T13:13:03.860Z
David A. Harding
<p>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. </p>

<nxt><crowdfunding>
Why are Lighthouse campaigns limited to 684 pledges?
Patoshi パトシ
# Why are Lighthouse campaigns limited to 684 pledges?

(Asked by: username_0 on 2015-02-12)

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.

**Tags:** nxt, crowdfunding


---

## 1 answers

### Answer by username_1 on 2015-02-12. Score: 4

Lighthouse's [Frequently Asked Questions (FAQ) says](https://www.vinumeris.com/lighthouse/faq#max-pledges):

> 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](https://github.com/bitcoinxt/bitcoinxt) 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)](https://bitcoin.org/en/developer-reference#txout) that pays the receiver of the funds (you, in your case). If you use a standard [P2PKH](https://bitcoin.org/en/developer-guide#term-p2pkh) or [P2SH](https://bitcoin.org/en/developer-guide#term-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)](https://bitcoin.org/en/developer-reference#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](https://github.com/vinumeris/lighthouse/blob/master/docs/Design%20doc.md) 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:

* 36-byte [outpoint](https://bitcoin.org/en/developer-reference#outpoint)
* up to 72-byte signature
* 1-byte [signature hash](https://bitcoin.org/en/developer-guide#signature-hash-types)
* 33-byte [compressed public key](https://bitcoin.org/en/developer-guide#public-key-formats)
* 2 bytes of data pushes

... 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](https://bitcoin.org/en/developer-guide#pubkey) 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.


---

