Vyhlásenie: Nasleduje dokument "Xunlei Global Blockchain Application Competition Development Guide" napísaný spoločnosťou Xunlei, prečo používať dokument napísaný spoločnosťou Xunlei ako sprievodcu vývojom blockchainu?
Thunder je vlastne súkromný reťazec postavený na Ethereum smart kontraktoch, technológia je veľmi vyspelá a má hĺbkový výskum blockchainovej technológie, čo má zásadný význam pre náš vývoj blockchainu.
Ako sa hovorí, "vyvodzovať závery z jedného príkladu", môžeme vyvíjať ďalšie blockchainové aplikácie čítaním sprievodcu blockchainom, ktorý napísal Xunlei, vďaka Xunleiovi.
Dokument znie:
1/16 Príručka na vývoj súťaže Thunder Global Blockchain Application Competition Vývoj zmluvy do odporúčania trate 1. Pred písaním smart kontraktov musíte mať určité pochopenie základov blockchainu (priložené: Prehľad Etherea). 2. Naučte sa jazyk solidity (solidity API). 3. Naučte sa používať hľuzovkový rámec v kombinácii s učením na pevnosť. Používajte hľuzovky lokálne Spúšťajte kontrakty v prostredí blockchainu. 4. Naučte sa a používajte zeppelin-solidty (štandardizovaný zmluvný rámec venovaný bezpečnosti) a navrhujte integráciu Režim zmluvy, oddelené dáta a logické zmluvy, kontrola bezpečnosti oprávnení a zohľadnenie logiky aktualizácie. 5. Naučte sa komunikovať so zmluvami pomocou web3.js. Použite plugin Metamask a webovú službu s blockchainom Interakcia. 6. Diskusia fóra: http://wanke.xunlei.com/forum.php? mod=forumdisplay&fid=53 (Akékoľvek problémy, na ktoré narazíte, môžete na tomto fóre vrátiť.) Odpovieme vám do 3 pracovných dní) Základné pojmy Blockchain Blockchain je decentralizovaný distribuovaný výpočtový systém, ktorého hlavnou vlastnosťou je trvalá nemennosť dát, Nedá sa sfalšovať a vyznačuje sa vysokou mierou otvorenosti, transparentnosti a dôvery. Základné technológie zahŕňajú Byzantine Fault Tolerant Consensus Algorithm (PBFT), šifrovacia technológia, P2P technológia a podobne. Transakcia Blockchain možno chápať ako globálne zdieľaný databázový systém transakcií. Akýkoľvek softvér s povolením ho môže čítať Vezmite dáta z blockchainovej siete. Keď je potrebné zmeniť dáta v blokovej sieti, musí sa spustiť blanket Blokové uzly prijímajú požiadavky, ktoré sa v systéme kolektívne označujú ako transakcie. Transakcie sú transakčné a odosielajú sa do blockchainu, buď nie všetky, alebo sú všetky vykonané. Obchodný manažér Po dokončení riadku sa trvalo uloží do blockchainu a už ho nie je možné upravovať ani spustiť. Transakcie sú iniciované a podpisované účtom v systéme a prostredníctvom kryptografie môžu byť transakcie držané iba súkromným kľúčom 2/16 Niekto to iniciuje, iní nemôžu upravovať a falšovať. To zaručuje autenticitu a bezpečnosť transakcie. Účet V blockchainovom systéme existujú dva typy účtov, jeden je externý a druhý je zmluvný účet. Externý účet vlastnený Vaše vlastné jedinečné verejné a súkromné kľúče a váš účet je ovládaný týmto párom kľúčov. Futures účty majú svoj vlastný kód a účet vytvára Vlastná kontrola kódu. Účet je identifikovaný podľa adresy a dĺžka adresy je rovnaká a medzi týmito dvoma typmi účtov nie je žiadny rozdiel. Adresa externého účtu je poskytnutá Verejný kľúč sa vygeneruje a adresa zmluvy používa adresu, z ktorej bol zmluvný účet vytvorený, a počet transakcií, ktoré vytvorili zmluvný účet (nonce) sa produkuje. Zmluvy sa zadávajú podľa oficiálnej adresy a bežné účty nemôžu priamo zverejňovať zmluvy. Kombinácia používateľa Musí byť oficiálne skontrolovaná a vydaná Xunleiom. V rámci systému nie je medzi týmito dvoma typmi účtov žiadny rozdiel. Každý účet má v systéme 256 bitov Pamäťová štruktúra kľúč-hodnota až do 256 bitov sa nazýva úložisko. Každý účet má zostatok nazývaný Zostatok vo Wei je možné upraviť zaslaním transakcie s číselnou hodnotou na účet. Zmluva Kontrakt je blockchainový účet, ktorý ukladá kód, a volanie zmluvy sa uskutočňuje odoslaním transakcií na tento účet. Kedy Predchádzajúcim populárnejším zmluvným programovacím jazykom bol Solidity. V súčasnosti súťaž podporuje podávanie zmlúv iba v jazyku Solidity. Zmluva je rozdelená na dve časti: ukladanie dát a funkciu, dáta ukladajú stav zmluvy a funkcia je zmluva Externé rozhranie realizuje dotazovanie dát a modifikáciu stavov volaním funkcií. Napíšte zmluvu cez programovací jazyk a po kompilácii získajte EVM bajtový kód. Odoslaním transakcie na zmluvný účet, skutočný Aktuálna výzva na zmluvu. Plyn Plyn je platobná jednotka blockchainu a keď sa vytvorí transakcia, bude špecifikované určité množstvo plynu. Pane Ak ide o obmedzenie výpočtu transakcie a zaplatenie poplatku za jej vykonanie. Počas realizácie transakcie Gas Bude spotrebovaný pravidlom nastaveným EVM. Cena plynu je hodnota určená tvorcom transakcie a počet poplatkov potrebných na vykonanie transakcie Suma je Gas_Price*Benzín. Transakcia končí Ak zostane plyn, zvyšná časť sa vráti na návrh tvorcu používateľov. Ak je plyn nedostatočný, vykonávanie transakcie zlyhá a transakcia zlyhá v zabránení flood útokom pre bezpečnosť systému Poplatok za manipuláciu sa nevracia. Najmenšia jednotka ceny plynu je wei, 10^18 wei = 1 gram reťaze. Pevnosť 3/16 Solidity je vysokoúrovňový programovací jazyk navrhnutý pre smart kontrakty, bežiaci na EVM (Ethereum). Virtual Machine)。 Implementácia návrhu jazyka je ovplyvnená C++/Pythonom/JavaScriptom. Solidity je silne typovaný jazyk, ktorý podporuje dedičnosť, polymorfizmus, rozhrania, abstrakciu, knižnice, vlastné dátové typy a ďalšie Sex. Solidity podporuje programovanie inštrukcií v assembleri a kód je skompilovaný do bajtkódu a beží na EVM. Pevnosť je Najpopulárnejším jazykom na vývoj smart kontraktov je zároveň jazyk odporúčaný a podporovaný platformou Thunder Contract. Poznámky: 1. Ethereum Virtual Machine je virtuálne prostredie na Ethereu, ktoré poskytuje runtime prostredie pre smart kontrakty Simulovaný stroj. Súťažná platforma je kompatibilná s EVM, ale musí spĺňať obmedzenia používania oficiálnej platformy. 2. Typy účtov sa delia na externé účty (adresy bežných obchodných účtov) a futures účty. Vytvorte zmluvu Je to proces odoslania transakcie na cieľovú adresu účtu 0. 3. Súťaž špecifikuje použitie hľuzovky (truffle v4.1.5 solidity v0.4.21) na vývoj inteligentných kombinácií Platforma overí bajtkód podľa zdrojového kódu dokumentu predloženého účastníkom. , Vytvárajte zmluvy s hľuzovkami Vývojový framework pre pevnosť pre smart kontrakty truffle. Poskytuje kompletný súbor vývoja, ladenia a úprav Preklad, nasadenie a testovanie on-premises prostredí. Môžete rýchlo použiť príkaz template unbox na základe niektorých šablón Vygenerujte zodpovedajúcu štruktúru zmluvy. Inštalujte Truffle npm i -g truffle [root@opennode Sandai] # Verzia s hľuzovkami Truffle v4.1.5 (jadro: 4.1.5) Tuhosť v0.4.21 (solc-js) Začniam 1. Inicializujte kontraktový projekt s hľuzovkou 4/16 MKDIR Simple-Storage CD Jednoduché ukladanie hľuzovka init 2. Vytvoriť nový súbor zmluvy: Môžete použiť truffle na vytvorenie zmluvy Môžete tiež vytvoriť nový súbor priamo z príkazového riadku SimpleStorage contract/SimpleStorage.sol SimpleStorage.sol pragma pevnosť ^0.4.21; contract SimpleStorage { uint myVariable; Function set(uint x) public { myVariable = x;
} funkcia get() konštantné verejné návraty (uint) { return myVariable;
}
} 3. Pridať migračné skripty: Môžete použiť truffle create migration 2_deploy_contract Je pridaná príkazová metóda a môžete tiež priamo vytvoriť nový súbor Migrácie/2_deploy_contract.js 2_deploy_contract.js vykonávanie migrácie hľuzoviek Poradie riadkov súvisí s názvom súboru, preto je potrebné pomenovať viacero skriptov na nasadenie v poradí var SimpleStorage = artifacts.require("SimpleStorage"); module.exports = function(deployer) { deployer.deploy(SimpleStorage); 5/16 }; 4. Spustiť truffle kompiláciu kontrakt a skompilovaný kontrakt je v priečinku build. Na zmluvu Na nasadenie je potrebný príslušný json súbor obsahujúci bajtkód, abiCode a podobne 5. Upraviť truffle.js na nastavenie truffle deployment kontraktu a RPC pripojenia na interakciu s blockchainom. [root@localhost opennode]# vi truffle.js module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545, network_id: "*"
}
} }; 6. Zapnúť predvolené blockchainové prostredie Truffle na konzole. Pestovanie hľuzoviek Truffle Development začal v
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 Súkromné kľúče: (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 Med bohatý na med, hladký droblivý sladký pochúťka ⚠ Dôležité ⚠: Táto mnemotechnická pomôcka bola vytvorená pre ty od Truffle. Nie je to bezpečné. Uistite sa, že ho nepoužívate v produkcii 7/16 Blockchainy, inak riskujete stratu financií. Hľuzovka (vyvolať)> To poskytuje natívne blockchainové prostredie, v ktorom Truffle môže vykonávať kontrakty, pričom štandardne generuje 10 účtov, z ktorých každý je generovaný Počiatočný zostatok na účte je 100 éterov. Môžete tiež použiť grafické rozhranie od Ganache , musíte upraviť port, ku ktorému je konfigurácia pripojená. 7. Vykonajte truffle migrate port deployment kontrakt v novej konzole (alebo v truffle vyvinúť konzolu na vykonanie migrácie). 8. Otestujte zmluvný kód s hľuzovkou. SimpleStorage.deployed().then(function(instance(instance ){return instance.get.call(); }).then(function(value) {return value.toNumber()}) // 0 SimpleStorage.deployed().then(function(instance(instance ){return instance.set(100); }); Informácie o výstupných transakciách SimpleStorage.deployed().then(function(instance(instance ){return instance.get.call(); }).then(function(value) {return value.toNumber()}); // 100 9. Otestujte zmluvu s hľuzovkou test Použite hruzovku na vytvorenie SimpleStorage na vytvorenie nového alebo Vytvorte nový súbor test/SimpleStorage.test.js priamo. const SimpleStorage = artifacts.require('SimpleStorage'); contract('SimpleStorage', function(accounts) { 8/16 it("should assert true", function(done)
{ var simpleStorage = SimpleStorage.deployed(); inštancia var; simpleStorage.then(res => { inštancia = res; return instance.get() }).then(value => { assert.equal('0', value.toNumber(), 'nie je 0') }).then(() => { instance.set(100) }).then(() => { return instance.get() }).then(value => { assert.equal('100', value.toNumber(), 'not equal 100') }) done(); }); }); V novej konzole zadajte truffle test ./test/SimpleStorage.test.js. 10. Testovacie zmluvy s remixom Zmluvy na puty vyvinuté pomocou hľuzovky v remixe na rýchlu úpravu Nasadenie a uplatnenie navrhovanej zmluvy. Remix poskytuje prostredie pre kompiláciu pre kontrakty a môže byť ovládaný zmluvou Tabuľka zobrazuje podrobné informácie o každej transakcii zmluvy, ako sú vstupné a výstupné parametre, podpísané metódne údaje, transakčný hash a ďalšie informácie. Podporte ladenie. 1. Použite detail kompilácie na zobrazenie detailov kompilácie zmlúv. Vrátane bajtkódu, abi a využíva web3.js rýchle nasadenie metódy Drip Ah. 9/16 2. Použite run na vytvorenie kontraktu a konzola si môže pozrieť transakciu, ktorá kontrakt vytvorila. Použite Truffle Unbox na vytváranie interaktívnych aplikácií na zmluvy Vyššie uvedené kroky vytvárajú zmluvné prostredie, ktoré je možné kompilovať, nasadzovať a ladiť pomocou základného truffle init. Nižšie Vytvorte nový projekt s Truffle Unbox, ktorý nám poskytne šablónu projektu truffle, vo vnútri Niektoré závislosti interakcie aplikácií v rámci kontraktov. Oficiálne ponuky si môžete pozrieť v Truffle Boxes Šablónové krabice. Nasleduje šablóna react. 1. Nový projekt truf-react mkdir truf-react 10/16 cd truf-react Truffle Unbox React Proces rozbalenia stiahne šablónu extrakcie a vykoná operácie ako npm inštalácia. 2. Nakonfigurovať truffle.js projektu module.exports = { Pozri <http://truffleframework.com/docs/advanced/confi Guration> na prispôsobenie vašej Truffle Konfigurácia!
networks: {
development: {
host: '127.0.0.1',
port: '9545', network_id: '*' // Zhoda Akékoľvek sieťové ID
}
} }; 3. Začnite pestovať hľuzovky 4. Novela SRC/App.js import React, { Component } z 'react' importovať SimpleStorageContract z '.. /stavať/zmluvy/SimpleStorage.json' import getWeb3 z './utils/getWeb3' importovať './css/oswald.css' importovať './css/open-sans.css' importovať './css/pure-min.css' 11/16 import './App.css' Const kontrakt = požiadavka ('truffle-contract') const simpleStorage = contract(SimpleStorageContract) class App expanduje Component { constructor(props) { super (rekvizity) this.state = {
storageValue: 0,
web3: null,
inputValue: 0,
address: null
} this.changeValueHandle = this.changeValueHandle.bind(this) this.setHandle = this.setHandle.bind(this)
} componentWillMount() { Získajte poskytovateľa siete a web3 Príklad. Viac informácií nájdete na utils/getWeb3 Informácie. getWeb3 .then(results => { this.setState({
web3: results.web3 }) Inštancovacia zmluva Keď poskytol Web3. 12/16 this.instanciateContract() }) .catch(() => { console.log('Chyba hľadanie web3.') })
} instantiateContract() {
/* * PRÍKLAD SMART KONTRAKTOV
* * Normálne by tieto funkcie sa nazýva v kontexte * Štátna manažérska knižnica, ale Pre pohodlie som ich umiestnil sem. */ 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) Toto vyhlasujem na neskôr, takže 13/16 funkcie môžeme reťaziť na SimpleStorage. var simpleStorageInstance Získajte účty. this.state.web3.eth.getAccounts((error, účty) => { simpleStorage.deployed().then((instance) => { simpleStorageInstance = inštancia this.setState({
address: instance.address }) Sklady a daná hodnota je predvolene 5. návrat simpleStorageInstance.set(x, {from: účty[0]}) }).then((result) => { Získajte hodnotu zo zmluvy, aby dokázal, že to fungovalo. návrat simpleStorageInstance.get.call(accounts[0]) }).then((result) => { Stav aktualizácie s výsledkom. návrat this.setState({ storageValue: result.c[0] }) }) })
} render() { return ( <div className="App"> <Nav className="navbar pure-menu pure-menuhorizontal"> 14/16 <a href="#" className="pure-menu-header-puremenu-link">Truffle Box</a> </nav> <hlavné className="container"> <div className="pure-g"> <div className="pure-u-1-1"> <h1>Pripravené!</h1> <p>Vaša Truffle Box je nainštalovaná a pripravená.</p> <h2>Príklad smart kontraktov</h2> <p>Ak sa vaše kontrakty skompilovali a migrovali Úspešne, nižšie sa zobrazí uložená hodnota 5 (predvolene).</p> <p>Skúste zmeniť hodnotu uloženú online <strong> 59</strong> z App.js.</p> <p>Uložená hodnota je: {this.state.storageValue}</p> <p>Adresa nasadeného kontraktu: {this.state.address}</p> </div> <div> <input type="number" onChange= {this.changeValueHandle}/> <tlačidlo onClick={this.setHandle}>set</button> 15/16 </div> </div> </main> </div> );
}
} exportovať predvolenú aplikáciu Pridal som volanie metódy contract set. A ukážte adresu zmluvy. 5. Otvoriť novú konzolu a spustiť npm run start 6. Otvorte http://lcoalhost:3000 vo svojom prehliadači a pozrite si výsledky zmluvy. 7. Nastavte hodnotu contract storedData cez políčka set a input. 8. Enter in trufle develop
//将xxx替换为address SimpleStorage.at('xxxx').then(res => {return res.get()}) Získa sa návratová hodnota typu BigNUmber a hodnota v poli c sa nastaví uložené dáta. Použite prehliadačový plugin Metamask na interakciu s blockchainom Referenčné http://truffleframework.com/tutorials/pet-shop Účastníci predkladajú dokumenty Súťaž špecifikuje použitie Truffle na vývoj smart kontraktov, pričom verzia Truffle v4.1.5 zodpovedá verzii solcjs v0.4.21. Vývojári musia predložiť zip balík projektu Truffle a súvisiace úvodné dokumenty, ktoré zahŕňajú aspoň Nasledujúce: 16/16 1. Základná štruktúra súboru Truffle Project: Test migrácií Build Contracts package.json truffle.js truffle-config.js README.md // Popis inžinierskej dokumentácie Nie je potrebné node_modules 2. Potrebujú poskytnúť PPT alebo PDF vysvetlenie celého produktu projektu, vrátane úvodu o pozadí produktu, významu produktu, Adresa na stiahnutie aplikácie (voliteľné), úvod do procesu používania produktu. Následní vývojári tretích strán môžu implementovať zmluvné aplikácie a Chain pockets podľa pripravovaného dokumentu s usmerneniami ThunderChain Interakcia. Dokumentácia a nástroje Solidity API Dokumentácia o hľuzovkách Ganache poskytuje grafické rozhranie pre natívne blockchainové prostredie Zeppelin-Solidty sa zaväzuje k bezpečnému a štandardizovanému rámcovému rámcu zmlúv MetaMask poskytuje prehliadačové pluginy pre prehliadače s blockchainovým prostredím prostredníctvom RPC pripojení web3.js JS zapuzdrený Ethereumom na interakciu s blockchainom Nakoniec pdf dokument na stiahnutie:
Dev_Guide_zh.pdf
(373.55 KB, Počet stiahnutí: 6)
|