соответствии с консенсусом • История, которую нельзя (или очень сложно) подменить • Эта история хранится/создается/ведется всеми участниками • Как правило, такая система не имеет центра или его участие ограничено (частный блокчейн)
соответствии с консенсусом • История, которую нельзя (или очень сложно) подменить • Эта история хранится/создается/ведется всеми участниками • Как правило, такая система не имеет центра или его участие ограничено (частный блокчейн)
соответствии с консенсусом • История, которую нельзя (или очень сложно) подменить • Эта история хранится/создается/ведется всеми участниками • Как правило, такая система не имеет центра или его участие ограничено (частный блокчейн)
соответствии с консенсусом • История, которую нельзя (или очень сложно) подменить • Эта история хранится/создается/ведется всеми участниками • Как правило, такая система не имеет центра или его участие ограничено (частный блокчейн)
везде, где речь идет о деньгах, имуществе, деловой репутации, соглашениях итп • Чтобы избежать мошенничества • Когда обеспечить достоверность истории важнее, чем обеспечить быстродействие системы
везде, где речь идет о деньгах, имуществе, деловой репутации, соглашениях итп • Чтобы избежать мошенничества • Когда обеспечить достоверность истории важнее, чем обеспечить быстродействие системы
везде, где речь идет о деньгах, имуществе, деловой репутации, соглашениях итп • Чтобы избежать мошенничества • Когда обеспечить достоверность истории важнее, чем обеспечить быстродействие системы
у каждого участника распределенной сети • Структура (список/дерево), данные в которой нельзя изменить, можно только добавить новые данные в конец • Данные связаны хеш указателями
блокчейна • Эта структура хранится у каждого участника распределенной сети • Структура (список/дерево), данные в которой нельзя изменить, можно только добавить новые данные в конец • Данные связаны хеш указателями
2 Устройство блокчейна Info Block hash • Эта структура хранится у каждого участника распределенной сети • Структура (список/дерево), данные в которой нельзя изменить, можно только добавить новые данные в конец • Данные связаны хеш указателями
2 Устройство блокчейна Info Block hash • Эта структура хранится у каждого участника распределенной сети • Структура (список/дерево), данные в которой нельзя изменить, можно только добавить новые данные в конец • Данные связаны хеш указателями
2 Устройство блокчейна Info Block hash • Эта структура хранится у каждого участника распределенной сети • Структура (список/дерево), данные в которой нельзя изменить, можно только добавить новые данные в конец • Данные связаны хеш указателями
• Любое изменение данных блока ведет к изменению хеша • Алгоритм хеширования (SHA256) устроен таким образом, что не получится искусственно подобрать новый блок с таким же хешем Почему данные нельзя изменить? 19
• Любое изменение данных блока ведет к изменению хеша • Алгоритм хеширования (SHA256) устроен таким образом, что не получится искусственно подобрать новый блок с таким же хешем Почему данные нельзя изменить? 20
• Любое изменение данных блока ведет к изменению хеша • Алгоритм хеширования (SHA256) устроен таким образом, что не получится искусственно подобрать новый блок с таким же хешем Почему данные нельзя изменить? 21
Добавление во второстепенную ветку Добавление в ветку, которая становится главной Добавление tx из старой главной ветки h’ > h longest h’ <= h longest Очистка пересекающихся tx Передача связанным нодам h’ > h longest Очистка пересекающихся tx
Добавление во второстепенную ветку Добавление в ветку, которая становится главной Добавление tx из старой главной ветки Добавление сиротского блока Запрос промежуточных блоков h’ > h longest h’ <= h longest Передача связанным нодам h’ > h longest Повторение процедуры для полученных блоков Очистка пересекающихся tx Очистка пересекающихся tx
Продолжаем самую длинную цепочку • Остальные блоки сохраняем, но не передаем • Работаем с пулом транзакций, добавляя и очищая транзакции в зависимости от того, какая цепочка является главной • Решаем, кто делает блок и в каком порядке в соответствии с механизмом консенсуса
Продолжаем самую длинную цепочку • Остальные блоки сохраняем, но не передаем • Работаем с пулом транзакций, добавляя и очищая транзакции в зависимости от того, какая цепочка является главной • Решаем, кто делает блок и в каком порядке в соответствии с механизмом консенсуса
Продолжаем самую длинную цепочку • Остальные блоки сохраняем, но не передаем • Работаем с пулом транзакций, добавляя и очищая транзакции в зависимости от того, какая цепочка является главной • Решаем, кто делает блок и в каком порядке в соответствии с механизмом консенсуса
Продолжаем самую длинную цепочку • Остальные блоки сохраняем, но не передаем • Работаем с пулом транзакций, добавляя и очищая транзакции в зависимости от того, какая цепочка является главной • Решаем, кто делает блок и в каком порядке в соответствии с механизмом консенсуса
Продолжаем самую длинную цепочку • Остальные блоки сохраняем, но не передаем • Работаем с пулом транзакций, добавляя и очищая транзакции в зависимости от того, какая цепочка является главной • Решаем, кто делает блок и в каком порядке в соответствии с механизмом консенсуса
HeadHunter выдает регистрацию • Не будет анонимным: регистрация под реальными именами + модерация • Создавать блоки будут только некоторые работодатели, которые за выполнение этой функции получают дополнительные сервисы от HeadHunter (например) • Будем хранить записи о трудовых отношениях, а также отзывы о работе или прохождении испытательного срока 86
HeadHunter выдает регистрацию • Не будет анонимным: регистрация под реальными именами + модерация • Создавать блоки будут только некоторые работодатели, которые за выполнение этой функции получают дополнительные сервисы от HeadHunter (например) • Будем хранить записи о трудовых отношениях, а также отзывы о работе или прохождении испытательного срока 87
HeadHunter выдает регистрацию • Не будет анонимным: регистрация под реальными именами + модерация • Создавать блоки будут только некоторые работодатели, которые за выполнение этой функции получают дополнительные сервисы от HeadHunter (например) • Будем хранить записи о трудовых отношениях, а также отзывы о работе или прохождении испытательного срока 88
HeadHunter выдает регистрацию • Не будет анонимным: регистрация под реальными именами + модерация • Создавать блоки будут только некоторые работодатели, которые за выполнение этой функции получают дополнительные сервисы от HeadHunter (например) • Будем хранить записи о трудовых отношениях, а также отзывы о работе или прохождении испытательного срока 89
Работодатель C Private key Public key инф. о событии запись Работодателя A запись Работодателя A валидация валидация валидация Private key Public key Identity =
Работодатель C Private key Public key инф. о событии запись Работодателя A запись Работодателя A валидация записи еще не включенные в блок валидация валидация Private key Public key Identity =
-> Data { return … } struct EmployeeBlock: DataHashable { let date: Date let employerPublicKey: Data let userPublicKey: Data let event: EmployeeEvent let previousHash: Data let hash: Data }
Signed<EmployeeBlock> let employersOpinion: String let employersPublicKey: Data let hash: Data } extension EmployerBlock: Signable { func toData() -> Data { return … }