Pernyataan: Berikut ini adalah dokumen "Panduan Pengembangan Kompetisi Aplikasi Blockchain Global Xunlei" yang ditulis oleh Perusahaan Xunlei, mengapa menggunakan dokumen yang ditulis oleh Perusahaan Xunlei sebagai panduan pengembangan blockchain?
Thunder sebenarnya adalah rantai pribadi yang dibangun dengan kontrak pintar Ethereum, teknologinya sangat matang, dan memiliki penelitian mendalam tentang teknologi blockchain, yang memiliki signifikansi panduan untuk pengembangan blockchain kami.
Seperti kata pepatah, "tarik kesimpulan dari satu contoh", kita dapat mengembangkan aplikasi blockchain lain dengan membaca dokumen panduan pengembangan blockchain yang ditulis oleh Xunlei, berkat Xunlei.
Dokumen itu berbunyi:
1/16 Panduan Pengembangan Kompetisi Aplikasi Blockchain Global Thunder Pengembangan kontrak menjadi rekomendasi lini 1. Sebelum menulis kontrak pintar, Anda harus memiliki pemahaman tertentu tentang dasar-dasar blockchain (terlampir: Ikhtisar Ethereum). 2. Pelajari bahasa soliditas (solidity API). 3. Belajar menggunakan kerangka truffle dalam kombinasi dengan pembelajaran soliditas. Gunakan truffle yang dikembangkan secara lokal Jalankan kontrak di lingkungan blockchain. 4. Pelajari dan gunakan zeppelin-solidty (kerangka kerja kontrak standar yang didedikasikan untuk keamanan) dan desain integrasi Mode kontrak, memisahkan data dan kontrak logis, mengontrol keamanan izin, dan mempertimbangkan logika peningkatan. 5. Belajar berinteraksi dengan kontrak menggunakan web3.js. Gunakan plugin dan layanan web Metamask dengan blockchain Interaksi. 6. Tanya Jawab Forum: http://wanke.xunlei.com/forum.php? mod=forumdisplay&fid=53 (Setiap masalah yang Anda temui dapat dikembalikan di forum ini.) Kami akan membalas Anda dalam waktu 3 hari kerja) Konsep dasar Blockchain Blockchain adalah sistem komputasi terdistribusi terdesentralisasi, fitur utamanya adalah kekekalan permanen data, Itu tidak dapat dipalsukan, dan memiliki tingkat keterbukaan, transparansi, dan kepercayaan yang tinggi. Teknologi inti termasuk Algoritma Konsensus Toleran Kesalahan Bizantium (PBFT), teknologi enkripsi, teknologi P2P, dll. Transaksi Blockchain dapat dipahami sebagai sistem database transaksi yang dibagikan secara global. Perangkat lunak apa pun dengan izin dapat membacanya Ambil data dari jaringan blockchain. Ketika perlu untuk mengubah data di jaringan blok, selimut harus dimulai Ada permintaan yang diterima oleh node blok, yang secara kolektif disebut sebagai transaksi dalam sistem. Transaksi bersifat transaksional dan diserahkan ke blockchain, baik tidak semua atau semua dieksekusi. Seorang eksekutif perdagangan Setelah baris selesai, itu disimpan secara permanen ke blockchain dan tidak dapat dimodifikasi atau dieksekusi lagi. Transaksi dimulai dan ditandatangani oleh akun dalam sistem, dan melalui kriptografi, transaksi hanya dapat dipegang oleh kunci pribadi 2/16 Seseorang memulainya, yang lain tidak dapat memodifikasi dan memalsukan. Ini memastikan keaslian dan keamanan transaksi. Akun Ada dua jenis akun dalam sistem blockchain, satu eksternal dan yang lainnya adalah akun kontrak. Akun eksternal yang dimiliki Kunci publik dan pribadi unik Anda sendiri, dan akun Anda dikendalikan oleh pasangan kunci ini. Akun berjangka memiliki kode mereka sendiri, dan akun tersebut dibuat oleh Kontrol kode sendiri. Akun diidentifikasi dengan alamat, dan panjang alamatnya sama, dan tidak ada perbedaan antara kedua jenis akun tersebut. Alamat akun eksternal disediakan oleh Kunci publik dibuat, dan alamat kontrak menggunakan alamat dari mana akun kontrak dibuat dan jumlah transaksi yang membuat akun kontrak (nonce) diproduksi. Kontrak dikerahkan oleh alamat resmi, dan akun biasa tidak dapat langsung menerbitkan kontrak. Kombinasi pengguna Itu harus ditinjau secara resmi dan dirilis oleh Xunlei. Dalam sistem, tidak ada perbedaan antara kedua jenis akun tersebut. Setiap akun memiliki 256bit di dalam sistem Struktur penyimpanan nilai kunci hingga 256 bit disebut penyimpanan. Setiap akun memiliki saldo yang disebut Saldo, di WEI, dapat dimodifikasi dengan mengirimkan transaksi dengan nilai numerik ke akun. Kontrak Kontrak adalah akun blockchain yang menyimpan kode, dan panggilan kontrak dilakukan dengan mengirim transaksi ke akun ini. Kapan Bahasa pemrograman kontrak yang lebih populer sebelumnya adalah Solidity. Saat ini, kontes hanya mendukung pengajuan kontrak dalam bahasa Solidity. Kontrak dibagi menjadi dua bagian, penyimpanan dan fungsi data, data menyimpan status kontrak, dan fungsinya adalah kontrak Antarmuka eksternal mewujudkan kueri data dan modifikasi status dengan memanggil fungsi. Tulis kontrak melalui bahasa pemrograman, dan dapatkan bytecode EVM setelah kompilasi. Dengan mengirimkan transaksi ke akun kontrak, nyata Panggilan kontrak saat ini. Gas Gas adalah unit pembayaran blockchain, dan ketika transaksi dibuat, sejumlah gas akan ditentukan. Tuhan Jika itu untuk membatasi jumlah perhitungan pada transaksi dan membayar biaya untuk pelaksanaan transaksi. Selama pelaksanaan transaksi, Gas Ini akan dikonsumsi oleh aturan yang ditetapkan oleh EVM. Harga gas adalah nilai yang ditentukan oleh pembuat transaksi dan jumlah biaya yang diperlukan untuk mengeksekusi transaksi Jumlahnya adalah Gas_Price*Gas. Transaksi Berakhir Jika ada sisa gas, porsi sisanya dikembalikan ke saran pembuat pengguna. Jika gas tidak mencukupi, eksekusi transaksi akan gagal, dan transaksi akan gagal mencegah serangan banjir untuk keamanan sistem Biaya penanganan tidak dikembalikan. Satuan harga gas terkecil adalah wei, 10^18 wei = 1 rantai gram. Soliditas 3/16 Solidity adalah bahasa pemrograman tingkat tinggi yang dirancang untuk kontrak pintar, berjalan di EVM (Ethereum). Mesin Virtual)。 Implementasi desain bahasa dipengaruhi oleh C++/Python/JavaScript. Solidity adalah bahasa yang diketik dengan kuat yang mendukung pewarisan, polimorfisme, antarmuka, abstraksi, pustaka, tipe data khusus, dan banyak lagi Jenis kelamin. Solidity mendukung pemrograman instruksi perakitan, dan kode dikompilasi menjadi bytecode dan berjalan di EVM. Soliditas adalah Bahasa pengembangan kontrak pintar yang paling populer juga merupakan bahasa yang direkomendasikan dan didukung oleh Platform Kontrak Guntur. Catatan: 1. Ethereum Virtual Machine adalah lingkungan virtual di Ethereum yang menyediakan lingkungan runtime untuk kontrak pintar Mesin simulasi. Platform kompetisi kompatibel dengan EVM, tetapi harus mematuhi batasan penggunaan platform resmi. 2. Jenis akun dibagi menjadi akun eksternal (alamat akun perdagangan biasa) dan akun berjangka. Membuat kontrak Ini adalah proses pengiriman transaksi ke alamat akun tujuan 0. 3. Kompetisi menentukan penggunaan truffle (truffle v4.1.5 solidity v0.4.21) untuk mengembangkan kombinasi cerdas Platform akan memverifikasi bytecode sesuai dengan kode sumber dokumen yang diserahkan oleh peserta. , Kembangkan kontrak dengan truffle Kerangka kerja pengembangan soliditas kontrak pintar truffle. Ini menyediakan satu set lengkap pengembangan, debugging, dan pengeditan Terjemahan, penerapan, dan pengujian lingkungan lokal. Anda dapat menggunakan perintah template unbox dengan cepat berdasarkan beberapa template Hasilkan struktur kontrak yang sesuai. Pasang Truffle npm i -g truffle [root@opennode sandai]# versi truffle Truffle v4.1.5 (inti: 4.1.5) Soliditas v0.4.21 (solc-js) Mulai 1. Inisialisasi proyek kontrak dengan truffle 4/16 mkdir penyimpanan sederhana CD Penyimpanan Sederhana truffle init 2. Buat file kontrak baru: Anda dapat menggunakan truffle untuk membuat kontrak Anda juga dapat membuat file baru langsung dari baris perintah SimpleStorage kontrak/SimpleStorage.sol SimpanSederhana.sol soliditas pragma ^0.4.21; kontrak SimpleStorage { uint myVariable; set fungsi(uint x) publik { myVariable = x;
} function get() pengembalian publik konstan (uint) { mengembalikan myVariable;
}
} 3. Tambahkan skrip migrasi: Anda dapat menggunakan migrasi membuat truffle 2_deploy_contract Metode baris perintah ditambahkan, dan Anda juga dapat langsung membuat file baru migrasi/2_deploy_contract.js 2_deploy_contract.js; eksekusi migrasi truffle Urutan baris terkait dengan nama file, sehingga beberapa skrip penyebaran perlu diberi nama secara berurutan var SimpleStorage = artifacts.require("SimpleStorage"); module.exports = function(deployer) { deployer.deploy(SimpleStorage); 5/16 }; 4. Jalankan kontrak kompilasi truffle, dan kontrak yang dikompilasi ada di folder build. per kontrak Ada file json yang sesuai yang berisi bytecode, abiCode, dll. yang diperlukan untuk penyebaran 5. Edit truffle.js untuk menyiapkan kontrak penyebaran truffle dan koneksi RPC untuk berinteraksi dengan blockchain. [root@localhost opennode]# vi truffle.js module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545, network_id: "*"
}
} }; 6. Nyalakan lingkungan blockchain default Truffle di konsol. Truffle berkembang Truffle Develop dimulai pada
http://127.0.0.1:9545/
Accounts: (0) 0x627306090abab3a6e1400e9345bc60c78a8bef57 (1) 0xf17f52151ebef6c7334fad080c5704d77216b732 (2) 0xc5fdf4076b8f3a5357c5e395ab970b5b54098fef (3) 0x821aea9a577a9b44299b9c15c88cf3087f3b5544 (4) 0x0d1d4e623d10f9fba5db95830f7d3839406c6af2 (5) 0x2932b7a2355d6fecc4b5c0b6bd44cc31df247a2e (6) 0x2191ef87e392377ec08e7c08eb105ef5448eced5 (7) 0x0f4f2ac550a1b4e2280d04c21cea7ebd822934b5 (8) 0x6330a553fc93768f612722bb8c2ec78ac90b3bbc (9) 0x5aeda56215b167893e80b4fe645ba6d5bab767de 6/16 Kunci Pribadi: (0) c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e 4A9ec0a0f44dc0d3 (1) ae6ae8e5ccbfb04590405997ee2d52d2b330726137b87505 3c36d94e974d162f (2) 0dbbe8e4ae425a6d2687f1a7e3ba17bc98c673636790f1b8 AD91193C05875EF1 (3) c88b703fb08cbea894b6aeff5a544fb92e78a18e19814cd8 5da83b71f772aa6c (4) 388c684f0ba1ef5017716adb5d21a053ea8e90277d086833 7519f97bede61418 (5) 659cbb0e2411a44db63778987b1e22153c086a95eb6b18bd F89DE078917ABC63 (6) 82d052c865f5763aad42add438569276c00d3d88a2d062d3 6b2bae914d58b8c8 (7) aa3680d5d48a8283413f7a108367c7299ca73f553735860a 87b08f39395618b7 (8) 0f62d96d6675f32685bbdb8ac13cda7c23436f63efbb9d07 700d8669ff12b7c4 (9) 8d5366123cb560bb606379f90a0bfd4769eecc0557f1b362 DCAE9012B548B1E5
Mnemonic: candy maple cake sugar pudding cream madu kaya halus crumble suguhan manis ⚠ Penting ⚠ : Mnemonik ini dibuat untuk Anda oleh Truffle. Itu tidak aman. Pastikan Anda tidak menggunakannya pada produksi 7/16 blockchain, atau Anda berisiko kehilangan dana. truffle(berkembang)> Ini menyediakan lingkungan blockchain asli bagi Truffle untuk menjalankan kontrak, menghasilkan 10 akun secara default, yang masing-masing dihasilkan Saldo akun awal adalah 100 eter. Anda juga dapat menggunakan antarmuka grafis yang disediakan oleh Ganache , Anda perlu memodifikasi port tempat konfigurasi terhubung. 7. Jalankan kontrak penyebaran port migrasi truffle di konsol baru (atau dalam truffle mengembangkan konsol untuk melakukan migrasi). 8. Uji kode kontrak dengan truffle develop. SimpleStorage.deployed().then(function(instance ){kembali instance.get.call(); }).kemudian(fungsi(nilai) {mengembalikan nilai.keAngka()}) // 0 SimpleStorage.deployed().then(function(instance ){mengembalikan instance.set(100); }); Informasi transaksi keluaran SimpleStorage.deployed().then(function(instance ){kembali instance.get.call(); }).kemudian(fungsi(nilai) {mengembalikan nilai.keAngka()}); // 100 9. Uji kontrak dengan tes truffle Gunakan tes truffle create SimpleStorage untuk membuat atau baru Buat pengujian/SimpleStorage.test.js file baru secara langsung. const SimpleStorage = artifacts.require('Penyimpanan Sederhana'); contract('SimpleStorage', function(accounts) { 8/16 it("harus menegaskan benar", fungsi(selesai)
{ var simpleStorage = SimpleStorage.deployed(); instans var; simpleStorage.then(res => { instance = res; mengembalikan instance.get() }).then(value => { assert.equal('0', value.toNumber(), 'tidak sama dengan 0') }).then(() => { instance.set(100) }).then(() => { mengembalikan instance.get() }).then(value => { assert.equal('100', value.toNumber(), 'tidak sama dengan 100') }) selesai(); }); }); Di konsol baru, masukkan tes truffle ./test/SimpleStorage.test.js. 10. Uji kontrak dengan remix Pasang kontrak yang dikembangkan menggunakan truffle dalam remix untuk memodifikasi dengan cepat Penerapan dan pemanggilan kontrak yang diusulkan. Remix menyediakan lingkungan runtime kompilasi untuk kontrak dan dapat dikontrol oleh kontrak Tabel dapat melihat informasi terperinci dari setiap transaksi kontrak, seperti parameter input dan output, data metode yang ditandatangani, hash transaksi dan informasi lainnya. Mendukung debugging. 1. Gunakan detail kompilasi untuk melihat detail kompilasi kontrak. Termasuk bytecode, abi dan menggunakan web3.js penerapan metode Drip Ah yang cepat. 9/16 2. Gunakan run untuk membuat kontrak, dan konsol dapat melihat transaksi yang membuat kontrak. Gunakan Truffle Unbox untuk membuat aplikasi kontrak interaktif Langkah-langkah di atas membuat lingkungan kontrak yang dapat dikompilasi, disebarkan, dan di-debug menggunakan init truffle dasar. Di bawah Buat proyek baru dengan Truffle Unbox, yang memberi kita template proyek truffle, di dalamnya Beberapa dependensi lingkungan interaksi aplikasi kontrak. Anda dapat melihat penawaran resmi di Truffle Boxes Kotak templat. Berikut ini adalah template react. 1. Proyek baru truf-react mkdir truf-react 10/16 CD TRUF-REACT Truffle Unbox React Proses unbox mengunduh templat ekstraksi dan melakukan operasi seperti penginstalan npm. 2. Konfigurasikan truffle.js proyek module.exports = { Lihat <http://truffleframework.com/docs/advanced/confi gurasi> untuk menyesuaikan Truffle Anda konfigurasi!
networks: {
development: {
host: '127.0.0.1',
port: '9545', network_id: '*' // Pertandingan ID jaringan apa pun
}
} }; 3. Mulailah pengembangan truffle 4. Amandemen SRC/App.js import React, { Component } dari 'react' impor SimpleStorageContract dari '.. /membangun/kontrak/SimpleStorage.json' impor getWeb3 dari './utils/getWeb3' impor './css/oswald.css' impor './css/open-sans.css' impor './css/pure-min.css' 11/16 impor './App.css' const contract = require('truffle-contract') const simpleStorage = kontrak (Kontrak Penyimpanan Sederhana) class App memperluas Komponen { konstruktor(props) { super(alat peraga) this.state = {
storageValue: 0,
web3: null,
inputValue: 0,
address: null
} this.changeValueHandle = this.changeValueHandle.bind(ini) this.setHandle = this.setHandle.bind(ini)
} componentWillMount() { Dapatkan penyedia jaringan dan web3 contoh. Lihat utils/getWeb3 untuk lebih lanjut info. dapatkanWeb3 .then(results => { this.setState({
web3: hasil.web3 }) Instansi kontrak Setelah web3 disediakan. 12/16 this.instantiateContract() }) .catch(() => { console.log('Kesalahan menemukan web3.') })
} instantiateContract() {
/* * CONTOH KONTRAK PINTAR
* * Biasanya fungsi-fungsi ini akan dipanggil dalam konteks * perpustakaan manajemen negara, tetapi untuk kenyamanan saya telah menempatkannya di sini. */ this.simpleStorageSet(5)
} changeValueHandle(peristiwa) { this.setState({
inputValue: Angka(peristiwa.target.nilai) })
} setHandle() { this.simpleStorageSet(this.state.inputValue)
} simpleStorageSet(x) { simpleStorage.setProvider(this.state.web3.curren tPenyedia) Menyatakan ini untuk nanti sehingga 13/16 kita dapat merantai fungsi di SimpleStorage. var simpleStorageInstance Dapatkan akun. this.state.web3.eth.getAccounts((kesalahan, akun) => { simpleStorage.deployed().then((instance) => { simpleStorageInstance = instans this.setState({
address: instance.address }) Menyimpan nilai yang diberikan, 5 secara default. Kembali simpleStorageInstance.set(x, {dari: akun[0]}) }).then((hasil) => { Dapatkan nilainya dari kontrak untuk membuktikan itu berhasil. Kembali simpleStorageInstance.get.call(akun[0]) }).then((hasil) => { Perbarui status dengan hasilnya. Kembali this.setState({ storageValue: result.c[0] }) }) })
} render() { Kembali ( <div className="Aplikasi"> <navigasi className="menu murni navbar menu-menuhorizontal"> 14/16 <a href="#" className="pure-menu-heading puremenu-link">Truffle Kotak</a> </nav> <utama className="kontainer"> <div className="pure-g"> <div className="pure-u-1-1"> <h1>Selamat berangkat!</h1> <p>Kotak Truffle Anda sudah terpasang dan siap.</p> <h2>Contoh Kontrak Cerdas</h2> <p>Jika kontrak Anda dikompilasi dan dimigrasikan berhasil, di bawah ini akan menampilkan nilai tersimpan 5 (secara default).</p> <p>Coba ubah nilai yang disimpan secara <strong>online 59</strong> dari App.js.</p> <p>Nilai yang tersimpan adalah: {ini.keadaan.penyimpananNilai}</p> <p>Alamat kontrak yang disebarkan: {ini.negara.alamat}</p> </div> <div> <input type="number" onChange= {this.changeValueHandle}/> <tombol onClick={this.setHandle}>set</button> 15/16 </div> </div> </main> </div> );
}
} ekspor Aplikasi default Menambahkan panggilan metode set kontrak. Dan tunjukkan alamat kontrak. 5. Buka konsol baru dan jalankan npm run start 6. Buka http://lcoalhost:3000 di browser Anda untuk melihat hasil kontrak. 7. Atur nilai kontrak yang disimpanData melalui kotak set dan input. 8. Masuk dalam trufle mengembangkan
//将xxx替换为address SimpleStorage.at('xxxx').then(res => {return res.get()}) Nilai pengembalian jenis BigNUmber diperoleh, dan nilai dalam array c diatur disimpan Data. Gunakan plugin browser Metamask untuk berinteraksi dengan blockchain Referensi http://truffleframework.com/tutorials/pet-shop Peserta menyerahkan dokumen Kompetisi menentukan penggunaan Truffle untuk mengembangkan kontrak pintar, dengan Truffle versi v4.1.5 sesuai dengan versi solcjs Ayat 0.4.21. Pengembang perlu menyerahkan paket zip proyek Truffle dan dokumen pengenalan proyek terkait, yang mencakup, setidaknya Berikut ini: 16/16 1. Struktur File Dasar Proyek Truffle: Uji Migrasi Kontrak Bangun package.json truffle.js truffle-config.js README.md // Deskripsi dokumentasi teknik Tidak perlu node_modules 2. Perlu memberikan penjelasan PPT atau PDF tentang seluruh produk proyek, termasuk pengenalan latar belakang produk, signifikansi produk, Alamat unduhan aplikasi (opsional), pengenalan proses penggunaan produk. Pengembang pihak ketiga berikutnya dapat menerapkan aplikasi kontrak dan kantong Rantai sesuai dengan dokumen panduan ThunderChain yang akan datang Interaksi. Dokumentasi & Alat API soliditas Dokumentasi truffle Ganache menyediakan antarmuka grafis untuk lingkungan blockchain asli Zeppelin-Solidty berkomitmen pada kerangka kontrak yang aman dan terstandarisasi MetaMask menyediakan plugin browser untuk browser dengan lingkungan blockchain melalui koneksi RPC web3.js JS yang dienkapsulasi Ethereum untuk berinteraksi dengan blockchain Terakhir, unduhan dokumen pdf:
Dev_Guide_zh.pdf
(373.55 KB, Jumlah unduhan: 6)
|