Mantén la clave de trading y los secretos de una aplicación fuera del disco del servidor
erpc worker guarda la clave de trading y los secretos de una aplicación en 1Password, tu llavero o un keystore cifrado, y se los entrega a la aplicación en memoria, nunca al disco del servidor.Esta página describe ERPC CLI
v0.1.0-rc.4, una versión preliminar.Cómo llega la clave de trading a la aplicación
Una aplicación con una wallet recibe su clave por una tubería cuando se inicia. No hay
wallet.json, ni .env, ni ninguna copia en el servidor. erpc no escribe la clave sin cifrar en ningún disco: el único archivo en el que la guarda es el del keystore, en tu máquina, cifrado con tu frase de contraseña.- Dónde se guarda:
erpc worker key newcrea la clave en 1Password cuandoerpc loginguarda allí la sesión; si no, en el llavero; y si no, en el keystore.erpc.tomlregistra la referencia de la clave y su clave pública. - En el servidor: el agente de erpc worker mantiene la clave solo en memoria. Se marca para que no se pueda volcar, bloquea su memoria y entrega la clave a la aplicación en un descriptor de archivo; la aplicación la borra después de leerla.
- Tras un reinicio, el worker vuelve bloqueado: la aplicación no se ejecuta hasta que
erpc worker startvuelve a enviar la clave. Si el agente falla o se termina a la fuerza, systemd lo vuelve a iniciar y el agente vuelve bloqueado del mismo modo. - Una actualización de paquetes no reinicia un worker.
deployindica aneedrestartque deje en paz las unidades del worker: en su modo automático las aplaza, y cuando pregunta en un terminal, su respuesta por defecto para ellas es no, así que una actualización de seguridad desatendida no reinicia la aplicación. Cuando no se pudo escribir esa regla, el despliegue lo indica y continúa, y el worker se ejecuta entonces sin esta protección.
La clave de trading la indica
[wallet] y nada más, y erpc solo la lee para una persona ante el terminal: no para una herramienta de IA ni con una cuenta de servicio de 1Password. Se rechaza una línea de [secrets] que indique la referencia de [wallet], o una cuenta keychain: o keystore: que termine en .wallet. En el keystore, una entrada guardada como clave no se abre como secreto. En 1Password, y con una cuenta del llavero de otro nombre, nada marca una clave: si un erpc.toml sin [wallet] indica un elemento así en [secrets], se lee como secreto.Elegir dónde se guardan los valores
1Password es opcional.
erpc worker key new y erpc worker secret put guardan lo que reciben en la primera de estas opciones que corresponda, salvo que --store indique una (--store 1password --vault <id>, --store keychain, --store keystore):- 1Password, cuando
erpc loginguarda allí la sesión o se indica--vault. - El llavero del SO, donde conserva un valor tras un reinicio: macOS, Windows y Linux con un keyring de escritorio en una sesión iniciada.
- El keystore de erpc, en una máquina Linux sin ese keyring: un servidor sin entorno gráfico, WSL, un inicio de sesión por SSH.
--store keychainse rechaza en una máquina así.
En el llavero o en el keystore, la clave existe solo en esa máquina, sin copia y sin sincronización, y otra máquina no puede leer una referencia
keychain: o keystore:.Si la máquina se pierde o se borra, la wallet desaparece: guarda poco en ella, o usa 1Password, que puede leer cualquier máquina con la sesión iniciada en la bóveda. Inicia sesión en 1Password con
erpc login --store 1password-desktop, o mediante op signin donde no haya aplicación de escritorio.Una cuenta de servicio de 1Password puede guardar los secretos de una aplicación, pero erpc no lee una clave de trading con ella. Con 1Password, cada lectura puede mostrar una solicitud de aprobación en la aplicación de 1Password, y erpc muestra un indicador de espera mientras tanto.
Guardar un secreto
Los secretos, como los tokens de API y las claves RPC, se guardan del mismo modo, pero llegan a la aplicación como variables de entorno, no por una tubería.
erpc worker secret put <NAME> guarda el valor, y [secrets] en erpc.toml contiene solo su referencia.bash
--generatecrea el valor: 32 bytes aleatorios, como 64 caracteres hexadecimales.--from-accountguarda la primera de las claves RPC de tu cuenta que acepta el RPC compartido. Las claves se prueban en orden, primero la principal, con ungetHealthcada una y 8 segundos para responder. Una clave que recibe 401 o 403 se rechaza y se prueba la siguiente, y solo se guarda una clave que el RPC haya aceptado. El comando indica si es la clave principal de la cuenta u otra (account_keycon--json).- Ninguno de los dos valores se imprime, tampoco con
--json. El primer uso del keystore, o un keystore bloqueado, necesita una persona ante el terminal. - Las claves se prueban desde esta máquina, así que una clave limitada a la dirección del servidor se rechaza aquí aunque allí funcione. Cuando se rechazan todas las claves,
--from-accountno guarda nada, y guardas tú a mano la clave que quieras, escribiéndola sin que se vea o pasándola por una tubería. Cuando no se pudo consultar al RPC, no guarda nada yerpc.tomlqueda como estaba; vuelve a ejecutar el mismo comando.
Para guardar una clave a mano:
bash
--replaceguarda un valor nuevo para un nombre que ya está definido.erpc worker secret listenumera los ajustes secretos por nombre y dónde se guarda cada uno.- Un ajuste que proporciona una línea de datos (
GRPC_ENDPOINT,SHREDS_ENDPOINT,SOLANA_SEND_RPC_ENDPOINT) nunca es un secreto: lo fijan--grpc,--shredsy--unlimited.
Una referencia en
[secrets] o [wallet] es una de estas:El keystore
El keystore es el directorio
~/.erpc/keystore (keystore dentro de ERPC_HOME cuando está definido). En Linux y macOS sus directorios tienen 0700 y sus archivos 0600; en Windows, erpc no fija permisos propios.master.jsoncontiene una clave maestra aleatoria de 32 bytes, sellada con una clave que PBKDF2-HMAC-SHA256 (600.000 iteraciones) deriva de tu frase de contraseña. Cada entrada contiene un valor, sellado con ChaCha20-Poly1305 con una clave propia.- La frase de contraseña: el primer
key newosecret putque usa el keystore te pide que la elijas, escribiéndola dos veces en un terminal, con 12 caracteres o más. erpc solo la toma de esa solicitud oculta, nunca de un argumento, una variable de entorno o una tubería. - Desbloqueo en Linux: una vez que la frase de contraseña ha abierto el keystore, el desbloqueo se guarda en el keyring persistente del kernel, en memoria, hasta que la máquina se reinicia, el keyring permanece sin usar durante su plazo de caducidad por inactividad (tres días, salvo que el sistema indique otra cosa) o se ejecuta
erpc worker secret lock.erpc worker secret unlockpide la frase de contraseña por adelantado e indica hasta cuándo dura el desbloqueo. En un shell iniciado sin un inicio de sesión propio (susin-,sudo -E), no se guarda ningún desbloqueo y cada comando la pide. - Sin nadie ante el terminal, un comando que necesita el keystore usa el desbloqueo cuando lo hay y, si no, falla e indica
erpc worker secret unlock. Un keystore desbloqueado entrega secretos, no la clave de trading. - En macOS y Windows (
--store keystore), no se guarda ningún desbloqueo: cada comando que necesita el keystore pide la frase de contraseña una vez y, por tanto, necesita un terminal.
Lo que el keystore protege y lo que no
- Haz una copia de seguridad del directorio
keystorey recuerda la frase de contraseña. erpc no puede recuperar ninguna de las dos, y si falta cualquiera de las dos, lo que contiene el keystore se pierde. - Quien tenga los archivos del keystore y la frase de contraseña tiene la clave. PBKDF2 hace lento cada intento, pero no hace segura una frase de contraseña fácil de adivinar.
- Mientras el keystore está desbloqueado, cualquier programa que se ejecute como tú puede leer la clave maestra del keyring del kernel (uno cuya sesión no contenga tu keyring puede vincularlo) y abrir todas las entradas, también la de una clave. Las reglas propias de erpc (leer la clave indicada por
[wallet]solo para una persona ante el terminal, nunca para una herramienta de IA; no abrir nunca como secreto una clave guardada en el keystore) son lo que hace erpc; no obligan a otros programas que se ejecuten como tú. Ejecutaerpc worker secret lockcuando termines. - Los nombres de las entradas no están ocultos, y el tamaño de una entrada muestra la longitud del valor.
- Un archivo modificado no se abre; una copia anterior de la misma entrada puesta en su lugar, sí.
erpc worker secret rmelimina la entrada del keystore de un secreto junto con su línea enerpc.toml(salvo que otro ajuste de la aplicación indique la misma entrada), y deja donde está un valor en 1Password o en el llavero. No borra el disco de forma segura, y las copias que haya en tus copias de seguridad permanecen.- erpc nunca elimina ni sobrescribe la entrada de una clave de trading. Para sustituir una clave, mueve los fondos y después quita tú su archivo y
[wallet]. - Un ajuste no puede llamarse
WALLET, sea cual sea la combinación de mayúsculas y minúsculas, en el keystore ni en el llavero;--store 1passwordacepta ese nombre.
Trabajar con la clave de trading
Cuando erpc termina sin saber si una transferencia se completó, consulta su firma antes de volver a enviar: un segundo envío es una segunda transferencia.






