Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 13646|Risposta: 2

Guida allo sviluppo delle applicazioni blockchain

[Copiato link]
Pubblicato su 03/05/2018 15:55:28 | | |
Dichiarazione: Quanto segue è il documento "Xunlei Global Blockchain Application Competition Development Guide" scritto da Xunlei Company, perché utilizzare il documento scritto da Xunlei Company come guida allo sviluppo blockchain?

Thunder è in realtà una catena privata costruita con smart contract Ethereum, la tecnologia è molto matura e ha una ricerca approfondita sulla tecnologia blockchain, che ha un significato guida per il nostro sviluppo blockchain.

Come dice il proverbio, "trai inferenze da un esempio", possiamo sviluppare altre applicazioni blockchain leggendo il documento guida allo sviluppo blockchain scritto da Xunlei, grazie a Xunlei.

Il documento recita:

1/16
Guida globale allo sviluppo delle competizioni per applicazioni blockchain Thunder
Sviluppo contrattuale nella raccomandazione della linea
1. Prima di scrivere smart contract, è necessario avere una certa comprensione dei fondamenti della blockchain (allegato: Panoramica su Ethereum).
2. Impara il linguaggio Solidity (API Solidity).
3. Impara a usare il framework del tartufo in combinazione con l'apprendimento della solidità. Utilizzare il tartufo per sviluppare localmente
Esegui contratti in un ambiente blockchain.
4. Apprendere e utilizzare zeppelin-solidty (un quadro contrattuale standardizzato dedicato alla sicurezza) e progettare l'integrazione
Modalità contrattuale, separato dai dati e contratti logici, controllo della sicurezza dei permessi e considera la logica di aggiornamento.
5. Impara a interagire con i contratti usando web3.js. Usa il plugin Metamask e il servizio web con blockchain
Interazione.
6. Domande e risposte nel forum: http://wanke.xunlei.com/forum.php?
mod=forumdisplay&fid=53 (Qualsiasi problema tu riscontrate può essere ripristinato su questo forum.)
Ti risponderemo entro 3 giorni lavorativi)
Concetti di base
Blockchain
La blockchain è un sistema di calcolo distribuito e decentralizzato, la cui caratteristica principale è l'immutabilità permanente dei dati,
Non può essere falsificato e ha un alto grado di apertura, trasparenza e fiducia. Le tecnologie principali includono l'Algoritmo di Consenso Byzantino Fault Tolerance (PBFT),
tecnologia di crittografia, tecnologia P2P, ecc.
Transazione
La blockchain può essere intesa come un sistema di database di transazioni condiviso a livello globale. Qualsiasi software con permesso può leggerlo
Prendi dati dalla rete blockchain. Quando è necessario modificare i dati nella rete a blocchi, deve essere avviata una copertura
Esistono richieste accettate dai nodi blocchi, che sono collettivamente chiamate transazioni nel sistema.
Le transazioni sono transazionali e vengono inviate alla blockchain, non tutte o tutte eseguite. Un dirigente commerciale
Dopo il completamento della riga, viene salvata permanentemente sulla blockchain e non può essere modificata o eseguita nuovamente.
Le transazioni vengono avviate e firmate dall'account nel sistema e, tramite la crittografia, le transazioni possono essere detenute solo dalla chiave privata
2/16
Qualcuno lo avvia, altri non possono modificarlo e falsificarlo. Questo garantisce l'autenticità e la sicurezza della transazione.
Account
Nel sistema blockchain esistono due tipi di account: uno esterno e l'altro è il conto contratto. Conto esterno di proprietà
Le tue chiavi pubbliche e private uniche, e il tuo account è controllato da questa coppia di chiavi. I conti futures hanno un proprio codice, e il conto viene creato da
Controllo del codice proprio.
L'account è identificato da un indirizzo, la lunghezza dell'indirizzo è la stessa e non c'è differenza tra i due tipi di conti. L'indirizzo dell'account esterno è fornito da
La chiave pubblica viene generata, e l'indirizzo contrattuale utilizza l'indirizzo da cui è stato creato il conto contrattuale e il numero di transazioni che hanno creato il conto contrattuale
(nonce) viene prodotta. I contratti sono inviati tramite l'indirizzo ufficiale e i conti ordinari non possono pubblicare direttamente i contratti. La combinazione dell'utente
Deve essere ufficialmente revisionato e rilasciato da Xunlei.
All'interno del sistema, non c'è differenza tra i due tipi di conti. Ogni account ha 256bit all'interno del sistema
La struttura di archiviazione chiave-valore fino a 256 bit è chiamata storage. Ogni conto ha un saldo chiamato
Il saldo, in Wei, può essere modificato inviando una transazione con un valore numerico al conto.
Contratto
Un contratto è un account blockchain che memorizza il codice, e la chiamata contrattuale viene effettuata inviando transazioni a questo account. Quando
Il precedente linguaggio di programmazione a contratto più popolare era Solidity. Attualmente, il concorso supporta solo la presentazione di contratti in linguaggio Solidity.
Il contratto è diviso in due parti: archiviazione e funzione dati, i dati memorizzano lo stato del contratto e la funzione è il contratto
L'interfaccia esterna realizza query e modifica dello stato dei dati chiamando funzioni.
Scrivi un contratto tramite un linguaggio di programmazione e ottieni il bytecode dell'EVM dopo la compilazione. Inviando una transazione al conto contrattuale, reali
Chiamata contrattuale attuale.
Gas
Il gas è l'unità di pagamento della blockchain, e quando viene creata una transazione, verrà specificata una certa quantità di gas. Signore
Se serve a limitare l'importo di calcolo sulla transazione e a pagare una commissione per l'esecuzione della transazione. Durante l'esecuzione della transazione, Gas
Sarà consumata da una regola stabilita dall'EVM.
Il prezzo del gas è un valore specificato dal creatore della transazione e il numero di commissioni necessarie per eseguire la transazione
La quantità è Gas_Price*Gas. Transazione terminata Se rimane un gas residuo, la porzione rimanente viene restituita al suggerimento del creatore
utenti. Se il gas è insufficiente, l'esecuzione della transazione fallirà e la transazione non riuscirà a prevenire attacchi flood per la sicurezza del sistema
La tariffa di gestione non viene restituita. La minore unità di prezzo del gas è wei, 10^18 wei = 1 grammo di catena.
Solidità
3/16
Solidity è un linguaggio di programmazione di alto livello progettato per smart contract, che gira su EVM (Ethereum).
Macchina Virtuale)。 L'implementazione della progettazione del linguaggio è influenzata da C++/Python/JavaScript.
Solidity è un linguaggio fortemente tipizzato che supporta eredità, polimorfismi, interfacce, astrazione, librerie, tipi di dati personalizzati e altro ancora
Sesso. Solidity supporta la programmazione delle istruzioni assembly, e il codice viene compilato in bytecode ed eseguito sull'EVM. La solidità è
Il linguaggio di sviluppo smart contract più popolare è anche quello raccomandato e supportato dalla Thunder Contract Platform.
Note:
1. Ethereum Virtual Machine è un ambiente virtuale su Ethereum che fornisce un ambiente di esecuzione per smart contract
Macchina simulata. La piattaforma di concorrenza è compatibile con EVM, ma deve rispettare le restrizioni d'uso della piattaforma ufficiale.
2. I tipi di conto sono suddivisi in conti esterni (indirizzi ordinari dei conti di trading) e conti futures. Crea un contratto
È il processo di invio di una transazione all'indirizzo di destinazione 0.
3. La competizione specifica l'uso del tartufo (truffle v4.1.5 solidity v0.4.21) per sviluppare combinazioni intelligenti
La piattaforma verificherà il bytecode in base al codice sorgente del documento inviato dal partecipante. ,
Sviluppare contratti con il tartufo
Struttura di sviluppo solidità smart contract truffle. Fornisce un insieme completo di sviluppo, debugging e modifica
Traduzione, distribuzione e test di ambienti on-premise. Puoi usare rapidamente il comando template unbox basandoti su alcuni template
Genera la corrispondente struttura contrattuale.
Installa Truffle
NPM I -G Tartufo
[root@opennode sandai]# versione al tartufo
Truffle v4.1.5 (nucleo: 4.1.5)
Solidity v0.4.21 (solc-js)
Inizio
1. Inizializzare il progetto contrattuale con il tartufo
4/16
mkdir simple-storage
CD Simple Storage
Tartufo
2. Crea un nuovo file contrattuale: Puoi usare Truffle per creare il contratto
Puoi anche creare un nuovo file direttamente dalla riga di comando di SimpleStorage
contract/SimpleStorage.sol
SimpleStorage.sol
Pragma Solidity ^0.4.21;
contract SimpleStorage {
uint myVariable;
function set(uint x) public {
miaVariabile = x;
}
Rendimenti pubblici costanti della funzione get()
(uint) {
return myVariable;
}
}
3. Aggiungi script di migrazione: Puoi usare Truffle Create Migration
2_deploy_contract metodo a riga di comando viene aggiunto e puoi anche creare direttamente un nuovo file
Migrazioni/2_deploy_contract.js
2_deploy_contract.js l'esecuzione della migrazione del tartufo
L'ordine delle righe è correlato al nome del file, quindi è necessario nominare più script di distribuzione in ordine
var SimpleStorage =
artefacts.require("SimpleStorage");
module.exports = function(deployer) {
deployer.deploy (SimpleStorage);
5/16
};
4. Esegui il contratto di compilazione truffle, e il contratto compilato è nella cartella build. per contratto
È necessario un file json corrispondente contenente bytecode, abiCode, ecc.
5. Modifica il truffle.js per impostare il contratto di distribuzione del truffle e la connessione RPC per interagire con la blockchain.
[root@localhost opennode]# vi truffle.js
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*"
}
}
};
6. Attiva l'ambiente blockchain predefinito di Truffle sulla console.
Sviluppo del tartufo
Truffle Develop è iniziata a
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
Chiavi private:
(0)
c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e
4a9ec0a0f44dc0d3
(1)
AE6AE8E5CCBF04590405997EEe2D52D2B330726137B87505
3c36d94e974d162f
(2)
0dbbe8e4ae425a6d2687f1a7e3ba17bc98c6736790f1b8
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
dolce ricco di miele e liscio e crumble
⚠ Importante ⚠: Questo mnemonico è stato creato per
tu per Tartufo. Non è sicuro.
Assicurati di non usarlo in produzione
7/16
blockchain, altrimenti rischi di perdere fondi.
Tartufo (sviluppare)>
Questo fornisce un ambiente blockchain nativo per Truffle per eseguire contratti, generando 10 account di default, ognuno dei quali viene generato
Il saldo iniziale del conto è di 100 ether. Puoi anche utilizzare l'interfaccia grafica fornita da Ganache
, devi modificare la porta a cui è collegata la configurazione.
7. Eseguire il contratto di deployment della porta migrazione truffle in una nuova console (o in truffle
sviluppa console per effettuare la migrazione).
8. Testare il codice contrattuale con lo sviluppo di tartufo.
SimpleStorage.deployed().then(function(instance
){ritorno
istanza.get.chiamata(); }).allora(funzione(valore)
{return value.toNumber()})
// 0
SimpleStorage.deployed().then(function(instance
){return instance.set(100); });
Informazioni sulle transazioni di output
SimpleStorage.deployed().then(function(instance
){ritorno
istanza.get.chiamata(); }).allora(funzione(valore)
{return value.toNumber()});
// 100
9. Testare il contratto con il test del tartufo Usa il test di creazione del tartufo SimpleStorage per creare un nuovo oppure
Crea direttamente un nuovo test o SimpleStorage.test.js file.
const SimpleStorage =
artefacts.require('SimpleStorage');
contract('SimpleStorage', function(accounts) {
8/16
it("dovrebbe affermare vero", funzione(done)
{
var simpleStorage =
SimpleStorage.deployed();
vari istance;
simpleStorage.then(res => {
istanza = res;
return instance.get()
}).allora(valore => {
assert.equal('0',
value.toNumber(), 'non uguale a 0')
}).allora(() => {
istanza.set(100)
}).allora(() => {
return instance.get()
}).allora(valore => {
assert.equal('100',
value.toNumber(), 'non uguale a 100')
})
done();
});
});
Nella nuova console, inserisci il test del tartufo ./test/SimpleStorage.test.js.
10. Contratti di prova con remix Contratti put sviluppati usando truffle in remix per modificare rapidamente
Implementazione e invocazione del contratto proposto. Remix fornisce un ambiente runtime di compilazione per i contratti e può essere controllato dal contratto
La tabella può vedere le informazioni dettagliate di ogni transazione del contratto, come parametri di input e output, dati di metodo firmato,
Hash delle transazioni e altre informazioni. Supporto per il debug.
1. Utilizzare i dettagli di compilazione per vedere i dettagli della compilazione del contratto. Includendo bytecode, abi
e utilizzando web3.js rapido utilizzo del metodo Drip Ah.
9/16
2. Usa run per creare un contratto, e la console può visualizzare la transazione che ha creato il contratto.
Usa Truffle Unbox per creare app contrattuali interattive
I passaggi sopra creano un ambiente contrattuale che può essere compilato, distribuito e debuggato usando il basic truffle init. Sotto
Crea un nuovo progetto con Truffle Unbox, che ci fornisce un template di progetto Truffle, all'interno
Alcune dipendenze nell'ambiente di interazione con le applicazioni contrattuali. Puoi dare un'occhiata alle offerte ufficiali nelle Tartufi Box
Scatole modello. Di seguito è riportato il modello React.
1. Nuovo progetto truf-react
MKDIR TRUF-REACT
10/16
CD truf-react
Reazione del Truffle Unbox
Il processo unbox scarica il template di estrazione ed esegue operazioni come l'installazione di npm.
2. Configurare i truffle.js del progetto
module.exports = {
Vedi
<http://truffleframework.com/docs/advanced/confi
Guration>
per personalizzare il tuo Tartufo
Configurazione!
networks: {
development: {
host: '127.0.0.1',
port: '9545',
network_id: '*' // Corrispondenza
qualsiasi ID di rete
}
}
};
3. Inizia a sviluppare tartufi
4. Modifica al SRC/App.js
import React, { Component } da 'react'
importa SimpleStorageContract da
'.. /costruiscono/contratti/SimpleStorage.json'
importa getWeb3 da './utils/getWeb3'
importa './css/oswald.css'
importa './css/open-sans.css'
importa './css/pure-min.css'
11/16
importazione './App.css'
contratto const = richiedere ('contratto-tartufo')
const simpleStorage =
contratto (SimpleStorageContract)
class App estende Component {
constructor(props) {
super(oggetti di scena)
this.state = {
storageValue: 0,
web3: null,
inputValue: 0,
address: null
}
this.changeValueHandle =
this.changeValueHandle.bind(this)
this.setHandle =
this.setHandle.bind(this)
}
componentWillMount() {
Ottieni il provider di rete e il web3
Istanza.
Vedi utils/getWeb3 per maggiori informazioni
Informazioni.
getWeb3
.allora(results => {
this.setState({
web3:
results.web3
})
Istanzia contratto
Una volta che il web3 è stato garantito.
12/16
this.instantiateContract()
})
.catch(() => {
console.log('Errore
Trovare Web3.')
})
}
instanceiateContract() {
/*
* ESEMPIO DI SMART CONTRACT
*
* Normalmente queste funzioni
essere chiamato nel contesto di un
* libreria di gestione statale, ma
per comodità li ho messi qui.
*/
this.simpleStorageSet(5)
}
changeValueHandle(event) {
this.setState({
inputValue:
Number(evento.target.valore)
})
}
setHandle() {
this.simpleStorageSet(this.state.inputValue)
}
simpleStorageSet(x) {
simpleStorage.setProvider(this.state.web3.curren
tProvider)
Dichiaro questo per più tardi, quindi
13/16
possiamo concatenare funzioni su SimpleStorage.
var simpleStorageInstance
Fai conti.
this.state.web3.eth.getAccounts((errore,
conti) => {
simpleStorage.deployed().then(instance) => {
simpleStorageInstance = istanza
this.setState({
address: instance.address })
Negozi a
dato valore, 5 di default.
Ritorno
simpleStorageInstance.set(x, {da:
conti[0]})
}).allora((risultato) => {
Ottieni il valore
dal contratto per dimostrare che funzionava.
Ritorno
simpleStorageInstance.get.call(accounts[0])
}).allora((risultato) => {
Stato di aggiornamento
con il risultato.
Ritorno
this.setState({ storageValue: result.c[0] })
})
})
}
render() {
ritorno (
<div className="App">
<navigazione
className="navbar-puro-menu-puro-orizzontale">
14/16
<a href="#" className="pure-menu-head-pur-link">Truffle
Scatola</a>
</nav>
<principale
className="container">
< divisione
className="puro-g">
<div className="pure-u-1-1">
<h1>Pronti all'uso!</h1>
La <p>tua Truffle Box è installata e pronta.</p>
<h2>Esempio di Smart Contract</h2>
<p>Se i tuoi contratti sono stati compilati e migrati
Di seguito mostrerà un valore memorizzato di
5 (di default).</p>
<p>Prova a cambiare il valore memorizzato <strong>online
59</strong> di App.js.</p>
<p>Il valore immagazzinato è:
{this.state.storageValue}</p>
<p>Indirizzo del contratto distribuito:
{questo.indirizzo.stato}</p>
</div>
<div>
<input type="number" onChange=
{this.changeValueHandle}/>
<button onClick={this.setHandle}>set</button>
15/16
</div>
</div>
</main>
</div>
);
}
}
esporta app predefinita
Aggiunta la chiamata del metodo contrattuale. E mostra l'indirizzo del contratto.
5. Apri una nuova console e esegui npm run start
6. Apri il http://lcoalhost:3000 nel browser per vedere i risultati del contratto.
7. Impostare il valore del contratto Dati memorizzati tramite le caselle set e input.
8. Entra nello sviluppo del tartuolo
//将xxx替换为address
SimpleStorage.at('xxxx').then(res => {return
res.get()})
Si ottiene il valore di ritorno del tipo BigNUmber, e il valore nell'array c viene fissato
Dati memorizzati.
Usa il plugin per browser Metamask per interagire con la blockchain
Riferimento http://truffleframework.com/tutorials/pet-shop
I partecipanti inviano documenti
Il concorso specifica l'uso di Truffle per sviluppare smart contract, con la versione v4.1.5 di Truffle corrispondente alla versione solcjs
v0.4.21. Gli sviluppatori devono inviare il pacchetto zip del progetto Truffle e i documenti di presentazione correlati, che includono, almeno,
I seguenti:
16/16
1. Struttura File di Base del Progetto Truffle: Test di Migrazione dei Contratti di Build
package.json truffle.js truffle-config.js README.md // Descrizione della documentazione ingegneristica
Non è necessario node_modules
2. Necessità fornire una spiegazione PPT o PDF dell'intero prodotto del progetto, inclusi l'introduzione del contesto del prodotto, il significato del prodotto,
Indirizzo di download dell'app (opzionale), introduzione al processo di utilizzo del prodotto.
Gli sviluppatori terzi successivi potranno implementare applicazioni contrattuali e Chain pockets secondo il prossimo documento di guida ThunderChain
Interazione.
Documentazione e strumenti
API di solidità
Documentazione del tartufo
Ganache fornisce un'interfaccia grafica per l'ambiente blockchain nativo
Zeppelin-Solidty è impegnata in un quadro contrattuale sicuro e standardizzato
MetaMask fornisce plugin per browser con un ambiente blockchain tramite connessioni RPC
web3.js JS incapsulato in Ethereum per interagire con la blockchain
Infine, il documento pdf scarica:

Dev_Guide_zh.pdf (373.55 KB, Numero di download: 6)
 Padrone di casa| Pubblicato su 03/05/2018 16:01:58 |
Pubblicato su 08/05/2018 14:25:10 |
Imparato, grazie
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com