Функциональность системы Эфириум: адреса личных счетов, работа с «умными» контрактами

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

Основные определения


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

Разберем подробно это описание:

  • «Криптографическое» определение означает высокий уровень защищенности. В данном случае подразумевается особая сложность математического аппарата. На нынешнем уровне развития компьютерных технологий не существует рациональной методики взлома алгоритма Ethereum.
  • Понятие «одноэлементный» в описании категории подразумевает единственный механизм, который применяется для проведения в блокчейне всех транзакций, без исключений. Производным выводом является наличие только одной всеобщей истины.
  • «Совместный» вариант использования обозначает открытость данных о состоянии блокчейна. Соответствующую информацию может получить и применить любой участник сети для решения индивидуальных задач.

Принципы функционирования системы Ethereum


На этом рисунке схематически изображена «машина состояний». Она выполняет транзакции на основе входных данных. После завершения обработки по заданному системой алгоритму осуществляется переход в другое состояние.

Только первоначальное состояние «Генезис» является чистым. Как только завершена первая транзакция оно изменяется. Трансформации происходят в системе непрерывно, поэтому действительное состояние точно привязано к определенному моменту.

В данном случае речь идет о миллионах различных транзакций. Они объединяются в блоки с уникальными идентификаторами начала и завершения. Совместно – образуют последовательность связанных по определенному правилу данных, «цепочку», блокчейн.

Чтобы сеть завершила переход в следующее состояние необходимо подтверждение подлинности транзакции. Этот важнейший процесс состоит из двух стадий:

  • проверка действительности определенной транзакции;
  • подтверждение подлинности участниками сети.

Данную процедуру называют майнингом. В ходе ее проведения группы компьютеров используют имеющиеся вычислительные мощности для создания блока, который будет признан подлинным. Каждое такое объединение (сетевой узел, или «нод» — образован от «node») может быть полноправным претендентом на соответствующий результат майнинга. Он же может подтверждать подлинность («валидировать») блоки сделанных транзакций. В момент записи таких продуктов в цепочку необходимо предоставить действительное доказательство («пруф», «proof» — англ.) в математической форме. Если оно есть, значит блок транзакций является валидным, подтвержденным.

Имеются нюансы, о которых следует помнить. Добавление собственного блока надо сделать раньше, че конкурирующие добытчики. Для этого следует быстрее, чем конкуренты, предоставить подтверждение в математической форме завершенной работы – «Proof of work». Когда данная операция завершена успешно, выполняется автоматическая генерация определенного количества монет, «эфиров». Их майнер получает на свой счет в качестве вознаграждения.

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

На этом рисунке изображена типичная ситуация разветвления дерева. Ее называют вилкой, форком («fork» — англ.). В таком состоянии надо принять решение, какой из цепочек надо отдать предпочтение.

Для определения степени достоверности пользуются особым протоколом GHOST. В соответствии с ним валидную цепочку определяют по максимальному количеству сделанных определенным нодом вычислительных операций. Их в свою очередь можно узнать по номеру, который система присвоила последнему блоку («листовому»). Дна схеме видно, что крайняя группа вычислений отличается самым длинным путем. Это подтверждает одновременно больший объем вычислений для прохождения соответствующего пути.

Адреса и разные виды индивидуальных счетов


В системе эфириума функционируют счета двух типов:

  • внешних владельцев;
  • контрактные.

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

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

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


Фактически речь идет о выполнении типовых финансовых транзакций. Они же могут отправить сообщение на счет контракта. В этом случае активизируется выполнение соответствующего программного кода. Дальнейшие действия выполняются по заданному им алгоритму.

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

Для описания состояния счета любого вида применяют следующие составляющие:

  • nonce – количество отправленных транзакций/созданных контрактов для счета внешнего владельца/счета контракта соответственно;
  • balance – величина баланса для этого идентификационного адреса в Wei;
  • codeHash – пустая строка/ код хэша для счета внешнего владельца/счета контракта соответственно;
  • storageRoot – хэш дерева Меркла (корневого узла).

Некоторые определения, приведенные в списке, нуждаются в дополнительном пояснении. Действительное состояние системы Ethereum состоит из комплекса состояний отдельных счетов и сопоставления соответствующих адресов. Этот идентификатор сохраняется в дереве («trie» англ.) Меркла, которое является структурированным особым образом блоком данных.

Особенности структуры:

  • двоичный способ записи информации;
  • хранение базовых данных в нижних («листовых») узлах;
  • меньшее количество промежуточных узлов, которые являются хэшами подчиненных структурных элементов;
  • один основной узел («корневой»), созданный из хэша нижних элементов структуры.

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

На этом рисунке показано место размещения упомянутого выше ключа в счете системы эфириум.

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

  • состояний;
  • транзакций;
  • квитанций.

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

  • полные;
  • легкие.

Первые, как следует из названия, полностью загружают всю цепочку блокчейна, что соответствует процессу стандартной синхронизации. Это значит, что скачивается полный объем данных от генезисного до конечного блока, занимающего в определенный момент времени верхнюю позицию. Именно такой объем информации необходим для добычи криптовалюты. Допустима загрузка без подробных записей по отдельным транзакциям. Однако в любом случае будут представлены комплексные сведения о всей цепочке.

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

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

Эти же особенности применяют для создания алгоритма проверки (доказательством по дереву Меркла). Им может воспользоваться любой узел (нод). На рисунке отмечены исходные данные (1), ветка дерева (3) и корневой хэш (2). Если последовательность хэширования по структуре корректна, значит данные не содержат ошибок. Фактически для проверки достаточно использовать именно хэш верхнего уровня, который содержит важные состояния. Соответственно, отсутствует необходимость обязательного хранения всего объема информации, который в данной системе достаточно велик.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *