Blockchain & Cryptocurrency (Part 3)

Blockchain

Apa Itu Blockchain ?

Kita mungkin telah mendengar banyak tentang bitcoin. Bitcoin adalah cryptocurrency pertama dan paling populer sejauh ini. Cryptocurrency sendiri adalah sebuah aplikasi yang dibuat dalam blockchain.

Berita terkait : Blockchain & Cryptocurrency (Part 2)

Di Bitcoin transaksi yang dikonfirmasi akan disimpan di dalam block. Block disatukan/dirantai bersama untuk membentuk sebuah rantai/chain. Miners mempunyai tugas untuk mengumpulkan transaksi, memvalidasi dan menempatkannya kedalam block baru, yang juga termasuk hash dari block terakhir pada chain/rantai.

Miners menyebarkan block baru tersebut ke jaringan blockchain. Block baru tersebut akan menjadi block terakhir pada chain/rantai, dan miners akan mengulang lagi tugas mereka untuk membuat block baru. Berikut adalah contoh pada bitcoin sistem.

Istilah “cryptocurrency” menjadi populer karena mereka yang terlibat membuat lebih banyak item pembayaran seperti bitcoin. Para pelaku bitcoin menyadari bahwa mereka dapat menggantikan transaksi #cryptocurrency dengan jenis data lain secara umum. Karena itulah istilah blockchain pun muncul.

Blockchain adalah database yang mengamankan penyimpanan berbagai jenis data dalam jaringan terdesentralisasi. Data pada blockchain disimpan di dalam block. Setiap block mempunyai hash dari block sebelumnya. Dengan hash tersebut akan mudah untuk mendeteksi jika ada perubahan.

Dalam blockchain miners/minters adalah orang yang membuat block baru dengan data yang disimpan di dalamnya. Dalam cryptocurrency bitcoin, data adalah transaksi. Block baru akan ditempatkan di atas block terakhir pada blockchain. Setiap block dalam blockchain (tidak termasuk block pertama, yang disebut genesis block), mempunyai hash block header dari block sebelumnya. Seperti sinkronisasi, semua orang dalam network akan memverifikasi block baru dan memutuskan apakah akan menerima atau menolak block baru tersebut.

20180817150216931496a4dc82a90fe239048c51a31c4e.

Singkatnya, blockchain membuat sistem yang mencegah data untuk dirubah. Jika Anda mengandalkan seseorang untuk melakukan pekerjaan ini, orang itu mungkin tidak akan bekerja seperti harapan Anda. Jadi ide blockchain adalah untuk menggunakan jaringan P2P dan membiarkan semua orang melakukan pekerjaan/hal yang sama dengan cara yang sama. Setiap orang seharusnya mendapat hasil yang diharapkan sama. Sehingga jika seseorang melakukan kecurangan, hasilnya akan berbeda dengan mayoritas. Alhasil mayoritas dalam jaringan tidak akan menerima hasil yang berbeda itu. Itulah bagaimana blockchain mencegah data dirubah. Blockchain dibangun melalui kepercayaan “mayoritas pasti benar.”

Blockchain didefinisikan dengan sekumpulan block yang dihubungkan bersama melalui beberapa fungsi, contoh paling sederhana blockchain dapat dibuat dengan :

  • Elemen yang diperlukan :
    • File teks :  file_i  for i={1,2,3…}
    • Fungsi yang menghubungkan adalah fungsi fingerprint (fungsi hash)
    • Protokol di atas yang akan menafsirkan basis data ini dengan cara yang benar
  • Membuat block selanjutnya :
    • Block dibuat dari block hash sebelumnya (ini yang disebut penghubung rantai) dan data.
    • Kedua hal ini akan membuat hash baru yang akan ditaruh dalam block selanjutnya.

Hal yang terpenting adalah jika membuat block, block harus terdiri dari : 

  • Block hash saat ini
  • Block data 

Berikut adalah struktur pada torrent.

Dalam torrent, tidak ada penghubung antara block, karena itu tidak ada protokol blockchain. Harus ada objek untuk dibagikan oleh jaringan P2P, jika Anda membuatnya seperti ini maka anda akan mempunyai database standar, dan hash- nya hanya untuk memeriksa kebenaran data.

Seperti yang Anda lihat di sini, blockchain dapat didefinisikan dengan atau tanpa jaringan, anonimitas (SHA), enkripsi / dekripsi (EEC), sebuah ledger tanpa fungsi atau protokol lain yang digunakan. 

Konsep yang digunakan dalam cryptocurrency Bitcoin :

1.    WALLET : Sistem yang memungkinkan pengguna untuk melakukan transaksi. Hal tersebut yang dilakukan oleh wallet, yang terdiri dari key pair, mekanisme pembuatan key dan signing data (transaksi, pesan).

  • Secret key adalah sebuah nomor acak, yang dapat dihasilkan melalui random generator, atau pengguna bisa memilih nomor acak sendiri. Cara lain pengguna dapat membuat melalui frasa sandi. Dengan memilih nomor acak dalam interval dari 0 sampai 2256-1.
  • Public key dihasilkan dengan menggunakan elliptic encryption di mana secret key adalah jumlah fungsi doting. (Lihatlah bagian 1.7.1 untuk informasi lebih lanjut).
  • Signature adalah ketika kita mengenkripsi data kita dengan secret key melalui algoritma Diffie-Hellman dan kita mengenkripsi data kita ke dalam signature. Ketika kita menandatangani pesan, setiap byte dienkripsi dengan sendirinya.
  • Dekripsi dilakukan dengan menggunakan public key dan signature.

2. TRANSAKSI : Kita perlu mengetahui sistem transaksi yang jelas dan mudah dipahami. Terdapat nomor identifikasi transaksi dan kita menetapkan nomor unik untuk setiap transaksi yang dilakukan dan menyimpannya dalam ledger bitcoin.

Contoh 1 : Jika Alice mengirim 1 bitcoin ke Frank, untuk membuat transaksi ini, kita memerlukan semua informasi berikut :

  1.     Kita perlu tahu asal usul uang, yaitu id unspent transaction (Transaksi yang tidak terpakai).
  2.     Kita membutuhkan address Alice dan Frank.
  3.     Kita perlu tahu jumlah yang dikirim (1 BTC).
  4.     Kita perlu tahu saldo saat ini yang dimiliki Alice (73BTC).

Transaksi kita akan menjadi seperti berikut : 

  • Id Unspent  transaction : 654321
  • Alice -> KE : -> Frank => 1 BTC
    Alice -> KE : -> Alice => (73 – 1) BTC = 72BTC


Id transaksi saat ini : 123456

Contoh Transaksi : https://blockchain.info/tx/b657e22827039461a9493ede7bdf55b01579254c1630b0bfc9185ec564fc05ab?format=json

Setiap transaksi yang dibuat akan disebarkan ke jaringan, kita ingin memasukkannya ke dalam ledger, karena tidak ada entitas pusat untuk memverifikasi history, sehingga setiap node     perlu mengontrol data. Ide ini didapat dari bank; mereka menggunakan sistem transaksi pengindeksan yang sama dengan memberikan nomor seri untuk membuat pelacakan lebih efektif.

3. ANONIM : Bitcoin menggunakan ECDSA (Elliptic Curve Digital Signature Algorithm) untuk menghasilkan kerahasiaannya, public key dan untuk menandatangani transaksi (enkripsi) melalui algoritma Diffie-Hellman. Dalam sistem sebelumnya, ini mirip dengan kata sandi, nama pengguna, dan skema Enkripsi.

4. MINER : Miner memiliki tugas membuat block, ini dilakukanmelakukannya dengan menempatkan transaksi dalam block dan hashing hasilnyahasil hashing. Protokol Bitcoin menjaga laju penyebaran satu block setiap 10 menit dan membuatnya dalam periode waktu yang konstan. Alasan utama mengapa laju tidak konstan adalah karena miner, mereka bekerja pada probabilitas dan akan disebarkan dalam periode “acak” dalam waktu 10 menit dan satu lagi alasan yang kurang signifikan adalah keterlambatan jaringan karena setiap block harus disebarkan ke seluruh sistem. Tingkat penyebaran diatur oleh difficulty number (nomor kesulitan). Semakin banyak penambang bergabung dengan jaringan yang berarti semakin banyak kekuatan hashing dalam jaringan bitcoin. Bitcoin memiliki cara untuk mengurangi tingkat pembuatan block, itu akan menstabilkan sistem dengan mengubah kesulitan dalam interval reguler 2016 block. Unit daya hashing didefinisikan sebagai (NumbeHashes)/(second)= TH/s. WorldHashRate saat ini adalah 45 000 000 TH/s.  Setiap miner membuat block yang bervariasi 

  • Nonce (232values dari 32 bits). 
  • Merkle Tree Root (2256 values dari 256 bits).
  • TimeStamp (jumlah detik yang sudah berlalu sejak 1.1.1970 oleh UNIX time) kita membutuhkan kurang dari 1024 (210 values dari 10 bits).

5. DATA BLOCKCHAIN : Setiap node harus menyimpan dan memverifikasi seluruh ledger yang terdiri dari catatan lengkap semua transaksi, semua meta data, dan semua block. Ledger adalah struktur tempat Anda menyimpan semua data transaksi untuk mencegah segala jenis manipulasi. Sebagai bagian dari jaringan P2P, setiap node juga akan melayani “server” untuk membagikan data ini ke peer baru lainnya. Kketika transaksi terjadi, misal Alice mengirim ke Frank 10 koin, untuk melakukan ini Alice akan mengumumkan transaksi ke jaringan, semua node dalam jaringan akan mengambil transaksi dan memverifikasinya menggunakan reedeem Skrip (scriptSig/Unlocking Script scriptPubKey/Locking Script). Pengguna lain memperbarui catatan mereka sesuai dan semua orang melacak jumlah bitcoin yang dimiliki masing-masing individu. Jika Alice mencoba double spending pada Frank dan Charlie, maka sistem akan menolak transaksi.

6. Jaringan P2P diambil sebagai gagasan dari sistem Torrent karena tidak ingin adanyamemiliki server pusat, meskipun saat memulai pertama kali, server DNS yang dikenal dengan node bitcoin digunakan. Seseorang dapat meminta IP publik kepada temannya maka koneksi akan dibuat dan lebih banyak alamat dan salinan blockchain akan dibagikan.

7. Ada aturan konsensus yang dapat memecahkan fork jaringan dan mencegah kemungkinan serangan:

    Aturan utama konsensus dibuat sesuai dengan PoW :

  •     Dengan kesulitan “valid”.
  •     Mengambil rantai terpanjang.
  •     Dengan timestamp paling awal.

Rantai yang memiliki kombinasi terbaik dari ketiga parameter ini akan menjadi rantai utama.

Aturan konsensus telah ditingkatkan melalui:

  • BIP9-memperbolehkan soft fork, 
  • BIP68- transaksi time lock yang berarti transaksi tidak dapat di mining (nLockTime), BIP113 improvement dari BIP68 menggunakan waktu median 11 block terakhir. 
  • Segregated witness didefinisikan dengan menggunakan : BIP141, BIP143 and BIP147.

Semua parameter konsensus didefinisikan pada :  https://github.com/bitcoin/bitcoin/blob/master/src/consensus/params.h

Ini dilakukan agar pembuatan block menjadi mahal. Penambang diharuskan untuk menyerahkan bukti bahwa mereka sudah menghabiskan sumber daya untuk membuat block, dan saat kesulitan ditingkatkan itu untuk mencegah penyerang. Penyerang mana pun yang mungkin akan berpikir dua kali sebelum menghabiskan waktu, uang, dan energi untuk proses verifikasi ini.

Dengan menggunakan tujuh definisi ini, kita dapat membuat basis untuk bitcoin.

Selain itu, Bitcoin menggunakan fungsi hash kriptografi yang disebut SHA-256 untuk mengimplementasikan skema Proof-of-Work. Fungsi hash menerima input dan secara deterministik membuat output dengan ukuran tetap 32 byte (64 digit heksadesimal).

Fungsi hash kriptografis dirancang untuk keamanan dokumen fingerprint dan satu arah :

  • Untuk input data yang diberikan akan memberikan satu hash output (setiap perubahan kecil dalam data input sepenuhnya mengubah output)
  • Sangat penting untuk memperhatikan bahwa untuk satu output hash akan ada banyak data yang dapat menghasilkannya meskipun proses pembuatannya sangat menuntut komputasi.

Ringkasan : Block dan Blockchain Bitcoin

Block berisi data. Block terdiri dari block data dan block header. Block header meliputi:

  1. Timestamp
  2. Penghubung block sebelumnya. kecuali genesis block.
  3. Nonce
  4. Bits yang meng kompresi angka target.
  5. Versi
  6. Merkle tree root fingerprint semua transaksi termasuk block.

Jika ada perubahan pada enam parameter ini tanpa secara bersamaan mengubah block hash dapat membatalkan block.

Block terhubung ke blockchain melalui fungsi hashing dalam bitcoin via SHA256. Setiap perubahan hash block yang sudah menjadi bagian dari rantai bahkan jika perubahan dilakukan sedemikian rupa sehingga block yang diubah menjadi valid, dan sebagai akibat dari perubahan hash block itu berubah. Menempatkan block ini ke dalam blockchain akan membatalkan semua block yang mengikutinya, ini akan memastikan bahwa semua block untuk tujuan yang sama tidak dapat diubah.

sumber : https://www.dicoding.com/academies/92/tutorials/2267?from=2279