See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 13646|Vastuse: 2

Plokiahela rakenduste arendusjuhend

[Kopeeri link]
Postitatud 03.05.2018 15:55:28 | | |
Avaldus: Järgmine on Xunlei Company poolt kirjutatud "Xunlei Global Blockchain Application Competition Development Guide" dokument, miks kasutada Xunlei Company poolt kirjutatud dokumenti plokiahela arendusjuhendina?

Thunder on tegelikult privaatne kett, mis on ehitatud Ethereumi nutilepingutest, tehnoloogia on olnud väga küps ning sellel on põhjalik uurimistöö plokiahela tehnoloogia kohta, mis on meie plokiahela arenduses suunava tähtsusega.

Nagu öeldakse, "tee järeldusi ühest näitest", saame arendada teisi plokiahela rakendusi, lugedes Xunlei kirjutatud plokiahela arendusjuhendi dokumenti, tänu Xunleile.

Dokumendis seisab:

1/16
Thunder Global plokiahela rakenduste võistluse arendusjuhend
Lepingu arendamine liinisoovituseks
1. Enne nutilepingute kirjutamist pead omama teatud arusaamist plokiahela põhialustest (lisatud: Ethereum ülevaade).
2. Õpi solidity keelt (solidity API).
3. Õpi kasutama trühvliraamistikku koos tahkusõppega. Kasuta trühvlit kohapeal
Käivita lepinguid plokiahela keskkonnas.
4. Õpi ja kasuta zeppelin-solidty't (standardiseeritud lepinguraamistik, mis on pühendatud turvalisusele) ning disaini integratsiooni
Lepingurežiim, eraldi andme- ja loogilised lepingud, kontrolli õiguste turvalisust ja kaalu uuendusloogikat.
5. Õpi lepingutega suhtlema, kasutades web3.js. Kasuta Metamaski pluginat ja veebiteenust plokiahelaga
Interaktsioon.
6. Foorumi küsimused ja vastused: http://wanke.xunlei.com/forum.php?
mod=forumdisplay&fid=53 (Kõik probleemid, millega kokku puutute, saab selles foorumis tagasi pöörduda.)
Vastame sulle 3 tööpäeva jooksul)
Põhimõisted
Plokiahel
Plokiahel on detsentraliseeritud hajutatud arvutussüsteem, mille peamine omadus on andmete püsiv muutumatus,
Seda ei saa võltsida ning see on kõrge avatuse, läbipaistvuse ja usalduse tase. Põhitehnoloogiate hulka kuuluvad Bütsantsi rikketaluva konsensuse algoritm (PBFT),
krüpteerimistehnoloogia, P2P tehnoloogia jne.
Tehing
Plokiahelat võib mõista kui ülemaailmselt jagatud tehingute andmebaasisüsteemi. Iga tarkvara, kellel on luba, saab seda lugeda
Võta andmed plokiahela võrgust. Kui plokivõrgus on vaja andmeid muuta, tuleb algatada tekk
On taotlusi, mida aktsepteerivad plokisõlmed, mida süsteemis nimetatakse ühiselt tehinguteks.
Tehingud on tehingulised ja esitatakse plokiahelasse, kas mitte kõik või kõik täidetakse. Kaubandusjuht
Pärast rea lõpetamist salvestatakse see püsivalt plokiahelasse ja seda ei saa muuta ega uuesti käivitada.
Tehingud algatatakse ja allkirjastatakse süsteemi konto poolt ning krüptograafia kaudu saab tehinguid hoida ainult privaatvõtmega
2/16
Keegi algatab selle, teised ei saa muuta ega sepistada. See tagab tehingu autentsuse ja turvalisuse.
Konto
Plokiahela süsteemis on kahte tüüpi kontosid: üks on väline ja teine lepingukonto. Väline konto omanik
Sinu unikaalsed avalikud ja privaatvõtmed ning sinu kontot juhib see võtmepaar. Futuurikontodel on oma kood ja konto on loodud
Oma koodikontroll.
Konto identifitseeritakse aadressi järgi, aadressi pikkus on sama ja kahe konto tüübi vahel ei ole vahet. Välise konto aadress on esitatud
Luuakse avalik võti ning lepingu aadress kasutab aadressi, kust lepingukonto loodi, ning tehingute arvu, mis lepingukonto lõid
(nonce) on toodetud. Lepingud paigutatakse ametliku aadressi kaudu ning tavalised kontod ei saa lepinguid otse avaldada. Kasutaja kombinatsioon
Xunlei peab selle ametlikult üle vaatama ja avaldama.
Süsteemis ei ole kahe kontotüübi vahel vahet. Igal kontol on süsteemis 256-bitti
Võtme-väärtuse salvestusstruktuuri kuni 256 bitini nimetatakse salvestuseks. Igal kontol on saldo nimega
WEI-s saab saldot muuta, saates kontole numbrilise väärtusega tehingu.
Leping
Leping on plokiahela konto, mis salvestab koodi, ning lepingukõne tehakse tehingute saatmisega sellele kontole. Kui
Varasem populaarsem lepinguprogrammeerimise keel oli Solidity. Praegu toetab võistlus ainult lepingute esitamist Solidity keeles.
Leping jaguneb kaheks osaks: andmete salvestamine ja funktsioon, andmed salvestavad lepingu oleku ning funktsioon on leping
Väline liides teostab andmepäringute ja oleku muutmist, kutsudes funktsioone.
Kirjuta leping programmeerimiskeele kaudu ja saa EVM baitkood pärast kompileerimist. Saates tehingu lepingukontole, reaalne
Praegune lepingukõne.
Gaas
Gaas on plokiahela makseühik ning tehingu tegemisel määratakse kindel gaasikogus. Isand
Kui see on piiratud tehingu arvutusmaht ja tasu maksmine tehingu täitmise eest. Tehingu täitmise ajal
Seda tarbib EVM-i kehtestatud reegel.
Gaasihind on tehingu looja poolt määratud väärtus ning tehingu teostamiseks vajalike tasude arv
Kogus on Gas_Price*Gaas. Tehing lõpeb Kui gaasi jääb üle, tagastatakse ülejäänud osa looja ettepanekule
kasutajad. Kui gaasist ei piisa, ebaõnnestub tehingu täitmine ning tehing ei takista üleujutusrünnakuid süsteemi turvalisuse huvides
Käitlemistasu ei tagastata. Väikseim kütusehinna ühik on wei, 10^18 wei = 1 ahelgramm.
Tahkus
3/16
Solidity on kõrgetasemeline programmeerimiskeel, mis on mõeldud nutilepingutele ja töötab EVM-il (Ethereum).
Virtual Machine)。 Keele disaini rakendust mõjutavad C++/Python/JavaScript.
Solidity on tugevalt tüübistatud keel, mis toetab pärilikkust, polümorfismi, liideseid, abstraktsiooni, teeke, kohandatud andmetüüpe ja palju muud
Seks. Solidity toetab assembler-käskude programmeerimist ning kood kompileeritakse baitkoodiks ja töötab EVM-il. Tahkus on
Kõige populaarsem nutilepingute arenduskeel on ka Thunder Contract Platform soovitatud ja toetatud keel.
Märkused:
1. Ethereum Virtual Machine on virtuaalne keskkond Ethereumis, mis pakub nutilepingute jaoks käituskeskkonda
Simuleeritud masin. Võistlusplatvorm on ühilduv EVM-iga, kuid peab vastama ametliku platvormi kasutuspiirangutele.
2. Konto tüübid jagunevad välisteks kontodeks (tavalised kauplemiskonto aadressid) ja futuurikontodeks. Loo leping
See on protsess, mille käigus saadetakse tehing sihtkonto aadressile 0.
3. Võistlus nõuab trühvli kasutamist (trühvli v4.1.5 solidity v0.4.21) intelligentsete kombinatsioonide arendamiseks
Platvorm kontrollib baitkoodi vastavalt osaleja esitatud dokumendi lähtekoodile. ,
Sõlmi lepinguid trühvliga
Nutika lepingu kindluse arendamise raamistik trühvlis. See pakub täielikku arenduse, silumise ja redigeerimise komplekti
Kohapealsete keskkondade tõlge, juurutamine ja testimine. Sa saad kasutada mallikäsku avamine kiiresti, tuginedes mõnele mallile
Loo vastav lepingustruktuur.
Paigalda Trühvli
NPM I -G trühvli
[root@opennode sandai]# trühvliversioon
Truffle v4.1.5 (tuum: 4.1.5)
Solidity v0.4.21 (solc-js)
Alusta
1. Algata lepinguprojekt trühvliga
4/16
mkdir simple-storage
CD lihtne salvestus
Trühvli algus
2. Loo uus lepingufail: Lepingu loomiseks saad kasutada trühvlit
Sa saad ka uue faili luua otse SimpleStorage'i käsurealt
contract/SimpleStorage.sol
SimpleStorage.sol
pragma tugevus ^0.4.21;
leping SimpleStorage {
uint myVariable;
funktsioonikomplekt(uint x) avalik {
myVariable = x;
}
funktsioon get() konstantne avalikud tulud
(uint) {
return myVariable;
}
}
3. Lisa migreerimisskriptid: Saad kasutada truffle create migration'i
2_deploy_contract lisatakse käsurea meetod ning saad ka otse uue faili luua
Migratsioonid/2_deploy_contract.js
2_deploy_contract.js; trühvlirände sooritamine
Ridade järjekord on seotud failinimega, seega tuleb mitu juurutusskripti nimetada järjekorras
var SimpleStorage =
artfacts.require("SimpleStorage");
module.exports = function(deployer) {
deployer.deploy (SimpleStorage);
5/16
};
4. Käivita trühvli kompileerimisleping ja kompileeritud leping on ehituskaustas. Lepingu alusel
Paigaldamiseks on vajalik vastav json-fail, mis sisaldab baitkoodi, abiCode'i jne
5. Muuda truffle.js, et seadistada trühvlite paigaldamise leping ja RPC ühendus plokiahelaga suhtlemiseks.
[root@localhost opennode]# vi truffle.js
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*"
}
}
};
6. Lülita sisse Truffle'i vaikimisi plokiahela keskkond konsoolil.
Trühvlite areng
Trühvli arendus algas
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
Privaatvõtmed:
(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)
8d5366123cb560bb606379f9a0bfd4769eecc0557f1b362
dcae9012b548b1e5
Mnemonic: candy maple cake sugar pudding cream
Mee-rikas, sile puru, magus maius
⚠ Tähtis ⚠: See mnemoonika loodi
sina Truffle'i poolt. See ei ole turvaline.
Veendu, et sa ei kasutaks seda tootmises
7/16
plokiahelad, vastasel juhul riskid raha kaotamisega.
Trühvli arendamine>
See pakub Truffle'ile natiivset plokiahela keskkonda, kus saab sõlmida lepinguid, luues vaikimisi 10 kontot, millest igaüks genereeritakse
Algne konto saldo on 100 eetrit. Võid kasutada ka Ganache'i graafilist liidest
, peate muutma porti, millega konfiguratsioon on ühendatud.
7. Täida trühvli migratsiooni pordi juurutusleping uues konsoolis (või truffle'is
arenda konsooli migratsiooni teostamiseks).
8. Testi lepingukoodi trühvliarendusega.
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); });
Väljundtehingute info
SimpleStorage.deployed().then(function(instance
){return
instance.get.call(); }).then(function(value)
{return value.toNumber()});
// 100
9. Testi lepingut trühvlitestiga Kasuta trühvlit loomistesti SimpleStorage'i, et luua uus või
Loo uus fail test/SimpleStorage.test.js otse.
const SimpleStorage =
artfacts.require('SimpleStorage');
contract('SimpleStorage', function(accounts) {
8/16
it("peaks kinnitama tõene", function(done)
{
var simpleStorage =
SimpleStorage.deployed();
VAR näide;
simpleStorage.then(res => {
instance = res;
return instance.get()
}).then(value => {
assert.equal('0',
value.toNumber(), 'mitte võrdne 0')
}).then(() => {
instance.set(100)
}).then(() => {
return instance.get()
}).then(value => {
assert.equal('100',
value.toNumber(), 'mitte võrdne 100')
})
valmis();
});
});
Uues konsoolis sisesta trühvlitest ./test/SimpleStorage.test.js.
10. Testlepingud remiksiga Put-lepingud on välja töötatud trühvli abil remiksis kiireks muutmiseks
Kavandatava lepingu kasutuselevõtt ja rakendamine. Remix pakub lepingute jaoks kompileerimistöökeskkonda ja seda saab lepinguga kontrollida
Tabel näeb iga lepingu tehingu üksikasjalikku teavet, nagu sisend- ja väljundparameetrid, allkirjastatud meetodi andmed,
tehingu räsi ja muu info. Toeta silumist.
1. Kasuta kompileerimisdetaile, et näha lepingu koostamise detaile. Kaasa arvatud baitkood, abi
ning web3.js Drip Ah meetodi kiire kasutuselevõtu kasutamine.
9/16
2. Kasuta runi lepingu loomiseks ja konsool saab vaadata tehingut, mis lepingu lõi.
Kasuta Truffle Unboxi interaktiivsete lepingurakenduste loomiseks
Ülaltoodud sammud loovad lepingukeskkonna, mida saab kompileerida, juurutada ja siluda põhilise truffle init'i abil. Allpool
Loo uus projekt Truffle Unboxiga, mis annab meile trühvliprojekti malli sees
Mõned lepingulised rakenduste interaktsioonikeskkonna sõltuvused. Saad vaadata ametlikke pakkumisi trühvlikastides
Mallikastid. Järgmine on reacti mall.
1. Uus projekt truf-react
mkdir truf-react
10/16
CD truf-react
Trühvli avakast React
Unbox-protsess laadib alla ekstraktsioonimalli ja teostab selliseid toiminguid nagu npm paigaldus.
2. Seadista projekti truffle.js
module.exports = {
Vaata
<http://truffleframework.com/docs/advanced/confi
Guration>
et kohandada oma trühvlit
Konfiguratsioon!
networks: {
development: {
host: '127.0.0.1',
port: '9545',
network_id: '*' // Matš
Ükskõik milline võrgu ID
}
}
};
3. Alusta trühvli kasvatamist
4. SRC/App.js muudatus
impordi React, { Component } 'react'-ist
impordi SimpleStorageContract aadressilt
'.. /ehitab/lepingud/SimpleStorage.json'
impordi getWeb3 aadressilt './utils/getWeb3'
Impordi './css/oswald.css'
Impordi './css/open-sans.css'
Impordi './css/pure-min.css'
11/16
import './App.css'
const leping = nõua ('trühvlileping')
const simpleStorage =
leping (SimpleStorageContract)
class App laiendab komponenti {
konstruktor(rekvisiidid) {
super(rekvisiit)
this.state = {
storageValue: 0,
web3: null,
inputValue: 0,
address: null
}
this.changeValueHandle =
this.changeValueHandle.bind(this)
this.setHandle =
this.setHandle.bind(that)
}
componentWillMount() {
Hangi võrguteenuse pakkuja ja web3
Instant.
Vaata rohkem kui utils/getWeb3
info.
getWeb3
.then(results => {
this.setState({
web3:
results.web3
})
Instantsiate leping
Kui Web3 oli olemas.
12/16
this.instantiateContract()
})
.catch(() => {
console.log('Viga
Web3 otsimine.')
})
}
instantiateContract() {
/*
* NUTILEPINGU NÄIDE
*
* Tavaliselt oleksid need funktsioonid
nimetada kontekstis
* osariigi haldusraamatukogu, kuid
mugavuse huvides olen need siia paigutanud.
*/
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)
Kuulutan selle hilisemaks, nii et
13/16
me saame funktsioone SimpleStorage'is aheldada.
var simpleStorageInstance
Hangi kontod.
this.state.web3.eth.getAccounts((viga,
kontod) => {
simpleStorage.deployed().then((instance) => {
simpleStorageInstance = instants
this.setState({
address: instance.address })
Kauplused a
antud väärtus, vaikimisi 5.
Tagasitulek
simpleStorageInstance.set(x, {from:
kontod[0]})
}).then((result) => {
Hangi väärtus
lepingust, et tõestada, et see toimis.
Tagasitulek
simpleStorageInstance.get.call(accounts[0])
}).then((result) => {
Uuenda olek
tulemusega.
Tagasitulek
this.setState({ storageValue: result.c[0] })
})
})
}
render() {
Return (
<div className="App">
<nav
className="navbar puhas-menüü pure-menuhorisontaalne">
14/16
<a href="#" className="puhas-menüü-pealkiri puremenu-link">Trühvli
Kast</a>
</nav>
<main
className="konteiner">
<div
className="pure-g">
<div className="pure-u-1-1">
<h1>Valmis!</h1>
<p>Sinu trühvlikast on paigaldatud ja valmis.</p>
<h2>Nutilepingu näide</h2>
<p>Kui su lepingud on koostatud ja üle viidud
Edukalt näitab allpool salvestatud väärtus
5 (vaikimisi).</p>
<p>Proovi muuta internetis salvestatud väärtust <strong>
59</strong> App.js.</p>
<p>Salvestatud väärtus on:
{this.state.storageValue}</p>
<p>Paigutatud lepingu aadress:
{this.state.address}</p>
</div>
<div>
<sisendtüüp="number" onChange=
{this.changeValueHandle}/>
<nupp onClick={this.setHandle}>set</button>
15/16
</div>
</div>
</main>
</div>
);
}
}
ekspordi vaikimisi rakendus
Lisatud lepingukomplekti meetodi kutsumine. Ja näita lepingu aadressi.
5. Ava uus konsool ja käivita npm käivitamine
6. Ava http://lcoalhost:3000 oma brauseris, et näha lepingu tulemusi.
7. Määra lepingu salvestatud andmete väärtus komplekti ja sisendkastide kaudu.
8. Sisene trufle arendusse
//将xxx替换为address
SimpleStorage.at('xxxx').then(res => {return
res.get()})
Saadakse BigNUmber tüübi tagastusväärtus ning väärtus c-massiivis määratakse
salvestatudAndmed.
Kasuta brauseri pluginat Metamask, et plokiahelaga suhelda
Viide http://truffleframework.com/tutorials/pet-shop
Osalejad esitavad dokumendid
Võistlus nõuab Truffle'i kasutamist nutilepingute arendamiseks, kus Truffle versioon v4.1.5 vastab solcjs versioonile
v0.4.21. Arendajad peavad esitama Truffle projekti zip-paketi ja sellega seotud projekti sissejuhatusdokumendid, mis sisaldavad vähemalt
Järgmine:
16/16
1. Truffle projekti põhifailistruktuur: ehituslepingute migratsioonitest
package.json truffle.js truffle-config.js README.md // Inseneridokumentatsiooni kirjeldus
node_modules pole vaja
2. Tuleb esitada PPT või PDF-selgitus kogu projekti toote kohta, sealhulgas toote tausta tutvustus, toote olulisus,
Rakenduse allalaadimise aadress (valikuline), toote kasutusprotsessi tutvustus.
Järgnevad kolmandate osapoolte arendajad saavad rakendada lepingulisi rakendusi ja Chain pockete vastavalt tulevasele ThunderChaini juhisdokumendile
Interaktsioon.
Dokumentatsioon ja tööriistad
Solidity API
Trühvlidokumentatsioon
Ganache pakub graafilist liidest natiivsele plokiahela keskkonnale
Zeppelin-Solidty on pühendunud turvalisele ja standardiseeritud lepinguraamistikule
MetaMask pakub brauseri pluginaid plokiahela keskkonnaga brauseritele RPC-ühenduste kaudu
web3.js Ethereumiga kapseldatud JS plokiahelaga suhtlemiseks
Lõpuks pdf-dokumendi allalaadimine:

Dev_Guide_zh.pdf (373.55 KB, Allalaadimiste arv: 6)
 Üürileandja| Postitatud 03.05.2018 16:01:58 |
Postitatud 08.05.2018 14:25:10 |
Õppisin, aitäh
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com