Bir uygulamanın trading anahtarını ve gizli değerlerini sunucunun diskinden uzak tutun
erpc worker, bir uygulamanın trading anahtarını ve gizli değerlerini 1Password'de, anahtar zincirinizde ya da şifreli bir keystore'da saklar ve bunları uygulamaya bellekte iletir; sunucunun diskine ise asla.Bu sayfada bir ön sürüm olan ERPC CLI
v0.1.0-rc.4 anlatılır.Trading anahtarı uygulamaya nasıl ulaşır
Cüzdanı olan bir uygulama, anahtarını başladığında bir pipe üzerinden alır. Sunucuda
wallet.json, .env ya da bir kopya yoktur. erpc anahtarı hiçbir diske şifrelenmemiş olarak yazmaz: anahtarı koyduğu tek dosya, makinenizde, parola ifadenizle şifrelenmiş olan keystore dosyasıdır.- Nerede saklanır:
erpc worker key new,erpc loginoturumu 1Password'de tutuyorsa anahtarı orada, değilse anahtar zincirinde, o da değilse keystore'da oluşturur.erpc.toml, anahtarın referansını ve açık anahtarını kaydeder. - Sunucuda: erpc worker ajanı anahtarı yalnızca bellekte tutar. Kendini döküm alınamaz hale getirir, belleğini kilitler ve anahtarı uygulamaya bir dosya tanımlayıcısı üzerinden iletir; uygulama okuduktan sonra anahtarı siler.
- Sunucu yeniden başlatıldıktan sonra worker kilitli olarak geri gelir:
erpc worker startanahtarı yeniden gönderene kadar uygulama çalışmaz. Başarısız olan ya da öldürülen bir ajanı systemd yeniden başlatır ve ajan aynı şekilde kilitli olarak geri gelir. - Bir paket güncellemesi worker'ı yeniden başlatmaz.
deploy,needrestartaracına worker birimlerine dokunmamasını söyler: bu araç otomatik modunda bu birimleri erteler, terminalde sorulduğunda ise bunlar için varsayılan yanıtı hayırdır; böylece gözetimsiz bir güvenlik güncellemesi uygulamayı yeniden başlatmaz. Bu kural yazılamadığında dağıtım bunu bildirir ve devam eder; worker bu durumda bu koruma olmadan çalışır.
Trading anahtarını
[wallet] belirtir, başka hiçbir şey belirtmez ve erpc onu yalnızca terminal başındaki bir kişi için okur: bir yapay zekâ aracı için okumaz, bir 1Password hizmet hesabıyla da okumaz. [wallet] referansını belirten ya da .wallet ile biten bir keychain: veya keystore: hesabını belirten bir [secrets] satırı reddedilir. Keystore'da anahtar olarak saklanan bir kayıt, gizli değer olarak açılmaz. 1Password'de ve başka bir ada sahip bir anahtar zinciri hesabında ise hiçbir şey bir anahtarı işaretlemez: [wallet] içermeyen ve böyle bir öğeyi [secrets] altında belirten bir erpc.toml, o öğenin gizli değer olarak okunmasına yol açar.Değerlerin nerede saklanacağını seçin
1Password isteğe bağlıdır.
erpc worker key new ve erpc worker secret put, --store bir yer belirtmedikçe (--store 1password --vault <id>, --store keychain, --store keystore), kendilerine verileni aşağıdakilerden geçerli olan ilkinde saklar:- 1Password,
erpc loginoturumu orada tuttuğunda ya da--vaultverildiğinde. - İşletim sisteminin anahtar zinciri, bir değeri makine yeniden başlatıldıktan sonra da sakladığı yerlerde: macOS, Windows ve giriş yapılmış bir oturumda masaüstü anahtarlığı bulunan Linux.
- erpc'nin keystore'u, böyle bir anahtarlığı olmayan bir Linux makinesinde: headless bir sunucu, WSL, bir SSH girişi. Böyle bir makinede
--store keychainreddedilir.
Anahtar zincirinde ya da keystore'da anahtar yalnızca o tek makinede bulunur; kopyası ve eşitlemesi yoktur ve başka bir makine bir
keychain: veya keystore: referansını okuyamaz.Kaybolan ya da silinen bir makine, cüzdanın kaybı demektir: cüzdanda az tutun ya da kasaya oturum açmış her makinenin okuyabildiği 1Password'ü kullanın. 1Password'de
erpc login --store 1password-desktop ile, masaüstü uygulamasının olmadığı yerlerde ise op signin ile oturum açın.Bir 1Password hizmet hesabı bir uygulamanın gizli değerlerini tutabilir, ancak erpc bir trading anahtarını hizmet hesabıyla okumaz. 1Password ile her okuma uygulamada bir onay istemi gösterebilir ve erpc beklerken bir bekleme göstergesi görüntüler.
Gizli değer saklayın
API token'ları ve RPC anahtarları gibi gizli değerler de aynı şekilde saklanır, ancak uygulamaya bir pipe üzerinden değil, ortam değişkenleri olarak ulaşır.
erpc worker secret put <NAME> değeri saklar; erpc.toml içindeki [secrets] ise yalnızca değerin referansını tutar.bash
--generatedeğeri oluşturur: 64 onaltılık karakter olarak 32 rastgele bayt.--from-account, hesabınızın RPC anahtarlarından paylaşımlı RPC'nin kabul ettiği ilkini saklar. Anahtarlar sırayla, önce birincil anahtar olmak üzere, her biri için birgetHealthile ve yanıt için 8 saniye süre verilerek denenir. 401 veya 403 yanıtı alan bir anahtar reddedilir ve sıradaki denenir; yalnızca RPC'nin kabul ettiği bir anahtar saklanır. Komut, bunun hesabın birincil anahtarı mı yoksa başka bir anahtar mı olduğunu söyler (--jsonileaccount_key).- İki değer de yazdırılmaz,
--jsonile de yazdırılmaz. Keystore'un ilk kullanımı ya da kilitli bir keystore, terminal başında bir kişi gerektirir. - Anahtarlar bu makineden denenir; bu yüzden sunucunun adresiyle sınırlandırılmış bir anahtar, orada çalışsa da burada reddedilir. Tüm anahtarlar reddedildiğinde
--from-accounthiçbir şey saklamaz; kastettiğiniz anahtarı, ekranda görünmeyecek şekilde yazarak ya da pipe ile vererek elle saklarsınız. RPC'ye sorulamadığında hiçbir şey saklamaz veerpc.tomlolduğu gibi kalır; aynı komutu yeniden çalıştırın.
Bir anahtarı elle saklamak için:
bash
--replace, zaten ayarlanmış bir ad için yeni bir değer saklar.erpc worker secret list, gizli ayarları adlarıyla ve her birinin nerede saklandığıyla listeler.- Bir veri hattının sağladığı bir ayar (
GRPC_ENDPOINT,SHREDS_ENDPOINT,SOLANA_SEND_RPC_ENDPOINT) asla gizli değer değildir: onu--grpc,--shredsve--unlimitedayarlar.
[secrets] veya [wallet] içindeki bir referans şunlardan biridir:Keystore
Keystore,
~/.erpc/keystore dizinidir (ERPC_HOME ayarlandığında onun altındaki keystore). Linux ve macOS'ta dizinlerinin izni 0700, dosyalarınınki 0600 olur; Windows'ta erpc kendine ait hiçbir izin ayarlamaz.master.json, parola ifadenizden PBKDF2-HMAC-SHA256'nın (600.000 yineleme) türettiği bir anahtarla mühürlenmiş, rastgele 32 baytlık bir ana anahtar tutar. Her kayıt, kendine ait bir anahtarla, ChaCha20-Poly1305 kullanılarak mühürlenmiş tek bir değer tutar.- Parola ifadesi: keystore'u kullanan ilk
key newveyasecret put, onu seçmenizi ister; terminalde iki kez yazılır ve en az 12 karakter olmalıdır. erpc onu yalnızca bu gizli istemden alır; asla bir argümandan, bir ortam değişkeninden ya da bir pipe'tan almaz. - Linux'ta kilit açma: parola ifadesi keystore'u bir kez açtıktan sonra kilit açma, çekirdeğin kalıcı anahtarlığında, bellekte tutulur; bu, makine yeniden başlayana, anahtarlık boşta kalma süresi dolacak kadar kullanılmadan kalana (sistem aksini söylemedikçe üç gün) ya da
erpc worker secret lockçalıştırılana kadar sürer.erpc worker secret unlockparola ifadesini önceden sorar ve kilidin ne zamana kadar açık kalacağını söyler. Kendi girişi olmadan başlatılan bir kabukta (-olmadansu,sudo -E) kilit açma tutulmaz ve her komut sorar. - Terminal başında kimse yokken, keystore'a ihtiyaç duyan bir komut, varsa kilit açmayı kullanır; yoksa
erpc worker secret unlockkomutunu belirterek başarısız olur. Kilidi açık bir keystore gizli değerleri teslim eder, trading anahtarını teslim etmez. - macOS ve Windows'ta (
--store keystore) kilit açma tutulmaz: keystore'a ihtiyaç duyan her komut parola ifadesini bir kez sorar ve bu yüzden bir terminal gerektirir.
Keystore neyi korur, neyi korumaz
keystoredizinini yedekleyin ve parola ifadesini unutmayın. erpc ikisini de kurtaramaz ve ikisi birlikte elinizde olmadıkça keystore'un tuttukları kaybolur.- Keystore dosyalarına ve parola ifadesine sahip olan herkes anahtara sahiptir. PBKDF2 her tahmini yavaşlatır, ancak tahmin edilebilir bir parola ifadesini güvenli hale getirmez.
- Keystore'un kilidi açıkken, sizin kullanıcınız olarak çalışan herhangi bir program ana anahtarı çekirdek anahtarlığından okuyabilir (oturumu anahtarlığınızı içermeyen bir program onu kendine bağlayabilir) ve bir anahtarın kaydı da dahil her kaydı açabilir. erpc'nin kendi kuralları (
[wallet]bölümünün belirttiği anahtarı yalnızca terminal başındaki bir kişi için okumak, asla bir yapay zekâ aracı için okumamak; keystore'da saklanan bir anahtarı asla gizli değer olarak açmamak) erpc'nin yaptığı şeydir; sizin kullanıcınız olarak çalışan diğer programları bağlamaz. İşiniz bittiğindeerpc worker secret lockçalıştırın. - Kayıt adları gizlenmez ve bir kaydın boyutu, değerin ne kadar uzun olduğunu gösterir.
- Değiştirilmiş bir dosya açılmaz; aynı kaydın daha eski bir kopyası onun yerine konursa açılır.
erpc worker secret rm, bir gizli değerin keystore kaydınıerpc.tomliçindeki satırıyla birlikte siler (uygulamanın başka bir ayarı aynı kaydı belirtmiyorsa) ve 1Password'deki ya da anahtar zincirindeki bir değeri olduğu yerde bırakır. Diski temizlemez ve yedeklerinizdeki kopyalar kalır.- erpc bir trading anahtarının kaydını asla silmez ve üzerine yazmaz. Bir anahtarı değiştirmek için fonları taşıyın, ardından anahtarın dosyasını ve
[wallet]bölümünü kendiniz kaldırın. - Keystore'da ya da anahtar zincirinde bir ayara, büyük-küçük harf fark etmeksizin
WALLETadı verilemez;--store 1passwordbu adı kabul eder.
Trading anahtarıyla çalışın
erpc bir transferin gerçekleşip gerçekleşmediğini bilmeden sona erdiğinde, yeniden göndermeden önce transferin imzasını sorgulayın: ikinci bir gönderim, ikinci bir transferdir.






