- Понимание концепции закрытого ключа, открытого ключа и адреса в блокчейне Ethereum
- Простой пример
- Генерация ключей в Ethereum
- Закрытый ключ (Private Key)
- Открытый ключ (Public key)
- Адрес Эфириума (Ethereum Address)
- Где взять закрытый ключ эфириум кошелька
- Что такое закрытый ключ эфириума?
- Где взять закрытый ключ эфириум кошелька
- 1. Как посмотреть закрытй ключ в MyEtherWallet
- 2. Как посмотреть закрытый ключ в Jaxx
- 3. Как посмотреть приватный ключ в Exodus
- Выводы
- All private keys ethereum
Понимание концепции закрытого ключа, открытого ключа и адреса в блокчейне Ethereum
Внимание! Это техническая статья, рассчитанная на блокчейн специалистов и объясняет как генерируются ключи внутри блокчейна.
Если Вам нужна помощь в открытии и сохранении своих приватных ключей, то обратитесь к статье: Как установить холодный кошелек Ethereum
Прежде чем мы углубимся в концепцию блокчейна Ethereum, важно понять, как генерируются открытый ключ, закрытый ключ и адрес.
Чтобы сделать это проще для начинающих, мы попытаемся объяснить техническую концепцию на простом примере.
Простой пример
Закрытый ключ (секретный большой номер) создается вашим кошельком случайным образом, затем шифруется (с вашим паролем) и сохраняется в файле UTC в папке хранилища ключей. В тоже время ваш публичный адрес рассчитывается на основе открытого ключа, полученного из закрытого.
Это было просто определение. Теперь рассмотрим как это работает.
Генерация ключей в Ethereum
Генерация ключа Ethereum основана на эллиптической кривой ecp256k1 .
Эллиптическая кривая — это сложная математика, и в интернете есть много замечательных статей, в которых подробно рассматриваются эллиптические кривые (например в вики).
Существуют стандартные библиотеки для генерации пары ключей Ethereum более безопасным способом. В этой статье, просто для демонстрации, мы будем использовать библиотеку Javascript для выполнения операций с эллиптической кривой.
Закрытый ключ (Private Key)
В эллиптической кривой cp256k1 любое число от 1 до 2 ^ 256-1 является допустимым закрытым ключом.
Хорошая библиотека генерирует закрытый ключ с учетом необходимой случайности. Для этого упражнения мы возьмем «1» в качестве закрытого ключа, который является допустимым закрытым ключом, поскольку он находится в указанном диапазоне, указанном выше. Ethereum требует, чтобы закрытый ключ был длиной в 256 бит. Вот пример кода для nodejs.
Это отобразит закрытый ключ в шестнадцатеричном виде, который
Открытый ключ (Public key)
Открытый ключ описывается следующим образом в желтой бумаге Эфириума.
«Где pu — открытый ключ, предполагается, что это байтовый массив размером 64 (сформированный из конкатенации двух положительных целых чисел каждое
G называется точкой генератора, которая является одним из ключевых параметров криптографии эллиптической кривой. G имеет фиксированное значение для ecp256k1 , которое рекомендуется экспертами. Вы можете прочитать больше здесь.
Адрес Эфириума (Ethereum Address)
Адрес Ethereum описывается следующим образом в желтой бумаге:
«Для данного закрытого ключа, pr, адрес Ethereum a (pr) (160-битное значение), которому он соответствует, определяется как самый правый 160-битный хэш Keccak соответствующего открытого ключа ECDSA.»
Чтобы сгенерировать адрес Ethereum, возьмите хеш открытого ключа Keccak-256. Самые правые 20 байт — это и есть ваш адрес Ethereum.
Адрес Ethereum. 0x7e5f4552091a69125d5dfcb7b8c2659029395bdf
Это всего лишь пример, чтобы понять концепцию. Пожалуйста, не используйте его для создания реального кошелька для хранения ETH.
Если вы найдете эту статью полезной, вы можете оказать свою признательность, поделившись ею.
Источник
Где взять закрытый ключ эфириум кошелька
Автор: admin · Опубликовано 30.04.2018 · Обновлено 08.08.2018
Эфириум — это одна из самых популярных криптовалют после Bitcoin, для авторизации в кошельке здесь используется тот же способ, что и для большинства других криптовалют — пара открытого и закрытого ключей. Эта технология позволяет надежно защитить ваши средства.
В этой статье мы поговорим о том, как это работает, зачем все это нужно, а также разберем где взять закрытый ключ эфириума кошелька для нескольких популярных программ, и для чего его можно использовать.
Что такое закрытый ключ эфириума?
Чтобы понять что такое закрытый ключ эфириума, необходимо сначала поговорить о том как работает сеть блокчейн, я обязательно напишу об этом более подробную статью, но сейчас рассмотрим все вкратце. Я буду упрощать некоторые моменты, поэтому информация будет не всегда технически достоверной, но она позволит понять общую суть.
Болокчейн эфириума можно представить в виде бухгалтерской книги. Там нет никаких балансов кошельков, есть только список транзакций, на основе которого можно увидеть сколько сейчас есть у вас монет. Этот список распространяется между всеми узлами сети, а его достоверность гарантируется тем, что все узлы проверяют каждую транзакцию, которая добавляется в этот список, таким образом, попытка подделать что-либо приведет к тому, что большинство эту подделку отбросит, при условии, что у них установлено программное обеспечение без уязвимостей.
У каждой транзакции есть адрес кошелька эфириума с которого она была отправлена и адрес кошелька на который были отправлены средства. При отправке транзакции программа просто суммирует все начисления и списания средств с вашего коешька, и если сумма оказывается достаточной, то средства отправляются. Перед тем как транзакция попадает в блокчейн, она проверяется другими узлами сети, так что подделать вы ничего не сможете. Таким образом можно сказать, что ваш баланс кошелька находится одновременно на множестве компьютеров сети и чтобы поддтвердить что это именно ваш кошелек используются ключи шифрования. В эфириуме применяется ассиметричная криптография. На данный момент существует два алгоритма — RSA, популярный в Linux и ECDSA, который используется в криптовалюте.
Если вы захотите, то сможете найти более подробную информацию об этом в интернете. Если в двух словах, то вся суть сводится к тому что с помощью открытого ключа можно зашифровать сообщение, но расшифровать его можно только с помощью закрытого ключа. Таким образом открытый ключ доступен всем, а закрытый хранится только у владельца кошелька. При создании кошелька сначала генерируется закрытый ключ, потом на его основе создается открытый ключ. Хэш открытого ключа — это и есть ваш адрес в сети эфириум. А закрытый ключ применяется для того чтобы подтвердить, что именно вы являетесь владельцем этого адреса.
Это означает что вы можете экспортировать закрытый ключ из одного кошелька, например, geth или jaxx, и вставить в другой, то же myetherwallet, и без проблем получить доступ к средствам, которые хранятся на этом кошельке.
Иногда пользоваетли путают пароль, который они установили на кошелек с закрытым ключем, между ними нет ничего общего и с помощью того пароля вы не сможете получить доступ к вашим средствам. Закрытый ключ хранится в обычном текстовом файле на компьютере, там его может прочитать любая программа, поэтому некоторые кошельки предлагают дополнительно шифровать этот ключ с помощью пароля. Отсюда и появляется пароль.
А теперь, когда мы разобрались с основами, разберем как экспортировать закрытый ключ из популярных кошельков. Важно отметить, что получить закрытый ключ эфириум кошелька можно только в кошельке, биржи, обычно, не дают пользователям доступа к закрытым ключам.
Где взять закрытый ключ эфириум кошелька
Рассмотрим самые популярные кошельки, это Jaxx, MyEtherWallet и Electrum.
1. Как посмотреть закрытй ключ в MyEtherWallet
Начнем с самого простого — myetherwallet. Сначала вам нужно войти в ваш кошелек. Для этого используйте файл Keystroke, который сервис вам отдал при регистрации. В принципе, вы могли бы посмотреть свой приватный ключ эфириум в этом файле, но там он зашифрован с помощью пароля, так что для его получения нужно использовать интерфейс кошелька:
Следующий шаг — перейдите на вкладку Инфомрация о кошельке:
Здесь вы можете еще раз скачать ваш файл Keystorke, посмотерть адрес, а также посмотреть закрытый ключ, по умолчанию он скрыт звездочками, но вы можете его открыть нажав на кнопку глаза напротив поля.
2. Как посмотреть закрытый ключ в Jaxx
Откройте программу, затем кликите по значку бутерброда в верхней части экрана. Далее выбертие пункт меню Tools:
Затем Display Private Keys:
Подождите пока завершится отсчет и нажмите I understand:
Выберите Display Ethereum Keys:
В следующем окне вы видите ваши ключи, открытый в поле public key, закрытый в private key ethereum:
3. Как посмотреть приватный ключ в Exodus
В кошельке Exodus процедура немного сложнее. Сначала нажмите сочетание клавиш Ctrl+Shift+D, затем откройте File, Developer, Etereum, Export Private Keys:
В следующем окне вам надо нажать I am sure чтобы подтвердить отображение private key ethereum:
А дальше программа покажет, что приватный ключ эфириум эскортирован успешно в файл:
Выводы
В этой небольшой статье мы рассмотрели где взять приватный ключ эфириума, что это такое и зачем он нужен. Особенно полеными эти методы будут когда вы захотите получить монеты какого-либо форка эфириума. Но не забывайте, что приватный ключ ethereum дает полный доступ к вашему кошельку его владельцу, поэтому никогда и никому не сообщайте эти ключи, а если это необходимо, то сначала переведите средства на другой кошелек.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
All private keys ethereum
A common API for Ethereum key operations with pluggable backends.
This library and repository was previously located at https://github.com/pipermerriam/ethereum-keys. It was transferred to the Ethereum foundation github in November 2017 and renamed to eth-keys . The PyPi package was also renamed from ethereum-keys to eth-keys .
Running the tests
You can run the tests with:
Or you can install tox to run the full test suite.
Pandoc is required for transforming the markdown README to the proper format to render correctly on pypi.
For Debian-like systems:
To release a new version:
How to bumpversion
The version format for this repo is
To issue the next version in line, specify which part to bump, like make release bump=minor or make release bump=devnum .
If you are in a beta version, make release bump=stage will switch to a stable.
To issue an unstable version when the current version is stable, specify the new version explicitly, like make release bump=»—new-version 2.0.0-alpha.1 devnum»
The KeyAPI object is the primary API for interacting with the eth-keys libary. The object takes a single optional argument in its constructor which designates what backend will be used for eliptical curve cryptography operations. The built-in backends are:
- eth_keys.backends.NativeECCBackend : A pure python implementation of the ECC operations.
- eth_keys.backends.CoinCurveECCBackend : Uses the coincurve library for ECC operations.
By default, eth-keys will try to use the CoinCurveECCBackend , falling back to the NativeECCBackend if the coincurve library is not available.
Note: The coincurve library is not automatically installed with eth-keys and must be installed separately.
The backend argument can be given in any of the following forms.
- Instance of the backend class
- The backend class
- String with the dot-separated import path for the backend class.
The backend can also be configured using the environment variable ECC_BACKEND_CLASS which should be set to the dot-separated python import path to the desired backend.
KeyAPI.ecdsa_sign(message_hash, private_key) -> Signature
This method returns a signature for the given message_hash , signed by the provided private_key .
- message_hash : must be a byte string of length 32
- private_key : must be an instance of PrivateKey
KeyAPI.ecdsa_verify(message_hash, signature, public_key) -> bool
Returns True or False based on whether the provided signature is a valid signature for the provided message_hash and public_key .
- message_hash : must be a byte string of length 32
- signature : must be an instance of Signature
- public_key : must be an instance of PublicKey
KeyAPI.ecdsa_recover(message_hash, signature) -> PublicKey
Returns the PublicKey instances recovered from the given signature and message_hash .
- message_hash : must be a byte string of length 32
- signature : must be an instance of Signature
Returns the PublicKey instances computed from the given private_key instance.
- private_key : must be an instance of PublicKey
Common APIs for PublicKey , PrivateKey and Signature
There is a common API for the following objects.
Each of these objects has all of the following APIs.
- obj.to_bytes() : Returns the object in it’s canonical bytes serialization.
- obj.to_hex() : Returns a text string of the hex encoded canonical representation.
The PublicKey class takes a single argument which must be a bytes string with length 64.
Note that there are two other common formats for public keys: 65 bytes with a leading \x04 byte and 33 bytes starting with either \x02 or \x03 . To use the former with the PublicKey object, remove the first byte. For the latter, refer to PublicKey.from_compressed_bytes .
The following methods are available:
This classmethod returns a new PublicKey instance computed from its compressed representation.
- compressed_bytes must be a byte string of length 33 starting with \x02 or \x03 .
This classmethod returns a new PublicKey instance computed from the given private_key .
- private_key may either be a byte string of length 32 or an instance of the KeyAPI.PrivateKey class.
PublicKey.recover_from_msg(message, signature) -> PublicKey
This classmethod returns a new PublicKey instance computed from the provided message and signature .
- message must be a byte string
- signature must be an instance of KeyAPI.Signature
PublicKey.recover_from_msg_hash(message_hash, signature) -> PublicKey
Same as PublicKey.recover_from_msg except that message_hash should be the Keccak hash of the message .
PublicKey.verify_msg(message, signature) -> bool
This method returns True or False based on whether the signature is a valid for the given message.
PublicKey.verify_msg_hash(message_hash, signature) -> bool
Same as PublicKey.verify_msg except that message_hash should be the Keccak hash of the message .
Returns the compressed representation of this public key.
Returns the hex encoded ethereum address for this public key.
Returns the ERC55 checksum formatted ethereum address for this public key.
Returns the 20-byte representation of the ethereum address for this public key.
The PrivateKey class takes a single argument which must be a bytes string with length 32.
The following methods and properties are available
This property holds the PublicKey instance coresponding to this private key.
This method returns a signature for the given message in the form of a Signature instance
- message must be a byte string.
Same as PrivateKey.sign except that message_hash should be the Keccak hash of the message .
The Signature class can be instantiated in one of two ways.
- signature_bytes : a bytes string with length 65.
- vrs : a 3-tuple composed of the integers v , r , and s .
Note: If using the signature_bytes to instantiate, the byte string should be encoded as r_bytes | s_bytes | v_bytes where | represents concatenation. r_bytes and s_bytes should be 32 bytes in length. v_bytes should be a single byte \x00 or \x01 .
Signatures are expected to use 1 or 0 for their v value.
The following methods and properties are available
This property returns the v value from the signature as an integer.
This property returns the r value from the signature as an integer.
This property returns the s value from the signature as an integer.
This property returns a 3-tuple of (v, r, s) .
Signature.verify_msg(message, public_key) -> bool
This method returns True or False based on whether the signature is a valid for the given public key.
- message : must be a byte string.
- public_key : must be an instance of PublicKey
Signature.verify_msg_hash(message_hash, public_key) -> bool
Same as Signature.verify_msg except that message_hash should be the Keccak hash of the message .
This method returns a PublicKey instance recovered from the signature.
- message : must be a byte string.
Same as Signature.recover_public_key_from_msg except that message_hash should be the Keccak hash of the message .
This error is raised during instantaition of any of the PublicKey , PrivateKey or Signature classes if their constructor parameters are invalid.
This error is raised from any of the recover or verify methods involving signatures if the signature is invalid.
Источник