Tujuan pelajaran: untuk berkenalan dengan prinsip-prinsip blockchain Ethereum, area penerapannya, dan terminologi dasar.
Latihan
praktis : tidak disediakan dalam pelajaran ini.
Hampir tidak ada pengembang perangkat lunak saat ini yang belum mendengar apa pun tentang teknologi Blockchain, cryptocurrency (Cryptocurrency atau Crypto Currency), Bitcoin (Bitcoin), penawaran koin awal (ICO, penawaran koin awal), kontrak pintar (Kontrak Cerdas), serta konsep dan istilah lain yang terkait dengan blockchain.
Teknologi Blockchain membuka pasar baru dan menciptakan lapangan kerja bagi para programmer. Jika Anda memahami semua seluk beluk teknologi cryptocurrency dan teknologi kontrak pintar, maka Anda seharusnya tidak memiliki masalah dengan menerapkan pengetahuan ini dalam praktiknya.
Saya harus mengatakan bahwa ada banyak spekulasi seputar cryptocurrency dan blockchains. Kami akan mengesampingkan diskusi tentang perubahan tingkat mata uang kripto, tentang pembuatan piramida, tentang seluk-beluk undang-undang mata uang kripto, dll. Dalam kursus pelatihan kami, kami akan fokus terutama pada aspek teknis penerapan kontrak pintar blockchain Ethereum (Ethereum, ether) dan pengembangan yang disebut Aplikasi Terdistribusi (DApp).
Apa itu blockchain?
Blockchain (Blockchain, Block Chain) adalah rantai blok data yang terhubung dengan cara tertentu. Pada awal rantai adalah blok pertama yang disebut blok genesis atau blok genesis. Diikuti oleh yang kedua, kemudian yang ketiga, dan seterusnya.
Semua blok data ini secara otomatis diduplikasi pada banyak node dari jaringan blockchain. Ini memastikan penyimpanan data blockchain yang terdesentralisasi.
Anda dapat membayangkan sistem blockchain sebagai sejumlah besar node (server fisik atau virtual), jaringan dan mereplikasi semua perubahan dalam rantai blok data. Ini seperti komputer multiserver raksasa, dan simpul-simpul komputer seperti itu (server) dapat tersebar di seluruh dunia. Dan Anda juga dapat menambahkan komputer Anda ke jaringan blockchain.
Database terdistribusi
Blockchain dapat dibayangkan sebagai database terdistribusi yang direplikasi ke semua node dari jaringan blockchain. Secara teori, blockchain akan beroperasi selama setidaknya satu node yang menyimpan semua blok blockchain berfungsi.
Registri Data Terdistribusi
Blockchain dapat dibayangkan sebagai registri terdistribusi data dan operasi (transaksi). Nama lain untuk registri semacam itu adalah buku besar.
Anda dapat menambahkan data ke registri terdistribusi, tetapi Anda tidak dapat mengubah atau menghapusnya. Ketidakmungkinan seperti itu dicapai, khususnya, dengan menggunakan algoritma kriptografi, algoritma khusus untuk menambahkan blok ke rantai, dan penyimpanan data terdesentralisasi.
Ketika menambahkan blok dan melakukan operasi (transaksi), kunci privat dan publik digunakan. Mereka membatasi pengguna blockchain dengan memberi mereka akses hanya ke blok data mereka.
Transaksi
Blockchain menyimpan informasi tentang operasi (transaksi) dalam blok. Pada saat yang sama, transaksi lama yang sudah selesai tidak dapat dibatalkan atau diubah. Transaksi baru disimpan di blok baru yang ditambahkan.
Dengan demikian, seluruh riwayat transaksi dapat dicatat tidak berubah di blockchain. Oleh karena itu, blockchain dapat digunakan, misalnya, untuk menyimpan operasi perbankan dengan aman, informasi hak cipta, riwayat perubahan dalam kepemilikan real estat, dll.
Blockchain Ethereum berisi apa yang disebut status sistem. Saat transaksi selesai, status berubah dari awal ke saat ini. Transaksi ditulis dalam blok.
Blokir publik dan pribadi
Perlu dicatat bahwa semua hal di atas hanya berlaku untuk apa yang disebut jaringan blockchain publik, yang tidak dapat dikendalikan oleh individu individu atau badan hukum, badan negara atau pemerintah.
Apa yang disebut jaringan blockchain pribadi berada di bawah kendali penuh pencipta mereka, dan semuanya mungkin ada di sana, misalnya, penggantian lengkap semua blok rantai.
Aplikasi Praktis Blockchain
Untuk apa blockchain masuk?
Singkatnya, blockchain memungkinkan Anda untuk melakukan transaksi (transaksi) dengan aman antara orang-orang yang tidak saling percaya atau perusahaan. Data yang direkam dalam blockchain (transaksi, data pribadi, dokumen, sertifikat, kontrak, faktur, dll.) Tidak dapat dipalsukan atau diganti setelah perekaman. Oleh karena itu, berdasarkan blockchain, Anda dapat membuat, misalnya, pendaftar terdistribusi dari berbagai jenis dokumen.
Tentu saja, Anda tahu bahwa sistem cryptocurrency dibuat atas dasar blockchains, yang dirancang untuk menggantikan uang kertas biasa. Uang kertas juga disebut uang fiat (dari Fiat Money).
Blockchain menyediakan penyimpanan dan imutabilitas transaksi yang dicatat dalam blok, oleh karena itu ia juga dapat digunakan untuk membuat sistem cryptocurrency. Ini berisi seluruh riwayat transfer dana crypto antara berbagai pengguna (akun), dan operasi apa pun dapat dilacak.
Meskipun transaksi dalam sistem cryptocurrency mungkin anonim, menarik cryptocurrency dan menukarnya dengan uang fiat biasanya mengarah pada pengungkapan identitas pemilik aset cryptocurrency.
Apa yang disebut kontrak pintar, yang merupakan perangkat lunak yang berjalan di jaringan Ethereum, mengotomatiskan proses penyelesaian kesepakatan dan mengendalikan eksekusi mereka. Ini sangat efektif jika pembayaran untuk transaksi dilakukan dengan cryptocurrency Ether.
Blockchain Ethereum dan kontrak pintar Ethereum yang ditulis dalam bahasa pemrograman Solidity dapat digunakan, misalnya, dalam bidang berikut:
- alternatif untuk notarisisasi dokumen;
- penyimpanan register real estat dan informasi tentang transaksi dengan real estat;
- penyimpanan informasi hak cipta tentang kekayaan intelektual (buku, gambar, musik, dll.);
- penciptaan sistem pemungutan suara independen;
- keuangan dan perbankan;
- logistik internasional, melacak pergerakan barang;
- penyimpanan data pribadi sebagai analog dari sistem kartu identitas;
- transaksi aman di bidang komersial;
- penyimpanan hasil pemeriksaan medis, serta riwayat prosedur yang ditentukan
Masalah blockchain
Tapi, tentu saja, tidak semuanya sesederhana kelihatannya!
Ada masalah dengan memverifikasi data sebelum menambahkannya ke blockchain (misalnya, bukan palsu?), Masalah dalam keamanan sistem dan perangkat lunak aplikasi yang digunakan untuk bekerja dengan blockchain, masalah dengan kemampuan untuk menggunakan metode rekayasa sosial untuk mencuri akses ke dompet cryptocurrency, dll. .p.
Sekali lagi, jika ini bukan tentang blockchain publik, yang simpulnya tersebar di seluruh dunia, tetapi tentang blockchain pribadi yang dimiliki oleh seseorang atau organisasi, maka tingkat kepercayaan di sini tidak akan lebih tinggi dari tingkat kepercayaan pada orang ini atau organisasi ini.
Harus juga diingat bahwa data yang direkam pada blockchain menjadi tersedia untuk semua orang. Dalam hal ini, blockchain (terutama yang publik) tidak cocok untuk menyimpan informasi rahasia. Namun, fakta bahwa informasi pada blockchain tidak dapat diubah dapat membantu mencegah atau menyelidiki semua jenis kegiatan penipuan.
Aplikasi Ethereum yang terdesentralisasi akan nyaman jika Anda membayar penggunaannya dengan cryptocurrency. Semakin banyak orang yang memiliki mata uang kripto atau siap untuk membelinya, aplikasi DApp yang lebih populer dan kontrak pintar akan mendapatkan.
Di antara masalah umum dari blockchain yang menghambat aplikasi praktisnya, orang dapat menyebutkan kecepatan terbatas menambahkan blok baru dan biaya transaksi yang relatif tinggi. Tetapi teknologi di bidang ini secara aktif berkembang, dan ada harapan bahwa masalah teknis akan teratasi seiring waktu.
Masalah lain adalah bahwa kontrak pintar Ethereum blockchain bekerja di lingkungan mesin virtual yang terisolasi dan tidak memiliki akses ke data dunia nyata. Secara khusus, program kontrak pintar tidak dapat membaca data dari situs atau perangkat fisik apa pun (sensor, kontak, dll.) Sendiri, juga tidak dapat menampilkan data ke perangkat eksternal apa pun. Kami akan membahas masalah ini dan metode penyelesaiannya dalam pelajaran yang ditujukan untuk apa yang disebut Oracles - perantara informasi kontrak cerdas.
Ada juga batasan hukum. Di beberapa negara, misalnya, dilarang menggunakan cryptocurrency sebagai alat pembayaran, tetapi Anda dapat memilikinya sebagai jenis aset digital, seperti sekuritas. Aset semacam itu dapat dibeli dan dijual di bursa. Bagaimanapun, saat membuat proyek yang bekerja dengan cryptocurrency, Anda perlu membiasakan diri dengan undang-undang negara di mana yurisdiksinya berada di bawah proyek Anda.
Bagaimana rantai blockchain terbentuk
Seperti yang telah kami katakan, blockchain adalah rantai sederhana dari blok data. Pertama, blok pertama dari rantai ini terbentuk, kemudian blok kedua ditambahkan ke dalamnya, dan seterusnya. Diasumsikan bahwa data transaksi disimpan dalam blok, dan ditambahkan ke blok terakhir.
Dalam gbr. 1.1 kami menunjukkan versi paling sederhana dari urutan blok, di mana blok pertama merujuk ke yang berikutnya.
Fig. 1.1. Urutan blok sederhanaNamun dalam perwujudan ini, sangat mudah untuk memalsukan konten dari blok mana pun dalam rantai, karena blok tersebut tidak mengandung informasi apa pun untuk melindungi terhadap perubahan. Mengingat bahwa blockchain dimaksudkan untuk penggunaan orang dan perusahaan di mana tidak ada kepercayaan, kita dapat menyimpulkan bahwa metode ini menyimpan data untuk blockchain tidak cocok.
Mari kita lindungi blok dari yang palsu. Pada tahap pertama, kami akan mencoba melindungi setiap blok dengan checksum (Gbr. 1.2).
Fig. 1.2. Tambahkan perlindungan blok data dengan checksumSekarang, seorang penyerang tidak bisa hanya mengubah blok karena mengandung checksum dari data blok. Memeriksa checksum akan menunjukkan bahwa data telah diubah.
Untuk menghitung checksum, Anda dapat menggunakan salah satu fungsi hash, seperti MD-5, SHA-1, SHA-256, dll. Fungsi hash menghitung nilai tertentu (misalnya, sebagai string teks dengan panjang konstan) sebagai hasil dari melakukan operasi ireversibel pada blok data. Operasi tergantung pada jenis fungsi hash.
Bahkan dengan perubahan kecil pada isi blok data, nilai fungsi hash juga akan berubah. Dengan menganalisis nilai fungsi hash, tidak mungkin untuk mengembalikan blok data yang dihitung.
Apakah perlindungan seperti itu cukup? Sayangnya tidak.
Dalam skema ini, checksum (fungsi hash) hanya melindungi blok individu, tetapi tidak seluruh rantai blok. Mengetahui algoritma perhitungan fungsi hash, penyerang dapat dengan mudah mengganti isi blok. Juga, tidak ada yang akan menghentikannya menghapus blok dari rantai atau menambahkan yang baru.
Untuk melindungi seluruh rantai secara keseluruhan, dimungkinkan untuk menyimpan hash data dari blok sebelumnya di setiap blok bersama dengan data (Gbr. 1.3).
Fig. 1.3. Tambahkan hash dari blok sebelumnya ke blok dataDalam skema ini, untuk mengubah blok, Anda perlu menghitung ulang fungsi hash semua blok berikutnya. Tampaknya, apa masalahnya?
Dalam blockchain nyata, kesulitan buatan juga dibuat untuk menambahkan blok baru - algoritma digunakan yang membutuhkan banyak sumber daya komputasi. Mengingat bahwa untuk membuat perubahan pada suatu blok, bukan hanya satu blok yang perlu dihitung, tetapi semua blok berikutnya, akan sangat sulit untuk melakukan ini.
Ingat juga bahwa data blockchain disimpan (digandakan) pada banyak node jaringan, mis. . , .. .
, .
Ethereum
Ethereum , DApp. , Ethereum (-, smart contracts), Solidity.
2013 , Bitcoin Magazine, 2015 . , , Ethereum - Solidity.
(mining) , « ». , .. Ethereum.
, , (miner).
(), , Nonce, -, . Ethash, Ethereum, Nonce .
Nonce, (PoW, Proof-of-work). , Ethereum, — Ether. 5 Ether, .
, Ethereum , , . , Solidity DApp Ethereum.
, . , , .
. — ( ), . , Ethereum - Solidity. , , ..
, . , , , , - , , .
. . , , .