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.