CΓ³mo ceder el control de la cuenta principal de un nodo a una cuenta externa, de modo que nunca se requiera la clave privada de la cuenta externa en el proceso de configuraciΓ³n del nodo.
Esto es ΓΊtil, por ejemplo, para los proveedores de servicios (tambiΓ©n conocidos como proveedores de servicios de replanteo o proveedores de servicios de alojamiento) que trabajan de manera sin custodia. Es decir, los clientes contratan al proveedor de servicios para que les configure nodos y les envΓen las recompensas de los nodos a sus cuentas principales, sin siquiera enviar sus claves de cuenta al proveedor de servicios.
Esta guΓa estΓ‘ destinada al proveedor de servicios que configura un nodo en nombre de su cliente.
Hay muchos mecanismos para lograr esto en Bitxor. Esta pΓ‘gina explica la mΓ‘s simple, asumiendo que el cliente no es experto en tecnologΓa (y por lo tanto prefiere no usar herramientas de lΓnea de comandos como bitxor-cli
), y que la clave del cliente no estΓ‘ permitido en una mΓ‘quina en lΓnea.
Note
El proceso es aΓΊn mΓ‘s simple si se permite que la clave del cliente estΓ© en lΓnea.
Pronto se agregarΓ‘ una guΓa a esta pΓ‘gina que describe este escenario.
En resumen, una vez que el nodo estΓ© completamente configurado, el control total de la cuenta principal del nodo se transferirΓ‘ a la cuenta del cliente (llamada cuenta externa) al convertir la cuenta principal en un :doc:` ../../conceptos/cuenta-multigrado`:
El proveedor de servicios prepararΓ‘ una transacciΓ³n para firmar fuera de lΓnea y se la enviarΓ‘ al cliente.
El cliente firma la transacciΓ³n utilizando su Wallet desde una mΓ‘quina fuera de lΓnea y devuelve la firma.
El proveedor de servicios anuncia la transacciΓ³n.
En la mΓ‘quina de Nodo:
Tenga un nodo de Bitxor en ejecuciΓ³n, configΓΊrelo con la guΓa Ejecutar un nodo seguro.
En la mΓ‘quina de ConfiguraciΓ³n:
Tener bitxor-cli instalado. Esto ya se ha instalado en la guΓa Ejecutar un nodo seguro.
Tener un perfil bitxor-cli para la cuenta principal del nodo. Esto tambiΓ©n se ha hecho ya en la guΓa.
AsegΓΊrese de que el perfil correcto sea el predeterminado (utilice bitxor-cli profile setdefault
o agregue el parΓ‘metro --profile
a todos los comandos a continuaciΓ³n).
En la mΓ‘quina del Cliente:
Tener Bitxor Desktop Wallet instalado y configurado con la cuenta del cliente (cuenta externa).
Hasta ahora, la cuenta principal del nodo es una cuenta normal. Se anunciarΓ‘ una MultisigAccountModificationTransaction que la convertirΓ‘ en una Cuenta Multifirma con un ΓΊnico cosignatario: la cuenta externa.
Esto significa que cualquier operaciΓ³n en la cuenta principal requerirΓ‘ la firma de la cuenta externa.
Esta transacciΓ³n serΓ‘ preparada por el proveedor de servicios utilizando bitxor-cli
y enviada al cliente para su firma.
Notas sobre esta transacciΓ³n:
El parΓ‘metro --max-fee 1000000
significa que se pagarΓ‘ 1 BXR por la transacciΓ³n. SiΓ©ntase libre de usar un nΓΊmero diferente despuΓ©s de leer la documentaciΓ³n de fees.
El plazo de transacciΓ³n por defecto en bitxor-cli
es de 2 horas. Utilice el parΓ‘metro --deadline
si necesita mΓ‘s tiempo para obtener la firma del cliente.
Ejecute esto desde la mΓ‘quina de configuraciΓ³n:
bitxor-cli transaction multisigmodification --max-fee 1000000 \
--mode normal --min-removal-delta 1 --min-approval-delta 1 \
--action Add --aggregate-type AGGREGATE_COMPLETE \
--cosignatory-addresses ββββββββββββββββββββββββββββββββ
Use la direcciΓ³n de cuenta externa como cosignatario y no anuncie la transacciΓ³n:
β Enter your wallet password: β¦ *********
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AGGREGATE_COMPLETE β
ββββββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Max fee: β 1,000,000 β
ββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Network type: β TEST_NET β
ββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Deadline: β 2021-03-27 14:51:01.099 β
ββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Inner transaction 1 of 1 - MULTISIG_ACCOUNT_MODIFICATION β
ββββββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β [Inner tx. 1 of 1] Min approval delta: β 1 β
ββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β [Inner tx. 1 of 1] Min removal delta: β 1 β
ββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β [Inner tx. 1 of 1] Address addition (1 / 1): β TAJ3DW-DCRWBU-V6CXBQ-TNAAKH-UPRPQ6-I2QW7V-7JA β
ββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Signature details β
ββββββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Payload: β F800000000000000FAE63B1603A8FA30BF5F8A7E5C7906349AAA89591BD20651 β
β β 013704F4E03894206D6543339716A8E4391E53873F8F43BEC10D9706F74764C7 β
β β 940C07A756F4950ACC6D13D64FB9BF69B72846C3FE99127D48C3293F473D528F β
β β B902600CB7DA1033000000000198414140420F0000000000EB39311C0A000000 β
β β 5B8F6FEBA2C4D0C7E1C084DA1E828B68C46EE7EE247811BE3DBDCE913E40E027 β
β β 50000000000000005000000000000000CC6D13D64FB9BF69B72846C3FE99127D β
β β 48C3293F473D528FB902600CB7DA103300000000019855410101010000000000 β
β β 9813B1D8628D834AF8570C26D00147A3E2F8791A85BF5FA4 β
ββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Hash: β 13241107ACC87B4F7B047C335856326D86AC0F4FF2C0F52CCA1D7FC4E6491CB8 β
ββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Signer: β CC6D13D64FB9BF69B72846C3FE99127D48C3293F473D528FB902600CB7DA1033 β
ββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Do you want to announce this transaction? β¦ no
Seleccione todo el texto en el cuadro Payload
y pΓ©guelo en un nuevo archivo de texto llamado payload.txt
. Elimine todos los espacios y otras decoraciones para obtener una sola lΓnea que contenga solo nΓΊmeros y letras mayΓΊsculas:
F800000000000000FAE63B1603A8FA30BF5F8A7E5C7906349AAA89591BD20651013704F4E03894206D6543339716A8E4391E53873F8F43BEC10D9706F74764C7940C07A756F4950ACC6D13D64FB9BF69B72846C3FE99127D48C3293F473D528FB902600CB7DA1033000000000198414140420F0000000000EB39311C0A0000005B8F6FEBA2C4D0C7E1C084DA1E828B68C46EE7EE247811BE3DBDCE913E40E02750000000000000005000000000000000CC6D13D64FB9BF69B72846C3FE99127D48C3293F473D528FB902600CB7DA1033000000000198554101010100000000009813B1D8628D834AF8570C26D00147A3E2F8791A85BF5FA4
Esta carga ΓΊtil no se puede anunciar sin una firma de la cuenta externa, ya que se ha agregado como cosignatario.
EnvΓe payload.txt
al cliente, como un archivo de texto sin formato.
El cliente utiliza su Bitxor Desktop Wallet para crear una firma para la carga ΓΊtil recibida:
Abra Desktop Wallet y haga clic en Ir a transacciones fuera de lΓnea
en la esquina superior derecha.
Seleccione la pestaΓ±a Cosignar transacciΓ³n
.
Pegue la carga ΓΊtil completa en el cuadro grande con la etiqueta Pegar la carga ΓΊtil de la transacciΓ³n
.
Haz clic en Importar carga ΓΊtil
.
Seleccione el Nombre del perfil
y la cuenta externa (en el cuadro De:
).
Ingrese la ContraseΓ±a
de la billetera y haga clic en Confirmar
.
Se obtendrΓ‘ un cΓ³digo QR y una larga lΓnea de texto similar a esta:
{"parentHash":"13241107ACC87B4F7B047C335856326D86AC0F4FF2C0F52CCA1D7FC4E6491CB8","signature":"1D8FD3A815C45B9FFCCD48FF9DE24FAD172D373E889D25F3005FDAA0F87DB70AB9ABD2ECB79E467577FCE49B760729706247B24479CB32A88A4A1C1974D4220A","signerPublicKey":"7F71566C57A8E5B03EADBA28E4CA057428DDB37C766604B2827BC2D79BB195B8","version":{"lower":0,"higher":0}}
Copy the whole line of text (for example by triple-clicking on it) and paste it into a new text file named signature.txt
.
EnvΓe signature.txt
al proveedor de servicios, como un archivo de texto sin formato.
Anuncie la transacciΓ³n de modificaciΓ³n multisig desde cualquier mΓ‘quina en lΓnea que tenga instalado bitxor-cli
y tenga un perfil de anunciador (como se explica en Ejecutar un nodo seguro ):
bitxor-cli transaction payload --sync --announce --profile C
? Enter the transaction payload: F8000000000...
SUCCESS Transaction loaded:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AGGREGATE_COMPLETE β
ββββββββββββββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ€
β Max fee: β 1,000,000 β
ββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββ€
β Network type: β TEST_NET β
ββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββ€
β Deadline: β 2021-03-27 14:51:01.099 β
ββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββ€
β Signer: β TBGPYD-CO35V2-AMOYEJ-LEM44H-372M3I-6RWVFY-QCY β
ββββββββββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββββ€
β Inner transaction 1 of 1 - MULTISIG_ACCOUNT_MODIFICATION β
ββββββββββββββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ€
β [Inner tx. 1 of 1] Min approval delta: β 1 β
ββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββ€
β [Inner tx. 1 of 1] Min removal delta: β 1 β
ββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββ€
β [Inner tx. 1 of 1] Address addition (1 / 1): β TAJ3DW-DCRWBU-V6CXBQ-TNAAKH-UPRPQ6-I2QW7V-7JA β
ββββββββββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββββ
? Matriz JSON de cofirma entre corchetes (ingresar para omitir): [{"parentHash"...
Cuando se le solicite la carga ΓΊtil de la transacciΓ³n, pegue el contenido de payload.txt
(la lΓnea larga de caracteres hexadecimales).
Cuando se le solicite la firma conjunta, pegue el contenido de signature.txt
(la lΓnea larga de texto JSON que el cliente devolviΓ³), PERO ENCΓRRELO ENTRE BRACKETS.
This is, the cosignature should start with [
and end with ]
.
DespuΓ©s de unos segundos deberΓa obtener:
...
SUCCESS TransacciΓ³n anunciada
ΓXITO TransacciΓ³n confirmada
A partir de este momento, no se puede realizar ninguna operaciΓ³n en la cuenta principal del nodo sin la autorizaciΓ³n de la cuenta externa, que es controlada por el cliente.
El cliente puede realizar operaciones en la cuenta principal utilizando el Bitxor Desktop Wallet y sus facilidades multisig.