diff --git a/.circleci/config.yml b/.circleci/config.yml index 48adba308..85ce3e156 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -245,7 +245,7 @@ jobs: path: /tmp/artifacts build-macos: macos: - xcode: 12.4.0 + xcode: 13.4.1 working_directory: ~/repo steps: - run: xcodebuild -version diff --git a/README.md b/README.md index d5264b589..eec5bd7bc 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # staking-deposit-cli +[![GitPOAP Badge](https://public-api.gitpoap.io/v1/repo/ethereum/staking-deposit-cli/badge)](https://www.gitpoap.io/gh/ethereum/staking-deposit-cli) + diff --git a/setup.py b/setup.py index 3e368d449..f9ab2ac63 100644 --- a/setup.py +++ b/setup.py @@ -6,7 +6,7 @@ setup( name="staking_deposit", - version='2.2.0', + version='2.3.0', py_modules=["staking_deposit"], packages=find_packages(exclude=('tests', 'docs')), python_requires=">=3.8,<4", diff --git a/staking_deposit/cli/generate_keys.py b/staking_deposit/cli/generate_keys.py index 5d8aa5826..4caa3b7b9 100644 --- a/staking_deposit/cli/generate_keys.py +++ b/staking_deposit/cli/generate_keys.py @@ -34,6 +34,7 @@ from staking_deposit.settings import ( ALL_CHAINS, MAINNET, + PRATER, get_chain_setting, ) @@ -87,7 +88,8 @@ def generate_keys_arguments_decorator(function: Callable[..., Any]) -> Callable[ param_decls='--chain', prompt=choice_prompt_func( lambda: load_text(['chain', 'prompt'], func='generate_keys_arguments_decorator'), - list(ALL_CHAINS.keys()) + # Since `prater` is alias of `goerli`, do not show `prater` in the prompt message. + list(key for key in ALL_CHAINS.keys() if key != PRATER) ), ), jit_option( diff --git a/staking_deposit/intl/fr/cli/existing_mnemonic.json b/staking_deposit/intl/fr/cli/existing_mnemonic.json index 0375f61da..f7f68ab48 100644 --- a/staking_deposit/intl/fr/cli/existing_mnemonic.json +++ b/staking_deposit/intl/fr/cli/existing_mnemonic.json @@ -17,7 +17,7 @@ "arg_validator_start_index": { "help": "Saisissez l'index (numéro de clé) à partir duquel vous souhaitez commencer à générer d'autres clés. Par exemple, si vous avez généré 4 clés dans le passé, entrez 4.", "prompt": "Saisissez l'index (numéro de clé) à partir duquel vous souhaitez commencer à générer d'autres clés. Par exemple, si vous avez généré 4 clés dans le passé, entrez 4.", - "confirm": "Veuillez confirmer le mot de passe." + "confirm": "Veuillez confirmer l'index." } } } diff --git a/staking_deposit/intl/tr/cli/existing_mnemonic.json b/staking_deposit/intl/tr/cli/existing_mnemonic.json new file mode 100644 index 000000000..17066ccc3 --- /dev/null +++ b/staking_deposit/intl/tr/cli/existing_mnemonic.json @@ -0,0 +1,25 @@ +{ + "validate_mnemonic": { + "err_invalid_mnemonic": "İpucu kelimeleri doğru değil, lütfen yazım hatalarını kontrol edin." + }, + "existing_mnemonic": { + "arg_existing_mnemonic": { + "help": "Mevcut ipucu kelimelerinden anahtar oluşturun (veya kurtarın)" + }, + "arg_mnemonic": { + "help": "Anahtarlarınız oluştururken kullandığınız ipucu kelimeleri. (Bu parametreyi kullanmamanız ve size sorulduğunda ipucu kelimelerini girmeniz tavsiye edilir, aksi taktirde ipucu kelimeleriniz komut satırı geçmişinde gözükecektir.)", + "prompt": "İpucu kelimelerinizin arasında boşluk bırakarak giriniz (\" \"). Not: her kelimenin ilk 4 harfini girmeniz yeterli olacaktır." + }, + "arg_mnemonic_password": { + "help": "Büyük ihtimalle aradığınız parametre bu değil: bu parametre ipucu kelimeleri için şifredir, anahtar deposu şifresi değildir. Daha önce şifre vermediyseniz burada şifre girmeniz anahtarlarınızın (yani varlıklarınızın) kaybolmasına neden olabilir! Eğer ipucu kelimelerinizi bu aracı kullanarak oluşturduysanız, şifre vermemişsiniz demektir. Fakat ipucu kelimelerinizin güvenliğini \"arttırmak\" için şifre verdiğinize eminseniz, şifrenizi buraya girmelisiniz.", + "prompt": "İpucu kelime şifrenizi giriniz (daha önce sağladıysanız). Unutmayacağınıza emin olun, bu şifre kurtarılamaz.", + "confirm": "Onaylamak için ipucu kelime şifrenizi tekrar giriniz. Daha önce şifre vermediyseniz burada şifre girmeniz anahtarlarınızın (yani varlıklarınızın) kaybolmasına neden olabilir! Eğer ipucu kelimelerinizi bu aracı kullanarak oluşturduysanız, şifre vermemişsiniz demektir. Fakat ipucu kelimelerinizin güvenliğini \"arttırmak\" için şifre verdiğinize eminseniz, şifrenizi buraya girmelisiniz.", + "mismatch": "Girdiğiniz ipucu kelime şifresi eşleşmiyor, lütfen tekrar deneyiniz." + }, + "arg_validator_start_index": { + "help": "Daha fazla anahtar oluşturmaya başlamak istediğiniz sırayı (anahtar numarası) giriniz. Örneğin, daha önce 4 anahtar oluşturduysanız, buraya 4 girmeniz gerekir.", + "prompt": "Daha fazla anahtar oluşturmaya başlamak istediğiniz sırayı (anahtar numarası) giriniz. Örneğin, daha önce 4 anahtar oluşturduysanız, buraya 4 girmeniz gerekir.", + "confirm": "Lütfen onaylamak için sırayı tekrar girin" + } + } +} diff --git a/staking_deposit/intl/tr/cli/generate_keys.json b/staking_deposit/intl/tr/cli/generate_keys.json new file mode 100644 index 000000000..bcfc3bb5a --- /dev/null +++ b/staking_deposit/intl/tr/cli/generate_keys.json @@ -0,0 +1,35 @@ +{ + "validate_eth1_withdrawal_address": { + "err_invalid_ECDSA_hex_addr": "Girilen Eth1 adresi onaltılık sistemde kodlanmamıştır.", + "msg_ECDSA_addr_withdrawal": "**[Uyarı] bir Eth1 adresini varlık çekme adresi olarak giriyorsunuz. Lütfen bu adresin kontrolünün sizde olduğundan emin olun.**" + }, + "generate_keys_arguments_decorator": { + "num_validators": { + "help": "Oluşturmak istediğiniz yeni doğrulayıcı anahtarlarının sayısını giriniz (daha fazlasını daha sonra da oluşturabilirsiniz)", + "prompt": "Lütfen kaç tane doğrulayıcı çalıştırmak istediğinizi seçin" + }, + "folder": { + "help": "Anahtar depoları ve depozitolar için dizin yolu. Varsayılan olarak `./validator_keys` yolunu gösterir." + }, + "chain": { + "help": "Hedeflenen Ethereum PoS ağının ismi. Depozito olarak ETH kullanıyorsanız \"mainnet\" kullanın", + "prompt": "Lütfen (mainnet veya testnet) ağ/zincir adını seçin" + }, + "keystore_password": { + "help": "Anahtar depolarınızı koruyacak şifre. Ethereum onaylayıcılarınızı kurarken bu şifreyi tekrar girmeniz gerekecek. (Bu parametreyi kullanmamanız ve size sorulduğunda ipucu kelimelerini girmeniz tavsiye edilir, aksi taktirde şifreniz komut satırı geçmişinde gözükecektir.)", + "prompt": "Onaylayıcı anahtar depolarınızı koruyan bir şifre oluşturun. Ethereum onaylayıcılarınızı kurarken bu şifreyi tekrar girmeniz gerekecek.", + "confirm": "Anahtar deposu şifrenizi onaylamak için tekrar girin", + "mismatch": "Hata: girilen değerler eşleşmiyor. Tekrar deneyin." + }, + "eth1_withdrawal_address": { + "help": "Eğer bu alan girilmiş ve geçerliyse, verilen Eth1 adresi varlık çekme adresi olarak kullanılacaktır. Aksi taktirde, ipucu kelimelerinden üretilmiş bir genel anahtar kullanılır." + } + }, + "generate_keys": { + "msg_key_creation": "Anahtarlarınız oluşturuluyor.", + "msg_creation_success": "\nBaşarılı!\nAnahtarlarınızı burada bulabilirsiniz: ", + "msg_pause": "\n\nHerhangi bir tuşa basın.", + "err_verify_keystores": "Anahtar depoları doğrulanamadı.", + "err_verify_deposit": "Depozito JSON dosyaları doğrulanamadı." + } +} diff --git a/staking_deposit/intl/tr/cli/new_mnemonic.json b/staking_deposit/intl/tr/cli/new_mnemonic.json new file mode 100644 index 000000000..cbed05750 --- /dev/null +++ b/staking_deposit/intl/tr/cli/new_mnemonic.json @@ -0,0 +1,15 @@ +{ + "new_mnemonic": { + "arg_new_mnemonic": { + "help": "Yeni ipucu kelimeler ve anahtarlar oluşturun" + }, + "arg_mnemonic_language": { + "default": "english", + "help": "İpucu kelimelerinizin dili", + "prompt": "Lütfen ipucu kelimelerinin dilini seçin" + }, + "msg_mnemonic_presentation": "Bunlar ipucu kelimelerinizdir (tohum ifadeleri). Bir yere not alın ve güvenli bir şekilde saklayın. Depozitoyu YALNIZCA bununla geri alabilirsiniz.", + "msg_press_any_key": "İpucu kelimelerinizi not aldığınızda bir tuşa basın.", + "msg_mnemonic_retype_prompt": "Lütfen ipucu kelimelerinizi not aldığınızı doğrulamak amacıyla (aralarında boşluk bırakarak) yazın. Not: kelimelerin yalnızca ilk 4 harfini yazmanız yeterlidir." + } +} diff --git a/staking_deposit/intl/tr/credentials.json b/staking_deposit/intl/tr/credentials.json new file mode 100644 index 000000000..cc5fd513d --- /dev/null +++ b/staking_deposit/intl/tr/credentials.json @@ -0,0 +1,14 @@ +{ + "from_mnemonic": { + "msg_key_creation": "Anahtarlarınız oluşturuluyor:\t\t" + }, + "export_keystores": { + "msg_keystore_creation": "Anahtar depolarınız oluşturuluyor:\t" + }, + "export_deposit_data_json": { + "msg_depositdata_creation": "Depozito veriniz (depositdata) oluşturuluyor:\t" + }, + "verify_keystores": { + "msg_keystore_verification": "Anahtar depolarınız doğrulanıyor:\t" + } +} diff --git a/staking_deposit/intl/tr/deposit.json b/staking_deposit/intl/tr/deposit.json new file mode 100644 index 000000000..b53983c9e --- /dev/null +++ b/staking_deposit/intl/tr/deposit.json @@ -0,0 +1,5 @@ +{ + "check_python_version": { + "err_python_version": "Python sürümünüz yetersiz, lütfen 3.8 sürümü veya daha yenisini yükleyin." + } +} diff --git a/staking_deposit/intl/tr/utils/validation.json b/staking_deposit/intl/tr/utils/validation.json new file mode 100644 index 000000000..73fcef98f --- /dev/null +++ b/staking_deposit/intl/tr/utils/validation.json @@ -0,0 +1,14 @@ +{ + "verify_deposit_data_json": { + "msg_deposit_verification": "Depozitonuz doğrulanıyor:\t" + }, + "validate_password_strength": { + "msg_password_length": "Şifre uzunluğu en az 8 olmalıdır. Lütfen tekrar girin." + }, + "validate_int_range": { + "err_not_positive_integer": "Pozitif tam sayı değil. Lütfen tekrar girin." + }, + "validate_choice": { + "err_invalid_choice": "Geçerli bir seçim değil. Lütfen seçiminizi tekrar girin." + } +} diff --git a/staking_deposit/settings.py b/staking_deposit/settings.py index b3e43d363..3f09010ef 100644 --- a/staking_deposit/settings.py +++ b/staking_deposit/settings.py @@ -1,7 +1,7 @@ from typing import Dict, NamedTuple -DEPOSIT_CLI_VERSION = '2.2.0' +DEPOSIT_CLI_VERSION = '2.3.0' class BaseChainSetting(NamedTuple): @@ -10,9 +10,10 @@ class BaseChainSetting(NamedTuple): MAINNET = 'mainnet' +ROPSTEN = 'ropsten' +GOERLI = 'goerli' PRATER = 'prater' KILN = 'kiln' -ROPSTEN = 'ropsten' SEPOLIA = 'sepolia' @@ -20,19 +21,20 @@ class BaseChainSetting(NamedTuple): MainnetSetting = BaseChainSetting(NETWORK_NAME=MAINNET, GENESIS_FORK_VERSION=bytes.fromhex('00000000')) # Ropsten setting RopstenSetting = BaseChainSetting(NETWORK_NAME=ROPSTEN, GENESIS_FORK_VERSION=bytes.fromhex('80000069')) -# Sepolia setting -SepoliaSetting = BaseChainSetting(NETWORK_NAME=SEPOLIA, GENESIS_FORK_VERSION=bytes.fromhex('90000069')) -# Testnet (spec v1.0.1) -PraterSetting = BaseChainSetting(NETWORK_NAME=PRATER, GENESIS_FORK_VERSION=bytes.fromhex('00001020')) +# Goerli setting +GoerliSetting = BaseChainSetting(NETWORK_NAME=GOERLI, GENESIS_FORK_VERSION=bytes.fromhex('00001020')) # Merge Testnet (spec v1.1.9) KilnSetting = BaseChainSetting(NETWORK_NAME=KILN, GENESIS_FORK_VERSION=bytes.fromhex('70000069')) +# Sepolia setting +SepoliaSetting = BaseChainSetting(NETWORK_NAME=SEPOLIA, GENESIS_FORK_VERSION=bytes.fromhex('90000069')) ALL_CHAINS: Dict[str, BaseChainSetting] = { MAINNET: MainnetSetting, - PRATER: PraterSetting, - KILN: KilnSetting, ROPSTEN: RopstenSetting, + GOERLI: GoerliSetting, + PRATER: GoerliSetting, # Prater is the old name of the Prater/Goerli testnet + KILN: KilnSetting, SEPOLIA: SepoliaSetting, } diff --git a/staking_deposit/utils/constants.py b/staking_deposit/utils/constants.py index 42015bb0c..12f6122a0 100644 --- a/staking_deposit/utils/constants.py +++ b/staking_deposit/utils/constants.py @@ -48,6 +48,7 @@ def _add_index_to_options(d: Dict[str, List[str]]) -> Dict[str, List[str]]: 'ko': ['한국어', '조선말', '韓國語', 'ko', 'Korean'], 'pt-BR': ['Português do Brasil', 'Brasil', 'pt-BR', 'Brazilian Portuguese'], 'ro': ['român', 'limba română', 'ro', 'Romainian'], + 'tr': ['Türkçe', 'tr', 'Turkish'], 'zh-CN': ['简体中文', 'zh-CN', 'zh', 'Chinease'], }) MNEMONIC_LANG_OPTIONS = _add_index_to_options({