I'm researching how in a low bandwidth mesh network payment transactions from nodes can be combined to reduce the bandwidth used for payments. Aggregated signatures seem like a useful technology to reduce the size of transactions between nodes involved in a message relay circuit.

I believe it's important to focus on the signatures because unlike the payment addresseses in a transaction, signatures cannot be compressed by using a lookup table of their hash and/or an HD wallet path.

Greg Maxwell's write up on aggregated signatures mentions a scheme using Schnorr signatures and two other schemes, one way aggregated signatures (OWAS) and Boneh–Lynn–Shacham (BLS) signature aggregation.


Which signature aggregation approach, if any, do you think is best suited for building up a payment transaction where each node in a chain pays the next node some small amount?

To try and make my question more concrete, a simplified protocol might look like:

1) Node A broadcasts a transaction tx_A that has two outputs: one spends some value to any address and one spends the change back to an address node A controls.

2) Node B receives tx_A, and broadcasts a tx_B that spends the unspent value from tx_A to an address node B controls, and spends from that address (less some fee they keep) to any address. Node B creates a signature for tx_B that aggregates the spending signature from tx_A.

3) Node C receives tx_B and does the same as in step 2 to produce tx_C. This continues until the message is received by the message destination node F, or there is no more unspent value left.

4) The final tx_E should have an aggregated signature that spends from addresses controlled by nodes A..E to pay nodes B..F.

Key requirements are:

  • non-interactive (or only interactive with the next node in the chain)

  • aggregating many signatures does not increase the transaction size

Thanks in advance and sorry if my question is not clear. I've had trouble digesting the primary source material and hope what I'm asking isn't too crazy.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.