Русский
Русский
English
Статистика
Реклама

Блокчейн, смарт-контракты Это просто или сложно?

В случае с хранением информации в базе данных, злоумышленник может получить тем или иным способом доступ и внести изменения, чтобы завладеть денежными средствами.

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

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

Как это работает?

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

Информацию (данные) мы будем делить на части (блоки) и будем выстраивать цепочку этих блоков.

В нашем примере будут хранится данные о денежных транзакциях.

Создадим первый блок.

Так как блок первый в нём будут хранится только данные и номер блока.

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

Для наглядности можно сформировать массив данных, состоящий из хэша и номера кошелька.

Хэш функцию будем использовать не SHA 256, а по проще MD5, просто получаемый хэш с помощью этой функции лучше читаем человеком (он короче), чем SHA 256.

Хэш первого кошелька будет c4ca4238a0b923820dcc509a6f75849b (это цифра 1).

Объём выпуска нашей криптовалюты 1 млн.

В блок поместим номер блока (цифру 1) и будем нумеровать блоки последовательно (1, 2, 3, ).

Это всё, что будет храниться в нашем первом блоке и хэш первого блока будет таким: 45d04629fc2f54182ba55aad029152ae.

Второй блок будет содержать данные о транзакциях, хэш блока 1 и соответственно свой номер блока 2.

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

Данные в блоке

Третий и последующие блоки будет построены по аналогии со вторым.

Таким образом мы получим следующую цепочку блоков.

Изменение в любом из блоков повлечёт изменения его собственного хэша и хэша всех последующих блоков.

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

Один из таких способов это отвергнуть цепочку, с которой начинается несоответствие, а включённые в них транзакции признать недействительными.

Смарт - контракт

Что такое смарт-контракт и как он работает?

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

Предположим, стороне 1 (первый контрагент) необходимо продать криптовалюту и купить рубли, и есть другая сторона (контрагент 2), кто хочет продать рубли и купить криптовалюту.

Чтобы состоялась сделка (контракт был исполнен) необходимо выполнение определённых условий, то есть необходим алгоритм, который проверяет эти условия для того, чтобы прошла транзакция в следствии которой контрагент 1 получит определённую сумму рублей по определённому курсу, а другой контрагент (2) криптовалюту в соответствующем объёме и по соответствующему курсу (установленному курсы, например криптовалютной биржей).

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

Необходимо также проверить, что у контрагента продающего криптовалюту должен быть счёт для зачисления рублей, а у контрагента покупающего криптовалюту должен быть рублёвый счёт.

На счета могут быть наложены ограничения, например по размеру суммы и это нужно тоже проверить.

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

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

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

PHP код для совершения операции продажи криптовалюты (ETH) и покупки рублей на бирже exmo.me.

<?php//exmo.me$key = 'K-9';$secret = 'S-6';$mt = explode(' ', microtime());$NONCE = $mt[1] . substr($mt[0], 2, 6);$url = "https://api.exmo.com/v1.1/order_create";$req = array("nonce"=>$NONCE,"pair"=>"ETC_RUB","quantity"=>0.01, //объём"price"=>449.0754, //цена"type"=>"buy",);$post_data = http_build_query($req, '', '&');$sign = hash_hmac('sha512', $post_data, $secret);$headers = array('Sign: ' . $sign,'Key: ' . $key,);$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);$output = curl_exec($ch);$output = json_decode($output, true);echo '<pre>';var_dump($output);echo '</pre>';?>
Источник: habr.com
К списку статей
Опубликовано: 26.11.2020 00:18:58
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Php

Криптовалюты

Криптовалюта

Блокчейн

Смарт-контракты

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru