Jauhkan kunci trading dan secret aplikasi dari disk server
erpc worker menyimpan kunci trading dan secret aplikasi di 1Password, rantai kunci Anda, atau keystore terenkripsi, lalu menyerahkannya ke aplikasi di memori, tidak pernah ke disk server.Halaman ini menjelaskan ERPC CLI
v0.1.0-rc.4, versi pra-rilis.Cara kunci trading sampai ke aplikasi
Aplikasi yang memiliki wallet menerima kuncinya melalui pipe saat mulai berjalan. Tidak ada
wallet.json, tidak ada .env, dan tidak ada salinan di server. erpc tidak menulis kunci ke disk mana pun tanpa enkripsi: satu-satunya file tempat erpc menaruhnya adalah file milik keystore, di mesin Anda, terenkripsi dengan frasa sandi Anda.- Tempat kunci disimpan:
erpc worker key newmembuat kunci di 1Password jikaerpc loginmenyimpan sesi di sana, jika tidak di rantai kunci, dan jika tidak juga, di keystore.erpc.tomlmencatat referensi kunci dan kunci publiknya. - Di server: agen erpc worker menyimpan kunci hanya di memori. Agen ini membuat dirinya tidak dapat di-dump dan mengunci memorinya, lalu menyerahkan kunci ke aplikasi melalui file descriptor; aplikasi menghapus bersih kunci tersebut setelah membacanya.
- Setelah reboot, worker kembali dalam keadaan terkunci: aplikasi tidak berjalan sampai
erpc worker startmengirim kunci lagi. Agen yang gagal atau dimatikan dijalankan kembali oleh systemd dan kembali terkunci dengan cara yang sama. - Update package tidak me-restart worker.
deploymemberi tahuneedrestartagar tidak menyentuh unit worker: dalam mode otomatisnya, alat ini menunda unit tersebut, dan jika ditanya di terminal, jawaban default-nya untuk unit tersebut adalah tidak, sehingga update keamanan tanpa pengawasan tidak me-restart aplikasi. Jika aturan tersebut tidak dapat ditulis, deploy menyebutkannya dan tetap berlanjut, dan worker kemudian berjalan tanpa perlindungan ini.
Kunci trading disebut oleh
[wallet] dan tidak oleh hal lain, dan erpc membacanya hanya untuk orang yang berada di terminal: tidak untuk tool AI, dan tidak dengan service account 1Password. Baris [secrets] yang menyebut referensi [wallet], atau akun keychain: atau keystore: yang berakhiran .wallet, ditolak. Di keystore, entri yang disimpan sebagai kunci tidak dapat dibuka sebagai secret. Di 1Password, dan di bawah akun rantai kunci dengan nama lain, tidak ada yang menandai sebuah kunci: jika erpc.toml tanpa [wallet] menyebut item seperti itu di bawah [secrets], item tersebut dibaca sebagai secret.Pilih tempat nilai disimpan
1Password bersifat opsional.
erpc worker key new dan erpc worker secret put menyimpan apa yang diberikan kepadanya di tempat pertama yang berlaku dari daftar berikut, kecuali --store menyebut salah satunya (--store 1password --vault <id>, --store keychain, --store keystore):- 1Password, jika
erpc loginmenyimpan sesi di sana atau--vaultdiberikan. - Rantai kunci sistem operasi, di sistem yang rantai kuncinya menyimpan nilai melewati reboot: macOS, Windows, dan Linux dengan keyring desktop dalam sesi yang sudah login.
- Keystore milik erpc, di mesin Linux tanpa keyring seperti itu: server headless, WSL, login SSH.
--store keychaindi mesin seperti itu ditolak.
Di rantai kunci atau keystore, kunci hanya ada di satu mesin itu, tanpa salinan dan tanpa sinkronisasi, dan mesin lain tidak dapat membaca referensi
keychain: atau keystore:.Mesin yang hilang atau dihapus bersih isinya berarti wallet ikut hilang: simpan sedikit saja di dalamnya, atau gunakan 1Password, yang dapat dibaca oleh setiap mesin yang sudah masuk ke vault. Masuk ke 1Password dengan
erpc login --store 1password-desktop, atau melalui op signin jika tidak ada aplikasi desktop.Service account 1Password dapat menyimpan secret aplikasi, tetapi erpc tidak membaca kunci trading dengannya. Dengan 1Password, setiap pembacaan dapat memunculkan prompt persetujuan di aplikasinya, dan erpc menampilkan spinner selama menunggu.
Simpan secret
Secret, seperti token API dan RPC key, disimpan dengan cara yang sama, tetapi sampai ke aplikasi sebagai variabel lingkungan, bukan melalui pipe.
erpc worker secret put <NAME> menyimpan nilainya, dan [secrets] di erpc.toml hanya berisi referensinya.bash
--generatemembuat nilainya: 32 byte acak, dalam bentuk 64 karakter heksadesimal.--from-accountmenyimpan RPC key pertama dari akun Anda yang diterima oleh shared RPC. Kunci dicoba secara berurutan, dimulai dari kunci utama, dengan satugetHealthuntuk masing-masing, yang diberi waktu 8 detik untuk menjawab. Kunci yang mendapat jawaban 401 atau 403 ditolak dan kunci berikutnya dicoba, dan hanya kunci yang diterima RPC yang disimpan. Perintah ini menyebutkan apakah kunci tersebut adalah kunci utama akun atau kunci lain (account_keydengan--json).- Kedua nilai tersebut tidak dicetak, bahkan dengan
--json. Penggunaan pertama keystore, atau keystore yang terkunci, memerlukan orang di terminal. - Kunci dicoba dari mesin ini, sehingga kunci yang dibatasi ke alamat server ditolak di sini meskipun berfungsi di sana. Jika semua kunci ditolak,
--from-accounttidak menyimpan apa pun, dan Anda menyimpan kunci yang Anda maksud secara manual, diketik tanpa ditampilkan atau dikirim melalui pipe. Jika RPC tidak dapat dihubungi, perintah ini tidak menyimpan apa pun danerpc.tomltetap seperti semula; jalankan perintah yang sama sekali lagi.
Untuk menyimpan kunci secara manual:
bash
--replacemenyimpan nilai baru untuk nama yang sudah diatur.erpc worker secret listmenampilkan pengaturan secret berdasarkan nama dan tempat masing-masing disimpan.- Pengaturan yang disediakan oleh line data (
GRPC_ENDPOINT,SHREDS_ENDPOINT,SOLANA_SEND_RPC_ENDPOINT) tidak pernah menjadi secret:--grpc,--shreds, dan--unlimitedyang menetapkannya.
Referensi di
[secrets] atau [wallet] adalah salah satu dari berikut:Keystore
Keystore adalah direktori
~/.erpc/keystore (keystore di bawah ERPC_HOME jika variabel tersebut diatur). Di Linux dan macOS, direktorinya berizin 0700 dan file-nya 0600; di Windows, erpc tidak menetapkan izin sendiri.master.jsonberisi kunci master acak 32 byte, yang disegel dengan kunci yang dibuat oleh PBKDF2-HMAC-SHA256 (600.000 iterasi) dari frasa sandi Anda. Setiap entri berisi satu nilai, yang disegel dengan ChaCha20-Poly1305 menggunakan kuncinya sendiri.- Frasa sandi:
key newatausecret putpertama yang memakai keystore meminta Anda memilihnya, diketik dua kali di terminal, minimal 12 karakter. erpc mengambilnya hanya dari prompt tersembunyi tersebut, tidak pernah dari argumen, variabel lingkungan, atau pipe. - Membuka kunci di Linux: setelah frasa sandi membuka keystore, hasil buka kunci tersebut disimpan di keyring persisten milik kernel, di memori, sampai mesin di-restart, keyring tidak dipakai selama masa kedaluwarsa idle-nya (tiga hari, kecuali sistem menentukan lain), atau
erpc worker secret lockdijalankan.erpc worker secret unlockmeminta frasa sandi lebih awal dan menyebutkan sampai kapan hasil buka kunci tersebut berlaku. Di shell yang dijalankan tanpa login sendiri (sutanpa-,sudo -E), hasil buka kunci tidak disimpan dan setiap perintah akan meminta frasa sandi. - Tanpa orang di terminal, perintah yang memerlukan keystore memakai hasil buka kunci jika ada, dan jika tidak ada, perintah gagal sambil menyebutkan
erpc worker secret unlock. Keystore yang sudah dibuka kuncinya menyerahkan secret, bukan kunci trading. - Di macOS dan Windows (
--store keystore), hasil buka kunci tidak disimpan: setiap perintah yang memerlukan keystore meminta frasa sandi satu kali, sehingga memerlukan terminal.
Yang dilindungi keystore, dan yang tidak
- Backup direktori
keystoredan ingat frasa sandinya. erpc tidak dapat memulihkan satu pun dari keduanya, dan jika salah satunya tidak ada, isi keystore hilang. - Siapa pun yang memiliki file keystore dan frasa sandinya memiliki kuncinya. PBKDF2 membuat setiap tebakan menjadi lambat, tetapi tidak membuat frasa sandi yang mudah ditebak menjadi aman.
- Selama keystore sudah dibuka kuncinya, program apa pun yang berjalan sebagai Anda dapat membaca kunci master dari keyring kernel (program yang sesinya tidak memegang keyring Anda dapat menautkannya ke sesinya) dan membuka setiap entri, termasuk entri sebuah kunci. Aturan erpc sendiri (kunci yang disebut oleh
[wallet]hanya dibaca untuk orang yang berada di terminal, tidak pernah untuk tool AI; kunci yang disimpan di keystore tidak pernah dibuka sebagai secret) adalah apa yang dilakukan erpc; aturan itu tidak mengikat program lain yang berjalan sebagai Anda. Jalankanerpc worker secret locksetelah Anda selesai. - Nama entri tidak disembunyikan, dan ukuran entri menunjukkan panjang nilainya.
- File yang diubah tidak dapat dibuka; salinan lama dari entri yang sama yang dikembalikan ke tempatnya tetap dapat dibuka.
erpc worker secret rmmenghapus entri keystore milik secret beserta barisnya dierpc.toml(kecuali pengaturan lain di aplikasi menyebut entri yang sama), dan membiarkan nilai di 1Password atau rantai kunci tetap di tempatnya. Perintah ini tidak membersihkan disk, dan salinan di backup Anda tetap ada.- erpc tidak pernah menghapus atau menimpa entri kunci trading. Untuk mengganti kunci, pindahkan dananya, lalu hapus sendiri file dan
[wallet]milik kunci tersebut. - Pengaturan tidak dapat diberi nama
WALLET, dengan kombinasi huruf besar dan kecil apa pun, di keystore atau rantai kunci;--store 1passwordmenerima nama tersebut.
Bekerja dengan kunci trading
Jika erpc berhenti tanpa mengetahui apakah transfer berhasil masuk, periksa signature-nya sebelum Anda mengirim lagi: pengiriman kedua adalah transfer kedua.






