A
Alex077
Модератор
- Регистрация
- 11 Ноя 2018
- Сообщения
- 9,726
Что такое блокчейн?
Блокчейн
Допустим, я перевожу какую-то сумму со своего счёта на ваш.
Когда я это делаю, должно быть место, где бы записывалась информация об этой транзакции.
Это место – блок.
В блоке записывается информация такого рода:
public String data;
public String hash;
...
}
Таким образом, блок – это носитель информации, подобно чеку в банке.
Помимо информации (I), блок также содержит уникальный идентификационный хеш (H). Хеш (H) – очень важное понятие.
Поскольку транзакций много, блоков также много. И эти блоки связаны в цепочку, образуя блокчейн.
Почему блоки связаны?
Блоки связаны, чтобы обеспечить безопасность информации.
Связь: хеш текущего блока зависит от хеша предыдущего блока.
Разберём это на следующем примере.
Допустим, есть 3 блока со следующей информацией:
Объяснение хеш-суммы
H2 = некаяКриптоФункция(H1, I2)
H3 = некаяКриптоФункция(H2, I3)
Откуда берётся H1? Для начала нужно взять значение по умолчанию H0.
H1 = некаяКриптоФункция(H0, I1), где H0 – значение по умолчанию.
Устойчивый блокчейн
Пока показанный выше блокчейн устойчив.
Но допустим, что кто-то изменил информацию с блока 2 I2 на I2′, и хеш с H2 на H2′, оставив другие блоки без изменений.
В данном случае блокчейн станет неустойчивым, как показано ниже.
Неустойчивый блокчейн
Блокчейн неустойчив по следующим причинам:
Устойчивый блокчейн
Таким образом, для любой модификации требуется изменение и верификация всех блоков. Изменить данные посредством взлома непросто. В случае взлома блокчейн станет неустойчивым, и взлом будет обнаружен.
List<Block> blockList = new ArrayList();
Блоки упорядочены в список, как показано выше, так что из позиции текущего блока (position) можно очень легко найти предыдущий блок: blocklist.get(position – 1). Существует много способов хранения блоков.
Безопасность – главная причина, почему блоки связаны.
А теперь подробнее: что же такое блокчейн?
Не бойтесь. Мы разберём всё это подробно.
Реестр
Реестр – главный носитель информации, содержащий список блоков.
Хранящий данные
Блок хранит данные (информацию). Данные могут быть любого типа. Мы в качестве примера используем информацию о транзакциях.
Распределённый и децентрализованный реестр
Обычно существует центральная машина, отвечающая за все действия с данными. Но в случае блокчейна машин много (поэтому он не централизован), и все машины подключены друг к другу. И все эти машины имеют один и тот же реестр. Поэтому блокчейн – распределённый и децентрализованный реестр.
Другими словами, блокчейн – это реестр, который распределён между всеми, кто использует ту же сеть. Каждый имеет копию всего реестра и получает обновления, когда что-то где-то добавляется.
Совместно используемый всеми узлами своей сети
Имеется сеть, где каждая машина подключена ко всем другим. Каждый узел (машина) имеет одну и ту же копию реестра. Это значит, что реестр совместно используется всеми узлами своей сети.
Как работает блокчейн?
Следующие шаги демонстрируют работу блокчейна:
Если блокчейн распределён, как обеспечивается его безопасность?
Блокчейн использует криптографию для генерирования цифровых подписей. В работе с цифровыми подписями существует понятие приватного и публичного ключа.
У каждого имеется приватный и публичный ключ.
Приватный ключ: Доступ к этому ключу имеет только его владелец.
Публичный ключ: Каждый имеет доступ к публичным ключам всех других участников сети.
Допустим, я хочу создать новую транзакцию. Я шифрую информацию с помощью своего приватного ключа, чтобы создать цифровую подпись.
Цифровая подпись
Затем я отправляю транзакцию (информация, публичный ключ и цифровая подпись, созданная выше) в сеть на подтверждение.
Транзакция
В процессе сеть расшифровывает цифровую подпись с помощью предоставленного публичного ключа и извлекает из этой подписи информацию.
Если исходная информация совпадает с информацией, извлечённой из подписи, то транзакция подтверждается. В противном случае она отклоняется.
Если информация не совпадает, возможны следующие случаи:
Да, блокчейн = block (блок) + chain (цепочка) = цепочка блоков
Начнём с аналогии денежного перевода с моего счёта на ваш. Помните, блокчейн имеет много вариантов применения. Система денежных переводов – один из них.Допустим, я перевожу какую-то сумму со своего счёта на ваш.
Когда я это делаю, должно быть место, где бы записывалась информация об этой транзакции.
Это место – блок.
В блоке записывается информация такого рода:
- Кто кому переводит деньги.
- Сумма транзакции.
- Другая информация, такая как подпись.
public String data;
public String hash;
...
}
Таким образом, блок – это носитель информации, подобно чеку в банке.
Помимо информации (I), блок также содержит уникальный идентификационный хеш (H). Хеш (H) – очень важное понятие.
Поскольку транзакций много, блоков также много. И эти блоки связаны в цепочку, образуя блокчейн.
Почему блоки связаны?
Блоки связаны, чтобы обеспечить безопасность информации.
Связь: хеш текущего блока зависит от хеша предыдущего блока.
Разберём это на следующем примере.
Допустим, есть 3 блока со следующей информацией:
- Блок 1 содержит информацию I1 с хеш-суммой H1.
- Блок 2 содержит информацию I2 с хеш-суммой H2.
- Блок 3 содержит информацию I3 с хеш-суммой H3.
H2 = некаяКриптоФункция(H1, I2)
H3 = некаяКриптоФункция(H2, I3)
Откуда берётся H1? Для начала нужно взять значение по умолчанию H0.
H1 = некаяКриптоФункция(H0, I1), где H0 – значение по умолчанию.
Пока показанный выше блокчейн устойчив.
Но допустим, что кто-то изменил информацию с блока 2 I2 на I2′, и хеш с H2 на H2′, оставив другие блоки без изменений.
В данном случае блокчейн станет неустойчивым, как показано ниже.
Блокчейн неустойчив по следующим причинам:
- H3 = некаяКриптоФункция(H2′, I3) больше не верно.
- Нужно новое значение H3′, чтобы H3′ = некаяКриптоФункция(H2′, I3).
- То же касается H4′, H5′, H6′ и т. д.
Таким образом, для любой модификации требуется изменение и верификация всех блоков. Изменить данные посредством взлома непросто. В случае взлома блокчейн станет неустойчивым, и взлом будет обнаружен.
List<Block> blockList = new ArrayList();
Блоки упорядочены в список, как показано выше, так что из позиции текущего блока (position) можно очень легко найти предыдущий блок: blocklist.get(position – 1). Существует много способов хранения блоков.
Безопасность – главная причина, почему блоки связаны.
А теперь подробнее: что же такое блокчейн?
Блокчейн – распределённый и децентрализованный реестр, хранящий данные, такие как транзакции, и совместно используемый всеми узлами своей сети.
Такое определение блокчейна кажется достаточно хитроумным.Не бойтесь. Мы разберём всё это подробно.
Реестр
Реестр – главный носитель информации, содержащий список блоков.
Хранящий данные
Блок хранит данные (информацию). Данные могут быть любого типа. Мы в качестве примера используем информацию о транзакциях.
Распределённый и децентрализованный реестр
Обычно существует центральная машина, отвечающая за все действия с данными. Но в случае блокчейна машин много (поэтому он не централизован), и все машины подключены друг к другу. И все эти машины имеют один и тот же реестр. Поэтому блокчейн – распределённый и децентрализованный реестр.
Другими словами, блокчейн – это реестр, который распределён между всеми, кто использует ту же сеть. Каждый имеет копию всего реестра и получает обновления, когда что-то где-то добавляется.
Совместно используемый всеми узлами своей сети
Имеется сеть, где каждая машина подключена ко всем другим. Каждый узел (машина) имеет одну и ту же копию реестра. Это значит, что реестр совместно используется всеми узлами своей сети.
Как работает блокчейн?
Следующие шаги демонстрируют работу блокчейна:
- Амит хочет совершить транзакцию.
- Амит создаёт транзакцию.
- Амит отправляет транзакцию в сеть.
- Машина в сети верифицирует и подтверждает транзакцию.
- В блокчейне создаётся новый блок для транзакции Амита.
- Обновлённый блокчейн транслируется всем участникам сети.
- Перевод завершён.
Если блокчейн распределён, как обеспечивается его безопасность?
Блокчейн использует криптографию для генерирования цифровых подписей. В работе с цифровыми подписями существует понятие приватного и публичного ключа.
У каждого имеется приватный и публичный ключ.
Приватный ключ: Доступ к этому ключу имеет только его владелец.
Публичный ключ: Каждый имеет доступ к публичным ключам всех других участников сети.
Допустим, я хочу создать новую транзакцию. Я шифрую информацию с помощью своего приватного ключа, чтобы создать цифровую подпись.
Затем я отправляю транзакцию (информация, публичный ключ и цифровая подпись, созданная выше) в сеть на подтверждение.
В процессе сеть расшифровывает цифровую подпись с помощью предоставленного публичного ключа и извлекает из этой подписи информацию.
Если исходная информация совпадает с информацией, извлечённой из подписи, то транзакция подтверждается. В противном случае она отклоняется.
Если информация не совпадает, возможны следующие случаи:
- Исходная информация по пути подверглась манипуляции.
- Цифровая подпись сгенерирована с помощью приватного ключа, не соответствующего предоставленному публичному ключу