Вам может быть знаком этот пользовательский интерфейс, когда вы впервые захотите взаимодействовать с сетью 🕹.

Вы увидите такие поля, как имя, мнемоническое начальное число, пароль и криптотип пары ключей (Schnorrkel - sr25519 или Edwards - ed25519) и путь к секретному производному.

🧠 Мнемоническое начальное число составляет 12 (по умолчанию), 15, 18, 21 и 24 слова. Вам буквально не нужно помнить об этом, так как вы загрузите свою учетную запись в файл, и ее можно будет восстановить в последнее время или использовать в кошельке, который поддерживает учетные записи Polkadot.

🔑 Пароль используется для кодирования вашего секретного ключа в связке ключей, поэтому никто не сможет украсть ваши средства / токены, когда случайно найдет их на столе.

Тип шифрования Keypair предпочтительно использовать sr25519. E d25519 - это более старая криптография для генерации ключей. Он больше использовался в прошлом и в основном для наборов валидаторов.

Вы нажали создать и сохранить резервную копию и тада Теперь ваша учетная запись создана и сохранена локально, теперь вы в безопасности 😌

🤔 Что произошло на заднем плане?

Отказ от ответственности, я являюсь автором автономного инструмента для создания ключей Polkadot / Substrate, где вы также можете создавать учетные записи Polkadot и Substrate. Работает прямо с мобильного и офлайн. Бонусная часть, написана на Vue.js и Typescript 😎

Вот почему мне было любопытно узнать больше о том, как создаются аккаунты в Polkadot: Я переопределил Vue.js с помощью Typescript.

То, что вы видите здесь, в буквальном смысле то же самое. Ага.

Имя вашей учетной записи, 🏷 теги (пока распознаются только в вашей панели управления, а не в сети), 🧠 мнемоническое семя, 🔑 пароль, криптотип ключевой пары (sr25519 - по умолчанию).

После нажатия 💾 Загрузить учетную запись браузер сохранит вашу учетную запись в локальном файле. Позаботьтесь об этом файле и не навязывайте его своим паролем.

🎭 За кулисами: Создать учетную запись

Осторожно, грязный отрывочный код без тестов 👨🏼‍🔬🧙‍♂️

Основная функция для генерации мнемоники при загрузке - это mnemonicGenerate (), которая основана на bip39Generate (), который представляет собой оболочку Javascript поверх bip39.rs.

Затем мы инициализируем keyring (), который представляет собой реальную базовую абстракцию вокруг управления ключами в нашем инструменте для управления различными парами ключей. Чтобы использовать связку ключей, мы будем использовать функцию addFromMnemonic () со сгенерированной мнемоникой, мета и наш keyringType, который в данном случае sr25519.

В другой строке вы найдете mnemonicValidate (), который буквально проверяет суммы, если ваша мнемоника правильная.

Для следующих операций нам необходимо знать, какой у нас адрес SS58 (спецификация в деталях). SS58 - это простой формат адреса, разработанный для цепочек на основе подложек. Он в значительной степени основан на формате биткойн-чеков Base-58 с некоторыми изменениями. Для этого мы будем использовать getPair () поверх связки ключей. Он получит пару ключей учетной записи из словаря пар ключей, учитывая адрес учетной записи.

Для проверки подписей нам понадобится publicKey, мы получим его так же, используя getPair (), но также нужно использовать функцию Uint8Array to Hexadecimal, используя u8aToHex ()

🍰 Бонусный этап. Подпишите и проверьте подпись

Следующее действие, которое мы можем сделать с этим подключенным через Интернет, - это подписать данные вашим секретным ключом. Это хорошо, когда вам нужно передать какие-то данные, и вам нужно проверить их с помощью той же пары ключей, если она подписана вашей доверенной стороной, вашей парой ключей.

Теперь, если кто-то предоставил вам подписанные данные с той же парой ключей, вы можете проверить их с помощью своей пары ключей.

Тада, вот и все, вы успешно проверили данные с помощью пары ключей.

🎭 За кулисами: подписать и подтвердить подпись

Что происходит на заднем плане во время этих двух действий?

Для подписи данных воспользуемся подметодом из KeyringPair, который называется sign (). Для этого требуются данные в Uint8Array, и они будут возвращены в Uint8Array. На следующем шаге мы преобразуем его в шестнадцатеричный формат для упрощения передачи по сети.

Чтобы проверить подписанные данные, нам нужно добавить в функцию schnorrkelVerify () (она основана на sr25519.rs) три вещи. Подписанные данные, подпись и наш publicKey. Мы получили их все из предыдущих шагов.

Это похоже на базовую криптографию 101, но на заднем плане есть много утилит криптографии, работающих от wasm-crypto. Спасибо замечательной команде паритета Parity Technologies и Polkadot. 👏

Базовые утилиты, которые мы используем, являются подмножеством https://polkadot.js.org/common/, а именно

Мы также подали заявку на грант от W3F, потому что очень хотели бы видеть больше компонентов для Polkadot в Vue.js

🗝 Подключ 🍉

Subkey - это утилита командной строки, включенная в Substrate, которая генерирует или восстанавливает ключи Substrate. Подробнее см. В документации по подключам

subkey generate

Здесь мы видим мнемоническое начальное число (секретную фразу), секретное начальное число в шестнадцатеричном формате, открытый ключ в шестнадцатеричном формате и наш Адрес SS58

Мы также можем делать те же действия, что и с веб-подключением.

Данные подписи

Проверить подпись

Вывод

Для добрых читателей создание и использование учетных записей на Polkadot - это подмножество различных крипто-утилит, которые имеют решающее значение для базового взаимодействия с сетью. На основе этих утилит созданы другие приложения, такие как app-Democracy или app-advice, app-staking, app-transfer и другие.

Источники

Https://subkey.netlify.com

Https://polkadot.js.org/common

Https://polkadot.js.org

Https://wiki.polkadot.network/en/latest/polkadot/build/tools/subkey

🚨⛵️

Если дочитать статью до конца, я все равно ищу работу. Если вы ищете инженера полного цикла, специализирующегося на Vue.js и Typescript, дайте мне знать 👋