Mantenha a chave de trading e os segredos de uma aplicação fora do disco do servidor
O
erpc worker guarda a chave de trading e os segredos de uma aplicação no 1Password, no seu chaveiro ou em um keystore criptografado, e os entrega à aplicação na memória, nunca no disco do servidor.Esta página descreve o ERPC CLI
v0.1.0-rc.4, uma versão de pré-lançamento.Como a chave de trading chega à aplicação
Uma aplicação com uma wallet recebe a chave por um pipe quando inicia. Não há
wallet.json, nem .env, nem cópia no servidor. O erpc não grava a chave sem criptografia em nenhum disco: o único arquivo em que ele a coloca é o do keystore, na sua máquina, criptografado com a sua frase-senha.- Onde fica guardada: o
erpc worker key newcria a chave no 1Password quando oerpc loginmantém a sessão lá; caso contrário, no chaveiro; caso contrário, no keystore. Oerpc.tomlregistra a referência da chave e a chave pública dela. - No servidor: o agente do erpc worker mantém a chave apenas na memória. Ele impede que seja feito um dump de si mesmo e bloqueia a própria memória, e entrega a chave à aplicação por um descritor de arquivo; a aplicação a apaga depois de ler.
- Depois de uma reinicialização, o worker volta bloqueado: a aplicação não roda até que o
erpc worker startenvie a chave de novo. Um agente que falha ou é encerrado à força é iniciado de novo pelo systemd e volta bloqueado da mesma forma. - Uma atualização de pacote não reinicia um worker. O
deployinstrui oneedrestarta deixar as unidades do worker em paz: no modo automático, ele as adia, e, quando pergunta em um terminal, a resposta padrão para elas é não, então uma atualização de segurança sem supervisão não reinicia a aplicação. Quando essa regra não pôde ser escrita, a implantação avisa e continua, e o worker passa a rodar sem essa proteção.
A chave de trading é indicada pelo
[wallet] e por nada mais, e o erpc só a lê para uma pessoa em um terminal: não para uma ferramenta de IA, e não com uma conta de serviço do 1Password. Uma linha de [secrets] que indica a referência de [wallet], ou uma conta keychain: ou keystore: terminada em .wallet, é recusada. No keystore, uma entrada guardada como chave não abre como segredo. No 1Password, e sob uma conta do chaveiro com outro nome, nada marca uma chave: se um erpc.toml sem [wallet] indica um desses itens em [secrets], ele é lido como segredo.Escolher onde os valores ficam guardados
O 1Password é opcional. O
erpc worker key new e o erpc worker secret put guardam o que recebem no primeiro destes locais que se aplica, a menos que --store indique um (--store 1password --vault <id>, --store keychain, --store keystore):- 1Password, quando o
erpc loginmantém a sessão lá ou quando--vaulté informado. - O chaveiro do sistema operacional, nos sistemas em que ele mantém um valor após uma reinicialização: macOS, Windows e Linux com um keyring de desktop em uma sessão com login.
- O keystore do erpc, em uma máquina Linux sem esse keyring: um servidor headless, WSL, um login SSH.
--store keychainem uma máquina assim é recusado.
No chaveiro ou no keystore, a chave existe apenas nessa máquina, sem cópia e sem sincronização, e outra máquina não consegue ler uma referência
keychain: ou keystore:.Uma máquina perdida ou apagada significa que a wallet se perdeu: mantenha pouco nela, ou use o 1Password, que toda máquina com login no cofre consegue ler. Faça login no 1Password com
erpc login --store 1password-desktop, ou com op signin onde não há o aplicativo de desktop.Uma conta de serviço do 1Password pode guardar os segredos de uma aplicação, mas o erpc não lê uma chave de trading com ela. Com o 1Password, cada leitura pode mostrar um pedido de aprovação no aplicativo, e o erpc mostra um indicador de progresso enquanto espera.
Guardar um segredo
Os segredos, como tokens de API e chaves RPC, são guardados da mesma forma, mas chegam à aplicação como variáveis de ambiente, não por um pipe. O
erpc worker secret put <NAME> guarda o valor, e o [secrets] no erpc.toml contém apenas a referência dele.bash
--generatecria o valor: 32 bytes aleatórios, como 64 caracteres hexadecimais.--from-accountguarda a primeira das chaves RPC da sua conta que o RPC compartilhado aceita. As chaves são testadas em ordem, a principal primeiro, com umgetHealthcada, com 8 segundos para responder. Uma chave que recebe 401 ou 403 como resposta é recusada e a próxima é testada, e só é guardada uma chave que o RPC aceitou. O comando informa se é a chave principal da conta ou outra (account_keycom--json).- Nenhum dos valores é exibido, nem com
--json. O primeiro uso do keystore, ou de um keystore bloqueado, exige uma pessoa em um terminal. - As chaves são testadas a partir desta máquina, então uma chave limitada ao endereço do servidor é recusada aqui, embora funcione lá. Quando todas as chaves são recusadas, o
--from-accountnão guarda nada, e você guarda manualmente a chave que pretende usar, digitada sem aparecer na tela ou passada por um pipe. Quando não foi possível consultar o RPC, ele não guarda nada e oerpc.tomlfica como estava; execute o mesmo comando de novo.
Para guardar uma chave manualmente:
bash
--replaceguarda um novo valor para um nome que já está definido.erpc worker secret listlista as configurações secretas por nome e onde cada uma está guardada.- Uma configuração que uma linha de dados fornece (
GRPC_ENDPOINT,SHREDS_ENDPOINT,SOLANA_SEND_RPC_ENDPOINT) nunca é um segredo:--grpc,--shredse--unlimiteda definem.
Uma referência em
[secrets] ou [wallet] é uma destas:O keystore
O keystore é o diretório
~/.erpc/keystore (keystore dentro de ERPC_HOME, quando essa variável está definida). No Linux e no macOS, os diretórios dele são 0700 e os arquivos 0600; no Windows, o erpc não define permissões próprias.- O
master.jsoncontém uma chave mestra aleatória de 32 bytes, selada com uma chave que o PBKDF2-HMAC-SHA256 (600.000 iterações) deriva da sua frase-senha. Cada entrada contém um valor, selado com ChaCha20-Poly1305 com uma chave própria. - A frase-senha: o primeiro
key newousecret putque usa o keystore pede que você a escolha, digitada duas vezes em um terminal, com 12 caracteres ou mais. O erpc a recebe somente desse prompt oculto, nunca de um argumento, de uma variável de ambiente ou de um pipe. - Desbloqueio no Linux: depois que a frase-senha abre o keystore, o desbloqueio fica guardado no keyring persistente do kernel, na memória, até a máquina reiniciar, até o keyring ficar sem uso pelo tempo de expiração por inatividade (três dias, a menos que o sistema defina outro) ou até
erpc worker secret lock. Oerpc worker secret unlockpede a frase-senha com antecedência e informa até quando o desbloqueio vale. Em um shell iniciado sem um login próprio (susem-,sudo -E), nenhum desbloqueio é guardado e cada comando pede a frase-senha. - Sem ninguém em um terminal, um comando que precisa do keystore usa o desbloqueio quando ele existe e, caso contrário, falha, indicando
erpc worker secret unlock. Um keystore desbloqueado entrega segredos, não a chave de trading. - No macOS e no Windows (
--store keystore), nenhum desbloqueio é guardado: cada comando que precisa do keystore pede a frase-senha uma vez e, por isso, precisa de um terminal.
O que o keystore protege e o que não protege
- Faça backup do diretório
keystoree lembre-se da frase-senha. O erpc não consegue recuperar nenhum dos dois, e, se faltar qualquer um dos dois, o que o keystore guarda está perdido. - Quem tem os arquivos do keystore e a frase-senha tem a chave. O PBKDF2 torna cada tentativa lenta, mas não torna segura uma frase-senha fácil de adivinhar.
- Enquanto o keystore está desbloqueado, qualquer programa executado com o seu usuário pode ler a chave mestra no keyring do kernel (um programa cuja sessão não contém o seu keyring pode vinculá-lo à própria sessão) e abrir todas as entradas, inclusive a de uma chave. As regras próprias do erpc (ler a chave indicada pelo
[wallet]só para uma pessoa em um terminal, nunca para uma ferramenta de IA; nunca abrir como segredo uma chave guardada no keystore) são o que o erpc faz; elas não obrigam outros programas executados com o seu usuário. Executeerpc worker secret lockquando terminar. - Os nomes das entradas não são ocultos, e o tamanho de uma entrada mostra o comprimento do valor.
- Um arquivo alterado não abre; uma cópia mais antiga da mesma entrada colocada de volta no lugar abre.
erpc worker secret rmexclui a entrada de um segredo no keystore junto com a linha dele noerpc.toml(a menos que outra configuração da aplicação indique a mesma entrada) e deixa no lugar um valor que esteja no 1Password ou no chaveiro. Ele não limpa o disco, e as cópias nos seus backups permanecem.- O erpc nunca exclui nem sobrescreve a entrada de uma chave de trading. Para substituir uma chave, transfira os fundos e depois remova você mesmo o arquivo dela e o
[wallet]. - Uma configuração não pode se chamar
WALLET, com qualquer combinação de maiúsculas e minúsculas, no keystore ou no chaveiro; o--store 1passwordaceita esse nome.
Trabalhar com a chave de trading
Quando o erpc termina sem saber se uma transferência foi confirmada, consulte a assinatura dela antes de enviar de novo: um segundo envio é uma segunda transferência.






