Guide Multisig
Alephium prend en charge les adresses multi-signatures de type m-de-n
.
Vous pouvez trouver la commande relative au multisig à http://127.0.0.1:12973/docs dans la section Multi-signature
. Assurez-vous que votre nœud complet est en fonction afin que vous puissiez accéder à l'interface utilisateur de Swagger.
Créer une adresse multisig
Obtenez toutes les clés publiques des comptes pour ce multisig.
La clé publique peut être récupérée avec le portefeuille en appelant:
réponse:
{
"address": "{address}",
"publicKey": "d1b70d2226308b46da297486adb6b4f1a8c1842cb159ac5ec04f384fe2d6f5da28"
}
Par exemple, si vous souhaitez créer une adresse multisig avec 3 comptes nécessitant 2 signatures pour être déverrouillée (2-de-3), vous pouvez faire:
POST /multisig/address
{
"keys": [
"d1b70d2226308b46da297486adb6b4f1a8c1842cb159ac5ec04f384fe2d6f5da28",
"8c1842cb159ac5ec04f384fe2d6f5da2d1b70d2226308b46da297486adb6b41a8f",
"e4a8c1842cb159ac5ec0b70d2226308b46da297486adb6b4f14f384fe2d6f5da31"
],
"mrequired": 2
}
réponse:
Avertissement
Assurez-vous de retenir l'ordre des clés publiques, vous devrez fournir le même ordre plus tard.
Les fonds peuvent maintenant être envoyés à cette adresse.
Pour utiliser les fonds, vous devez construire une transaction multisig. Passez les clés publiques qui signeront la transaction, 2 dans notre exemple. Assurez-vous d'avoir le même ordre que lors de la création de l'adresse:
POST /multisig/build
{
"fromAddress": "1AujpupFP4KWeZvqA7itsHY9cLJmx4qTzojVZrg8W9y9n",
"fromPublicKeys": [
"d1b70d2226308b46da297486adb6b4f1a8c1842cb159ac5ec04f384fe2d6f5da28",
"e4a8c1842cb159ac5ec0b70d2226308b46da297486adb6b4f14f384fe2d6f5da31"
],
"destinations": [
{
"address": "1jVZrg8W9y9AujpupFP4KWeZvqA7itsHY9cLJmTonx4zq",
"amount": "42 ALPH"
}
]
}
réponse:
{
"unsignedTx": "0ecd20654c2e2be708495853e8da35c664247040c00bd10b9b13",
"txId": "798e9e137aec7c2d59d9655b4ffa640f301f628bf7c365083bb255f6aa5f89ef",
"fromGroup": 2,
"toGroup": 1
}
Vous pouvez maintenant envoyer le txId
aux personnes qui doivent signer la transaction. Chacun peut signer en utilisant son portefeuille:
POST /wallets/{wallet_name}/sign
{
"data": "798e9e137aec7c2d59d9655b4ffa640f301f628bf7c365083bb255f6aa5f89ef"
}
réponse:
{
"signature": "9e1a35b2931bd04e6780d01c36e3e5337941aa80f173cfe4f4e249c44ab135272b834c1a639db9c89d673a8a30524042b0469672ca845458a5a0cf2cad53221b"
}
Collectez les signatures, 2 dans notre exemple (car m=2
) et enfin envoyez la transaction:
Note
L'ordre des signatures doit être le même que celui des clés publiques.
POST /multisig/submit
{
"unsignedTx": "0ecd20654c2e2be708495853e8da35c664247040c00bd10b9b13",
"signatures": [
"9e1a35b2931bd04e6780d01c36e3e5337941aa80f173cfe4f4e249c44ab135272b834c1a639db9c89d673a8a30524042b0469672ca845458a5a0cf2cad53221b",
"ab135272b834c1a639db9c89d673a8a30524042b0469672ca845458a5a0cf2cad53221b9e1a35b2931bd04e6780d01c36e3e5337941aa80f173cfe4f4e249c44"
]
}
réponse: