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)
|