Menjadi Pengembang Bitcoin: Basic 101
Dalam panduan ini kita akan mengeksplorasi apa yang diperlukan untuk menjadi pengembang bitcoin. Faktanya adalah bahwa ” bitcoin” dan ” teknologi b lockchain ” secara umum adalah topik terpanas di dunia saat ini. Nilai 1 BTC telah meroket selama beberapa bulan terakhir (pada saat penulisan):
Apa yang diperlukan untuk menjadi pengembang bitcoin?
Dalam panduan ini kami akan menjawab pertanyaan itu
Jadi, apa itu bitcoin?
Bitcoin adalah mata uang digital yang dikonseptualisasikan pada tahun 2009 oleh Satoshi Nakamoto yang misterius. Ini adalah mata uang digital terdesentralisasi yang bekerja dalam sistem peer-to-peer, memanfaatkan teknologi blockchain. Jika Anda ingin menjadi pengembang bitcoin maka hal pertama yang perlu Anda lakukan adalah membaca Bitcoin Whitepaper oleh Satoshi Nakamoto.
Papan tulis itu adalah bacaan penting bagi siapa saja yang ingin masuk ke dalam game blockchain. Buku putih itu tidak hanya mengkonseptualisasikan bitcoin, tetapi juga membuat kami melihat bagaimana sistem toleran kesalahan Bizantium dapat berfungsi dalam lingkungan yang terdesentralisasi.
Jika Anda ingin menjadi Pengembang Bitcoin, maka penting bagi Anda untuk mengetahui cara kerja blockchain.
Apa itu Blockchain?
Blockchain adalah rantai blok di mana setiap blok berisi data bernilai tanpa pengawasan pusat. Secara kriptografis aman dan tidak berubah. Blockchain menggunakan dua struktur data penting: Pointer dan Linked Linked.
Pointer
Pointer adalah variabel dalam pemrograman yang menyimpan alamat variabel lain. Biasanya variabel normal dalam bahasa pemrograman menyimpan data.
Misalnya. int a = 10, berarti ada variabel “a” yang menyimpan nilai integer. Dalam hal ini, ia menyimpan nilai integer yaitu 10. Ini adalah variabel normal.
Pointer, bagaimanapun, bukannya menyimpan nilai akan menyimpan alamat variabel lain. Itulah sebabnya mereka disebut pointer, karena mereka secara harfiah menunjuk ke lokasi variabel lain.
Daftar Tertaut
Daftar tertaut adalah salah satu item paling penting dalam struktur data. Seperti inilah daftar tertaut:
Ini adalah urutan blok, masing-masing berisi data yang ditautkan ke blok berikutnya melalui pointer. Variabel pointer, dalam hal ini, berisi alamat node berikutnya di dalamnya dan karenanya koneksi dibuat. Node terakhir, seperti yang Anda lihat, memiliki pointer nol yang berarti bahwa pointer tidak memiliki nilai.
Satu hal penting yang perlu diperhatikan di sini, pointer di dalam setiap blok berisi alamat dari blok berikutnya. Itulah bagaimana pointing dicapai. Sekarang Anda mungkin bertanya apa artinya itu untuk blok pertama dalam daftar? Di mana penunjuk tetap blok pertama?
Blok pertama disebut “blok genesis” dan penunjuknya terletak pada sistem itu sendiri. Ini terlihat seperti ini:
Jika Anda bertanya-tanya apa artinya “hash pointer”, itu adalah pointer yang berisi hash dari blok sebelumnya.
Seperti yang mungkin sudah Anda duga sekarang, berdasarkan struktur blokchain ini. Rantai blok pada dasarnya adalah daftar tertaut dan terlihat seperti ini:
Blockchain adalah daftar tertaut yang berisi data dan pointer hash yang menunjuk ke blok sebelumnya, sehingga menciptakan rantai. Apa itu hash pointer? Sebuah pointer hash mirip dengan sebuah pointer, tetapi bukan hanya berisi alamat dari blok sebelumnya tetapi juga berisi hash dari data di dalam blok sebelumnya. Tweak kecil yang satu ini, yang membuat blockchains sangat bisa diandalkan dan trailblazing.
Bayangkan ini sebentar, seorang hacker menyerang blok 3 dan mencoba mengubah data. Karena sifat fungsi hash, sedikit perubahan dalam data akan mengubah hash secara drastis. Ini berarti bahwa setiap perubahan kecil yang dibuat di blok 3, akan mengubah hash yang disimpan di blok 2, sekarang pada gilirannya akan mengubah data dan hash blok 2 yang akan menghasilkan perubahan di blok 1 dan seterusnya dan seterusnya . Ini sepenuhnya akan mengubah rantai, yang tidak mungkin. Inilah tepatnya bagaimana blockchain mencapai keabadian.
Jadi seperti apa tampilan header blok?
Header blok berisi:
- Versi: Nomor versi blokir.
- Waktu: cap waktu saat ini.
- Target sulit saat ini.
- Hash dari blok sebelumnya.
- Nonce (lebih lanjut tentang ini nanti).
- Hash dari Merkle Root.
Apa itu penambangan?
“Menambang” adalah cara Anda menghasilkan bitcoin baru. Penambangan bekerja berdasarkan prinsip “bukti kerja” . Bukti kerja, pada dasarnya berarti ini: Memecahkan masalah pasti sangat sulit, tetapi begitu Anda menyelesaikannya, membuktikan bahwa solusinya benar harus sederhana.
Kita akan melihat bagaimana bitcoin dan sebagian besar cryptocurrency menggunakannya nanti. Tetapi untuk saat ini, kita harus memahami MENGAPA bukti kerja diperlukan di tempat pertama.
Salah satu dari banyak masalah yang dihadapi Nakamoto adalah mengatasi Masalah Jenderal Bizantium. Setiap sistem mata uang digital terdesentralisasi peer-to-peer gagal karena gagal menjawab Masalah Jenderal Bizantium. Nakamoto akhirnya bisa menjawab ini dengan bukti kerja.
Jadi, apa Masalah Jenderal Bizantium?
Ok jadi bayangkan ada sekelompok jenderal Bizantium dan mereka ingin menyerang kota. Mereka menghadapi dua masalah yang sangat berbeda:
- Para jendral dan pasukan mereka sangat berjauhan sehingga otoritas terpusat tidak mungkin, yang membuat serangan terkoordinasi sangat sulit.
- Kota ini memiliki pasukan besar dan satu-satunya cara mereka bisa menang adalah jika mereka semua menyerang sekaligus.
Untuk membuat koordinasi yang sukses, pasukan di sebelah kiri kastil mengirim seorang utusan ke pasukan di sebelah kanan kastil dengan pesan yang bertuliskan “SERANGAN RABU.” Namun, anggap pasukan di sebelah kanan tidak siap untuk serangan itu. dan berkata, “TIDAK. ATTACK FRIDAY ”dan kirim kembali utusan melalui kota kembali ke pasukan di sebelah kiri.
Di sinilah kita menghadapi masalah.
Sejumlah hal dapat terjadi pada kurir yang malang. Dia bisa ditangkap, dikompromikan, dibunuh dan digantikan dengan kurir lain oleh kota. Ini akan menyebabkan pasukan mendapatkan informasi yang dirusak yang dapat mengakibatkan serangan dan kekalahan yang tidak terkoordinasi.
Ini juga memiliki referensi yang jelas untuk blockchain. Rantai adalah jaringan besar; bagaimana Anda bisa mempercayai mereka? Jika Anda mengirim seseorang 4 Ether dari dompet Anda, bagaimana Anda tahu pasti bahwa seseorang di jaringan tidak akan merusaknya dan mengubah 4 menjadi 40 Ether?
Satoshi Nakamoto dapat mem-bypass masalah Jenderal Bizantium dengan menciptakan bukti protokol kerja. Begini Cara kerjanya. Misalkan tentara di sebelah kiri ingin mengirim pesan yang disebut “SERANGAN SENIN” ke tentara di sebelah kanan, mereka akan mengikuti langkah-langkah tertentu.
- Pertama, mereka akan menambahkan “nonce” ke teks asli. Nonce dapat berupa nilai heksadesimal acak.
- Setelah itu, mereka menambahkan teks yang ditambahkan dengan nonce dan melihat hasilnya. Misalkan, secara hipotesis, tentara telah memutuskan untuk hanya berbagi pesan yang, pada hashing, memberikan hasil yang dimulai dengan 5 nol.
- Jika kondisi hash terpenuhi, mereka akan mengirim utusan dengan hash pesan. Jika tidak, maka mereka akan terus mengubah nilai nonce secara acak sampai mereka mendapatkan hasil yang diinginkan. Tindakan ini sangat membosankan dan memakan waktu serta membutuhkan banyak daya komputasi.
- Jika kurir tertangkap oleh kota dan pesan dirusak, menurut sifat fungsi hash, hash itu sendiri akan berubah secara drastis. Jika para jenderal di sisi kanan, melihat bahwa pesan hash tidak dimulai dengan jumlah yang diperlukan 0s maka mereka dapat dengan mudah membatalkan serangan.
Namun, ada kemungkinan celah.
Tidak ada fungsi hash yang 100% bebas benturan. Resistensi tabrakan berarti ini: Diberikan dua input A dan B yang berbeda di mana H (A) dan H (B) adalah hash masing-masing, tidak mungkin H (A) sama dengan H (B). Apa artinya itu adalah bahwa sebagian besar, setiap input akan memiliki hash uniknya sendiri. Namun, dalam praktiknya, tidak ada fungsi hash yang 100% bebas benturan.
Jadi bagaimana jika kota mendapatkan pesan, mengutak-atiknya dan kemudian mengubah angka sampai mereka mendapatkan hasil yang diinginkan yang memiliki jumlah 0s yang diperlukan? Ini akan sangat memakan waktu tetapi masih mungkin. Untuk mengatasi ini, para jenderal akan menggunakan kekuatan dalam jumlah.
Misalkan, alih-alih hanya satu jenderal di sebelah kiri mengirim pesan ke satu jenderal di sebelah kanan, ada 3 jenderal di sebelah kiri yang harus mengirim pesan ke yang di sebelah kanan. Untuk melakukan itu, mereka dapat membuat pesan mereka sendiri dan kemudian hash pesan kumulatif dan kemudian menambahkan angka ke hash yang dihasilkan dan hash lagi. Kali ini, mereka menginginkan pesan yang dimulai dengan enam 0s.
Jelas, ini akan sangat memakan waktu, tetapi kali ini, jika kurir tertangkap oleh kota, jumlah waktu yang mereka perlukan untuk merusak pesan kumulatif dan kemudian menemukan nilai yang sesuai untuk hash akan jauh lebih. Bahkan mungkin butuh bertahun-tahun. Jadi, mis. jika alih-alih satu utusan, para jenderal mengirim banyak utusan, pada saat kota ini bahkan setengah jalan dari proses perhitungan mereka akan diserang dan dihancurkan.
Para jendral di sebelah kanan sudah cukup mudah. Yang harus mereka lakukan adalah menambahkan pesan dengan notce yang benar yang akan diberikan kepada mereka, hash mereka, dan melihat apakah hash cocok atau tidak. Hashing string sangat mudah dilakukan. Pada intinya itu adalah proses di balik pembuktian kerja.
- Proses di balik menemukan nonce untuk target hash yang sesuai harus sangat sulit dan memakan waktu.
- Namun, proses pengecekan hasil untuk melihat apakah tidak ada malpraktek yang dilakukan harus sangat sederhana.
Jadi, begitulah cara penambang dalam bitcoin menerapkan bukti kerja untuk melakukan penambangan mereka.
Mereka menggunakan kekuatan komputasi mereka untuk menambang blok dengan memecahkan teka-teki kriptografi. Satu blok dalam bitcoin ditambang setiap 10 menit.
Bagaimana cara kerja transaksi di Bitcoin?
Sebelum kita melanjutkan, teriakan besar untuk Profesor Donald J Patterson dan saluran Youtube-nya “djp3” untuk penjelasannya.
Misalkan Alice ingin mengirim sejumlah bitcoin kepada Bob. Bagaimana cara kerja sistem transaksi dalam Bitcoin? Transaksi bitcoin sangat berbeda dari transaksi dompet Fiat. Jika Alice memberikan $ 2 kepada Bob, ia secara fisik akan mengambil 2 dolar dari dompetnya dan memberikannya kepada Bob. Namun, hal-hal tidak berfungsi seperti itu di Bitcoin. Anda tidak memiliki Bitcoin secara fisik, apa yang Anda miliki adalah bukti bahwa Anda memiliki Bitcoin.
Ada dua hal lagi yang perlu Anda ketahui:
- Para penambang memvalidasi transaksi Anda dengan memasukkan data ke dalam tambang yang telah mereka blokir. Sebagai imbalan dari memberikan layanan ini mereka membebankan biaya transaksi.
- Ketika datang ke mata uang FIAT, Anda tidak benar-benar melacak bagaimana dan dari mana Anda mendapatkan catatan spesifik itu. Misalnya. Buka dompet Anda sekarang dan keluarkan semua uang kertas dan koin di dalamnya. Bisakah Anda tahu dari mana tepatnya Anda mendapatkan masing-masing dan setiap uang kertas dan koin tertentu? Kemungkinannya adalah Anda tidak. Namun, dalam bitcoin, sejarah setiap transaksi bitcoin tunggal dicatat.
Ok, jadi sekarang mari kita selami bagaimana transaksi bitcoin antara Alice dan Bob berlangsung. Ada dua sisi untuk transaksi, Input dan Output. Seluruh Transaksi ini akan memiliki nama yang akan kami temukan pada akhirnya. Untuk sekarang, mari kita lihat dinamika.
Input Transaksi
Untuk mewujudkan transaksi ini, Alice perlu mendapatkan bitcoin yang telah ia terima dari berbagai transaksi sebelumnya. Ingat, seperti yang kami katakan sebelumnya, dalam bitcoin, setiap koin dicatat melalui riwayat transaksi.
Jadi, misalkan Alice perlu menarik bitcoin dari transaksi berikut yang akan kami beri nama TX (0), TX (1) dan TX (2). Ketiga transaksi ini akan ditambahkan bersama-sama dan itu akan memberi Anda transaksi input yang kami sebut TX (Input).
Secara diagram, akan terlihat seperti ini:
Jadi, dari sisi input, mari kita lihat seperti apa sisi output.
Output Transaksi
Keluaran pada dasarnya akan memiliki jumlah bitcoin yang akan dimiliki Bob setelah transaksi dan sisa perubahan yang tersisa, yang kemudian dikirim kembali ke Alice. Perubahan ini kemudian menjadi nilai inputnya untuk semua transaksi di masa depan.
Representasi bergambar sisi keluaran terlihat seperti ini:
Sekarang, ini adalah transaksi yang sangat sederhana yang hanya memiliki satu output (terlepas dari PERUBAHAN), ada transaksi yang dimungkinkan dengan beberapa output. Beginilah tata letak dasar transaksi itu. Agar semua ini dapat dilalui, bagaimanapun, kondisi tertentu harus dipenuhi.
Ketentuan suatu transaksi
- TX (Input)> TX (output). Transaksi input harus selalu lebih besar daripada transaksi output. Dalam setiap transaksi defisit antara input dan output (output + perubahan) adalah biaya transaksi yang dikumpulkan oleh penambang. Jadi: Biaya transaksi = TX (Input) – (TX (output) + Ubah).
- Di sisi input: TX (0) + TX (1) + TX (2) = TX (Input). Jika Alice tidak memiliki dana yang diperlukan untuk melakukan transaksi maka para penambang hanya akan menolak transaksi.
- Bob harus menunjukkan bahwa ia dapat memberikan bukti yang diperlukan untuk mendapatkan bitcoin. Alice akan mengunci transaksi dengan alamat publik Bob. Dia perlu membuat kunci pribadinya untuk membuka kunci transaksi dan mendapatkan akses ke biayanya.
- Alice juga perlu memverifikasi bahwa dia memiliki hak yang diperlukan untuk mengirim bitcoin sejak awal. Cara dia melakukan itu adalah dengan menandatangani transaksi dengan tanda tangan digitalnya (alias kunci pribadinya). Siapa pun dapat memecahkan kode ini dengan menggunakan kunci publiknya dan memverifikasi bahwa memang Alice yang mengirim data. Bukti ini disebut “data tanda tangan”. Ingat ini karena ini akan sangat penting nantinya.
Jadi, apa yang akan menjadi nama seluruh transaksi ini?
Input (termasuk data tanda tangan) dan data output ditambahkan bersama-sama dan di-hash menggunakan algoritma hashing SHA 256. Hash keluaran adalah nama yang diberikan untuk transaksi ini.
Kode detail transaksi
Inilah bentuk transaksi dalam bentuk kode alias bentuk skrip. Misalkan Alice ingin mengirim 0,0015 BTC ke Bob dan untuk melakukannya, ia mengirim input yang bernilai 0,0015770 BTC. Seperti inilah detail transaksi:
Hal pertama yang Anda lihat:
Adalah nama Transaction alias hash dari nilai input dan output.
Vin_sz adalah jumlah data input, karena Alice mengirim data hanya menggunakan salah satu dari transaksi sebelumnya, itu adalah 1.
Vout_sz adalah 2 karena satu-satunya output adalah Bob dan perubahannya.
Lihat input data? Alice hanya menggunakan satu transaksi input (dalam contoh yang kami berikan di atas, ini akan menjadi TX (0)), ini adalah alasan mengapa vin_sz adalah 1.
- Di bawah data input adalah data tanda tangannya.
- Di bawah semua ini adalah data keluaran:
Bagian pertama dari data menandakan bahwa Bob mendapatkan 0,0015 BTC.
Bagian kedua menandakan bahwa 0,00005120 BTC adalah apa yang Alice dapatkan sebagai perubahan.
Sekarang, ingat bahwa data input keluar adalah 0,0015770 BTC? Ini lebih besar dari (0,0015 + 0,00005120). Defisit dari kedua nilai ini adalah biaya transaksi yang dikumpulkan para penambang.
Sebelum kita melanjutkan, mari kita bahas jenis transaksi khusus yang disebut transaksi Coinbase. Ini pada dasarnya adalah data transaksi pertama yang ada di blok, dan itu menandakan imbalan penambangan yang didapat penambang saat menambang blok. Sampai sekarang hadiahnya adalah 12,5 BTC. Transaksi ini tidak memiliki data input dan mereka hanya memiliki data output.
Satu hal yang perlu Anda ingat, transaksi dalam Bitcoin dilakukan jika dan hanya jika penambang, yang telah menambang blok, secara fisik menempatkan transaksi Anda di dalam blok. Seorang penambang dapat menjadi diktator sementara dari blok yang telah mereka ranjau. Mereka dapat membebankan biaya transaksi untuk setiap transaksi yang mereka masukkan ke dalam blok.
Karena jumlah transaksi meningkat dengan pesat, tingkat di mana blok diisi juga meningkat. Lebih sering daripada tidak, orang benar-benar harus menunggu sampai blok baru dibuat sehingga transaksi mereka akan melalui. Ini menciptakan tumpukan transaksi, pada kenyataannya satu-satunya cara untuk mendapatkan prioritas transaksi Anda adalah dengan membayar biaya transaksi yang cukup tinggi untuk menarik dan memberi insentif kepada para penambang untuk memprioritaskan transaksi Anda.
Ini memperkenalkan sistem “ganti dengan biaya”. Pada dasarnya, ini cara kerjanya. Misalkan Alice mengirim 5 bitcoin ke Bob, tetapi transaksi tidak berjalan karena jaminan simpanan. Dia tidak bisa “menghapus” transaksi karena bitcoin yang pernah dihabiskan tidak akan pernah kembali. Namun, ia dapat melakukan transaksi lain 5 bitcoin dengan Bob tetapi kali ini dengan biaya transaksi yang cukup tinggi untuk memberi insentif kepada para penambang. Saat para penambang meletakkan transaksinya di blok, itu juga akan menimpa transaksi sebelumnya dan menjadikannya batal demi hukum.
Pengembang Bitcoin: Memprogram Dalam Bitcoin
The original Bitcoin Core dikodekan oleh Satoshi Nakamoto menggunakan C ++ .
Sebelum kita mulai, mari kita periksa beberapa tantangan yang dihadapi oleh pengembang blockchain. Membuat dan memelihara blockchain publik tidak mudah karena sejumlah alasan.
(Sebelum kita melanjutkan, sebuah teriakan besar untuk David Schwartz untuk alamat utamanya mengenai penggunaan C ++ dalam pengembangan perangkat lunak blockchain di CPPCON 2016.)
- Alasan # 1: Keamanan
Blockchains, seperti yang dikatakan David Schwartz, seharusnya berupa benteng. Pertama, kode bersifat publik dan terbuka untuk dilihat semua orang. Siapa pun dapat melihat kode dan memeriksa bug dan kerentanan. Namun, tidak seperti sumber daya kode terbuka lainnya, kelemahan menemukan kerentanan pada kode blockchain sangat besar. Setiap programmer dapat meretas masuk dan melarikan diri dengan potensi jutaan dan jutaan dolar. Karena masalah keamanan yang sah ini, pengembangan pada blockchain biasanya sangat lambat.
- Alasan # 2: Manajemen Sumber Daya
Penting untuk mengimbangi jaringan. Anda tidak dapat jatuh terlalu jauh di belakang dan tidak mengikuti semua tuntutan jaringan. Anda harus diperlengkapi dengan baik untuk menangani permintaan jarak jauh dan lokal.
- Alasan # 3: Kinerja
Blockchain harus selalu tampil dengan kemampuan setinggi mungkin, tetapi untuk itu terjadi bahasa yang dipilih harus sangat fleksibel. Masalahnya adalah bahwa ada tugas-tugas tertentu di blockchain yang dapat diparalelkan sementara ada beberapa tugas yang tidak dapat dilakukan secara paralel.
Contoh yang baik dari tugas “paralel” adalah verifikasi tanda tangan digital. Yang Anda butuhkan untuk verifikasi tanda tangan adalah kunci, transaksi, dan tanda tangan. Dengan hanya tiga data, Anda dapat melakukan verifikasi secara paralel.
Namun, tidak semua fungsi pada blockchain harus dilakukan dengan cara itu. Pikirkan eksekusi transaksi itu sendiri. Banyak transaksi tidak dapat dieksekusi secara paralel; perlu dilakukan satu per satu untuk menghindari kesalahan seperti pengeluaran ganda. Beberapa bahasa bagus dalam operasi paralel sementara beberapa bahasa bagus dalam operasi non-paralel.
- Alasan # 4: Isolasi
Apa itu perilaku deterministik?
Jika A + B = C, maka apa pun kondisinya, A + B akan selalu sama dengan C. Itulah yang disebut perilaku deterministik.
Fungsi hash bersifat deterministik, artinya hash A akan selalu menjadi H (A).
Jadi, dalam pengembangan blockchain, semua operasi transaksi harus bersifat deterministik. Anda tidak dapat memiliki transaksi yang berperilaku satu arah dan kemudian berperilaku dengan cara lain pada hari berikutnya. Demikian pula, Anda tidak dapat memiliki kontrak pintar yang bekerja dalam dua cara berbeda di dua mesin yang berbeda.
Satu-satunya solusi untuk ini adalah isolasi. Pada dasarnya Anda mengisolasi kontrak dan transaksi cerdas Anda dari elemen non-deterministik.
Jadi, kami telah membahas masalah utama yang dihadapi pengembang blockchain. Sekarang mari kita lihat beberapa bahasa yang bisa digunakan pengembang untuk membuat kode di blockchain.
Bahasa # 1: C ++
Pertama dan terutama, mari kita mulai dengan kakek dari mereka semua, C ++ yang hijau. C ++ dibuat oleh Bjarne Stroustrup sebagai perpanjangan dari bahasa C. Bahasa dirancang untuk memiliki fleksibilitas dan efisiensi C tetapi dengan beberapa perbedaan utama. Perbedaan terbesar antara C dan C ++ adalah bahwa sementara C berorientasi proses, C ++ berorientasi objek.
Ini artinya, dalam C ++, data dan fungsi dibungkus menjadi satu paket kecil yang rapi yang disebut “objek” yang berarti bahwa begitu sebuah objek dibuat, ia dapat dengan mudah dipanggil dan digunakan kembali dalam program lain, yang sangat mengurangi waktu pengkodean.
Mari kita lihat program C ++ yang paling sederhana di dunia. Program “Hello World”:
#termasuk <iostream> menggunakan namespace std; int main () { cout << "Halo, Dunia!" ; return 0 ; } menggunakan namespace std; int main () { cout << "Halo, Dunia!" ; return 0 ; }
Kode ini akan mencetak: Hello World!
Jadi, mengapa orang masih menggunakan C ++ untuk pengkodean? Tentunya ada bahasa yang jauh lebih glamor sekarang, mengapa orang masih bersikeras untuk kembali ke C ++? Mengapa bitcoin blockchain dikodekan pada C ++?
Nah, seperti yang terjadi, C ++ memiliki fitur tertentu yang membuatnya sangat menarik. (Serukan Peter Wiulle dan David Schwartz untuk penjelasan berikut).
Fitur # 1: Kontrol Memori
Ingat apa yang kami katakan sebelumnya tentang tantangan pengembangan blockchain? Tidak hanya blockchain harus diamankan benteng tetapi mereka harus memiliki manajemen sumber daya yang efektif juga. Blockchain seharusnya berinteraksi dengan banyak titik akhir yang tidak dipercaya sembari tetap memberikan layanan cepat ke setiap dan semua node.
Layanan cepat dan cepat ini sangat penting untuk keberhasilan cryptocurrency seperti bitcoin. Ingat, semuanya didasarkan pada prinsip “konsensus”, semua simpul di jaringan harus menerima dan menolak blok yang sama persis, atau kalau tidak ada garpu dalam rantai.
Untuk memenuhi semua tuntutan ini dan bekerja di level tertinggi, Anda perlu kontrol yang ketat dan lengkap atas penggunaan CPU dan memori. C ++ memberikan itu kepada penggunanya.
Fitur # 2: Threading
Seperti yang telah kita bahas sebelumnya, salah satu tantangan utama dari pemrograman blockchain adalah integrasi tugas yang paralel dan tugas yang tidak paralel. Sebagian besar bahasa berspesialisasi dalam satu bahasa, namun kemampuan threading C ++ cukup baik untuk menangani tugas paralel maupun non-paralel. Utas adalah serangkaian instruksi yang dapat dieksekusi secara bersamaan. C ++ tidak hanya memungkinkan fasilitas multithreading yang luar biasa dengan komunikasi antar-thread yang efektif, C ++ juga mengoptimalkan kinerja single-thread.
Fitur # 3: Pindahkan Semantik
Salah satu aspek yang paling menarik dari C ++ adalah memindahkan semantik. Pindah semantik menyediakan cara untuk konten yang akan dipindahkan antara objek daripada disalin secara langsung. Mari kita selidiki perbedaan antara menyalin semantik dan memindahkan semantik. (Mengikuti data yang diambil dari jawaban Peter Alexander di “Stackoverflow”).
Salin Semantik:
- menegaskan (b == c);
- a = b;
- menegaskan (a == b && b == c);
Jadi apa yang terjadi di sini? Nilai b masuk ke a dan b tetap tidak berubah di akhir semuanya.
Sekarang, pertimbangkan ini.
Pindahkan Semantik:
- menegaskan (b = = c);
- bergerak (a, b);
- menegaskan (a = = c);
Apa yang terjadi disini?
Bisakah Anda melihat perbedaan antara dua blok kode?
Ketika kita menggunakan semantik langkah, nilai “b” tidak harus tidak berubah. Itulah perbedaan antara menyalin semantik dan memindahkan semantik. Keuntungan terbesar dari semantik bergerak adalah bahwa Anda bisa mendapatkan salinan data tertentu hanya saat Anda membutuhkannya, yang sangat mengurangi redundansi dalam kode dan memberikan peningkatan kinerja yang sangat besar. Jadi seperti yang Anda lihat, manajemen memori yang efisien dan kinerja tinggi ini diinginkan untuk blockchain.
Fitur # 4: Kompilasi Polimorfisme Waktu
Apa itu polimorfisme?
Ingat ketika kami menyebut C ++ sebagai “bahasa pemrograman berorientasi objek (OOP)”? Polimorfisme kebetulan merupakan properti OOP. Menggunakan polimorfisme, Anda menggunakan fitur tertentu dalam lebih dari satu cara. Dalam C ++ polimorfisme dapat digunakan dalam dua cara:
- Kompilasi polimorfisme waktu.
- Jalankan polimorfisme waktu.
Di sini, kita hanya akan fokus pada kompilasi polimorfisme waktu. Ada dua cara C ++ mengimplementasikan kompilasi polimorfisme waktu:
- Fungsi Kelebihan.
- Operator Kelebihan.
Fungsi Kelebihan:
Function overloading adalah ketika Anda memiliki banyak fungsi dengan nama yang sama tetapi dengan asupan parameter yang berbeda.
Pertimbangkan program ini:
#termasuk <bits / stdc ++. h> menggunakan namespace std; kelas A { void func ( int x) // instance fungsi pertama hanya membutuhkan satu nilai integer { cout << x << endl; } void func (double x) // instance kedua dari fungsi hanya membutuhkan satu nilai ganda { cout << x << endl; } void func ( int x, int y) // instance ketiga dari fungsi tersebut mengambil dua nilai integer { cout << x = y << endl; } } int main () { A obj1 // membuat satu objek dari kelas A // sekarang kita akan memanggil fungsi obj1 . func ( 2 ); obj1 . func ( 2.65 ); obj1 . func ( 2 , 5 ); return 0 ; }
Sekarang ketika Anda menjalankan fungsi ini hasilnya akan menjadi:
- 2
- 2.65
- 7
Jadi, seperti yang Anda lihat, fungsi func () yang sama digunakan dalam 3 cara berbeda.
Operator Kelebihan:
Dalam C ++ operator yang sama dapat memiliki lebih dari satu makna.
Misalnya. “+” Dapat digunakan untuk penambahan matematis dan untuk penggabungan.
Penggabungan pada dasarnya berarti mengambil dua string dan menggabungkannya sebagai satu.
Jadi 3 + 4 = 7.
DAN
Block + geeks = Blockgeeks.
Operator yang sama, melakukan dua fungsi berbeda, ini adalah overloading operator.
Polimorfisme waktu kompilasi sangat membantu dalam pengembangan blockchain. Ini membantu dalam menempatkan tanggung jawab secara terpisah dalam berbagai fungsi dan, pada gilirannya, meningkatkan kinerja seluruh sistem.
Fitur # 5: Isolasi Kode
C ++ memiliki fitur namespace yang dapat diimpor dari satu program ke program lainnya. Namespace membantu menghindari tabrakan nama. Juga, karena C ++ memiliki kelas, ia dapat bertindak sebagai batas antara berbagai API dan membantu dalam membuat pemisahan yang jelas.
Kelas dalam C ++ adalah tipe yang ditentukan pengguna atau struktur data yang dideklarasikan dengan kelas kata kunci yang memiliki data dan fungsi sebagai anggotanya. Anda dapat mengakses fungsi yang dideklarasikan di kelas dengan mendeklarasikan objek dari kelas tertentu.
Fitur # 6: Kematangan
Bahasa ini matang dan diperbarui secara berkala. Setidaknya ada 3 kompiler solid, seperti yang dikatakan David Schwartz, dan fitur-fitur baru ditujukan untuk memecahkan masalah nyata. Debugger dan alat analitis dari segala jenis tersedia untuk semuanya, mulai dari profil kinerja hingga deteksi otomatis semua jenis masalah. Ini berarti bahasa ini terus berkembang untuk menggabungkan fitur yang lebih baru dan lebih baik.
Karena fitur-fitur di atas, Satoshi Nakamoto memilih C ++ untuk menjadi bahasa dasar dari kode sumber bitcoin.
Menggunakan Dompet Bitcoin
Jika Anda ingin menjadi pengembang Bitcoin, maka Anda harus tahu cara kerja dompet bitcoin .
Tanpa ragu, cara teraman untuk menyimpan mata uang digital adalah menggunakan dompet kertas . Dengan mengikuti beberapa petunjuk di bawah ini, Anda dapat mengaturnya sepenuhnya secara gratis. Ini benar-benar membuat Anda master investasi Anda, dan jika tindakan pencegahan diikuti, tidak ada kemungkinan kunci pribadi Anda diketahui oleh orang lain.
Tentu saja, ini berarti menyimpan catatan mereka bahkan lebih penting. Kehilangan kunci pribadi berarti Anda akan kehilangan seluruh isi dompet kertas Anda (tapi sekali lagi, itu berlaku untuk setiap dompet di luar sana.)
Apa itu dompet kertas?
Untuk membuatnya sangat sederhana, dompet kertas adalah metode penyimpanan dingin offline untuk menyimpan cryptocurrency. Ini termasuk mencetak kunci publik dan pribadi Anda di selembar kertas yang kemudian Anda simpan dan simpan di tempat yang aman. Kunci dicetak dalam bentuk kode QR yang dapat Anda pindai di masa depan untuk semua transaksi Anda. Alasan mengapa begitu aman adalah karena memberikan kontrol penuh kepada Anda, pengguna. Anda tidak perlu khawatir tentang kesejahteraan perangkat keras, Anda juga tidak perlu khawatir tentang peretas atau malware. Anda hanya perlu merawat selembar kertas.
Menyiapkan dompet kertas
Dompet kertas dibentuk dengan menggunakan program untuk secara acak menghasilkan kunci publik dan pribadi. Kunci akan unik, dan program yang menghasilkannya adalah open source. Mereka yang memiliki pengetahuan pengkodean dapat memeriksa backend program itu sendiri untuk mendapatkan hasil yang acak. Terlebih lagi, kami akan membuat kunci kami offline. Ini menghapus eksposur terhadap ancaman online, dan menghapus program sederhana setelah digunakan akan menghancurkan jejaknya.
Jangan khawatir jika kedengarannya membingungkan, tidak. Anda tidak memerlukan pengetahuan khusus tentang pengkodean, atau enkripsi. Yang Anda butuhkan hanyalah komputer, koneksi internet, sesuatu untuk merekam kunci Anda.
Pokoknya, mari kita buat dompet kertas kita. Ikuti langkah ini:
- Pastikan komputer Anda sepenuhnya bebas dari segala bentuk perangkat lunak berbahaya. Komputer baru akan ideal, tetapi seringkali tidak layak.
- Kunjungi halaman WalletGenerator.net.
Unduh file zip dengan mengklik di sini:
- Setelah diunduh, buka file “index.html” tetapi sebelum itu pastikan bahwa internet Anda mati. Seluruh proses ini dilakukan untuk memastikan bahwa dompet Anda bebas dari peretas.
Sekarang saatnya menghasilkan dompet Anda. Terus arahkan kursor ke teks yang disorot dan itu akan menghasilkan lebih banyak karakter. Atau jika Anda mau, Anda bisa mengetikkan karakter acak secara manual. Terus lakukan sampai penghitung pergi ke “0”.
- Saat hitungan ke nol dompet Anda akan dihasilkan.
- Cetak halaman atau buat banyak salinan dari angka-angka itu. (Penting: Pastikan printer tidak terhubung ke Wi-Fi pada saat ini).
- Hapus halaman web yang disimpan. Anda sekarang dapat terhubung kembali dengan aman ke internet.
- Simpan kunci pribadi Anda di rumah jangka panjang, pribadi, dan aman mereka.
Sekarang setelah Anda memiliki dompet, Anda dapat pergi ke salah satu bursa untuk menukar mata uang fiat Anda dengan bitcoin. Beberapa pertukaran yang dapat Anda gunakan adalah:
- Bitfinex.
- Bitstamp.
- BTC-e.
- Coinbase.
Anda harus melakukan riset dan mencari tahu pertukaran mana yang paling berhasil di daerah Anda.
Berada dalam pengetahuan
Salah satu hal paling penting yang harus Anda lakukan untuk menjadi pengembang bitcoin adalah mengetahui.
Ada banyak Komunitas Pengembang tempat Anda dapat bergabung dan berinteraksi dengan pengembang lain.
Kesimpulan Pengembang Bitcoin
Jadi, begitulah.
Panduan ini akan memberi Anda ide dasar tentang apa yang perlu Anda lakukan dan pelajari untuk menjadi pengembang Bitcoin.
Anda dapat checkout kursus kami jika Anda ingin memulai karir pengembang Anda hari ini.
Bitcoin, dan cryptocurrency secara umum, memiliki kemungkinan tak terbatas di masa depan. Kita mungkin berada di puncak protokol besar era-penetapan berikutnya. Bisakah teknologi blockchain menjadi internet berikutnya? Hanya waktu yang tahu.
Namun, yang dapat dikatakan tanpa keraguan adalah bahwa cakupan bitcoin dan aplikasi blockchain lainnya, tidak mengenal batas.