Учебное пособие по Ethereum - более глубокий взгляд на Ethereum!



Это руководство по Ethereum объясняет Ethereum с точки зрения архитектуры, а также то, как он составляет лучшую платформу для создания DAPPS и DAO.

Ethereum Руководство:

В этом учебном блоге по Ethereum я объясню внутреннюю работу архитектуры Ethereum, а также покажу вам реализацию Ethereum с помощью простого смарт-контракт .

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





Благодаря такому подходу Ethereum превратился в платформу для множества децентрализованных приложений и организаций, которая включает, но не ограничивается, криптовалюты.

Я буду исчерпывающе освещать множество тем в этом блоге «Учебное пособие по Ethereum». Эти темы включают:



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

Учебное пособие по Ethereum | Смарт-контракты Ethereum | Эдурека

Учебное пособие по Ethereum: учетные записи Ethereum

В сети Ethereum есть два типа учетных записей, а именно:



  • Внешние счета
  • Контрактные счета

Эти учетные записи, как внешние, так и контрактные, называются «объектами состояния» и составляют «состояние» сети Ethereum. Каждый объект состояния имеет четко определенное состояние. Для внешних учетных записей состояние состоит из баланса счета, в то время как для контрактных счетов состояние определяется объемом памяти и балансом.

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

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

С другой стороны, контрактные учетные записи представляют собой набор кода, который находится в цепочке блоков по определенному адресу. Эти контракты вызываются внешними учетными записями или другими контрактами с помощью специальной функции призыва к действию. Эти контракты написаны на языках сценариев высокого уровня, таких как Solidity, Serpent или LLL. Каждый контракт, который находится в блокчейне Ethereum, хранится в определенном формате, называемом байт-кодом EVM (виртуальная машина Ethereum), который является двоичным форматом, специфичным для Ethereum.

Будет справедливо, если я объясню EVM сейчас, когда я рассказал вам о байт-коде EVM.

Учебное пособие по Ethereum: виртуальная машина Ethereum

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

Архитектура Ethereum - Учебное пособие по Ethereum - Edureka

Java приводит к двойному преобразованию в int

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

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

Учебное пособие по Ethereum: Сеть Ethereum

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

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

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

К каждому публичному блокчейну привязана валюта. Ethereum ничем не отличается. Давайте подробнее рассмотрим криптовалюту Ethereum.

Учебное пособие по Ethereum: эфир и газ

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

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

ЕдиницыWei ValueВэй
вэй1 вэйодин
Kwei1e3 вэй1,000
Mwei1e6 вэй1,000,000
Вязать1e9 вэй1 000 000 000
microEther1e12 вэй1 000 000 000 000
milliEther1e15 вэй1 000 000 000 000 000
Эфир1e18 вэй1 000 000 000 000 000 000

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

Газ используется как метрика для оплаты вычислительных ресурсов в сети. Каждый контракт в сети имеет установленное максимальное количество газа, которое он может использовать для своих вычислений. Это известно как « Лимит газа «Прочие термины по попутному газу:

  • Цена на газ : Это стоимость газа в токенах, таких как эфир и другие его достоинства. Для стабилизации стоимости газа цена на газ является плавающей величиной, так что если стоимость токенов или валюты колеблется, цена на газ изменяется, чтобы сохранить ту же реальную стоимость.
  • Плата за газ : Фактически, это количество газа, которое необходимо заплатить для выполнения конкретной транзакции или программы (называемой контрактом).

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


Теперь, когда мы знаем о валюте, давайте посмотрим на процесс создания новой валюты.

Учебник Ethereum: Майнинг

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

С технической точки зрения используемый алгоритм доказательства работы называется Ethash, который представляет собой алгоритм хеширования, вдохновленный алгоритмом Dagger-Hashimoto.

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

Учебное пособие по Ethereum: пример использования децентрализованного краудфандинга

Постановка задачи : В современном мире хорошая «идея» - это еще не все, чтобы начать успешный бизнес. Для реализации идеи требуется много средств и усилий. Здесь на помощь приходят такие организации, как «Kickstarter». Они предоставляют проектам публичную доступность, необходимую для пожертвований в их проект, чтобы запустить его, но централизованная архитектура такого мотива имеет свои недостатки, в основном в том, как распределяются вознаграждения. Поскольку все решения принимает централизованный орган, системы подвержены таким правилам, как:

  • любой, кто пропустил крайний срок кампании, больше не может попасть
  • любой донор, который передумал, не может выйти

Подход :

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

Решение :

Вот смарт-контракт надежности для вышеупомянутой постановки проблемы.

pragma solidity ^ 0.4.16 токен интерфейса {функция передачи (адрес получателя, сумма uint)} контракт Crowdsale {адрес общественного бенефициара uint общественное финансирование Цель uint public amountRaised uint публичный крайний срок uint публичный токен цены public tokenReward mapping (address => uint256) public balanceOf bool financialGoalReached = false bool crowdsaleClosed = false event GoalReached (адрес получателя, uint totalAmountRaised) event FundTransfer (адресный спонсор, сумма в uint, bool isContribution) / ** * функция-конструктор * * Настройка владельца * / функция Crowdsale (адрес ifSuccessfulSendTo // адрес владельца при успешном финансировании uint financialGoalInEthers // целевая сумма для увеличения uint durationInMinutes // заданное время uint etherCostOfEachToken // стоимость капитала в эфирном адресе addressOfTokenUsedAsReward // токен-адрес) {beneficiary = ifSuccessfulSendTo financialGoal = financialGoalInEthers * now + durationInMinutes * 1 минута цена = etherCostOfEachToken * 1 эфир до kenReward = token (addressOfTokenUsedAsReward)} / ** * Резервная функция * * Функция без имени - это функция по умолчанию, которая вызывается всякий раз, когда кто-либо отправляет средства на контракт * / function () payable {require (! crowdsaleClosed) uint amount = msg. значение balanceOf [msg.sender] + = сумма amountRaised + = сумма tokenReward.transfer (msg.sender, сумма / цена) FundTransfer (msg.sender, amount, true)} модификатор afterDeadline () {if (now = financialGoal) {financialGoalReached = true GoalReached (beneficiary, amountRaised)} crowdsaleClosed = true} / ** * Вывод средств * * Проверяет, была ли достигнута цель или лимит времени, и если да, то цель финансирования была достигнута, * отправляет всю сумму бенефициару. Если цель не была достигнута, каждый участник может снять * сумму, которую он внес. * / function safeWithdrawal () afterDeadline {if (! financialGoalReached) {uint amount = balanceOf [msg.sender] balanceOf [msg.sender] = 0 if (amount> 0) {if (msg.sender.send (amount)) { FundTransfer (msg.sender, amount, false)} else {balanceOf [msg.sender] = amount}}} if (financialGoalReached && beneficiary == msg.sender) {if (beneficiary.send (amountRaised)) {FundTransfer (beneficiary, amountRaised, false)} else {// Если мы не сможем отправить средства получателю, разблокируем баланс спонсоров financialGoalReached = false}}}}

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

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

Есть вопрос к нам? Пожалуйста, укажите это в комментариях. и мы свяжемся с вами как можно скорее.