Это концепция, заимствованная из популярного подхода Java Virtual Machine (JVM), но впервые примененная на Ethereum, в контексте развития блокчейна. Виртуальная машина отображает ту часть протокола, которая касается внутреннего состояния и вычислений. Его можно представить как большой децентрализованный компьютер (фактически состоящий из нескольких машин P2P), содержащий информацию о миллионах учетных записей, которые обновляют внутреннюю базу данных, код и взаимодействуют друг с другом. Программы, написанные на языке умных контрактов (Smart Contract Language), компилируются в виртуальную машину, и для создания контрактов вы отправляете транзакцию, содержащую ваш код.
Транзакции фактически записываются в последовательные блоки данных (отсюда слово блокчейн – цепочка блоков), поэтому существует исторический журнал регистрации только для этих транзакций, который постоянно поддерживается и обновляется. Проблема состоит в том, что блокчейн является распределенным реестром. В техническом смысле это не так, но действует именно так, потому что сбор транзакций по блокам эквивалентен распределенному регистру. Тем не менее вы можете создавать неизменные распределенные регистровые приложения на основе исторических записей, которые предоставляет блокчейн.
Биткоин не был разработан под аккаунты, хотя учетные записи – это первое, что приходит в голову, когда речь заходит о транзакциях, которые происходят, потому что мы привыкли именно так воспринимать наши банковские операции. Под капотом биткоин использует метод, называемый Unspent Transaction Outputs (UTXO) – неизрасходованный «выход» транзакции, который связывает неизрасходованные транзакции в качестве выходов, которые могут использоваться в качестве входов в новой транзакции. Другие блокчейны используют другие методы для отслеживания состояния баланса. Реестр содержит моментальный снимок текущих балансов, удерживаемых повсюду в сети, а не цепочку исторических событий. В Ethereum состояние состоит из объектов, называемых «учетными записями», при этом каждая учетная запись с переходом состояния является прямой передачей стоимости и информации между учетными записями.
Разработка программного обеспечения блокчейна
Различные части, включающие разработку программного обеспечения блокчейнов, включают:
• API-интерфейсы (интерфейсы прикладного программирования)
• Различные имплементации клиентов (например, C++, Python, Go, Java, Haskell)
• Интегрированные среды разработки и оперативные основы разработки приложений
• Языки и скрипты умных контрактов
• Инструменты тестирования
• Тестовые серверы
• Отметка времени
• Регистрация имен
• Оракулы
• Управление идентификацией (онлайн-, юридическое, псевдо- и т. д.)
• Голосование
• Управление умными контрактами
• Токенизация
• Обмен сообщениями
• Связи активов
• Подтверждение существования
• Командная строка
• Специальные браузеры
• Кошельки
• Приложения
• Загружаемые клиенты (в качестве точки входа приложения)
• Репутация
• Обмен сообщениями
• Хранение (DHT, файловые системы)
• Биржи (для жетонов, активов, валюты)
• Платежные шлюзы
• Зашифрованные транзакции (конфиденциальные передачи)
• Мониторинг (статистика и анализ)
• Аудит
• Безопасность
Написание децентрализованных приложений
Поскольку процесс согласования на блокчейне по своей природе децентрализован, имеет смысл создать новый вид децентрализованных приложений. Децентрализованное приложение можно децентрализовать технически, политически или по обоим направлениям.
Реальность такова, что децентрализованные приложения годятся не для всех, и не все подходит для парадигмы децентрализованных приложений. Тем не менее существует множество приложений, которые соответствуют парадигме распределенного блокчейна, и это предоставляет хорошие возможности разработчикам, создателям и мечтателям.
Децентрализованные приложения начинаются с создания собственной логики, правил для владельцев и требований к транзакциям.
Существуют различные уровни сложности написания децентрализованных приложений.
1. Используйте криптовалюту в качестве единицы валюты для оплаты услуг.
2. Используйте сервис блокчейна в качестве средства, например для регистрации актива или проверки подлинности процесса, как правило, с помощью API.
3. Используйте умный контракт на блокчейне, чтобы осуществить бизнес-логику, которая возвращает определенные суммы, если выполняются определенные условия, например финансовые деривативы. В этом случае есть цифровой актив, владение и движение которого регулируется блокчейном.
4. Используйте блокчейн более фундаментальным способом, когда приложение не будет функционировать без блокчейна. Как правило, вы настраиваете определенную одноранговую сеть с узлами, например OpenBazaar, в качестве децентрализованного приложения для электронной торговли.