Buku “Mencipta Kontrak Pintar Solidity untuk Blockchain Ethereum. Panduan Praktikal»

Buku “Mencipta Kontrak Pintar Solidity untuk Blockchain Ethereum. Panduan Praktikal»
Selama lebih setahun saya telah mengusahakan buku “Membina Kontrak Pintar Solidity untuk Ethereum Blockchain. Panduan Praktikal”, dan kini kerja ini selesai, dan buku diterbitkan dan tersedia dalam Liter.

Saya harap buku saya akan membantu anda mula membina kenalan pintar Solidity dengan cepat dan mengedarkan DApps untuk blockchain Ethereum. Ia terdiri daripada 12 pelajaran dengan tugas praktikal. Selepas melengkapkannya, pembaca akan dapat mencipta nod Ethereum tempatan mereka sendiri, menerbitkan kontrak pintar dan memanggil kaedah mereka, bertukar-tukar data antara dunia sebenar dan kontrak pintar menggunakan oracles, dan bekerja dengan rangkaian nyahpepijat ujian Rinkeby.

Buku ini ditujukan kepada semua orang yang berminat dengan teknologi canggih dalam bidang blockchain dan ingin cepat mendapatkan pengetahuan yang membolehkan mereka melakukan kerja yang menarik dan menjanjikan.

Di bawah anda akan menemui jadual kandungan dan bab pertama buku (juga pada Litres serpihan buku boleh didapati). Saya berharap mendapat maklum balas, komen dan cadangan. Saya akan cuba mengambil kira semua ini semasa menyediakan edisi buku seterusnya.

jadual kandunganPengenalanBuku kami ditujukan untuk mereka yang ingin bukan sahaja memahami prinsip blockchain Ethereum, tetapi juga memperoleh kemahiran praktikal dalam mencipta DApps yang diedarkan dalam bahasa pengaturcaraan Solidity untuk rangkaian ini.

Adalah lebih baik bukan sahaja membaca buku ini, tetapi bekerja dengannya, menyelesaikan tugas praktikal yang diterangkan dalam pelajaran. Untuk bekerja, anda memerlukan komputer tempatan, pelayan maya atau awan dengan Debian atau Ubuntu dipasang. Anda juga boleh menggunakan Raspberry Pi untuk melaksanakan banyak tugas.

Pada pelajaran pertama kami akan merangkumi prinsip blockchain Ethereum dan terminologi asas, serta bercakap tentang di mana blockchain ini boleh digunakan.

Matlamat pelajaran kedua - cipta nod blockchain Ethereum peribadi untuk kerja lanjut dalam rangka kerja kursus ini pada pelayan Ubuntu dan Debian. Kami akan melihat ciri-ciri memasang utiliti asas, seperti geth, yang memastikan operasi nod blockchain kami, serta daemon penyimpanan data terdesentralisasi kumpulan.

Pelajaran ketiga mengajar anda cara bereksperimen dengan Ethereum pada mikrokomputer Raspberry Pi yang murah. Anda akan memasang sistem pengendalian (OS) Rasberian pada Raspberry Pi, utiliti Geth yang menggerakkan nod blockchain, dan daemon gudang data terdesentralisasi Swarm.

pelajaran keempat didedikasikan untuk akaun dan unit mata wang kripto dalam rangkaian Ethereum, serta cara untuk memindahkan dana dari satu akaun ke akaun yang lain dari konsol Geth. Anda akan belajar cara membuat akaun, memulakan transaksi pemindahan dana, mendapatkan status transaksi dan resit.

Pada pelajaran kelima anda akan berkenalan dengan kontrak pintar di rangkaian Ethereum, belajar tentang pelaksanaannya oleh mesin maya Ethereum.

Anda akan membuat dan menerbitkan kontrak pintar pertama anda pada rangkaian peribadi Ethereum dan mempelajari cara memanggil fungsinya. Untuk melakukan ini, anda akan menggunakan Remix Solidity IDE. Di samping itu, anda akan belajar cara memasang dan menggunakan pengkompil pakej solc.
Kami juga akan bercakap tentang apa yang dipanggil Antara Muka Binari Aplikasi (ABI) dan mengajar anda cara menggunakannya.

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

Anda akan memasang Node.js pada Ubuntu, Debian dan OS Rasberian, menulis skrip untuk menerbitkan kontrak pintar pada rangkaian tempatan Ethereum dan memanggil fungsinya.

Selain itu, anda akan belajar cara memindahkan dana antara akaun biasa menggunakan skrip, serta mengkreditkannya ke akaun kontrak pintar.

Dalam pelajaran ketujuh anda akan belajar cara memasang dan menggunakan persekitaran bersepadu Truffle, yang popular di kalangan pemaju kontrak pintar Solidity. Anda akan belajar cara membuat skrip JavaScript yang memanggil fungsi kontrak menggunakan modul kontrak truffle dan menguji kontrak pintar anda dengan Truffle.

Pelajaran kelapan khusus untuk jenis data Solidity. Anda akan menulis kontrak pintar yang berfungsi dengan jenis data seperti integer yang ditandatangani dan tidak ditandatangani, nombor yang ditandatangani, rentetan, alamat, pembolehubah jenis kompleks, tatasusunan, penghitungan, struktur dan kamus.

Dalam pelajaran kesembilan anda akan selangkah lebih dekat untuk mencipta kontrak pintar untuk rangkaian Ethereum utama. Anda akan belajar cara menerbitkan kontrak menggunakan Truffle pada rangkaian persendirian Geth, serta pada testnet Rinkeby. Menyahpepijat kontrak pintar pada rangkaian Rinkeby sangat berguna sebelum menerbitkannya di rangkaian utama - hampir semuanya nyata di sana, tetapi secara percuma.

Sebagai sebahagian daripada pelajaran, anda akan mencipta nod testnet Rinkeby, mengisinya dengan dana dan menerbitkan kontrak pintar.

pelajaran 10 khusus untuk kedai data teragih Ethereum Swarm. Menggunakan storan teragih, anda menjimatkan menyimpan sejumlah besar data pada blockchain Ethereum.

Dalam tutorial ini, anda akan mencipta storan Swarm tempatan, menulis dan membaca fail, dan direktori fail. Seterusnya, anda akan belajar cara bekerja dengan get laluan Swarm awam, menulis skrip untuk mengakses Swarm daripada Node.js, serta menggunakan modul Net::Ethereum::Swarm Perl.

Pelajaran 11 Matlamat — mahir bekerja dengan kontrak pintar Solidity menggunakan bahasa pengaturcaraan Python yang popular dan rangka kerja Web3.py. Anda akan memasang rangka kerja ini, menulis skrip untuk menyusun dan menerbitkan kontrak pintar, serta memanggil fungsinya. Dalam kes ini, Web3.py akan digunakan dengan sendirinya dan bersama-sama dengan persekitaran pembangunan bersepadu Truffle.

Pada pelajaran 12 anda akan belajar cara memindahkan data antara kontrak pintar dan dunia sebenar menggunakan oracles. Ini berguna untuk menerima data daripada tapak web, peranti IoT, pelbagai peranti dan penderia serta menghantar data daripada kontrak pintar ke peranti ini. Dalam bahagian praktikal pelajaran, anda akan mencipta oracle dan kontrak pintar yang menerima kadar pertukaran USD-ke-ruble semasa daripada tapak web CBR.

Pelajaran 1. Secara ringkas tentang blockchain dan rangkaian EthereumTujuan pelajaran: berkenalan dengan prinsip blockchain Ethereum, bidang aplikasi dan istilah asasnya.
Tugas amali: tidak termasuk dalam pelajaran ini.

Hampir tidak ada pembangun perisian hari ini yang tidak mendengar apa-apa tentang teknologi blockchain (Blockchain), mata wang kripto (Cryptocurrency atau Crypto Currency), bitcoin (Bitcoin), tawaran syiling permulaan (ICO, Tawaran syiling permulaan), kontrak pintar (Smart Contract), serta konsep dan istilah lain yang berkaitan dengan blockchain.

Teknologi Blockchain membuka pasaran baharu dan mewujudkan pekerjaan untuk pengaturcara. Jika anda memahami semua selok-belok teknologi mata wang kripto dan teknologi kontrak pintar, maka anda sepatutnya tidak menghadapi masalah untuk menggunakan pengetahuan ini dalam amalan.

Saya mesti mengatakan bahawa terdapat banyak spekulasi mengenai mata wang kripto dan rantaian blok. Kami akan mengetepikan perbincangan tentang perubahan dalam kadar mata wang kripto, tentang penciptaan piramid, tentang selok-belok perundangan mata wang kripto, dsb. Dalam tutorial kami, kami akan memberi tumpuan terutamanya pada aspek teknikal menggunakan kontrak pintar pada blockchain Ethereum (ethereum, ether) dan membangunkan aplikasi yang dipanggil terdesentralisasi (Aplikasi Teragih, DApp).

Apa itu blockchain

Blockchain (Blockchain, Block Chain) ialah rantaian blok data yang berkaitan antara satu sama lain dengan cara tertentu. Pada permulaan rantai adalah blok pertama, yang dipanggil blok primer (blok genesis) atau blok genesis. Ia diikuti oleh yang kedua, kemudian yang ketiga, dan seterusnya.

Semua blok data ini diduplikasi secara automatik pada banyak nod rangkaian blockchain. Ini memastikan penyimpanan data blockchain yang terdesentralisasi.
Anda boleh menganggap sistem blockchain sebagai sejumlah besar nod (pelayan fizikal atau maya) yang dirangkaikan bersama dan mereplikasi semua perubahan dalam rantaian blok data. Ia seperti komputer berbilang pelayan gergasi, dan nod komputer (pelayan) sedemikian boleh bertaburan di seluruh dunia. Dan anda juga boleh menambah komputer anda ke rangkaian blockchain.

Pangkalan data yang diedarkan

Blockchain boleh dianggap sebagai pangkalan data teragih yang direplikasi kepada semua nod rangkaian blockchain. Secara teori, blockchain akan beroperasi selagi sekurang-kurangnya satu nod berfungsi, menyimpan semua blok blockchain.

Pendaftaran Data Teragih

Blockchain boleh dianggap sebagai lejar data dan operasi yang diedarkan (urus niaga). Nama lain untuk daftar sedemikian ialah lejar.

Data boleh ditambah pada lejar yang diedarkan, tetapi ia tidak boleh diubah atau dipadamkan. Kemustahilan ini dicapai, khususnya, dengan menggunakan algoritma kriptografi, algoritma khas untuk menambah blok pada rantai, dan penyimpanan data terdesentralisasi.

Apabila menambah blok dan menjalankan operasi (urus niaga), kunci peribadi dan awam digunakan. Mereka menyekat pengguna blockchain dengan memberi mereka akses kepada hanya blok data mereka sendiri.

Transaksi

Blockchain menyimpan maklumat tentang operasi (transaksi) dalam blok. Pada masa yang sama, transaksi lama yang telah selesai tidak boleh ditarik balik atau ditukar. Urus niaga baharu disimpan dalam blok baharu yang ditambah.

Oleh itu, keseluruhan sejarah transaksi boleh direkodkan dalam blockchain tidak berubah. Oleh itu, blockchain boleh digunakan, sebagai contoh, untuk menyimpan urus niaga bank dengan selamat, maklumat hak cipta, sejarah perubahan pemilik hartanah, dsb.

Blockchain Ethereum mengandungi keadaan sistem yang dipanggil. Apabila urus niaga berjalan, keadaan berubah dari awal kepada semasa. Urus niaga direkodkan dalam blok.

Blockchain awam dan swasta

Perlu diingatkan di sini bahawa semua perkara di atas adalah benar hanya untuk apa yang dipanggil rangkaian blockchain awam, yang tidak boleh dikawal oleh mana-mana individu atau entiti undang-undang, badan negeri atau kerajaan.
Apa yang dipanggil rangkaian blockchain peribadi berada di bawah kawalan penuh pencipta mereka, dan segala-galanya mungkin di sana, sebagai contoh, penggantian lengkap semua blok rantaian.

Aplikasi Praktikal Blockchain

Blockchain boleh digunakan untuk apa?

Ringkasnya, blockchain membolehkan anda menjalankan transaksi (transaksi) dengan selamat antara orang atau syarikat yang tidak mempercayai satu sama lain. Data yang direkodkan dalam rantaian blok (urus niaga, data peribadi, dokumen, sijil, kontrak, invois, dll.) tidak boleh dipalsukan atau diganti selepas rakaman. Oleh itu, berdasarkan rantaian blok, adalah mungkin untuk mencipta, sebagai contoh, pendaftaran diedarkan yang dipercayai untuk pelbagai jenis dokumen.

Sudah tentu, anda tahu bahawa sistem mata wang kripto berasaskan blockchain sedang dicipta untuk menggantikan wang kertas konvensional. Wang kertas juga dipanggil wang fiat (daripada Wang Fiat).
Blockchain menyediakan penyimpanan dan ketidakbolehubah transaksi yang direkodkan dalam blok, jadi ia boleh digunakan untuk mencipta sistem mata wang kripto. Ia mengandungi keseluruhan sejarah pemindahan dana kripto antara pengguna (akaun) yang berbeza dan sebarang operasi boleh dijejaki.

Walaupun transaksi dalam sistem mata wang kripto mungkin tanpa nama, mengeluarkan mata wang kripto dan menukarnya dengan wang fiat biasanya mendedahkan identiti pemilik aset mata wang kripto.

Kontrak pintar yang dipanggil, yang merupakan perisian yang dijalankan pada rangkaian Ethereum, membolehkan anda mengautomasikan proses membuat transaksi dan memantau pelaksanaannya. Ini amat berkesan jika pembayaran untuk transaksi dijalankan dengan mata wang kripto Ether (eter).

Kontrak pintar blockchain Ethereum dan Ethereum yang ditulis dalam bahasa pengaturcaraan Solidity boleh digunakan, sebagai contoh, dalam bidang berikut:

  • alternatif kepada notari dokumen;
  • menyimpan daftar objek hartanah dan maklumat tentang transaksi dengan objek hartanah;
  • penyimpanan maklumat hak cipta untuk harta intelek (buku, imej, karya muzik, dsb.);
  • mewujudkan sistem pengundian bebas;
  • kewangan dan perbankan;
  • logistik pada skala antarabangsa, menjejaki pergerakan barang;
  • penyimpanan data peribadi sebagai analog sistem kad pengenalan;
  • transaksi selamat di kawasan komersial;
  • menyimpan keputusan pemeriksaan perubatan, serta sejarah prosedur yang ditetapkan

Masalah dengan blockchain

Tetapi, sudah tentu, tidak semuanya semudah yang disangka!

Terdapat masalah dengan mengesahkan data sebelum menambahkannya pada blockchain (contohnya, adakah ia palsu?), masalah dengan keselamatan sistem dan perisian aplikasi yang digunakan untuk bekerja dengan blockchain, masalah dengan kemungkinan menggunakan kaedah kejuruteraan sosial untuk mencuri akses kepada dompet mata wang kripto, dsb. .P.

Sekali lagi, jika kita tidak bercakap tentang blockchain awam yang nodnya tersebar di seluruh dunia, tetapi mengenai blockchain peribadi yang dimiliki oleh seseorang atau organisasi, maka tahap kepercayaan di sini tidak akan lebih tinggi daripada tahap kepercayaan pada orang ini atau organisasi.

Ia juga harus diambil kira bahawa data yang direkodkan dalam blockchain tersedia untuk semua orang. Dalam pengertian ini, blockchain (terutamanya awam) tidak sesuai untuk menyimpan maklumat sulit. Walau bagaimanapun, fakta bahawa maklumat mengenai blockchain tidak boleh diubah boleh membantu mencegah atau menyiasat pelbagai jenis aktiviti penipuan.

Aplikasi terdesentralisasi Ethereum akan menjadi mudah jika anda membayar untuk penggunaannya dengan mata wang kripto. Semakin ramai orang yang memiliki atau sanggup membeli mata wang kripto, semakin popular DApps dan kontrak pintar.

Antara masalah umum blockchain yang menghalang aplikasi praktikalnya, kita boleh menyebut kelajuan terhad untuk menambah blok baharu dan kos transaksi yang agak tinggi. Tetapi teknologi dalam bidang ini sedang giat membangun, dan diharapkan masalah teknikal akan diselesaikan dari semasa ke semasa.

Masalah lain ialah kontrak pintar blockchain Ethereum berjalan dalam persekitaran mesin maya yang terpencil, dan tidak mempunyai akses kepada data dunia sebenar. Khususnya, program kontrak pintar tidak boleh sendiri membaca data daripada tapak web atau mana-mana peranti fizikal (sensor, kenalan, dll.), dan tidak boleh mengeluarkan data ke mana-mana peranti luaran. Kami akan membincangkan masalah ini dan cara untuk menyelesaikannya dalam pelajaran yang dikhaskan untuk apa yang dipanggil Oracles - perantara maklumat kontrak pintar.

Terdapat juga sekatan undang-undang. Di sesetengah negara, sebagai contoh, adalah dilarang untuk menggunakan mata wang kripto sebagai cara pembayaran, tetapi anda boleh memilikinya sebagai sejenis aset digital, seperti sekuriti. Aset tersebut boleh dibeli dan dijual di bursa saham. Walau apa pun, semasa membuat projek yang berfungsi dengan mata wang kripto, anda perlu membiasakan diri dengan undang-undang negara di bawah bidang kuasa projek anda.

Bagaimana rantaian blockchain terbentuk

Seperti yang telah kami katakan, blockchain ialah rantaian blok data yang mudah. Pertama, blok pertama rantai ini terbentuk, kemudian yang kedua ditambah kepadanya, dan seterusnya. Data transaksi sepatutnya disimpan dalam blok dan ditambah pada blok terakhir.

Pada rajah. 1.1 kami telah menunjukkan versi termudah bagi jujukan blok, di mana blok pertama merujuk kepada yang seterusnya.

Buku “Mencipta Kontrak Pintar Solidity untuk Blockchain Ethereum. Panduan Praktikal»
nasi. 1.1. Urutan Blok Mudah

Dalam kes ini, bagaimanapun, adalah sangat mudah untuk memalsukan kandungan mana-mana blok dalam rantaian, kerana blok tersebut tidak mengandungi sebarang maklumat untuk melindungi daripada perubahan. Memandangkan blockchain bertujuan untuk kegunaan orang dan syarikat yang tidak ada kepercayaan, boleh disimpulkan bahawa kaedah menyimpan data ini tidak sesuai untuk blockchain.

Mari kita berurusan dengan melindungi blok daripada pemalsuan. Pada peringkat pertama, kami akan cuba melindungi setiap blok dengan checksum (Rajah 1.2).

Buku “Mencipta Kontrak Pintar Solidity untuk Blockchain Ethereum. Panduan Praktikal»
nasi. 1.2. Menambah perlindungan checksum untuk data blok

Kini penyerang tidak boleh menukar blok begitu sahaja, kerana ia mengandungi jumlah semak data blok. Semakan semak akan menunjukkan bahawa data telah diubah.

Anda boleh menggunakan salah satu fungsi cincang seperti MD-5, SHA-1, SHA-256, dll. untuk mengira jumlah semak. Fungsi cincang mengira beberapa nilai (contohnya, dalam bentuk rentetan teks dengan panjang tetap) hasil daripada melaksanakan operasi tidak boleh balik pada blok data. Operasi bergantung pada jenis fungsi cincang.

Walaupun kandungan blok data berubah sedikit, nilai cincang juga akan berubah. Dengan menganalisis nilai fungsi cincang, adalah mustahil untuk memulihkan blok data yang mana ia dikira.

Adakah perlindungan sedemikian mencukupi? Malangnya tidak.

Dalam skema ini, checksum (fungsi hash) hanya melindungi blok individu, tetapi bukan keseluruhan rantai blok. Mengetahui algoritma untuk mengira fungsi cincang, penyerang boleh menukar kandungan blok dengan mudah. Selain itu, tiada apa yang akan menghalangnya daripada mengalih keluar blok daripada rantai atau menambah yang baharu.

Untuk melindungi keseluruhan rantaian secara keseluruhan, anda boleh menyimpan dalam setiap blok bersama-sama dengan data juga cincangan data blok sebelumnya (Gamb. 1.3).

Buku “Mencipta Kontrak Pintar Solidity untuk Blockchain Ethereum. Panduan Praktikal»
nasi. 1.3. Tambahkan cincangan blok sebelumnya pada blok data

Dalam skema ini, untuk menukar mana-mana blok, anda perlu mengira semula fungsi cincang semua blok berikutnya. Nampaknya, apa masalahnya?

Dalam rantaian blok sebenar, kesukaran buatan juga dibuat untuk menambah blok baharu - algoritma digunakan yang memerlukan banyak sumber pengkomputeran. Mengambil kira hakikat bahawa untuk membuat perubahan pada blok, adalah perlu untuk mengira semula bukan satu daripada blok ini, tetapi semua yang berikutnya, ia akan menjadi sangat sukar untuk melakukan ini.

Ingat juga bahawa data blockchain disimpan (direplikasi) pada banyak nod rangkaian, i.e. storan terdesentralisasi digunakan. Dan ini sangat merumitkan pemalsuan blok, kerana. perubahan perlu dibuat kepada semua nod rangkaian.

Memandangkan blok menyimpan maklumat tentang blok sebelumnya, adalah mungkin untuk menyemak kandungan semua blok dalam rantaian.

Blockchain Ethereum

Blockchain Ethereum ialah platform di mana anda boleh membina DApps yang diedarkan. Tidak seperti platform lain, Ethereum membenarkan penggunaan kontrak pintar yang dipanggil (kontrak pintar, kontrak pintar) yang ditulis dalam bahasa pengaturcaraan Solidity.

Platform ini telah dicipta pada tahun 2013 oleh Vitalik Buterin, pengasas Majalah Bitcoin, dan dilancarkan pada tahun 2015. Segala-galanya yang akan kami kaji atau lakukan dalam kursus latihan kami berkaitan khusus dengan kontrak pintar blockchain dan Solidity Ethereum.

Perlombongan atau cara blok dibuat

Perlombongan ialah proses yang agak kompleks dan intensif sumber untuk menambah blok baharu pada rantaian blok, dan bukannya "perlombongan mata wang kripto" sama sekali. Perlombongan memastikan kecekapan blockchain, kerana. proses inilah yang bertanggungjawab untuk menambah transaksi pada blockchain Ethereum.

Orang dan organisasi yang terlibat dalam menambah blok dipanggil pelombong.
Perisian (perisian) yang berjalan pada nod pelombong cuba mengambil parameter pencincangan yang dipanggil Nonce untuk blok terakhir untuk mendapatkan nilai cincang tertentu yang diberikan oleh rangkaian. Algoritma pencincangan Ethash yang digunakan dalam Ethereum membolehkan anda mendapatkan nilai Nonce hanya dengan penghitungan berjujukan.

Jika nod pelombong menemui nilai Nonce yang betul, maka ini adalah apa yang dipanggil bukti kerja (PoW, Proof-of-work). Dalam kes ini, jika blok itu ditambahkan ke rangkaian Ethereum, pelombong menerima ganjaran tertentu dalam mata wang rangkaian - Eter. Pada masa menulis buku ini, ganjaran ialah 5 Eter, tetapi ini akan berkurangan dari semasa ke semasa.

Oleh itu, pelombong Ethereum memastikan operasi rangkaian dengan menambah blok, dan menerima wang cryptocurrency untuk ini. Anda akan menemui banyak maklumat tentang pelombong dan perlombongan di Internet, dan kami akan menumpukan pada mewujudkan kontrak Solidity dan DApps pada rangkaian Ethereum.

Ringkasan pelajaran

Dalam pelajaran pertama, anda telah berkenalan dengan blockchain dan mengetahui bahawa ia adalah urutan blok yang disusun dengan cara yang istimewa. Kandungan blok yang direkodkan sebelum ini tidak boleh diubah, kerana ini memerlukan pengiraan semula semua blok berikutnya pada banyak nod rangkaian, yang memerlukan banyak sumber dan masa.

Blockchain boleh digunakan untuk menyimpan hasil transaksi. Tujuan utamanya adalah untuk mengatur pelaksanaan transaksi yang selamat antara pihak (orang dan organisasi), yang tidak ada kepercayaan. Anda telah mempelajari bidang perniagaan tertentu dan kawasan mana anda boleh menggunakan kontrak pintar blockchain dan Solidity Ethereum. Ini adalah sektor perbankan, pendaftaran hak harta, dokumen, dll.

Anda juga mengetahui bahawa pelbagai masalah boleh timbul apabila menggunakan blockchain. Ini adalah masalah mengesahkan maklumat yang ditambahkan pada blockchain, kelajuan blockchain, kos transaksi, masalah pertukaran data antara kontrak pintar dan dunia nyata, serta potensi serangan oleh penceroboh yang bertujuan untuk mencuri dana mata wang kripto daripada pengguna. akaun.

Kami juga bercakap secara ringkas tentang perlombongan sebagai proses menambah blok baharu pada blockchain. Perlombongan diperlukan untuk menyelesaikan transaksi. Mereka yang terlibat dalam perlombongan memastikan kecekapan blockchain dan menerima ganjaran dalam mata wang kripto untuk ini.

Pelajaran 2: Menyediakan Persekitaran Desktop pada Ubuntu dan DebianPemilihan sistem pengendalian
Memasang utiliti yang diperlukan
Memasang Geth dan Swarm pada Ubuntu
Memasang Geth dan Swarm pada Debian
Penyediaan awal
Memuat turun pengedaran Go
Menetapkan pembolehubah persekitaran
Menyemak Versi Go
Memasang Geth dan Swarm
Kami membuat blockchain peribadi
Menyediakan fail genesis.json
Buat direktori kerja
Buat akaun
Jalankan permulaan nod
Pilihan permulaan nod
Menyambung ke tapak kami
Pengurusan perlombongan dan semakan baki
Mematikan konsol Geth
Ringkasan pelajaran

Pelajaran 3Menyediakan Raspberry Pi 3 Anda
Memasang Rasberian
Memasang kemas kini
Mendayakan Akses SSH
Menetapkan alamat IP statik
Memasang utiliti yang diperlukan
Memasang Go
Memuat turun pengedaran Go
Menetapkan pembolehubah persekitaran
Menyemak Versi Go
Memasang Geth dan Swarm
Kami membuat blockchain peribadi
Semakan akaun dan baki
Ringkasan pelajaran

Pelajaran 4Melihat dan menambah akaun
Melihat senarai akaun
Menambah akaun
parameter arahan akaun geth
Kata laluan akaun
Cryptocurrency dalam Ethereum
mata wang Ethereum
Tentukan baki semasa akaun kami
Memindahkan dana dari satu akaun ke akaun yang lain
eth.sendKaedah Transaksi
Melihat Status Transaksi
Resit transaksi
Ringkasan pelajaran

Pelajaran 5Kontrak pintar dalam Ethereum
Pelaksanaan kontrak pintar
Mesin maya Ethereum
Persekitaran Pembangunan Bersepadu Remix Solidity IDE
Penyusunan bermula
Fungsi Kontrak Memanggil
Penerbitan kontrak dalam rangkaian persendirian
Dapatkan definisi ABI dan binari kontrak
Penerbitan kontrak
Menyemak status transaksi penerbitan kontrak
Fungsi Kontrak Memanggil
penyusun kumpulan solc
Memasang solc dalam Ubuntu
Memasang solc pada Debian
Menyusun kontrak HelloSol
Penerbitan kontrak
Memasang solc pada Rasberian
Ringkasan pelajaran

Pelajaran 6. Kontrak pintar dan Node.jsMemasang Node.js
Pemasangan dalam Ubuntu
Pemasangan pada Debian
Memasang dan menjalankan Ganache-cli
Memasang Web3
Pemasangan Solc
Memasang Node.js pada Rasberian
Skrip untuk mendapatkan senarai akaun dalam konsol
Skrip untuk menerbitkan kontrak pintar
Menjalankan dan mendapatkan parameter
Mendapatkan pilihan pelancaran
Penyusunan Kontrak
Buka kunci akaun
Muat turun ABI dan kod binari kontrak
Menganggarkan jumlah gas yang diperlukan
Buat objek dan mula menerbitkan kontrak
Menjalankan skrip penerbitan kontrak
Memanggil fungsi kontrak pintar
Adakah mungkin untuk mengemas kini kontrak pintar yang diterbitkan
Bekerja dengan Web3 versi 1.0.x
Dapatkan senarai akaun
Penerbitan kontrak
Fungsi Kontrak Memanggil
Memindahkan dana dari satu akaun ke akaun yang lain
Pemindahan dana ke akaun kontrak
Mengemas kini kontrak pintar HelloSol
Buat skrip untuk melihat baki akaun
Tambahkan panggilan fungsi getBalance pada skrip call_contract_get_promise.js
Pengisian semula akaun kontrak pintar
Ringkasan pelajaran

Pelajaran 7. Pengenalan kepada TruffleMemasang Truffle
Buat projek HelloSol
Mencipta Direktori dan Fail Projek
direktori kontrak
Penghijrahan direktori
direktori ujian
fail truffle-config.js
Menyusun kontrak HelloSol
Mula menerbitkan kontrak
Memanggil fungsi kontrak HelloSol dalam gesaan Truffle
Memanggil fungsi kontrak HelloSol daripada skrip JavaScript yang menjalankan Node.js
Memasang modul kontrak truffle
Memanggil fungsi kontrak getValue dan getString
Fungsi kontrak panggilan setValue dan setString
Perubahan kontrak dan penerbitan semula
Bekerja dengan Web3 versi 1.0.x
Membuat perubahan pada kontrak pintar HelloSol
Skrip untuk kaedah kontrak panggilan
Ujian dalam Truffle
Ujian kemantapan
Ujian JavaScript
Ringkasan pelajaran

Pelajaran 8Kontrak untuk mempelajari jenis data
Jenis data Boolean
Integer yang tidak ditandatangani dan ditandatangani
Nombor Mata Tetap
alamat
Pembolehubah Jenis Kompleks
Tatasusunan Tetap
Tatasusunan dinamik
Penghitungan
Struktur
pemetaan kamus
Ringkasan pelajaran

Pelajaran 9Menerbitkan kontrak daripada Truffle kepada rangkaian peribadi Geth
Menyediakan Hos Rangkaian Peribadi
Persediaan kontrak untuk bekerja
Menyusun dan memindahkan kontrak ke rangkaian Truffle
Menjalankan penghijrahan LAN geth
Mendapatkan artifak Truffle
Menerbitkan kontrak daripada Truffle kepada testnet Rinkeby
Menyediakan Nod Geth untuk Rinkeby
Penyegerakan Nod
Menambah akaun
Menambah akaun Rinkeby anda dengan Ether
Memulakan penghijrahan kontrak ke rangkaian Rinkeby
Lihat maklumat kontrak pada rangkaian Rinkeby
Truffle Console untuk Rangkaian Rinkeby
Cara yang lebih mudah untuk memanggil fungsi kontrak
Memanggil kaedah kontrak dengan Node.js
Pindahkan dana antara akaun dalam konsol Truffle untuk Rinkby
Ringkasan pelajaran

Pelajaran 10Bagaimana Ethereum Swarm Berfungsi
Memasang dan menjalankan Swarm
Operasi pada fail dan direktori
Memuat naik fail ke Ethereum Swarm
Membaca fail daripada Ethereum Swarm
Melihat Manifes Fail yang Dimuat Naik
Memuatkan direktori dengan subdirektori
Membaca fail daripada direktori yang dimuat naik
Menggunakan Gerbang Awam Swarm
Memanggil Swarm daripada skrip Node.js
Perl Net::Ethereum::Modul Swarm
Memasang Modul Net::Ethereum::Swarm
Menulis dan membaca data
Ringkasan pelajaran

Pelajaran 11Memasang Web3.py
Kemas kini dan pasang pakej yang diperlukan
Memasang modul easysolc
Menerbitkan kontrak dengan Web3.py
Penyusunan Kontrak
Menyambung kepada pembekal
Melaksanakan penerbitan kontrak
Menyimpan alamat kontrak dan abi dalam fail
Menjalankan skrip penerbitan kontrak
Kaedah Kontrak Panggilan
Membaca alamat dan kontrak abi dari fail JSON
Menyambung kepada pembekal
Buat objek kontrak
Kaedah Kontrak Panggilan
Truffle dan Web3.py
Ringkasan pelajaran

Pelajaran 12Bolehkah kontrak pintar mempercayai data dari dunia luar
Oracles sebagai Pengantara Maklumat Blockchain
Sumber data
Kod untuk mewakili data daripada sumber
Oracle untuk merekodkan kadar pertukaran dalam blockchain
Kontrak USDRateOracle
Mengemas kini kadar pertukaran dalam kontrak pintar
Menggunakan Pembekal Soket Web
Menunggu acara RateUpdate
Mengendalikan acara RateUpdate
Memulakan kemas kini data dalam kontrak pintar
Ringkasan pelajaran

Sumber: www.habr.com

Tambah komen