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.
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
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.
Sowmay jainista
hexteto