Pular para o conteúdo principal

Configurando o Cliente CrossFi Chain

Daemon da Cadeia CrossFi

crossfid é a ferramenta que permite interagir com o nó que opera na rede Cosmos Hub, mesmo que você não o opere. Vamos configurá-lo adequadamente.

Configurando crossfid

O comando principal usado para configurar crossfid é o seguinte:

configuração do crossfid

Permite definir um valor padrão para cada sinalizador dado.

Primeiro, configure o endereço do nó completo ao qual você deseja se conectar:

configuração do nó crossfid :

# exemplo: configuração do nó crossfid https://77.87.106.33:26657

Se você operar seu próprio nó completo, use apenas tcp://localhost:26657 como endereço.

Em seguida, vamos definir o valor padrão do sinalizador --trust-node:

configuração do crossfid trust-node true

# Defina como verdadeiro se confiar no nó completo ao qual está se conectando, falso caso contrário.

Finalmente, vamos definir o chain-id da blockchain com a qual queremos interagir:

configuração do crossfid chain-id crossfi-1

Gerenciamento de Chaves

Porta-chaves

O porta-chaves armazena pares de chaves privadas/públicas usados para interagir com um nó. Por exemplo, uma chave de validador precisa ser configurada antes de rodar o nó da blockchain, para que os blocos possam ser assinados corretamente. A chave privada pode ser armazenada em diferentes localizações, chamadas "backends", como um arquivo ou o próprio armazenamento de chaves do sistema operacional.

Ambientes sem interface gráfica são recomendados para usar os backends file ou pass.

Tipos de Chave

Existem três tipos de representações de chave que são usadas:

  • mp
    • Derivado das chaves de conta geradas por crossfid keys add
    • Usado para receber fundos
    • ex.: mp15h6vd5f0wqps26zjlwrc6chah08ryu4hzzdwhc
  • mpvaloper
    • Usado para associar um validador ao seu operador
    • Usado para invocar comandos de staking
    • ex.: mpvaloper1carzvgq3e6y3z5kz5y6gxp3wpy3qdrv928vyah
  • mppub
    • Derivado das chaves de conta geradas por crossfid keys add
    • ex.: mppub1zcjduc3q7fu03jnlu2xpl75s2nkt7krm6grh4cc5aqth73v0zwmea25wj2hsqhlqzm
  • mpvalconspub
    • Gerado quando o nó é criado com crossfid init.
    • Obtenha este valor com crossfid tendermint show-validator
    • ex.: mpvalconspub1zcjduepq0ms2738680y72v44tfyqm3c9ppduku8fs6sr73fx7m666sjztznqzp2emf

Migrar Chaves do Armazenamento de Chaves Legacy Para o Armazenamento Interno do Sistema Operacional

Versões anteriores do crossfid usavam para armazenar chaves no diretório inicial do usuário. Se você estiver migrando de uma versão antiga do crossfid, precisará migrar suas chaves antigas para o armazenamento de credenciais do sistema operacional executando o seguinte comando:

migrar chaves crossfid

O comando pedirá cada frase de segurança. Se uma frase de segurança estiver incorreta, ele pulará a chave respectiva.


Gerar Chaves

Você precisará de um par de chaves privadas e públicas de conta (também conhecidas como sk, pk respectivamente) para poder receber fundos, enviar txs, bônus tx, etc.

Para gerar uma nova chave secp256k1:

adicionar chaves crossfid

A saída do comando acima conterá uma frase semente. É recomendável salvar a frase semente em um local seguro para que, caso você esqueça a senha do armazenamento de credenciais do sistema operacional, possa eventualmente regenerar a chave a partir da frase semente com o seguinte comando:

adicionar chaves crossfid --recover

Se você verificar suas chaves privadas, agora verá ``:

mostrar chaves crossfid

Visualizar o endereço do operador do validador via:

mostrar chaves crossfid --bech=val

Você pode ver todas as suas chaves disponíveis digitando:

listar chaves crossfid

Visualizar a chave pública do validador para o seu nó digitando:

crossfid tendermint show-validator

Observe que esta é a chave de assinatura Tendermint, não a chave do operador que você usará em transações de delegação.

Recomendamos fortemente NÃO usar a mesma frase de segurança para várias chaves. A equipe Tendermint e a Interchain Foundation não serão responsáveis pela perda de fundos.


Gerar Chaves Públicas Multisig

Você pode gerar e imprimir uma chave pública multisig digitando:

adicionar chaves crossfid --multisig=nome1,nome2,nome3[...] --limite-multisig=K novo_nome_chave

K é o número mínimo de chaves privadas que devem ter assinado as transações que usam o endereço da chave pública como signatário.

O sinalizador --multisig deve conter o nome das chaves públicas que serão combinadas em uma chave pública que será gerada e armazenada como novo_nome_chave no banco de dados local. Todos os nomes fornecidos através do --multisig devem já existir no banco de dados local. A menos que o sinalizador --nosort seja definido, a ordem em que as chaves são fornecidas na linha de comando não importa, ou seja, os seguintes comandos geram duas chaves idênticas:

adicionar chaves crossfid --multisig=foo,bar,baz --limite-multisig=2 endereço_multisig
adicionar chaves crossfid --multisig=baz,foo,bar --limite-multisig=2 endereço_multisig

Endereços Multisig também podem ser gerados no ato e impressos pelo comando:

mostrar chaves crossfid --limite-multisig K nome1 nome2 nome3 [...]

Para mais informações sobre como gerar, assinar e transmitir transações com uma conta de assinatura múltipla, veja Transações Multisig.


Transmissão de Transações

Ao transmitir transações, crossfid aceita um sinalizador --modo-transmissao. Este sinalizador pode ter um valor de sync (padrão), async ou block, onde sync faz o cliente retornar uma resposta CheckTx, async faz o cliente retornar imediatamente, e block faz o cliente esperar que o tx seja confirmado (ou tempo esgotado).

É importante notar que o modo block não deve ser usado na maioria das circunstâncias. Isso porque a transmissão pode terminar, mas o tx ainda pode ser incluído em um bloco. Isso pode resultar em muitas situações indesejáveis. Portanto, é melhor usar sync ou async e consultar por hash tx para determinar quando o tx é incluído em um bloco.

Taxas e Gas

Cada transação pode fornecer taxas ou preços de gas, mas não ambos.

Os validadores têm uma configuração de preço mínimo de gas (multi-denominação) e usam esse valor ao determinar se devem ou não incluir a transação em um bloco durante CheckTx, onde gasPrices >= minGasPrices. Observe que sua transação deve fornecer taxas que são maiores ou iguais a qualquer das denominações que o validador requer.

Nota: Com tal mecanismo em vigor, os validadores podem começar a priorizar transações por gasPrice na mempool, então fornecer taxas ou preços de gas mais altos pode render maior prioridade de tx.

ex.:

crossfid tx bank send ... --taxas=50000uatom

ou

bash
crossfid tx bank send ... --preços-gas=0.0025uatom

Operações de Conta

Obter Tokens

Em uma testnet, a obtenção de tokens é geralmente feita através de uma torneira. Atualmente não há torneira pública disponível.

Consultar Saldo da Conta

Após receber tokens em seu endereço, você pode ver o saldo de sua conta digitando:

consultar conta crossfid

Ao consultar um saldo de conta com zero tokens, você receberá este erro: Nenhuma conta com o endereço foi encontrada no estado. Isso também pode acontecer se você financiar a conta antes de seu nó estar totalmente sincronizado com a cadeia. Ambos são normais.

Enviar Tokens

O seguinte comando pode ser usado para enviar moedas de uma conta para outra:

crossfid tx bank send 10faucetToken \
--chain-id=

O argumento quantidade aceita o formato .

Você pode querer limitar o máximo de gas que pode ser consumido pela transação através do sinalizador --gas. Se você passar --gas=auto, o fornecimento de gas será automaticamente estimado antes de executar a transação. A estimativa de gas pode ser imprecisa, pois as mudanças de estado podem ocorrer entre o final da simulação e a execução real de uma transação, portanto, um ajuste é aplicado em cima da estimativa original para garantir que a transação seja transmitida com sucesso. O ajuste pode ser controlado pelo sinalizador --gas-adjustment, cujo valor padrão é 1,0.

Agora, veja os saldos atualizados das contas de origem e destino:

consultar conta crossfid
consultar conta crossfid

Você também pode verificar seu saldo em um determinado bloco usando o sinalizador --bloco:

consultar conta crossfid --bloco=

Você pode simular uma transação sem realmente transmiti-la, adicionando o sinalizador --dry-run à linha de comando:

crossfid tx bank send 10faucetToken \
--chain-id= \
--dry-run

Além disso, você pode construir uma transação e imprimir seu formato JSON para STDOUT, adicionando --generate-only à lista de argumentos da linha de comando:

crossfid tx bank send 10faucetToken \
--chain-id= \
--generate-only > unsignedSendTx.json

bash
sign crossfid tx \
--chain-id= \
--from= \
unsignedSendTx.json > signedSendTx.json

O sinalizador --generate-only impede que o crossfid acesse a base de chaves local. Assim, quando tal sinalizador é fornecido, `` deve ser um endereço.

Você pode validar as assinaturas da transação digitando o seguinte:

sign crossfid tx --validate-signatures signedSendTx.json

Você pode transmitir a transação assinada para um nó fornecendo o arquivo JSON ao seguinte comando:

broadcast crossfid tx --node= signedSendTx.json

Consultar Transações

Correspondendo a um Conjunto de Eventos

Você pode usar o comando de pesquisa de transações para consultar transações que correspondem a um conjunto específico de eventos, que são adicionados em cada transação.

Cada evento é composto por um par chave-valor no formato .=. Os eventos também podem ser combinados para consultar um resultado mais específico usando o símbolo &.

Você pode consultar transações por eventos da seguinte forma:

consultar txs crossfid --eventos='message.sender=cosmos1...'

E para usar múltiplos eventos:

consultar txs crossfid --eventos='message.sender=cosmos1...&message.action=withdraw_delegator_reward'

A paginação também é suportada via page e limit:

consultar txs crossfid --eventos='message.sender=cosmos1...' --page=1 --limit=20

A tag de ação sempre iguala ao tipo de mensagem retornado pela função Type() da mensagem relevante.

Você pode encontrar uma lista de eventos disponíveis em cada um dos módulos SDK:

Correspondendo ao Hash de uma Transação

Você também pode consultar uma única transação pelo seu hash usando o comando a seguir:

consultar crossfid tx [hash]


Slashing

Unjailing

Para liberar seu validador preso

crossfid tx slashing unjail --from

Informações de Assinatura

Para recuperar as informações de assinatura de um validador:

consultar crossfid slashing assinaturas_info

Consultar Parâmetros

Você pode obter os parâmetros atuais de slashing via:

consultar crossfid slashing parametros

Mintagem

Você pode consultar os parâmetros de mintagem/inflação via:

consultar crossfid mintagem parametros

Para consultar o valor atual da inflação:

consultar crossfid mintagem inflacao

Para consultar o valor atual de provisões anuais:

consultar crossfid mintagem provisoes_anuais

Staking

Configure um Validador

Por favor, consulte a seção Configuração do Validador para um guia mais completo sobre como configurar um candidato a validador.

Delegue para um Validador

Na próxima mainnet, você pode delegar atom para um validador. Esses delegadores podem receber parte da receita das taxas do validador. Leia mais sobre o Modelo de Token Cosmos.

Consultar Validadores

Você pode consultar a lista de todos os validadores de uma cadeia específica:

consultar crossfid staking validadores

Se você quiser obter as informações de um único validador, pode verificá-las com:

consultar crossfid staking validador

Vincular Tokens

No mainnet do Cosmos Hub, nós delegamos uatom, onde 1atom = 1000000uatom. Veja como vincular tokens a um validador de testnet (ou seja, delegar):

crossfid tx staking delegate \
--amount=10000000uatom \
--validator= \
--from= \
--chain-id=

`` é o endereço operador do validador ao qual você pretende delegar. Se estiver executando uma testnet local, você pode encontrá-lo com:

crossfid keys show [nome] --bech val

onde [nome] é o nome da chave que você especificou ao inicializar crossfid.

Enquanto os tokens estão vinculados, eles são agrupados com todos os outros tokens vinculados na rede. Validadores e delegadores obtêm uma porcentagem de ações igual à sua participação nesse pool.

Consultar Delegações

Após enviar uma delegação a um validador, você pode ver suas informações usando o seguinte comando:

crossfid query staking delegation

Ou se você quiser verificar todas as suas delegações atuais com validadores distintos:

crossfid query staking delegations

Desvincular Tokens

Se por algum motivo o validador se comportar mal, ou se você apenas quiser desvincular uma certa quantidade de tokens, use o seguinte comando.

crossfid tx staking unbond \
\
10atom \
--from= \
--chain-id=

A desvinculação será automaticamente concluída quando o período de desvinculação tiver passado.

Consultar Desvinculações-Delegações

Após iniciar uma desvinculação-delegação, você pode ver suas informações usando o seguinte comando:

crossfid query staking unbonding-delegation

Ou se você quiser verificar todas as suas desvinculações-delegações atuais com validadores distintos:

crossfid query staking unbonding-delegations

Além disso, você pode obter todas as desvinculações-delegações de um validador específico:

crossfid query staking unbonding-delegations-from

Redeligar Tokens

Uma re-delegação é um tipo de delegação que permite vincular tokens ilíquidos de um validador para outro:

crossfid tx staking redelegate \
\
\
10atom \
--from= \
--chain-id=

Aqui você também pode realocar uma quantidade específica de shares-amount ou uma shares-fraction com as bandeiras correspondentes.

A re-delegação será automaticamente concluída quando o período de desvinculação tiver passado.

Consultar Redalegações

Após iniciar uma re-delegação, você pode ver suas informações usando o seguinte comando:

crossfid query staking redelegation

Ou se você quiser verificar todas as suas desvinculações-delegações atuais com validadores distintos:

crossfid query staking redelegations

Além disso, você pode obter todas as redalegações de saída de um validador específico:

crossfid query staking redelegations-from

Consultar Parâmetros

Os parâmetros definem configurações de alto nível para staking. Você pode obter os valores atuais usando:

crossfid query staking params

Com o comando acima você obterá os valores para:

  • Tempo de desvinculação
  • Número máximo de validadores
  • Denominação de moeda para staking

Todos esses valores serão atualizados por meio de um processo de governança por propostas de Mudança de Parâmetro.

Consultar Pool

Um Pool de staking define os parâmetros dinâmicos do estado atual. Você pode consultá-los com o seguinte comando:

crossfid query staking pool

Com o comando pool você obterá os valores para:

  • Tokens não vinculados e vinculados
  • Oferta de tokens
  • Inflação anual atual e o bloco no qual a última inflação foi processada
  • Última participação gravada vinculada em ações

Consultar Delegações para Validador

Você também pode consultar todas as delegações para um validador específico:

crossfid query delegations-to

Governança

Governança é o processo pelo qual os usuários no Cosmos Hub podem chegar a um consenso sobre atualizações de software, parâmetros da mainnet ou mecanismos de sinalização por meio de propostas de texto. Isso é feito por meio de votações nas propostas, que serão enviadas por detentores de ATOM na mainnet.

Algumas considerações sobre o processo de votação:

  • A votação é feita por detentores de ATOM vinculados em uma base de 1 ATOM vinculado 1 voto
  • Os delegadores herdam o voto de seu validador se não votarem
  • Os votos são contabilizados no final do período de votação (2 semanas na mainnet), onde cada endereço pode votar várias vezes para atualizar seu valor Opção (pagando a taxa de transação a cada vez), apenas o voto mais recente será considerado válido
  • Os votantes podem escolher entre as opções Sim, Não, Não com Veto e Abster-se
  • Ao final do período de votação, uma proposta é aceita se:
    • (VotosSim / (VotosSim+VotosNão+VotosNãoComVeto)) > 1/2
    • (VotosNãoComVeto / (VotosSim+VotosNão+VotosNãoComVeto)) < 1/3
    • ((VotosSim+VotosNão+VotosNãoComVeto) / participação total vinculada) >= quórum

Para mais informações sobre o processo de governança e como ele funciona, por favor, confira a especificação do módulo de Governança aqui.

Criar uma Proposta de Governança

Para criar uma proposta de governança, você deve enviar um depósito inicial junto com um título e descrição. Vários módulos fora de governança podem implementar seus próprios tipos de propostas e manipuladores (por exemplo, alterações de parâmetros), onde o módulo de governança em si suporta propostas Texto. Qualquer módulo fora de governança tem seu comando montado em cima de submit-proposal.

Para enviar uma proposta de Texto:

crossfid tx gov submit-proposal \
--title= \
--description=<descrição> \
--type="Texto" \
--deposit="1000000uatom" \
--from=<nome> \
--chain-id=<chain_id>

Você também pode fornecer a proposta diretamente através da bandeira --proposal que aponta para um arquivo JSON contendo a proposta.

Para enviar uma proposta de alteração de parâmetro, você deve fornecer um arquivo de proposta, já que seu conteúdo é menos amigável ao input do CLI:

crossfid tx gov submit-proposal param-change <path/to/proposal.json> \
--from=<nome> \
--chain-id=<chain_id>

Onde proposal.json contém o seguinte:


],
"deposit": [

]
}

Atualmente, alterações de parâmetro são avaliadas mas não validadas, então é muito importante que qualquer mudança de valor seja válida (ou seja, tipo correto e dentro dos limites) para seu respectivo parâmetro, por exemplo, MaxValidators deve ser um inteiro e não um decimal.

Uma avaliação adequada de uma proposta de mudança de parâmetro deve prevenir isso de acontecer (nenhum depósito deve ocorrer durante o processo de governança), mas isso deve ser notado independentemente.

O SoftwareUpgrade não é atualmente suportado pois não é implementado e atualmente não difere dos semânticos de uma proposta Texto.

Consultar Propostas

Uma vez criada, você pode agora consultar as informações da proposta:

crossfid query gov proposal <proposal_id>

Ou consultar todas as propostas disponíveis:

crossfid query gov proposals

Você também pode consultar propostas filtradas por eleitor ou depositante usando as bandeiras correspondentes.

Para consultar o autor de uma determinada proposta de governança:

crossfid query gov proposer <proposal_id>

Aumentar Depósito

Para que uma proposta seja transmitida para a rede, o valor depositado deve estar acima de um valor minDeposit (valor inicial: 512000000uatom). Se a proposta que você criou anteriormente não atendeu a esse requisito, você ainda pode aumentar o valor total depositado para ativá-la. Uma vez que o depósito mínimo é atingido, a proposta entra em período de votação:

crossfid tx gov deposit <proposal_id> "10000000uatom" \
--from=<nome> \
--chain-id=<chain_id>

> NOTA: Propostas que não atendem a esse requisito serão excluídas após o MaxDepositPeriod ser alcançado.

Consultar Depósitos

Depois que uma nova proposta é criada, você pode consultar todos os depósitos enviados para ela:

crossfid query gov deposits <proposal_id>

Você também pode consultar um depósito submetido por um endereço específico:

crossfid query gov deposit <proposal_id> <depositor_address>

Votar em uma Proposta

Após o depósito de uma proposta atingir o valor MinDeposit, o período de votação se abre. Detentores de Atom vinculados podem então votar nela:

crossfid tx gov vote <proposal_id> <Sim/Não/NãoComVeto/Abster-se> \
--from=<nome> \
--chain-id=<chain_id>

Consultar Votos

Verifique o voto com a opção que você acabou de submeter:

crossfid query gov vote <proposal_id> <voter_address>

Você também pode obter todos os votos anteriores submetidos para a proposta com:

crossfid query gov votes <proposal_id>

Consultar resultados da apuração da proposta

Para verificar a apuração atual de uma determinada proposta, você pode usar o comando tally:

crossfid query gov tally <proposal_id>

Consultar Parâmetros de Governança

Para verificar os parâmetros atuais de governança, execute:

crossfid query gov params

Para consultar subconjuntos dos parâmetros de governança, execute:

crossfid query gov param voting
crossfid query gov param tallying
crossfid query gov param deposit

Distribuição de Taxas

Consultar Parâmetros de Distribuição

Para verificar os parâmetros atuais de distribuição, execute:

crossfid query distribution params

Consultar Pool da Comunidade de Distribuição

Para consultar todas as moedas no pool da comunidade que está sob o controle da Governança:

crossfid query distribution community-pool

Consultar recompensas em aberto

Para verificar as recompensas em aberto (não retiradas) atuais, execute:

crossfid query distribution outstanding-rewards

Consultar Comissão do Validador

Para verificar a comissão em aberto atual para um validador, execute:

crossfid query distribution commission <validator_address>

Consultar Cortes do Validador

Para verificar cortes históricos para um validador, execute:

crossfid query distribution slashes <validator_address> <start_height> <end_height>

Consultar Recompensas do Delegador

Para verificar as recompensas atuais para uma delegação (se fossem retiradas), execute:

crossfid query distribution rewards <delegator_address> <validator_address>

Consultar Todas as Recompensas do Delegador

Para verificar todas as recompensas atuais para uma delegação (se fossem retiradas), execute:

crossfid query distribution rewards <delegator_address>

Transações Multisig

Transações multisig requerem assinaturas de múltiplas chaves privadas. Assim, a geração e assinatura de uma transação de uma conta multisig requer cooperação entre as partes envolvidas. Uma transação multisig pode ser iniciada por qualquer dos detentores da chave, e pelo menos um deles precisaria importar as chaves públicas de outras partes para seu Keybase e gerar uma chave pública multisig para finalizar e transmitir a transação.

Por exemplo, dada uma chave multisig composta pelas chaves p1, p2 e p3, cada uma sendo mantida por uma parte distinta, o usuário que estiver em posse de p1 precisaria importar tanto p2 quanto p3 para gerar a chave pública da conta multisig:

crossfid keys add \
p2 \
--pubkey=cosmospub1addwnpepqtd28uwa0yxtwal5223qqr5aqf5y57tc7kk7z8qd4zplrdlk5ez5kdnlrj4

crossfid keys add \
p3 \
--pubkey=cosmospub1addwnpepqgj04jpm9wrdml5qnss9kjxkmxzywuklnkj0g3a3f8l5wx9z4ennz84ym5t

crossfid keys add \
p1p2p3 \
--multisig-threshold=2 \
--multisig=p1,p2,p3

Uma nova chave pública multisig p1p2p3 foi armazenada, e seu endereço será usado como assinante de transações multisig:

crossfid keys show --address p1p2p3

Você também pode ver o limite de multisig, os componentes de chave pública e respectivos pesos visualizando a saída JSON da chave ou passando a bandeira --show-multisig:

crossfid keys show p1p2p3 -o json

crossfid keys show p1p2p3 --show-multisig

O primeiro passo para criar uma transação multisig é iniciá-la em nome do endereço multisig criado acima:

crossfid tx bank send cosmos1570v2fq3twt0f0x02vhxpuzc9jc4yl30q2qned 1000000uatom \
--from=<multisig_address> \
--generate-only > unsignedTx.json

O arquivo unsignedTx.json contém a transação não assinada codificada em JSON. p1 pode agora assinar a transação com sua própria chave privada:

crossfid tx sign \
unsignedTx.json \
--multisig=<multisig_address> \
--from=p1 \
--output-document=p1signature.json

Uma vez que a assinatura é gerada, p1 transmite tanto unsignedTx.json quanto p1signature.json para p2 ou p3, que por sua vez gerarão suas respectivas assinaturas:

crossfid tx sign \
unsignedTx.json \
--multisig=<multisig_address> \
--from=p2 \
--output-document=p2signature.json

p1p2p3 é uma chave multisig de 2-de-3, portanto, uma assinatura adicional é suficiente. Qualquer dos detentores da chave agora pode gerar a transação multisig combinando os arquivos de assinatura necessários:

crossfid tx multisign \
unsignedTx.json \
p1p2p3 \
p1signature.json p2signature.json > signedTx.json

A transação agora pode ser enviada para o nó:

crossfid tx broadcast signedTx.json

Scripts de Conclusão de Shells

Os scripts de conclusão para intérpretes de shell UNIX populares, como Bash e Zsh, podem ser gerados através do comando completion, disponível tanto para crossfid quanto para crossfid.

Se você deseja gerar scripts de conclusão para Bash, execute o seguinte comando:

crossfid completion > crossfid_completion
crossfid completion > gaiacli_completion

Se você deseja gerar scripts de conclusão para Zsh, execute o seguinte comando:

crossfid completion --zsh > crossfid_completion
crossfid completion --zsh > gaiacli_completion

Em sistemas UNIX, tais scripts podem ser carregados no .bashrc ou .bash_profile para habilitar a autocompleção do Bash:

echo '. crossfid_completion' >> ~/.bashrc
echo '. gaiacli_completion' >> ~/.bashrc

Consulte o manual do usuário de seu interpretador fornecido por seu sistema operacional para obter informações sobre como habilitar a autocompleção do shell.