ArchitectureBlockchainNode - andyceo/documentation GitHub Wiki
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 - выдающаяся по сложности цепочка.
Есть общие составляющие для узла любого блокчейна.