Освоєння Blockchain за короткий час, частина 2 — впровадження PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Освоєння блокчейну в найкоротші терміни, частина 2 — впровадження

Пурбарянді

У цій серії статей ми створимо спрощену криптовалюту на основі простої реалізації блокчейну в Golang менш ніж за 5 хвилин. вам потрібно спочатку встановити golang, щоб створити цей проект. для текстового редактора можна використовувати що завгодно, тут я використовую код Visual Studio.

Освоєння Blockchain за короткий час, частина 2 — впровадження PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
джерело: bitdegree

Ви його встановили? Гаразд, давайте зробимо це!

якщо ви створили проект, створіть файл main.go . Добре, давайте код, спочатку ми почнемо з main.go. Почнемо з частини struct Block «блокчейну». У блокчейні це блоки, які зберігають цінну інформацію. Наприклад, блоки біткойн зберігають транзакції, суть будь-якої криптовалюти. Крім цього, блок містить деяку технічну інформацію, як-от його версія, поточна позначка часу та хеш попереднього блоку. У цій статті ми не збираємося впроваджувати блок, як це описано в специфікаціях блокчейну або біткойна, натомість ми використовуватимемо його спрощену версію, яка містить лише важливу інформацію. Ось як це виглядає. тут у нас є структурний блок:

type Block struct {

Timestamp це поточна позначка часу (коли блок створюється), transactions це фактично цінна інформація, що міститься в блоці, prevhas зберігає хеш попереднього блоку, і Hash це хеш блоку. У специфікації Bitcoin Timestamp, prevhash та Hash це заголовки блоків, які утворюють окрему структуру даних, і транзакції (transaction у нашому випадку) є окремою структурою даних. Тому ми змішуємо їх тут для простоти.

Отже, як ми обчислюємо хеші? Спосіб обчислення хешів є дуже важливою особливістю блокчейну, і саме ця функція робить блокчейн безпечним. Річ у тім, що розрахунок хешу є обчислювально складною операцією, вона займає деякий час навіть на швидких комп’ютерах (ось чому люди купують потужні графічні процесори для майнінгу біткойнів). Це навмисна архітектурна конструкція, яка ускладнює додавання нових блоків, таким чином запобігаючи їх модифікації після додавання. Ми обговоримо та запровадимо цей механізм у наступній статті.

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

func NewHash(time time.Time, transactions []string, prevhash []byte) []byte {

Далі, дотримуючись конвенції Golang, ми реалізуємо функцію, яка спростить створення блоку та завершить:

func Blocks(transactions []string, prevhash []byte) *Block {

продовжуємо створювати функцію друку. функція друку корисна для друку вмісту кожного блоку, який виконує транзакцію. ось код:

func Print(block *Block) {

І функція транзакції для транзакції друку:

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