CΓ³mo ejecutar un nodo Bitxor con mayor seguridad.
La guΓa Ejecutar un nodo explica cΓ³mo crear fΓ‘cilmente un nodo usando Bitxor Bootstrap. En esa guΓa, el proceso de configuraciΓ³n se lleva a cabo en la misma mΓ‘quina que albergarΓ‘ el nodo, lo que significa que las claves privadas se generan en una mΓ‘quina conectada a Internet. Si necesita un nivel reforzado de seguridad, puede seguir esta guΓa, a costa de un proceso de configuraciΓ³n mΓ‘s complejo.
El resumen de esto es que el comando bitxor-bootstrap start
se divide en una fase config
que se ejecuta sin conexiΓ³n, lo que genera una carpeta de configuraciΓ³n, y el resto del comando start
luego se ejecuta en la mΓ‘quina en lΓnea de destino que albergarΓ‘ el nodo. La clave privada de la cuenta principal nunca sale de la mΓ‘quina sin conexiΓ³n.
Machine |
Function |
---|---|
Configuration |
|
Node |
|
Un nodo tambiΓ©n se puede configurar de tal manera que todas las recompensas de recolecciΓ³n vayan a una cuenta externa sin requerir la clave privada de esta cuenta. Esto se conoce como una configuraciΓ³n sin custodia y debe configurarse una vez que el nodo estΓ© en funcionamiento, por lo que al final de esta pΓ‘gina se proporciona un puntero a la guΓa adecuada.
En la mΓ‘quina de configuraciΓ³n, mientras aΓΊn estΓ‘ en lΓnea:
Instala Bitxor Bootstrap como se indica en la guΓa Uso de Bitxor Bootstrap. AsegΓΊrese de leer tambiΓ©n la secciΓ³n ConfiguraciΓ³n de esa guΓa para familiarizarse con los ajustes preestablecidos y los ensamblajes.
Instale Bitxor CLI como se indica en la guΓa bitxor-cli. Solo necesitas ejecutar:
npm install --global bitxor-cli
Ejecute Bitxor Bootstrap por primera vez, para que pueda descargar las imΓ‘genes de Docker requeridas:
bitxor-bootstrap config -p mainnet -a <assembly> --noPassword
rm -rf target
El resultado de esta primera ejecuciΓ³n es irrelevante, por eso se usa --noPassword
y se elimina la carpeta target
.
Desconecte la mΓ‘quina de configuraciΓ³n de Internet ya que las claves privadas se generarΓ‘n en esta mΓ‘quina desde este punto.
Crea el perfil de la cuenta principal. Esta es la cuenta que recibirΓ‘ todas las tarifas de recolecciΓ³n y cuya puntuaciΓ³n de importancia se utilizarΓ‘ al recolectar.
El propΓ³sito de esta guΓa es asegurarse de que la clave privada de esta cuenta nunca se use en una mΓ‘quina en lΓnea.
Este paso crearΓ‘ un perfil bitxor-cli
para mantener la cuenta principal y firmar transacciones utilizando su clave privada. La mΓ‘quina estΓ‘ fuera de lΓnea ahora, por lo que debe proporcionar algunos datos relacionados con la red.
Note
Los siguientes comandos asumen que desea crear una nueva cuenta principal y usar el comando profile create
. Si ya tiene una cuenta que le gustarΓa usar como principal, use el comando importar perfil
en su lugar.
bitxor-cli profile create --profile offline-main --default \
--url http://localhost:3000 --network MAIN_NET \
--generation-hash 57F7DA205008026C776CB6AED843393F04CD458E0AA2D9F1D5F31A402072B2D6 \
--namespace-id bitxor --divisibility 6 \
--epoch-adjustment 1615853185
bitxor-cli profile create --profile offline-test --default \
--url http://localhost:3000 --network TEST_NET \
--generation-hash 3B5E1FA6445653C971A50687E75E6D09FB30481055E3990C84B25E9222DC1155 \
--namespace-id bitxor --divisibility 6 \
--epoch-adjustment 1616694977
Cuando se le solicite, ingrese una contraseΓ±a para proteger su perfil y seleccione el tipo de importaciΓ³n PrivateKey
:
β Enter your wallet password: β¦ *********
β Select an import type: βΊ PrivateKey
Account
βββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Property β Value β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Address β NCCE5O-BMZHWM-IYZKR6-4WZKFD-4P7DTS-IRXJZ2-3LI β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Public Key β 51C2CB98B61D666A993FA9B25EEBCB48DE5F0B1B7D8B79ECB7AFCB1E5E601108 β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Private Key β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Password β βββββββββ β
βββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SUCCESS Stored offline-main profile
bitxor-cli
ahora estΓ‘ listo para usarse mΓ‘s adelante. Todas las transacciones serΓ‘n firmadas por su cuenta principal, asΓ que asegΓΊrese de que tenga fondos para pagar el Tarifas.
Toma nota de la clave privada de la cuenta principal y guΓ‘rdala en un lugar seguro.
Cree un archivo preestablecido personalizado para Bitxor Bootstrap y asΓgnele el nombre custom.yml
. Debe incluir, al menos, estas lΓneas:
privateKeySecurityMode: PROMPT_MAIN
nodes:
-
mainPrivateKey: ββββββββββββββββββββββββββββββββ
Puede leer mΓ‘s sobre estas propiedades en la secciΓ³n `modo de seguridad <https://github.com/fboucquez/bitxor-bootstrap/blob/main/docs/presetGuides.md#user-content-private-key-security-mode> `__ en la documentaciΓ³n de Bitxor Bootstrap.
Si tiene que realizar personalizaciones, como habilitar voting, tambiΓ©n puede proporcionarlas:
privateKeySecurityMode: PROMPT_MAIN
nodes:
-
mainPrivateKey: ββββββββββββββββββββββββββββββββ
voting: true
host: my-bitxor-node.com # Could also be an IP address
Ejecute Bitxor Bootstrap nuevamente, esta vez con todos los parΓ‘metros requeridos:
bitxor-bootstrap config -p mainnet -a <assembly> -c custom.yml
Se le pedirΓ‘ la contraseΓ±a que utilizarΓ‘ para cifrar los archivos de configuraciΓ³n.
? Enter password to use to encrypt and decrypt custom presets, addresses.yml,
and preset.yml files. When providing a password, private keys will be
encrypted. Keep this password in a secure place! ******
info Password has been provided
info Generating config from preset testnet
info Assembly preset dual
info Generating Main account...
info Generating Transport account...
info Generating Remote account...
info Generating VRF account...
info User for docker resolved: 1000:1000
info Running image using Exec: bitxorplatform/bitxor-server:tools-gcc-0.10.1.8 bash createNodeCertificates.sh
info Certificate for node api-node created
info Generating api-node server configuration
info Generating api-broker broker configuration
info Non-voting node api-node.
info Configuration generated.
Esto genera un directorio objetivo
que contiene un archivo addresses.yml
y mΓΊltiples archivos de configuraciΓ³n.
La clave privada de la cuenta principal no estΓ‘ presente en ninguno de estos archivos.
Vale la pena seΓ±alar que Bitxor Bootstrap habilita recolecciΓ³n remota de forma predeterminada, lo que significa que la clave privada principal nunca estΓ‘ disponible en un archivo de texto sin formato en el cliente. Solo estΓ‘ la clave remota, que actΓΊa como un proxy entre el nodo y su cuenta principal.
Abra custom.yml
y elimine la lΓnea que contiene mainPrivateKey
.
Ahora que Bitxor Bootstrap ya lo usΓ³ en la etapa config
, no es necesario que una clave tan sensible estΓ© en un archivo de texto sin formato.
Copie todo el directorio objetivo
en un pen drive (u otro soporte fuera de la red) para usarlo mΓ‘s tarde.
TodavΓa en la mΓ‘quina de configuraciΓ³n fuera de lΓnea, ahora va a preparar una serie de transacciones de enlace manualmente. Estas transacciones serΓ‘n creadas por bitxor-cli
, firmadas por su cuenta principal, y serΓ‘n movidas a una mΓ‘quina en lΓnea para ser anunciadas mΓ‘s adelante.
Todos los siguientes comandos usan --max-fee 1000000
, lo que significa que se pagarΓ‘ 1 BXR por cada transacciΓ³n. SiΓ©ntase libre de usar un nΓΊmero diferente despuΓ©s de leer la documentaciΓ³n de fees.
Todas las transacciones tienen una fecha lΓmite, lo que significa que deben anunciarse (y confirmarse) antes de que expire la fecha lΓmite.
Actualmente existe una limitaciΓ³n en
bitxor-cli
que establece este plazo en 2 horas despuΓ©s de la creaciΓ³n de la transacciΓ³n, para todas las transacciones que no sean multigrado.
Obtenga la carga ΓΊtil AccountKeyLinkTransaction.
Esto vincula su cuenta principal a la cuenta remota utilizada para recolecciΓ³n remota. Bitxor Bootstrap generΓ³ esta cuenta para usted y puede encontrar su clave pΓΊblica en el archivo target/addresses.yml
:
remote:
publicKey: 1544FE6F504A8B8536C2407664916AFB5C917400FD1B941B981933CDFE52AE3F
En el siguiente parΓ‘metro --linked-public-key
, use la clave pΓΊblica de la cuenta remota:
bitxor-cli transaction accountkeylink --max-fee 1000000 --mode normal \
--linked-public-key 1544FE6F504A8B8536C2407664916AFB5C917400FD1B941B981933CDFE52AE3F \
--action Link
Introduzca la contraseΓ±a que utilizΓ³ cuando creΓ³ el perfil bitxor-cli
y no anuncie la transacciΓ³n (la mΓ‘quina estΓ‘ fuera de lΓnea).
β Enter your wallet password: β¦ *********
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ACCOUNT_KEY_LINK β
βββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Max fee: β 1,000,000 β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Network type: β TEST_NET β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Deadline: β 2021-03-27 10:41:41.286 β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Action: β Link β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Linked key: β 1544FE6F504A8B8536C2407664916AFB5C917400FD1B941B981933CDFE52AE3F β
βββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Signature details β
βββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Payload: β A10000000000000042E0E0A0B8D7E1F27805F3537F80BFEAB6FEAC318908C486 β
β β 4D03260B83ED1D0332D6EA6E086A4B68C578DB690D78D50BDA5C706B1DC66472 β
β β 9326511547E42E0FCC6D13D64FB9BF69B72846C3FE99127D48C3293F473D528F β
β β B902600CB7DA10330000000001984C4140420F000000000026F54C1B0A000000 β
β β 1544FE6F504A8B8536C2407664916AFB5C917400FD1B941B981933CDFE52AE3F β
β β 01 β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Hash: β 08C63D3AFAC3767F43053AFF1ACA61381FE81929B2384B91C450010A547AFA4A β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β 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 payloads.txt
. Elimine todos los espacios y otras decoraciones para obtener una sola lΓnea que contenga solo nΓΊmeros y letras mayΓΊsculas:
A100000000000000703C88DEDC4ABC2917F00ADB12C45F2C333B1113405C3CFAB289E78D9C54DDFCB1FE7C3048B6DA735568A935C6C08AF7E70AEC614A2EE9590967A7A044E52B0DCC6D13D64FB9BF69B72846C3FE99127D48C3293F473D528FB902600CB7DA10330000000001984C4140420F000000000038F32C1B0A0000001544FE6F504A8B8536C2407664916AFB5C917400FD1B941B981933CDFE52AE3F01
Obtain the VrfKeyLinkTransaction payload.
Esta clave es necesaria para la recolecciΓ³n.
Nuevamente, Bitxor Bootstrap ya ha generado esta clave para usted y puede encontrarla en el archivo target/addresses.yml
:
vrf:
publicKey: 856B6CCA574508158D66046CACEA2D81CB626DEEFDD3B6C466514CE31F32A52B
Use la clave pΓΊblica de la cuenta VRF en el parΓ‘metro --linked-public-key
a continuaciΓ³n y no anuncie la transacciΓ³n (la mΓ‘quina estΓ‘ fuera de lΓnea):
bitxor-cli transaction vrfkeylink --max-fee 1000000 --mode normal \
--linked-public-key 856B6CCA574508158D66046CACEA2D81CB626DEEFDD3B6C466514CE31F32A52B \
--action Link
Nuevamente, copie el contenido del cuadro Payload
, recΓ³rtelo y agrΓ©guelo a payloads.txt
, en una nueva lΓnea.
Obtenga la carga ΓΊtil VotingKeyLinkTransaction.
Esta clave solo es necesaria para los nodos de votaciΓ³n.
Si agregΓ³ voting: true
a custom.yml
al crear la configuraciΓ³n, entonces Bitxor Bootstrap tambiΓ©n ha creado esta clave en target/addresses.yml
:
.. code-block:: yaml
- voting:
publicKey: 05693B4300ABFD28CD6BA434DD26F9FAF2342927FE32840898DCB895B8A17E84
Use la clave pΓΊblica de la cuenta de votaciΓ³n en el parΓ‘metro --linked-public-key
a continuaciΓ³n y no anuncie la transacciΓ³n (la mΓ‘quina estΓ‘ fuera de lΓnea):
bitxor-cli transaction votingkeylink --max-fee 1000000 --mode normal \
--linked-public-key 05693B4300ABFD28CD6BA434DD26F9FAF2342927FE32840898DCB895B8A17E84 \
--action Link --start-point 1 --end-point 360
Nuevamente, copie el contenido del cuadro Payload
, recΓ³rtelo y agrΓ©guelo a payloads.txt
, en una nueva lΓnea.
Copie payloads.txt
en el pen drive donde previamente copiΓ³ la carpeta target
.
MuΓ©vase ahora a la mΓ‘quina en lΓnea, la que estΓ‘ permanentemente conectada a Internet y alojarΓ‘ el nodo. Enchufe el pendrive con la configuraciΓ³n del nodo.
Instale Bitxor Bootstrap como se indica en la guΓa Uso de Bitxor Bootstrap.
Instale Bitxor CLI como se indica en la guΓa bitxor-cli. Solo necesitas ejecutar:
npm install --global bitxor-cli
Crear un perfil de locutor para bitxor-cli
. Esta es solo una cuenta temporal utilizada para anunciar las cargas ΓΊtiles; no requiere fondos:
Utilice el parΓ‘metro --url
para especificar el NODE_URL para acceder a la red.
bitxor-cli profile create --profile announcer --default \
--network MAIN_NET \
--url <NODE_URL>
bitxor-cli profile create --profile announcer --default \
--network TEST_NET \
--url <TESTNET_NODE_URL>
Cuando se le solicite, ingrese una contraseΓ±a para proteger su perfil y seleccione el tipo de importaciΓ³n PrivateKey
:
β Enter your wallet password: ... *********
β Select an import type: Β» PrivateKey
...
SUCCESS Stored announcer profile
Ahora usarΓ‘ bitxor-cli
para anunciar a la red las transacciones que preparΓ³ en payloads.txt
.
Anuncie el enlace de la llave remota:
carga ΓΊtil de la transacciΓ³n bitxor-cli --sync --announce
β Ingrese la carga ΓΊtil de la transacciΓ³n:
Pegue la primera lΓnea de texto larga de payloads.txt
y presione Entrar:
SUCCESS Transaction loaded:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ACCOUNT_KEY_LINK β
βββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Max fee: β 1,000,000 β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Network type: β TEST_NET β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Deadline: β 2021-03-27 10:41:41.286 β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Signer: β TBGPYD-CO35V2-AMOYEJ-LEM44H-372M3I-6RWVFY-QCY β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Action: β Link β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Linked key: β 1544FE6F504A8B8536C2407664916AFB5C917400FD1B941B981933CDFE52AE3F β
βββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ACCOUNT_KEY_LINK β
βββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Max fee: β 1,000,000 β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Network type: β TEST_NET β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Deadline: β 2021-03-27 10:41:41.286 β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Signer: β CC6D13D64FB9BF69B72846C3FE99127D48C3293F473D528FB902600CB7DA1033 β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Action: β Link β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Linked key: β 1544FE6F504A8B8536C2407664916AFB5C917400FD1B941B981933CDFE52AE3F β
βββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Signature details β
βββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Payload: β A10000000000000042E0E0A0B8D7E1F27805F3537F80BFEAB6FEAC318908C486 β
β β 4D03260B83ED1D0332D6EA6E086A4B68C578DB690D78D50BDA5C706B1DC66472 β
β β 9326511547E42E0FCC6D13D64FB9BF69B72846C3FE99127D48C3293F473D528F β
β β B902600CB7DA10330000000001984C4140420F000000000026F54C1B0A000000 β
β β 1544FE6F504A8B8536C2407664916AFB5C917400FD1B941B981933CDFE52AE3F β
β β 01 β
βββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Hash: β 08C63D3AFAC3767F43053AFF1ACA61381FE81929B2384B91C450010A547AFA4A β
βββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
...
SUCCESS Transaction announced
SUCCESS Transaction confirmed
bitxor-cli
estΓ‘ atascado en Procesando
durante mΓ‘s de un minuto), puede deberse a varias cosas. Sin interrumpir bitxor-cli
, copia el hash de la transacciΓ³n, abre una nueva terminal y ejecuta:bitxor-cli transaction status --hash <transaction hash>
Si ha habido algΓΊn problema con la transacciΓ³n, esto deberΓa darte la causa y luego puedes interrumpir bitxor-cli
.
Si necesita volver a intentarlo, nunca vuelva a anunciar la misma carga ΓΊtil. Crea uno nuevo (desde la mΓ‘quina de ConfiguraciΓ³n) y vuelve a anunciarlo. The most common problems are:
Fondos insuficientes (Fallo_Core_Insufficient_Balance
): La cuenta principal (que firmΓ³ la transacciΓ³n) no tiene fondos suficientes para pagar la tarifa. Transfiera algunos fondos e intente con una nueva carga ΓΊtil.
Fecha lΓmite vencida (Failure_Core_Past_Deadline
): crea una nueva carga ΓΊtil y anΓΊnciala nuevamente antes de que expire la fecha lΓmite (consulta el cuadro Acerca de las fechas lΓmite arriba).
Tarifa insuficiente: no se informarΓ‘ ningΓΊn error, pero si la tarifa es demasiado baja, la mayorΓa de los nodos lo ignorarΓ‘n. Vuelva a intentarlo con una tarifa mΓ‘s alta o prepΓ‘rese para esperar mucho tiempo.
Payload re-anunciado: bitxor-cli
se quedarΓ‘ atascado en Processing
y no obtendrΓ‘ informaciΓ³n relevante del estado de la transacciΓ³n
. Simplemente no anuncie la misma carga ΓΊtil mΓ‘s de una vez.
Anuncie el enlace de la clave VRF:
bitxor-cli transaction payload --sync --announce
β Ingrese la carga ΓΊtil de la transacciΓ³n:
Pegue la segunda lΓnea de texto larga de payloads.txt
y espere a que se acepte la transacciΓ³n.
Anuncie el enlace de la clave de votaciΓ³n (si el suyo es un nodo de votaciΓ³n):
bitxor-cli transaction payload --sync --announce
β Ingrese la carga ΓΊtil de la transacciΓ³n:
Pegue la tercera lΓnea larga de texto de payloads.txt
y espere a que se acepte la transacciΓ³n.
Si se confirmaron todas las transacciones de enlace clave, el nodo ahora estΓ‘ configurado y finalmente puede iniciarlo.
Vaya al directorio que contiene el directorio objetivo
copiado de la mΓ‘quina de configuraciΓ³n e inicie el nodo:
bitxor-bootstrap start
No se requieren otros parΓ‘metros, la configuraciΓ³n ya estΓ‘ presente en el directorio target
y Bitxor Bootstrap la usarΓ‘.
El nodo deberΓa iniciarse y deberΓa aparecer una gran cantidad de resultados de depuraciΓ³n en la pantalla.
info Password has been provided
info The generated preset target/preset.yml already exist, ignoring configuration. (run -r to reset or --upgrade to upgrade)
...
Su nodo ahora deberΓa estar en funcionamiento y su clave privada principal nunca ha salido de la mΓ‘quina de configuraciΓ³n (fuera de lΓnea).
Para mayor seguridad, ahora puede convertir la cuenta principal del nodo en un Cuenta Multifirma. Esto es ΓΊtil, por ejemplo, para los proveedores de servicios que trabajan de manera sin custodia. Lea acerca de este proceso en la guΓa ConfiguraciΓ³n de nodos sin custodia.