Как вы можете вносить изменения в базу данных в реальном времени, если транзакции требуют принятия всеми остальными

Я пытаюсь понять текущую реализацию смарт-контрактов и транзакций и меня интересует поведение в реальном времени. Я читал, что для того, чтобы транзакция стала частью блока, может потребоваться до 10 минут, и прочитал здесь , что «вы должны создать так называемую транзакцию, которая должна быть принята всеми остальными». Поэтому я не понимаю, как вы могли бы иметь транзакции в реальном времени и создавать, скажем, приложение списка задач, где каждый раз, когда вы создаете задачу, она будет мгновенно сохраняться в базе данных и после обновления будет там, и она будет взимать плату с пользователя за задачу. (скажем) сразу. Хотите знать, возможно ли это, или рассматривалось ли это, или почему это невозможно, или как бы вы справились с такой ситуацией.

Ответы (1)

Я не уверен, откуда вы узнали, что транзакция будет находиться в блоке через 10 минут. Это не займет 10 минут. В настоящее время среднее время составляет чуть меньше 20 секунд ( https://ethstats.net/ ).

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

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

Итак, теоретически блокчейн находится примерно в «20 секундах от реального времени». 20 секунд могут быть не слишком большим интервалом для приложения todo. Но вы всегда должны помнить, что существует компромисс между консенсусом: сколько блоков вы хотите подождать, прежде чем вы будете уверены, что блок будет достаточно окончательным.

СРЕДСТВА

Есть способы обойти это «медленное» время транзакции. Например:

1) Выполните часть обработки вне блокчейна. Очевидно, что вся такая обработка намного быстрее. Затем просто обновляйте данные в блокчейне через определенные промежутки времени или около того.

2) Боковые цепи/каналы состояния. Это довольно новые подходы, но они частично используют первый метод; часть обработки выполняется, например, в боковой цепи, которая работает намного быстрее. Эти решения в основном действительны только для транзакций между известными участниками (поэтому много транзакций туда и обратно между известными участниками), а не для «случайных» транзакций со случайными участниками.

Поэтому интересно, есть ли примеры приложений, которые демонстрируют, как справляться с этой задержкой. Например, я видел игры ( а и б ), я не понимаю, как они могут работать, если у них есть 20-секундная задержка.
Ваша ссылка о биткойнах. Это Ethereum, совершенно другой блокчейн. Я отредактировал свой ответ, чтобы добавить некоторые средства правовой защиты. Дополнительную информацию о предлагаемых средствах защиты можно найти в Интернете.
Интересные мысли о средствах. Интересно, знаете ли вы о каком-либо блокчейне или исследовании, в котором нет задержки ( в режиме реального времени ), мне было бы интересно посмотреть, как они это сделали.
Обычно это компромисс между децентрализацией + отсутствием доверия и (частично) централизованным + доверием. Таким образом, чем более централизовано что-то, тем быстрее оно обычно работает. Централизованные базы данных работают очень быстро. Децентрализованные блокчейны «очень» медленные. Так что это зависит только от того, что вы ищете. Для скорости просто используйте централизованные базы данных. Для ненадежных свойств используйте Ethereum. Кроме того, есть множество промежуточных вариантов (например, Ripple, Neo или BigChainDB).