Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 13646|Antwoord: 2

Blockchain Applicatie Ontwikkelingsgids

[Link kopiëren]
Geplaatst op 03-05-2018 15:55:28 | | |
Verklaring: Het volgende is het document "Xunlei Global Blockchain Application Competition Development Guide" geschreven door Xunlei Company, waarom zou je het document van Xunlei Company gebruiken als blockchain-ontwikkelingsgids?

Thunder is eigenlijk een private chain gebouwd met Ethereum smart contracts, de technologie is zeer volwassen en het bedrijf heeft diepgaand onderzoek naar blockchaintechnologie, wat een leidende betekenis heeft voor onze blockchainontwikkeling.

Zoals het gezegde luidt: "trek conclusies uit één voorbeeld", we kunnen andere blockchain-toepassingen ontwikkelen door het blockchain-ontwikkelingsgids te lezen dat door Xunlei is geschreven, dankzij Xunlei.

Het document luidt:

1/16
Thunder Global Blockchain Application Competition Ontwikkelingsgids
Contractontwikkeling naar de lijn-aanbeveling
1. Voordat je smart contracts schrijft, moet je een zeker begrip hebben van de blockchain-fundamenten (bijgevoegd: Ethereum Overzicht).
2. Leer de solidity-taal (solidity API).
3. Leer het truffelframework te gebruiken in combinatie met solidity learning. Gebruik truffelontwikkeling lokaal
Voer contracten uit in een blockchain-omgeving.
4. Leer en gebruik zeppelin-solidty (een gestandaardiseerd contractkader dat zich richt op beveiliging) en ontwerpintegratie
Contractmodus, gescheiden data en logische contracten, controle over de beveiliging van toestemmingen, en rekening houden met upgrade-logica.
5. Leer met contracten omgaan met web3.js. Gebruik de Metamask-plugin en webservice met blockchain
Interactie.
6. Forum Q&A: http://wanke.xunlei.com/forum.php?
mod=forumdisplay&fid=53 (Eventuele problemen die je tegenkomt kunnen op dit forum worden teruggedraaid.)
We zullen binnen 3 werkdagen op u reageren)
Basisconcepten
Blockchain
Blockchain is een gedecentraliseerd gedistribueerd computersysteem, waarvan het belangrijkste kenmerk de permanente onveranderlijkheid van data is,
Het kan niet worden vervalst en kent een hoge mate van openheid, transparantie en vertrouwen. De kerntechnologieën omvatten het Byzantine Fault Tolerant Consensus Algorithm (PBFT),
encryptietechnologie, P2P-technologie, enzovoort.
Transactie
Blockchain kan worden begrepen als een wereldwijd gedeeld transactiedatabasesysteem. Elke software met toestemming kan het lezen
Neem gegevens uit het blockchainnetwerk. Wanneer het nodig is om de data in het bloknetwerk te wijzigen, moet een blanket worden gestart
Er worden verzoeken geaccepteerd door blokknooppunten, die gezamenlijk transacties in het systeem worden genoemd.
Transacties zijn transactioneel en worden op de blockchain ingediend, ofwel niet allemaal of niet allemaal uitgevoerd. Een handelsbestuurder
Nadat de rij is voltooid, wordt deze permanent opgeslagen op de blockchain en kan deze niet opnieuw worden aangepast of uitgevoerd.
Transacties worden geïnitieerd en ondertekend door het account in het systeem, en via cryptografie kunnen transacties alleen worden vastgehouden door de private key
2/16
Iemand initieert het, anderen kunnen het niet aanpassen en smeden. Dit waarborgt de authenticiteit en veiligheid van de transactie.
Verslag
Er zijn twee soorten rekeningen in het blockchainsysteem: één extern en de andere is de contractrekening. Externe rekening in eigendom
Je eigen unieke publieke en private sleutels, en je account wordt beheerd door dit sleutelpaar. Futures-accounts hebben hun eigen code, en het account wordt gemaakt door
Eigen codecontrole.
De rekening wordt geïdentificeerd door een adres, de adreslengte is gelijk, en er is geen verschil tussen de twee soorten accounts. Het adres van het externe account wordt opgegeven door
De publieke sleutel wordt gegenereerd, en het contractadres gebruikt het adres waarop de contractrekening is aangemaakt en het aantal transacties dat het contractaccount heeft aangemaakt
(nonce) wordt geproduceerd. Contracten worden via het officiële adres uitgezonden, en gewone accounts kunnen contracten niet direct publiceren. De combinatie van de gebruiker
Het moet officieel worden beoordeeld en uitgebracht door Xunlei.
Binnen het systeem is er geen verschil tussen de twee soorten rekeningen. Elk account heeft 256 bits in het systeem
De sleutelwaarde-opslagstructuur tot 256 bits wordt opslag genoemd. Elke rekening heeft een saldo genaamd
Het saldo in WEI kan worden aangepast door een transactie met numerieke waarde naar de rekening te sturen.
Contract
Een contract is een blockchain-account dat de code opslaat, en de contractaanroep wordt gedaan door transacties naar dit account te sturen. Wanneer
De eerder populairdere contractprogrammeertaal was Solidity. Momenteel ondersteunt de wedstrijd alleen contractinzendingen in de Solidity-taal.
Het contract is verdeeld in twee delen: gegevensopslag en functie, de data slaat de status van het contract op, en de functie is het contract
De externe interface realiseert gegevensopvraging en toestandswijziging door functies aan te roepen.
Schrijf een contract via een programmeertaal en haal de EVM-bytecode op na compilatie. Door een transactie naar de contractrekening te sturen, wordt real
Huidige contractoproep.
Gas
Gas is de betaaleenheid van de blockchain, en wanneer een transactie wordt aangemaakt, wordt een bepaalde hoeveelheid gas gespecificeerd. Heer
Als het is om de hoeveelheid berekeningen op de transactie te beperken en een vergoeding te betalen voor de uitvoering van de transactie. Tijdens de uitvoering van de transactie werd gas
Het wordt verbruikt door een regel die door de EVM is vastgesteld.
Gasprijs is een waarde die wordt vastgesteld door de transactiemaker en het aantal kosten dat nodig is om de transactie uit te voeren
De hoeveelheid is Gas_Price*Gas. Transactie Beëindigd Als er nog gas overblijft, wordt het resterende deel teruggegeven aan de maker die voorstelde
gebruikers. Als het gas onvoldoende is, zal de uitvoering van de transactie mislukken en zal de transactie falen om flood-aanvallen voor systeembeveiliging te voorkomen
De afhandelingskosten worden niet terugbetaald. De kleinste eenheid van de gasprijs is wei, 10^18 wei = 1 ketengram.
Soliditeit
3/16
Solidity is een programmeertaal op hoog niveau ontworpen voor smart contracts en draait op EVM (Ethereum).
Virtual Machine)。 De implementatie van het taalontwerp is beïnvloed door C++/Python/JavaScript.
Solidity is een sterk getypeerde taal die overerving, polymorfisme, interfaces, abstractie, bibliotheken, aangepaste datatypes en meer ondersteunt
Seks. Solidity ondersteunt assembly-instructieprogrammering, en de code wordt gecompileerd tot bytecode en draait op de EVM. Soliditeit is
De populairste taal voor het ontwikkelen van slimme contracten is ook de taal die wordt aanbevolen en ondersteund door het Thunder Contract Platform.
Notities:
1. Ethereum Virtual Machine is een virtuele omgeving op Ethereum die een runtime-omgeving biedt voor smart contracts
Gesimuleerde machine. Het wedstrijdplatform is compatibel met EVM, maar moet voldoen aan de gebruiksbeperkingen van het officiële platform.
2. Rekeningtypen zijn onderverdeeld in externe rekeningen (gewone handelsrekeningadressen) en futuresrekeningen. Maak een contract
Het is het proces waarbij een transactie wordt verzonden naar het bestemmingsaccountadres 0.
3. De competitie specificeert het gebruik van truffel (truffel v4.1.5 soliditeit v0.4.21) om intelligente combinaties te ontwikkelen
Het platform verifieert de bytecode volgens de broncode van het door de deelnemer ingediende document. ,
Ontwikkel contracten met truffel
Smart contract solidity development framework truffel. Het biedt een complete set ontwikkel-, debug- en bewerkingsmogelijkheden
Vertaling, implementatie en testen van on-premises omgevingen. Je kunt snel het sjablooncommando unbox gebruiken op basis van sommige sjablonen
Genereer de bijbehorende contractstructuur.
Truffel installeren
npm i -g truffel
[root@opennode Sandai]# truffelversie
Truffle v4.1.5 (kern: 4.1.5)
Soliditeit v0.4.21 (solc-js)
Begin
1. Begin het contractproject met truffel
4/16
mkdir simple-storage
cd simple-storage
truffel init
2. Maak een nieuw contractbestand aan: Je kunt truffel gebruiken om een contract aan te maken
Je kunt ook een nieuw bestand direct aanmaken vanuit de SimpleStorage-opdrachtregel
contract/SimpleStorage.sol
SimpleStorage.sol
pragma-soliditeit ^0.4.21;
contract SimpleStorage {
uint myVariable;
Function Set(uint x) publiek {
myVariable = x;
}
functie get() constante publieke opbrengsten
(uint) {
return myVariable;
}
}
3. Voeg migratiescripts toe: Je kunt truffel maken migratie gebruiken
2_deploy_contract commandoregelmethode wordt toegevoegd, en je kunt ook direct een nieuw bestand aanmaken
Migraties/2_deploy_contract.js
2_deploy_contract.js; de uitvoering van truffelmigratie
De regelvolgorde is gerelateerd aan de bestandsnaam, dus meerdere deployment-scripts moeten in volgorde worden benoemd
var SimpleStorage =
artifacts.rerequire ("SimpleStorage");
module.exports = function(deployer) {
deployer.deploy(SimpleStorage);
5/16
};
4. Voer het truffelcompilatiecontract uit, en het gecompileerde contract ligt in de buildmap. volgens contract
Er is een bijbehorend json-bestand met bytecode, abiCode, enzovoort dat nodig is voor deployment
5. Bewerk de truffle.js om het truffel-implementatiecontract en de RPC-verbinding in te stellen om met de blockchain te interageren.
[root@localhost opennode]# vi truffle.js
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*"
}
}
};
6. Zet de standaard blockchain-omgeving van Truffle op de console aan.
Truffelontwikkeling
Truffelontwikkeling begon bij
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ésleutels:
(0)
c87509A1c067BBDE78Beb793e6FA76530B6382A4C0241E5E
4a9ec0a0f44dc0d3
(1)
AE6AE8e5CCBFB04590405997ee2D52D2B330726137B87505
3c36d94e974d162f
(2)
0dbbe8e4ae425a6d2687f1a7e3ba17bc98c673636790f1b8
ad91193c05875ef1
(3)
c88B703fb08cbea894B6Aeff5A544FB92E78A18E19814CD8
5da83b71f772aa6c
(4)
388c684f0ba1ef5017716adb5d21a053ea8e90277d086833
7519f97bede61418
(5)
659cbb0e2411A44db63778987b1e22153c086a95eb6b18BD
f89de078917abc63
(6)
82d052c865f5763aad42add438569276c00d3d88a2d062d3
6b2bae914d58b8c8
(7)
aa3680d5d48a8283413f7a108367c7299ca73f537355860a
87b08f39395618b7
(8)
0f62d96d6675f32685bbdb8ac13cda7c23436f63efbb9d07
700d8669ff12b7c4
(9)
8d5366123cb560BB606379f90a0BFD4769eecc0557F1B362
dcae9012b548b1e5
Mnemonic: candy maple cake sugar pudding cream
Honingrijke, gladde, kruimelzachte zoete traktatie
⚠ Belangrijk ⚠: Deze ezelsnoot is gemaakt voor
jij van Truffel. Het is niet veilig.
Zorg ervoor dat je het niet tijdens productie gebruikt
7/16
Blockchains, anders loop je het risico geld te verliezen.
truffel(ontwikkelen)>
Dit biedt een native blockchainomgeving waarin Truffle contracten kan uitvoeren, waarbij standaard 10 accounts worden gegenereerd, die elk worden gegenereerd
Het initiële rekeningsaldo is 100 ether. Je kunt ook de grafische interface gebruiken die Ganache aanbiedt
, moet je de poort aanpassen waarop de configuratie is aangesloten.
7. Voer het truffel-migratieportimplementatiecontract uit in een nieuwe console (of in truffel
Ontwikkel een console om te migreren).
8. Test de contractcode met truffelontwikkel.
SimpleStorage.deployed().then(function(instance
){return
instance.get.call(); }).dan(functie(waarde)
{return value.toNumber()})
// 0
SimpleStorage.deployed().then(function(instance
){return instance.set(100); });
Uitvoertransactie-informatie
SimpleStorage.deployed().then(function(instance
){return
instance.get.call(); }).dan(functie(waarde)
{return value.toNumber()});
// 100
9. Test het contract met truffeltest Gebruik truffel create test SimpleStorage om een nieuwe of te maken
Maak direct een nieuw bestand aan, test/SimpleStorage.test.js.
const SimpleStorage =
artifacts.require('SimpleStorage');
contract('SimpleStorage', function(accounts) {
8/16
het("moet waar beweren", functie(gedaan)
{
var simpleStorage =
SimpleStorage.deployed();
Var instance;
simpleStorage.then(res => {
instantie = res;
return instance.get()
}).dan(waarde => {
assert.equal('0',
value.toNumber(), 'niet gelijk aan 0')
}).dan(() => {
instance.set(100)
}).dan(() => {
return instance.get()
}).dan(waarde => {
assert.equal('100',
value.toNumber(), 'not even 100')
})
done();
});
});
In de nieuwe console komt truffeltest ./test/SimpleStorage.test.js.
10. Testcontracten met remix Putcontracten ontwikkeld met truffel in remix om snel te wijzigen
Uitrol en inroeping van het voorgestelde contract. Remix biedt een compilatie-runtime-omgeving voor contracten en kan door het contract worden bestuurd
De tabel kan gedetailleerde informatie zien van elke transactie van het contract, zoals invoer- en uitvoerparameters, ondertekende methodengegevens,
transactiehash en andere informatie. Ondersteuning voor debugging.
1. Gebruik compile detail om de details van contractcompilatie te bekijken. Inclusief bytecode, abi
en het gebruik van web3.js snelle toepassing van de Drip Ah-methode.
9/16
2. Gebruik run om een contract te maken, en de console kan de transactie bekijken die het contract heeft gecreëerd.
Gebruik Truffle Unbox om interactieve contractapps te maken
De bovenstaande stappen creëren een contractomgeving die kan worden gecompileerd, geïrrriteerd en gedebuggd met basis truffel-init. Hieronder
Maak een nieuw project aan met Truffle Unbox, dat ons een truffelprojecttemplate biedt, binnenin
Sommige afhankelijkheden van contractapplicatie-interactie en omgevingen. Je kunt de officiële aanbiedingen in Truffeldoosjes bekijken
Sjabloonvakken. Hieronder volgt de React-template.
1. Nieuw project truf-react
mkdir truf-react
10/16
cd truf-react
truffel unbox react
Het unbox-proces downloadt de extractietemplate en voert bewerkingen uit zoals npm installeren.
2. Configureer de truffle.js van het project
module.exports = {
Zie
<http://truffleframework.com/docs/advanced/confi
Guration>
om je truffel aan te passen
configuratie!
networks: {
development: {
host: '127.0.0.1',
port: '9545',
network_id: '*' // Match
Elke netwerk-ID
}
}
};
3. Start een truffelontwikkeling
4. Wijziging van de SRC/App.js
import React, { Component } van 'react'
importeren van SimpleStorageContract uit
'.. /bouw/contractt/SimpleStorage.json'
importeer getWeb3 van './utils/getWeb3'
Import './CSS/oswald.css'
Import './CSS/open-sans.css'
Import './CSS/pure-min.css'
11/16
import './App.css'
const contract = vereisen('truffelcontract')
const simpleStorage =
contract(SimpleStorageContract)
class App breidt Component { uit
constructor(props) {
super(rekwisieten)
this.state = {
storageValue: 0,
web3: null,
inputValue: 0,
address: null
}
this.changeValueHandle =
this.changeValueHandle.bind(this)
this.setHandle =
this.setHandle.bind(this)
}
componentWillMount() {
Krijg netwerkprovider en web3
voorbeeld.
Zie utils/getWeb3 voor meer informatie
info.
getWeb3
.then(results => {
this.setState({
web3:
results.web3
})
Instantiate contract
Zodra Web3 het leverde.
12/16
this.instantiateContract()
})
.catch(() => {
console.log('Fout
Web3 vinden.')
})
}
instantiateContract() {
/*
* VOORBEELD VAN SMART CONTRACTS
*
* Normaal gesproken zouden deze functies
worden aangeroepen in de context van een
* State Management bibliotheek, maar
Voor het gemak heb ik ze hier neergezet.
*/
this.simpleStorageSet(5)
}
changeValueHandle(event) {
this.setState({
inputValue:
Nummer(gebeurtenis.doelwaarde)
})
}
setHandle() {
this.simpleStorageSet(this.state.inputValue)
}
simpleStorageSet(x) {
simpleStorage.setProvider(this.state.web3.curren
tProvider)
Ik verklaar dit voor later, dus
13/16
we kunnen functies ketenen op SimpleStorage.
var simpleStorageInstance
Maak rekeningen.
this.state.web3.eth.getAccounts((fout,
accounts) => {
simpleStorage.deployed().then((instance) => {
simpleStorageInstance = instantie
this.setState({
address: instance.address })
Winkels a
Gegeven waarde, standaard 5.
Terugkeer
simpleStorageInstance.set(x, {from:
accounts[0]})
}).dan((resultaat) => {
Bepaal de waarde
van het contract om te bewijzen dat het werkte.
Terugkeer
simpleStorageInstance.get.call(accounts[0])
}).dan((resultaat) => {
Update-status
met het resultaat.
Terugkeer
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-heading puremenu-link">Truffle
Doos</a>
</nav>
<main
className="container">
<div
className="pure-g">
<div className="pure-u-1-1">
<h1>Klaar om te gaan!</h1>
<p>Je truffeldoos is geïnstalleerd en klaar.</p>
<h2>Voorbeeld van smart contract</h2>
<p>Als je contracten zijn samengesteld en gemigreerd
succesvol zal hieronder een opgeslagen waarde van
5 (standaard).</p>
<p>Probeer de waarde die online is opgeslagen te veranderen <strong>
59</strong> van App.js.</p>
<p>De opgeslagen waarde is:
{this.state.storageValue}</p>
<p>Ingezet contractadres:
{dit.staat.adres}</p>
</div>
<div>
<invoertype="nummer" onChange=
{this.changeValueHandle}/>
<knop opKlik={this.setHandle}>set</button>
15/16
</div>
</div>
</main>
</div>
);
}
}
exporteerstandaard App
De call van de contract set-methode toegevoegd. En toon het adres van het contract.
5. Open een nieuwe console en start npm run start
6. Open de http://lcoalhost:3000 in je browser om de resultaten van het contract te zien.
7. Stel de waarde van het opgeslagen contract in via de set- en invoerboxen.
8. Voer in trufle develop
//将xxx替换为address
SimpleStorage.at('xxxx').then(res => {return
res.get()})
De retourwaarde van het type BigNUmber wordt verkregen, en de waarde in de c-array wordt vastgesteld
opgeslagen Data.
Gebruik de browserplugin Metamask om met de blockchain te communiceren
Referentie http://truffleframework.com/tutorials/pet-shop
Deelnemers dienen documenten in
De competitie specificeert het gebruik van Truffel om slimme contracten te ontwikkelen, waarbij Truffelversie v4.1.5 overeenkomt met de solcjs-versie
v0.4.21. Ontwikkelaars moeten het Truffle-projectzippakket en bijbehorende projectintroductiedocumenten indienen, die ten minste bevatten
De volgende:
16/16
1. Truffelproject Basisbestandsstructuur: Build Contracts Migratietest
package.json truffle.js truffle-config.js README.md // Beschrijving van technische documentatie
Geen node_modules nodig
2. Noodzaak om een PPT- of PDF-uitleg van het volledige projectproduct te geven, inclusief de productachtergrond, productbetekenis,
App downloadadres (optioneel), productgebruiksproces introductie.
Volgende externe ontwikkelaars kunnen contractapplicaties en Chain pockets implementeren volgens het aankomende ThunderChain-richtlijndocument
Interactie.
Documentatie & Hulpmiddelen
solidity API
truffeldocumentatie
Ganache biedt een grafische interface voor de native blockchain-omgeving
Zeppelin-Solidty zet zich in voor een veilig en gestandaardiseerd contractkader
MetaMask biedt browser-plugins voor browsers met een blockchain-omgeving via RPC-verbindingen
web3.js Ethereum-geïncapsuleerde JS voor interactie met de blockchain
Tot slot, het pdf-document downloaden:

Dev_Guide_zh.pdf (373.55 KB, Aantal downloads: 6)
 Huisbaas| Geplaatst op 03-05-2018 16:01:58 |
Geplaatst op 08-05-2018 14:25:10 |
Geleerd, dank je wel
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com