- Delegar CROs a un nodo
- Comprobar cantidad delegada
- Recuperar CROs de un nodo al que le delegaste
- Auto-delegación automática
- Transferir CROs de una cuenta a otra
- Comprobar el saldo de una cuenta
- Cambiar datos de tu propio nodo validador
La delegación de tokens es un préstamo que le haces al nodo. Para entendernos, vamos a pensar en personas y nodos.
Cuando Leslie te manda los tCROs (o ya pensando en la mainnet, cuando tú tienes los CROs) los tCROs/CROs son tuyos, de tu persona.
Para crear un nodo, tú le prestas (delegas) a tu nodo una cantidad de tCROs/CROs (normalmente hacíamos esto con todos los tCROs disponibles)
El nodo entonces empieza a funcionar, a firmar bloques y a 😍 generar recompensas 💵
Estas recompensas son automáticamente enviadas a tu cuenta personal desde el nodo. Ahí tu puedes elegir si quedártelas (y gastar tus tCROs/CROs en lo que sea) o re-invertirlas (re-delegarlas).
Nota: Piensa que esto también se puede hacer desde tu cuenta personal a CUALQUIER nodo...
Con este comando, podrás delegar los tCROs/CROs que tengas como persona a un nodo que no sea tuyo. Esto es bueno por si no quieres tener que preocuparte de mantener el nodo online, no quieres liarte con mantenimientos de servidores y otras cosas por el estilo.
Esto es de sentido común, pero piensa que estás poniendo en juego tus tCROs/CROs en el nodo de otro, así que hazlo sólo con alguien en quien confíes.
Ojo, tampoco es que ese alguien se vaya a escapar con tus tCROs/CROs, pero sí tienes que tener en cuenta que si el nodo es penalizado (por tiempo offline o algo así) tu también perderás parte de tus tCROs/CROs.
Para delegar tus tCROs/CROs a otro nodo, ejecuta esto:
./chain-maind tx staking delegate [VALIDATOR-ADDRESS] [AMOUNT] --from=[LOCAL-KEY] --chain-id="testnet-croeseid-1" --gas-prices 0.1basetcro
Parámetros:
[VALIDATOR-ADDRESS]
es la dirección pública del nodo validador. Puedes irte al explorer, buscar tu nodo preferido y sacar de ahí la "Operator Address" (que empieza por "tcrocncl")[AMOUNT]
es la cantidad de tCROs/CROs que quieres delegar. Recuerda poner el nombre de la moneda, ej. "100tcro"[LOCAL-KEY]
es el nombre de tu cuenta, que puedes sacarlo haciendo./chain-maind keys list
--chain-id="testnet-croeseid-1"
ahora mismo estamos en la testnet, así que asegúrate de que esto es correcto si hay otra red (mainnet)
Cuando lo ejecutes, te pedirá tu passphrase. Confirma la transacción pulsando "Y" y ya se habrán delegado tus tCROs/CROs
🙋 - Recuerda! Las recompensas por estos tCROs/CROs que has delegado volverán a tu cuenta automáticamente. Quizás sea buena idea auto-delegarlos automáticamente.
En un momento dado, puedes querer comprobar cuánto has delegado en un nodo, para saber cuánto tienes, básicamente.
Para ello, ejecuta:
./chain-maind query staking delegation [DELEGATOR-ADDRESS] [VALIDATOR-ADDRESS]
Parámetros:
[DELEGATOR-ADDRESS]
es tu propia dirección, que conseguiste al configurar elchain-maind
[VALIDATOR-ADDRESS]
es la dirección (tcrocncl....
) del nodo al que le delegaste tus tCROs/CROs
Llegado el caso, querrás recuperar los tCROs/CROs del nodo al que se los delegaste.
Para ello, ejecuta:
./chain-maind tx staking unbond [VALIDATOR-ADDRESS] [AMOUNT] --from=[LOCAL-KEY] --chain-id="testnet-croeseid-1" --gas-prices 0.1basetcro
Parámetros:
[VALIDATOR-ADDRESS]
es la dirección (tcrocncl....
) del nodo al que le delegaste tus tCROs/CROs[AMOUNT]
es la cantidad de tCROs/CROs que quieres recuperar. Recuerda poner el nombre de la moneda, ej. "100tcro"[LOCAL-KEY]
es el nombre de tu cuenta, que puedes sacarlo haciendo./chain-maind keys list
--chain-id="testnet-croeseid-1"
ahora mismo estamos en la testnet, así que asegúrate de que esto es correcto si hay otra red (mainnet)
Mediante estos comandos, vas a poder auto-delegar tus recompensas directamente a un nodo
#! /bin/bash
while true; do export ACCOUNT=[ACCOUNT NAME]; export PASS="[PASSWORD]"; export CHAIN=testnet-croeseid-1; export NODE="http://127.0.0.1:26657"; VALOPER=$(echo $PASS | ${HOME}/chain-maind keys show $ACCOUNT --bech val --address); NODETODELEGATE=VALOPER; echo $PASS | ${HOME}/chain-maind tx distribution withdraw-rewards $VALOPER --from $ACCOUNT --commission --chain-id $CHAIN --gas-prices 0.1basetcro --node $NODE --yes; sleep 30; value=$(${HOME}/chain-maind query bank balances $(echo $PASS | ${HOME}/chain-maind keys show $ACCOUNT --address) --chain-id $CHAIN --node $NODE -o json | jq -r '.balances | .[].amount'); value=$(($value - 500000)); echo $PASS | ${HOME}/chain-maind tx staking delegate $NODETODELEGATE ${value}basetcro --from $ACCOUNT --chain-id $CHAIN --node $NODE --gas-prices 0.1basetcro --yes; sleep 300; done
En este archivo hay que tener en cuenta varias cosas:
do export ACCOUNT=[ACCOUNT NAME]
Aquí tienes que cambiar [ACCOUNT NAME] por el nombre de tu cuenta (es el que pusiste al inicializar elchain-maind
, puedes sacarlo haciendo./chain-maind keys list
)export PASS="[PASSWORD]"
Aquí tienes que cambiar [PASSWORD] por la passphrase que usas cuando haces cualquier acción con elchain-maind
${HOME}/chain-maind
esto aparece en varias partes del archivo, y hay que ponerlo de acuerdo a dónde tengas el ejecutablechain-maind
. Lo de${HOME}
hace referencia a tu directorio "home" que suele ser/home/ubuntu
NODETODELEGATE=VALOPER
esto dice que la delegación sea a tu propio nodo, pero en algunas circunstancias, querrás delegar tus tCROs/CROs a otro nodo, si es así, pon aquí eltcrocncl....
del nodo al que quieres delegar tus recompensas de tCROs/CROs
chmod +x node-auto-delegate-rewards.sh
3.- A continuación, tienes que crear un archivo (/etc/systemd/system/node-auto-delegate-rewards.service) con este contenido:
[Unit]
Description=Crypto.com croeseid rewards manager
After=network-online.target
[Service]
Type=simple
Restart=always
RestartSec=1
User=ubuntu
LimitNOFILE=65536
WorkingDirectory=/home/ubuntu
ExecStart=/home/ubuntu/node-auto-delegate-rewards.sh
[Install]
WantedBy=multi-user.target
En este archivo, de nuevo, hay que comprobar que los directorios sean correctos, dependiendo de dónde tienes el chain-maind
sudo systemctl start node-auto-delegate-rewards.service
journalctl -u node-auto-delegate-rewards -f
Si necesitas transferir CROs de una cuenta a otra puedes ejecutar esto:
chain-maind tx bank send [SENDING-ADDRESS] [RECEIVING-ADDRESS] [AMOUNT] --chain-id="testnet-croeseid-1" --gas-prices 0.1basetcro
Parámetros:
[SENDING-ADDRESS]
es la dirección (tcro....
) desde la que quieres mandar tus tCROs/CROs (debe ser tuya, por supuesto)[RECEIVING-ADDRESS]
es la dirección (tcro....
) a la que quieres REGALAR/mandar tus tCROs/CROs[AMOUNT]
es la cantidad de tCROs/CROs que quieres mandar. Recuerda poner el nombre de la moneda, ej. "100tcro"--chain-id="testnet-croeseid-1"
ahora mismo estamos en la testnet, así que asegúrate de que esto es correcto si hay otra red (mainnet)
Para saber el saldo que hay en una cuenta (tuya o de otros) simplemente ejecuta esto:
./chain-maind query bank balances [ADDRESS] --output json | jq
Parámetros:
[ADDRESS]
es la dirección (tcro....
) de la que quieres consultar la cantidad de tCROs/CROs
En alguna circunstancia puede que necesites cambiar algún dato de tu propio nodo validador.
Una cosa importante es que es necesario que el nodo tenga tCROs/CROs disponibles para pagar el GAS de la transacción, así que si estás auto-delegando, posiblemente no tengas nada de tCROs/CROs disponibles. Puedes ir al faucet (https://chain.crypto.com/faucet) y mandarte 10 tCROs/CROs
Para cambiar algún dato, ejecuta:
./chain-maind tx staking edit-validator --from=[LOCAL-KEY] --chain-id="testnet-croeseid-1" --SETTING=NEW-VALUE
Parámetros:
[LOCAL-KEY]
es el nombre de tu cuenta, que puedes sacarlo haciendo./chain-maind keys list
--chain-id="testnet-croeseid-1"
ahora mismo estamos en la testnet, así que asegúrate de que esto es correcto si hay otra red (mainnet)--SETTING=NEW-VALUE
es la propiedad que quieras cambiar. Hay muchas:
-b, --broadcast-mode string Transaction broadcasting mode (sync|async|block) (default "sync")
--commission-rate string The new commission rate percentage
--details string The validator's (optional) details (default "[do-not-modify]")
--fees string Fees to pay along with transaction; eg: 10uatom
--from string Name or address of private key with which to sign
--gas string gas limit to set per-transaction; set to "auto" to calculate sufficient gas automatically (default 200000)
--gas-adjustment float adjustment factor to be multiplied against the estimate returned by the tx simulation; if the gas limit is set manually this flag is ignored (default 1)
--gas-prices string Gas prices in decimal format to determine the transaction fee (e.g. 0.1uatom)
--identity string The (optional) identity signature (ex. UPort or Keybase) (default "[do-not-modify]")
--keyring-backend string Select keyring's backend (os|file|kwallet|pass|test) (default "os")
--keyring-dir string The client Keyring directory; if omitted, the default 'home' directory will be used
--memo string Memo to send along with transaction
--min-self-delegation string The minimum self delegation required on the validator
--moniker string The validator's name (default "[do-not-modify]")
--node string <host>:<port> to tendermint rpc interface for this chain (default "tcp://localhost:26657")
--security-contact string The validator's (optional) security contact email (default "[do-not-modify]")
-s, --sequence uint The sequence number of the signing account (offline mode only)
--sign-mode string Choose sign mode (direct|amino-json), this is an advanced feature
--timeout-height uint Set a block timeout height to prevent the tx from being committed past a certain height
--website string The validator's (optional) website (default "[do-not-modify]")