Buku “Menciptakan kontrak pintar Soliditas untuk blockchain Ethereum. Panduan praktis"

Buku “Menciptakan kontrak pintar Soliditas untuk blockchain Ethereum. Panduan praktis"
Selama lebih dari setahun saya telah mengerjakan buku “Menciptakan Kontrak Cerdas Soliditas untuk Ethereum Blockchain. Panduan Praktis", dan sekarang pekerjaan ini telah selesai, dan bukunya diterbitkan dan tersedia dalam Liter.

Saya harap buku saya akan membantu Anda dengan cepat mulai membuat kontak pintar Solidity dan mendistribusikan DApps untuk blockchain Ethereum. Terdiri dari 12 pelajaran dengan tugas praktek. Setelah menyelesaikannya, pembaca akan dapat membuat node Ethereum lokal mereka sendiri, menerbitkan kontrak pintar dan memanggil metode mereka, bertukar data antara dunia nyata dan kontrak pintar menggunakan oracle, dan bekerja dengan jaringan debug uji Rinkeby.

Buku ini ditujukan kepada semua orang yang tertarik dengan teknologi canggih di bidang blockchain dan ingin dengan cepat mendapatkan pengetahuan yang memungkinkan mereka melakukan pekerjaan yang menarik dan menjanjikan.

Di bawah ini Anda akan menemukan daftar isi dan bab pertama buku ini (juga seterusnya liter potongan buku tersedia). Saya berharap dapat menerima masukan, komentar dan saran. Saya akan mencoba mempertimbangkan semua ini ketika mempersiapkan edisi buku berikutnya.

daftar isipengenalanBuku kami ditujukan bagi mereka yang ingin tidak hanya memahami prinsip-prinsip blockchain Ethereum, tetapi juga untuk memperoleh keterampilan praktis dalam membuat DApps terdistribusi dalam bahasa pemrograman Solidity untuk jaringan ini.

Lebih baik tidak hanya membaca buku ini, tetapi mengerjakannya, menyelesaikan tugas-tugas praktis yang dijelaskan dalam pelajaran. Untuk bekerja, Anda memerlukan komputer lokal, server virtual atau cloud dengan OS Debian atau Ubuntu terinstal. Anda juga dapat menggunakan Raspberry Pi untuk melakukan banyak tugas.

Pada pelajaran pertama Kita akan melihat prinsip operasi blockchain Ethereum dan terminologi dasarnya, dan juga membahas di mana blockchain ini dapat digunakan.

target pelajaran kedua — membuat node blockchain Ethereum pribadi untuk pekerjaan lebih lanjut dalam kursus ini di server Ubuntu dan Debian. Kami akan melihat fitur instalasi utilitas dasar, seperti geth, yang memastikan pengoperasian node blockchain kami, serta daemon penyimpanan data yang terdesentralisasi.

Pelajaran ketiga akan mengajari Anda cara bereksperimen dengan Ethereum pada komputer mikro Raspberry Pi yang murah. Anda akan menginstal sistem operasi (OS) Rasberian pada Raspberry Pi, utilitas Geth yang mendukung node blockchain, dan daemon penyimpanan data terdesentralisasi Swarm.

Pelajaran empat didedikasikan untuk akun dan unit mata uang kripto di jaringan Ethereum, serta cara mentransfer dana dari satu akun ke akun lainnya dari konsol Geth. Anda akan mempelajari cara membuat akun, melakukan transaksi transfer dana, dan mendapatkan status transaksi serta tanda terima.

Pada pelajaran kelima Anda akan mengenal kontrak pintar di jaringan Ethereum dan mempelajari eksekusinya oleh mesin virtual Ethereum.

Anda akan membuat dan mempublikasikan kontrak pintar pertama Anda di jaringan pribadi Ethereum dan mempelajari cara memanggil fungsinya. Untuk melakukan ini, Anda akan menggunakan Remix Solidity IDE. Anda juga akan mempelajari cara menginstal dan menggunakan kompiler batch solc.
Kami juga akan membahas apa yang disebut Application Binary Interface (ABI) dan mengajari Anda cara menggunakannya.

Pelajaran keenam didedikasikan untuk membuat skrip JavaScript yang menjalankan Node.js dan melakukan operasi dengan kontrak pintar Solidity.

Anda akan menginstal Node.js di Ubuntu, Debian dan Rasberian OS, menulis skrip untuk menerbitkan kontrak pintar di jaringan lokal Ethereum dan memanggil fungsinya.

Selain itu, Anda akan mempelajari cara mentransfer dana antar akun reguler menggunakan skrip, serta mengkreditkannya ke akun kontrak pintar.

Pada pelajaran ketujuh Anda akan mempelajari cara menginstal dan menggunakan kerangka kerja Truffle, yang populer di kalangan pengembang kontrak pintar Solidity. Anda akan mempelajari cara membuat skrip JavaScript yang memanggil fungsi kontrak menggunakan modul truffle-contract, dan menguji kontrak pintar Anda menggunakan Truffle.

Pelajaran kedelapan didedikasikan untuk tipe data Soliditas. Anda akan menulis kontrak pintar yang bekerja dengan tipe data seperti bilangan bulat bertanda tangan dan tidak bertanda tangan, angka bertanda tangan, string, alamat, variabel kompleks, array, enumerasi, struktur, dan kamus.

Pada pelajaran kesembilan Anda akan selangkah lebih dekat dalam menciptakan kontrak pintar untuk mainnet Ethereum. Anda akan mempelajari cara mempublikasikan kontrak menggunakan Truffle di jaringan pribadi Geth, serta di testnet Rinkeby. Men-debug kontrak pintar di jaringan Rinkeby sangat berguna sebelum mempublikasikannya di jaringan utama - hampir semuanya nyata di sana, tetapi gratis.

Sebagai bagian dari pelajaran, Anda akan membuat node jaringan pengujian Rinkeby, mendanainya dengan dana, dan menerbitkan kontrak pintar.

pelajaran 10 didedikasikan untuk penyimpanan data terdistribusi Ethereum Swarm. Dengan menggunakan penyimpanan terdistribusi, Anda menghemat penyimpanan data dalam jumlah besar di blockchain Ethereum.

Dalam tutorial ini, Anda akan membuat penyimpanan Swarm lokal, operasi menulis dan membaca pada file, dan direktori file. Selanjutnya, Anda akan mempelajari cara bekerja dengan gateway Swarm publik, menulis skrip untuk mengakses Swarm dari Node.js, serta menggunakan modul Perl Net::Ethereum::Swarm.

Tujuan Pelajaran 11 — master yang bekerja dengan kontrak pintar Solidity menggunakan bahasa pemrograman Python populer dan kerangka Web3.py. Anda akan menginstal kerangka kerja, menulis skrip untuk mengkompilasi dan menerbitkan kontrak pintar, dan memanggil fungsinya. Dalam hal ini, Web3.py akan digunakan sendiri dan bersama dengan lingkungan pengembangan terintegrasi Truffle.

Pada pelajaran 12 Anda akan belajar mentransfer data antara kontrak pintar dan dunia nyata menggunakan oracle. Ini akan berguna bagi Anda untuk menerima data dari situs Web, perangkat IoT, berbagai perangkat dan sensor, dan mengirim data dari kontrak pintar ke perangkat tersebut. Pada bagian praktis dari pelajaran ini, Anda akan membuat oracle dan kontrak pintar yang menerima nilai tukar saat ini antara USD dan rubel dari situs web Bank Sentral Federasi Rusia.

Pelajaran 1. Secara singkat tentang blockchain dan jaringan EthereumTujuan pelajaran: mengenal prinsip operasi blockchain Ethereum, bidang penerapannya, dan terminologi dasarnya.
Tugas praktek: tidak termasuk dalam pelajaran ini.

Hampir tidak ada pengembang perangkat lunak saat ini yang belum pernah mendengar apa pun tentang teknologi blockchain (Blockchain), mata uang kripto (Cryptocurrency atau Cryptocurrency), Bitcoin (Bitcoin), penawaran koin awal (ICO, Initial coin offer), kontrak pintar (Smart Contract), serta konsep dan istilah lain yang terkait dengan blockchain.

Teknologi Blockchain membuka pasar baru dan menciptakan lapangan kerja bagi programmer. Jika Anda memahami semua seluk-beluk teknologi mata uang kripto dan teknologi kontrak pintar, maka Anda tidak akan mengalami masalah dalam menerapkan pengetahuan ini dalam praktik.

Harus dikatakan bahwa ada banyak spekulasi seputar cryptocurrency dan blockchain. Kami akan mengesampingkan diskusi tentang perubahan nilai mata uang kripto, pembuatan piramida, seluk-beluk undang-undang mata uang kripto, dll. Dalam kursus pelatihan kami, kami akan fokus terutama pada aspek teknis penerapan kontrak pintar dari blockchain Ethereum (Ethereum, Ether) dan pengembangan apa yang disebut aplikasi terdesentralisasi (Aplikasi Terdistribusi, DApp).

Apa itu blockchain?

Blockchain (Block Chain) adalah rantai blok data yang terhubung satu sama lain dengan cara tertentu. Pada awal rantai terdapat blok pertama yang disebut blok primer (blok genesis) atau blok genesis. Diikuti oleh yang kedua, lalu yang ketiga dan seterusnya.

Semua blok data ini secara otomatis diduplikasi di banyak node jaringan blockchain. Hal ini memastikan penyimpanan data blockchain terdesentralisasi.
Anda dapat membayangkan sistem blockchain sebagai sejumlah besar node (server fisik atau virtual) yang terhubung dalam jaringan dan mereplikasi semua perubahan dalam rantai blok data. Ini seperti komputer multi-server raksasa, dan node dari komputer (server) tersebut dapat tersebar di seluruh dunia. Dan Anda juga dapat menambahkan komputer Anda ke jaringan blockchain.

Basis Data Terdistribusi

Blockchain dapat dianggap sebagai database terdistribusi yang direplikasi di semua node jaringan blockchain. Secara teori, blockchain akan beroperasi selama setidaknya satu node berfungsi, menyimpan semua blok di blockchain.

Registri Data Terdistribusi

Blockchain dapat dianggap sebagai buku besar data dan operasi (transaksi) yang terdistribusi. Nama lain untuk register tersebut adalah buku besar.

Data dapat ditambahkan ke buku besar terdistribusi, namun tidak dapat diubah atau dihapus. Ketidakmungkinan ini dicapai, khususnya, dengan penggunaan algoritma kriptografi, algoritma khusus untuk menambahkan blok ke rantai dan penyimpanan data yang terdesentralisasi.

Saat menambahkan blok dan melakukan operasi (transaksi), kunci pribadi dan publik digunakan. Mereka membatasi pengguna blockchain dengan hanya memberi mereka akses ke blok data mereka sendiri.

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 cara ini, seluruh riwayat transaksi dapat dicatat tanpa perubahan di blockchain. Oleh karena itu, blockchain dapat digunakan, misalnya, untuk menyimpan transaksi perbankan dengan aman, informasi hak cipta, riwayat perubahan pemilik properti, dll.

Blockchain Ethereum berisi apa yang disebut status sistem. Saat transaksi dieksekusi, keadaan berubah dari keadaan awal ke keadaan saat ini. Transaksi dicatat dalam blok.

Blockchain publik dan swasta

Perlu dicatat di sini bahwa semua hal di atas hanya berlaku untuk apa yang disebut jaringan blockchain publik, yang tidak dapat dikendalikan oleh individu atau badan hukum, lembaga pemerintah, atau pemerintah mana pun.
Apa yang disebut jaringan blockchain pribadi berada di bawah kendali penuh pembuatnya, dan segala sesuatu mungkin terjadi di sana, misalnya, penggantian seluruh blok rantai secara menyeluruh.

Aplikasi praktis dari blockchain

Apa kegunaan blockchain?

Singkatnya, blockchain memungkinkan Anda melakukan transaksi (transaksi) dengan aman antara orang atau perusahaan yang tidak saling percaya. Data yang tercatat di blockchain (transaksi, data pribadi, dokumen, sertifikat, kontrak, faktur, dll.) tidak dapat dipalsukan atau diganti setelah dicatat. Oleh karena itu, berdasarkan blockchain, dimungkinkan untuk membuat, misalnya, pendaftar terdistribusi yang tepercaya untuk berbagai jenis dokumen.

Tentu saja, Anda tahu bahwa sistem mata uang kripto diciptakan berdasarkan blockchain, yang dirancang untuk menggantikan uang kertas biasa. Uang kertas disebut juga fiat (dari Fiat Money).
Blockchain memastikan penyimpanan dan kekekalan transaksi yang dicatat dalam blok, itulah sebabnya Blockchain dapat digunakan untuk membuat sistem mata uang kripto. Ini berisi seluruh riwayat transfer dana kripto antara pengguna (akun) yang berbeda, dan operasi apa pun dapat dilacak.

Meskipun transaksi dalam sistem mata uang kripto bisa bersifat anonim, menarik mata uang kripto dan menukarnya dengan uang fiat biasanya mengakibatkan terungkapnya identitas pemilik aset mata uang kripto.

Apa yang disebut kontrak pintar, yaitu perangkat lunak yang berjalan di jaringan Ethereum, memungkinkan Anda mengotomatiskan proses penyelesaian transaksi dan memantau implementasinya. Hal ini sangat efektif jika pembayaran transaksi dilakukan menggunakan mata uang kripto Ether.

Blockchain Ethereum dan kontrak pintar Ethereum yang ditulis dalam bahasa pemrograman Solidity dapat digunakan, misalnya, di bidang berikut:

  • alternatif selain notaris dokumen;
  • penyimpanan daftar objek real estat dan informasi tentang transaksi dengan objek real estat;
  • penyimpanan informasi hak cipta atas kekayaan intelektual (buku, gambar, karya musik, dll.);
  • penciptaan sistem pemungutan suara yang independen;
  • keuangan dan Perbankan;
  • logistik skala internasional, pelacakan pergerakan barang;
  • penyimpanan data pribadi sebagai analogi sistem kartu identitas;
  • mengamankan transaksi di bidang komersial;
  • menyimpan hasil pemeriksaan kesehatan, serta riwayat prosedur yang ditentukan

Masalah dengan blockchain

Namun, tentu saja, tidak semuanya sesederhana kelihatannya!

Ada masalah dalam memverifikasi data sebelum menambahkannya ke blockchain (misalnya, apakah data tersebut palsu?), masalah dengan keamanan sistem dan perangkat lunak aplikasi yang digunakan untuk bekerja dengan blockchain, masalah dengan kemungkinan menggunakan metode rekayasa sosial untuk mencuri akses ke dompet cryptocurrency, dll. .P.

Sekali lagi, jika kita tidak berbicara tentang blockchain publik, yang nodenya tersebar di seluruh dunia, tetapi tentang blockchain pribadi milik seseorang atau organisasi, maka tingkat kepercayaan di sini tidak akan lebih tinggi dari tingkat kepercayaan. pada orang ini atau organisasi ini.

Perlu juga diingat bahwa data yang dicatat dalam blockchain dapat diakses oleh semua orang. Dalam hal ini, blockchain (terutama publik) tidak cocok untuk menyimpan informasi rahasia. Namun, fakta bahwa informasi di blockchain tidak dapat diubah dapat membantu mencegah atau menyelidiki berbagai jenis aktivitas penipuan.

Aplikasi terdesentralisasi Ethereum akan nyaman jika Anda membayar penggunaannya dengan mata uang kripto. Semakin banyak orang yang memiliki mata uang kripto atau ingin membelinya, DApps dan kontrak pintar akan semakin populer.

Masalah umum dengan blockchain yang menghambat penerapan praktisnya termasuk terbatasnya kecepatan penambahan blok baru dan biaya transaksi yang relatif tinggi. Namun teknologi di bidang ini berkembang secara aktif, dan ada harapan bahwa masalah teknis akan teratasi seiring berjalannya waktu.

Masalah lainnya adalah kontrak pintar pada blockchain Ethereum beroperasi 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.), dan juga tidak dapat mengeluarkan data ke perangkat eksternal apa pun. Kami akan membahas masalah ini dan cara mengatasinya dalam pelajaran yang ditujukan untuk apa yang disebut Oracles - perantara informasi kontrak pintar.

Ada juga batasan hukum. Di beberapa negara, misalnya, dilarang menggunakan mata uang kripto sebagai alat pembayaran, namun Anda dapat memilikinya sebagai aset digital, seperti sekuritas. Aset tersebut dapat dibeli dan dijual di bursa. Bagaimanapun, saat membuat proyek yang bekerja dengan mata uang kripto, Anda perlu memahami undang-undang negara yang berada di bawah yurisdiksi proyek Anda.

Bagaimana rantai blockchain terbentuk

Seperti yang telah kami katakan, blockchain adalah rantai blok data yang sederhana. Pertama, blok pertama dari rantai ini dibentuk, kemudian blok kedua ditambahkan ke dalamnya, dan seterusnya. Data transaksi diasumsikan disimpan dalam blok, dan ditambahkan ke blok terbaru.

Pada Gambar. 1.1 kami menunjukkan versi paling sederhana dari rangkaian blok, di mana blok pertama merujuk ke blok berikutnya.

Buku “Menciptakan kontrak pintar Soliditas untuk blockchain Ethereum. Panduan praktis"
Beras. 1.1. Urutan blok sederhana

Namun, dengan opsi ini, sangat mudah untuk mengutak-atik konten blok mana pun dalam rantai, karena blok tersebut tidak berisi informasi apa pun untuk melindungi terhadap perubahan. Mengingat bahwa blockchain dimaksudkan untuk digunakan oleh orang-orang dan perusahaan-perusahaan yang tidak saling percaya, kita dapat menyimpulkan bahwa metode penyimpanan data ini tidak cocok untuk blockchain.

Mari kita mulai melindungi blok dari pemalsuan. Pada tahap pertama, kami akan mencoba melindungi setiap blok dengan checksum (Gbr. 1.2).

Buku “Menciptakan kontrak pintar Soliditas untuk blockchain Ethereum. Panduan praktis"
Beras. 1.2. Menambahkan perlindungan untuk blok ini dengan checksum

Sekarang penyerang tidak bisa begitu saja mengubah blok, karena blok tersebut berisi checksum dari data blok. Pengecekan checksum akan menunjukkan bahwa data telah diubah.

Untuk menghitung checksum, Anda dapat menggunakan salah satu fungsi hashing seperti MD-5, SHA-1, SHA-256, dll. Fungsi hash menghitung nilai (misalnya, string teks dengan panjang konstan) dengan melakukan operasi ireversibel pada blok data. Operasinya bergantung pada jenis fungsi hash.

Sekalipun isi blok datanya sedikit berubah, nilai hashnya juga akan berubah. Dengan menganalisis nilai fungsi hash, tidak mungkin merekonstruksi blok data yang telah dihitung.

Apakah perlindungan seperti itu cukup? Sayangnya tidak ada.

Dalam skema ini, checksum (fungsi hash) hanya melindungi blok individual, tetapi tidak seluruh blockchain. Mengetahui algoritma untuk menghitung fungsi hash, penyerang dapat dengan mudah mengganti isi blok. Selain itu, tidak ada yang menghalanginya untuk melepaskan blok dari rantai atau menambahkan blok baru.

Untuk melindungi seluruh rantai secara keseluruhan, Anda juga dapat menyimpan di setiap blok, bersama dengan data, hash dari data dari blok sebelumnya (Gbr. 1.3).

Buku “Menciptakan kontrak pintar Soliditas untuk blockchain Ethereum. Panduan praktis"
Beras. 1.3. Tambahkan hash dari blok sebelumnya ke blok data

Dalam skema ini, untuk mengubah sebuah blok, Anda perlu menghitung ulang fungsi hash dari semua blok berikutnya. Tampaknya, apa masalahnya?

Dalam blockchain nyata, kesulitan buatan juga diciptakan untuk menambahkan blok baru—algoritma yang membutuhkan banyak sumber daya komputasi digunakan. Mengingat bahwa untuk membuat perubahan pada suatu blok, Anda perlu menghitung ulang tidak hanya satu blok ini, tetapi semua blok berikutnya, hal ini akan sangat sulit dilakukan.

Ingatlah juga bahwa data blockchain disimpan (diduplikasi) di banyak node jaringan, mis. Penyimpanan terdesentralisasi digunakan. Dan ini membuat pemalsuan blok menjadi jauh lebih sulit, karena perubahan harus dilakukan pada semua node jaringan.

Karena blok menyimpan informasi tentang blok sebelumnya, maka dimungkinkan untuk memeriksa isi semua blok dalam rantai.

rantai blok ethereum

Blockchain Ethereum adalah platform tempat DApps terdistribusi dapat dibuat. Tidak seperti platform lain, Ethereum mengizinkan penggunaan apa yang disebut kontrak pintar (smart contracts), yang ditulis dalam bahasa pemrograman Solidity.

Platform ini dibuat pada tahun 2013 oleh Vitalik Buterin, pendiri Majalah Bitcoin, dan diluncurkan pada tahun 2015. Segala sesuatu yang akan kami pelajari atau lakukan dalam kursus pelatihan kami berkaitan secara khusus dengan blockchain Ethereum dan kontrak pintar Solidity.

Penambangan atau bagaimana blok dibuat

Penambangan adalah proses yang agak rumit dan intensif sumber daya untuk menambahkan blok baru ke rantai blockchain, dan sama sekali bukan “penambangan mata uang kripto.” Penambangan memastikan fungsionalitas blockchain, karena proses inilah yang bertanggung jawab untuk menambahkan transaksi ke blockchain Ethereum.

Orang dan organisasi yang terlibat dalam penambahan blok disebut penambang.
Perangkat lunak yang berjalan pada node penambang mencoba menemukan parameter hashing yang disebut Nonce untuk blok terakhir guna mendapatkan nilai hash tertentu yang ditentukan oleh jaringan. Algoritme hashing Ethash yang digunakan di Ethereum memungkinkan Anda memperoleh nilai Nonce hanya melalui pencarian berurutan.

Jika node penambang menemukan nilai Nonce yang benar, maka inilah yang disebut bukti kerja (PoW, Proof-of-work). Dalam hal ini, jika sebuah blok ditambahkan ke jaringan Ethereum, penambang menerima hadiah tertentu dalam mata uang jaringan - Ether. Pada saat penulisan, hadiahnya adalah 5 Eter, namun ini akan berkurang seiring berjalannya waktu.

Dengan demikian, penambang Ethereum memastikan pengoperasian jaringan dengan menambahkan blok, dan menerima uang cryptocurrency untuk ini. Ada banyak informasi di internet tentang penambang dan penambangan, namun kami akan fokus pada pembuatan kontrak Soliditas dan DApps di jaringan Ethereum.

Ringkasan pelajaran

Pada pelajaran pertama, Anda mengenal blockchain dan mempelajari bahwa itu adalah rangkaian blok yang disusun secara khusus. Isi blok yang direkam sebelumnya tidak dapat diubah, karena hal ini memerlukan penghitungan ulang semua blok berikutnya di banyak node jaringan, yang memerlukan banyak sumber daya dan waktu.

Blockchain dapat digunakan untuk menyimpan hasil transaksi. Tujuan utamanya adalah untuk mengatur transaksi yang aman antara pihak-pihak (orang dan organisasi) yang tidak ada kepercayaan. Anda mempelajari area bisnis tertentu dan area mana yang dapat digunakan dalam blockchain Ethereum dan kontrak pintar Solidity. Ini adalah sektor perbankan, pendaftaran hak milik, dokumen, dll.

Anda juga mengetahui bahwa berbagai masalah bisa muncul saat menggunakan blockchain. Ini adalah masalah verifikasi informasi yang ditambahkan ke blockchain, kecepatan blockchain, biaya transaksi, masalah pertukaran data antara kontrak pintar dan dunia nyata, serta potensi serangan oleh penyerang yang bertujuan mencuri dana cryptocurrency dari akun pengguna. .

Kami juga secara singkat membahas tentang penambangan sebagai proses menambahkan blok baru ke blockchain. Penambangan diperlukan untuk menyelesaikan transaksi. Mereka yang terlibat dalam penambangan memastikan berfungsinya blockchain dan menerima hadiah dalam mata uang kripto untuk ini.

Pelajaran 2. Mempersiapkan lingkungan kerja di Ubuntu dan Debian OSMemilih sistem operasi
Menginstal utilitas yang diperlukan
Menginstal Geth dan Swarm di Ubuntu
Menginstal Geth dan Swarm di Debian
Persiapan awal
Mengunduh distribusi Go
Mengatur variabel lingkungan
Memeriksa versi Go
Menginstal Geth dan Swarm
Membuat blockchain pribadi
Mempersiapkan file genesis.json
Buat direktori untuk bekerja
Buat sebuah akun
Memulai inisialisasi node
Opsi Peluncuran Node
Hubungkan ke simpul kami
Manajemen penambangan dan pemeriksaan saldo
Mematikan konsol Geth
Ringkasan pelajaran

Pelajaran 3. Mempersiapkan lingkungan kerja pada Raspberry Pi 3Mempersiapkan Raspberry Pi 3 untuk bekerja
Menginstal Rasberian
Menginstal pembaruan
Mengaktifkan Akses SSH
Menetapkan Alamat IP Statis
Menginstal utilitas yang diperlukan
Menginstal Pergi
Mengunduh distribusi Go
Mengatur variabel lingkungan
Memeriksa versi Go
Menginstal Geth dan Swarm
Membuat blockchain pribadi
Memeriksa akun dan saldo Anda
Ringkasan pelajaran

Pelajaran 4. Rekening dan transfer dana antar rekeningLihat dan tambahkan akun
Lihat daftar akun
Menambahkan akun
opsi perintah akun geth
Kata sandi akun
Mata uang kripto dalam Ethereum
Unit Mata Uang Ethereum
Kami menentukan saldo akun kami saat ini
Transfer dana dari satu rekening ke rekening lainnya
metode eth.sendTransaction
Lihat status transaksi
Resi transaksi
Ringkasan pelajaran

Pelajaran 5. Menerbitkan kontrak pertama AndaKontrak pintar di Ethereum
Eksekusi Kontrak Cerdas
Mesin Virtual Ethereum
Lingkungan pengembangan terintegrasi Remix Solidity IDE
Menjalankan kompilasi
Memanggil Fungsi Kontrak
Menerbitkan kontrak di jaringan pribadi
Mendapatkan definisi ABI dan kode biner kontrak
Publikasi kontrak
Memeriksa status transaksi penerbitan kontrak
Memanggil Fungsi Kontrak
Solc kompiler batch
Menginstal solc di Ubuntu
Menginstal solc di Debian
Menyusun kontrak HelloSol
Publikasi kontrak
Menginstal solc di Rasberian
Ringkasan pelajaran

Pelajaran 6. Kontrak pintar dan Node.jsMenginstal Node.js
Instalasi di Ubuntu
Instalasi di Debian
Menginstal dan menjalankan Ganache-cli
instalasi Web3
Menginstal solc
Menginstal Node.js di Rasberian
Skrip untuk mendapatkan daftar akun di konsol
Skrip untuk menerbitkan kontrak pintar
Luncurkan dan dapatkan parameter
Mendapatkan opsi peluncuran
Kompilasi Kontrak
Membuka blokir akun Anda
Memuat ABI dan kode biner kontrak
Memperkirakan jumlah gas yang dibutuhkan
Buat objek dan mulai menerbitkan kontrak
Menjalankan skrip penerbitan kontrak
Memanggil fungsi kontrak pintar
Apakah mungkin untuk memperbarui kontrak pintar yang diterbitkan?
Bekerja dengan Web3 versi 1.0.x
Mendapatkan daftar akun
Publikasi kontrak
Memanggil Fungsi Kontrak
Transfer dana dari satu rekening ke rekening lainnya
Transfer dana ke rekening kontrak
Memperbarui kontrak pintar HelloSol
Buat skrip untuk melihat saldo akun Anda
Tambahkan panggilan ke fungsi getBalance ke skrip call_contract_get_promise.js
Kami menambah akun kontrak pintar
Ringkasan pelajaran

Pelajaran 7. Pengantar TruffleMemasang Truffle
Buat proyek HelloSol
Membuat Direktori dan File Proyek
Direktori kontrak
Migrasi katalog
Tes direktori
file truffle-config.js
Menyusun kontrak HelloSol
Mulai menerbitkan kontrak
Memanggil Fungsi Kontrak HelloSol di Truffle Prompt
Memanggil fungsi kontrak HelloSol dari skrip JavaScript yang menjalankan Node.js
Memasang modul kontrak truffle
Memanggil fungsi kontrak getValue dan getString
Memanggil fungsi kontrak setValue dan setString
Modifikasi kontrak dan publikasi ulang
Bekerja dengan Web3 versi 1.0.x
Membuat perubahan pada kontrak pintar HelloSol
Skrip untuk memanggil metode kontrak
Menguji di Truffle
Uji soliditas
Tes JavaScript
Ringkasan pelajaran

Pelajaran 8. Tipe Data SoliditasKontrak untuk mempelajari tipe data
Tipe data Boolean
Bilangan bulat tak bertanda dan bilangan bulat bertanda
Nomor titik tetap
alamat
Variabel tipe kompleks
Array Ukuran Tetap
Array dinamis
Pencacahan
Struktur
Pemetaan kamus
Ringkasan pelajaran

Pelajaran 9. Migrasi kontrak ke jaringan pribadi dan ke jaringan RinkebyMenerbitkan kontrak dari Truffle ke jaringan pribadi Geth
Mempersiapkan node jaringan pribadi
Mempersiapkan kontrak kerja
Menyusun dan memigrasikan kontrak ke jaringan Truffle
Memulai geth migrasi jaringan lokal
Mendapatkan artefak Truffle
Menerbitkan kontrak dari Truffle ke testnet Rinkeby
Mempersiapkan node Geth untuk bekerja dengan Rinkeby
Sinkronisasi simpul
Menambahkan akun
Mengisi ulang akun Rinkeby Anda dengan ether
Meluncurkan migrasi kontrak ke jaringan Rinkeby
Melihat informasi kontrak di jaringan Rinkeby
Konsol Truffle untuk Jaringan Rinkeby
Cara yang lebih mudah untuk memanggil fungsi kontrak
Memanggil metode kontrak menggunakan Node.js
Transfer dana antar rekening di konsol Truffle untuk Rinkby
Ringkasan pelajaran

Pelajaran 10. Penyimpanan Data Terdesentralisasi Ethereum SwarmBagaimana cara kerja Kawanan Ethereum?
Menginstal dan meluncurkan Swarm
Operasi dengan file dan direktori
Mengunggah File ke Ethereum Swarm
Membaca file dari Ethereum Swarm
Lihat manifes file yang diunggah
Memuat direktori dengan subdirektori
Membaca file dari direktori yang diunduh
Menggunakan gateway Swarm publik
Mengakses Swarm dari skrip Node.js
Perl Net::Ethereum::Modul gerombolan
Memasang modul Net::Ethereum::Swarm
Menulis dan membaca data
Ringkasan pelajaran

Pelajaran 11. Kerangka kerja Web3.py untuk bekerja dengan Ethereum dengan PythonMenginstal Web3.py
Memperbarui dan menginstal paket yang diperlukan
Memasang modul easysolc
Menerbitkan kontrak menggunakan Web3.py
Kompilasi Kontrak
Menghubungkan ke penyedia
Jalankan publikasi kontrak
Menyimpan alamat kontrak dan abi dalam file
Menjalankan skrip penerbitan kontrak
Memanggil Metode Kontrak
Membaca alamat dan abi kontrak dari file JSON
Menghubungkan ke penyedia
Membuat Objek Kontrak
Memanggil Metode Kontrak
Truffle dan Web3.py
Ringkasan pelajaran

Pelajaran 12. OracleBisakah kontrak pintar mempercayai data dari dunia luar?
Oracles sebagai perantara informasi blockchain
Sumber data
Kode untuk mewakili data dari sumber
Oracle untuk mencatat nilai tukar di blockchain
Kontrak USDRateOracle
Memperbarui nilai tukar dalam kontrak pintar
Menggunakan Penyedia Soket Web
Menunggu acara RateUpdate
Menangani acara RateUpdate
Memulai pembaruan data dalam kontrak pintar
Ringkasan pelajaran

Sumber: www.habr.com

Tambah komentar