Базовый Блок 68: поправки и дополнения
Сегодня опубликовали выпуск со мной в подкасте “Базовый Блок”.
Учитывая, что это был мой первый опыт участия в подкасте, вышло неплохо. НО я допустил несколько ошибок (ввиду волнения, ошибки перевода, тысячу других отмазок можно придумать) и хотелось бы их разобрать.
в распределенных системах есть два основных понятия - безопасность (safety) и доступность (availability)
Availability это из CAP теоремы. Правильно - Liveness (живучесть). https://en.wikipedia.org/wiki/Liveness
См. также https://en.wikipedia.org/wiki/Safety_property
ты можешь экономикой или инструментами воздействовать (на децентрализацию стейка)
См. On the decentralization of the Cosmos Hub и RESEARCH: Slashing incentives for validator decentralization.
в Tendermint есть похожая механика, где за генерацию блока участники получают награду
В Cosmos Hub, да. Помимо награды за блок есть также комиссии транзакций и инфляция. Малая часть достается валидатору (у некоторых валидаторов сейчас установлена 0% комиссия), большая часть уходит делегаторам.
См. Cosmos Validator Economics - Bridging the Economic System of Old into the New Age of Blockchains
Если более подробно, то награда за блок и инфляционные атомы распределяются так:
baseProposerReward
- создателю блокаbonusProposerReward * fractionPrecommits
- бонус за включение голосов других валидаторов(1 - baseProposerReward - (bonusProposerReward * fractionPrecommits))
- бонус всем валидаторам (сотне) пропорционально их ставкеcommunityTax
- в общий пул
Схема может претерпеть изменения Proposal: alter uptime & precommit inclusion incentives.
Sybil attacks в Tendermint
Можно рассматривать атаку Сивиллы на двух уровнях:
- уровне алгоритма
- сетевом уровне
На уровне алгоритма, как и в любом другом PoS алгоритме, чтобы стать валидатором (участвовать в консенсусе) тебе нужно купить попугаев и если ты отступаешь от протокола (например, голосуешь за форк и основную цепочку), ты можешь лишиться части или всех попугаев (slashing).
На сетевом уровне, можно пользоваться инструментами Cloudflare или Google или блокировать по IP.
типичный пример отсылки транзакции из Bitcoin в Ethereum в сети Cosmos
Напишу отдельную статью, чтобы было понятнее и самому прояснить некоторые вопросы для себя. Если вкратце, то:
Bob -> [Ethereum Smart Contract] -> [Eth 1.0 Zone] -> [Cosmos Hub] -> [Bitcoin Zone]
[Bitcoin Zone] -> [Binance DEX] -> [Bitcoin Zone] -> Bitcoin Contract -> Alisa
Боб хочет отправить 55 ETH на свой счет в Bitcoin Zone:
- Он отправляет эквивалент 55 ETH на смарт контракт.
- Eth 1.0 Zone ждет 100 блоков чтобы убедиться что транзакция не будет откачена
- Eth 1.0 Zone начисляет 55 CETH (Cosmos ETH) на счет Боба (адрес Боб указал когда посылал средства на смарт контракт)
- Боб посылает 55 CETH в Bitcoin Zone. 55 CETH сжигаются на Eth 1.0 Zone! IBC транзакция уходит в Cosmos Hub и далее в Bitcoin Zone.
- 55CETH начисляются на счет Боба в Bitcoin Zone. Т.е 55CETH теперь существуют в Bitcoin Zone!
Боб хочет отправить 1 BTC Алисе:
- Он отправляет эквивалент 1 BTC в ETH (скажем 900 ETH) на смарт контракт.
- Eth 1.0 Zone ждет 100 блоков чтобы убедиться что транзакция не будет откачена
- Eth 1.0 Zone начисляет 900 CETH (Cosmos ETH) на счет Боба (адрес Боб указал когда посылал средства на смарт контракт)
- Боб посылает 900 CETH в Binance DEX. 900 CETH сжигаются на Eth 1.0 Zone! IBC транзакция уходит в Binance DEX и далее в Bitcoin Zone.
- 1 CBTC (Cosmos BTC) начисляются на счет Боба в Bitcoin Zone
- Боб посылает транзакцию о выходе (exit) из Bitcoin Zone. Bitcoin Contract перечисляет 1 BTC Алисе.