Maison >interface Web >js tutoriel >Explorez l'intersection de la technologie JavaScript et blockchain
Ces dernières années, la technologie blockchain a reçu une grande attention et a révolutionné diverses industries. Essentiellement, une blockchain est un registre décentralisé, immuable et transparent qui enregistre les transactions sur plusieurs ordinateurs. JavaScript est l'un des langages de programmation les plus populaires lors du développement d'applications blockchain. Dans cet article, nous approfondirons l’intersection de la technologie JavaScript et de la blockchain, en explorant comment utiliser JavaScript pour interagir avec et développer des applications sur la blockchain.
Connu pour sa polyvalence et son adoption généralisée, JavaScript est devenu le langage de choix pour créer des applications Web. Sa capacité à fonctionner à la fois côté serveur et côté client le rend idéal pour créer des interfaces utilisateur dynamiques et interactives. De plus, la prise en charge par JavaScript de la programmation asynchrone et son vaste écosystème de bibliothèques le rendent idéal pour le développement de blockchain.
Les technologies Blockchain telles qu'Ethereum fournissent une plate-forme pour créer des applications décentralisées (dApps). Ces dApps nécessitent souvent des contrats intelligents, qui sont des contrats auto-exécutables avec des règles et conditions prédéfinies. JavaScript peut être utilisé pour interagir avec des contrats intelligents, permettant ainsi aux développeurs de créer facilement des applications complexes et décentralisées.
Examinons de plus près comment JavaScript interagit avec les contrats intelligents sur la blockchain Ethereum. Dans cette démonstration, nous utiliserons la bibliothèque web3.js, une bibliothèque JavaScript populaire pour interagir avec Ethereum.
Tout d'abord, vous devez installer Node.js et npm (node package manager) sur votre ordinateur. Une fois la configuration terminée, veuillez suivre les étapes ci-dessous−
Ouvrez un terminal et accédez au répertoire du projet. Exécutez la commande suivante pour installer web3.js −
npm install web3
Dans le fichier JavaScript, importez la bibliothèque web3 et créez une instance de la classe Web3. Vous devez également spécifier l'URL du fournisseur, qui détermine le réseau Ethereum auquel vous souhaitez vous connecter. Dans cet exemple, nous utiliserons le service Infura pour nous connecter au réseau principal Ethereum -
const Web3 = require('web3'); const providerURL = 'https://mainnet.infura.io/v3/YOUR_INFURA_API_KEY'; const web3 = new Web3(providerURL);
REMARQUE- Remplacez YOUR_INFURA_API_KEY par votre clé API Infura réelle. Si vous n'en avez pas, inscrivez-vous gratuitement sur le site Infura.
Pour interagir avec un contrat intelligent, vous avez besoin de l'adresse du contrat et de son ABI (Application Binary Interface). ABI définit la structure et les fonctionnalités des contrats intelligents. Dans cet exemple, nous utiliserons un simple contrat intelligent pour stocker et récupérer des valeurs −
const contractAddress = '0xContractAddress'; const contractABI = [ { "constant": true, "inputs": [], "name": "getValue", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_newValue", "type": "uint256" } ], "name": "setValue", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" } ];
Remplacez 0xContractAddress par l'adresse réelle de votre contrat intelligent déployé. Vous pouvez obtenir le contrat ABI via le code source du contrat intelligent ou des outils tels qu'Etherscan.
Maintenant, créez une instance de contrat en utilisant l'adresse du contrat et l'ABI −
const contract = new web3.eth.Contract(contractABI, contractAddress);
Vous pouvez utiliser des instances de contrat pour appeler des fonctions sur des contrats intelligents. Récupérons la valeur actuelle stockée dans le contrat −
contract.methods.getValue().call((error, result) => { if (error) { console.error(error); } else { console.log('Contract value:', result); } });
La fonction getValue() est une fonction d'affichage, ce qui signifie qu'elle ne modifie pas l'état de la blockchain et peut être appelée sans encourir de frais de gaz. Il récupère la valeur actuelle stockée dans le contrat et la renvoie dans la variable résultat.
Pour modifier la valeur du contrat, vous pouvez appeler la fonction write. Mettons à jour la valeur dans le contrat−
const newValue = 42; contract.methods.setValue(newValue).send({ from: '0xYourAddress' }) .on('receipt', (receipt) => { console.log('Transaction receipt:', receipt); }) .on('error', (error) => { console.error('Transaction error:', error); });
Remplacez 0xYourAddress par votre adresse Ethereum. La fonction setValue() est une fonction non payante, ce qui signifie qu'elle ne nécessite l'envoi d'aucun éther avec la transaction. Nous envoyons la transaction à l'aide de la fonction send() et les gestionnaires d'événements facultatifs (on('receipt') et on('error')) nous permettent de recevoir le reçu de transaction ou de gérer les erreurs survenues pendant la transaction.
Lorsque vous exécutez le code JavaScript, vous verrez le résultat dans la console. Par exemple, si nous appelons la fonction getValue(), le résultat sera -
Contract value: 10
Si nous mettons à jour la valeur à l'aide de la fonction setValue(), le résultat sera − p>
Transaction receipt: { blockHash: '0x123456...', blockNumber: 1234, ... }
La polyvalence de JavaScript et la puissance de la technologie blockchain se sont réunies pour permettre aux développeurs de créer des applications décentralisées à l'aide d'outils familiers. Dans cet article, nous explorons comment utiliser JavaScript pour interagir avec les contrats intelligents sur la blockchain Ethereum. En tirant parti de bibliothèques telles que web3.js, les développeurs peuvent se connecter à la blockchain, interagir avec des contrats intelligents et créer des applications basées sur la blockchain.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!