Как я создал простой Dapp для здравоохранения с помощью Solidity и React

В прошлые выходные я принял участие в NextStep Hacks, хакатоне, спонсируемом компанией Ethereum. Я давно интересовался блокчейном, но впервые разрабатывал блокчейн-проект.

За два дня мы с моим товарищем по команде Акилешем изучили основы и создали простой Dapp для здравоохранения, который в итоге занял 3-е место. Здесь я расскажу, как я его создал, и надеюсь, что это поможет вам начать разработку блокчейна ⏫.

Вдохновение

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

Когда я приехал в США в колледж, я пытался перевести записи о прививке Ковид из Китая, но местные больницы отказали мне. Мне пришлось принять еще две дозы препарата Pfizer и несколько дней страдать от побочных эффектов, таких как лихорадка 😣.

Именно поэтому мы создали MedChain — децентрализованное приложение (Dapp) для ведения электрических медицинских карт (EMR) на основе блокчейна.

Как это работает

MedChain работает на базе IPFS, где медицинские записи пациентов хранятся в распределенной файловой системе, не принадлежащей какой-либо централизованной структуре.

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

Клиент сначала подключается к MetaMask и использует смарт-контракт для майнинга блока пациента или врача, зарегистрированного по адресу кошелька.

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

Настройка

Мы выбрали Truffle, мощный инструмент разработки для Ethereum, и React, поскольку это наиболее знакомый нам фронтенд-фреймворк.

Мы использовали Truffle React Box в качестве шаблона для этого проекта. В нем уже настроен контекст React для соединения с MetaMask и взаимодействия с Truffle.

Чтобы запустить локальную сеть блокчейна на моем компьютере, я установил Ganache и импортировал тестовые аккаунты в MetaMask.

Напишите смарт-контракт

Для этого проекта нам нужен только один смарт-контракт Solidity под названием EHR. Сначала я определил структуры для медицинской карты, пациента и врача.

Затем функции для регистрации пользователей. Врач может регистрировать себя и регистрировать пациентов.

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

Чтобы развернуть контракт, запустите truffle deploy, и EHR.sol будет развернут как EHR.json.

Подключение React к смарт-контракту

Пропустив написание компонентов, важной частью этого React-проекта является итерационное взаимодействие со смарт-контрактом.

С контекстом ETH, предоставленным в boilterplate, он устанавливает для меня инициализацию Web3.js. Вы можете найти ту же логику, что и ниже:

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

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

Выгрузка и загрузка записей из IPFS

Еще одна важная часть — загрузка записей в IPFS и передача адреса смарт-контракту. Я использовал ipfs-http-client, чтобы легко справиться с этой задачей в React.

Сначала я настроил IPFS-клиент, используя свой проект Infura. Infura — это инфраструктурный инструмент для использования IPFS API.

После того, как доктор перетаскивает файл в дропзону, FileReader считывает его как буфер и загружает его в IPFS клиент.

Затем я вызываю контрактный метод addRecord с адресом пациента и хэшем, возвращенным клиентом IPFS. И наконец, вызываю getRecords для обновления записей.

Затем пациент или врач может загрузить запись одним щелчком мыши.

Готовый продукт

Вы можете ознакомиться с нашим репозиторием и проектом на DevPost.

Мы надеемся, что наш проект поможет совершить революцию в централизованном владении медицинскими записями и позволит людям самим распоряжаться своим здоровьем. Вперед, блокчейн 🚀

Оцените статью
devanswers.ru
Добавить комментарий