<div dir="ltr"><blockquote class="gmail_quote" style="font-family:arial,sans-serif;font-size:12.800000190734863px;margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
I'm going to think about contracts in the future. Right now I'm working<br>on a fee distribution protocol that, instead of mining, depends on the<br>agreement of all potential fee receivers. Maybe a million peers was a<br>
bit much, but since the cryptocurrency in question removes incentives<br>for pool mining, as well as proof of work, I anticipate even cellphone<br>users will be able to 'mine' currency, so I'm aiming high. I've been<br>
having several problems with this protocol, one of which is bandwidth<br>usage, hence my interest in aggregate signatures.</blockquote><div style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></div><div style="font-family:arial,sans-serif;font-size:12.800000190734863px">
Interesting... How do you remove the incentive for proof-of-work without solving the byzantine generals problem?</div><div style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></div><div style="font-family:arial,sans-serif;font-size:12.800000190734863px">
If the message being signed is the same, that's technically called a "multisignature" scheme in literature, which is a type of "aggregate signature" scheme.  For a noninteractive BLS multisignature scheme, both signing, aggregation, and verification is fast, but for a noninteractive BLS general-aggregate-signature scheme, verification requires N pairing operations, where each pairing takes around 10+ms. [1]</div>
<div style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></div><div style="font-family:arial,sans-serif;font-size:12.800000190734863px">I'm working on a non-proof-of-work consensus algorithm called Tendermint. [2]</div>
<div style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></div><div style="font-family:arial,sans-serif;font-size:12.800000190734863px">I've considered an aggregate signature scheme for Tendermint.  While it would be useful for compressing signatures from validators (and so mobile clients would benefit somewhat), I still need the individual signatures from validators in order to punish bad validators when they go about signing things that they shouldn't be signing.  So for now I've decided to go with Ed25519 [3,4] which can easily batch verify 50,000 signatures in a matter of seconds.  Mobile devices (where bandwidth is expensive) can check for consensus probabilistically by requesting a small number of signatures from a random selection of validators, with the help of merkle trees.  Mobile devices shouldn't be "mining" on Tendermint, though.</div>
<div style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></div><div style="font-family:arial,sans-serif;font-size:12.800000190734863px">[1] <a href="https://eprint.iacr.org/2002/118.pdf" target="_blank">https://eprint.iacr.org/2002/118.pdf</a><br>
</div><div style="font-family:arial,sans-serif;font-size:12.800000190734863px">[2] <a href="http://tendermint.com/" target="_blank">http://tendermint.com</a></div><div style="font-family:arial,sans-serif;font-size:12.800000190734863px">
[3] <a href="https://github.com/floodyberry/ed25519-donna" target="_blank">https://github.com/floodyberry/ed25519-donna</a></div><div style="font-family:arial,sans-serif;font-size:12.800000190734863px">[4] <a href="https://github.com/tendermint/go-ed25519" target="_blank">https://github.com/tendermint/go-ed25519</a></div>
<div style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></div><div style="font-family:arial,sans-serif;font-size:12.800000190734863px">p.s. on [1], take special heed of "<i>we require it to prove knowledge of secret keys during the public key registration</i>".</div>
<div style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></div><div style="font-family:arial,sans-serif;font-size:12.800000190734863px">Regards,</div><div style="font-family:arial,sans-serif;font-size:12.800000190734863px">
Jae</div></div>