Kaira Milani Fitria
Blockchain adalah catatan digital yang mencatat setiap transaksi yang tersebar di banyak komputer (node). Dengan adanya blockchain, maka transaksi bisa diproses tanpa melibatkan pihak ketiga atau organisasi khusus. Sehingga blockchain sangat efisien dan efektif. Pada portofolio ini, akan dilakukan percobaan membuat blockchain dengan menggunakan bahasa GO (Golang).
Blockchain yang dibuat ini akan memiliki informasi transaksi meliputi orang yang membeli buku, sehingga akan ada sebuah "struct" dengan nama "book" yang memiliki informasi "ID", "Title", "Author", "Publish Date", "ISBN". Jadi semua informasi ada dalam sebuah struct "book" yang merupakan independent struct di blockchain ini.
Ketika buku ini dibeli, berarti seseorang yang disebut "user" yang membeli buku tersebut dan dia memiliki tanggal checkout yang berbeda. Kemudian kita membuat suatu entity yang disebut "Book Checkout" yang secara basic akan menyimpan informasi transaksi yang mungkin bisa kita simpan di blockchain. "Book Checkout" akan menginformasikan data "user", "checkout date", dan "IsGenesis". "IsGenesis" diperlukan karena dalam suatu blockchain, blok pertama merupakan blok genesis, jadi kita akan memastikan bahwa telah dibuat dulu genesis block sebelum mulai membuat blok blockchain lainnya. Itu sebabnya, kita ingin memeriksa apakah blocknya genesis atau tidak, dimana field ini akan selalu ada disetiap block, dan bernilai benar atau salah.
Block yang dihasilkan dapat memiliki banyak informasi, blok informasi yang paling penting akan menjadi data transaksi, yang terdiri dari beberapa informasi mengenai orang yang membeli buku, karena kita akan memliki informasi "user" dan "checkout date" serta yang lainnya.
Informasi data transaksi "book" akan terus berada diseluruh blockchainnya. Blockchain ini memiliki beberapa block, dan semuanya terhubung. Sehingga, posisi letak block yang terhubung dengan seluruh blockchain ada pada gambar ini :
Functional Planning :
Ketika ada buku baru masuk, lalu informasi ID buku didapatkan. Pertama-tama kita harus memiliki blok yang pada dasarnya menulis blok (write block) ke blockchain, untuk menulis blok ke blockchain kita harus menambahkan blok (add block) tersebut. Untuk menambahkan blok kita harus membuat blok (create block). Setelah membuat blok, kita perlu memvalidasi blok. Kemudian setiap blok akan memiliki hash, jadi kita perlu membuat fungsi hash dan memvalidasinya.
Pemrograman dilakukan dengan menggunakan Visual Studio Code (vs code). Tahap pertama yang dilakukan adalah membuat module yang saya beri nama go.mod :
Kemudian menuliskan kode di file main.go, dan fungsi utama untuk generate blockchain :
membuat struct sesuai dengan data yang sudah ditentukan :
function untuk generate new book :
function untuk generate write block saat ada book checkout :
cek validity block dengan code :
function untuk create block :
function untuk generate hash :
genesis block dan validity untuk new block :
function untuk get blockchain :
menjalankan kode di terminal dengan menulis “go run main.go” :
test dengan postman :
Dokumentasi :
github : https://github.com/kairamilanifitria/blockchain/tree/main/A-Blockchain-With-Golang