Блокчейн - нужно ли использовать в проекте типа ms rewards?

zserg84

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

Задача такая..Имеется платформа с апи. Клиенты платформы - различные web-проекты. Суть - начислять поинты пользователям проектов за определенные действия. Эти поинты они потом могут тратить на различные скидки.
При совершении пользователем определенных действий на сайте проекта, идет запрос к апи платформы и пользователю начисляются поинты. За каждую такую транзакцию платформа с проекта берет определенную комиссию и раз в месяц/квартал/год выставляет проекту счет.
Теперь вопрос: как аргументировать этот счет перед проектом?
Было решено все транзакции сохранять в блокчейне. Но т.к. они все совершаются от имени платформы, то платформа теоретически может совершать эти транзакции без разрешения от проекта.

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

Может кто подскажет грамотное решение?
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
а почему blockchain? почему не простое протоколирование?
 

zserg84

Новичок
а почему blockchain? почему не простое протоколирование?
Что вы имеете ввиду?
Проблема в том что я партнеру буду выставлять счет. И партнер может усомниться в достоверности этого счета. Как он сможет проверить что я не сам насоздавал пачку этих транзакций, а они были созданы с его разрешения..

Пока придумал только такой вариант, что имеется третья сторона, которой и я и партнер доверяем. Пусть это будет блокчейн. Перед тем как запрос на транзакцию уйдет на мое апи, партнер в БЧ сохранит разрешение на эту операцию. А я при создании транзакции буду в нее добавлять ссылку на это разрешение. Таким образом если у партнера возникнет сомнение в том что транзакция была совершена не просто так, я ему предоставлю ссылку на разрешение, подписанное им.
 

WMix

герр M:)ller
Партнер клуба
Если партнер согласен дернуть апи, то вопрос как захешировать подпись не стоит. Все что партнер должен сделать это прикрепить подпись, которую сам может проверить. Пусть ко всему остальному он прикрепляет
Md5( номер трансакции, сумма, пароль который знает только он)

Это просто пример, подпись можно придумать сложнее...
 

zserg84

Новичок
Что если он потом заявит, что не может верифицировать подпись?
 

fixxxer

К.О.
Партнер клуба
При чем тут вообще блокчейн? Блокчейн нужен, когда есть большое количество сторон, которые друг другу не доверяют. И он может быть только распределенным, иначе он превращается в карго-культ.

Схема с подписью отлично сработает, но надо делать не как WMix предложил, а так, как подписываются HTTPS-сертификаты.
Партнер генерирует пару ключей, публичный передает тебе, приватный держит у себя. Подписывает транзакцию приватным ключом, ты ее проверяешь публичным. В этом случае все, что он может заявить, это что его сервер взломали и утащили приватный ключ - ну и его проблемы.

И, да, если в этой схеме в подписываемый пейлоад добавить хэш предыдущей транзакции, получится вариация на тему блокчейна. Только нахрена это нужно, абсолютно неясно.
 

zserg84

Новичок
Если я, владелец сервиса по приему платежей, решу создать эти платежи без участия партнера, как предложенная схема может мне в этом помешать?
Я владею всей информацией, знаю о пользователях, проектах и всем остальном. Могу злоупотреблять этим.
Я создают запись в своей бд о том, что проект X дает пользователю Y 10 поинтов. За эту операцию я удерживаю с проекта комиссию.
В схеме с асинхронным шифрованием, я могу гарантировать только что смогу верифицировать своего партнера, расшифровав его подпись.
 

fixxxer

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

zserg84

Новичок
Подделать не могу.
Теперь партнер решил обмануть меня. И правильные транзакции решил объявить невалидными. Как мне доказать что транзакции валидны?
 

fixxxer

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

Если вопрос в том, как доказать тому, кто говорит, что ты верблюд, что ты не верблюд - это не сюда, это к психиатру.
 

zserg84

Новичок
Я могу вообще ничего не проверять. Просто создать транзакцию и предъявить за это счет.

А Партнер в свою очередь может заявить, что не верифицирует валидную транзакцию.

ОК. Я отдаю партнеру транзакцию с валидной подписью xxx. Партнер пытается обмануть меня и говорит что подпись не валидна. Что я должен ему предъявить?

Другая ситуация. Я пытаюсь обмануть партнера. И генерируют невалидную подпись. Партнер опять заявит что не верифицирует подпись.

В итоге партнер в любом случае может заявлять что подпись не валидна, а доказать что это не так я не могу
 

nllabs

Новичок
Я не спец по блокчейну. Я бы поискал видеокурс на эту тему. На одном из ресурсов (не буду называть имя) был замечен курс "Создайте свою криптовалюту и блокчейн с нуля".
 

fixxxer

К.О.
Партнер клуба
Проверяется точно так же, как вот сейчас твой браузер проверяет сертификат phpclub-а.

> Я отдаю партнеру транзакцию с валидной подписью xxx. Партнер пытается обмануть меня и говорит что подпись не валидна.
Его публичный ключ? Его. Валидация проходит? Проходит. Тут невозможно утверждать, что оне невалидна, это равносильно банальному "иди на*** я тебе ничего платить не буду в любом случае".

> Другая ситуация. Я пытаюсь обмануть партнера. И генерируют невалидную подпись.
И банальная проверка показывает, что подпись невалидна.

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

WMix

герр M:)ller
Партнер клуба
как подписываются HTTPS-сертификаты.
@fixxxer а ченить подобное пробывал?
Код:
server {
   ...
    location / {
        ...
        proxy_set_header ssl-hash $ssl_client_fingerprint;
    }
}
в смысле передать на аппликацию отпечаток и от этого отталкиваться (как от пользователя)
 

WMix

герр M:)ller
Партнер клуба
глупая идея? я думал о API
или $ssl_client_fingerprint; это не то что я думаю? (public key производная)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Это писец. Вчера я открыл эту тему и побыстрее закрыл. Вы уже освятили свои ноутбуки, читаете молитву перед коммитами? Пойду налью виски.

Я бы поискал видеокурс на эту тему.
Могу дать ссылку на запись моего доклада по объяснению блокчейна как обычной технологии. Но надо знать обычные технологии шифрования, без базового образования говорить не о чем.

Господа, для начала стоит разделить понятие блокчейна как технологии, которая состоит из базы данных и api, как и любой веб-сайт, и коммерческой сети блокчейн, которая обеспечивает неизменность данных.
Распределенный реестр - это тысячи майнеров, которые жгут свет, обеспечивая сохранность базы на своих компьютерах, а просто блокчейн как технология без распределенной сети ничего не дает.
Для проекта обычно проще и дешевле выбрать стороннее доверенное хранилище - например, настроить S3 или Aurora c репликацией. Если это не сделка на уровне государств, решение на основе AWS или Azure будет достаточно надежным даже для крупных банков.
 
Последнее редактирование:

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Как сделать свой теплый ламповый блокчейн на двоих? Берем два сервера БД с поддержкой хранимых процедур. Один у меня, другой - у контрагента, и настраиваем master-master репликацию на две таблицы, таблицу данных и таблицу подписей. Каждый кладет в своем сервере сертификат государственной цифровой подписи, которая подписывает запросы в госслужбы. Сертификат не реплицируется.
Для таблицы с данными пермиссия ставится только на INSERT, на подписи - на INSERT и UPDATE.
Пишем триггер на INSERT в таблицу данных - каждая запись, своя и чужая, подписывается сертификатом. Отдельное поле таблицы - значение подписи прошлой строки. Записи реплицируются.
Все, каждая запись в таблице становится подписана нашими официальными подписями, и лежит на сервере у каждого из нас. Удалить что-то каждый может только на своем сервере.
После этого подписываем бумажный договор о том, что записи с 2 подписями в этой базе считаются юридически обязывающими.
Подобным образом всю жизнь работали системы торговых терминалов на межбанковском рынке.
 
Последнее редактирование:
Сверху