Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 13646|Răspunde: 2

Ghid de dezvoltare a aplicațiilor blockchain

[Copiază linkul]
Postat pe 03.05.2018 15:55:28 | | |
Declarație: Următorul este documentul "Ghidul Global de Dezvoltare a Concurenței Aplicațiilor Blockchain Xunlei" scris de compania Xunlei, de ce să folosiți documentul scris de compania Xunlei ca ghid de dezvoltare blockchain?

Thunder este de fapt un lanț privat construit cu contracte inteligente Ethereum, tehnologia este foarte matură și are cercetări aprofundate asupra tehnologiei blockchain, care au o semnificație călăuzitoare pentru dezvoltarea noastră blockchain.

După cum spune vorba, "trage inferențe dintr-un singur exemplu", putem dezvolta alte aplicații blockchain citind documentul ghidului de dezvoltare blockchain scris de Xunlei, mulțumită Xunlei.

Documentul spune:

1/16
Ghidul global de dezvoltare a concurenței aplicațiilor blockchain Thunder
Dezvoltarea contractului în recomandarea liniei
1. Înainte de a scrie contracte inteligente, trebuie să ai o anumită înțelegere a fundamentelor blockchain-ului (atașat: Prezentare generală Ethereum).
2. Învață limbajul Solidity (API-ul Solidity).
3. Învață să folosești cadrul trufelor în combinație cu învățarea solidității. Folosiți trufele dezvoltate local
Rulează contracte într-un mediu blockchain.
4. Învață și folosește zeppelin-solidty (un cadru contractual standardizat dedicat securității) și proiectează integrarea
Modul contractual, date separate de contractele logice, controlul permisiunilor și logica de a lua în considerare logica upgrade-urilor.
5. Învață să interacționezi cu contractele folosind web3.js. Folosește pluginul Metamask și serviciul web cu blockchain
Interacțiune.
6. Întrebări și răspunsuri pe forum: http://wanke.xunlei.com/forum.php?
mod=forumdisplay&fid=53 (Orice probleme întâmpinați poate fi anulată pe acest forum.)
Îți vom răspunde în termen de 3 zile lucrătoare)
Concepte de bază
Blockchain
Blockchain-ul este un sistem de calcul distribuit descentralizat, al cărui principal caracter este imuabilitatea permanentă a datelor,
Nu poate fi falsificată și are un grad ridicat de deschidere, transparență și încredere. Tehnologiile de bază includ Algoritmul de Consens Byzantin Fault Tolerant Fault (PBFT),
tehnologia criptării, tehnologia P2P etc.
Tranzacție
Blockchain-ul poate fi înțeles ca un sistem de baze de date de tranzacții partajat la nivel global. Orice software cu permisiune îl poate citi
Ia date din rețeaua blockchain. Când este necesar să se modifice datele din rețeaua de blocuri, trebuie inițiată o pază
Există cereri acceptate de nodurile bloc, care sunt denumite colectiv tranzacții în sistem.
Tranzacțiile sunt tranzacționale și sunt trimise către blockchain, fie nu toate, fie toate executate. Un executiv de tranzacționare
După ce linia este finalizată, aceasta este salvată permanent pe blockchain și nu poate fi modificată sau executată din nou.
Tranzacțiile sunt inițiate și semnate de contul din sistem, iar prin criptografie, tranzacțiile pot fi reținute doar de cheia privată
2/16
Cineva inițiază asta, alții nu pot modifica și falsifica. Acest lucru asigură autenticitatea și siguranța tranzacției.
Cont
Există două tipuri de conturi în sistemul blockchain, unul extern și celălalt este contul contractual. Cont extern deținut
Cheile tale publice și private unice, iar contul tău este controlat de această pereche de chei. Conturile futures au propriul lor cod, iar contul este creat de
Controlul propriu al codului.
Contul este identificat printr-o adresă, iar lungimea adresei este aceeași, iar nu există nicio diferență între cele două tipuri de conturi. Adresa contului extern este furnizată de
Cheia publică este generată, iar adresa contractului folosește adresa de la care a fost creat contul contractual și numărul de tranzacții care au generat contul contractual
(nonce) este produs. Contractele sunt stabilite prin adresa oficială, iar conturile obișnuite nu pot publica direct contractele. Combinația utilizatorului
Trebuie revizuit oficial și lansat de Xunlei.
În cadrul sistemului, nu există nicio diferență între cele două tipuri de conturi. Fiecare cont are 256 biți în interiorul sistemului
Structura de stocare cheie-valoare până la 256 de biți se numește stocare. Fiecare cont are un sold numit
Soldul, în Wei, poate fi modificat prin trimiterea unei tranzacții cu o valoare numerică către cont.
Contract
Un contract este un cont blockchain care stochează codul, iar apelul contractual se face prin trimiterea tranzacțiilor către acest cont. Când
Limbajul de programare contractual anterior, mai popular, era Solidity. În prezent, concursul suportă doar înscrierea contractelor în limbajul Solidity.
Contractul este împărțit în două părți: stocarea și funcția datelor, datele stochează starea contractului, iar funcția este contractul
Interfața externă realizează interogarea datelor și modificarea stării prin apelarea funcțiilor.
Scrie un contract printr-un limbaj de programare și obține bytecode-ul EVM după compilare. Prin trimiterea unei tranzacții către contul contractual, real
Apel contractual actual.
Gaz
Gazul este unitatea de plată a blockchain-ului, iar când se creează o tranzacție, se specifică o anumită cantitate de gaz. Doamne
Dacă este pentru a limita suma de calcul asupra tranzacției și pentru a plăti o taxă pentru executarea tranzacției. În timpul executării tranzacției, Gas
Va fi consumat de o regulă stabilită de EVM.
Prețul gazului este o valoare specificată de creatorul tranzacției și numărul de comisioane necesare pentru executarea tranzacției
Suma este Gas_Price*Gaz. Tranzacția se încheie Dacă mai rămâne gaz, porțiunea rămasă este returnată la sugestia creatorului
utilizatori. Dacă gazul este insuficient, execuția tranzacției va eșua, iar tranzacția nu va preveni atacurile de inundație pentru securitatea sistemului
Taxa de manipulare nu este returnată. Cea mai mică unitate de preț a gazului este wei, 10^18 wei = 1 gram de lanț.
Soliditate
3/16
Solidity este un limbaj de programare de nivel înalt conceput pentru contracte inteligente, care rulează pe EVM (Ethereum).
Virtual Machine)。 Implementarea designului limbajului este influențată de C++/Python/JavaScript.
Solidity este un limbaj puternic tipat care suportă moștenire, polimorfism, interfețe, abstractizare, biblioteci, tipuri de date personalizate și altele
Sex. Solidity suportă programarea instrucțiunilor de asamblare, iar codul este compilat în bytecode și rulează pe EVM. Soliditatea este
Cel mai popular limbaj de dezvoltare a contractelor inteligente este, de asemenea, cel recomandat și susținut de Thunder Contract Platform.
Note:
1. Ethereum Virtual Machine este un mediu virtual pe Ethereum care oferă un mediu de execuție pentru contracte inteligente
Mașină simulată. Platforma de concurență este compatibilă cu EVM, dar trebuie să respecte restricțiile de utilizare ale platformei oficiale.
2. Tipurile de conturi sunt împărțite în conturi externe (adrese obișnuite ale conturilor de tranzacționare) și conturi futures. Creează un contract
Este procesul de trimiterea unei tranzacții către adresa de cont de destinație 0.
3. Concursul specifică utilizarea trufelor (trufe v4.1.5 soliditate v0.4.21) pentru a dezvolta combinații inteligente
Platforma va verifica bytecode-ul conform codului sursă al documentului trimis de participant. ,
Dezvoltarea contractelor cu trufe
Cadrul de dezvoltare solidă al contractelor inteligente truffle. Oferă un set complet de dezvoltare, depanare și editare
Traducerea, implementarea și testarea mediilor on-premises. Poți folosi rapid comanda de deschidere a șablonului pe baza unor șabloane
Generează structura contractuală corespunzătoare.
Instalează Truffle
NPM I -g trufe
[root@opennode sandai]# versiunea trufelor
Truffle v4.1.5 (nucleu: 4.1.5)
Solidity v0.4.21 (solc-js)
Începe
1. Inițializarea proiectului contractual cu trufe
4/16
mkdir simple-storage
CD Simple-Storage
Trufe Init
2. Creează un nou fișier de contract: Poți folosi Truffle pentru a crea contractul
De asemenea, poți crea un fișier nou direct din linia de comandă SimpleStorage
contract/SimpleStorage.sol
SimpleStorage.sol
Pragma Solidity ^0.4.21;
contract SimpleStorage {
uint myVariable;
function set(uint x) public {
myVariable = x;
}
funcția get() randamente publice constante
(uint) {
returnează myVariable;
}
}
3. Adaugă scripturi de migrare: Poți folosi Truffle Create Migration
2_deploy_contract metodă de linie de comandă este adăugată și poți crea direct un fișier nou
Migrații/2_deploy_contract.js
2_deploy_contract.js executarea migrației trufelor
Ordinea liniilor este legată de numele fișierului, astfel încât mai multe scripturi de implementare trebuie denumite în ordine
var SimpleStorage =
artefacte.require("SimpleStorage");
module.exports = function(deployer) {
deployer.deploy (SimpleStorage);
5/16
};
4. Rulați contractul de compilare truffle, iar contractul compilat este în folderul de construcție. conform contractului
Există un fișier json corespunzător care conține bytecode, abiCode etc. necesar pentru implementare
5. Editați truffle.js pentru a configura contractul de implementare a trufelor și conexiunea RPC pentru a interacționa cu blockchain-ul.
[root@localhost opennode]# vi truffle.js
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*"
}
}
};
6. Activează mediul blockchain implicit Truffle pe consolă.
Dezvoltarea trufelor
Truffle Develop a început la
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
Chei private:
(0)
c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e
4a9ec0a0f44dc0d3
(1)
AE6AE8E5CCBB04590405997EE2D52D2B330726137B87505
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
Dulceață fine, bogată în miere
⚠ Important ⚠: Acest mnemotehnic a fost creat pentru
tu, pe Truffle. Nu este sigur.
Asigură-te că nu îl folosești în producție
7/16
blockchain-uri, altfel riști să pierzi fonduri.
trufa (dezvoltă)>
Aceasta oferă un mediu blockchain nativ pentru ca Truffle să ruleze contracte, generând implicit 10 conturi, fiecare fiind generat
Soldul inițial al contului este de 100 ether. Poți folosi și interfața grafică oferită de Ganache
, trebuie să modifici portul la care este conectată configurația.
7. Executarea contractului de implementare a portului de migrare truffe într-o consolă nouă (sau în truffle
dezvoltă consolă pentru a face migrare).
8. Testarea codului contractual cu developare de trufe.
SimpleStorage.deployed().then(function(instance
){return
instance.get.call(); }).atunci(funcție(valoare)
{return value.toNumber()})
// 0
SimpleStorage.deployed().then(function(instance
){return instance.set(100); });
Informații despre tranzacțiile de ieșire
SimpleStorage.deployed().then(function(instance
){return
instance.get.call(); }).atunci(funcție(valoare)
{return value.toNumber()});
// 100
9. Testează contractul cu testul trufelor Folosește trufa creează testul SimpleStorage pentru a crea un nou sau
Creează un fișier nou test/SimpleStorage.test.js direct.
const SimpleStorage =
artefacts.require('SimpleStorage');
contract('SimpleStorage', function(accounts) {
8/16
it("ar trebui să afirme adevărat", funcție(done)
{
var simpleStorage =
SimpleStorage.deployed();
instanță var;
simpleStorage.then(res => {
instanță = res;
return instance.get()
}).atunci(valoare => {
affirmt.equal('0',
value.toNumber(), 'nu egal cu 0')
}).atunci(() => {
instanță.set(100)
}).atunci(() => {
return instance.get()
}).atunci(valoare => {
affirmt.equal('100',
value.toNumber(), 'nu egal cu 100')
})
finalizat();
});
});
În noua consolă, introduci trufa test ./test/SimpleStorage.test.js.
10. Contracte de test cu remix Contracte de tip put dezvoltate folosind truffle in remix pentru a modifica rapid
Implementarea și invocarea contractului propus. Remix oferă un mediu de rulare pentru compilare pentru contracte și poate fi controlat de contract
Tabelul poate vedea informațiile detaliate ale fiecărei tranzacții a contractului, cum ar fi parametrii de intrare și ieșire, datele metodei semnate,
Hash-ul tranzacțiilor și alte informații. Suport pentru depanare.
1. Folosiți detaliile de compilare pentru a vedea detaliile de compilare a contractului. Inclusiv bytecode, abi
și folosind web3.js implementare rapidă a metodei Drip Ah.
9/16
2. Folosește run pentru a crea un contract, iar consola poate vizualiza tranzacția care a creat contractul.
Folosește Truffle Unbox pentru a crea aplicații interactive de contracte
Pașii de mai sus creează un mediu contractual care poate fi compilat, implementat și depanat folosind basic truffle init. Mai jos
Creează un proiect nou cu Truffle Unbox, care ne oferă un șablon de proiect cu trufe, în interior
Unele dependențe de mediul de interacțiune cu aplicații contractuale. Poți verifica ofertele oficiale în Trufe Cutii
Casete șablon. Următorul este șablonul React.
1. Proiect nou truf-react
MKDIR TRUF-REACT
10/16
CD truf-react
Trufă Unbox React
Procesul unbox descarcă șablonul de extragere și efectuează operațiuni precum instalarea npm.
2. Configurarea truffle.js proiectului
module.exports = {
Vezi
<http://truffleframework.com/docs/advanced/confi
Guration>
pentru a-ți personaliza trufa
Configurație!
networks: {
development: {
host: '127.0.0.1',
port: '9545',
network_id: '*' // Potrivire
orice ID de rețea
}
}
};
3. Începe o developare de trufe
4. Amendament la SRC/App.js
import React, { Component } din 'react'
import SimpleStorageContract de la
'.. /construiesc/contracte/SimpleStorage.json'
import getWeb3 de pe './utils/getWeb3'
import './css/oswald.css'
import './css/open-sans.css'
import './css/pure-min.css'
11/16
import './App.css'
contract const = exige('truffle-contract')
const simpleStorage =
contract(SimpleStorageContract)
class App extinde Component {
constructor(props) {
super(recuzită)
this.state = {
storageValue: 0,
web3: null,
inputValue: 0,
address: null
}
this.changeValueHandle =
this.changeValueHandle.bind(this)
this.setHandle =
this.setHandle.bind(this)
}
componentWillMount() {
Obține furnizorul de rețea și web3
exemplu.
Vezi utils/getWeb3 pentru mai multe detalii
informații.
getWeb3
.then(results => {
this.setState({
web3:
results.web3
})
Instanțiază contractul
Odată ce Web3 a fost oferit.
12/16
this.instantiateContract()
})
.catch(() => {
console.log('Eroare
Găsind Web3.')
})
}
instantiateContract() {
/*
* EXEMPLU DE CONTRACT INTELIGENT
*
* În mod normal, aceste funcții ar
să fie numit în contextul unui
* bibliotecă de management al statului, dar
Pentru comoditate, le-am pus aici.
*/
this.simpleStorageSet(5)
}
changeValueHandle(event) {
this.setState({
inputValue:
Număr(eveniment.țintă.valoare)
})
}
setHandle() {
this.simpleStorageSet(this.state.inputValue)
}
simpleStorageSet(x) {
simpleStorage.setProvider(this.state.web3.curren
tProvider)
Declar acest lucru pentru mai târziu, deci
13/16
putem lanța funcții pe SimpleStorage.
var simpleStorageInstance
Fă-ți conturi.
this.state.web3.eth.getAccounts((eroare,
conturi) => {
simpleStorage.deployed().then((instanță) => {
simpleStorageInstance = instanță
this.setState({
address: instance.address })
Magazine a
dată valoare, 5 implicit.
Întoarcerea
simpleStorageInstance.set(x, {from:
relatări[0]})
}).atunci((rezultat) => {
Obține valoarea
din contract pentru a demonstra că a funcționat.
Întoarcerea
simpleStorageInstance.get.call(accounts[0])
}).atunci((rezultat) => {
Starea actualizării
cu rezultatul.
Întoarcerea
this.setState({ storageValue: result.c[0] })
})
})
}
render() {
Întoarcerea (
<div className="App">
<nav
className="navbar meniu pur-meniu pur-orizontal">
14/16
<a href="#" className="pure-menu-head-head">Truffle
Cutie</a>
</nav>
<principal
className="container">
Divizia <
className="pur-g">
<div className="pure-u-1-1">
<h1>Gata de plecare!</h1>
<p>Cutia ta de trufe este instalată și pregătită.</p>
<h2>Exemplu de contract inteligent</h2>
<p>Dacă contractele tale au fost compilate și migrate
Cu succes, mai jos va arăta o valoare stocată de
5 (implicit).</p>
<p>Încearcă să schimbi valoarea stocată <strong>online
59</strong> din App.js.</p>
<p>Valoarea stocată este:
{this.state.storageValue}</p>
<p>Adresa contractului implementat:
{aceasta.adresă.stat}</p>
</div>
<div>
<input type="number" onChange=
{this.changeValueHandle}/>
<butonul onClick={this.setHandle}>set</button>
15/16
</div>
</div>
</main>
</div>
);
}
}
exportă aplicația implicită
Am adăugat metoda de apelare a setării contractului. Și arată adresa contractului.
5. Deschide o consolă nouă și rulează npm run start
6. Deschide http://lcoalhost:3000 în browser pentru a vedea rezultatele contractului.
7. Setează valoarea contractului stocat Data prin casetele de set și de intrare.
8. Intră în dezvoltarea trufelor
//将xxx替换为address
SimpleStorage.at('xxxx').then(res => {return
res.get()})
Valoarea de returnare a tipului BigNUmber este obținută, iar valoarea din tabloul c este setată
storedData.
Folosește pluginul de browser Metamask pentru a interacționa cu blockchain-ul
Referință http://truffleframework.com/tutorials/pet-shop
Participanții depun documente
Competiția specifică utilizarea Truffle pentru dezvoltarea contractelor inteligente, versiunea Truffle v4.1.5 corespunzând versiunii solcjs
v0.4.21. Dezvoltatorii trebuie să trimită pachetul poștal al proiectului Truffle și documentele de introducere aferente, care includ cel puțin
Următoarele:
16/16
1. Structura de bază a fișierelor Proiectului Truffle: Testul migrării contractelor de construcție
package.json truffle.js truffle-config.js README.md // Descrierea documentației inginerești
Nu este nevoie de node_modules
2. Trebuie să ofere o explicație PPT sau PDF a întregului produs al proiectului, inclusiv introducerea contextului produsului, semnificația produsului,
Adresa de descărcare a aplicației (opțional), introducerea procesului de utilizare a produsului.
Dezvoltatorii terți ulteriori pot implementa aplicații contractuale și buzunare Chain conform viitorului document de ghidare ThunderChain
Interacțiune.
Documentație și Instrumente
API solidity
Documentația trufelor
Ganache oferă o interfață grafică pentru mediul blockchain nativ
Zeppelin-Solidty este dedicată unui cadru contractual sigur și standardizat
MetaMask oferă pluginuri pentru browsere cu un mediu blockchain prin conexiuni RPC
web3.js JS încapsulat în Ethereum pentru interacțiunea cu blockchain-ul
În final, descărcarea documentului pdf:

Dev_Guide_zh.pdf (373.55 KB, Numărul de descărcări: 6)
 Proprietarul| Postat pe 03.05.2018 16:01:58 |
Postat pe 08.05.2018 14:25:10 |
Învățat, mulțumesc
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com