Skip to content

ArchitectureBlockchainNode

andyceo edited this page Sep 28, 2017 · 1 revision

Распределенная система - p2p-сеть

Node (NetworkController) <-> Requests and Modifiers <-> (NetworkController) Node

Транзакции

Валидация транзакции:

  • Stateless: подписи валидны, сумма не отрицательна
  • Stateful: у отправителя действительно есть монеты в данный момент времени

Транзации в сети Биткойн

Metadata, Input, Output

Когда транзакция приходит, мы отправляем ее в State

State - в случае биткойна: id -> (Value, Script)

Ethereum: балансы и nonce всех публичных ключей

  • pubkey -> (Balance, Nonce)
  • pubkey -> contract

State может быть аутентифицированный (ethereum) и неаутентифицированный (bitcoin)

Из State транзакция попадает в Mempool - хранилище неподтвержденных транзакций. Часто меняется - обычно хранится в RAM, имеет ограниченный размер, старые и невалидные транзакции удаляются.

В биткойне есть timelimit на транзакцию - 72 часа. Но это не гарантированно.

Умеет:

  • Добавить транзакцию
  • Получить транзакции по условию
  • Удалить транзакции по условию

Далее - есть History. Full Block может прилететь по сети. После того как блок прилетел, нужно проверить State, обновить его и Mempool.

А также появился Wallet (Vault).

  • Приватных данных
  • Публичных данных,
  • Данных
  • Wallet -> Vault

Есть общий компонент NodeViewHolder, который синхронно меняет State, Mempool, History, Vault.

Атака на валидацию ьлоков. Пока все остальные майнят, майнер-атакующий 4 минуты майнит. Было в Биткойне, Эфире.

Заголовки

Биткойн: 80 байт на заголовок.

Сервисы

SPV-ноды (есть в биткойне) атака SPV-майнинг

PoPoW-ноды, Proof of Proof of Work - выдающаяся по сложности цепочка.

Заключение

Есть общие составляющие для узла любого блокчейна.

Sidebar is under construction

Clone this wiki locally