Coinvestasi Telegram Group Coinvestasi Telegaram Channel

Cryptoeconomic Bagian Satu: Crypto

Aulia Medina     Tuesday, October 23 2018

Developer Ethereum, Vlad Zamfir, berpendapat bahwa cryptoeconomic adalah:

“Disiplin ilmu yang mempelajari banyak protokol yang menentukan produksi, distribusi, dan konsumsi barang dan jasa dalam ekonomi digital terdesentralisasi. Cryptoeconomic merupakan ilmu praktis yang fokus akan desain dan karakteristik dari protokol-protokol tersebut.”

Teknologi blockchain berjalan pada prinsip cryptoeconomic.

Cryptoeconomic berasal dari dua kata: crytography dan ekonomi. Orang-orang cenderung melupakan unsur ‘ekonomi’ dari persamaan ini, padahal bagian ini yang memberikan blockchain kemampuan unik. Blockchain bukan yang pertama menggunakan sistem peer-to-peer desentralisasi, situs torrent sudah menggunakannya sejak lama untuk berbagi dokumen. Namun, itu terbilang gagal.

Mengapa berbagi dokumen peer-to-peer gagal?

Dalam sistem torrent, siapapun bisa membagi dokumen mereka dengan network desentralisasi. Idenya adalah orang-orang akan mengunduh dan mengirim atau membagi dokumen dengan network agar bisa diunduh orang lain. Masalahnya, ini bekerja dalam sistem. Jika Anda mengundur dokumen, Anda diharapkan untuk bisa seed. Namun tidak semua pengguna kembali melakukan seed. Tanpa insentif ekonomi, tidak masuk akal bagi orang-orang untuk tetap melakukan seed sebuah dokumen yang mengambil space yang tidak perlu dalam komputer mereka.

Satoshi Nakamoto dan teknologi blockchain

Pada Oktober 2008, sebuah pihak tidak dikenal yang menamakan diri Satoshi Nakamoto merilis paper yang mendasari pembuatan bitcoin. Ini mengguncang komunitas online, kali pertamanya kita memiliki model untuk semua yang berbasis cryptoeconomic. Cara ini berbeda dari sistem desentralisasi p2p sebelumnya. Orang-orang bisa memiliki insentif ekonomi untuk “mengikuti aturan”. Tetapi lebih dari itu, keunikan teknologi blockchain terlihat dari bagaimana ini menggagalkan permasalahan Jenderal Byzantine untuk membuat sistem konsensus yang sempurna.

Pengaturan cryptoeconomic akan Bitcoin

Apa saja pengaturan dari cryptocurrency seperti Bitcoin memiliki hasil dari cryptoeconomic?

  • Ini berbasis teknologi blockchain di mana tiap block memiliki hash dari block sebelumnya dan membentuk chain yang berkelanjutan.
  • Tiap block memiliki transaksi.
  • Block-block akan memiliki tujuan untuk berubah berdasarkan transaksi. Misalnya jika A memiliki 50 bitcoin dan ingin mengirim 20 bitcoin pada B. Karenanya, harus dibuktikan bahwa A kemudian memiliki sisa 30 bitcoin dan B memiliki 20 bitcoin baru.
  • Blockchain harus bersifat kekal, harus memungkinkan untuk menambah block baru namun block lama tidak bisa diubah.
  • Hanya transaksi valid harus diizinkan.
  • Blockchain harus bisa diunduh dan siapa pun di mana pun bisa mengakses dengan mudah dan mengecek transaksi tertentu.
  • Transaksi harus bisa ditambahkan dengan cepat pada blockchain jika biaya transaksi cukup tinggi telah dibayarkan.

Terdapat dua dasar dari cryptoeconomic seperti namanya:

  • Cryptography, dan
  • Ekonomi.

Mari bahas satu per satu karakter uniknya.

Cryptography

Teknologi blockchain menggunakan fungsi cryptographic untuk operasinya. Fungsi utamanya dalam blockchain adalah:

  • Hashing
  • Signatures
  • Proof of work
  • Zero Knowledge Proofs

Hashing

Dalam istilah sederhana, hashing berarti mengambil input string dari berapa pun length-nya dan memberikan output dari length tetap. Bitcoin menggunakan SHA-256 untuk mengambil input string dari length dan memberikan output 256 bits. Apa aplikasinya dari hashing dalam cryptocurrency?

  • Fungsi hash cryptographic
  • Struktur data
  • Mining

Fungsi hash cryptographic

Fungsi hash cryptographic memiliki pengaturan sebagai berikut:

  • Deterministik: Sebuah input A yang selalu memilki outpus sama h(A) berapa kali pun Anda melakukan parse melalui fungsi hash yang sama.
  • Perhitungan cepat: Sebuah fungsi yang akan mengembalikan hash dari input dengan cepat.
  • Resistansi pre-image: Memberikan h(A), yang merupakan output dari fungsi hash, kelayakan untuk menentukan input A.
  • Resistansi kolisi: Memberikan dua input A dan B dan output hash h(A) dan h(B) yang layak untuk h(A) = h(B).
  • Perubahan kecil: dalam input harus secara drastis mempengaruhi output dari fungsi hash.
  • Puzzle friendly: Untuk tiap output Y dan input X dari hash. Ini harus bisa mencari value k, yang menghasilkan h(k|x) = Y.

Fungsi hash cryptographic membantu keamanan dan mining dalam blockchain.

Struktur Data

Dua struktur data yang penting dalam pemahaman akan blockchain adalah Linked List dan Hash Pointer. Linked List merupakan kumpulan block dari data yang terhubung satu sama lain. Ini merupakan contoh dari Linked List:

contoh linked list coinvestasi

Tiap block dalam daftar ini menunjukkan block lain melalui pointer.

  • Pointer adalah variabel yang terdiri dari variabel lainnya. Karenanya, mereka termasuk variabel yang menunjuk ke arah variabel lain.
  • Hash pointer secara istilah adalah pointer yang tidak hanya memiliki alamat dari variabel lain tetapi juga fungsi hash dari data dalam variabel tersebut. Bagaimana ini membantu dalam konteks blockchain?

Ini adalah bagaimana blockchain terlihat:

blockchain looks like coinvestasi

Blockchain pada dasarnya merupakan sebuah linked list di mana tiap block memiliki hash pointer yang menunjuk pada block sebelumnya dan fungsi hash dari semua data di dalamnya. Hanya properti ini mengarah pada satu kualitas blockchain yang terbaik: kekekalannya.

Bagaimana Blockchain Bersifat Kekal?

Misalnya dalam diagram di atas, seseorang mencoba mengubah data dalam block 1. Ingat bahwa satu dari pengaturan fungsi hash dalam cryptographic adalah perubahan sedikit dalam input data akan mengubah keseluruhan hash output.

Karena jika seseorang mencoba mengubah data dalam block 1 walau sedikit saja, itu akan mengubah hash yang disimpan dalam block 2. Ini menghasilkan perubahan dalam block 2 yang juga mengubah hask di block 3 yang terus berlanjut hingga bagian akhir dari blockchain. Hal ini juga akan membekukan chain, yang tidak mungkin, karena chain bersifat tamper-proof.

Tiap block juga memiliki Merkle Root masing-masing. Saat ini, tiap block memiliki banyak transaksi. Jika transaksi disimpan secara linear, ini tidak praktis untuk melalui semua transaksi hanya untuk mencari satu pihak tertentu.

Karenanya kita menggunakan Merkle Tree.

merkle tree coinvestasi

Dalam Merkle Tree, semua transaksi individu disaring menjadi satu root lewat hashing. Dan ini membuat traversal lebih mudah. Karenanya, jika seseorang mengakses data tertentu dalam block, mereka bisa melakukan traverse menggunakan hash dalam Merkle tree untuk mendapatkan data.

Mining

Crypto-puzzle digunakan untuk mining block baru dan karenanya hashing juga sangat penting. Caranya bekerja adalah dengan mengatur tingkat kesulitan. Setelahnya, string random yang disebut nonce ditambahkan pada hash dari block baru lalu kembali melakukan hash. Kemudian sistem mengecek apakah hash sesuai dengan tingkat kesulitan atau tidak. Jika sesuai, block baru ditambahkan pada chain dan reward diberikan pada miner. Jika tidak sesuai, miner tetap mengubah nonce dan menunggu hingga value bisa kurang dari tingkat kesulitan.

Karena itu, hashing menjadi bagian penting dari blockchain dan cryptoeconomic.

Signature

Satu dari perangkat cryptography yang paling penting digunakan pada cryptocurrency adalah konsep signature. Apakah signature dalam real life dan bagaimana pengaturannya? Bayangkan sebuah kertas yang Anda tandai dengan tanda tangan Anda. Lalu apa dan bagaimana manfaat signature?

  • Memberikan verifikasi. Signature mampu memverifikasi apakah Anda benar-benar menandai kertas.
  • Tidak dapat dipalsukan. Tidak ada yang bisa memalsukan dan menyalin signature Anda.
  • Tidak akan disangkal. Jika Anda telah menandai sesuatu dengan signature Anda, lalu Anda tidak bisa mengambilnya kembali atau klaim bahwa bukan Anda yang menandainya.
  • Dalam real world, betapa rumitnya sebuah signature menggunakan bantuan visual sederhana, ini tidak efisien dan tidak dapat diandalkan.

Cryptography memberikan solusi menggunakan konsep public key dan private key. Mari lihat bagaimana dua key ini bekerja dan bagaimana mereka menjalankan sistem cryptocurrency. Misalnya ada dua orang, Alan dan Tyrone. Alan ingin mengirim data yang sangat penting dan Tyrone perlu membuktikan bahwa data benar-benar berasal dari Alan. Cara yang akan mereka lakukan adalah dengan menggunakan public key dan private key Alan.

Satu catatan penting: tidak mudah menentukan public key dari private key seseorang. Public key adalah milik publik seperti namanya, dan siapa pun dapat memiliki kunci itu. Sebaliknya, private key tidak boleh Anda bagikan dengan orang lain.

Mari kembali pada kasus Alan dan Tyrone, jika mereka bertukar pesan menggunakan key, bagaimana caranya?

private key public key blockchain

Verifikasi: Jika pesan terenkripsi telah terdekripsi menggunakan public key Alan, lalu diverifikasi 100% bahwa Alan adalah pengirim pesan.

Tidak dapat dipalsukan: Jika orang lain menahan pesan dan mengirim pesannya dengan private key sendiri, public key Alan tidak akan mendekripsi. Public key Alan hanya bisa mendekripsi pesan yang terenkripsi dengan private key-nya.

Tidak dapat disangkal: Sama halnya jika Alan mengatakan tidak mengirim pesan tersebut namun Tyrone bisa mendekripsi pesan menggunakan public key Alan. Ini menunjukkan Alan berbohong. Karenanya dia tidak bisa mengambil kembali pesan yang dikirim dan menyalahkan orang lain.

Aplikasi dalam cryptocurrency: Ketika Alan mengirim transaksi “m” pada Tyrone, dia akan melakukan hash transaksi menggunakan fungsi hash. Kemudian mengenkripsi menggunakan private key. Tyrone mengetahui bahwa dia akan mendapatkan transaksi “m” sehingga dia bisa mendekripsi pesan menggunakan public key Alan dan membandingkan hash dari hasil dekripsi dengan hash transaksi “m” yang dia miliki. Fungsi hash sangat akurat dan selalu memberikan output yang sama dengan input. Tyrone bisa dengan mudah menentukan apakah Alan benar-benar mengirim transaksi yang sama, tidak ada kesempatan malpraktik.

Proof of Work

Ketika miner melakukan aktivitas mining untuk membentuk block baru dan menambahkannya pada blockchain, sistem konsensus yang menyetujui block ditambahkan disebut “proof-of-work”. Miner menggunakan komputer untuk menyelesaikan puzzle cryptography pada tingkat kesulitan yang berbeda. Ini adalah satu dari mekanisme pemecah-jalan dalam teknologi blockchain. Sebelumnya, sistem mata uang digital terdesentralisasi peer-to-peer seringkali gagal karena “Masalah Jenderal-Jenderal Byzantine”. Sistem konsensus proof-of-work akhirnya menyediakan solusi pada masalah ini.

Apakah Masalah Jenderal-Jenderal Byzantine?

generals byzantine problem

.Bayangkan terdapat sekumpulan jenderal Byzantine dan mereka akan menyerang sebuah kota. Mereka menghadapi dua masalah utama:

  • Lokasi para jenderal dan pasukannya sangat jauh sehingga tidak mungkin menjangkau otoritas sentral, sehingga membuat serang terkoordinasi cukup sulit.
  • Kota tersebut memiliki banyak tentara dan satu-satunya cara mereka bisa menang adalah dengan menyerang langsung.

Agar koordinasi berhasil, para tentara di bagian kiri kastil mengirim pesan pada tentara di bagian kanan kastil dengan pesan yang berbunyi: “SERANG HARI RABU.” Namun, tentara di bagian kanan belum siap untuk menyerang dan mengatakan: “TIDAK. SERANG HARI JUMAT” dan mengirim kembali pesan melalui kota pada tentara di sebelah kiri. Ini ketika kita menghadapi masalah. Banyak hal bisa terjadi pada pengirim pesan. Dia bisa ditangkap, ditahan, dibunuh dan digantikan dengan pembawa pesan lainnya. Ini mengarah pada perubahan informasi yang juga menjadikan serangan tidak terkoordinasi dan kalah.

Ini merujuk pada blockchain dengan baik. Chain adalah network yang besar; bagaimana Anda bisa percaya? Jika Anda mengirimkan seseorang 4 ETH dari wallet, bagaimana Anda tahu dengan pasti bahwa orang dalam network tidak akan mengubah 4 menjadi 40 ETH?

Satoshi Nakamoto mampu memberikan solusi pada masalah Jenderal-Jenderal Byzantine dengan menemukan protokol proof-of-work. Ini caranya. Misalnya tentara di sebelah kiri ingin mengirim pesan berbunyi “SERANG HARI SENIN” pada tentara di sebelah kanan, mereka akan mengikuti langkah-langkah berikut:

  • Pertama, mereka akan menambahkan “nonce” pada teks asli. Nonce bisa value heksadesimal acak.
  • Kemudian, mereka melakukan hash pada teks untuk membagi pesan yang, dalam hashing, memberikan hasil dimulai dengan 5 nol.
  • Jika kondisi hash sesuai, mereka akan mengirim messenger dengan hash dari pesan. Jika tidak, mereka akan tetap mengubah value dari nonce secara acak sampai mereka mendapatkan hasil yang diinginkan. Cara ini menghabiskan waktu dan tenaga komputer.
  • Jika pengirim pesan ditangkap dan pesan diubah, berdasarkan pengaturan fungsi hash, hash sendiri tidak akan diubah secara drastis.
  • Jika para jenderal di sebelah kanan melihat pesan yang di-hash tidak dimulai dengan 5 nol, mereka akan membatalkan serangan.

Namun, tetap ada kemungkinan celah.

Tidak ada fungsi hash yang 100% bebas kolisi. Bagaimana jika kota mendapatkan pesan, mengubah pesan dan juga mengubah nonce sampai mereka mendapatkan hasil diinginkan yang memiliki jumlah 5 nol? Ini sangat menghabiskan waktu, tetapi tetap mungkin. Untuk melawannya, jenderal akan menggunakan kekuatan dalam angka.

Bukan satu jenderal di sebelah kiri yang mengirim pesan pada satu jenderal di sebelah kanan. Terdapat tiga jenderal di sebelah kiri yang mengirim pesan pada sejumlah jenderal di sebelah kanan. Untuk melakukannya, mereka membuat pesan masing-masing lalu hash pesan kumulatif kemudian menambahkan nonce pada hash hasilnya lalu hash kembali. Kali ini, mereka ingin pesan dimulai dengan enam 0.

Jelas ini sangat menghabiskan waktu. Tetapi jika pembawa pesan itu tertangkap, jumlah waktu yang mereka gunakan untuk mengutak-atik pesan kumulatif dan kemudian menemukan nonce yang sesuai untuk hash akan jauh lebih banyak. Bahkan bisa menghabiskan bertahun-tahun. Karenanya, daripada mengirim satu pembawa pesan, para jenderal akan mengirim banyak pembawa pesan. Ketika kota tersebut sedang melalui proses komputasi, mereka akan diserang dan dihabiskan.

Para jenderal di sebelah kanan cukup mudah. Mereka hanya harus menerima pesan dengan nonce yang benar yang diberikan pada mereka, hash, dan melihat apakah hash sesuai atau tidak. Hashing string sangat mudah dilakukan. Ini adalah proses di belakang proof-of-work.

Proses pencarian nonce untuk target hash yang sesuai sangat sulit dan menghabiskan waktu. Namun, proses pengecekan hasil untuk melihat tidak ada malpraktik seharusnya sederhana.

Zero Knowledge Proof

Apa itu Zero Knowledge Proof (ZKP)? ZKP dasarnya adalah ketika A bisa membuktikan pada B bahwa A memiliki knowledge dari informasi tanpa mengatakan secara spesifik. Dalam contoh ini, A adalah prover, dan B adalah verifier. Dalam cryptography, ini sangat berguna karena membantu membuktikan layer ekstra dari privasi.

Agar ZKP bisa bekerja, dia membutuhkan parameter tertentu yang sesuai:

  • Komplit: Jika pernyataan benar, verifier bisa diyakinkan oleh prover.
  • Kekuatan: Jika prover tidak benar, mereka tidak bisa meyakinkan verifier dari pernyataan bohong.
  • Zero knowledge: Jika pernyataan benar, verifier tidak tahu isi pernyataan.Misalnya, ZKP dari Alibaba, mari lihat bagaimana caranya bekerja. Dalam contoh ini, prover (P) mengatakan pada verifier (V) bahwa mereka mengetahui password dari pintu rahasia dan mereka ingin membuktikannya pada verifier tanpa password. Terlihat seperti ini:

Prover bisa melalui jalur A dan B, anggap prover memutuskan untuk melalui jalur A dan mencapai pintu rahasia di belakang. Saat itu, verifier V muncul di jalan masuk, tanpa mengetahui jalur mana yang dilalui prover dan memutuskan bahwa verifier ingin melihat apakah prover muncul dari jalur B.

Dalam diagram, prover tidak muncul di jalur B. Tapi apakah hanya ketidakberuntungan? Bagaimana jika prover tidak mengetahui passcode dan mengambil jalur B, lalu terjebak di pintu kemudian verifier memberitahu untuk melewati jalur B, yang seharusnya dilalui?

Jadi untuk mengetes validitas, eksprerimen dilakukan berkali-kali. Jika prover bisa muncul di jalur yang tepat setiap saat, ini membuktikan pada verifier bahwa prover mengetahui password walaupun verifier tidak mengetahui password sebenarnya.

Apa itu Aplikasi ZKP pada blockchain?

Banyak teknologi blockchain menggunakan Zk-Snarks. Bahkan Ethereum dalam fase Metropolis berencana membawa kembali Zk-Snarks. Zk-Snarks merupakan singkatan dari Zero-Knowledge Succinct Non-Interactive Argument of Knowledge dan ini membuktikan fakta komputasi mengenai data tanpa mengungkat data itu sendiri.

Mereka bisa digunakan untuk menghasilkan bukti pernyataan untuk verifikasi tiap transaksi dengan mengambil foto tiap transaksi yang cukup untuk pembuktian pada penerima bahwa transaksi dilakukan tanpa mengungkap transaksi tersebut.

  • Hal ini akan memperoleh dua hal:
    Integritas dan privasi dari transaksi tetap dipertahankan.
  • Dengan tidak mengungkap cara kerja dari keseluruhan transaksi, sistem mempertahankan abstraksi yang membuatnya semakin mudah digunakan.

Inilah beberapa fungsi cryptography penting yang digunakan oleh blockchain. Selanjutnya akan dibahas pada Cryptoeconomy Bagian Dua – Ekonomi.