¿Cómo funciona la firma de varias personas?

Creé un contrato inteligente DAO donde alrededor de 20 personas votan por propuestas. Cada uno hace un nuevo Tx.

La firma fuera de línea es buena para minimizar el costo del gas. ¿Se pregunta cómo funciona la firma fuera de línea con funciones de contrato, también con varias personas firmando diferentes votos?

Escuché que varias personas firman su saldo en el estado del canal de la red de iluminación.

Respuestas (2)

Utiliza la firma de la misma manera que lo haría si una persona estuviera firmando. Cada persona deberá pagar los costos de transacción necesarios para presentar su firma. Sin embargo, podría crear una sola función que analice automáticamente todos los mensajes firmados por un precio un poco más económico que si enviara una nueva transacción para analizar cada mensaje firmado. Potencialmente podría implementar algo como merkle airdrops ( https://blog.ricmoo.com/merkle-air-drops-e6406945584d )

Hay algunos problemas que vienen con la verificación de mensajes firmados, tengo un conjunto de contratos y un programa de firma de Python que demuestran el flujo de trabajo necesario para firmar mensajes:

Al firmar mensajes, se anteponen con los siguientes datos: https://github.com/postables/Postables-Payment-Channel/blob/7d2f91bb060f80b139cab72b5fdff79d116f6210/solidity/ChannelsV4.sol#L12

También tengo un script de python que se puede usar para firmar mensajes: https://github.com/postables/Postables-Payment-Channel/blob/develop/python/signer.py

La siguiente función de solidez detalla cómo verificar el mensaje ORIGINAL que se firmó, junto con el firmante del mensaje firmado: https://github.com/postables/Postables-Payment-Channel/blob/7d2f91bb060f80b139cab72b5fdff79d116f6210/solidity/ChannelsV4.sol# L257

La siguiente función de solidez detalla cómo verificar el firmante de un mensaje: https://github.com/postables/Postables-Payment-Channel/blob/7d2f91bb060f80b139cab72b5fdff79d116f6210/solidity/ChannelsV4.sol#L192

Dijiste "por un poco más barato". Proporcionalmente, ¿cuánto costo de gas se puede ahorrar con este método indicado?
No he podido calcular la cantidad exacta, sin embargo, cada transacción que envíe debe incluir una gasolina de 21000, por lo que teóricamente ahorraría 21K de gasolina por cada transacción que no envíe. De acuerdo, no funcionará exactamente así, pero ahorrará algo.

Sí, puede hacer que las personas firmen sin conexión, reunir todas las firmas y enviarlas como parte de la sección de datos de una sola transacción y hacer que el contrato verifique la cantidad de firmas válidas. Esto debería ahorrarle gasolina y, a menudo, permitirá un contrato más simple.

Vea este ejemplo de una billetera multisig que funciona así: https://medium.com/@ChrisLundkvist/exploring-simpler-ethereum-multisig-contracts-b71020c19037

Sin embargo, tenga en cuenta que cada firma que agregue aumentará el costo del gas de la transacción que las envía, y el gas total que puede usar en una sola transacción está limitado por el límite de gas del bloque, que puede cambiar. Por lo tanto, si la cantidad de firmas que se pueden requerir es alta o ilimitada, es posible que aún deba redactar el contrato para que las firmas se puedan dividir en varias transacciones.