El contrato Multisig Lambda es un salto significativo en la programación de contratos inteligentes debido a su uso del tipo sp.lambda
. Introduce la posibilidad de ejecutar funciones arbitrarias que no están predeterminadas en el momento del despliegue del contrato. A continuación se ofrece una descripción detallada de sus componentes principales:
Parámetros iniciales: el contrato se inicializa (__init__
) con una lista de miembros que pueden proponer y firmar propuestas, y el número mínimo de firmas requeridas para ejecutar una propuesta. Estos se almacenan en el almacenamiento del contrato (self.data
), creando un registro de referencia para que el contrato opere.
Función Proponer: La función propose
sirve para crear nuevas propuestas. Los miembros pueden enviar funciones lambda (que incluyen operaciones arbitrarias) que les gustaría que ejecutara el contrato. Estas propuestas se almacenan en una estructura de datos big_map
, y a cada propuesta se le asigna un identificador único.
Función de firma: La función sign
facilita el respaldo de la propuesta. Los miembros pueden firmar para apoyar las propuestas. Estas firmas, adjuntas con el identificador de propuesta único, se recopilan y mantienen en un big_map
separado.
Función de ejecución: la función execute
representa el quid de la operación del contrato. Si una propuesta ha reunido la cantidad requerida de firmas, los miembros pueden invocar esta función para ejecutar la función lambda propuesta y aplicarla al almacenamiento del contrato.
El contrato Multisig Lambda ofrece una amplia versatilidad, adecuado para escenarios que requieren estructuras de control complejas, flexibles y potencialmente dinámicas, como DAO (Organizaciones Autónomas Descentralizadas), servicios de billetera con múltiples propietarios y protocolos DeFi complejos.
Este contrato requiere la ejecución de funciones lambda arbitrarias con múltiples firmas. Introduce los conceptos de envío y firma de funciones lambda. Analicemos sus funciones:
submit_lambda: esta función permite a los miembros enviar funciones lambda al contrato. Básicamente, se trata de proponer una operación de contrato que requiere la aprobación de múltiples firmas. En el panel derecho del IDE de SmartPy, tras el envío exitoso de una función lambda, observará una nueva transacción iniciada por la dirección del remitente a la dirección del contrato.
vote_lambda: esta función permite a los miembros emitir sus votos (firmas) a favor de una función lambda enviada. Después de votar, en el panel IDE, verá una nueva transacción desde la dirección del miembro a la dirección del contrato.
El Contrato MultisigAction introduce un mecanismo de votación democrático en el ámbito de los contratos inteligentes. En este modelo, los miembros proponen acciones específicas, las votan y las ejecutan al alcanzar el quórum. Este contrato presenta una combinación única de consenso humano con ejecución de contrato automatizada, lo que impone un control democrático sobre el comportamiento del contrato.
Los componentes principales de este contrato son:
Parámetros iniciales: al igual que en el contrato Lambda, el contrato MultisigAction toma una lista de miembros y la cantidad de votos requeridos durante la inicialización.
Función Proponer Acción: Esta función sirve para agregar nuevas propuestas. Los miembros pueden enviar acciones predefinidas en el contrato, asociándolas con un identificador único. Estas acciones propuestas se almacenan en un big_map
.
Función de acción de voto: esta función está diseñada para emitir votos a favor de las acciones propuestas. Los votos están asociados con el identificador único de la propuesta y se mantienen en un big_map
distinto.
Función de ejecución de acción: esta función entra en juego cuando una propuesta ha obtenido suficientes votos. Los miembros pueden llamar a esta función para ejecutar la acción propuesta.
El contrato MultisigAction es ideal para situaciones en las que un grupo de personas necesita llegar a un consenso sobre acciones contractuales específicas, como en las DAO donde los miembros votan sobre la asignación de recursos o cambios de protocolo.
submit_proposal: Este es el proceso de proponer una nueva acción. En el contexto de nuestro ejemplo, un miembro propone agregar un nuevo firmante al contrato.
Cuando se realiza esta operación en el IDE de SmartPy, verá que se crea una nueva transacción en el panel derecho del IDE. El resumen de la transacción indicará el remitente (la dirección del miembro proponente) y el destinatario (la dirección del contrato). Podría verse algo como esto:
Aquí, el estado "OK" muestra que la propuesta se envió correctamente.
vote_proposal: El siguiente paso es votar por la propuesta. Esta función permite a los firmantes existentes votar sobre la propuesta enviada en el paso anterior.
Cuando el firmante 1 vote por la propuesta, verá una nueva transacción, con el firmante 1 como remitente y el contrato como receptor. Se registrará una transacción similar cuando el firmante 2 vote a favor de la propuesta:
Estas transacciones indican que tanto el firmante 1 como el firmante 2 han emitido con éxito sus votos a favor de la propuesta.
El contrato MultisigView lleva adelante el concepto de consenso democrático, pero lo aplica a bytes arbitrarios en lugar de acciones contractuales predefinidas. Este contrato abre vías donde se puede lograr un consenso sobre los datos representados como bytes, sin conducir inmediatamente a la ejecución de acciones.
Los principales pilares de este contrato son:
Parámetros iniciales: Al igual que con los contratos anteriores, el Contrato MultisigView se inicializa con una lista de miembros y un número que indica los votos requeridos.
Función de envío de propuesta: esta función permite a los miembros introducir nuevas propuestas en forma de bytes arbitrarios. Los bytes se almacenan en un big_map
, indexado por los propios bytes, lo que representa un identificador de propuesta único.
Función de propuesta de voto: esta función permite a los miembros respaldar las propuestas. Los votos se rastrean en un big_map
separado, vinculado al identificador de bytes único de la propuesta.
Función Se vota: esta función, una vista en cadena, verifica si una propuesta ha adquirido los votos requeridos. Devuelve un valor booleano que indica el estado de votación de la propuesta.
El contrato MultisigView es particularmente útil en los casos en que el contrato inteligente necesita mantener un registro de las propuestas aprobadas, como en aplicaciones criptográficas donde los bytes podrían representar acuerdos hash, pruebas o cualquier otra forma de datos que requiera aprobación colectiva.
El contrato Multisig Lambda es un salto significativo en la programación de contratos inteligentes debido a su uso del tipo sp.lambda
. Introduce la posibilidad de ejecutar funciones arbitrarias que no están predeterminadas en el momento del despliegue del contrato. A continuación se ofrece una descripción detallada de sus componentes principales:
Parámetros iniciales: el contrato se inicializa (__init__
) con una lista de miembros que pueden proponer y firmar propuestas, y el número mínimo de firmas requeridas para ejecutar una propuesta. Estos se almacenan en el almacenamiento del contrato (self.data
), creando un registro de referencia para que el contrato opere.
Función Proponer: La función propose
sirve para crear nuevas propuestas. Los miembros pueden enviar funciones lambda (que incluyen operaciones arbitrarias) que les gustaría que ejecutara el contrato. Estas propuestas se almacenan en una estructura de datos big_map
, y a cada propuesta se le asigna un identificador único.
Función de firma: La función sign
facilita el respaldo de la propuesta. Los miembros pueden firmar para apoyar las propuestas. Estas firmas, adjuntas con el identificador de propuesta único, se recopilan y mantienen en un big_map
separado.
Función de ejecución: la función execute
representa el quid de la operación del contrato. Si una propuesta ha reunido la cantidad requerida de firmas, los miembros pueden invocar esta función para ejecutar la función lambda propuesta y aplicarla al almacenamiento del contrato.
El contrato Multisig Lambda ofrece una amplia versatilidad, adecuado para escenarios que requieren estructuras de control complejas, flexibles y potencialmente dinámicas, como DAO (Organizaciones Autónomas Descentralizadas), servicios de billetera con múltiples propietarios y protocolos DeFi complejos.
Este contrato requiere la ejecución de funciones lambda arbitrarias con múltiples firmas. Introduce los conceptos de envío y firma de funciones lambda. Analicemos sus funciones:
submit_lambda: esta función permite a los miembros enviar funciones lambda al contrato. Básicamente, se trata de proponer una operación de contrato que requiere la aprobación de múltiples firmas. En el panel derecho del IDE de SmartPy, tras el envío exitoso de una función lambda, observará una nueva transacción iniciada por la dirección del remitente a la dirección del contrato.
vote_lambda: esta función permite a los miembros emitir sus votos (firmas) a favor de una función lambda enviada. Después de votar, en el panel IDE, verá una nueva transacción desde la dirección del miembro a la dirección del contrato.
El Contrato MultisigAction introduce un mecanismo de votación democrático en el ámbito de los contratos inteligentes. En este modelo, los miembros proponen acciones específicas, las votan y las ejecutan al alcanzar el quórum. Este contrato presenta una combinación única de consenso humano con ejecución de contrato automatizada, lo que impone un control democrático sobre el comportamiento del contrato.
Los componentes principales de este contrato son:
Parámetros iniciales: al igual que en el contrato Lambda, el contrato MultisigAction toma una lista de miembros y la cantidad de votos requeridos durante la inicialización.
Función Proponer Acción: Esta función sirve para agregar nuevas propuestas. Los miembros pueden enviar acciones predefinidas en el contrato, asociándolas con un identificador único. Estas acciones propuestas se almacenan en un big_map
.
Función de acción de voto: esta función está diseñada para emitir votos a favor de las acciones propuestas. Los votos están asociados con el identificador único de la propuesta y se mantienen en un big_map
distinto.
Función de ejecución de acción: esta función entra en juego cuando una propuesta ha obtenido suficientes votos. Los miembros pueden llamar a esta función para ejecutar la acción propuesta.
El contrato MultisigAction es ideal para situaciones en las que un grupo de personas necesita llegar a un consenso sobre acciones contractuales específicas, como en las DAO donde los miembros votan sobre la asignación de recursos o cambios de protocolo.
submit_proposal: Este es el proceso de proponer una nueva acción. En el contexto de nuestro ejemplo, un miembro propone agregar un nuevo firmante al contrato.
Cuando se realiza esta operación en el IDE de SmartPy, verá que se crea una nueva transacción en el panel derecho del IDE. El resumen de la transacción indicará el remitente (la dirección del miembro proponente) y el destinatario (la dirección del contrato). Podría verse algo como esto:
Aquí, el estado "OK" muestra que la propuesta se envió correctamente.
vote_proposal: El siguiente paso es votar por la propuesta. Esta función permite a los firmantes existentes votar sobre la propuesta enviada en el paso anterior.
Cuando el firmante 1 vote por la propuesta, verá una nueva transacción, con el firmante 1 como remitente y el contrato como receptor. Se registrará una transacción similar cuando el firmante 2 vote a favor de la propuesta:
Estas transacciones indican que tanto el firmante 1 como el firmante 2 han emitido con éxito sus votos a favor de la propuesta.
El contrato MultisigView lleva adelante el concepto de consenso democrático, pero lo aplica a bytes arbitrarios en lugar de acciones contractuales predefinidas. Este contrato abre vías donde se puede lograr un consenso sobre los datos representados como bytes, sin conducir inmediatamente a la ejecución de acciones.
Los principales pilares de este contrato son:
Parámetros iniciales: Al igual que con los contratos anteriores, el Contrato MultisigView se inicializa con una lista de miembros y un número que indica los votos requeridos.
Función de envío de propuesta: esta función permite a los miembros introducir nuevas propuestas en forma de bytes arbitrarios. Los bytes se almacenan en un big_map
, indexado por los propios bytes, lo que representa un identificador de propuesta único.
Función de propuesta de voto: esta función permite a los miembros respaldar las propuestas. Los votos se rastrean en un big_map
separado, vinculado al identificador de bytes único de la propuesta.
Función Se vota: esta función, una vista en cadena, verifica si una propuesta ha adquirido los votos requeridos. Devuelve un valor booleano que indica el estado de votación de la propuesta.
El contrato MultisigView es particularmente útil en los casos en que el contrato inteligente necesita mantener un registro de las propuestas aprobadas, como en aplicaciones criptográficas donde los bytes podrían representar acuerdos hash, pruebas o cualquier otra forma de datos que requiera aprobación colectiva.