Как узнать, является ли моя транзакция мошеннической после одного подтверждения?

Допустим, транзакция tx_1 имеет одно подтверждение. Но tx_1 является мошенническим. Можно ли его откатить? Здесь я храню подтвержденные блоки, и если моя транзакция находится в блоке-1, то подтверждение tx_1 равно 1, и всякий раз, когда блоки приходят после блока-1, подтверждение будет продолжать увеличиваться. Но после одного подтверждения, если tx_1 является мошенническим, как остановить эту транзакцию?

Ответы (1)

Вы не можете тривиально отменить подтвержденную транзакцию. Это одно из ключевых преимуществ такой сети, как Биткойн.

Если ваш tx имеет только 1 подтверждение, вы все равно сможете удалить его, добыв два блока на родительском блоке, содержащем tx_1. Однако для этого требуется, чтобы у вас было достаточно хэш-мощности, чтобы сделать это, прежде чем кто-то расширит цепочку, построенную на блоке, содержащем tx_1, что нетривиально. Кроме того, даже если вам это удастся, все еще есть шанс, что кто-то может добыть блок, который вы сбросили, и снова превратить его в более длинную цепочку.

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

Скажем, я отслеживаю конкретную биткойн-транзакцию «TX_1». Подтвержденный блок имел информацию о транзакции после того, как я расшифровал блок, и я обновил свою базу данных как: {транзакция: 'TX_1', 'подтверждение': 1} теперь, как мне увеличить количество подтверждений, предполагая, что я все еще слушаю сети через ZMQ. Должен ли я ожидать, что та же транзакция «TX_1» будет присутствовать в следующих блоках?
Когда вы получите следующий блок, проверьте хэш предыдущего блока. Если он соответствует блоку с вашим tx, увеличьте его на единицу. Для блока n+2 сравните хеш prevblock с блоком n+1 и увеличьте его на 1. И так далее, и тому подобное. Пока новые блоки продолжают строиться в цепочке, включая блок с вашим tx, он продолжает добавлять подтверждения.