Comments 19
Замечательно все. Но зачем для того, чтобы запомнить значение пульса, городить такой огород? Нельзя ли это в json класть или в ближайшее?
-11
поправьте "медЕцине" в конце статьи, пожалуйста.
-1
В половине мест BPM, в другой BMP.
На последнем скриншоте у первого блока нет PrevHash
На последнем скриншоте у первого блока нет PrevHash
0
Уже который о счету тутор про «пишем блокчейн в *** строчек кода на ***» и всегда в конце приписка, мол «а про сетевое взаимодействие в следующих частях» и привет. Как правило следующие части так и остаются обещаниями.
Понятное дело, что это перевод и претензий к переводчику нет никаких, но все же. Не менее интересна реализация децентрализации.
ЗЫ.
А почему нет плашки перевод?
Понятное дело, что это перевод и претензий к переводчику нет никаких, но все же. Не менее интересна реализация децентрализации.
ЗЫ.
А почему нет плашки перевод?
+1
Что-то не совсем понятно на счёт решения коллизий. Ну выбрали мы более длинную цепь, я так понимаю объединили в общую цепь. А что делать с более короткой? Куда девается она? Отбрасывается в мусор? Как быть с индексами при объединении цепей? Они же не будут совпадать с порядком индексов общей цепи.
0
По моему данный пример наглядно иллюстрирует тотальное непонимание системы блокчейн и того, зачем она нужна. В приведенном примере полностью отсутствует майнинг, который как раз гарантирует защиту децентрализованный данных при помощи PoW. Какой смысл хранить последовательные блоки, хранящие хеш предыдущего, если в такой системе можно обновить случайный блок в цепи, а потом за секунду перехешировать всю цепочку? Чем это вообще лучше обычной реляционной БД, которая уже готова, и которая предоставляет уровень «защиты от подтасовки» ровно такой же, то есть нулевой?
0
Да, вы правы. Авторы статьи хотели простыми словами объяснить, что такое блокчейн. А сетевое взаимодействие будет в последующих постах.
0
Как мне кажется PoW так же мало что гарантирует (но может я и ошибаюсь).
Да, каждый блок подписан «красивым хэшем», на который нужно потратить усилия.
Проблема в том, что у первых блоков не требовался «сильно красивый хэш».
У первых блоков в цепочке, защита (difficulty) была хороша на тот момент времени, когда они создавались. Иными словами, первые блоки чейна посчитанные на CPU пересчитать нынешними асик майнерами — плевое дело. Единственная но существенная проблема как изменить и пересчитать скажем только первые N блоков и потом присоединить измененные начальные блоки к последующим неизмененным (которые все труднее и труднее пересчитывать)?
Далее с течением времени производительность вычислителей скорее всего будет расти.
То что сейчас невозможно быстро пересчитать будет возможно пересчитать через некоторое время.
Да, каждый блок подписан «красивым хэшем», на который нужно потратить усилия.
Проблема в том, что у первых блоков не требовался «сильно красивый хэш».
У первых блоков в цепочке, защита (difficulty) была хороша на тот момент времени, когда они создавались. Иными словами, первые блоки чейна посчитанные на CPU пересчитать нынешними асик майнерами — плевое дело. Единственная но существенная проблема как изменить и пересчитать скажем только первые N блоков и потом присоединить измененные начальные блоки к последующим неизмененным (которые все труднее и труднее пересчитывать)?
Далее с течением времени производительность вычислителей скорее всего будет расти.
То что сейчас невозможно быстро пересчитать будет возможно пересчитать через некоторое время.
0
Если появится принципиально новый вычислитель с мощностью более 51% всей мощности сети, и он не будет задействован в майнинге, то тогда блокчейну конец. Получится переподписать всю историю с самого начала и создать альтернативную историю. Но тут *скорее всего* сыграет роль огромное количество пользователей блокчейна, которые быстро используют тот же вычислитель в целях майнинга, и тогда такой проблемы не будет.
С точки зрения того, чтобы взять и переделать первые блоки, а потом «приклеить» их к новым, это маловероятно, пока не обнаружена уязвимость в sha256, которая позволить делать прогнозируемые коллизии (но если она будет обнаружена сломается сразу весь механизм PoW, и блокчейну опять конец). Потому что если такая возможность будет, тогда можно будет и новые блоки модифицировать так, чтобы их не перемайнивать заново. Более того «векселя» в блокчейне имеют строго определенный формат, и вероятность того, что незначительное изменение в «векселе» позволит получить хеш-коллизию близка к нулю. Такую коллизию скорее более вероятно получить на целой цепочке ранних блоков, но получается, что нужно будет переподписать раннюю цепочку миллиарды раз, чтобы получить коллизию и «приклеиться» к новым блокам.
С точки зрения того, чтобы взять и переделать первые блоки, а потом «приклеить» их к новым, это маловероятно, пока не обнаружена уязвимость в sha256, которая позволить делать прогнозируемые коллизии (но если она будет обнаружена сломается сразу весь механизм PoW, и блокчейну опять конец). Потому что если такая возможность будет, тогда можно будет и новые блоки модифицировать так, чтобы их не перемайнивать заново. Более того «векселя» в блокчейне имеют строго определенный формат, и вероятность того, что незначительное изменение в «векселе» позволит получить хеш-коллизию близка к нулю. Такую коллизию скорее более вероятно получить на целой цепочке ранних блоков, но получается, что нужно будет переподписать раннюю цепочку миллиарды раз, чтобы получить коллизию и «приклеиться» к новым блокам.
0
А как у вас Chain interface связан с функциями getBlock, getBlock и др? У вас функции сами по себе, а интерфейс сам по себе… это как минимум странно.
0
UFO just landed and posted this here
Мне кажется, или в функции isBlockValid повторно вычисленных хэш должен совпадать с уже сгенереным?
"if calculateHash(newBlock) = newBlock.Hash "
0
---
+1
Sign up to leave a comment.
Написание blockchain менее чем за 200 строк кода на Go