Освоение блокчейна в кратчайшие сроки. Часть 2 — внедрение PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Быстрое освоение блокчейна, часть 2 - реализация

Пурбарьянди

В этой серии статей мы создадим упрощенную криптовалюту, основанную на простой реализации блокчейна в Golang, менее чем за 5 минут. вам нужно сначала установить golang, чтобы создать этот проект. для текстового редактора вы можете использовать что угодно, здесь я использую код Visual Studio.

Освоение блокчейна в кратчайшие сроки. Часть 2 — внедрение PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
источник: bitgrade

Вы установили его? Хорошо, давайте сделаем это!

если вы создали проект, создайте файл mайн.гоу. Хорошо, давайте напишем код, сначала мы начнем с main.go. Давайте начнем со структуры Block, которая является частью «блокчейна». В блокчейне это блоки, в которых хранится ценная информация. Например, биткойн блокирует транзакции хранилища, что составляет суть любой криптовалюты. Помимо этого, блок содержит некоторую техническую информацию, такую ​​как его версия, текущая временная метка и хэш предыдущего блока. В этой статье мы не собираемся реализовывать блок так, как он описан в спецификациях блокчейна или Биткойна, вместо этого мы будем использовать его упрощенную версию, которая содержит только важную информацию. Вот как это выглядит. здесь у нас есть структурный блок:

тип Блоковая структура {

Timestamp текущая временная метка (когда блок создан), transactions — это реальная ценная информация, содержащаяся в блоке, prevhas сохраняет хэш предыдущего блока и Hash это хеш блока. В спецификации Биткойн Timestamp, prevhashи Hash — это заголовки блоков, образующие отдельную структуру данных, и транзакции (transaction в нашем случае) — это отдельная структура данных. Поэтому мы смешиваем их здесь для простоты.

Итак, как нам рассчитать хэши? Способ расчета хешей — очень важная особенность блокчейна, и именно эта функция делает блокчейн безопасным. Дело в том, что вычисление хеша — это вычислительно сложная операция, она занимает некоторое время даже на быстрых компьютерах (именно поэтому люди покупают мощные графические процессоры для майнинга биткойнов). Это преднамеренный архитектурный дизайн, который затрудняет добавление новых блоков и предотвращает их модификацию после добавления. Мы обсудим и реализуем этот механизм в следующей статье.

На данный момент мы просто возьмем поля блоков, объединим их и вычислим хэш SHA-256 для объединенной комбинации. Давайте сделаем это в Newhash Метод:

func NewHash(время time.Time, транзакции []строка, предварительный хеш []байт) []байт {

Далее, следуя соглашению Golang, мы реализуем функцию, которая упростит создание блока и завершит работу:

func Blocks(транзакции []строка, предварительный хэш []байт) *Block {

продолжаем создавать функцию печати. функция печати полезна для печати содержимого каждого блока, выполняющего транзакцию. вот код:

func Print(блок *Блок) {

И функция транзакции для транзакции печати:

func Transaction(block *Block) {

после того, как все необходимые функции будут выполнены, мы будем использовать его в основной функции:

func main () {

окей, весь код мы закончили писать. давайте запустим его, набрав go run main.go в терминале. Выход :

Заключение

Мы создали очень простой прототип блокчейна: это просто массив блоков, каждый из которых связан с предыдущим. Однако реальный блокчейн гораздо сложнее. В нашем блокчейне добавление новых блоков происходит легко и быстро, но в реальном блокчейне добавление новых блоков требует некоторой работы: необходимо выполнить некоторые тяжелые вычисления, прежде чем получить разрешение на добавление блоков (этот механизм называется Proof-of-Work). Кроме того, блокчейн — это распределенная база данных, в которой нет единого лица, принимающего решения. Таким образом, новый блок должен быть подтвержден и одобрен другими участниками сети (этот механизм называется консенсусом). А в нашем блокчейне пока нет транзакций!

Source: https://medium.com/@purbaryandi/mastering-blockchain-in-no-time-part-2-implementation-433dc7967fe8?source=rss——cryptocurrency-5

Отметка времени:

Больше от Medium