Как создать интерфейс для dApp

Я изучаю DApps и Ethereum. Я получил часть Solidity, но меня смущают интерфейсные приложения.

Возможно ли, что я использую веб-фреймворк, такой как PHP Laravel/Rails, для операций Frontend/Db и взаимодействую с бэкэнд-блокчейном через web3.js или что-то еще?

Ответы (2)

Да.

Есть два подхода к рассмотрению

Вы можете взаимодействовать с Web3 на стороне клиента и JavaScript

  • Пользователь использует браузер Mist или Parity или MetaMask и подключается к своему собственному узлу Ethereum.

  • Все взаимодействие с кошельком пользователя (закрытые ключи) происходит на стороне клиента, в JavaScript

  • Это безопасно, поскольку пользователю не нужно передавать контроль над своими закрытыми ключами поставщику услуг.

  • Вы по-прежнему можете отображать страницы на любом языке внутреннего программирования, который пожелаете, но в настоящее время веб-браузеры не поддерживают другие языки сценариев, кроме JavaScript.

Вот учебник по созданию внешнего интерфейса .

Старомодный способ

  • Вы можете взаимодействовать с узлом Ethereum на стороне сервера, как если бы вы взаимодействовали на стороне клиента.

  • Web3 имеет стандартную реализацию для всех языков программирования (за исключением, может быть, PHP). Web3.py позволяет взаимодействовать с Python, вы можете использовать Web3.js в Node.

  • Эти библиотеки взаимодействуют с узлом Ethereum, работающим локально на стороне сервера через JSON-RPC.

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

Также см. Выполнение смарт-контракта в мобильном приложении.

Хм, это означает, что традиционные браузеры, такие как Chrome и т. Д., Не могут использоваться для графического интерфейса?
@Volatil3 chrome только с плагином метамаски
@Volatil3 В качестве альтернативы вы можете попросить пользователей ввести свой закрытый ключ, и вы можете подписать транзакции от них, как в ссылке на учебник, которую я дал
@Volatil3 Это обсуждалось на Reddit: reddit.com/r/ethereum/comments/4stat8/… Вы также можете прочитать руководство ConsenSys, чтобы узнать о бессерверной архитектуре и разработке Dapp. consensys.github.io/developers/articles/101-noob-intro
@NicolasMassart ах, так что в любом случае есть зависимость. Означает ли это, что у меня не может быть независимый клиент на основе браузера, взаимодействующий с какой-либо библиотекой ethereum на Python или другом и возвращающий ответы?
@Volatil3, если вы действительно хотите, чтобы ваши пользователи использовали обычный браузер без простого плагина, вам придется управлять для них транзакциями и, следовательно, запрашивать их закрытый ключ. Никто не будет использовать ваше приложение, это не дух блокчейна приложений, которым вы не должны доверять.
@NicolasMassart Я думаю о реальном случае использования, когда ваше веб-приложение взаимодействует с блокчейном на бэкэнде ... в идеале две стороны должны предоставить адрес своего кошелька для транзакции ( аналогично электронной почте ). середина. Если я отправляю адреса отправителя и получателя, все, что я хочу, чтобы внутренний скрипт взаимодействовал с блокчейном, совершал транзакцию и возвращал мне статус, который затем я мог передать внешнему интерфейсу без установки какого-либо конкретного плагина.
@Volatil3 то, что вы описываете, является децентрализованным приложением. Вы должны прочитать некоторую документацию об использовании закрытого ключа в Эфириуме. Вы не можете идти вперед без этих знаний.
@NicolasMassart Хорошо, я буду, но не уверен, что это ответит на мой вопрос .. согласно вашим словам, прямо сейчас нам понадобится определенный браузер или плагин для взаимодействия веб-интерфейса с Blockchain, и другого выхода нет.
@Volatil3 нет, ни один браузер изначально не поддерживает эфириум, и вы должны сделать его на стороне клиента, чтобы меньше доверять всему этому и без участия третьих лиц в транзакциях блокчейна. Таким образом, вы должны использовать метамаску, туманный браузер или любой другой клиент, но старого доброго браузера будет недостаточно. Извиняюсь.
Ах хорошо. Спасибо за объяснение. Кстати, я имею в виду инкапсулировать весь материал на бэкэнде и может просто передать адрес получателя, как это сделал этот парень здесь ( youtube.com/watch?v=TJBHTT88I8k&t=4m18s )

Я предлагаю вам начать с такого шаблона . Они позволяют вам начать с новейших технологий.