Как транзакция проверяется в блокчейне? - PullRequest
1 голос
/ 26 марта 2020

Если майнер A создает блок, содержащий транзакцию A, а майнер B создает блок, не содержащий транзакцию A примерно одновременно, то некоторые из других майнеров сначала получат блок майнера A, а другие получит блок майнера B.

Если цепь майнера B растет быстрее, чем цепь майнера A, то транзакция A никогда не будет принята (как это никогда не происходило). Итак, как пользователь A, создавший транзакцию A, может быть уверен, что транзакция A была принята / проверена блокчейном?

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

Есть ли какие-либо контрольно-пропускные пункты, которые должны быть согласованы всеми шахтерами?

1 Ответ

2 голосов
/ 27 марта 2020

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

Если блок B добывается первым, транзакция A возвращается в mempool (память) узлов и является кандидатом для включения в следующий блок. Mempool запускает транзакции через 2 недели, если они не были добыты.

Возможно, что другая цепочка, не содержащая блок, могла бы расти быстрее, но крайне маловероятно, потому что каждый блок занимает в среднем 10 минут, и майнеры получают стимул работать в главной цепи (в отличие от разветвленной цепи), чтобы они сразу переключались, когда основная цепь разрабатывает новый блок. Они не будут работать над разветвленной цепью достаточно долго, чтобы опередить сеть, тратя время и ресурсы. Требуется не менее 51% (в среднем) хэш-мощности сети, чтобы опередить основную цепочку, и это называется 51% -ой атакой. Это никогда не случалось с Bitcoin, но случалось с более мелкими цепями, такими как, например, Bitcoin Gold.

...