Mempelajari blockchain pada awalnya akan mengakibatkan sedikit kebingungan. Blockchain salah satu teknologi dibalik pesat nya perkembangan Cryptocurrency di dunia. Pada dasarnya dalam aktifitas dibidang teknologi yang di lakukan adalah pengolahan data, dan dalam pengolahan data itu banyak sekali elemen - elemen didalamnya seperti dimana data itu di letakkan, bagaimana data itu di buat, bagaimana data itu di distribusikan dan yang lainnya.

Seperti yang kita ketahui pada saat ini setiap data yang kita olah itu tercentralisasi atau hanya di simpan dalam satu komputer saja yang biasa kita sebut server. Sistem yang sekarang ini berjalan memiliki banyak kekurangan salah satunya adalah keamanan data menjadi tidak maksimal karena data hanya berada pada satu tempat yang mana itu membuat data kita tidak bisa di validasi datanya. Yang lainya adalah permasalahan jika ada kegagalan sistem dari server maka akan membuat jaringan down jika kita tidak memiliki backup maka hilang lah sudah data yang kita miliki.

BLOCKCHAIN
Blockchain adalah sebuah teknologi yang dikenalkan bersama dengan Bitcoin oleh salah satu seorang atau kelompok yang menamakan dirinya Satoshi Nakamoto yang mana awalnya teknologi ini di gunakan untuk mencatat transaksi keuangan dari bitcoin. Simple nya blockchain adalah struktur data yang tidak dapat dirubah hanya bisa di tambahkan saja. Setiap data dari blockchain ini saling terhubung dimana kalau ada terjadi perubahan di salah satu block data maka akan berpengaruh terhadap data yang selanjutnya.

Dengan blockchain ini setiap transaksi dari bitcoin di simpan dalam sebuah Open Ledger ( Buku Besar ) yang di distribusikan ke dalam jaringan bitcoin. Setiap blockchain ini akan di bagikan copy datanya kepada setiap komputer yang terhubung pada jaringan tersebut. Pada setiap penambahan data akan ada pengecekan apakah datanya valid atau tidak yang biasanya proses ini disebut dengan mining atau di kenal dalam istilah lain Proof of work.

Terdapat beberapa element di dalam blockchain yaitu data Hash, Block& Proof of work. 

Hash
Hash adalah sebuah digital fingerprint atau identitas dari sebuah data digital. Sebgai contoh berikut ini :

String data = "Hello World";
log(data.hashCode());
// -862545276

Disini kita ketahui identitas digital dari object “Hello World” adalah -862545276.

Setiap data atau object digital pada data block tersebut akan di hash dengan algoritma SHA-256. Berikut ini contoh nya :

String data = "Hello World";
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] bytes = digest.digest(data.getBytes());
String hash = DatatypeConverter.printHexBinary(bytes).toLowerCase();
log(hash);
// a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e

Block
Blockchain sendiri adalah kumpulah dari beberapa data block yang mana data block ini adalah data dari transaksi yang kita buat. Atau kita bisa definisikan sendiri akan data didalam block ini. Yang mana dengan begini Blockchain ini tidak hanya bisa digunakan untuk mencatat transaksi keuangan saja. Didalam sebuah block ini pun nanti akan memiliki sebuah identitas digital yang selanjutnya akan kita hash. Hash disini adalah identitas data block yang kita enkripsi dengan algoritma SHA-256.

Data hash disini akan ada dua macam yaitu hash dari block itu sendiri dan hash dari block sebelumnya.

{
    "chain": [
        {
            "index": 0,
            "timestamp": "01/12/2017",
            "data": {
                "amaount": 0.000005RTC
            },
            "prevHash": "0",
            "hash": "bd53895e5f46d62330b1b6143df108bc91133faaf5b046b5ec3379c9a0246e59",
            "nonce": 0
        },
        {
            "index": 1,
            "timestamp": "02/12/2017",
            "data": {
                "amaount": 0.000012RTC
            },
            "prevHash": "bd53895e5f46d62330b1b6143df108bc91133faaf5b046b5ec3379c9a0246e59",
            "hash": "0000e814afc9e67c4e8d211ae495773bb8916f84f686642e08a6d42190e24a17",
            "nonce": 179487
        }
    ]
}

Pada contoh diatas kita memiliki dua data hash block yang mana jika berubah data yang pertama maka data hash block selanjutnya akan berubah juga yang mana ini adalah bentuk chain atau keterkaitan dari data blockchain ini.

Proof of work
Didalam proses penambahan data salah satu yang tidak dapat kita hindari adalah spamming dan ddos. Untuk itu kita perlu memvalidasi akan setiap data dari setiap block ini.

POW atau Proof of work adalah sebuah protocol yang di fungsikan untuk memvalidasi setiap data yang masuk yang berguna untuk mengatasi serangan spam dan serangan ddos.

POW yang biasa di pakai pada blockchain biasanya adalah dengan memastikan string "oooo" pada setiap hash data dari setiap block ini. Sebagai contoh adaalah berikut ini :

{
    "index": 1,
    "timestamp": "02/12/2017",
    "data": {
        "amaount": 4
    },
    "prevHash": "bd53895e5f46d62330b1b6143df108bc91133faaf5b046b5ec3379c9a0246e59",
    "hash": "8280412b62d1d5212e269c5f49aed1bd2481b2d00a7be407a7440505800e3eca",
    "nonce": 0
}

Kita ketahui pada data di atas data hash nya adalah "8280412b62d1d5212e269c5f49aed1bd2481b2d00a7be407a7440505800e3eca" yang mana disini data has tidak memiliki string "oooo".
Untuk itu kita perlu melakukan proses perhitungan untuk mendapatkan nilai hash yang berawalan "oooo" dengan merubah nilai nonce berikut ini adalah contoh fungsi untuk menghitung dari hash nya:

public Block mineBlock(){
   while (!setHash().substring(0, 2).equals("00")){
      this.nonce++;
   }
   return this;
}

Dengan begitu maka data yang akan masuk akan di validasi dulu apakah sudah mengandung persyaratan tersebut atau belum. Dengan begini maka akan sedikit memerlukan waktu untuk proses perhitungan nya.

{
    "index": 1,
    "timestamp": "02/12/2017",
    "data": {
        "amaount": 4
    },
    "prevHash": "bd53895e5f46d62330b1b6143df108bc91133faaf5b046b5ec3379c9a0246e59",
    "hash": "0000e814afc9e67c4e8d211ae495773bb8916f84f686642e08a6d42190e24a17",
    "nonce": 179487
}

Dari hasil perhitungan yang telah dilakukan maka disini ditemukan variable nonce 179487. Didalam dunia bitcoin proses ini disebut dengan mining atau menambang coin yang mana menemukan data nonce dari setiap block. Pada sistem bitcoin jika kita telah berhasil melakukan perhitungan.



Sumber: https://medium.com/@ocittwo/blockchain-apa-sih-73bb3d7f9b44



Explore Smarty