Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 13646|Répondre: 2

Guide de développement d’applications blockchain

[Copié le lien]
Publié sur 03/05/2018 15:55:28 | | |
Déclaration : Voici le document « Guide mondial de développement de la concurrence des applications blockchain Xunlei » rédigé par Xunlei Company, pourquoi utiliser ce document rédigé comme guide de développement blockchain ?

Thunder est en réalité une chaîne privée construite avec des smart contracts Ethereum, la technologie est très avancée, et elle fait l’objet de recherches approfondies sur la technologie blockchain, ce qui a une importance directrice pour notre développement blockchain.

Comme le dit le proverbe, « tirez des conclusions d’un exemple », nous pouvons développer d’autres applications blockchain en lisant le guide de développement blockchain rédigé par Xunlei, grâce à Xunlei.

Le document se lit comme suit :

1/16
Guide mondial de développement de la concurrence des applications blockchain Thunder
Développement du contrat dans la recommandation de la ligne
1. Avant de rédiger des contrats intelligents, vous devez avoir une certaine compréhension des fondamentaux de la blockchain (en pièce jointe : Aperçu d’Ethereum).
2. Apprenez le langage Solidity (API Solidity).
3. Apprenez à utiliser le cadre truffle en combinaison avec l’apprentissage de la solidité. Utilisez la truffe pour développer localement
Exécutez des contrats dans un environnement blockchain.
4. Apprenez et utilisez zeppelin-solidty (un cadre contractuel standardisé dédié à la sécurité) et concevoir l’intégration
Mode contrat, séparer les données et les contrats logiques, contrôler la sécurité des permissions, et envisager la logique de mise à niveau.
5. Apprenez à interagir avec les contrats en utilisant web3.js. Utilisez le plugin Metamask et le service web avec blockchain
Interaction.
6. Questions et réponses sur le forum : http://wanke.xunlei.com/forum.php ?
mod=forumdisplay&fid=53 (Tout problème rencontré peut être annulé sur ce forum.)
Nous vous répondrons dans un délai de 3 jours ouvrés)
Concepts de base
Blockchain
La blockchain est un système informatique décentralisé et distribué, dont la caractéristique principale est l’immuabilité permanente des données,
Elle ne peut pas être falsifiée, et elle présente un haut degré d’ouverture, de transparence et de confiance. Les technologies clés incluent l’algorithme de consensus byzantin tolérant aux failles (PBFT),
technologie de chiffrement, technologie P2P, etc.
Transaction
La blockchain peut être comprise comme un système de base de données de transactions partagé à l’échelle mondiale. Tout logiciel autorisé peut le lire
Prenez les données du réseau blockchain. Lorsqu’il est nécessaire de modifier les données dans le réseau de blocs, une couverture doit être mise en place
Il existe des requêtes acceptées par les nœuds blocs, qui sont collectivement appelées transactions dans le système.
Les transactions sont transactionnelles et sont soumises à la blockchain, soit toutes, soit toutes exécutées. Un cadre commercial
Une fois la ligne terminée, elle est sauvegardée définitivement sur la blockchain et ne peut plus être modifiée ou exécutée.
Les transactions sont initiées et signées par le compte dans le système, et grâce à la cryptographie, les transactions ne peuvent être détenues que par la clé privée
2/16
Quelqu’un l’initie, d’autres ne peuvent ni modifier ni falsifier. Cela garantit l’authenticité et la sécurité de la transaction.
Compte
Il existe deux types de comptes dans le système blockchain : l’un est externe et l’autre est le compte contractuel. Compte externe détenu
Vos propres clés publiques et privées uniques, et votre compte est contrôlé par cette paire de clés. Les comptes à terme ont leur propre code, et le compte est créé par
Contrôle du code personnel.
Le compte est identifié par une adresse, la longueur de l’adresse est la même, et il n’y a aucune différence entre les deux types de comptes. L’adresse du compte externe est fournie par
La clé publique est générée, et l’adresse du contrat utilise l’adresse à partir de laquelle le compte contractuel a été créé ainsi que le nombre de transactions ayant généré le compte contractuel
(nonce) est produit. Les contrats sont déployés par l’adresse officielle, et les comptes ordinaires ne peuvent pas publier directement les contrats. La combinaison de l’utilisateur
Il doit être officiellement examiné et publié par Xunlei.
Au sein du système, il n’y a aucune différence entre les deux types de comptes. Chaque compte contient 256 bits à l’intérieur du système
La structure de stockage clé-valeur jusqu’à 256 bits est appelée stockage. Chaque compte a un solde appelé
Le solde, dans Wei, peut être modifié en envoyant une transaction avec une valeur numérique au compte.
Contrat
Un contrat est un compte blockchain qui stocke le code, et l’appel contractuel est effectué en envoyant des transactions vers ce compte. Quand
Le langage de programmation sous contrat plus populaire précédent était Solidity. Actuellement, le concours ne prend en charge que la soumission de contrats en langage Solidity.
Le contrat est divisé en deux parties : le stockage des données et la fonction ; les données stockent l’état du contrat, et la fonction est le contrat
L’interface externe réalise la requête des données et la modification d’état en appelant des fonctions.
Rédigez un contrat via un langage de programmation, puis obtenez le bytecode EVM après la compilation. En envoyant une transaction au compte contractuel, le réel
Appel contractuel en cours.
Gaz
Le gaz est l’unité de paiement de la blockchain, et lorsqu’une transaction est créée, une certaine quantité de gaz est spécifiée. Seigneur
Si c’est pour limiter le montant du calcul sur la transaction et payer des frais pour l’exécution de la transaction. Lors de l’exécution de la transaction, Gas
Elle sera consommée par une règle établie par l’EVM.
Le prix du gaz est une valeur spécifiée par le créateur de la transaction et le nombre de frais nécessaires pour exécuter la transaction
Le montant est Gas_Price*Essence. Fin de la transaction S’il reste du gaz, la portion restante est retournée à la suggestion du créateur
utilisateurs. Si le gaz est insuffisant, l’exécution de la transaction échouera, et la transaction ne pourra pas empêcher les attaques par inondation pour la sécurité du système
Les frais de manipulation ne sont pas remboursés. La plus petite unité de prix du gaz est le wei, 10^18 wei = 1 gramme de chaîne.
Solidité
3/16
Solidity est un langage de programmation de haut niveau conçu pour les contrats intelligents, fonctionnant sur EVM (Ethereum).
Virtual Machine)。 L’implémentation de la conception du langage est influencée par C++/Python/JavaScript.
Solidity est un langage fortement typé qui supporte l’héritage, le polymorphisme, les interfaces, l’abstraction, les bibliothèques, les types de données personnalisés, et plus encore
Le sexe. Solidity prend en compte la programmation d’instructions assembleur, et le code est compilé en bytecode et s’exécute sur l’EVM. La solidité est
Le langage de développement des smart contracts le plus populaire est également celui recommandé et supporté par la plateforme Thunder Contract.
Notes :
1. Ethereum Virtual Machine est un environnement virtuel sur Ethereum qui fournit un environnement d’exécution pour les contrats intelligents
Machine simulée. La plateforme concurrente est compatible avec EVM, mais elle doit respecter les restrictions d’utilisation de la plateforme officielle.
2. Les types de comptes sont divisés en comptes externes (adresses ordinaires de comptes de trading) et comptes à terme. Créez un contrat
Il s’agit du processus d’envoi d’une transaction à l’adresse de compte de destination 0.
3. Le concours spécifie l’utilisation de la truffe (truffle v4.1.5 solidity v0.4.21) pour développer des combinaisons intelligentes
La plateforme vérifiera le bytecode selon le code source du document soumis par le participant. ,
Développer des contrats avec la truffe
Cadre de développement solide de contrats intelligents. Il offre un ensemble complet de développement, de débogage et d’édition
Traduction, déploiement et test d’environnements sur site. Vous pouvez utiliser rapidement la commande de déboître du modèle en fonction de certains modèles
Générez la structure contractuelle correspondante.
Installer Truffle
NPM I -G truffe
[root@opennode Sandai]# Version truffe
Truffle v4.1.5 (cœur : 4.1.5)
Solidity v0.4.21 (solc-js)
Début
1. Initialiser le projet contractuel avec de la truffe
4/16
mkdir simple stockage
Stockage simple sur CD
Init truffe
2. Créer un nouveau fichier de contrat : Vous pouvez utiliser Truffle pour créer un contrat
Vous pouvez également créer un nouveau fichier directement depuis la ligne de commande SimpleStorage
contract/SimpleStorage.sol
SimpleStorage.sol
Pragma solidité ^0.4.21 ;
contract SimpleStorage {
uint myVariable ;
function set(uint x) public {
myVariable = x ;
}
fonction get() rendements publics constants
(uint) {
return myVariable ;
}
}
3. Ajouter des scripts de migration : Vous pouvez utiliser Truffle Create Migration
2_deploy_contract méthode en ligne de commande est ajoutée, et vous pouvez aussi créer directement un nouveau fichier
Migrations/2_deploy_contract.js
2_deploy_contract.js l’exécution de la migration de truffes
L’ordre des lignes est lié au nom du fichier, donc plusieurs scripts de déploiement doivent être nommés dans l’ordre
var SimpleStorage =
artefacts.require(« SimpleStorage ») ;
module.exports = function(deployer) {
deployer.deploy (SimpleStorage) ;
5/16
};
4. Exécutez le contrat de compilation truffle, et le contrat compilé se trouve dans le dossier de compilation. par contrat
Un fichier json correspondant contient le bytecode, abiCode, etc. est nécessaire pour le déploiement
5. Modifier la truffle.js pour configurer le contrat de déploiement de truffles et la connexion RPC afin d’interagir avec la blockchain.
[root@localhost opennode]# vi truffle.js
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id : « * »
}
}
};
6. Activez l’environnement blockchain par défaut de Truffle sur la console.
Développement de la truffe
Truffle Develop a débuté à
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
Clés privées :
(0)
c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e
4a9ec0a0f44dc0d3
(1)
AE6AE8E5CCBFB04590405997EE2D52D2B330726137B87505
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
Sweet Crumble riche et lisse au miel
⚠ Important ⚠ : Ce mnémotechnique a été créé pour
toi, par Truffle. Ce n’est pas sécurisé.
Assurez-vous de ne pas l’utiliser en production
7/16
Blockchains, sinon vous risquez de perdre des fonds.
Truffe (développer)>
Cela offre un environnement blockchain natif permettant à Truffle d’exécuter des contrats, générant 10 comptes par défaut, chacun généré
Le solde initial du compte est de 100 ether. Vous pouvez également utiliser l’interface graphique fournie par Ganache
, vous devez modifier le port auquel la configuration est connectée.
7. Exécuter le contrat de déploiement du port migrateur truffle dans une nouvelle console (ou dans truffle
développe console pour effectuer la migration).
8. Tester le code du contrat avec le développage truffe.
SimpleStorage.deployed().then(function(instance
){retour
instance.get.call() ; }).alors(fonction(valeur)
{return value.toNumber()})
// 0
SimpleStorage.deployed().then(function(instance
){return instance.set(100) ; });
Informations de transaction de sortie
SimpleStorage.deployed().then(function(instance
){retour
instance.get.call() ; }).alors(fonction(valeur)
{return value.toNumber()}) ;
// 100
9. Tester le contrat avec le test truffle Utiliser truffle create test SimpleStorage pour créer un nouveau ou
Créez un nouveau fichier test/SimpleStorage.test.js directement.
const SimpleStorage =
artefacts.require('SimpleStorage') ;
contract('SimpleStorage', function(accounts) {
8/16
it(« devrait affirmer vrai », fonction(fait)
{
var simpleStorage =
SimpleStorage.deployed() ;
Instance VAR ;
simpleStorage.then(res => {
instance = res ;
return instance.get()
}).alors(valeur => {
assert.equal('0',
value.toNumber(), 'pas égal à 0')
}).then(() => {
instance.set(100)
}).then(() => {
return instance.get()
}).alors(valeur => {
assert.equal('100',
value.toNumber(), 'pas égal à 100')
})
terminé() ;
});
});
Dans la nouvelle console, saisissez le test truffe ./test/SimpleStorage.test.js.
10. Contrats de test avec remix Contrats de mise développés avec truffle in remix pour modifier rapidement
Déploiement et invocation du contrat proposé. Remix offre un environnement d’exécution de compilation pour les contrats et peut être contrôlé par le contrat
Le tableau peut voir les informations détaillées de chaque transaction du contrat, telles que les paramètres d’entrée et de sortie, les données de la méthode signée,
Hachage de transaction et autres informations. Supportez le débogage.
1. Utilisez les détails de compilation pour voir les détails de la compilation du contrat. Y compris le bytecode, abi
et en utilisant web3.js déploiement rapide de la méthode Drip Ah.
9/16
2. Utiliser run pour créer un contrat, et la console peut consulter la transaction qui a créé le contrat.
Utilisez Truffle Unbox pour créer des applications de contrats interactives
Les étapes ci-dessus créent un environnement contractuel pouvant être compilé, déployé et débogué en utilisant basic truffle init. Ci-dessous
Créez un nouveau projet avec Truffle Unbox, qui nous fournit un modèle de projet truffe, à l’intérieur
Certaines dépendances dans l’environnement d’interaction avec les applications contractuelles. Vous pouvez consulter les offres officielles dans Truffle Boxes
Des boîtes modèles. Voici le modèle React.
1. Nouveau projet truf-react
MKDIR TRUF-REACT
10/16
CD Truf-React
Truffle Unbox React
Le processus d’unbox télécharge le modèle d’extraction et effectue des opérations telles que l’installation de npm.
2. Configurez les truffle.js du projet
module.exports = {
Voir
<http://truffleframework.com/docs/advanced/confi
De la grégation>
pour personnaliser votre Truffle
Configuration !
networks: {
development: {
host: '127.0.0.1',
port: '9545',
network_id : '*' // Match
N’importe quel ID réseau
}
}
};
3. Commencer un développement de truffes
4. Amendement au SRC/App.js
importez React, { Component } de 'react'
importer SimpleStorageContract depuis
'.. /construire/contracter/SimpleStorage.json'
importez getWeb3 depuis './utils/getWeb3'
importez './css/oswald.css'
importez './css/open-sans.css'
importez './css/pure-min.css'
11/16
importez './App.css'
contrat const = exige('contrat truffe')
const simpleStorage =
contract(SimpleStorageContract)
class App extends Component {
constructor(props) {
super(accessoires)
this.state = {
storageValue: 0,
web3: null,
inputValue: 0,
address: null
}
this.changeValueHandle =
this.changeValueHandle.bind(this)
this.setHandle =
this.setHandle.bind(this)
}
componentWillMount() {
Obtenez un fournisseur réseau et web3
Exemple.
Voir utils/getWeb3 pour plus d’informations
infos.
getWeb3
.then(results => {
this.setState({
web3:
results.web3
})
Instancier le contrat
Une fois que Web3 a été fourni.
12/16
this.instantiateContract()
})
.catch(() => {
console.log('Erreur
Trouver Web3.')
})
}
instanceiateContract() {
/*
* EXEMPLE DE CONTRAT INTELLIGENT
*
* Normalement, ces fonctions
être appelé dans le contexte d’un
* bibliothèque de gestion d’état, mais
Pour plus de commodité, je les ai placés ici.
*/
this.simpleStorageSet(5)
}
changeValueHandle(event) {
this.setState({
inputValue:
Nombre(événement.cible.valeur)
})
}
setHandle() {
this.simpleStorageSet(this.state.inputValue)
}
simpleStorageSet(x) {
simpleStorage.setProvider(this.state.web3.curren
tProvider)
Je déclare cela pour plus tard donc
13/16
nous pouvons chaîner des fonctions sur SimpleStorage.
var simpleStorageInstance
Obtenez des comptes.
this.state.web3.eth.getAccounts((erreur,
comptes) => {
simpleStorage.deployed().then(instance) => {
simpleStorageInstance = instance
this.setState({
address: instance.address })
Magasins
Valeur donnée, 5 par défaut.
Retour
simpleStorageInstance.set(x, {from :
comptes[0]})
}).then((résultat) => {
Obtenez la valeur
du contrat pour prouver que ça a fonctionné.
Retour
simpleStorageInstance.get.call(accounts[0])
}).then((résultat) => {
Mise à jour de l’état
avec le résultat.
Retour
this.setState({ storageValue : result.c[0] })
})
})
}
render() {
retour (
<div className="App">
<navigation
className="navbar-menu-pur-menu-pur-horizontal">
14/16
<a href="# » className="pure-menu-head-pur-link">Truffle
Boîte</a>
</nav>
< principal
className="conteneur">
<
className="pur-g">
<div className="pure-u-1-1">
<h1>Prêt à partir !</h1>
<p>Votre boîte à truffes est installée et prête.</p>
<h2>Exemple de contrat intelligent</h2>
<p>Si vos contrats ont été compilés et migrés
Avec succès, ci-dessous affichera une valeur stockée de
5 (par défaut).</p>
<p>Essayez de modifier la valeur stockée <strong>en ligne
59</strong> de App.js.</p>
<p>La valeur stockée est :
{this.state.stockValue}</p>
<p>Adresse du contrat déployé :
{this.state.address}</p>
</div>
<div>
<type d’entrée="nombre » onChange=
{this.changeValueHandle}/>
<bouton onClick={this.setHandle}>set</button>
15/16
</div>
</div>
</main>
</div>
);
}
}
Export par défaut Application
Ajout de l’appel de la méthode de contrat fixé. Et montre l’adresse du contrat.
5. Ouvrir une nouvelle console et lancer npm run start
6. Ouvrez le http://lcoalhost:3000 dans votre navigateur pour voir les résultats du contrat.
7. Définir la valeur du contrat stocké Données via les boîtes d’ensemble et d’entrée.
8. Entrer dans le développement de truffes
//将xxx替换为address
SimpleStorage.at('xxxx').then(res => {return
res.get()})
La valeur de retour du type BigNUmber est obtenue, et la valeur dans le tableau c est fixée
stockedData.
Utilisez le plugin de navigateur Metamask pour interagir avec la blockchain
Référence http://truffleframework.com/tutorials/pet-shop
Les participants soumettent des documents
Le concours précise l’utilisation de Truffle pour développer des smart contracts, la version 4.1.5 de Truffle correspondant à la version solcjs
v0.4.21. Les développeurs doivent soumettre le package zip du projet Truffle ainsi que les documents d’introduction de projet associés, qui incluent au moins
Les suivants :
16/16
1. Structure de base des fichiers du projet Truffle : Test de migration des contrats de construction
package.json truffle.js truffle-config.js README.md // Description de la documentation technique
Aucune node_modules requise
2. Besoin de fournir une explication PPT ou PDF de l’ensemble du produit du projet, incluant l’introduction du contexte du produit, la signification du produit,
Adresse de téléchargement de l’application (optionnelle), introduction du processus d’utilisation du produit.
Les développeurs tiers suivants pourront mettre en œuvre des applications contractuelles et des poches Chain selon le prochain document d’orientation ThunderChain
Interaction.
Documentation et outils
API solidity
Documentation de la truffe
Ganache fournit une interface graphique pour l’environnement blockchain natif
Zeppelin-Solidty s’engage à un cadre contractuel sécurisé et standardisé
MetaMask propose des plugins pour navigateurs disposant d’un environnement blockchain via des connexions RPC
web3.js JS encapsulé Ethereum pour interagir avec la blockchain
Enfin, le document pdf à télécharger :

Dev_Guide_zh.pdf (373.55 KB, Nombre de téléchargements: 6)
 Propriétaire| Publié sur 03/05/2018 16:01:58 |
Publié sur 08/05/2018 14:25:10 |
Éduqué, merci
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com