@alex_devPY

Как продать ссылки через смарт-контракт Ethereum?

Здравствуйте.

Почитал про смарт-контракты, но не совсем понял.

Есть данные

a = {
         '2': 'http://site.ru',
         '1': 'http://test.ru',
     }


Я записываю эти данные в массив смарт-контракта, загружаю его в блокчейн.
Идея простая: программа юзера отправляет эфиры + id ссылки (1 или 2), а в ответ получает ссылку из массива смарт-контракта.

Будут ли ссылки видны всем пользователям или блокчейн эфира дает непубличный массив?

Смарт-Контракт сам по себе не может возвращать ответ? Как таковой callback отсутствует? Как тогда провести операцию возврата ссылки?
  • Вопрос задан
  • 227 просмотров
Решения вопроса 2
@rPman
Вы не сможете реализовать напрямую хранение и передачу данных полностью на контрактах (возможно тут какое-нибудь гомоморфное шифрование применить, я хз), потому что данные будут лежать в открытую.

Поэтому единственный способ, отслеживать события оплаты в вашем приложении и реагировать соответственно.

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


Сделать то что вы придумали можно. Для всех публичных переменных (структуры, массивы и прочее) смарт контракт автоматически создает геттеры.

Функции в смартконтрактах бывают Payable, тоесть принимающие платежи. Чтобы указать стоимость (т.е сколько эфиров нужно перевести) можно использовать модификаторы с указанием необходимой суммы, в случае исключения произойдет revert траназкции, эфир вернется а газ нет.

Смарт-Контракт сам по себе не может возвращать ответ? Как таковой callback отсутствует? Как тогда провести операцию возврата ссылки?


Так как на проведение транзакции требуется время то ответа смарт контракт не дает. При выполнении транзакции, блокчейн выдает номер транзакции. Мы можем прочитать блоки и получить список событий созданных контрактом, методом eth_getFilterLogs в Geth.

Проверять купил человек(кошелек) нужный товар или нет, можно через mapping

mapping(adress => uint[]) public Orders //adress - адресс кошелька, uint - id товара
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы