Saltearse al contenido

Tutorial de Gobernanza Multisig

Esta sección se basa en el tutorial de Argumentos en JSON. Si no lo has hecho, por favor completa ese tutorial primero.

Este tutorial también hace referencia al paquete de ejemplo CliArgs.

Para este ejemplo, Ace y Bee realizarán operaciones de gobernanza desde una cuenta “multisig v2” 2-de-2 (una cuenta multisig en cadena según multisig_account.move)

Dado que la cuenta de Ace se creó durante el tutorial Argumentos en JSON, comienza minando una cuenta de dirección vanity para Bee también:

Ventana de terminal
aptos key generate \
--vanity-prefix 0xbee \
--output-file bee.key
Salida
Ventana de terminal
{
"Result": {
"PublicKey Path": "bee.key.pub",
"PrivateKey Path": "bee.key",
"Account Address:": "0xbeec980219d246581cef5166dc6ba5fb1e090c7a7786a5176d111a9029b16ddc"
}
}

Almacena la dirección de Bee en una variable de shell, para que puedas llamarla inline más tarde:

Ventana de terminal
# Tu dirección exacta variará
bee_addr=0xbeec980219d246581cef5166dc6ba5fb1e090c7a7786a5176d111a9029b16ddc

Financia la cuenta de Bee con el faucet:

Ventana de terminal
aptos account fund-with-faucet --account $bee_addr

Ahora Ace y Bee pueden crear una cuenta multisig 2-de-2 donde ambos necesitan firmar para ejecutar transacciones:

Ventana de terminal
aptos multisig create \
--additional-owners $bee_addr \
--num-signatures-required 2 \
--private-key-file ace.key \
--assume-yes

Esto creará una nueva cuenta multisig que requiere 2 de 2 firmas para ejecutar transacciones.

Para proponer una transacción en la cuenta multisig, Ace puede usar:

Ventana de terminal
aptos multisig create-transaction \
--multisig-address $multisig_addr \
--function-id $ace_addr::cli_args::set_vals \
--type-args \
0x1::account::Account \
0x1::chain_id::ChainId \
--args \
u8:123 \
"hex:0x1234" \
"string:hello, multisig world!" \
"bool:[true, false, true]" \
'address:[["0xace", "0xbee"]]' \
--private-key-file ace.key \
--assume-yes

Una vez propuesta la transacción, Bee puede aprobarla y ejecutarla:

Ventana de terminal
aptos multisig approve \
--multisig-address $multisig_addr \
--sequence-number 1 \
--private-key-file bee.key \
--assume-yes

Luego ejecutar la transacción:

Ventana de terminal
aptos multisig execute \
--multisig-address $multisig_addr \
--sequence-number 1 \
--private-key-file bee.key \
--assume-yes

Las cuentas multisig proporcionan:

  1. Seguridad mejorada - Requiere múltiples firmas para transacciones importantes
  2. Gobernanza descentralizada - Permite toma de decisiones distribuida
  3. Protección contra llaves comprometidas - Una sola llave comprometida no puede ejecutar transacciones
  4. Transparencia - Todas las propuestas y aprobaciones son visibles en cadena