Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
lordvvoland
6 лет назад

Как работает Smart Contract на примере MetaMask. Реальный опыт покупок и продаж на блокчейн

Boxes in a trolley (1).jpg

В одной из недавних статей я уже рассказывал о том, как работает Smart Contract. В этом пошаговом примере, мы разбавим сухую теорию незабываемой практикой.

Героем нашего сегодняшнего практического эксперимента послужит MetaMask - цифровой кошелек для Google Chrome. Для того, чтобы не тратить реальных Ethereum (ETH), мы воспользуемся функцией демонстрационного режима, изменив свойства сети на "Ropsten Test Network".

0-SiiKwhV_YALRdx6e.png

Создаем два аккаунта. 1-й для продавца, 2-й для покупателя.

Для каждой из этих учетных записей нам необходимо получить, как минимум 3 ETH, для выполнения транзакции. В этом нам поможет Ropsten MetaMask faucet.

Начнем наш тест с учетной записи продавца. Для этого переходим в данный аккаунт, у меня он называется "Account 3" и имеет на счете 74,712 ETH.

0-L4kuN3GRVr4Qb6nz.png

Переходим на страницу, где указываем стоимость товара. Мы указали цену: 2 ETH, которая является залогом того, что мы отправим товар покупателю (стоимость нашего товара - 1 ETH). По окончании продажи наши 2 ETH вернутся к нам обратно.

0-f4iT5vfmm9n6CCUs.png

Нажимаем на кнопку "Select Image" для выбора изображения товара, который мы собираемся продавать. Откроется окно MetaMask, выбираем изображение, а затем подтверждаем ставку в 2 ETH. Жмем "CONFIRM" и подтверждаем наши действия.

0-N0RKOuNh_lecBWK6.png

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

0-vSVpVytAjgMJBr0t.png

  • Contract (Контракт) - адрес, сгенерированный для нового смарт-контракта для продажи нашего товара. Скопируем этот адрес, позже он нам понадобится;
  • Price (Цена) - 1 ETH - именно столько будет стоить наш товар;
  • Seller (Продавец) - адрес кошелька продавца;
  • Buyer (Покупатель) - все по нулям, так как мы еще не нашли покупателя;
  • IPFS Hash - хэш изображения нашего товара в децентрализованной файловой системе IPFS. Сам смарт-контракт не хранит наше изображение.

Зеленая надпись "Created" говорит о том, что мы заключили смарт-контракт.

Давайте вновь взглянем на нашу учетную запись, а именно на наш баланс. 72,703 ETH - именно столько осталось на нашем балансе после заключения контракта. Мы знаем, что 2 ETH ушло в качестве залога, таким образом 74,712 ETH - 2 ETH - 72,703 ETH = 0,009 ETH (цена "топлива"; необходимая плата за запуск смарт-контракта).

Скопируем адрес кошелька аккаунта продавца "Account 3".

0-yzc8Uhgm8bGx_mhF.png

Переходим на страницу Etherscan и вставляем наш адрес в текстовое поле. Здесь мы можем наблюдать транзакции на нашем кошельке. Первая транзакция - та, которую мы только что выполнили. Нажимаем на TxHash.

0-gPwQs04YnOybjGK7.png

Мы видим, что совсем недавно мы создали новый смарт-контракт, чтобы выставить товар на продажу. Жмем на адрес смарт-контракта.

0-v3vZYEtEcVJmZlaU.png

Наблюдаем, что на смарт-контракте находится 2 ETH, те, которые мы на него отправили. Осталось дождаться, пока кто-нибудь купит наш товар.

0-Y7O_17jB628GCI0v.png

Теперь перейдем в учетную запись покупателя. У меня она называется "Buyer" и имеет на счету 24,565 ETH.

0-6SaU30RCOEcOJxMB.png

Переходим на страницу покупки товара. В графу "Contract Address" вставляем адрес смарт-контракта и жмем "Get Contract".

0-oaEgL_TSb9VdKpZe.png

Теперь мы можем приобрести товар. Мы видим, что цена равна 1 ETH, но смарт-контракт требует, чтобы мы внесли залог в размере еще 1 ETH, таким образом при покупке товара мы отправляем на смарт-контракт 2 ETH. По окончании покупки мы получим 1 ETH обратно. Жмем "Purchase" и приобретаем наш товар.

0-Ynu7aieTn8EJEGzJ.png

Далее появится окно кошелька MetaMask. Подтверждаем свои расходы.

0-1emi4vYVkLcEfoPX.png

Дожидаемся выполнения транзакции и переходим на Etherscan для анализа нашего смарт-контракта. Мы видим, что в данный момент на нем уже находится 4 ETH. Два от продавца и два от покупателя.

0-yWQrAi3mvlP8JMTP.png
На экране покупки мы можем наблюдать надпись "Locked", что говорит о том, что товар заблокирован. На данном этапе ни покупатель, ни продавец не в силах отказаться от сделки. Таким образом, продавец видит, что на смарт-контракте 4 ETH и со спокойной душой отправляет свой товар.

Товар дошел до покупателя, он подтверждает это нажав "Deliver".

0-X-sJDZlCeIBZfUPu.png

После чего подтверждает транзакцию в MetaMask, нажав "CONFIRM".

0-qlsV0v-Co8gjyjkk.png

Теперь мы можем наблюдать надпись "Inactive" (Неактивно), что говорит о том, что смарт-контракт завершил свою работу.

0-nww3RfV1h2HlXSLk.png

Вновь обращаемся к Etherscan, чтобы проверить состояние смарт-контракта. Мы видим, что на его балансе 0 ETH.

0-lnay7W29NyrY6rqK.png

Проверяем балансы кошельков MetaMask.

0-4VEH6_hYC4r-kScV.png

Мы видим, что на счету:

  • продавца 75,703 ETH, что на 1 ETH больше, чем, когда он начал создавать смарт-контракт.
  • покупателя 23,544 ETH, что на 1 ETH меньше, чем, когда он решил совершить покупку.

Таким образом, ETH, которые выступали в качестве залога вернулись к своим законным владельцам в полном объеме: 1 ETH - покупателю и 2 ETH - продавцу. На этом работа смарт-контракта завершена.

Преимущества использования смарт-контракта:

  • нет необходимости в посреднике
  • нет опасений, что какая-либо сторона выйдет из сделки с деньгами или товаром
  • прозрачность, документированность транзакций благодаря блокчейн технологии

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

Также у нас есть свой Телеграмм-канал, мы будем очень счастливы, если вы к нам присоединитесь.

12
42.725 GOLOS
На Golos с August 2018
Комментарии (2)
Сортировать по:
Сначала старые