Good morning Billy,

> @Jorge
> > Any user polling system is going to be vulnerable to sybil attacks.
>
> Not the one I'll propose right here. What I propose specifically is a 
> coin-weighted signature-based poll with the following components:
> A. Every pollee signs messages like <utxo_id, {soft_fork: 9 oppose:90% 
> support:10%}> for each UTXO they want to respond to the poll with.
> B. A signed message like that is valid only while that UTXO has not been 
> spent.
> C. Poll results are considered only at each particular block height, where 
> the support and opposition responses are weighted by the UTXO amount (and the 
> support/oppose fraction in the message). This means you'd basically see a 
> rolling poll through the blockchain as new signed poll messages come in and 
> as their UTXOs are spent. 
>
> This is not vulnerable to sybil attacks because it requires access to UTXOs 
> and response-weight is directly tied to UTXO amount. If someone signs a poll 
> message with a key that can unlock (or is in some other designated way 
> associated with) a UTXO, and then spends that UTXO, their poll response stops 
> being counted for all block heights after the UTXO was spent. 
>
> Why put support and oppose fractions in the message? Who would want to both 
> support and oppose something? Any multiple participant UTXO would. Eg 
> lightning channels would, where each participant disagrees with the other. 
> They need to sign together, so they can have an agreement to sign for the 
> fractions that match their respective channel balances (using a force channel 
> close as a last resort against an uncooperative partner as usual). 

This does not quite work, as lightning channel balances can be changed at any 
time.
I might agree that you have 90% of the channel and I have 10% of the channel 
right now, but if you then send a request to forward your funds out, I need to 
be able to invalidate the previous signal, one that is tied to the fulfillment 
of the forwarding request.
This begins to add complexity.

More pointedly, if the signaling is done onchain, then a forward on the LN 
requires that I put up invalidations of previous signals, also onchain, 
otherwise you could cheaty cheat your effective balance by moving your funds 
around.
But the point of LN is to avoid putting typical everyday forwards onchain.

> This does have the potential issue of public key exposure prior to spending 
> for current addresses. But that could be fixed with a new address type that 
> has two public keys / spend paths: one for spending and one for signing. 

This issue is particularly relevant to vault constructions.
Typically a vault has a "cold" key that is the master owner of the fund, with 
"hot" keys having partial access.
Semantically, we would consider the "cold" key to be the "true" owner of the 
fund, with "hot" key being delegates who are semi-trusted, but not as trusted 
as the "cold" key.

So, we should consider a vote from the "cold" key only.
However, the point is that the "cold" key wants to be kept offline as much as 
possible for security.

I suppose the "cold" key could be put online just once to create the signal 
message, but vault owners might not want to vote because of the risk, and their 
weight might be enough to be important in your voting scheme (consider that the 
point of vaults is to protect large funds).


A sub-issue here with the spend/signal pubkey idea is that if I need to be able 
to somehow indicate that a long-term-cold-storage UTXO has a signaling pubkey, 
I imagine this mechanism of indioating might itself require a softfork, so you 
have a chicken-and-egg problem...

Regards,
ZmnSCPxj
_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

Reply via email to