Belajar Blockchain

Apakah Alamat dalam Blockchain?

single-image

Alamat Blockchain adalah konsep penting pada cryptocurrency dan blockchain.

Pada masa awal Bitcoin, sangat memungkinkan untuk mengirim pembayaran pada alamat IP seperti 104.25.248.32 (blockgeeks.com). Hal ini ditujukan untuk menjadi metode paling nyaman untuk menggunakan Bitcoin tanpa berhubungan dengan public key dan alamat. Namun, setelah pengembang Bitcoin menyadari bahwa cara mengirimkan koin pada alamat IP dapat menjadi sasaran serangan man-in-the-middle, opsi tersebut dihilangkan dan dilupakan.

Anekdot Bitcoin tersebut sepertinya cukup masuk akal, dan menginformasikan apakah makna alamat dalam Bitcoin. Alamat menjadi spesial dan tetap, tempat placeholder menerima dan mengirim transaksi blockchain. Seperti alamat IBAN atau SWIFT.

Alamatnya sendiri tidak terlalu berpengaruh, begitu juga format alamatnya. Hal yang terpenting adalah alamat bertujuan untuk mengaktifkan pembayaran pada pihak terkait yang memiliki informasi unik. Biasanya berupa private key untuk mengakses dana. Alamat menjadi pengenal yang aman.

Ketika nomor SWIFT atau IBAN dikeluarkan oleh otoritas pusat seperti bank, alamat blockchain sudah tersedia. Setiap alamat blockchain kemungkinan sudah tersedia bahkan sebelum wallet ditemukan. Hal itu dikarenakan alamat blockchain merupakan hasil dari operasi matematika.

Public Key – Awal Generasi Alamat Blockchain Dimulai

Setelah pembayaran ke alamat IP tidak lagi dilakukan di Bitcoin, P2PKH menjadi format standar untuk alamat Bitcoin. Terlihat seperti ini:

1K31KZXjcochXpRhjH9g5MxFFTHPi2zEXb

Alamat P2PKH standar memiliki 34 karakter dan dimulai dengan angka 1. P2PKH adalah singkatan dari “Pay to Publik Key Hash“, artinya Anda membayar kepada hash dari public key. Untuk pemula, ini terdengar rumit. Mari merunut proses pembentukan alamat untuk mengerti artinya.

Setiap perangkat lunak wallet yang Anda gunakan bisa membuat alamat P2PKH, atau lebih tepatnya bisa mencari alamat sebanyak yang Anda inginkan. Alamat ini bukan istilah ilmiah tetapi kombinasi dari beberapa operasi kriptografi biasa.

Pertama, wallet Anda mengumpulkan entropi dan menggunakannya untuk menghasilkan private key ECDSA. ECDSA adalah algoritma kriptografi yang terdapat pada alamat Bitcoin. Ini merupakan algoritma asimetris tertanda, yang berarti Anda bisa menandai pesan dengan private key dan mengecek tanda dengan public key. Dengan ECDSA berarti Anda membuktikan bahwa hanya Anda pembuat pesan dengan menandainya. Maknanya sama dengan menandatangani sebuah kertas surat.

Setelah membuat private key dengan entropi, kemudian wallet menurunkan public key. Public key tercipta dari koordinasi acak pada kurva elips dan melakukan kalkulasi. Detilnya tidak begitu penting. Hal yang terpenting adalah public key ini yang Anda butuhkan untuk mengirim dan menarik pembayaran. Sebelumnya, public key digunakan untuk hanya menerima dana.

Tetapi tak lama konsepnya diperluas. Public key tidak hanya cukup panjang dan rumit, sekitar 65 karakter, tetapi juga bisa memicu kesalahan pengetikan. Selain itu, dengan membuka public key memiliki resiko jika ECDSA pernah rusak, misalnya disebabkan oleh komputasi kuantum. Ini alasan mengapa pengembang Bitcoin menciptakan metode untuk menurunkan alamat dari public key.

Membuat Alamat Blockchain Bitcoin

Untuk menciptakan alamat, wallet Anda menggunakan public key melalui algoritma kriptografi. Kurang lebih seperti ini yang terjadi:

Perangkat lunak melakukan hash function pada public key dengan SHA 256 dan hasilnya dengan RIPEMD-160. Kemudian menambahkan bytes 00 sebagai prefiks di awal string yang dihasilkan (ini kenapa alamat P2PKH dimulai dengan angka 1) dan 4 byte checksum di akhirnya. Empat byte checksum dihasilkan dengan hash function hasil selama dua kali dengan SHA 256 dan mengambil 4 byte pertama. Kemudian wallet Anda mengubah hasilnya menjadi string base58. Alamat Bitcoin pun tercipta.

Anda tidak perlu mengerti detil kriptografi. Hal yang terpenting adalah alamat mengubah public key menjadi lebih bisa dibaca dan menambahkan checksum yang mencegah Anda melakukan kesalahan pengetikan. Kapan pun Anda menempel alamat dalam wallet Bitcoin, wallet akan mengecek prefiks dan mengalkulasi checksum. Jika tidak cocok, wallet akan menolak alamat. Karenanya tidak bisa mengirim dana ke alamat yang salah karena kesalahan pengetikan.

Jika Anda memiliki private key untuk alamat, hanya Anda yang bisa menandai transaksi dengan token criptocurrency untuk mengesahkan alamat ini. Sementara, orang lain yang memiliki alamat Anda bisa mengecek validitas tanda yang Anda buat. Proses simpel ini–menandai transaksi, mengecek validitasnya–kurang lebih adalah yang dilakukan oleh transaksi cryptocurrency.

Tetapi Bitcoin memiliki alamat lanjutan: disebut dengan alamat P2SH, singkatan dari “Pay to Script Hash“. Artinya, Anda tidak perlu membayar kepada hash function dari public key, tetapi kepada hash function dari script. Untuk menandai transaksi Anda tidak perlu menyediakan tanda yang sesuai dengan public key, tetapi sebuah script yang sesuai dengan hash function. Jenis alamat ini memungkinkan lebih banyak metode fleksibel untuk mengecek sendiri, misalnya yang digunakan pada alamat multisign, yaitu terdapat dua pihak yang menyediakan informasi sejumlah script yang dibutuhkan. Alamat-alamat ini menggunakan prefiks 05, diawali dengan angka “3”.

Namun, dibutuhkan panduan lain untuk menjelaskan keunikan alamat P2SH. Saat ini akan difokuskan pada alamat lain: bagaimana cryptocurrency lain menciptakan alamat.

Alamat-alamat pada Cryptocoin Lainnya

Banyak cryptocurrency menggunakan format alamat yang sama dengan Bitcoin. Sebagai contoh, Litecoin, Dash, dan Dogecoin yang menerapkan prosedur kriptografi yang sama untuk menghasilkan alamat: ECDSA, SHA 256 dan RIPEMD 160.

Perbedaan utamanya adalah prefiks dari hash RIPEMD-160. Prefiks 00 pada Bitcoin menghasilkan alamat yang dimulai dengan angka “1”, Altcoin seperti Dash, Litecoin atau Dogecoin menggunakan prefiks lain sehingga alamat dimulai dengan huruf “L” (Litecoin), “X” (Dash) atau “D” (Dogecoin).

Namun koin-koin ini menggunakan algoritma kriptografik yang sama, Anda bisa menggunakan private key dan public key yang sama untuk menyimpan koin pada semua cryptocurrency. Anda juga bisa menyimpannya dalam alamat yang sama. Misalnya, Litecoin dan Bitcoin menggunakan prefiks yang sama untuk alamat P2SH (05) sehingga memungkinkan untuk menyimpan Bitcoin sebagai Litecoin di alamat yang sama.

Cryptocurrency lainnya menggunakan skema lain untuk menghasilkan alamat. Sebagai contoh, Monero berasal dari algoritma Cryptonote. Algoritma ini menyebarkan algoritma kriptografi tertanda lainnya untuk menghasilkan public key, EdDSA. Cryptocurrency yang menggunakan Cryptonote memiliki tanda ring, yang menyediakan keleluasaan pribadi karena Anda tidak bisa menentukan key dari transaksi yang ditandai. Untuk alasan ini, alamat Cryptonote harus memuat dua public key: key untuk view dan spend.

Seperti alamat Bitcoin, Cryptonote menambahkan byte prefiks dan melakukan hash function pada hasilnya. Namun, Cryptonote menggunakan Keccak-256 untuk menghasilkan empat byte checksum, yang ditambahkan di akhir string. Setelah mengubah hasil menjadi base58, Anda mendapatkan alamat final, yang lebih panjang dari Bitcoin. Terlihat seperti ini:

43ZZViHQKd42X7cajEtc6NUoxG4AvyMu3ZqpGTBP85uhEfYoPVAuGHxJcomMHEPp3NWiKJRUMnuAJ7dfBrPTcfjYMPJzz2a

Jenis alamat ini membuktikan bahwa alamat hanya cara untuk menerima pembayaran yang ditetapkan pada public key tertentu. Untuk base function ini, tidak masalah apa yang Anda lakukan dengan public key, algoritma kriptografi apa yang Anda terapkan untuk mengubahnya menjadi sebuah alamat, dan seperti apa bentuk alamatnya.

Prosedur pembentukan dari sebuah alamat bisa menjadi implikasi penting pada keamanan, privasi, dan kegunaan. Tanpa integrasi checksum, alamat Bitcoin bisa salah ketik. Sementara itu, tanpa integrasi dari view key pada alamat, Monero tidak lagi memiliki privasi. Ulasan tentang alamat Ethereum menjelaskan poin ini.

Alamat-alamat Ethereum

Seperti banyak hal pada cryptocurrency, topik alamat mulai menarik ketika berhubungan dengan Ethereum. Banyak orang yang mulai menggunakan Bitcoin kemudian mencoba Ethereum dan menjadi bingung dengan format alamat yang panjang, string heksadesimal dimulai dengan 0x. Sebagai contoh, “0x0eb81892540747ec60f1389ec734a2c0e5f9f735”.

Secara teknis, turunan alamat Ethereum mirip dengan alamat Bitcoin, tapi tidak keseluruhan. Anda mulai dengan private key dan menggunakan ECDSA untuk menghasilkan public key 64 byte. Seperti dari Bitcoin. Kemudian Anda melakukan hash function key tersebut dengan Keccak-256. Hasilnya adalah string 32-byte: 12 byte pertama dihilangkan, sementara 20 byte lainnya berupa 40 karakter alamat yang biasanya menambahkan prefiks 0x. Itu saja. Berbeda dari Bitcoin atau Cryptonote, Ethereum tidak mengubah alamat menjadi base58, hanya berupa heksadesimal (0-F).

Perbedaan lain antara Ethereum dan cryptocurrency lainnya adalah alamat Ethereum tidak memiliki checksum. String 40 karakter heksadesimal bisa menjadi alamat Ethereum. Itulah mengapa pengembang Ethereum melarang pengguna untuk mengetik alamat secara manual, karena salah mengetik satu karakter pun bisa membuat Anda kehilangan dana.

Dibandingkan dengan alamat-alamat dari cryptocurrency lainnya, alamat-alamat Ethereum terlihat belum selesai dan berbahaya bagi pengguna. Untuk cryptocurrency yang memiliki market value terbesar kedua dan dipromosikan sebagai cryptocurrency yang paling inovatif, hal ini sedikit mengecewakan.

Alasannya, ketika versi pertama Ethereum, Frontier, dirilis, tidak banyak yang memperhatikan. Alamat yang digunakan sampai saat ini tidak untuk digunakan secara permanen. Sejak awal, pengembang Ethereum bermaksud untuk membangun smart contract berdasarkan daftar nama, yang akan dipakai untuk pembayaran via nama atau domain. Dalam jangka panjang, dengan Ethereum, cryptocurrency bisa menghentikan pembayaran saat ini dan kembali menggunakan pembayaran Satoshi yang dimaksudkan ketika menerapkan Pay to IP.

Namun, sebagaimana ditekankan Jeff Coleman, seorang praktisi cryptocurrency, terdapat beberapa alasan mengapa Ethereum tidak menggunakan alamat seperti Bitcoin: para pengembang sepakat alamat Ethereum bisa diselesaikan dengan lebih baik. Ingat bahwa sebuah alamat hanya metode kriptografi mewakili informasi yang dibutuhkan untuk mengirimkan dana kepada private key. Ini bisa dilakukan dengan smart contract yang mengirimkan informasi tersebut kepada nama tertentu. Tetapi ini juga bisa dilakukan dengan format alamat yang lebih mutakhir daripada yang digunakan Bitcoin.

Format favorit bagi pengembang Ethereum saat ini adalah format ICAP, yang terlihat seperti ini:

E7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS

Seperti alamat Bitcoin, alamat tersebut menggunakan karakter base58 dan memasukkan checksum.

Tetapi bukan hanya itu. Format ICAP adalah International Bank Account Number (IBAN) yang valid. Itu berarti perangkat bank terkait bisa mengerti dan berinteraksi dengannya, seperti yang dijelaskan Coleman. IBAN adalah pengidentifikasi internasional dari akun klien di industri perbankan. IBAN terdiri dari 32 karakter alfanumerik insensitive, termasuk kode negara, checksum, nomor bank dan juga nomor rekening. ICAP menggunakan XE sebagai pengidentifikasi negara dan string dari 16 hingga 30 karakter alfanumerik yang terdiri dari informasi seperti akun, aset, checksum atau institusi.

Masih menurut Coleman: bagi yang lain, ICAP tidak harus menggunakan alamat heksadesimal. Alamat hanya berganti dengan menggunakan smart contract berdasarkan daftar nama yang bisa menggunakan nama yang bisa dibaca menjadi seperti “XE81ETHXREGJEFFCOLEMAN”, yang tetap sesuai dengan format bank tapi tetap mungkin untuk diingat. Dalam jangka panjang, alamat Ethereum bisa mudah diingat dan sesuai dengan sistem perbankan.

Dukungan untuk alamat ICAP saat itu sedang bertumbuh. Klien biasanya mengaktifkan alamat ICAP tapi tetap menggunakan alamat sebagai standar. Untuk membuatnya lebih aman, Vitalik Buterin mengembangkan kemajuan untuk menambah checksum dalam bentuk kapitalisasi. Dengan alamat yang dihasilkan EIP55, huruf besar dianggap sebagai checksum. Sehingga jika alamat memiliki setidaknya satu huruf besar, akan dianggap tidak valid, jika Anda salah mengetik.

STEEM – Ketika Username Adalah Alamat Anda

Cryptocurrency STEEM telah melakukan sistem seperti yang ingin dibuat oleh Ethereum. Dalam STEEM, username Anda adalah alamat wallet Anda.

STEEM adalah cryptocurrency berdasarkan konsep BitShares. Steem terhubung dengan platform sosial Steemit, di mana pengguna bisa melakukan ‘mine‘ koin Steem dengan mengumpulkan upvote untuk diposting. “Subjective proof or work” adalah kombinasi pintar dari Proof of Stake dan Proof of Work. Sistem sebagai keseluruhan bersifat kompleks, karena terdiri dari delegates yang dipilih untuk melakukan proof dan tiga bentuk dari token: STEEM, STEEM power dan STEEM Dollar. Karenanya sulit untuk mengakses jika STEEM bersifat central seperti Bitcoin dan Ethereum, sebagai bagian terbesar berdasarkan platform Steemit yang di-hosting dengan privat, yaitu klien utama dari Steem. Sepertinya tidak ada wallet lain yang tersedia.

Bagaimanapun, konsep alamat cukup menarik. Dengan cara yang lebih central, STEEM mengimplementasikan apa yang Ethereum lakukan dengan membangun smart contract berdasarkan daftar nama. Pengguna mendapatkan private key, yang akan digunakan untuk menandai transaksinya, seperti dengan cryptocurrency lainnya. Alamat bukanlah penurunan kriptografik dari private key, tetapi hanya seperti username dalam Steemit. Kemungkinan username terhubung dengan public key dalam database publik dalam Steemit, sehingga memungkinkan bagi tiap pengguna memvalidasi sebuah transaksi. Tetapi hal yang paling penting dalam validasi, hubungan antara public key dan alamat, bukan berdasarkan matematika melainkan kepercayaan pada platform Steemit.

Skema username yang berdasarkan alamat dari STEEM sangat menarik karena menyediakan kegunaan yang ideal. Tetapi sifatnya yang central dan terpercaya membuatnya tidak memadai bagi kebanyakan blockchain yang menggunakan cases, yang bertujuan untuk verifikasi central and mengganti kepercayaan dengan matematika. Setidaknya, sistem kekurangan transparansi.

Smart contract berdasarkan daftar nama, seperti Ethereum, menargetkan menjadi lebih baik dari blockchain dengan menggabungkan keduanya: sifat central dan tidak bisa dipercaya dari Bitcoin dengan kemudahan dari penggunaan alamat berdasarkan nama STEEM.

You may also like