Многие студенты очень хотели присоединиться к команде разработчиков блокчейна, но они чувствуют, что не могут начать.Эта статья познакомит вас с неясными концепциями, связанными с разработкой Ethereum, популярным способом на основе платформы Ethereum, и легко поможет вам начать.
Что такое Эфириум
Ethereum (Ethereum) — децентрализованная платформа приложений, построенная на технологии блокчейн. Это позволяет любому создавать и использовать на платформе децентрализованные приложения, работающие на технологии блокчейна.
Для студентов, которые не понимают этого предложения, можно понять, что Ethereum — это Android в блокчейне, платформа для разработки, которая позволяет нам писать приложения на основе технологии блокчейна, как и Android Framework.
До того, как не было Эфириума, написание приложения блокчейна было таким: скопировать копию кода Биткойн, а затем изменить базовый код, такой как алгоритм шифрования, механизм консенсуса, сетевой протокол и т. д. (новая валюта). Платформа Ethereum инкапсулирует базовую технологию блокчейна, позволяя разработчикам приложений блокчейна разрабатывать приложения непосредственно на основе платформы Ethereum. Разработчикам нужно сосредоточиться только на разработке самого приложения, что значительно снижает сложность.
В настоящее время вокруг Ethereum сформировалась относительно полная экосистема разработки: при поддержке сообщества есть множество фреймворков и инструментов разработки на выбор.
смарт-контракт
Что такое смарт-контракт
Программы на Ethereum называются смарт-контрактами, который представляет собой набор кода и данных (состояние).
Смарт-контракты можно понимать как контракты (специальные транзакции), написанные в коде, который может автоматически выполняться (управляемый событиями) в блокчейне.
существуетбиткойн скриптВ разделе мы упомянули, что биткойн-транзакции можно запрограммировать, но биткойн-скрипты имеют много ограничений, и программы, которые можно написать, также ограничены.
Эфириум, с другой стороны, является более полным (в терминах компьютерных наук это называется «полным по Тьюрингу»), что позволяет нам писать программы (смарт-контракты), которые могут делать почти все, как и любой язык высокого уровня.
Смарт-контракты очень подходят для сценариев приложений, требующих высокого доверия, безопасности и надежности, таких как: цифровая валюта, цифровые активы, голосование, страхование, финансовые приложения, рынки предсказаний, управление собственностью, Интернет вещей, одноранговые транзакции. , и т.д. В настоящее время, кроме цифровой валюты, не так много реально приземлившихся приложений (как и мобильная платформа только начала выходить), считается, что через 1-3 года постепенно будут появляться различные киллеры.
Язык программирования: Solidity
Язык программирования по умолчанию для смарт-контрактов — Solidity, а расширение файла заканчивается на .sol. Solidity — это язык, похожий на JavaScript, используемый для разработки контрактов и компиляции их в байт-код виртуальной машины Ethereum.
Также существует язык разработки смарт-контрактов, похожий на Python: Serpent, но рекомендуется использовать Solidity.
Browser-SolidityЭто Solidity IDE для браузеров. Вы можете щелкнуть и посмотреть. В будущем мы представим язык Solidity в других статьях.
Операционная среда: EVM
EVM (виртуальная машина Ethereum) Виртуальная машина Ethereum — это рабочая среда смарт-контрактов в Ethereum.
Solidity относится к EVM так же, как и к JVM, поэтому всем легко понять. Виртуальная машина Ethereum — это изолированная среда, и код, работающий внутри EVM, не может взаимодействовать с внешним миром.
EVM работает на узле Ethereum.После того, как мы развернем контракт в сети Ethereum, контракт может работать в сети Ethereum.
Составление договора
То, что работает на виртуальной машине Ethereum, является формой контракта в байт-коде. Нам нужно скомпилировать контракт перед развертыванием. Вы можете выбратьBrowser-Solidity Web IDEили компилятор solc.
Развертывание контракта
При разработке приложений на Ethereum часто используется клиент (кошелек) Ethereum. Обычно мы в разработке, вообще не соприкасаемся с понятием клиент или кошелек, что это такое?
Клиент Ethereum (кошелек)
Клиент Ethereum, по сути, мы можем понимать его как инструмент разработчика, который обеспечивает управление учетными записями, майнинг, передачу, развертывание и выполнение смарт-контрактов и другие функции.
EVM предоставляется клиентом Ethereum.
GethЭто типичный клиент, используемый при разработке Ethereum, и он разработан на основе языка Go. Geth предоставляет интерактивную командную консоль, через которую включаются различные функции (API) Ethereum. Мы представим использование Geth в статье позже, здесь у нас сначала есть концепция.
Консоль Geth похожа на консоль в инструментах разработчика браузера Chrome, но работает в терминале. По сравнению с Geth, Mist — это клиент Ethereum с графическим интерфейсом.
Как развернуть
Развертывание смарт-контракта относится к публикации байт-кода контракта в блокчейне и использованию определенного адреса для отметки контракта, который называется учетной записью контракта.
В Эфириуме есть два типа счетов:
- внешний аккаунт
Этот тип учетной записи контролируется закрытым ключом (управляется человеком) и не связан с каким-либо кодом.- контрактный счет
Такие учетные записи контролируются своим контрактным кодом и имеют связанный с ним код.В отличие от дизайна UTXO Биткойна, Ethereum использует более простую концепцию учетной записи. Оба типа учетных записей одинаковы для EVM.
Разница и взаимосвязь между внешними учетными записями и контрактными учетными записями заключаются в следующем: внешняя учетная запись может отправлять сообщения другой внешней учетной записи или контрактной учетной записи, создавая и подписывая транзакции с помощью собственного закрытого ключа.
Отправка сообщений между двумя внешними учетными записями — это процесс передачи стоимости. Но сообщение от внешней учетной записи к контрактной учетной записи активирует код контрактной учетной записи, позволяя ему выполнять различные действия (такие как передача токенов, запись во внутреннее хранилище, майнинг нового токена, выполнение некоторых операций, создание нового контракта, и т.д. Подождите).
Только когда внешняя учетная запись выдает инструкцию, контрактная учетная запись выполнит соответствующую операцию.
Развертывание контракта — это развертывание скомпилированного байт-кода контракта в блокчейне Ethereum в форме отправки транзакций через внешнюю учетную запись (фактическое развертывание успешно только после того, как фактический майнер создаст блок).
бегать
После развертывания контракта, когда вам нужно вызвать метод смарт-контракта, вам нужно только отправить сообщение (транзакцию) на счет контракта.После срабатывания сообщения код смарт-контракта будет выполнен в ЭВМ.
Gas
Подобно облачным вычислениям, занятие ресурсов блокчейна (будь то простая транзакция передачи или развертывание и исполнение контракта) также требует соответствующих комиссий (бесплатных обедов в мире не бывает, верно!).
Для биллинга на Эфириуме используется механизм Gas.Газ также можно рассматривать как единицу работы.Чем сложнее смарт-контракт (количество и тип шагов расчета, занимаемая память и т.д.), тем больше газа требуется для завершения операции.
Количество Газа, необходимое для выполнения контракта по любому конкретному контракту, фиксировано и определяется сложностью контракта.
Цена на газ указывается лицом, выполняющим контракт, когда он отправляет запрос на выполнение контракта, чтобы определить комиссию, которую он готов заплатить за эту транзакцию: Цена на газ (выражена в эфире)
* Количество газа.
Цель Gas — ограничить объем работы, необходимой для выполнения транзакции, при оплате за исполнение. Когда EVM выполняет транзакцию, газ будет постепенно расходоваться в соответствии с определенными правилами, независимо от того, где выполняется выполнение, после того, как газ будет исчерпан, будет вызвано исключение. Все изменения состояния, сделанные в текущем кадре вызова, будут отменены, и если в конце выполнения все еще остается газ, газ будет возвращен отправляющему аккаунту.
Без этого ограничения кто-то написал бы контракт, который нельзя остановить (например, бесконечный цикл), чтобы заблокировать сеть.
Так что по факту (натягивая предыдущий контент) нам нужна внешняя учетная запись с балансом эфира для инициации транзакции (обычная транзакция или деплой, запуск контракта), а при запуске майнер взимает соответствующую комиссию за рабочую нагрузку.
Тестовая сеть: частная сеть
Некоторые обеспокоенные студенты хотят спросить, как я могу разрабатывать смарт-контракты, если у меня нет эфира?
Ответ заключается в том, чтобы создать нашу собственную частную тестовую сеть Ethereum, также обычно называемую частной цепочкой, которую мы можем использовать в качестве тестовой среды для разработки, отладки и тестирования смарт-контрактов.
С помощью вышеупомянутого Geth легко создать собственную тестовую сеть, и вы можете добывать столько эфира, сколько хотите, без синхронизации всех данных блокчейна официальной сети.
Еще один способ создать тестовую сеть — использовать testrpc — среду Ethereum, моделируемую локально с использованием памяти, что более удобно и быстро для разработки и отладки. И testrpc может помочь нам создать кучу тестовых аккаунтов со средствами при запуске. Для контрактной разработки вы можете развернуться на Geth после прохождения теста в testrpc.
Dapp: децентрализованное приложение
Сообщество Ethereum называет приложения, основанные на смарт-контрактах, децентрализованными приложениями. Если мы понимаем блокчейн как неизменяемую базу данных, а смарт-контракты — как программы, работающие с базами данных, то понять Dapps легко: например, Dapp не только имеет смарт-контракты, но и должен иметь дружественный пользовательский интерфейс и другие вещи.
Truffle
Truffle — это среда разработки DApp, которая может помочь нам разобраться с множеством незначительных мелочей, чтобы мы могли быстро начать процесс написания кода — компиляции — развертывания — тестирования — упаковки DApp.
Суммировать
Подытожим теперь, что Ethereum — это платформа, которая позволяет нам легко использовать технологию блокчейна для разработки децентрализованных приложений. клиент Ethereum для развертывания и запуска контракта с учетной записью с балансом (использование платформы Truffle может помочь нам сделать эти вещи лучше). Для удобства разработки мы можем использовать Geth или testrpc для построения тестовой сети.
Примечание: В этой статье для облегчения всеобщего понимания некоторые понятия аналогичны, а некоторые строго неточны.Однако я также думаю, что для новичков не обязательно очень тщательно и точно осваивать каждое понятие.Изучение - это шаг Пошаговый процесс В процессе мы много раз обнаружим, что через некоторое время у нас будет другое понимание одного и того же.
После этой статьи вы понимаете все эти понятия?
Глубокое понимание блокчейна- Систематически изучайте блокчейн и создавайте лучший блог о технологии блокчейна.
WeChat: анализ технологии блокчейн, добро пожаловать на подписку наградаWeChat Pay
- Автор этой статьи:Крошечный медведь
- Ссылка на эту статью: изучите цепочку блоков.cai/2017/11/20/…
- Уведомление об авторских правах:Этот документ принимаетCC BY-NC-SA 3.0соглашение. Пожалуйста, укажите источник!