Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 13646|Válasz: 2

Blockchain alkalmazásfejlesztési útmutató

[Linket másol]
Közzétéve 2018. 05. 03. 15:55:28 | | |
Nyilatkozat: Az alábbiakban található a Xunlei Company által írt "Xunlei Global Blockchain Application Competition Development Guide" dokumentum, miért használják a Xunlei Company által írt dokumentumot blokklánc fejlesztési útmutatóként?

A Thunder valójában egy privát lánc, amely Ethereum okosszerződésekkel épült, a technológia nagyon érett, és mélyreható kutatásokkal rendelkezik a blokklánc technológiáról, ami vezető jelentőséggel bír a blokklánc fejlesztésünk szempontjából.

Ahogy a mondás tartja: "vonjunk következtetéseket egy példából", más blokklánc alkalmazásokat is fejleszthetünk, ha elolvassuk a Xunlei által írt blokklánc fejlesztési útmutatót, köszönhetően Xunleinek.

A dokumentum így szól:

1/16
Thunder Global Blockchain Alkalmazásverseny Fejlesztési Útmutató
Szerződésfejlesztés a vonal ajánlásá
1. Okosszerződések írása előtt bizonyos szintű értelemeket kell szerezned a blokklánc alapjairól (csatolva: Ethereum áttekintés).
2. Tanuld meg a solidity nyelvet (solidity API).
3. Tanuld meg használni a szarvasgomba keretrendszert a szilárdsági tanulással együtt. Használd helyben szarvasgombát
Futass szerződéseket blokklánc környezetben.
4. Tanuld meg és használd a zeppelin-solidty-t (egy szabványosított szerződéskeret, amely a biztonságra van szentelve), valamint integrált tervezést
Szerződésmód, külön adat- és logikai szerződések, vezérlési engedélybiztonság, és a frissítési logika mérlegelése.
5. Tanulj meg web3.js segítségével kommunikálni a szerződésekkel. Használd a Metamask plugint és webszolgáltatást blokklánccal
Interakció.
6. Fórum Kérdések és Válaszok: http://wanke.xunlei.com/forum.php?
mod=forumdisplay&fid=53 (Bármilyen problémát vissza tudsz fordítani ezen a fórumon.)
3 munkanapon belül válaszolunk)
Alapvető fogalmak
Blokklánc
A blokklánc egy decentralizált elosztott számítástechnikai rendszer, amelynek fő jellemzője az adatok állandó változatlansága,
Nem lehet megalkotni, és magas szintű nyitottsággal, átláthatósággal és bizalmlal rendelkezik. Az alapvető technológiák közé tartozik a Byzantine Fault Tolerant Consensus Algorithm (PBFT),
titkosítási technológia, P2P technológia stb.
Tranzakció
A blokklánc egy globálisan megosztott tranzakciós adatbázis-rendszerként értelmezhető. Bármely szoftver, amelynek engedélye van, el tudja olvasni
Vegyél adatokat a blokklánc hálózatról. Amikor szükséges az adatok megváltoztatása a blokkhálózatban, egy takarót kell indítani
Vannak olyan kérések, amelyeket a blokk csomópontok fogadnak el, amelyeket a rendszerben együttesen tranzakcióknak neveznek.
A tranzakciók tranzakciók, és a blokkláncba kerülnek, vagy nem mindegyik, vagy mind végrehajtva. Kereskedelmi vezető
Miután a sor elkészült, véglegesen elmentődik a blokkláncra, és nem módosítható vagy újra végrehajtható.
A tranzakciókat a rendszerben lévő fiók indítja el és írja alá, és kriptográfia révén a tranzakciókat csak a privát kulcs tarthatja meg
2/16
Valaki kezdeményezi, mások nem tudják módosítani és kovácsolni. Ez biztosítja a tranzakció hitelességét és biztonságát.
Fiók
A blokklánc rendszerben kétféle számla van: az egyik külső, a másik a szerződéses számla. Külső tulajdonban lévő fiók
Saját egyedi nyilvános és privát kulcsaidat használod, és a fiókodat ez a kulcspáros irányítja. A határidős számláknak saját kódjuk van, és a fiókot a
Saját kódvezérlés.
A számlát cím azonosítja, a címhossz ugyanaz, és a két fióktípus között nincs különbség. A külső fiók címét a következők adják meg:
A nyilvános kulcs generálódik, és a szerződés címe azt a címet használja, amelyről a szerződéses fiókot létrehozták, valamint a szerződéses számlát létrehozó tranzakciók számát
(nonce) keletkezik. A szerződéseket a hivatalos cím helyezi ki, és a hagyományos számlák nem közvetíthetik közvetlenül a szerződéseket. A felhasználói kombináció
Hivatalosan is át kell néznie és ki kell adni Xunlei-nek.
A rendszerben nincs különbség a két típusú számla között. Minden fiókhoz 256 bit van a rendszerben
A kulcs-érték tárolási struktúrát legfeljebb 256 bitig tárolásnak nevezik. Minden számlának van egy egyenlege, amit hívnak
A WEI-ben az egyenleg módosítható úgy, hogy egy numerikus értékű tranzakciót küldenek a számlának.
Szerződés
A szerződés egy blokklánc fiók, amely tárolja a kódot, és a szerződéshívást úgy hajtják végre, hogy tranzakciókat küldenek erre a számlára. Mikor
A korábbi, népszerűbb szerződéses programozási nyelv a Solidity volt. Jelenleg a verseny csak a Solidity nyelven támogatja a szerződés benyújtását.
A szerződés két részre oszlik: adattárolásra és funkcióra, az adatok a szerződés állapotát tárolják, a függvény pedig a szerződés
A külső interfész adatlekérdezéseket és állapotmódosításokat valósít meg függvények meghívásával.
Írj szerződést egy programozási nyelven keresztül, és a fordítás után szerezd meg az EVM bájtkódot. Ha tranzakciót küldünk a szerződéses számlára, valós
Jelenlegi szerződéses hívás.
Gáz
A gáz a blokklánc fizetési egysége, és amikor tranzakciót hoznak létre, egy bizonyos mennyiségű gázt megadnak. Lord
Ha ez korlátozza a tranzakció számítási mennyiségét, és díjat kell fizetni a tranzakció végrehajtásáért. Az ügylet végrehajtása során a Gas
Ezt az EVM által meghatározott szabály fogja felhasználni.
A gázár egy olyan érték, amelyet a tranzakció létrehozó határoz meg, valamint a tranzakció végrehajtásához szükséges díjak száma
Az összeg Gas_Price*Gáz. Tranzakció vége Ha marad gáz, a maradék részt visszaküldik a készítő javaslatának
felhasználók. Ha a gáz nem elegendő, a tranzakció végrehajtása meghibás, és a tranzakció nem tudja megakadályozni a rendszer biztonsága érdekében az árvíztámadásokat
A kezelési díjat nem térik vissza. A legkisebb benzinár egység a wei, 10^18 wei = 1 láncgramm.
Szilárdság
3/16
A Solidity egy magas szintű programozási nyelv, amely okosszerződésekre készült, és EVM-en (Ethereum) fut.
Virtual Machine)。 A nyelvtervezési megvalósítást a C++/Python/JavaScript befolyásolja.
A szilárdság egy erősen típusozott nyelv, amely támogatja az öröklést (öröklés), a polimorfizmus, a felületeket, az absztrakciót, a könyvtárakat, az egyedi adattípusokat és még sok mást
Szex. A Solidity támogatja az assembly utasításos programozást, a kódot bájtkódba fordítják, és az EVM-en fut. Szilárdság
A legnépszerűbb okosszerződés-fejlesztési nyelv egyben a Thunder Contract Platform által ajánlott és támogatott nyelv is.
Megjegyzések:
1. Az Ethereum Virtuális Gép egy virtuális környezet Ethereumon, amely futásidejű környezetet biztosít okosszerződések számára
Szimulált gép. A versenyplatform kompatibilis az EVM-mel, de be kell tartania a hivatalos platform használati korlátozásait.
2. Számlatípusokat külső számlákra (hagyományos kereskedési számlacímek) és határidős számlákra osztanak. Készíts szerződést
Ez a tranzakció küldésének folyamata a célállomás 0 címére.
3. A verseny előírja a szarvasgomba használatát (truffle v4.1.5 szilárdság v0.4.21) intelligens kombinációk kifejlesztésére
A platform a résztvevő által benyújtott dokumentum forráskódja alapján ellenőrzi a bájtkódot. ,
Szerződések kötése szarvasgombával
Okos szerződés szilárdsági fejlesztési keretrendszer, truffle. Teljes fejlesztési, hibakeresési és szerkesztési rendszert biztosít
On-premises környezetek fordítása, telepítése és tesztelése. Gyorsan használhatod az unbox sablonparancsot néhány sablon alapján.
Hozza létre a megfelelő szerződésstruktúrát.
Telepítsd a Truffle-t
NPM i -G Szarvasgomba
[root@opennode sandai]# Szarvasshang verzió
Truffle v4.1.5 (mag: 4.1.5)
Solidity v0.4.21 (solc-js)
Kezdjük
1. Indítsa el a szerződéses projektet trüffal
4/16
mkdir simple-storage
CD egyszerű-tárolás
Szarvasgomba init
2. Új szerződésfájlt készíthetsz: Truffle-t használhatsz szerződés létrehozására
Közvetlenül a SimpleStorage parancssorból is létrehozhatsz új fájlt
contract/SimpleStorage.sol
SimpleStorage.sol
pragma szilárdsága ^0.4.21;
contract SimpleStorage {
uint myVariable;
Function set(uint x) public {
myVariable = x;
}
függvény get() állandó nyilvános hozamok
(uint) {
return myVariable;
}
}
3. Migrációs szkriptek hozzáadása: használhatod a truffle create migration-t
2_deploy_contract Parancssoros metódus hozzáadódik, és közvetlenül is létrehozhatsz új fájlt
Migrációk/2_deploy_contract.js
2_deploy_contract.js; a szarvasgomba vándorlás végrehajtása
A sorsorrend a fájlnévhez kapcsolódik, ezért több telepítési szkriptet is sorrendben kell elnevezni
var SimpleStorage =
artifacts.require("SimpleStorage");
module.exports = function(deployer) {
deployer.deploy (SimpleStorage);
5/16
};
4. Futtatd a truffle fordítási szerződést, és a fordított szerződés a build mappában található. szerződés szerint
A telepítéshez szükséges egy megfelelő json fájl, amely bytecode-ot, abiCode-ot stb. tartalmaz
5. Szerkessze a truffle.js beállításához a trüf telepítési szerződést és az RPC kapcsolatot a blokklánccal való interakcióhoz.
[root@localhost opennode]# vi truffle.js
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*"
}
}
};
6. Kapcsold be a Truffle alapértelmezett blokklánc környezetét a konzolon.
Szarvasgomba fejlődése
A Trüf Fejlesztés a következő címen kezdődött
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
Privát kulcsok:
(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)
8d5366123cb560bb606379f9a0bfd4769eecc0557ff1b362
dcae9012b548b1e5
Mnemonic: candy maple cake sugar pudding cream
mézben gazdag, sima, morzsa édes finomság
⚠ Fontos ⚠: Ezt a mnemonikát a
A Truffle-tól. Nem biztonságos.
Győződj meg róla, hogy ne használd a gyártás során
7/16
blokkláncok, különben pénzvesztést kockáztatsz.
Szarvasgomba (fejlesztés)>
Ez egy natív blokklánc környezetet biztosít a Truffle számára, hogy szerződéseket futtasson, alapértelmezés szerint 10 fiókot generálva, mindegyik generált
A kezdeti számlaegyenleg 100 éter. Használhatod a Ganache által biztosított grafikus felületet is
, módosítani kell azt a portot, amelyhez a konfiguráció csatlakozik.
7. Hajtsd végre a truffle migrate port telepítési szerződést egy új konzolon (vagy truffle-ban)
Konzol fejlesztése migráció végrehajtásához).
8. Teszteld a szerződéskódot a szarvasgomba fejlesztésével.
SimpleStorage.deployed().then(function(instance
){return
instance.get.call(); }).then(function(value)
{return value.toNumber()})
// 0
SimpleStorage.deployed().then(function(instance
){return instance.set(100); });
Kimeneti tranzakciós információk
SimpleStorage.deployed().then(function(instance
){return
instance.get.call(); }).then(function(value)
{return value.toNumber()});
// 100
9. Teszteld a szerződést szarvasgomba teszttel Használd a szarvasgomba létrehozási tesztet SimpleStorage-szel, hogy új vagy vagy
Hozz létre egy új fájltesztet/SimpleStorage.test.js közvetlenül.
const SimpleStorage =
artifacts.require('SimpleStorage');
contract('SimpleStorage', function(accounts) {
8/16
it("kell igazat állítani", function(done)
{
var simpleStorage =
SimpleStorage.deployed();
VAR instance;
simpleStorage.then(res => {
instance = res;
return instance.get()
}).then(value => {
assert.equal('0',
value.toNumber(), 'nem egyenlő 0')
}).then(() => {
instance.set(100)
}).then(() => {
return instance.get()
}).then(value => {
assert.equal('100',
value.toNumber(), 'nem egyenlő 100')
})
done();
});
});
Az új konzolon lépj be a szarvasgomba teszt ./test/SimpleStorage.test.js.
10. Tesztszerződések remixtel Tegyenruhát használó szerződések gyors módosításához
A javasolt szerződés telepítése és alkalmazása. A Remix egy összeállítási futókörnyezetet biztosít a szerződések számára, és a szerződés irányíthatja
A táblázat minden tranzakció részletes információját láthatja, például bemeneti és kimeneti paramétereket, aláírt módszeradatokat,
tranzakciós hash és egyéb információk. Támogatás hibakeresésre.
1. Használd a compile detailet a szerződés összeállításának részleteinek megtekintéséhez. Beleértve a bytecode-ot, abi
valamint web3.js gyors Drip Ah módszer alkalmazása.
9/16
2. A run-t használd szerződés létrehozásához, és a konzol megtekintheti a szerződést létrehozó tranzakciót.
Használd a Truffle Unboxot interaktív szerződéses alkalmazások létrehozásához
A fenti lépések olyan szerződéses környezetet hoznak létre, amelyet le lehet fordítani, telepíteni és hibakeresést végezni az alapvető truffle init segítségével. Lent
Készíts új projektet a Truffle Unbox-tal, amely egy tréffprojekt sablont biztosít
Néhány szerződéses alkalmazás interakciós környezet függősége. A hivatalos kínálatot a Trüf Dobozokban is megnézheted
Sablondobozok. Az alábbiakban a react sablon található.
1. Új projekt a truf-react
MKDIR TRUF-REACT
10/16
cd truf-react
Szarvasgomba Unbox React
Az unbox folyamat letölti a kinyerési sablont, és olyan műveleteket végez, mint például npm telepítés.
2. Konfiguráld a projekt truffle.js
module.exports = {
Lásd
<http://truffleframework.com/docs/advanced/confi
Guration>
hogy testre szabhatod a Truffle-odat
Konfiguráció!
networks: {
development: {
host: '127.0.0.1',
port: '9545',
network_id: '*' // Mérkőzés
bármilyen hálózati azonosító
}
}
};
3. Indítsd el a szarvasgomba fejlesztését
4. Az SRC/App.js módosítása
importálja a React, { Component } a 'react'-ből
importál SimpleStorageContract
'.. /építik/szerződések/SimpleStorage.json'
importálja getWeb3-at a './utils/getWeb3' címből
importál './css/oswald.css'
importál './css/open-sans.css'
importálás './css/pure-min.css'
11/16
importálás './App.css'
const contract = require('szarvas-szerződés')
const simpleStorage =
szerződés (SimpleStorageContract)
class App extend Component {
constructor(props) {
szuper(kellékek)
this.state = {
storageValue: 0,
web3: null,
inputValue: 0,
address: null
}
this.changeValueHandle =
this.changeValueHandle.bind(this)
this.setHandle =
this.setHandle.bind(ez)
}
componentWillMount() {
Szerezz hálózati szolgáltatót és web3-at
instance.
További információért lásd az utils/getWeb3 oldalt
információ.
getWeb3
.then(results => {
this.setState({
web3:
results.web3
})
Instantív szerződés
Miután a web3 megadta magát.
12/16
this.instantantiateContract()
})
.catch(() => {
console.log('Hiba
a web3 megtalálása.')
})
}
instantiateContract() {
/*
* OKOS SZERZŐDÉS PÉLDA
*
* Általában ezek a függvények
a kontextusban hívható egy
* állami menedzsment könyvtár, de
Kényelmesség kedvéért ide helyeztem el őket.
*/
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)
Ezt később mondjuk ki, így
13/16
A SimpleStorage-en láncolhatjuk a függvényeket.
var simpleStorageInstance
Szerezz számlákat.
this.state.web3.eth.getAccounts((hiba,
számlák) => {
simpleStorage.deployed().then((instance) => {
simpleStorageInstance = instance
this.setState({
address: instance.address })
Raktárok a
adott érték, alapértelmezés szerint 5.
Visszatérés
simpleStorageInstance.set(x, {from:
számlák[0]})
}).then((result) => {
Szerezd meg az értéket
a szerződésből, hogy bizonyítsam, működik.
Visszatérés
simpleStorageInstance.get.call(accounts[0])
}).then((result) => {
Állapot frissítése
az eredménnyel.
Visszatérés
this.setState({ storageValue: result.c[0] })
})
})
}
render() {
return (
<div className="App">
<
className="navbar tiszta-menü tiszta-menühorizontal">
14/16
<a href="#" className="pure-menu-heading puremenu-link">Trüf
Doboz</a>
</nav>
<fő
className="container">
<div
className="pure-g">
<div className="pure-u-1-1">
<h1>Készen állunk!</h1>
<p>A Truffle Boxod be van szerelve és készen áll.</p>
<h2>Okos szerződés példa</h2>
<p>Ha a szerződéseid összeállítottak és áthelyezték
Az alábbiakban sikeresen megjeleníthető egy tárolt érték
5 (alapértelmezettben).</p>
<p>Próbáld meg megváltoztatni az online tárolt értéket <strong>
59</strong>/App.js.</p>
<p>A tárolt érték a következő:
{this.state.storageValue}</p>
<p>Telepített szerződéscím:
{this.state.address}</p>
</div>
<div>
<input type="number" onChange=
{this.changeValueHandle}/>
<button onClick={this.setHandle}>set</button>
15/16
</div>
</div>
</main>
</div>
);
}
}
exportálás alapértelmezett alkalmazás
Hozzáadtam a szerződés szetű módszer hívását. És mutasd meg a szerződés címét.
5. Nyiss egy új konzolt, és indítsd az npm run start-ot
6. Nyisd meg a http://lcoalhost:3000 böngészőben, hogy megnézd a szerződés eredményét.
7. Állítsuk be a szerződéses tárolt adatok értékét a készleten és a bemeneti dobozokon keresztül.
8. Lépj be a trufle fejlesztésbe
//将xxx替换为address
SimpleStorage.at('xxxx').then(res => {return
res.get()})
A BigNUmber típus visszatérési értéke megkapjuk, és a c tömbben lévő érték beállítva van
tároltData.
Használd a Metamask böngészőbővítményt a blokklánccal való interakcióhoz
Hivatkozás http://truffleframework.com/tutorials/pet-shop
A résztvevők dokumentumokat nyújtanak be
A verseny előírja a Truffle használatát az okosszerződések fejlesztéséhez, a Truffle verziója v4.1.5 felel meg a solcjs verziónak
v0.4.21. A fejlesztőknek be kell nyújtaniuk a Truffle projekt zip csomagot és a kapcsolódó projektbevezető dokumentumokat, amelyek legalább tartalmazzák
A következők:
16/16
1. Truffle Project Alapvető fájlszerkezet: Build Contracts migrációs teszt
package.json truffle.js truffle-config.js README.md // Mérnöki dokumentáció leírása
Nem kell node_modules
2. PPT vagy PDF magyarázatot kell adni a teljes projekttermékről, beleértve a termék háttérbevezetését, a termék jelentőségét,
App letöltési cím (opcionális), termékhasználati folyamat bevezetése.
A következő harmadik féltől származó fejlesztők szerződéses alkalmazásokat és lánczsebeket valósíthatnak meg a közelgő ThunderChain útmutató szerint
Interakció.
Dokumentáció és eszközök
szilárdsági API
Szarvasgomba dokumentáció
A Ganache grafikus felületet biztosít a natív blokklánc környezethez
A Zeppelin-Solidty elkötelezett egy biztonságos és szabványosított szerződéskeret mellett
A MetaMask böngészőbővítményeket biztosít blokklánc környezetű böngészők számára RPC kapcsolatokon keresztül
web3.js Ethereum-alapú JS a blokklánccal való interakcióhoz
Végül a pdf dokumentum letöltése:

Dev_Guide_zh.pdf (373.55 KB, Letöltések száma: 6)
 Háziúr| Közzétéve 2018. 05. 03. 16:01:58 |
Közzétéve 2018. 05. 08. 14:25:10 |
Tanultam, köszönöm
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com