Pular para o conteúdo

Transações de Staking

Por volta de 2 min

O staking é uma característica fundamental do Cardano, permitindo que você ganhe recompensas ao delegar ada para pools de staking. Este tutorial mostra como delegar seu ada para uma pool de staking, retirar recompensas ou parar de delegar seu ada se decidir mudar para outro pool de staking.

Para delegar ada, primeiro, você precisa gerar um par de chaves de staking. Isso envolve criar um stake.vkey e stake.skey, além do seu par de chaves de pagamento regular (payment.vkey e payment.skey), e obter um novo endereço chamado stake.addr, semelhante ao seu payment.addr.

Assumindo que você já tenha o payment.vkey e payment.skey, que você pode facilmente gerar usando o comando cardano-cli address key-gen, prossiga criando o stake.vkey e stake.skey:

cardano-cli stake-address key-gen
--verification-key-file stake.vkey
--signing-key-file stake.skey

Agora você tem seu par de chaves de pagamento e par de chaves de staking. O próximo passo é construir os arquivos payment.addr e stake.addr:

# payment.addr
cardano-cli address build \
    --payment-verification-key-file payment.vkey \
    --stake-verification-key-file stake.vkey \
    --out-file payment.addr

Note que o exemplo inclui o argumento --stake-verification-key-file. Este comando é usado para criar um endereço que inclui sua parte de staking. Endereços sem uma parte de staking são primariamente usados para enviar e receber ada, assim como interagir com DApps. Alguns exemplos podem omitir esse argumento, mas é crucial para a delegação e participação no processo de staking.

# stake.addr
cardano-cli stake-address build \
    --stake-verification-key-file stake.vkey \
    --out-file stake.addr

Este comando usa apenas o arquivo de verificação de staking.

Antes de prosseguir com a delegação, é essencial criar dois novos certificados: um certificado de registro e um certificado de delegação. Esses arquivos são necessários para registrar a chave de staking na blockchain e indicar sua intenção de delegar ada.

Este comando gera um certificado, que indica a intenção de registrar a chave de staking:

# registration.cert
cardano-cli stake-address registration-certificate \
    --stake-verification-key-file stake.vkey \
    --out-file reg.cert

Crie um certificado de delegação:

# delegate.cert
cardano-cli stake-address delegation-certificate \
    --stake-verification-key-file stake.vkey \
    --stake-pool-id pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h \
    --out-file delegation.cert

Nesta etapa do tutorial, você deverá ter selecionado uma pool de staking. O exemplo apresenta a ADACT (PoolId: pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h). Você pode listar todas as pools usando o comando cardano-cli query stake-pools ou visitar https://preview.cardanoscan.io/pools para selecionar a pool que melhor atenda às suas necessidades. Por favor, note que o exemplo usa o testnet preview. Se você estiver usando outro testnet ou mainnet, certifique-se de que o ID da pool esteja na rede correta.

Agora que você tem os arquivos reg.cert e delegation.cert, você pode prosseguir para o próximo passo. Você precisa enviar uma transação contendo os certificados. Há duas opções: enviá-los individualmente ou enviá-los juntos. O exemplo mostra como enviá-los ambos ao mesmo tempo.

Comece consultando os fundos de payment.addr:

cardano-cli query utxo --address $(cat payment.addr)
                           TxHash                                 TxIx        Amount
--------------------------------------------------------------------------------------
142c46bb93b9c80140a6302e4a8a360e6f46f55aaf001c825ca790bb23572754     0        10000000000 lovelace + TxOutDatumNone

Se não houver fundos no endereço, você pode solicitar do faucetopen in new window. Certifique-se de selecionar o testnet correto.

É hora de construir, assinar e enviar sua transação.

O comando abaixo introduz dois novos argumentos de criação de transação: --witness-override e certificate-file. O primeiro especifica que a transação exigirá duas assinaturas. Portanto, as taxas de transação serão mais altas. certificate-file adiciona seus novos certificados à transação:

cardano-cli transaction build \
    --witness-override 2 \
    --tx-in 142c46bb93b9c80140a6302e4a8a360e6f46f55aaf001c825ca790bb23572754#0 \
    --certificate-file reg.cert \
    --certificate-file delegation.cert \
    --change-address $(cat payment.addr) \
    --out-file delegateTx.raw

Na fase de assinatura, você precisa adicionar duas assinaturas: payment.skey e stake.skey:

cardano-cli transaction sign \
    --tx-body-file delegateTx.raw \
    --signing-key-file payment.skey \
    --signing-key-file stake.skey \
    --out-file delegateTx.signed
	
cardano-cli transaction submit \
    --tx-file delegateTx.signed
Transaction successfully submitted.

Uma vez que a transação é enviada e processada, você delegou com sucesso seu ada. Agora, vamos dar uma olhada em sua delegação e recompensas:

cardano-cli query stake-address-info --address $(cat stake.addr)
[
    {
        "address": "stake_test1uq954t492tmusk2dy9z505g3cz3sfpnh0swsqjmzk47rasqyn8uqp",
        "delegation": "pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h",
        "rewardAccountBalance": 0
    }
]

Após alguns dias, você receberá recompensas, e a próxima parte do tutorial demonstra como retirá-las.

Última atualização:
Contribuidores: cauechianca