Passer au contenu principal

How to do a Non-Custodial Transaction with Quicknode

Mis à jour le
26 novembre 2025

7 minutes de lecture

Aperçu

Private keys are one of the most sensitive pieces of data when it comes to cryptography and the blockchain. However, there has always been debate/confusion about choosing between custodial wallets (where the wallet provider has custody of the user’s private key) and non-custodial wallets (where the wallet user has custody of the private key). This guide will take a deep dive into understanding the difference between custodial and non-custodial wallets and how to make a non-custodial transaction using Quicknode.

Prérequis

  • Node.js est installé sur votre système.
  • Éditeur de texte.
  • Terminal, également appelé « ligne de commande ».

Qu'est-ce qu'un portefeuille non dépositaire ?

Un portefeuille non dépositaire est un portefeuille blockchain dont le propriétaire exerce un contrôle total et détient la clé privée. Il existe deux méthodes pour créer un portefeuille non dépositaire et y accéder : à l'aide de la clé privée (une chaîne alphanumérique) ou à l'aide d'une phrase mnémonique, composée de 12 à 24 mots, conservée par le propriétaire du portefeuille (généralement notée par écrit et rangée dans un endroit sûr, hors d'Internet et d'un ordinateur).

Voici quelques avantages d'un portefeuille non dépositaire :

  • Autonomie: les utilisateurs ont le contrôle total de leurs fonds, car ils sont les seuls à disposer d'un contrôle total sur ceux-ci. Ils n'ont pas besoin de faire appel à un tiers pour gérer ou sécuriser leur portefeuille.
  • Sécurité: comme les utilisateurs conservent leurs clés privées hors d'Internet et sur un support autre qu'un ordinateur, les risques de faille de sécurité sont pratiquement négligeables.
  • Retrait instantané: avec les portefeuilles non dépositaires, les utilisateurs n'ont pas besoin de passer par un tiers pour valider leur demande de retrait. Cela simplifie l'ensemble du processus et permet d'effectuer des retraits instantanés.

Portefeuille non dépositaire vs portefeuille dépositaire

Abonnez-vous à notre chaîne YouTube pour découvrir d'autres vidéos !
  • Détenteur de la clé privée – Le premier critère à prendre en compte lors de la comparaison de portefeuilles cryptographiques est la détention de la clé privée. Dans le cas d’un portefeuille non dépositaire, c’est l’utilisateur qui détient la clé privée. Dans le cas des portefeuilles dépositaires, c’est un tiers (généralement un fournisseur de portefeuille ou une plateforme d’échange) qui contrôle la clé privée.
  • Type de transaction - Les transactions effectuées à partir de portefeuilles non dépositaires sont visibles instantanément sur la blockchain. En revanche, les transactions effectuées à partir de portefeuilles dépositaires doivent passer par divers contrôles effectués par un tiers et sont sujettes à des délais.
  • Sécurité - Dans les portefeuilles non dépositaires, l'utilisateur conserve sa clé privée en local. Le portefeuille est très sécurisé, sauf si l'utilisateur partage sa clé privée ou si son appareil est volé. Dans les portefeuilles dépositaires, toutes les données sensibles de l'utilisateur, telles que les clés privées, sont stockées sur un support de stockage « à chaud » (mis à jour instantanément) et sur un support de stockage « à froid » (mis à jour de temps à autre), qui sont généralement vulnérables au piratage.
  • Accessibilité hors ligne — Les portefeuilles non dépositaires ne nécessitent pas de connexion Internet active. Les portefeuilles dépositaires nécessitent une connexion Internet, car les données sont généralement stockées sur un serveur centralisé.
  • Sauvegarde et récupération — Le seul inconvénient des portefeuilles non dépositaires est qu’une fois la clé privée ou la phrase mnémonique perdue, il n’y a aucun moyen de récupérer le portefeuille. En revanche, les utilisateurs de portefeuilles dépositaires peuvent faire appel à un tiers pour récupérer leurs fonds.

Utilisation d'un nœud sans garde

At Quicknode, we run many nodes globally. All of these nodes are constantly connected to the internet and are dynamic. The Quicknode API is connected to a global network of powerful nodes. These nodes are not always connected to a single infrastructure component. The API is designed to perform dynamic switches between single infrastructure components to facilitate better stability and uptime. This makes storing any sensitive data on a node less than ideal as they are constantly in flux. There is also a security aspect to this as these nodes are facing the internet. We don’t allow them to store private keys for the security of our user’s data.  Because they are dynamic, they change their state often to provide better performance. This means the keys can be lost, resulting in the user’s data being lost. These were the reasons for running non-custodial nodes and having our users be the sole controller of their wallets. In the coming sections, we’ll see how to create a wallet using a library, make a non-custodial transaction, and send it using Quicknode.

Set Up Your Quicknode Ethereum Endpoint

We could use pretty much any Ethereum client, such as Geth or OpenEthereum (fka Parity), for our purposes today. Since that is a bit too involved for sending transactions, we'll just create a free Quicknode account here and easily generate an Ethereum endpoint. We’ll use the Kovan Test Chain to make the transfers. After you've created your free Ethereum endpoint, copy your HTTP Provider URL:

A screenshot of the Quicknode Ethereum endpoint Getting Started page with an HTTP link and WSS

 

Tu en auras besoin plus tard, alors copie-le et enregistre-le.

Créer un portefeuille et obtenir un peu d'ETH à des fins de test

We could use any of the many available web3 libraries to create a wallet. Today we’ll use ethers.js, a javascript library, to create a wallet that will sign and send transactions. You can also refer to our guides on creating an Ethereum wallet in Go / Python / RubyPHP.

Nous allons installer Ethers à l'aide de npm (Node Package Manager), qui est fourni avec Node.js. Ouvrez votre invite de commande/terminal et tapez la commande suivante pour vérifier si Node.js est installé ou non :

node -v 

Cette commande devrait afficher la version installée de Node.js ; si le logiciel n'est pas installé, téléchargez la version LTS de Node.js depuis son site officiel.

Créons un nouveau répertoire pour notre projet, puis définissons ce répertoire comme répertoire de travail actuel dans la ligne de commande/le terminal :

mkdir noncusTransaction
cd noncusTransaction

Installez maintenant Ethers en saisissant la commande suivante :

npm i ethers@5.7

Assurez-vous d'installer la version 5.7 d'Ethers.js

Le problème le plus courant à cette étape est une erreur interne liée à `node-gyp`. Vous pouvez suivre les instructions d'installation de node-gyp disponibles ici.

Remarque: si vous rencontrez le problème lié à node-gyp, vous devrez vous assurer que la version de Python que vous utilisez correspond à l'une des versions compatibles répertoriées dans les instructions ci-dessus. 

Un autre problème courant est un cache obsolète ; pour vider votre cache npm, il suffit de taper la commande suivante dans votre cmd/terminal :

npm cache clean

Si tout se passe bien, ethers.js sera installé sur votre système.

À présent, ouvrez un éditeur de texte et créez un nouveau fichier JavaScript nommé transaction.js. Copiez-collez le code suivant dans ce fichier.

var éthers = require('ethers');  
var cléPrivée = "0x0111111111111111111122222222222222222223333333333333333333344445";
var wallet = new ethers.Portefeuille(clé privée);
console.log("Adresse : " + wallet.adresse);

Explication du code ci-dessus :

Ligne 1 : Importation de la bibliothèque « ethers ».

Ligne 2 : Enregistrez une clé privée dans la variable `privateKey` ; veillez à utiliser votre propre clé privée. Pour savoir comment en générer une, consultez ce guide sur la génération d'une clé privée à l'aide de JavaScript.

Remarque: si vous comptez publier votre code sur Internet (par exemple dans un dépôt GitHub public), il est toujours recommandé de stocker la clé privée dans un fichier .env et de l'importer dans votre code principal via une variable d'environnement. 

Ligne 3 : Création d'une nouvelle adresse de portefeuille à l'aide de la clé privée et enregistrement de celle-ci dans la variable « wallet ».

Ligne 4 : Affichage de l'adresse du portefeuille accompagnée d'une chaîne de caractères.

Enregistrez maintenant le fichier et exécutez le script.

transaction de nœud

Ça devrait ressembler à ça.

Maintenant, récupérons un peu d'ETH de test à envoyer lors de la transaction et pour payer les frais de gaz. Copiez l'adresse figurant dans la sortie, rendez-vous sur le site Kovan Faucet, connectez-vous via GitHub ou GitLab, collez l'adresse du portefeuille dans le champ de texte du site, puis cliquez sur « Send me KETH ! ».

Vous pouvez vérifier si vous avez bien reçu l'ETH de test en collant l'adresse dans l'Etherscan de Kovan; vous verrez alors le solde en ETH.

Envoi d'une transaction sans dépôt fiduciaire

Let us create a token transfer transaction using the wallet we created earlier and send the transaction to the chain using Quicknode.

Modifiez votre fichier transaction.js comme suit :

var ethers = require('ethers');  
var url = ''ADD_YOUR_ETHEREUM_NODE_URL'';
var customHttpProvider = new ethers.providers.JsonRpcProvider(url);
var privateKey = "0x0111111111111111111122222222222222222223333333333333333333344445";
var wallet = new ethers.Wallet(privateKey);
console.log("Address: " + wallet.address);
tx = {
to: "0x6E0d01A76C3Cf4288372a29124A26D4353EE51BE",
value: ethers.utils.parseEther("0.05"),
chainId: 42,
nonce: 11
}
customHttpProvider.estimateGas(tx).then(function(estimate) {
tx.gasLimit = estimate;
tx.gasPrice = ethers.utils.parseUnits("3.14085197", "gwei");
wallet.signTransaction(tx).then((signedTX)=>{
customHttpProvider.sendTransaction(signedTX).then(console.log);
});
});

N'hésitez donc pas à remplacer `ADD_YOUR_ETHEREUM_NODE_URL` par le fournisseur HTTP indiqué dans la section ci-dessus.

Explication du code ci-dessus.

Ligne 1 : Importation de la bibliothèque « ethers ».

Line 2: Storing our Quicknode URL in the url variable.

Ligne 3 : Instanciation d'un nouveau fournisseur Ethers et stockage dans la variable `customHttpProvider`.

Ligne 4 : Enregistrement de la clé privée dans la variable `privateKey` (vous devez générer votre propre clé privée).

Ligne 5 : Création d'un nouveau portefeuille à partir de la clé privée.

Ligne 6 : Affichage de l'adresse du portefeuille accompagnée d'une chaîne de caractères.

Line 7-12: Initializing our transaction object, and supplying parameters like ‘to’, which has the receiver's address (any address to which the transaction is to be sent). Secondly, ‘value’ which has the value of ETH to be transferred. Thirdly, ‘chainId’ is the network id of the chain (42 here because we are using Kovan testnet). Last of all, ‘nonce’ which is the count of transactions a sender has sent. The value here should always be the number of previous transactions +1.

 Nous pouvons également obtenir le nonce d'une adresse donnée à l'aide de la méthode getTransactionCount() de ethers.js.

Lignes 13-14 : Estimation du « gas » à l'aide du fournisseur, puis enregistrement de cette valeur dans la variable `gasLimit` de l'objet transaction.

Ligne 15 : Définition du prix du gaz et enregistrement de celui-ci dans la variable « gasPrice » de la transaction.

Ligne 16 : Signature de la transaction à l'aide du portefeuille.

Ligne 17 : envoi de la transaction signée via le fournisseur et affichage des détails de la transaction sur la console.

Enregistrez le fichier et exécutez-le à l'aide de la commande suivante :

transaction de nœud

Le résultat sera similaire à celui-ci :

Copiez le hachage de la transaction et collez-le dans la barre de recherche de Kovan Etherscan pour vérifier si elle a été confirmée ou non.

Conclusion

Félicitations : vous venez d'effectuer une transaction sans dépôt fiduciaire et vous êtes désormais l'unique détenteur de vos fonds. Ne communiquez jamais votre clé privée à qui que ce soit ; conservez-la toujours en lieu sûr afin de garantir la sécurité de votre portefeuille et de vos fonds.

Subscribe to our newsletter for more articles and guides on Ethereum. You can also always reach us on Twitter and Discord community server, featuring some of the coolest developers you’ll ever meet :)

Nous ❤️ les commentaires !

Faites-nous savoir si vous avez des commentaires ou des suggestions de nouveaux sujets. Nous serions ravis de vous entendre.

Partager ce guide