Seluruh sejarah umat manusia adalah pembebasan berkelanjutan dari rantai dan penciptaan yang baru, bahkan lebih kuat. (Penulis anonim)Menganalisis berbagai proyek blockchain (Bitshares, Hyperledger, Exonum, Ethereum, Bitcoin, dll.), Saya mengerti bahwa dari sudut pandang teknis, semuanya dibangun di atas prinsip yang sama. Blockchain menyerupai rumah yang, untuk semua ragam desain, dekorasi, dan sebutannya, memiliki fondasi, dinding, atap, jendela, pintu, yang terhubung satu sama lain dengan cara tertentu. Dan jika Anda memahami prinsip dasar desain bangunan, mengetahui sifat-sifat bahan yang digunakan, maka Anda bisa menentukan tujuan rumah tertentu. Saat ini, sebuah situasi muncul dengan blockchain yang semua orang telah mendengarnya, tetapi hanya sedikit yang memahami arsitektur dan prinsip kerja. Oleh karena itu, kesalahpahaman muncul untuk apa dan bagaimana masuk akal untuk menggunakan teknologi blockchain.
Pada artikel ini, kami akan menganalisis sifat dan prinsip yang umum untuk semua blockchain. Selanjutnya,
kita melihat tugas-tugas yang dapat diselesaikan dengan menggunakan blockchain dan untuk mengkonsolidasikan materi
kita akan membangun blockchain
kecil , tetapi nyata di situs virtual kami!
Jadi, mari kita ingat masalah apa yang awalnya dipecahkan oleh blockchain.
Saya yakin banyak yang akan mengatakan tentang database yang terdistribusi, terdesentralisasi, publik dan tidak berubah. Tetapi mengapa semua ini dibutuhkan?
Saya lebih suka mulai mempelajari teknologi apa pun dengan membaca standar, karena semua artikel dan buku tentang topik yang diteliti didasarkan pada mereka. Tetapi standar blockchain saat ini kurang, hanya
komite yang telah dibuat dalam ISO untuk pengembangan mereka. Saat ini, setiap proyek blockchain publik memiliki Buku Putih sendiri, yang pada dasarnya adalah tugas teknis. Proyek blockchain pertama yang terkenal adalah jaringan Bitcoin. Kami pergi ke situs web resmi jaringan dan
melihat bagaimana semuanya dimulai.
Tantangan Blockchain
Jadi, tugas yang dipecahkan oleh blockchain dalam jaringan perintis Bitcoin adalah melakukan transfer kepercayaan kepemilikan aset digital di lingkungan yang tidak terpercaya tanpa perantara. Misalnya, pada jaringan Bitcoin, aset digital adalah koin bitcoin digital. Dan semua solusi teknis Bitcoin dan blockchains lainnya hadir untuk menyelesaikan masalah ini.
Masalah blockchain
Misalkan organisasi keuangan tertentu mengatakan bahwa ia telah membangun jaringan di seluruh dunia yang dengannya Anda dapat mentransfer uang kepada siapa pun. Apakah Anda percaya padanya? Jika organisasi ini Visa atau MasterCard, kemungkinan besar, percayalah, tetapi jika, secara relatif, AnonymousWorldMoney, mungkin tidak. Kenapa begitu? Tetapi karena kita tahu betul bagaimana sistem terdistribusi dibuat oleh perusahaan swasta, untuk tujuan apa, dan apa yang dapat menyebabkan hal ini. Mari kita pertimbangkan secara lebih rinci masalah sistem tersebut, dan bagaimana mereka dapat dipecahkan dengan menggunakan teknologi blockchain.
Misalkan, di AnonymousWorldMoney bersyarat ada server dengan database, dan ada baiknya jika akan ada beberapa dari mereka di pusat data yang berbeda. Ketika pengirim mentransfer uang, transaksi dicatat yang direplikasi ke semua server, dan uang mencapai penerima.

Dalam dunia yang ideal, skema semacam itu bekerja dengan baik, tetapi di dunia kita sendiri, masalah-masalah berikut muncul:
- Masalah mengidentifikasi peserta di satu sisi dan kebutuhan untuk anonimitas transaksi di sisi lain. Yaitu perlu untuk mentransfer uang ke penerima tertentu dan agar tidak ada yang tahu tentang transaksi ini, kecuali untuk peserta dalam transaksi. Bank memiliki nomor rekening dan kartu bank yang ditautkan dengan individu atau badan hukum tertentu, dan kerahasiaan bank melindungi informasi transaksi. Dan siapa yang menjamin bahwa AnonymousWorldMoney bersyarat tidak menggunakan data pribadi dan informasi transaksi untuk tujuannya sendiri?
- Bagaimana cara memastikan bahwa penerima menerima persis jumlah yang ditransfer kepadanya? Secara relatif, pengirim mengirim $ 100, dan penerima menerima $ 10. Pengirim tiba di kantor AnonymousWorldMoney dengan tanda terima, dan petugas menunjukkan versinya, yang mengatakan bahwa pengirim hanya ditransfer $ 10.
- Masalah lingkungan yang tidak dipercaya, seperti penipuan yang disebut pengeluaran ganda. Peserta yang tidak bermoral dapat menghabiskan saldo beberapa kali sampai pembayaran direplikasi ke semua server. Tentu saja, tidak ada yang membatalkan teorema CAP , dan koherensi pada akhirnya akan tercapai, tetapi seseorang tidak akan menerima uang untuk layanan atau barang yang diberikan. Oleh karena itu, jika tidak ada kepercayaan penuh pada organisasi pembayaran atau peserta dalam transaksi, maka perlu untuk membangun jaringan berdasarkan bukan pada kepercayaan, tetapi pada kriptografi.
- AnonymousWorldMoney bersyarat memiliki sejumlah server terbatas yang mungkin menjadi tidak tersedia secara tidak sengaja atau dengan niat jahat.
- AnonymousWorldMoney akan mengambil komisi nyata.
- Kemampuan untuk mengendalikan. Dalam proses mengeksploitasi Bitcoin, ternyata orang-orang ingin tidak hanya mentransfer koin satu sama lain, tetapi juga memeriksa berbagai kondisi transaksi, skenario kerja program, secara otomatis melakukan tindakan tergantung pada kondisi, dll.
Bagaimana blockchain memecahkan masalah ini
- Peserta diidentifikasi menggunakan pasangan kunci: privat dan publik, dan algoritma tanda tangan digital secara unik mengidentifikasi pengirim dan penerima, meninggalkan identitas mereka anonim.
- Transaksi dikumpulkan dalam blok, hash blok dihitung, yang dicatat di blok berikutnya. Urutan penulisan hash ini dalam blok memberi nama teknologi blockchain, dan itu juga membuat mustahil untuk secara diam-diam mengubah / menghapus blok atau transaksi individu dari blok. Dengan demikian, jika suatu transaksi jatuh ke dalam blockchain, Anda dapat yakin bahwa datanya akan tetap tidak berubah.
- Penipuan pengeluaran ganda dicegah dengan mencapai konsensus di jaringan mana data harus dianggap benar dan yang harus dibuang. Di jaringan Bitcoin, konsensus dicapai dengan bukti PoW (Proof-of-Work).
- Keandalan fungsi jaringan dicapai oleh fakta bahwa blockchain bersifat publik, di mana setiap peserta dapat meluncurkan node sendiri, mendapatkan salinan penuh blockchain dan, apalagi, secara mandiri mulai memeriksa transaksi untuk kebenaran. Perlu dicatat bahwa blockchain modern memungkinkan Anda untuk membangun tidak hanya blockchain publik (terbuka), tetapi juga privat (tertutup), serta menggunakan skema gabungan.
- Saya tidak akan sepenuhnya menghilangkan komisi di blockchain, karena Anda harus membayar orang yang mendukung jaringan, tetapi di blockchain, kebutuhan komisi terbukti sangat meyakinkan sehingga tidak ada keraguan tentang perlunya.
- Blockchain modern memiliki kemampuan untuk mengimplementasikan logika bisnis, yang disebut Kontrak Cerdas dalam blockchain. Logika kontrak pintar diterapkan dalam berbagai bahasa tingkat tinggi.
Selanjutnya, kami mempertimbangkan solusi ini secara lebih rinci.
Arsitektur Blockchain
Komponen blockchain
Setiap peserta dapat menjalankan node-nya dengan salinan penuh blockchain (full node). Node lengkap yang dapat mencatat transaksi pada blockchain disebut
nonsensus (saksi) atau penambang. Node penuh yang hanya memverifikasi kebenaran transaksi disebut
node audit .
Klien ringan tidak menyimpan salinan penuh blockchain, tetapi berinteraksi dengan jaringan menggunakan node penuh.
Sebagian besar pengguna menggunakan klien ringan atau dompet web untuk menyelesaikan transaksi. Semua node terhubung satu sama lain. Dengan serangkaian elemen ini, arsitektur jaringan menjadi lebih stabil:

Siklus Hidup Transaksi
Mari kita lihat siklus hidup transaksi dan menganalisisnya dalam beberapa bagian:

Teknologi blockchain
Mari kita membahas lebih dalam tentang solusi teknis dan hubungan mereka satu sama lain.
Identifikasi
Setiap transaksi blockchain harus ditandatangani secara digital. Oleh karena itu, untuk menyelesaikan transaksi, setiap peserta harus memiliki pasangan kunci: pribadi / publik. Kadang sepasang kunci disebut dompet, karena kunci secara unik dikaitkan dengan alamat digital unik dan keseimbangan peserta. Pada kenyataannya, kunci dan alamat hanyalah serangkaian angka dalam sistem angka yang berbeda. Contoh kunci dan alamat dompet:
Private key: 0a78194a8a893b8baac7c09b6a4a4b4b161b2f80a126cbb79bde231a4567420f Public key: 0579b478952214d7cddac32ac9dc522c821a4489bc10aac3a81b9d1cd7a92e57ba Address: 0x3814JnJpGnt5tB2GD1qfKP709W3KbRdfb27V
Untuk membuat tanda tangan digital pada blockchains, digunakan algoritma berdasarkan kurva eliptik: Elliptic Curve Digital Signature Algorithm (ECDSA). Untuk operasinya, kunci pribadi (nomor 256 bit) biasanya diambil secara acak. Jumlah opsi kunci adalah 2 pangkat 256, sehingga kita dapat berbicara tentang ketidakmungkinan praktis untuk mencocokkan nilai-nilai kunci pribadi.
Lebih lanjut, kunci publik diperoleh dari kunci privat dengan mengalikan nilainya dengan koordinat titik yang terletak pada kurva eliptik, sehingga diperoleh koordinat titik baru dari kurva yang sama. Tindakan ini memastikan bahwa Anda menerima pasangan kunci yang cocok untuk transaksi yang ditandatangani secara digital. Akhirnya, alamat dompet dihitung secara unik dari kunci publik.
Ada banyak artikel dengan perincian tentang kriptografi yang digunakan dalam blockchain, misalnya:
Bitcoin secara singkat - KriptografiKunci pribadi harus dirahasiakan dan disimpan dengan aman. Kunci publik diketahui semua orang. Jika kunci pribadi hilang, akses ke aset (koin) tidak dapat dipulihkan dan uang akan hilang selamanya. Oleh karena itu, tugas penyimpanan kunci pribadi yang andal sangat relevan, karena ini bukan bank tempat Anda selalu bisa membawa paspor dan mengembalikan akun Anda. Ada seluruh industri untuk memproduksi apa yang disebut dompet crypto dingin, mirip dengan flash drive:

atau Anda dapat menggunakan metode yang lebih andal, sebagai contoh, untuk menghilangkan nilai kunci pribadi pada token:

Transaksi
Untuk informasi lebih lanjut tentang struktur transaksi, lihat artikel
Bitcoin secara singkat - Transaksi . Penting bagi kita untuk memahami bahwa setiap transaksi setidaknya memiliki data berikut:
From: 0x48C89c341C5960Ca2Bf3732D6D8a0F4f89Cc4368 - To: 0x367adb7894334678b90fe7882a5b06f7fbc783a - Value: 0.0001 - Transaction Hash: 0x617ede331e8a99f46a363b32b239542bb4006e4fa9a2727a6636ffe3eb095cef -
Selanjutnya, transaksi ditandatangani dengan kunci pribadi dan dikirim (lihat detail tentang operasi
Bitcoin secara singkat-Protokol ) ke semua node di blockchain yang memverifikasi transaksi untuk validitas. Algoritma verifikasi transaksi adalah nontrivial dan mencakup
dua lusin langkah .
Blok transaksi
Setelah memeriksa validitas transaksi, node membentuk blok darinya. Selain transaksi, hash dari blok sebelumnya, angka (penghitung Nonce) ditulis ke blok, dan hash dari blok saat ini dihitung menggunakan algoritma SHA-256. Hash harus memiliki kondisi kompleksitas yang ditetapkan. Misalnya, pada jaringan Bitcoin, kompleksitas hash secara otomatis berubah setiap 2 minggu tergantung pada kapasitas jaringan sehingga blok dihasilkan kira-kira setiap 10 menit. Kompleksitas ditentukan oleh kondisi berikut: hash yang ditemukan harus kurang dari angka yang telah ditentukan. Jika kondisi ini tidak terpenuhi, maka 1 ditambahkan ke Nonce, dan perhitungan hash diulang. Untuk memilih hash, bidang Nonce digunakan, karena ini adalah satu-satunya data di blok yang dapat diubah, sisanya harus tetap tidak berubah. Hash yang benar harus memiliki sejumlah nol di awal, misalnya, salah satu hash nyata:
000000000000000000000bf03212e7dd1176f52f816fa395fc9b93c44bc11f91
Berhasil menemukan hash adalah bukti dari pekerjaan yang dilakukan (Proof-of-Work, PoW) untuk jaringan Bitcoin atau Ethereum. Proses menemukan hash disebut penambangan, dengan analogi dengan penambangan emas. Nama menentukan esensi proses secara akurat, karena ada enumerasi pilihan sederhana, dan jika seseorang menemukan hash yang cocok, maka ini benar-benar keberuntungan. Inilah cara menemukan nugget emas asli dalam berton-ton gangue. Hadiah untuk blok sekarang adalah 12,5 BTC dan jika Anda kalikan $ 3900 dengan nilai tukar bitcoin saat ini, Anda mendapatkan lebih dari satu kilogram emas murni. Ada sesuatu untuk diperjuangkan!
Setelah berhasil menemukan hash, blok dan hash yang ditemukan itu sendiri ditulis ke blockchain oleh blok berikutnya. Rincian lebih lanjut tentang struktur blok dapat ditemukan dalam artikel
Bitcoin di singkatnya-Blockchain , dan di bawah ini saya akan memberikan diagram yang disederhanakan:

Blockchain dimulai dengan blok yang belum memiliki hash dari blok sebelumnya. Hanya ada satu blok seperti itu di blockchain dan memiliki namanya sendiri blok Genesis. Blok yang tersisa memiliki struktur yang sama dan mereka hanya berbeda dalam jumlah transaksi. Transaksi dan blok nyata yang saat ini sedang dibuat dalam Bitcoin atau Ethereum dapat dilihat di
Block Explorer .
Ukuran blok dalam Bitcoin terbatas hingga 1MB dan dengan jumlah minimum informasi dalam transaksi sekitar 200 byte, maksimum dalam satu blok bisa sekitar 6.000 transaksi. Dari sini, omong-omong, adalah kinerja Bitcoin, yang ditertawakan semua orang: satu blok dihasilkan kira-kira setiap 10 menit * 60 detik = 600 detik, yang memberikan kinerja formal sekitar 10 TPS. Meskipun dalam kenyataannya - ini bukan kinerja, tetapi algoritma kerja yang diimplementasikan secara sadar. Ethereum baru saja membuat waktu pembuatan blok 15 detik untuk kompetisi. dan produktivitas secara resmi meningkat. Oleh karena itu, dalam blockchains menggunakan PoW sebagai konsensus, umumnya tidak ada gunanya untuk membandingkan kinerja, karena secara langsung tergantung pada kompleksitas penghitungan cache, yang dapat ditugaskan untuk apa saja.
Garpu
Dan apa yang terjadi jika, misalnya, beberapa node menemukan hash yang memenuhi kondisi kompleksitas, tetapi memiliki makna yang berbeda (dengan kata lain, mencapai konsensus yang berbeda) dan menulis blok ke blockchain? Mari kita lihat bagaimana blockchain melindungi dirinya dari situasi ini. Dalam hal ini, yang disebut fork ('fork') terjadi, dan blockchain memiliki dua versi rantai:

Apa yang terjadi selanjutnya? Selanjutnya, bagian dari jaringan mulai bekerja pada blok N + 2 dari satu rantai, dan sebagian dari yang lain:

Beberapa dari blok ini akan ditemukan lebih awal dan dikirim ke blockchain, dan kemudian, sesuai aturan, blockchain harus beralih ke rantai yang lebih panjang dan membatalkan semua transaksi dari blok alternatif:

Pada saat yang sama, sebuah situasi dapat muncul ketika transaksi peserta hanya di salah satu blok garpu, yang dibatalkan. Oleh karena itu, untuk memastikan bahwa transaksi yang diinginkan dicatat di blockchain, ada rekomendasi umum - sebelum mempercayai transaksi, Anda harus menunggu sampai beberapa blok berikutnya ditambahkan ke blockchain. Rekomendasi tentang berapa banyak blok untuk menunggu berbagai blokir berbeda. Misalnya, untuk jaringan Bitcoin, minimum adalah 2 blok, maksimum adalah 6.
Gambaran yang sama dengan garpu blok juga akan diamati dengan apa yang disebut serangan 51% - ini adalah ketika sekelompok penambang akan mencoba menumbuhkan rantai blok alternatif, berusaha untuk membatalkan rantai dengan transaksi penipuan mereka. Meskipun saat ini, alih-alih penipuan, lebih baik menghabiskan daya Anda untuk penambangan yang jujur.
Konsensus
Untuk menulis blok ke blockchain, jaringan harus mencapai konsensus. Mari kita ingat tugas untuk mencapai konsensus dalam jaringan komunikasi komputer. Masalahnya dirumuskan sebagai tugas para jenderal Bizantium BFT (
toleransi kesalahan Bizantium ). Menghilangkan deskripsi bergambar tentang masalah pasukan Bizantium, masalahnya dapat dirumuskan sebagai berikut: bagaimana node jaringan sampai pada hasil yang umum, jika bagian dari node jaringan secara sadar dapat mengubah mereka. Algoritma yang ada untuk menyelesaikan masalah BFT menunjukkan bahwa jaringan dapat berfungsi dengan benar jika penipu kurang dari 1/3. Mengapa konsensus BFT tidak diterapkan pada jaringan Bitcoin? Mengapa menggunakan PoW? Ada beberapa alasan:
- BFT bekerja dengan baik dengan set kecil node tetap, dan di blockchain publik, jumlah node tidak dapat diprediksi dan, lebih lanjut, node dapat dihidupkan dan dimatikan secara sewenang-wenang.
- Kita perlu memotivasi orang untuk meluncurkan node blockchain. Untuk ini, orang harus menerima hadiah. Di BFT, secara formal tidak ada apa pun yang dapat menerima hadiah, tetapi imbalan untuk PoW dapat dipahami oleh semua orang pada tingkat intuitif: untuk listrik yang dikonsumsi oleh prosesor dalam proses menemukan hash blok.
Selain PoW, ada beberapa masalah konsensus yang digunakan dalam blockchain modern, misalnya:
- PoS (Proof-of-Stake) - di blockchain Hyperledger
- DPoS (Delegated Proof-of-Stake) - di blockchain BitShares
- Modifikasi BFT: SBFT (BFT Sederhana) dan PBFT (Praktis BFT), misalnya, dalam blockchain Exonum
Mari kita memikirkan konsensus PoS, karena itu adalah PoS dan variannya yang paling banyak digunakan di blockchains pribadi. Kenapa diam-diam? Di satu sisi, karakteristik PoS lebih baik daripada PoW, karena Untuk mencapai konsensus, dibutuhkan lebih sedikit sumber daya komputasi, yang berarti bahwa kecepatan penulisan data ke blockchain meningkat. Tetapi di sisi lain, PoS memiliki lebih banyak peluang untuk penipuan, oleh karena itu, untuk menetralisir ini, semua peserta dalam blockchain harus diketahui.
Konsensus PoS didasarkan pada pilihan node yang dapat menulis blok dengan transaksi di blockchain tergantung pada jumlah dana dalam akun, atau lebih tepatnya, tidak di akun, tetapi dalam janji, yaitu. semakin banyak uang yang Anda miliki dalam janji, semakin besar kemungkinan jaringan akan memilih simpul Anda untuk merekam blok. Setoran tidak akan dikembalikan jika unit tidak valid. Dengan demikian, perlindungan terhadap penipuan diterapkan. Variasi PoS berikut tersedia:
- Konsensus Delegated PoS (DPoS) membagi peserta menjadi โmemilihโ dan โmemvalidasiโ. Pemegang koin (peserta pemungutan suara) mendelegasikan hak mereka untuk memverifikasi dan mencatat transaksi pada blockchain ke peserta lain. Dengan demikian, validator melakukan semua pekerjaan komputasi dan mendapatkan imbalan untuk ini, dan kehadiran peserta pemungutan suara menjamin kejujuran para validator, karena mereka dapat diubah kapan saja.
- Konsensus LPoS (Sewa Bukti-Stake) memungkinkan Anda untuk menyewakan dana Anda ke node lain sehingga mereka memiliki kesempatan lebih baik untuk memeriksa blok. T.O. Anda bisa mendapatkan komisi untuk transaksi, sambil tidak berpartisipasi dalam verifikasi transaksi itu sendiri dan memblokir penambangan.
Masih ada sejumlah konsensus yang belum tersebar luas, saya hanya akan mencantumkannya di sini untuk mendapatkan informasi, dan gambaran umum algoritma konsensus itu sendiri dapat ditemukan, misalnya, dalam artikel:
Algoritma Konsensus di Blockchain .
- Penyair (Proof-of-Elapsed Time)
- PoC (Bukti Kapasitas)
- PoB (Bukti Bakar)
- PoWeight (Proof-of-Weight)
- PoA (Bukti Aktivitas) - PoW + PoS
- PoI (Bukti-Pentingnya Impor)
Keandalan dan model penyebaran blockchain
Blockchain publikStabilitas
Publik atau nama lain untuk
blockchain Tanpa Izin dicapai oleh fakta bahwa setiap orang dapat terhubung dan melihat informasi atau bahkan menghubungkan node mereka sendiri, dan kepercayaan dibangun berdasarkan konsensus PoW.
Blockchain pribadiBlockchain Pribadi atau
Privat . Dalam blockchain ini, hanya sekelompok peserta tertentu (organisasi atau orang) yang memiliki akses ke informasi. Blokir semacam itu dibangun oleh organisasi untuk meningkatkan laba atau efisiensi secara keseluruhan. Keandalan mereka dijamin oleh tujuan bersama para peserta dan algoritma konsensus dari PoS dan BFT.
Konsorsium BlockchainAda
Konsorsium atau
blockchain Izin Publik . Ini adalah blockchains sehingga setiap orang dapat terhubung untuk melihat, tetapi seorang peserta dapat menambahkan informasi atau menghubungkan situsnya hanya dengan izin dari peserta lain. Blokade semacam itu dibangun oleh organisasi untuk meningkatkan kepercayaan pada pelanggan atau konsumen produk atau masyarakat secara keseluruhan. Di sini, reliabilitas juga dicapai dengan adanya kepercayaan antara peserta dan algoritma konsensus PoS dan BFT yang sama.
Kontrak yang cerdas
Blockchain diimplementasikan setelah Bitcoin, sedikit banyak, menambahkan kemampuan untuk mengeksekusi kontrak pintar. Intinya, kontrak pintar adalah transaksi di mana kode program ditempatkan untuk dieksekusi. Kontrak pintar pada jaringan Ethereum dijalankan dalam EVM (Ethereum Virtual Machine). Untuk memulai pelaksanaan kontrak pintar, itu harus diluncurkan secara eksplisit oleh transaksi lain, atau prasyarat untuk eksekusi harus dipenuhi. Hasil penerapan kontrak pintar juga dicatat di blockchain. Mendapatkan data dari luar blockchain dimungkinkan, tetapi sangat terbatas.
Logika bisnis apa yang dapat diimplementasikan menggunakan kontrak pintar? Kenyataannya, tidak banyak, misalnya, memeriksa kondisi berdasarkan data dari blockchain, mengubah pemilik aset digital tergantung pada kondisi ini, menulis data ke penyimpanan permanen di dalam blockchain. Logikanya diimplementasikan dalam bahasa tingkat tinggi khusus, Soliditas.
Contoh klasik fungsionalitas yang diterapkan menggunakan kontrak pintar adalah masalah token untuk ICO. Sebagai contoh, saya menerapkan kontrak pintar untuk merilis 500 juta AlexToken yang sederhana.
Tautan di Etherscan adalah
Kode sumber kontrak pintar soliditas pragma solidity ^0.4.23; library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } c = a * b; assert(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) {
dan representasi biner tentang bagaimana jaringan melihatnya60806040526000600355600060045533600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560146101000a81548160ff021916908360028111156200006f57fe5b0217905550620001036b019d971e4fe8401e74000000600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200024a6401000000000262000b1d179091906401000000009004565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001986b019d971e4fe8401e740000006001546200024a6401000000000262000b1d179091906401000000009004565b6001819055506b033b2e3c9fd0803ce8000000600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b019d971e4fe8401e740000006040518082815260200191505060405180910390a362000267565b600081830190508281101515156200025e57fe5b80905092915050565b611cb880620002776000396000f300608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146104c7578063095ea7b31461055757806318160ddd146105bc57806323b872dd146105e7578063313ce5671461066c578063355274ea146106a3578063518ab2a8146106ce57806366188463146106f957806370a082311461075e57806389311e6f146107b55780638da5cb5b146107cc578063903a3ef61461082357806395d89b411461083a578063a9059cbb146108ca578063bf5839031461092f578063c7876ea41461095a578063cbcb317114610985578063d73dd623146109b0578063dd62ed3e14610a15578063f2fde38b14610a8c575b60008060008060006001600281111561012757fe5b600560149054906101000a900460ff16600281111561014257fe5b14151561014e57600080fd5b60003411151561015d57600080fd5b600060045411151561016e57600080fd5b3494506101a7670de0b6b3a764000061019968056bc75e2d6310000088610acf90919063ffffffff16565b610b0790919063ffffffff16565b9350600092506b033b2e3c9fd0803ce80000006101cf85600354610b1d90919063ffffffff16565b111561024c576101f66003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b915061022e670de0b6b3a764000061022068056bc75e2d6310000085610b0790919063ffffffff16565b610acf90919063ffffffff16565b90506102438186610b3990919063ffffffff16565b92508094508193505b61026184600354610b1d90919063ffffffff16565b6003819055506102886003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b6004819055506000831115610344573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156102dd573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b610395846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a361045184600154610b1d90919063ffffffff16565b600181905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501580156104bf573d6000803e3d6000fd5b505050505050005b3480156104d357600080fd5b506104dc610b52565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561056357600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8b565b604051808215151515815260200191505060405180910390f35b3480156105c857600080fd5b506105d1610c7d565b6040518082815260200191505060405180910390f35b3480156105f357600080fd5b50610652600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c87565b604051808215151515815260200191505060405180910390f35b34801561067857600080fd5b50610681611041565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156106af57600080fd5b506106b8611046565b6040518082815260200191505060405180910390f35b3480156106da57600080fd5b506106e3611056565b6040518082815260200191505060405180910390f35b34801561070557600080fd5b50610744600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061105c565b604051808215151515815260200191505060405180910390f35b34801561076a57600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ed565b6040518082815260200191505060405180910390f35b3480156107c157600080fd5b506107ca611335565b005b3480156107d857600080fd5b506107e16113eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082f57600080fd5b50610838611411565b005b34801561084657600080fd5b5061084f6114ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561088f578082015181840152602081019050610874565b50505050905090810190601f1680156108bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108d657600080fd5b50610915600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114e4565b604051808215151515815260200191505060405180910390f35b34801561093b57600080fd5b50610944611703565b6040518082815260200191505060405180910390f35b34801561096657600080fd5b5061096f611709565b6040518082815260200191505060405180910390f35b34801561099157600080fd5b5061099a611716565b6040518082815260200191505060405180910390f35b3480156109bc57600080fd5b506109fb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611726565b604051808215151515815260200191505060405180910390f35b348015610a2157600080fd5b50610a76600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611922565b6040518082815260200191505060405180910390f35b348015610a9857600080fd5b50610acd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119a9565b005b600080831415610ae25760009050610b01565b8183029050818382811515610af357fe5b04141515610afd57fe5b8090505b92915050565b60008183811515610b1457fe5b04905092915050565b60008183019050828110151515610b3057fe5b80905092915050565b6000828211151515610b4757fe5b818303905092915050565b6040805190810160405280600981526020017f416c6578546f6b656e000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610cc457600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d1157600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d9c57600080fd5b610ded826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e80826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f5182600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601281565b6b033b2e3c9fd0803ce800000081565b60035481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111561116d576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611201565b6111808382610b3990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561139157600080fd5b60028081111561139d57fe5b600560149054906101000a900460ff1660028111156113b857fe5b141515156113c557600080fd5b6001600560146101000a81548160ff021916908360028111156113e457fe5b0217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146d57600080fd5b60028081111561147957fe5b600560149054906101000a900460ff16600281111561149457fe5b141515156114a157600080fd5b6114a9611b01565b565b6040805190810160405280600381526020017f414c54000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561152157600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561156e57600080fd5b6115bf826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611652826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60045481565b68056bc75e2d6310000081565b6b019d971e4fe8401e7400000081565b60006117b782600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a4157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6002600560146101000a81548160ff02191690836002811115611b2057fe5b021790555060006004541115611c0a57611ba5600454600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611c89573d6000803e3d6000fd5b505600a165627a7a723058205bbef016cc7699572f944871cb6f05e69915ada3a92a1d9f03a3fb434aac0c2b0029
Lebih detail tentang kontrak pintar dapat ditemukan di artikel: Apa itu kontrak pintar di Ethereum .Kesimpulan
Kami telah membuat daftar teknologi di mana blockchain modern dibangun dan bagaimana mereka terkait satu sama lain. Sekarang mari kita merumuskan tugas-tugas mana yang dapat diselesaikan dengan menggunakan blockchain, dan solusi mana yang, dalam kasus terbaik, tidak efisien. Jadi, tidak perlu menggunakan blockchain jika:- Transaksi dilakukan di lingkungan tepercaya;
- Kehadiran komisi perantara tidak memperburuk kehidupan para peserta;
- Peserta tidak memiliki properti yang dapat direpresentasikan sebagai aset digital;
- Tidak ada distribusi dalam aset digital, mis. hanya satu anggota yang memiliki atau memberikan nilai.
Apa masa depan blockchain? Sekarang kita hanya dapat berspekulasi tentang cara-cara yang mungkin untuk mengembangkan teknologi blockchain:- Blockchain akan menjadi teknologi basis data konvensional yang sama seperti, misalnya, SQL atau NoSQL untuk menyelesaikan berbagai tugas spesifiknya;
- Blockchain akan menjadi protokol luas seperti HTTP untuk Internet;
- Blockchain akan menjadi dasar untuk sistem keuangan dan politik baru di planet ini!
Pada bagian selanjutnya, kita akan melihat blockchain apa yang ada saat ini dan mengapa mereka digunakan di berbagai industri.Itu baru permulaan!Ketiga artikel:
Apa yang harus kita bangun dengan blockchain?Blockchain: apa yang harus kita bangun kasing?Blockchain: apa yang harus kita bangun PoC?