Диплом: Применение технологии блокчейн для создания криптографических токенов

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
32
структура но будет древовидной. Для но того, чтобы но однозначно определять
но путь, от но корня (исходный но блок) к но листьям (блок, но отражающий самые
но последние транзакции) но через всю но структуру дерева но (известного как
но блокчейн), нужна но согласованная схема. но Если узлы не но могут договориться
но между собой, чьи но блоки (от но корня дерева к но листьсям) составляют но "лучший"
блокчейн, но случается так но называемая "вилка" но (fork). Этого но следует избегать
но любой ценой, как но неопределенность, которая но последует, скорее но всего,
нарушит но конфеденциальность всей но системы. Схема, но которая используется,
но чтобы разрешить но данную проблему, но является упрощенной но версией
протокола но GHOST введенного но работе Сомполинского и но Зоара [58].
Цель но Ethereum — но объединив и но доработав концепции но скриптинга,
альткойнов и но мета-протоколов, позволить но всем желающим но создавать
произвольные но децентрализованные приложения, но обладающие
одновременно но свойствами масштабируемости, но стандартизации, feature-
полноты, но лёгкости разработки и но совместимости. Ethereum но добивается этого
но построением предельно но базовой платформы: но блокчейна со но встроенным
Тьюринг-полным но языком программирования, но позволяющим любому
но желающему писать но смарт-контракты, где но каждый сможет но создавать
собственные но произвольные правила но владения, форматы но транзакций и
но произвольные функции но изменения состояния. но Реализация идеи но известной
криптовалюты но Неймкойн (Namecoin) на но этом языке но занимает две но строки
кода, а но такие протоколы, как но валюты и но системы репутации, но можно
реализовать но менее чем в но двадцать строк. но Смарт-контракты,
криптографические но "коробки", содержащие но значение и но открывающиеся
только при но определённых условиях, но также могут но быть построены но поверх
платформы но Ethereum, причём со но значительно большей
но функциональностью, чем та, что но предложена в но языке сценариев но Биткойн,
по но причине Тьюринг-полноты но языка Ethereum, его но финансовой зрячести,
но блокчейн-зрячести и но наличия промежуточных но состояний. Логичным
33
но расширением этой но идеи являются но децентрализованные автономные
но организации (ДАО) — но долгосрочные смарт-контракты, но хранящие активы и
но программно реализующие но правила работы но целой организации.
2.3. но Архитектура платформы
2.3.1. но Аккаунты пользователей
В но Ethereum состояние но сделано из но "аккаунтов"; каждому но аккаунту
соответствует его но 20-байтовый адрес. но Функции изменения но состояния
но переводы валюты или но информации между но аккаунтами. Эфириум-аккаунт
но содержит четыре но поля:
nonce но — счётчик, но необходимый для но того, чтобы но каждая транзакция
но произошла ровно но один раз;
текущий но баланс аккаунта (в но ETH);
код но контракта, связанного с но аккаунтом (если но контракт есть);
хранилище но аккаунта (пустое по но умолчанию).
Всего но существует два но вида аккаунтов:
Внешний но аккаунт (externally но owned account), но контролируется
владельцем с но помощью закрытых но ключей. При но этом, такие но аккаунты
не но имеют никакого но программного кода, но связанного с но ними.
Контрактный но аккаунт (contract но account), но контролируется программным
но кодом связанного с ним но контракта.
34
Рисунок но 9 Виды но аккаунтов в Etherium
Первый но способ это но ровно то, что но было в но системе Биткойн:
но аккаунт, единственной но опцией которого но является пересылка но денег
(создание но исходящей транзакции); но путём создания и но подписания
транзакций с но такого аккаунта но можно пересылать но сообщения. В но случае
контракт-аккаунта но каждый раз, но когда аккаунт но получает входящее
но сообщение, активируется код но контракта, который но может открывать
но сообщению возможность но писать в но хранилище и но считывать оттуда
но информацию, посылать но другие сообщения и но создавать другие но контракты.
Рисунок но 10 Взаимодействие но различных видов но аккаунтов
35
Каждое но действие в но блокчейне Эфириума но происходит благодаря
но транзакциям, инициируемым но внешними аккаунтами.
2.3.2. но Состояния в но блокчейне Ethereum но
Состояние но (World state) - но отображение между но адресами (160-битные
но идентификаторы) и но состояниями счетов но (структуры данных
но сериализованные специальным но образом). Хотя но такое отображение не
но сохраняется в но блокчейне, предполагается, что но реализация будет
но поддерживать это но отображение при но помощи дерева но Меркла. Для но хранения
такого но дерева требуется но простая база но данных, которая но поддерживает
отображение но объектов из но ByteArray в но ByteArray, такая но база данных
но считается основной для но состояний. Подход но имеет ряд но преимуществ: во-
первых, но корневой узел но структуры криптографически но зависим от но всех
внутренних но данных и но потому его хэш но может быть но использован в но качестве
защищенного но идентификатора для но всего состояния но системы [59].
но Во-вторых, данная но структура данных, но будучи неизменяемой, но позволяет
отозвать но любое предыдущее но состояние (чей но корневой хэш но известен),
изменяя но корневой хеш но соответствующим образом. но Поскольку все
но корневые хэши но сохраняются в но цепочке транзкций, но возможно тривиальным
но образом вернуться к но старым состояниям но [60]. World но state включает в но себя
следующие но четыре поля:
nonce: но Скалярное значение, но равное количеству но транзакций,
отправленных с но данного адреса, но либо количество но заключенных контрактов
с но помощью данной но учетной записи. но Счет с но адресом a в но состоянии σ
но обозначается .
balance: но Скалярное значение, но равное числу но Wei, принадлежащих
но данному адресу. но Формально обозначается .
36
storageRoot: но 256-битный хэш но корневого узла но дерева Меркла,
но который кодирует но содержимое счета, но представленного в но виде
синтаксического но дерева, как но отображение из но 256-битного значения
но хэш-функции 256-битных но ключей в но сереализованные особым но образом 256-
битные но целочисленные значения. Хэш но обозначается .
codeHash: но хэш EVM но кода текущего но счета - это но код, который
но запускается на но выполнение, если но текущий адрес но получает сообщение
но вызова; это но неизменяемое поле, в но отличие от но всех остальных но полей. Все
но такие фрагменты но кода содержатся в но базе данных но состояний вместе с
но соответствующими им но хэшами для но последующего восстановления.
но Данный хэш но формально обозначается , но и, обозначив код b, но получим
.
2.3.3. но Сообщения и но транзакции
"Сообщения" но в Ethereum — но нечто похожее на но транзакции в но Биткойн,
но с но тремя существенными но отличиями. Во-первых, но сообщение в но Ethereum
может но быть создано как но внешним источником но (человеком), так и
но контрактом, в то но время как но Биткойн-транзакция может но быть создана
но только человеком. но Во-вторых, есть но явный вариант для но сообщений Ethereum
для но хранения данных. но В-третьих, получатель но Ethereum -сообщения, но если
это но контракт-аккаунт, имеет но возможность "ответить" но автору на но него; этим
но Ethereum -сообщения но похожи на но обычные функции.
Термин но "транзакция" в но Эфириум означает но подписанный пакет
но данных, содержащий но сообщение, отправляемое но контролируемым
владельцем но аккаунтом. Транзакции но включают в но себя получателя,
но электронную подпись но отправителя, количество но пересылаемого эфира и
но пересылаемую информацию, а но также значения но двух переменных
но STARTGAS и но GASPRICE. Чтобы но предотвратить экспоненциальное
37
но раздутие количества но вычислительных операций но кода и но бесконечные
циклы, но отправитель каждой но транзакции устанавливает но предел количества
но вычислительных шагов, но которые допускаются для но исходного, и но всех
порождённых но сообщений. STARTGAS — это но именно этот но предел, а
но GASPRICE — но комиссия, которая но платится майнеру за но каждый
вычислительный шаг (по но сути, предлагаемый но отправителем курс
но GAS/ETH). Если при но выполнении транзакции но "газ заканчивается",
но изменения откатываются, и но происходит возврат к но начальному состоянию
но системы, с но одной, правда, но оговоркой: комиссии, но выплаченные майнерам за
их но вычисления, остаются у но майнеров. Если но выполнение транзакции
но прерывается при но ненулевом количестве но остающегося газа, но этот газ
но пересылается обратно но отправителю транзакции. но Таким образом, но авторы
контрактов но обеспечивают их но выполнение количеством но газа, вложенным
ими в но контракт. Также но есть специальный тип но транзакций и но специальный
тип но сообщений для но создания контрактов; но адрес контракта но вычисляется на
но основе хэша но nonce аккаунта и но содержащейся в но транзакции информации.
Транзакция но (T) представляет но собой единую
но криптографически-подписанную инструкцию, но создатель которой
но находится вне но Ethereum. Хотя но предполагается, что в но конечном итоге
но создатель - но реальный человек, для но создания и но распространения транзакции
но используются программные но средства. Есть два но типа операций: те, но которые
приводят к но вызову сообщений и те, но которые приводят к но созданию новых
но учетных записей со но связанным с но ними кодом но (созданию контракта). Оба
но типа имеют ряд но общих полей:
nonce: но скалярное значение но равное количеству но транзакций,
отправленных но отправителем, Tn.
gasPrice: но Скалярная величина, но равная числу Wei но заплаченных за
но единицу газа, но задействованного в но транзакции, Tp.
38
gasLimit: но Скалярное значение, но равное максимальному но количеству
газа, но которое может но потребоваться для но выполнения текущей но транзакции.
Оплачивается но авансом, до но того, как но производятся вычисления, и не но может
быть но увеличено после, Tg.
to: но 160-битный адрес но получателя сообщения но вызова, либо но адрес для
но создания транзакции с но использованием контракта, Tt.
value: но Скалярное значение, но равное количеству но Wei, передаваемых
но получателю сообщения но либо, в но случае создания но контракта, служащих
но сбором за но созданной учетной но записи, Tv.
v, но R, S: но Значения, соответствующие но электронной подписи
но транзакции и но используемые для но аутентификации отправителя но сделки, Tw,
Тр и Ts.
Кроме но того, операция но создание контракта но содержит поле:
init: но массив байт но неограниченного размера с но указанием EVM-кода
для но процедуры инициализации но учетной записи, но формально Ti.
init но возвращает второй но фрагмент кода, но который выполняется но каждый
раз, но когда учетная но запись получает но сообщение вызова (с но помощью
операции или но из-за внутреннего но исполнения кода). но Инициализация
выполняется но только один раз при но создании учетной но записи и
но отбрасывается сразу же но после этого.
В но противоположность этому, но транзакция вызова но сообщения
содержит но поле:
data: но массив байт но неограниченного размера с но указанием входных
но данных вызова но сообщения, формально Td.
Важным но следствием механизма но сообщений является но принцип
равноправия но Ethereum-аккаунтов, управляемых но контрактом и но человеком —
но контракт-аккаунты имеют но весь тот же но функционал, что но доступен
аккаунтам, но управляемым человеком, но включая возможность но пересылать
сообщения и но создавать другие но контракты. Это но приводит к но тому, что
39
но контракты могут но даже, как но люди, играть в но сообществе разные но роли
одновременно: к но примеру, членом но децентрализованной организации
но (контракт) может но оказаться гарант-аккаунт но (второй контракт) но между
параноиком, но использующим специально но изготовленные стойкие к
но квантовому компьютеру но подписи Лэмпорта но (третий контракт) и но лицом,
использующим но аккаунт с но пятью ключами для но безопасности (четвёртый
но контракт). Сила но платформы Эфириум в но том, что но децентрализованной
организации, но равно как и но гарант-контракту, не но нужно заботиться о но типе
аккаунта но того или но иного агента, о но том, человек это или но контракт.
2.3.4. но Блоки транзакций
Все но транзакции так или но иначе сгруппированы в но блоки. Блокчейн
но состоит из но таких блоков, но соединенных между но собой.
Блоки но состоят из:
заголовка но блока
информации но о серии но транзакций, включенных в но данный блок
серии но других заголовков но блоков для но текущих оммеров
Оммер но (от англ. «ommer») – это но блок, родителем но которого является
но родительский элемент но текущего блока. Их но наличие, в но первую очередь,
но обосновано тем, что но время блокировки в но Ethereum намного но ниже
(примерно 15 но секунд), чем для но других блокчейнов, но например, для но Биткоина
(примерно 10 но минут). Благодаря но такой особенности но скорость транзакций
но проведения увеличивается. С но другой стороны, но одной из но негативных сторон
но более короткого но времени блокировки но является то, что но борьба майнеров за
но очередное блочное но решение только но усиливается. Такие но конкурирующие
блоки еще но называют «блоки без родителя» но (т.е. такие но блоки не но входят в
но основную цепочку но блоков).
40
Оммеры но были созданы для но того, чтобы но майнеры могли но получить
заслуженную но награду за но включение блоков без но родителей в но основную
цепочку. но Оммеры, включенные но майнерами в но основную цепочку, но должны
быть «действительными»: но т.е. они но должны быть но потомками в но шестом или
но более раннем но поколении текущего но блока. Например, но после шестого
но поколения такие но потомки не но могут быть но включены в но основную цепь в
но качестве блоков без но родителя: более но поздние транзакции но могут негативно
но влиять на но работу системы в но целом. За но оммеры выплачивается
но вознаграждение, но но меньшее, чем за но включение полного но блока.
Заголовок но блока – это но часть блока, но состоящая из:
parentHash но – является но хэшем заголовка но родительского блока
но (благодаря чему, но собственно, блок но попадает в но цепочку блоков)
ommersHash но – хэш но текущего списка но блоков оммеров
beneficiary но – адрес но учетной записи, на но который поступает но оплата
за но включение этого но блока
stateRoot но – хэш но корневого узла но состояния префиксного но дерева
(состояние но префиксного дерева но хранится в но заголовке, тем но самым
для но тонких клиентов но упрощается процесс но утверждения
состояния)
transactionsRoot но – хэш но корневого узла но префиксного дерева,
но содержащий все но транзакции, которые но перечислены в но данном
блоке
receiptsRoot но – хэш но корневого узла но префиксного дерева, но который
содержит но информацию об но оплате для но всех транзакций,
но перечисленных в но данном блоке
logsBloom но – Фильтр но Блума (структура но данных), состоящий из
но информации, содержащейся в но журналах
difficulty но – уровень но сложности текущего но блока
41
number но номер но текущего блока но (первоначальный блок но имеет
номер, но равный нулю; но номер блока но увеличивается на но единицу для
но каждого последующего но блока)
gasLimit но – текущий но лимит горючего для но текущего блока
gasUsed но общее но количество горючего, но используемого для
но транзакций в но текущем блоке
timestamp но временная но отметка, предназначенная для но создания
текущего но блока
extraData но – дополнительные но данные, которые но касаются текущего
но блока
mixHash но хэш, но который в но сочетании с но элементом nonce
но утверждает, что для но текущего блока но выполняется достаточно
но вычислений
nonce но хэш, но который в но сочетании с но элементом mixHash
но утверждает, что для но текущего блока но выполняется достаточно
но вычислений
Рисунок но 11 Блок но транзакций в Etherium

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)
Value-based education: ценности в системе образования и способы их реализации на уроке английского языка. Опыт Европейских стран