Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 13646|Jawab: 2

Panduan Pengembangan Aplikasi Blockchain

[Salin tautan]
Diposting pada 03/05/2018 15.55.28 | | |
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)
 Tuan tanah| Diposting pada 03/05/2018 16.01.58 |
Diposting pada 08/05/2018 14.25.10 |
Belajar, terima kasih
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com