Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 13646|Odpověď: 2

Průvodce vývojem blockchainových aplikací

[Kopírovat odkaz]
Zveřejněno 03.05.2018 15:55:28 | | |
Prohlášení: Následuje dokument "Xunlei Global Blockchain Application Competition Development Guide" napsaný společností Xunlei, proč použít dokument od společnosti Xunlei jako průvodce vývojem blockchainu?

Thunder je vlastně soukromý řetězec postavený na chytrých kontraktech Ethereum, technologie je velmi vyspělá a má hluboký výzkum blockchainové technologie, což má zásadní význam pro náš vývoj blockchainu.

Jak se říká, "vyvozovat závěry z jednoho příkladu", můžeme vyvíjet další blockchainové aplikace čtením dokumentu o vývoji blockchainu, který napsal Xunlei díky Xunleiovi.

Dokument zní:

1/16
Globální soutěž v soutěžích o blockchain aplikace Thunder
Vývoj smlouvy do doporučení trati
1. Před psaním chytrých kontraktů musíte mít určité znalosti základů blockchainu (přiloženo: Přehled Etherea).
2. Naučte se jazyk solidity (solidity API).
3. Naučte se používat lanýžový rámec v kombinaci s učením se pevností. Používejte lanýže lokálně
Spouštějte kontrakty v prostředí blockchainu.
4. Naučte se a používejte zeppelin-solidty (standardizovaný smluvní rámec zaměřený na bezpečnost) a integraci návrhu
Režim smlouvy, oddělení dat a logických smluv, řízení bezpečnosti oprávnění a zvažování logiky upgradů.
5. Naučte se komunikovat se smugami pomocí web3.js. Použijte plugin Metamask a webovou službu s blockchainem
Interakce.
6. Otázky a odpovědi na fóru: http://wanke.xunlei.com/forum.php?
mod=forumdisplay&fid=53 (Jakékoliv problémy, na které narazíte, lze na tomto fóru vrátit.)
Odpovíme vám do 3 pracovních dnů)
Základní pojmy
Blockchain
Blockchain je decentralizovaný distribuovaný výpočetní systém, jehož hlavní vlastností je trvalá neměnnost dat,
Nelze ji zfalšovat a vyznačuje se vysokou mírou otevřenosti, transparentnosti a důvěry. Mezi základní technologie patří Byzantine Fault Tolerant Consensus Algorithm (PBFT),
šifrovací technologie, P2P technologie atd.
Transakce
Blockchain lze chápat jako globálně sdílený databázový systém transakcí. Jakýkoli software s povolením ji může číst
Vezměte data z blockchainové sítě. Když je nutné změnit data v blokové síti, musí být zahájena blanket
Blokové uzly přijímají požadavky, které jsou v systému souhrnně označovány jako transakce.
Transakce jsou transakční a jsou zasílány na blockchain, buď ne všechny, nebo jsou všechny provedeny. Obchodní manažer
Po dokončení řádku je trvale uložen do blockchainu a nelze jej znovu upravovat ani spustit.
Transakce jsou iniciovány a podepisovány účtem v systému a díky kryptografii mohou být transakce drženy pouze pomocí soukromého klíče
2/16
Někdo to iniciuje, ostatní nemohou upravovat a kovat. To zajišťuje autentičnost a bezpečnost transakce.
Vyprávění
V blockchainovém systému existují dva typy účtů, jeden je externí a druhý je smluvní účet. Externí účet vlastněný
Vaše vlastní jedinečné veřejné a soukromé klíče a váš účet je ovládán touto dvojicí klíčů. Futures účty mají svůj vlastní kód a účet je vytvořen
Vlastní řízení kódu.
Účet je identifikován podle adresy, délka adresy je stejná a mezi těmito dvěma typy účtů není žádný rozdíl. Adresa externího účtu je poskytována
Veřejný klíč je vygenerován a adresa smlouvy používá adresu, ze které byl smluvní účet vytvořen, a počet transakcí, které vytvořily smluvní účet
(nonce) je vyrobeno. Smlouvy jsou zadávány oficiální adresou a běžné účty nemohou smlouvy přímo zveřejňovat. Kombinace uživatele
Musí být oficiálně zkontrolována a vydána Xunleiem.
V rámci systému není mezi těmito dvěma typy účtů žádný rozdíl. Každý účet má uvnitř systému 256 bitů
Struktura úložiště klíč-hodnota až do 256 bitů se nazývá úložiště. Každý účet má zůstatek nazvaný
Zůstatek ve Wei lze upravit odesláním transakce s číselnou hodnotou na účet.
Smlouva
Kontrakt je blockchainový účet, který ukládá kód, a volání kontraktu se provádí odesláním transakcí na tento účet. Kdy
Dříve populárnějším programovacím jazykem na základě smlouvy byl Solidity. V současnosti soutěž podporuje pouze podávání smluv v jazyce Solidity.
Smlouva je rozdělena na dvě části: ukládání dat a funkci, data uchovávají stav smlouvy a funkcí je smlouva
Externí rozhraní realizuje dotazování dat a modifikaci stavů voláním funkcí.
Napiš smlouvu přes programovací jazyk a po kompilaci získáš bajtkód EVM. Odesláním transakce na smluvní účet je skutečná
Aktuální výzva na smlouvu.
Plyn
Plyn je platební jednotka blockchainu a při vytvoření transakce bude specifikováno určité množství plynu. Pane
Pokud jde o omezení množství výpočtů na transakci a zaplacení poplatku za její provedení. Během realizace transakce Gas
Bude spotřebovávána pravidlem stanoveným EVM.
Cena plynu je hodnota stanovená tvůrcem transakce a počtem poplatků potřebných k provedení transakce
Částka je Gas_Price*Benzín. Transakce končí Pokud zůstane plyn, zbytek se vrátí na návrh tvůrce
uživatelů. Pokud plyn není dostatečný, realizace transakce selže a transakce selže v prevenci flood útoků pro bezpečnost systému
Poplatek za manipulaci se nevrace. Nejmenší jednotka ceny plynu je wei, 10^18 wei = 1 gram řetězu.
Pevnost
3/16
Solidity je programovací jazyk vysoké úrovně navržený pro chytré kontrakty, běžící na EVM (Ethereum).
Virtual Machine)。 Implementace návrhu jazyka je ovlivněna C++/Pythonem/JavaScriptem.
Solidity je silně typovaný jazyk, který podporuje dědičnost, polymorfismus, rozhraní, abstrakci, knihovny, vlastní datové typy a další
Sex. Solidity podporuje programování instrukcí v assembleru a kód je kompilován do bajtkódu a běží na EVM. Pevnost je
Nejoblíbenějším jazykem pro vývoj chytrých kontraktů je také jazyk doporučovaný a podporovaný platformou Thunder Contract Platform.
Poznámky:
1. Ethereum Virtual Machine je virtuální prostředí na Ethereu, které poskytuje runtime prostředí pro chytré kontrakty
Simulovaný stroj. Soutěžní platforma je kompatibilní s EVM, ale musí splňovat omezení používání oficiální platformy.
2. Typy účtů se dělí na externí účty (běžné obchodní adresy) a futures účty. Vytvořte smlouvu
Jedná se o proces odeslání transakce na adresu cílového účtu 0.
3. Soutěž specifikuje použití lanýže (lanýžová verze 4.1.5 pevnost v0.4.21) k vývoji inteligentních kombinací
Platforma ověří bajtkód podle zdrojového kódu dokumentu, který účastník zadal. ,
Vyvíjejte smlouvy s lanýžem
Vývoj frameworku pro pevnost chytrých kontraktů s lanýžem. Poskytuje kompletní sadu vývoje, ladění a editace
Překlad, nasazení a testování on-premises prostředí. Příkaz šablony pro rozbalení můžete rychle použít na základě některých šablon
Vygenerujte odpovídající strukturu smlouvy.
Install Truffle
npm i -g lanýžová
[root@opennode sandai] # lanýžová verze
Truffle v4.1.5 (jádro: 4.1.5)
Solidity v0.4.21 (solc-js)
Začátek
1. Inicializovat smluvní projekt lanýžem
4/16
MKDIR Simple-Storage
CD Simple Storage
lanýžové init
2. Vytvořit nový soubor smlouvy: Můžete použít lanýž k vytvoření smlouvy
Nový soubor můžete také vytvořit přímo z příkazového řádku SimpleStorage
contract/SimpleStorage.sol
SimpleStorage.sol
Pragma Solidity ^0.4.21;
contract SimpleStorage {
uint myVariable;
Funkce množina(uint x) public {
myVariable = x;
}
funkce get() konstantní veřejné návraty
(uint) {
return myVariable;
}
}
3. Přidat migrační skripty: Můžete použít migraci truffle create
2_deploy_contract Je přidána metoda příkazového řádku a můžete také přímo vytvořit nový soubor
Migrace/2_deploy_contract.js
2_deploy_contract.js realizace migrace lanýžů
Pořadí řádků souvisí s názvem souboru, proto je třeba pojmenovat více skriptů nasazení v pořadí
var SimpleStorage =
artifacts.require("SimpleStorage");
module.exports = function(deployer) {
deployer.deploy(SimpleStorage);
5/16
};
4. Spusť truffle kompilační kontrakt a kompilovaný kontrakt je ve složce build. Na základě smlouvy
Pro nasazení je potřeba odpovídající json soubor obsahující bajtkód, abiCode atd.
5. Upravit truffle.js tak, aby se nastavil kontrakt na nasazení lanýžů a RPC spojení pro interakci s blockchainem.
[root@localhost opennode]# vi truffle.js
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*"
}
}
};
6. Zapnout výchozí blockchainové prostředí Truffle na konzoli.
Vývoj lanýžů
Truffle Development začal na
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
Soukromé klíč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ý drobkový sladký pochoutek
⚠ Důležité ⚠: Tato mnemotechnická pomůcka byla vytvořena pro
ty u Truffle. Není to bezpečné.
Ujistěte se, že ho nepoužíváte při výrobě
7/16
Blockchainy, jinak riskujete ztrátu prostředků.
lanýžové (vyvinout)>
To poskytuje nativní blockchainové prostředí, kde Truffle může spouštět kontrakty, přičemž ve výchozím nastavení generuje 10 účtů, z nichž každý je generován
Počáteční zůstatek na účtu je 100 etherů. Můžete také použít grafické rozhraní od Ganache
, musíte upravit port, ke kterému je konfigurace připojena.
7. Spustit smlouvu o nasazení portu s lanýžem v nové konzoli (nebo v lanýži
vyvíjet konzoli pro provádění migrace).
8. Otestujte kód smlouvy s vyvíjením lanýže.
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); });
Informace o výstupních transakcích
SimpleStorage.deployed().then(function(instance(instance
){return
instance.get.call(); }).then(function(value)
{return value.toNumber()});
// 100
9. Otestujte smlouvu pomocí lanýžového testu Použijte lanýžové vytvoření SimpleStorage pro vytvoření nového nebo
Vytvořte nový test/SimpleStorage.test.js přímo na nový soubor.
const SimpleStorage =
artifacts.require('SimpleStorage');
contract('SimpleStorage', function(accounts) {
8/16
it("mělo by tvrdit pravdu", function(done)
{
var simpleStorage =
SimpleStorage.deployed();
VAR instance;
simpleStorage.then(res => {
instance = res;
return instance.get()
}).then(value => {
assert.equal('0',
value.toNumber(), 'není rovno 0')
}).then(() => {
instance.set(100)
}).then(() => {
return instance.get()
}).then(value => {
assert.equal('100',
value.toNumber(), 'not equal 100')
})
done();
});
});
V nové konzoli zadejte truffle test ./test/SimpleStorage.test.js.
10. Testovací smlouvy s remixem Smlouvy Put, které byly vyvinuty pomocí lanýže v remixu pro rychlou úpravu
Nasazení a uplatnění navrhované smlouvy. Remix poskytuje prostředí pro kompilaci smluv a lze jej ovládat smlouvou
Tabulka umožňuje zobrazit podrobné informace o každé transakci smlouvy, jako jsou vstupní a výstupní parametry, podepsaná metoda dat,
transakční hash a další informace. Podpora ladění.
1. Použijte detail kompilace pro zobrazení detailů kompilace kontraktů. Včetně bajtkódu, abi
a web3.js rychlé nasazení metody Drip Ah.
9/16
2. Použijte run k vytvoření smlouvy a konzole může zobrazit transakci, která smlouvu vytvořila.
Použijte Truffle Unbox k vytváření interaktivních smluvních aplikací
Výše uvedené kroky vytvářejí smluvní prostředí, které lze kompilovat, nasazovat a ladit pomocí základního Truffle Init. Níže
Vytvořte nový projekt s Truffle Unbox, který nám poskytne šablonu projektu s lanýži, uvnitř
Některé závislosti na interakci s aplikacemi ve smlouvě. Oficiální nabídku si můžete prohlédnout v Truffle Boxes
Šablonové krabice. Následuje šablona react.
1. Nový projekt truf-react
mkdir truf-react
10/16
cd truf-react
Truffle Unbox React
Proces unbox stáhne šablonu extrakce a provede operace jako npm install.
2. Konfigurujte truffle.js projektu
module.exports = {
Viz
<http://truffleframework.com/docs/advanced/confi
Guration>
pro přizpůsobení lanýže
Konfigurace!
networks: {
development: {
host: '127.0.0.1',
port: '9545',
network_id: '*' // Shoda
Libovolné síťové ID
}
}
};
3. Začněte pěstovat lanýže
4. Novela SRC/App.js
import React, { Component } z 'react'
importovat SimpleStorageContract z
'.. /stavba/smlouvy/SimpleStorage.json'
importovat getWeb3 z './utils/getWeb3'
importovat './css/oswald.css'
importovat './css/open-sans.css'
importovat './css/pure-min.css'
11/16
import './App.css'
Const kontrakt = požadavek ('lanýžová smlouva')
const simpleStorage =
contract(SimpleStorageContract)
class App rozšiřuje Component {
konstruktor(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ískejte poskytovatele sítě a web3
Instance.
Více informací naleznete na utils/getWeb3
Info.
getWeb3
.then(results => {
this.setState({
web3:
results.web3
})
Instancní smlouva
Jakmile Web3 poskytl.
12/16
this.instanciateContract()
})
.catch(() => {
console.log('Chyba
hledání web3.')
})
}
instantiateContract() {
/*
* PŘÍKLAD CHYTRÝCH KONTRAKTŮ
*
* Normálně by tyto funkce
bude nazýván v kontextu
* státní manažerská knihovna, ale
Pro pohodlí jsem je umístil 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)
Deklaruji to na později, takže
13/16
můžeme řetězit funkce na SimpleStorage.
var simpleStorageInstance
Získejte účty.
this.state.web3.eth.getAccounts((error,
účty) => {
simpleStorage.deployed().then((instance) => {
simpleStorageInstance = instance
this.setState({
address: instance.address })
Ukládá a
daná hodnota je výchozím nastavením 5.
návrat
simpleStorageInstance.set(x, {from:
účty[0]})
}).then((result) => {
Získejte hodnotu
ze smlouvy, aby dokázal, že to funguje.
návrat
simpleStorageInstance.get.call(accounts[0])
}).then((result) => {
Stav aktualizace
S výsledkem.
návrat
this.setState({ storageValue: result.c[0] })
})
})
}
render() {
return (
<div className="App">
<navigace
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>Připraveno!</h1>
<p>Vaše Truffle Box je nainstalovaná a připravená.</p>
<h2>Příklad chytré smlouvy</h2>
<p>Pokud se vaše smlouvy zkompilovaly a migrovaly
Níže se úspěšně zobrazí uložená hodnota
5 (ve výchozím nastavení).</p>
<p>Zkuste změnit hodnotu uloženou online <strong>
59</strong> z App.js.</p>
<p>Uložená hodnota je:
{this.state.storageValue}</p>
<p>Adresa nasazené smlouvy:
{this.state.address}</p>
</div>
<div>
<input type="number" onChange=
{this.changeValueHandle}/>
<tlačítko onClick={this.setHandle}>set</button>
15/16
</div>
</div>
</main>
</div>
);
}
}
exportovat výchozí aplikaci
Přidáno volání metody contract set. A ukažte adresu smlouvy.
5. Otevřete novou konzoli a spusťte npm, spustit start
6. Otevřete http://lcoalhost:3000 ve svém prohlížeči a podívejte se na výsledky smlouvy.
7. Nastavte hodnotu contract storedData pomocí políček set a input.
8. Vstup do trufle develop
//将xxx替换为address
SimpleStorage.at('xxxx').then(res => {return
res.get()})
Získá se návratová hodnota typu BigNUmber a hodnota v poli c je nastavena
uložená Data.
Použijte plugin Metamask pro interakci s blockchainem
Referenční http://truffleframework.com/tutorials/pet-shop
Účastníci předkládají dokumenty
Soutěž specifikuje použití Truffle pro vývoj chytrých kontraktů, přičemž verze Truffle v4.1.5 odpovídá verzi solcjs
v0.4.21. Vývojáři musí odevzdat zip balíček projektu Truffle a související dokumenty k úvodu do projektu, které zahrnují alespoň
Následující:
16/16
1. Základní struktura souboru Truffle Project: Test migrací Build Contracts
package.json truffle.js truffle-config.js README.md // Popis inženýrské dokumentace
Není potřeba node_modules
2. Potřeba poskytnout PPT nebo PDF vysvětlení celého produktu projektu, včetně úvodu o pozadí produktu, významu produktu,
Adresa ke stažení aplikace (volitelné), úvod do procesu používání produktu.
Následní vývojáři třetích stran mohou implementovat smluvní aplikace a Chain pockets podle připravovaného dokumentu ThunderChain
Interakce.
Dokumentace a nástroje
Solidity API
Dokumentace lanýžů
Ganache poskytuje grafické rozhraní pro nativní blockchainové prostředí
Zeppelin-Solidty se zavazuje k bezpečnému a standardizovanému rámcovému rámci smluv
MetaMask poskytuje pluginy pro prohlížeče s blockchainovým prostředím prostřednictvím připojení RPC
web3.js JS zapouzdřený Ethereumem pro interakci s blockchainem
Nakonec PDF dokument ke stažení:

Dev_Guide_zh.pdf (373.55 KB, Počet stažení: 6)
 Pronajímatel| Zveřejněno 03.05.2018 16:01:58 |
Zveřejněno 08.05.2018 14:25:10 |
Naučil jsem se, děkuji
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com