Переходите на Hodl Hodl: Техническая сторона

Переходите на Hodl Hodl: Техническая сторона

Hodl Hodl

Эта статья из серии “Переходите на Hodl Hodl” объясняет внутренний процесс работы биржи,  как это выглядит с технической стороны, и почему Hodl Hodl не может получить доступ к вашим биткоинам и сбежать с ними.


Разберем все по порядку.


В этой статье мы в основном будем объяснять как работают контракты на Hodl Hodl, потому что multisig контракты до сих пор в новинку для многих Биткоин пользователей.


С Hodl Hodl у вас есть выбор: торговать в блокчейне Биткоина (сделки в on-chain) или в сети Lightning. Мы объясним чем отличаются два типа контрактов и углубимся в оба вида контрактов.


Контракты в on-chain

Для on-chain контрактов мы предоставляем автоматизированное некастодиальное решение, которое позволяет бирже избегать хранения средств, а нашим клиентам торговать безопасно и анонимно.


Когда создается контракт, Hodl Hodl генерирует 2 из 3 multisig Биткоин адрес. Каждый адрес генерируется в формате SegWit (P2SH-P2WSH) и каждый может отправлять и получать средства напрямую с эскроу на адреса Bech32.


Существует 3 ключа к эскроу, два из которых необходимы для вывода биткоинов из эскроу: покупатель, продавец и биржа, каждый хранит один из ключей.

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


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


Когда продавец отправляет биткоины на multisig адрес, мы сразу же видим это и, как только набирается нужное количество подтверждений, указанное в описании контракта, мы автоматически меняем статус контракта и информируем покупателя о том, что биткоины заблокированы в эскроу, и он может безопасно продолжать сделку.


Далее покупатель платит продавцу, есть два сценария с тремя различными исходами:

Контракт проходит успешно: продавец просто выводит средства из эскроу на Биткоин адрес покупателя. Для того чтобы это сделать, продавец вводит свой платежный пароль, тем самым подписывая транзакцию своим приватным ключом, в то время как Hodl Hodl  автоматически подписывает транзакцию своим ключом.


Начинается диспут: Hodl Hodl решает диспут: 

  • Если диспут решается в сторону продавца, Hodl Hodl дает возможность вывести биткоины из эскроу в кошелек продавца, автоматически подписывая транзакцию своим ключом.
  • Если диспут решается в сторону покупателя, Hodl Hodl дает возможность вывести биткоины из эскроу в кошелек покупателя, использую его платежный пароль и автоматически подписывая транзакцию своим ключом.


Если невозможно определить кто прав, Hodl Hodl не дает возможности вывести биткоины из эскроу и не подписывает транзакцию, оставляя биткоины заблокированными в эскроу до момента пока доказательства, необходимые для принятия правильного решения, не будут предъявлены.


Процесс подписания транзакции следующий:

  1. Клиент получает необработанную, неподписанную транзакцию и как только платежный пароль подтвержден, транзакция подписывается зашифрованным пользовательским ключом прямо в браузере пользователя. 
  2. Полу-подписанная транзакция отправляется назад на сервер.
  3. Hodl Hodl подписывает транзакцию своим ключом на сервере и пропускает ее дальше.

Когда (и только если) контракт завершен успешно, Hodl Hodl также получает биржевую комиссию со сделки - мы просто добавляем дополнительный выход в транзакцию вывода и вычитаем комиссию из заблокированной в эскроу суммы.


Биржевой режим Lightning 

Когда мы начинали работу с сетью Lightning мы не знали что возможно ввести некастодиальное решение, и решили выступать в роли посредника в Lightning контрактах.


Мы запустили свою Lightning ноду используя LND (030bde3ee226b7cf456703811976e4241a929d11e5fc0549e9a1c6d10a8e23a738), через которую мы имеем свой Lighting кошелек. Мы также написали свою собственную библиотеку, которая позволяет автоматизировать и обезопасить процесс торгов.


Когда контракт начался, биржа генерирует инвойс, на сумму контракта, а продавец оплачивает его из своего кошелька, блокируя средства в кошельке биржи на время контракта.


Когда мы видим средства в нашем кошельке, покупатель платит продавцу, а потом присылает инвойс со своего кошелька, для того чтобы вывести средства из нашего кошелька. Как и с on-chain контрактами существуют два сценария с тремя различными исходами:

Контракт успешно завершен: продавец просто выводить биткоины, оплачивая инвойс, предоставленный покупателем.


Начинается диспут: Hodl Hodl решает диспут: 

  • Если диспут решается в сторону продавца, Hodl Hodl дает возможность вывести биткоины, оплатив инвойс выставленный продавцом.
  • Если диспут решается в сторону покупателя, Hodl Hodl дает возможность вывести биткоины из кошелька биржи в кошелек покупателя, оплатив инвойс выставленный покупателем.


Если невозможно определить кто прав, Hodl Hodl не дает возможности вывести биткоины и не подписывает транзакцию, оставляя биткоины заблокированными в нашем Lightning кошельке до момента пока доказательства, необходимые для принятия правильного решения, не будут предъявлены.


Оплата инвойса это автоматизированный процесс, который управляется используя нашу собственную библиотеку сети Lightning. Со стороны клиента все просто: пользователю нужно только нажать несколько кнопок на странице контракта.


Когда (и только если) контракт успешно завершен, Hodl Hodl также получает биржевую комиссию, мы просто просим продавца прислать нам инвойс на определенную сумму, которая включает в себя нашу биржевую комиссию.


Следующий пост

В следующем посте мы углубимся в основной функционал биржи, и узнаем, какие скрытые функции есть у биржи.


Свяжитесь с нами

Hodl!

Report Page