Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 13646|Svar: 2

Guide til udvikling af blockchain-applikationer

[Kopier link]
Opslået på 03/05/2018 15.55.28 | | |
Udtalelse: Følgende er dokumentet "Xunlei Global Blockchain Application Competition Development Guide" skrevet af Xunlei Company, hvorfor bruge dokumentet skrevet af Xunlei Company som en blockchain-udviklingsguide?

Thunder er faktisk en privat kæde bygget med Ethereum smart contracts, teknologien har været meget moden, og den har dybdegående forskning i blockchain-teknologi, hvilket har en ledende betydning for vores blockchain-udvikling.

Som man siger, "træk slutninger fra ét eksempel", kan vi udvikle andre blockchain-applikationer ved at læse blockchain-udviklingsvejledningen skrevet af Xunlei, takket være Xunlei.

Dokumentet lyder:

1/16
Thunder Global Blockchain Application Konkurrence Udviklingsguide
Kontraktudvikling til linjeanbefaling
1. Før du skriver smarte kontrakter, skal du have en vis forståelse af blockchain-fundamenterne (vedhæftet: Ethereum Oversigt).
2. Lær solidity-sproget (solidity API).
3. Lær at bruge trøffel-rammen i kombination med soliditetslæring. Brug trøffel lokalt
Kør kontrakter i et blockchain-miljø.
4. Lær og brug zeppelin-solidty (en standardiseret kontraktramme dedikeret til sikkerhed) og designintegration
Kontrakttilstand, adskil data og logiske kontrakter, kontroller tilladelsessikkerhed, og overvej opgraderingslogik.
5. Lær at interagere med kontrakter ved hjælp af web3.js. Brug Metamask-plugin'et og webtjenesten med blockchain
Interaktion.
6. Forum Q&A: http://wanke.xunlei.com/forum.php?
mod=forumdisplay&fid=53 (Eventuelle problemer, du støder på, kan tilbagegøres på dette forum.)
Vi svarer dig inden for 3 arbejdsdage)
Grundlæggende begreber
Blockchain
Blockchain er et decentraliseret distribueret computersystem, hvis hovedtræk er dataenes permanente uforanderlighed,
Den kan ikke forfalskes og har en høj grad af åbenhed, gennemsigtighed og tillid. Kerneteknologierne omfatter Byzantine Fault Tolerant Consensus Algorithm (PBFT),
krypteringsteknologi, P2P-teknologi osv.
Transaktion
Blockchain kan forstås som et globalt delt transaktionsdatabasesystem. Enhver software med tilladelse kan læse den
Tag data fra blockchain-netværket. Når det er nødvendigt at ændre dataene i bloknetværket, skal der iværksættes en blanket
Der accepteres anmodninger af bloknoder, som samlet kaldes transaktioner i systemet.
Transaktioner er transaktionelle og indsendes til blockchainen, enten ikke alle eller alle udført. En handelsdirektør
Når rækken er fuldført, gemmes den permanent på blockchainen og kan ikke ændres eller udføres igen.
Transaktioner initieres og underskrives af kontoen i systemet, og gennem kryptografi kan transaktioner kun holdes af den private nøgle
2/16
Nogen initierer det, andre kan ikke ændre og smede. Dette sikrer transaktionens ægthed og sikkerhed.
Beretning
Der findes to typer konti i blockchain-systemet, den ene er ekstern og den anden er kontraktkontoen. Ekstern konto ejet
Dine egne unikke offentlige og private nøgler, og din konto styres af dette nøglepar. Futures-konti har deres egen kode, og kontoen oprettes af
Egen kodekontrol.
Kontoen identificeres ved en adresse, og adresselængden er den samme, og der er ingen forskel mellem de to typer konti. Adressen på den eksterne konto angives af
Den offentlige nøgle genereres, og kontraktadressen bruger den adresse, hvorfra kontraktkontoen blev oprettet, samt antallet af transaktioner, der oprettede kontraktkontoen
(nonce) produceres. Kontrakter udsendes via den officielle adresse, og almindelige konti kan ikke offentliggøre kontrakter direkte. Brugerens kombination
Den skal officielt gennemgås og udgives af Xunlei.
Inden for systemet er der ingen forskel mellem de to typer konti. Hver konto har 256 bit inde i systemet
Nøgleværdi-lagringsstrukturen op til 256 bit kaldes lagring. Hver konto har en saldo kaldet
Saldoen i Wei kan ændres ved at sende en transaktion med numerisk værdi til kontoen.
Kontrakt
En kontrakt er en blockchain-konto, der gemmer koden, og kontraktkaldet foretages ved at sende transaktioner til denne konto. Hvornår
Det tidligere mere populære kontraktprogrammeringssprog var Solidity. I øjeblikket understøtter konkurrencen kun kontraktindsendelse i Solidity-sproget.
Kontrakten er opdelt i to dele, datalagring og funktion, dataene gemmer kontraktens tilstand, og funktionen er kontrakten
Det eksterne interface realiserer dataforespørgsel og tilstandsændring ved at kalde funktioner.
Skriv en kontrakt gennem et programmeringssprog, og hent EVM-bytekoden efter kompilering. Ved at sende en transaktion til kontraktkontoen, reel
Nuværende kontraktopkald.
Gas
Gas er betalings-enheden i blockchainen, og når en transaktion oprettes, vil en bestemt mængde gas blive specificeret. Herre
Hvis det er for at begrænse mængden af beregning på transaktionen og betale et gebyr for udførelsen af transaktionen. Under gennemførelsen af transaktionen blev Gas
Den vil blive forbrugt af en regel, som EVM'en sætter.
Gasprisen er en værdi, der er angivet af transaktionsskaberen og antallet af gebyrer, der kræves for at gennemføre transaktionen.
Mængden er Gas_Price*Gas. Transaktion Slutter Hvis der er gas tilbage, returneres den resterende del til skaberens forslag
brugere. Hvis gassen er utilstrækkelig, vil transaktionsudførelsen fejle, og transaktionen vil fejle for at forhindre oversvømmelsesangreb for systemets sikkerhed
Håndteringsgebyret bliver ikke tilbagebetalt. Den mindste enhed af gasprisen er wei, 10^18 wei = 1 kæde gram.
Soliditet
3/16
Solidity er et højniveau programmeringssprog designet til smarte kontrakter, der kører på EVM (Ethereum).
Virtual Machine)。 Sprogdesignimplementeringen er påvirket af C++/Python/JavaScript.
Solidity er et stærkt typet sprog, der understøtter arv, polymorfi, grænseflader, abstraktion, biblioteker, brugerdefinerede datatyper og mere
Køn. Solidity understøtter assembly-instruktionsprogrammering, og koden kompileres til bytekode og kører på EVM'en. Soliditet er
Det mest populære sprog til udvikling af smarte kontrakter er også det sprog, der anbefales og understøttes af Thunder Contract Platform.
Noter:
1. Ethereum Virtual Machine er et virtuelt miljø på Ethereum, der tilbyder et runtime-miljø for smarte kontrakter
Simuleret maskine. Konkurrenceplatformen er kompatibel med EVM, men den skal overholde brugsbegrænsningerne for den officielle platform.
2. Kontotyper er opdelt i eksterne konti (almindelige handelskontoadresser) og futureskonti. Opret en kontrakt
Det er processen med at sende en transaktion til destinationskontoens adresse 0.
3. Konkurrencen specificerer brugen af trøffel (trøffel v4.1.5 soliditet v0.4.21) til at udvikle intelligente kombinationer
Platformen vil verificere bytekoden i henhold til kildekoden til det dokument, deltageren indsender. ,
Udvikl kontrakter med trøffel
Smart contract solidity development framework truffle. Det giver et komplet sæt af udvikling, fejlfinding og redigering
Oversættelse, implementering og test af lokale miljøer. Du kan hurtigt bruge skabelon-kommandoen unbox baseret på nogle skabeloner
Generer den tilsvarende kontraktstruktur.
Installer trøffel
npm i -g trøffel
[root@opennode sandai]# trøffelversion
Truffle v4.1.5 (kerne: 4.1.5)
Soliditet v0.4.21 (solc-js)
Begynd
1. Initiér kontraktprojektet med trøffel
4/16
mkdir simple-storage
CD Simple-Storage
trøffel init
2. Opret en ny kontraktfil: Du kan bruge trøffel til at oprette kontrakt
Du kan også oprette en ny fil direkte fra SimpleStorage-kommandolinjen
contract/SimpleStorage.sol
SimpleStorage.sol
pragma-soliditet ^0.4.21;
contract SimpleStorage {
uint myVariable;
Function Set(uint x) public {
myVariable = x;
}
funktion get() konstante offentlige afkast
(uint) {
return myVariable;
}
}
3. Tilføj migrér-scripts: Du kan bruge truffle create migration
2_deploy_contract kommandolinjemetode tilføjes, og du kan også oprette en ny fil direkte
Migrationer/2_deploy_contract.js
2_deploy_contract.js; udførelsen af trøffelmigrering
Linjerækkefølgen er relateret til filnavnet, så flere deployment-scripts skal navngives i rækkefølge
var SimpleStorage =
artifacts.require("SimpleStorage");
module.exports = function(deployer) {
deployer.deploy(SimpleStorage);
5/16
};
4. Kør truffle compile contract, og den kompilerede kontrakt ligger i build-mappen. Pr. kontrakt
Der er en tilsvarende json-fil, der indeholder bytecode, abiCode osv., som kræves for deployment
5. Rediger truffle.js for at opsætte truffle-deployeringskontrakten og RPC-forbindelsen til at interagere med blockchainen.
[root@localhost opennode]# vi truffle.js
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*"
}
}
};
6. Tænd for Truffles standard blockchain-miljø på konsollen.
trøffeludvikling
Trøffeludvikling startede ved
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
Private nøgler:
(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)
8d5366123cb560BB606379f90a0BFD4769eEC0557F1B362
dcae9012b548b1e5
Mnemonic: candy maple cake sugar pudding cream
honningrig, glat smuldret sød godbid
⚠ Vigtigt ⚠: Denne huskeregel blev skabt til
du fra Truffle. Det er ikke sikkert.
Sørg for, at du ikke bruger det i produktionen
7/16
Blockchains, ellers risikerer du at miste penge.
trøffel(udvikle)>
Dette giver et indbygget blockchain-miljø, hvor Truffle kan køre kontrakter, hvilket genererer 10 konti som standard, hver genereret
Den oprindelige kontosaldo er 100 ether. Du kan også bruge det grafiske interface, som Ganache stiller til rådighed
, skal du ændre porten, som konfigurationen er tilsluttet.
7. Udfør truffle migrate port deployment-kontrakten i en ny konsol (eller i truffle
Udvikl konsol til at udføre migrer).
8. Test kontraktkoden med trøffeludvikling.
SimpleStorage.deployed().then(function(instance
){return
instance.get.call(); }).så(funktion(værdi)
{return value.toNumber()})
// 0
SimpleStorage.deployed().then(function(instance
){return instance.set(100); });
Outputtransaktionsinformation
SimpleStorage.deployed().then(function(instance
){return
instance.get.call(); }).så(funktion(værdi)
{return value.toNumber()});
// 100
9. Test kontrakten med trøffeltest Brug trøffel skab test SimpleStorage til at oprette en ny eller
Opret en ny fil, test/SimpleStorage.test.js direkte.
const SimpleStorage =
artifacts.require('SimpleStorage');
contract('SimpleStorage', function(accounts) {
8/16
det("bør hævde sand", funktion(færdigt)
{
var simpleStorage =
SimpleStorage.deployed();
Var instance;
simpleStorage.then(res => {
instans = res;
return instance.get()
}).then(value => {
assert.equal('0',
value.toNumber(), 'ikke lig med 0')
}).så(() => {
instance.set(100)
}).så(() => {
return instance.get()
}).then(value => {
assert.equal('100',
value.toNumber(), 'ikke lig med 100')
})
done();
});
});
I den nye konsol kommer trøffeltest ./test/SimpleStorage.test.js.
10. Testkontrakter med remix Put-kontrakter udviklet med trøffel i remix for hurtigt at modificere
Implementering og påberåbelse af den foreslåede kontrakt. Remix tilbyder et kompilerings-runtime-miljø for kontrakter og kan styres af kontrakten
Tabellen kan se detaljerede oplysninger om hver transaktion i kontrakten, såsom input- og outputparametre, signerede metodedata,
transaktionshash og anden information. Support fejlfinding.
1. Brug kompileringsdetaljer til at se kontraktens sammensætningsdetaljer. Inklusive bytekode, abi
og ved at anvende web3.js hurtig anvendelse af Drip Ah-metoden.
9/16
2. Brug run til at oprette en kontrakt, og konsollen kan se transaktionen, der skabte kontrakten.
Brug Truffle Unbox til at skabe interaktive kontraktapps
Ovenstående trin skaber et kontraktmiljø, der kan kompileres, implementeres og fejlsøges ved hjælp af grundlæggende truffle init. Nedenfor
Opret et nyt projekt med Truffle Unbox, som giver os en trøffelprojektskabelon indeni
Nogle kontraktapplikationsinteraktionsmiljøafhængigheder. Du kan tjekke de officielle tilbud i Truffle Boxes
Skabelonbokse. Følgende er react-skabelonen.
1. Nyt projekt truf-react
mkdir truf-react
10/16
cd truf-react
trøffel unbox react
Unbox-processen downloader udtræksskabelonen og udfører operationer som npm-installation.
2. Konfigurér projektets truffle.js
module.exports = {
Se
<http://truffleframework.com/docs/advanced/confi
Guration>
for at tilpasse din trøffel
konfiguration!
networks: {
development: {
host: '127.0.0.1',
port: '9545',
network_id: '*' // Match
Enhver netværks-ID
}
}
};
3. Start en trøffeludvikling
4. Ændring af SRC/App.js
import React, { Component } fra 'react'
importer SimpleStorageContract fra
'.. /bygg/kontrakterer/SimpleStorage.json'
importer getWeb3 fra './utils/getWeb3'
importer './css/oswald.css'
importer './css/open-sans.css'
importer './css/pure-min.css'
11/16
import './App.css'
const kontrakt = kræve('trøffelkontrakt')
const simpleStorage =
kontrakt(SimpleStorageContract)
class App udvider Component {
konstruktør(props) {
super(rekvisitter)
this.state = {
storageValue: 0,
web3: null,
inputValue: 0,
address: null
}
this.changeValueHandle =
this.changeValueHandle.bind(this)
this.setHandle =
this.setHandle.bind(this)
}
componentWillMount() {
Få netværksudbyder og web3
eksempel.
Se utils/getWeb3 for mere
info.
getWeb3
.then(results => {
this.setState({
web3:
results.web3
})
Instansiat kontrakt
Når Web3 har leveret.
12/16
this.instantiateContract()
})
.catch(() => {
console.log('Fejl
Finding web3.')
})
}
instantiateContract() {
/*
* EKSEMPEL PÅ SMART KONTRAKT
*
* Normalt ville disse funktioner være
kaldes i konteksten af en
* statsligt forvaltningsbibliotek, men
For nemheds skyld har jeg lagt dem her.
*/
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)
Erklærer dette for senere, så
13/16
vi kan kæde funktioner på SimpleStorage.
var simpleStorageInstance
Få konti.
this.state.web3.eth.getAccounts((fejl,
konti) => {
simpleStorage.deployed().then((instance) => {
simpleStorageInstance = instans
this.setState({
address: instance.address })
Butikker a
givet værdi, 5 som standard.
Tilbagevenden
simpleStorageInstance.set(x, {from:
konti[0]})
}).så((resultat) => {
Få værdien
fra kontrakten for at bevise, at det virkede.
Tilbagevenden
simpleStorageInstance.get.call(accounts[0])
}).så((resultat) => {
Opdater status
med resultatet.
Tilbagevenden
this.setState({ storageValue: result.c[0] })
})
})
}
render() {
returner (
<div className="App">
<nav
className="navbar pure-menu pure-menuhorizontal">
14/16
<a href="#" className="pure-menu-heading puremenu-link">Truffle
Kasse</a>
</nav>
<hoved
className="container">
<div
className="pure-g">
<div className="pure-u-1-1">
<h1>Klar til at gå!</h1>
<p>Din trøffelæske er installeret og klar.</p>
Smart <h2>Contract-eksempel</h2>
<p>Hvis dine kontrakter blev samlet og migreret
Succesfuldt vil nedenfor vise en lagret værdi af
5 (som standard).</p>
<p>Prøv at ændre værdien, der er gemt online <strong>
59</strong> af App.js.</p>
<p>Den gemte værdi er:
{this.state.storageValue}</p>
<p>Udrullet kontraktadresse:
{this.state.address}</p>
</div>
<div>
<inputtype="number" onChange=
{this.changeValueHandle}/>
<knap onClick={this.setHandle}>set</button>
15/16
</div>
</div>
</main>
</div>
);
}
}
eksporter standard App
Tilføjede kaldet af kontraktsæt-metoden. Og vis adressen på kontrakten.
5. Åbn en ny konsol og kør npm run start
6. Åbn http://lcoalhost:3000 i din browser for at se resultatet af kontrakten.
7. Sæt værdien af den kontraktlagrede Data via sæt- og inputboksene.
8. Træd ind i trufle develop
//将xxx替换为address
SimpleStorage.at('xxxx').then(res => {return
res.get()})
Returværdien af BigNUmber-typen opnås, og værdien i c-arrayet sættes
lagrede Data.
Brug browser-pluginet Metamask til at interagere med blockchainen
Reference http://truffleframework.com/tutorials/pet-shop
Deltagerne indsender dokumenter
Konkurrencen specificerer brugen af Truffle til at udvikle smarte kontrakter, hvor Truffle-versionen v4.1.5 svarer til solcjs-versionen
v0.4.21. Udviklere skal indsende Truffle-projektets zip-pakke og relaterede projektintroduktionsdokumenter, som mindst indeholder
Følgende:
16/16
1. Truffle Project grundlæggende filstruktur: Build Contracts Migrations Test
package.json truffle.js truffle-config.js README.md // Beskrivelse af ingeniørdokumentation
Ingen node_modules nødvendig
2. Behov for at levere PPT- eller PDF-forklaring af hele projektproduktet, inklusive produktbaggrundsintroduktion, produktets betydning,
App download-adresse (valgfrit), introduktion af produktbrugsprocessen.
Efterfølgende tredjepartsudviklere kan implementere kontraktapplikationer og Chain pockets ifølge det kommende ThunderChain-vejledningsdokument
Interaktion.
Dokumentation & Værktøjer
solidity API
Trøffeldokumentation
Ganache tilbyder en grafisk grænseflade til det native blockchain-miljø
Zeppelin-Solidty er forpligtet til en sikker og standardiseret kontraktramme
MetaMask tilbyder browser-plugins til browsere med et blockchain-miljø via RPC-forbindelser
web3.js Ethereum-indkapslet JS til interaktion med blockchainen
Endelig downloader pdf-dokumentet:

Dev_Guide_zh.pdf (373.55 KB, Antal downloads: 6)
 Udlejer| Opslået på 03/05/2018 16.01.58 |
Opslået på 08/05/2018 14.25.10 |
Lært, tak
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com