Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 13646|Odgovoriti: 2

Vodnik za razvoj aplikacij za blockchain

[Kopiraj povezavo]
Objavljeno na 3. 05. 2018 15:55:28 | | |
Izjava: Spodaj je dokument "Xunlei Global Blockchain Application Competition Development Guide", ki ga je napisalo podjetje Xunlei, zakaj uporabiti dokument, ki ga je napisalo podjetje Xunlei, kot vodič za razvoj blockchaina?

Thunder je pravzaprav zasebna veriga, zgrajena z Ethereum pametnimi pogodbami, tehnologija je zelo zrela in ima poglobljene raziskave o blockchain tehnologiji, kar ima vodilni pomen za naš razvoj blockchaina.

Kot pravi pregovor, »iz enega primera potegnemo sklepe«, lahko razvijemo druge blockchain aplikacije z branjem dokumenta o razvoju blockchaina, ki ga je napisal Xunlei, zahvaljujoč Xunleiju.

Dokument se glasi:

1/16
Vodnik za razvoj globalnih tekmovanj v aplikacijah Blockchain Thunder
Razvoj pogodbe v priporočilo za linijo
1. Pred pisanjem pametnih pogodb morate imeti določeno razumevanje osnov blockchaina (priloženo: Ethereum pregled).
2. Naučite se jezika trdnosti (API trdnosti).
3. Naučite se uporabljati okvir tartufa v kombinaciji z učenjem trdnosti. Uporabite tartufe, ki jih gojite lokalno
Izvajajte pogodbe v blockchain okolju.
4. Naučiti se in uporabljati zeppelin-solidty (standardizirani pogodbeni okvir, namenjen varnosti) in integracijo načrtovanja
Način pogodbe, ločevanje podatkov in logičnih pogodb, nadzor varnosti dovoljenj in upoštevanje logike nadgradenj.
5. Naučite se komunicirati s pogodbami z uporabo web3.js. Uporabite vtičnik Metamask in spletno storitev z blockchainom
Interakcija.
6. Forum vprašanja in odgovori: http://wanke.xunlei.com/forum.php?
mod=forumdisplay&fid=53 (Vse težave, na katere naletite, lahko na tem forumu razveljavite.)
Odgovorili vam bomo v 3 delovnih dneh)
Osnovni pojmi
Blockchain
Blockchain je decentraliziran distribuiran računalniški sistem, katerega glavna značilnost je trajna nespremenljivost podatkov,
Ni ga mogoče ponarediti in ima visoko stopnjo odprtosti, preglednosti in zaupanja. Temeljne tehnologije vključujejo Bizantinski algoritem za odpornost na napake (PBFT),
tehnologija šifriranja, P2P tehnologija itd.
Transakcija
Blockchain lahko razumemo kot globalno deljen sistem podatkovne baze transakcij. Vsaka programska oprema z dovoljenjem ga lahko prebere
Vzemite podatke iz blockchain omrežja. Ko je potrebno spremeniti podatke v blok omrežju, je treba sprožiti blanket
Obstajajo zahteve, ki jih sprejemajo blok vozlišča, ki se v sistemu skupaj imenujejo transakcije.
Transakcije so transakcijske in se pošiljajo v blockchain, bodisi ne vse ali pa so vse izvedene. Trgovski direktor
Ko je vrstica dokončana, se trajno shrani v verigo blokov in je ni mogoče več spreminjati ali izvajati.
Transakcije sproži in podpiše račun v sistemu, kriptografija pa je mogoče transakcije hraniti le z zasebnim ključem
2/16
Nekdo ga začne, drugi ne morejo spreminjati in ponarejati. To zagotavlja avtentičnost in varnost transakcije.
Račun
V blockchain sistemu obstajata dve vrsti računov, ena je zunanja in druga je pogodbeni račun. Zunanji račun v lasti
Imate svoje edinstvene javne in zasebne ključe, vaš račun pa nadzoruje ta par ključev. Terminski računi imajo svojo kodo, račun pa je ustvarjen
Lastni nadzor kode.
Račun je identificiran z naslovom, dolžina naslova je enaka in med obema vrstama računov ni razlike. Naslov zunanjega računa zagotavlja
Javni ključ se ustvari, naslov pogodbe pa uporablja naslov, s katerega je bil ustvarjen pogodbeni račun, in število transakcij, ki so ustvarile pogodbeni račun
(nonce) je proizvedeno. Pogodbe se izvajajo prek uradnega naslova, običajni računi pa ne morejo neposredno objavljati pogodb. Uporabniška kombinacija
Uradno ga mora pregledati in izdati Xunlei.
V sistemu ni razlike med obema vrstama računov. Vsak račun ima v sistemu 256 bitov
Ključ-vrednost shranjevalna struktura do 256 bitov se imenuje shranjevanje. Vsak račun ima stanje, imenovano
Stanje v WEI je mogoče spremeniti z pošiljanjem transakcije s številčno vrednostjo na račun.
Pogodba
Pogodba je blockchain račun, ki shranjuje kodo, klic pogodbe pa se izvede s pošiljanjem transakcij na ta račun. Ko
Prejšnji bolj priljubljen pogodbeni programski jezik je bil Solidity. Trenutno natečaj podpira oddajo pogodb le v jeziku Solidity.
Pogodba je razdeljena na dva dela: shranjevanje podatkov in funkcijo; podatki shranjujejo stanje pogodbe, funkcija pa je pogodba
Zunanji vmesnik izvaja poizvedovanje podatkov in spreminjanje stanja z klicanjem funkcij.
Napiši pogodbo preko programskega jezika in po prevajanju pridobi bajtkodo EVM. S pošiljanjem transakcije na pogodbeni račun je resnično
Trenutni pogodbeni klic.
Plin
Plin je plačilna enota verige blokov, in ko je transakcija ustvarjena, je določena določena količina plina. Gospod
Če gre za omejitev količine izračuna transakcije in plačilo pristojbine za izvedbo transakcije. Med izvedbo transakcije je Gas
Porablja ga pravilo, ki ga določa EVM.
Cena plina je vrednost, ki jo določi ustvarjalec transakcije, in število pristojbin, potrebnih za izvedbo transakcije
Znesek je Gas_Price*bencin. Transakcija se konča Če ostane gorivo, se preostali del vrne na predlog ustvarjalca
uporabniki. Če plin ni dovolj, bo izvedba transakcije spodletela, transakcija pa ne bo preprečila flood napadov za varnost sistema
Stroški obdelave se ne vračajo. Najmanjša enota cene plina je wei, 10^18 wei = 1 gram verige.
Trdnost
3/16
Solidity je visokonivojski programski jezik, zasnovan za pametne pogodbe, ki deluje na EVM (Ethereum).
Virtual Machine)。 Implementacija oblikovanja jezika je pod vplivom C++/Python/JavaScript.
Solidity je močno tipiziran jezik, ki podpira dedovanje, polimorfizem, vmesnike, abstrakcijo, knjižnice, prilagojene podatkovne tipe in še več
Seks. Solidity podpira programiranje z asemblerskimi ukazi, koda pa je prevedena v bajtkodo in teče na EVM. Trdnost je
Najbolj priljubljen jezik za razvoj pametnih pogodb je tudi jezik, ki ga priporoča in podpira platforma Thunder Contract.
Opombe:
1. Ethereum Virtual Machine je virtualno okolje na Ethereumu, ki zagotavlja okolje za izvajanje pametnih pogodb
Simulirani stroj. Tekmovalna platforma je združljiva z EVM, vendar mora izpolnjevati omejitve uporabe uradne platforme.
2. Vrste računov so razdeljene na zunanje račune (naslovi običajnih trgovalnih računov) in terminske račune. Ustvarite pogodbo
Gre za postopek pošiljanja transakcije na naslov ciljnega računa 0.
3. Tekmovanje določa uporabo tartufa (tartuf v4.1.5 trdnost v0.4.21) za razvoj inteligentnih kombinacij
Platforma bo preverila bajtkodo glede na izvorno kodo dokumenta, ki ga predloži udeleženec. ,
Razvijanje pogodb s tartufi
Pametna pogodba za razvoj trdnosti tartuf. Omogoča popoln nabor razvoja, odpravljanja napak in urejanja
Prevajanje, nameščanje in testiranje lokalnih okolij. Lahko hitro uporabiš ukaz za predlogo unbox, ki temelji na nekaterih predlogah
Ustvarite ustrezno strukturo pogodbe.
Namestite Truffle
npm i -g tartuf
[root@opennode Sandai] # Tartufova različica
Truffle v4.1.5 (osnovno: 4.1.5)
Trdnost v0.4.21 (solc-js)
Začni
1. Začetek pogodbenega projekta s tartufi
4/16
mkdir preprosta shramba
CD Preprosto shranjevanje
tartuf init
2. Ustvarite novo datoteko pogodbe: Za ustvarjanje pogodbe lahko uporabite tartuf
Novo datoteko lahko ustvarite tudi neposredno iz ukazne vrstice SimpleStorage
contract/SimpleStorage.sol
SimpleStorage.sol
pragma trdnost ^0.4.21;
contract SimpleStorage {
uint myVariable;
Funkcija množica(uint x) public {
myVariable = x;
}
funkcija get() konstantne javne donose
(uint) {
vrni myVariable;
}
}
3. Dodaj skripte za migracijo: Lahko uporabiš migracijo za ustvarjanje tartufov
2_deploy_contract Dodana je metoda ukazne vrstice, prav tako pa lahko neposredno ustvarite novo datoteko
migracije/2_deploy_contract.js
2_deploy_contract.js izvajanja tartufske migracije
Vrstni red vrstic je povezan z imenom datoteke, zato je treba poimenovati več skript za nameščanje po vrstnem redu
var SimpleStorage =
artifacts.require("SimpleStorage");
module.exports = function(deployer) {
deployer.deploy(SimpleStorage);
5/16
};
4. Zaženi truffle compile contract, in prevedena pogodba je v mapi build. po pogodbi
Za namestitev je potrebna ustrezna json datoteka, ki vsebuje bajtkodo, abiCode itd.
5. Urediti truffle.js za vzpostavitev pogodbe o uporabi tartufov in povezave RPC za interakcijo z verigo blokov.
[root@localhost opennode]# vi truffle.js
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*"
}
}
};
6. Vklopite privzeto blockchain okolje Truffle na konzoli.
Razvoj tartufov
Truffle Development se je začel pri
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
Zasebni ključi:
(0)
c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e
4a9ec0a0f44dc0d3
(1)
ae6ae8e5ccbfb04590405997ee2d52d2b330726137b87505
3c36d94e974d162f
(2)
0dbbe8e4ae425a6d2687f1a7e3ba17bc98c6736790f1b8
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
Med bogata, gladka drobtina sladka poslastica
⚠ Pomembno ⚠: Ta mnemotehnika je bila ustvarjena za
tebe po Truffle. Ni varna.
Poskrbite, da ga ne uporabljate v proizvodnji
7/16
Blockchain, sicer tvegate izgubo sredstev.
tartufi (razvijajo)>
To zagotavlja izvorno blockchain okolje, kjer lahko Truffle izvaja pogodbe, pri čemer privzeto ustvari 10 računov, od katerih je vsak ustvarjen
Začetno stanje na računu je 100 eterov. Uporabite lahko tudi grafični vmesnik, ki ga ponuja Ganache
, morate spremeniti priključek, na katerega je konfiguracija priključena.
7. Izvesti pogodbo o prenosu portov s tartufi v novi konzoli (ali v tartufih
Razvijte konzolo za izvedbo migracije).
8. Preizkusite pogodbeno kodo s tartufovim razvojem.
SimpleStorage.deployed().then(function(instance
){vrni
instance.get.call(); }).then(function(value)
{return value.toNumber()})
// 0
SimpleStorage.deployed().then(function(instance
){return instance.set(100); });
Informacije o izhodnih transakcijah
SimpleStorage.deployed().then(function(instance
){vrni
instance.get.call(); }).then(function(value)
{return value.toNumber()});
// 100
9. Preizkusite pogodbo s testom tartufov. Uporabite test za ustvarjanje tartufov, SimpleStorage, da ustvarite novo ali
Ustvarite novo datoteko za testiranje/SimpleStorage.test.js neposredno.
const SimpleStorage =
artifacts.require('SimpleStorage');
contract('SimpleStorage', function(accounts) {
8/16
it("should assert true", function(done)
{
var simpleStorage =
SimpleStorage.deployed();
var instance;
simpleStorage.then(res => {
instance = res;
return instance.get()
}).then(value => {
assert.equal('0',
value.toNumber(), 'ni enako 0')
}).then(() => {
instance.set(100)
}).then(() => {
return instance.get()
}).then(value => {
assert.equal('100',
value.toNumber(), 'ni enako 100')
})
done();
});
});
V novi konzoli vnesite test tartufov ./test/SimpleStorage.test.js.
10. Testne pogodbe z remix pogodbami, razvitimi s tartufi v remiksu za hitro spreminjanje
Uvedba in uveljavljanje predlagane pogodbe. Remix zagotavlja okolje za izvajanje prevajanja pogodb in ga lahko nadzoruje pogodba
Tabela lahko prikazuje podrobne informacije o vsaki transakciji pogodbe, kot so vhodni in izhodni parametri, podpisani podatki metode,
transakcijski hash in druge informacije. Podpora odpravljanju napak.
1. Uporabite podrobnosti o prevajanju za ogled podrobnosti o sestavljanju pogodb. Vključno z bajtkodo, abi
in uporabo web3.js hitro uporabo metode Drip Ah.
9/16
2. Uporabite run za ustvarjanje pogodbe, konzola pa lahko vidi transakcijo, ki je pogodbo ustvarila.
Uporabite Truffle Unbox za ustvarjanje interaktivnih aplikacij za pogodbe
Zgornji koraki ustvarijo pogodbeno okolje, ki ga je mogoče prevesti, namestiti in razhroščiti z osnovnim truffle initom. Spodaj
Ustvarite nov projekt s Truffle Unbox, ki nam ponuja predlogo projekta za tartufe, znotraj
Nekatere odvisnosti okolja interakcije s pogodbami in aplikacijami. Uradne ponudbe si lahko ogledate v Truffle Boxes
Predloge za škatle. Sledi predloga react.
1. Novi projekt truf-react
mkdir truf-react
10/16
cd truf-react
Truffle Unbox React
Proces razpakiranja prenese predlogo za izvlek in izvede operacije, kot je npm namestitev.
2. Konfigurirajte truffle.js projekta
module.exports = {
Glej
<http://truffleframework.com/docs/advanced/confi
Guration>
za prilagoditev vašega tartufa
konfiguracija!
networks: {
development: {
host: '127.0.0.1',
port: '9545',
network_id: '*' // Ujemanje
Kateri koli omrežni ID
}
}
};
3. Začnite razvijati tartufe
4. Sprememba SRC/App.js
import React, { Component } iz 'react'
uvoz SimpleStorageContract iz
'.. /gradnja/pogodbe/SimpleStorage.json'
uvoz getWeb3 iz './utils/getWeb3'
uvoz './css/oswald.css'
uvoz './css/open-sans.css'
uvoz './css/pure-min.css'
11/16
uvoz './App.css'
Const pogodba = zahteva('tartuf-pogodba')
const simpleStorage =
pogodba(SimpleStorageContract)
class App Extending Component {
konstruktor(props) {
super(props)
this.state = {
storageValue: 0,
web3: null,
inputValue: 0,
address: null
}
this.changeValueHandle =
this.changeValueHandle.bind(this)
this.setHandle =
this.setHandle.bind(this)
}
componentWillMount() {
Pridobite ponudnika omrežja in web3
primer.
Za več informacij glejte utils/getWeb3
Informacije.
getWeb3
.then(results => {
this.setState({
web3:
results.web3
})
Instancirana pogodba
Ko je Web3 to zagotovil.
12/16
this.instantiateContract()
})
.catch(() => {
console.log('Napaka
iskanje web3.')
})
}
instantiateContract() {
/*
* PRIMER PAMETNE POGODBE
*
* Običajno bi te funkcije
se imenuje v kontekstu
* državna upravna knjižnica, vendar
Za lažje razumevanje sem jih postavil tukaj.
*/
this.simpleStorageSet(5)
}
changeValueHandle(event) {
this.setState({
inputValue:
Number(event.target.value)
})
}
setHandle() {
this.simpleStorageSet(this.state.inputValue)
}
simpleStorageSet(x) {
simpleStorage.setProvider(this.state.web3.curren
tProvider)
To razglašam za kasneje, torej
13/16
funkcije lahko verižujemo na SimpleStorage.
var simpleStorageInstance
Pridobi račune.
this.state.web3.eth.getAccounts((napaka,
računi) => {
simpleStorage.deployed().then((instance) => {
simpleStorageInstance = instanca
this.setState({
address: instance.address })
Shrambe
podana vrednost, 5 privzeto.
Vrnitev
simpleStorageInstance.set(x, {from:
računi[0]})
}).then((result) => {
Pridobite vrednost
iz pogodbe, da dokaže, da deluje.
Vrnitev
simpleStorageInstance.get.call(accounts[0])
}).then((result) => {
Stanje posodobitve
z rezultatom.
Vrnitev
this.setState({ storageValue: result.c[0] })
})
})
}
render() {
vrni (
<div className="App">
<navigacija
className="navbar pure-menu pure-menuhorizontal">
14/16
<a href="#" className="pure-menu-header-puremenu-link">Truffle
Škatla</a>
</nav>
<Main
className="container">
<div
className="pure-g">
<div className="pure-u-1-1">
<h1>Pripravljeno!</h1>
<p>Vaša škatla s tartufi je nameščena in pripravljena.</p>
<h2>Primer pametne pogodbe</h2>
<p>Če so se vaše pogodbe kompilirale in migrirale
Spodaj bo uspešno prikazana shranjena vrednost
5 (privzeto).</p>
<p>Poskusite spremeniti vrednost, shranjeno na <strong>spletu
59</strong> od App.js.</p>
<p>Shranjena vrednost je:
{this.state.storageValue}</p>
<p>Naslov za razporejeno pogodbo:
{this.state.address}</p>
</div>
<div>
<vhodni tip="številka" naSprememba=
{this.changeValueHandle}/>
<gumb onClick={this.setHandle}>set</button>
15/16
</div>
</div>
</main>
</div>
);
}
}
izvoz privzete aplikacije
Dodali smo klic metode pogodbenega množice. In pokaži naslov pogodbe.
5. Odpri novo konzolo in zaženi npm run start
6. Odprite http://lcoalhost:3000 v brskalniku in si ogledate rezultate pogodbe.
7. Nastavite vrednost pogodbenega shranjevanja podatkov preko polj set in input.
8. Vstopi v razvoj
//将xxx替换为address
SimpleStorage.at('xxxx').then(res => {return
res.get()})
Dobimo povratno vrednost tipa BigNUmber in nastavimo vrednost v c polju
shranjeni podatki.
Za interakcijo z blockchainom uporabite vtičnik Metamask za brskalnik
Referenčni http://truffleframework.com/tutorials/pet-shop
Udeleženci oddajo dokumente
Tekmovanje določa uporabo Truffle za razvoj pametnih pogodb, pri čemer različica Truffle v4.1.5 ustreza solcjs različici
v0.4.21. Razvijalci morajo predložiti zip paket projekta Truffle in povezane uvodne dokumente, ki vključujejo vsaj
Naslednje:
16/16
1. Osnovna struktura datoteke Truffle Project: Test migracij gradbenih pogodb
package.json truffle.js truffle-config.js README.md // Opis inženirske dokumentacije
Ni potrebnih node_modules
2. Potrebno je zagotoviti PPT ali PDF razlago celotnega projektnega izdelka, vključno z uvodom v ozadje izdelka, pomenom izdelka,
Naslov za prenos aplikacije (neobvezno), uvod v postopek uporabe izdelka.
Kasnejši razvijalci tretjih oseb lahko v skladu z prihajajočimi smernicami ThunderChain implementirajo pogodbene aplikacije in Chain žepe
Interakcija.
Dokumentacija in orodja
API trdnosti
Dokumentacija o tartufih
Ganache zagotavlja grafični vmesnik za izvorno blockchain okolje
Zeppelin-Solidty je zavezan varnemu in standardiziranemu pogodbenemu okviru
MetaMask zagotavlja vtičnike za brskalnike z blockchain okoljem preko RPC povezav
web3.js JS, enkapsuliran z Ethereumom, za interakcijo z blockchainom
Nazadnje, pdf dokument za prenos:

Dev_Guide_zh.pdf (373.55 KB, Število prenosov: 6)
 Najemodajalec| Objavljeno na 3. 05. 2018 16:01:58 |
Objavljeno na 8. 05. 2018 14:25:10 |
Naučil sem se, hvala
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com