Ir diretamente para o conteúdo principal

Como efetuar uma transação sem custódia com o Quicknode

Atualizado em
26 de novembro de 2025

7 minutos de leitura

Visão geral

As chaves privadas são um dos dados mais sensíveis no que diz respeito à criptografia e à blockchain. No entanto, sempre houve debate e confusão sobre a escolha entre carteiras com custódia (em que o fornecedor da carteira detém a custódia da chave privada do utilizador) e carteiras sem custódia (em que o utilizador da carteira detém a custódia da chave privada). Este guia irá aprofundar a compreensão da diferença entre carteiras com custódia e sem custódia e explicar como efetuar uma transação sem custódia utilizando o Quicknode.

Pré-requisitos

  • O Node.js está instalado no seu sistema.
  • Editor de texto.
  • Terminal, também conhecido como linha de comandos.

O que é uma carteira sem custódia?

Uma carteira não custodial é uma carteira de blockchain em que o proprietário da carteira detém o controlo total e a custódia da chave privada. É possível criar e aceder a uma carteira não custodial através de dois métodos: utilizando a chave privada (uma sequência alfanumérica) ou utilizando uma frase mnemónica, uma sequência de 12 a 24 palavras armazenada pelo próprio proprietário da carteira (geralmente anotada e guardada num local seguro, fora da Internet e do computador).

Seguem-se algumas vantagens de uma carteira sem custódia:

  • Autonomia — os utilizadores têm controlo total sobre os seus fundos — uma vez que o utilizador é a única entidade com controlo total sobre os seus fundos. Não têm de depender de terceiros para gerir ou proteger a sua carteira.
  • Segurança — uma vez que os utilizadores guardam as suas chaves privadas fora da Internet ou de qualquer computador, as probabilidades de uma falha de segurança são praticamente insignificantes.
  • Levantamento instantâneo — com carteiras sem custódia, os utilizadores não têm de depender de terceiros para confirmar o seu pedido de levantamento. Isto agiliza todo o processo e permite levantamentos instantâneos.

Carteira sem custódia vs. carteira com custódia

Subscreve o nosso canal do YouTube para veres mais vídeos!
  • Custódia da chave privada - O fator mais importante a ter em conta ao comparar carteiras de criptomoedas é a posse da chave privada. No caso de uma carteira sem custódia, o utilizador detém a custódia da chave privada. Nas carteiras com custódia, é um terceiro (normalmente um fornecedor de carteiras ou uma bolsa) que controla a chave privada.
  • Tipo de transação — As transações efetuadas por carteiras sem custódia ficam visíveis instantaneamente na cadeia. Em contrapartida, as transações efetuadas por carteiras com custódia têm de passar por várias verificações por parte de terceiros e estão sujeitas a atrasos.
  • Segurança — Nas carteiras sem custódia, o utilizador mantém a chave privada armazenada localmente. A carteira é muito segura, a menos que o utilizador partilhe a chave privada ou que o dispositivo seja roubado. Nas carteiras com custódia, todos os dados sensíveis do utilizador, como as chaves privadas, são armazenados em armazenamento de dados «quente» (atualizado instantaneamente) e em armazenamento de dados «frio» (atualizado periodicamente), que são normalmente vulneráveis a ataques de pirataria informática.
  • Acessibilidade offline — As carteiras sem custódia não necessitam de uma ligação à Internet ativa. As carteiras com custódia necessitam de uma ligação à Internet, uma vez que os dados são normalmente armazenados num servidor centralizado.
  • Cópia de segurança e recuperação — A única desvantagem das carteiras não custodiais é que, caso a chave privada ou a sequência mnemónica se percam, não há forma de recuperar a carteira. Em contrapartida, os utilizadores de carteiras custodiais podem solicitar a recuperação a uma entidade terceira.

Utilização de um nó sem custódia

Na Quicknode, operamos muitos nós a nível global. Todos estes nós estão constantemente ligados à Internet e são dinâmicos. A API da Quicknode está ligada a uma rede global de nós potentes. Estes nós nem sempre estão ligados a um único componente de infraestrutura. A API foi concebida para efetuar mudanças dinâmicas entre componentes de infraestrutura individuais, de forma a garantir uma melhor estabilidade e tempo de atividade. Isto torna o armazenamento de quaisquer dados sensíveis num nó uma opção pouco aconselhável, uma vez que estes estão em constante mudança. Há também uma questão de segurança a ter em conta, uma vez que estes nós estão expostos à Internet. Não permitimos que armazenem chaves privadas, para garantir a segurança dos dados dos nossos utilizadores.  Por serem dinâmicos, alteram frequentemente o seu estado para proporcionar um melhor desempenho. Isto significa que as chaves podem perder-se, resultando na perda dos dados do utilizador. Estas foram as razões para operarmos nós sem custódia e para que os nossos utilizadores sejam os únicos controladores das suas carteiras. Nas próximas secções, veremos como criar uma carteira utilizando uma biblioteca, efetuar uma transação sem custódia e enviá-la através da Quicknode.

Configurar o seu ponto de acesso Quicknode para a Ethereum

Para os nossos objetivos de hoje, poderíamos utilizar praticamente qualquer cliente Ethereum, como o Geth ou o OpenEthereum (anteriormente conhecido como Parity). Como isso é um pouco complicado para enviar transações, vamos simplesmente criar uma conta gratuita no Quicknode aqui e gerar facilmente um ponto de acesso Ethereum. Vamos utilizar a cadeia de teste Kovan para efetuar as transferências. Depois de criar o seu ponto de acesso Ethereum gratuito, copie o URL do seu fornecedor HTTP:

Uma captura de ecrã da página «Introdução» do ponto de acesso Quicknode Ethereum, com um link HTTP e WSS

 

Vais precisar disto mais tarde, por isso copia e guarda.

Criar uma carteira e obter algum ETH para teste

Podemos utilizar qualquer uma das muitas bibliotecas web3 disponíveis para criar uma carteira. Hoje vamos utilizar a ethers.js, uma biblioteca JavaScript, para criar uma carteira que irá assinar e enviar transações. Também pode consultar os nossos guias sobre como criar uma carteira Ethereum em Go / Python / Ruby / PHP.

Vamos instalar o ethers utilizando o npm (Node Package Manager), que vem incluído no node.js. Abra o cmd/terminal e escreva o seguinte para verificar se o node.js está instalado ou não:

node -v 

Isto deverá indicar a versão instalada do Node.js; caso não esteja instalado, descarregue a versão LTS do Node.js a partir do seu site oficial.

Vamos criar um novo diretório para o nosso projeto e definir esse diretório como o nosso diretório de trabalho atual no cmd/terminal:

mkdir noncusTransaction
cd noncusTransaction

Agora, instale o ethers digitando o seguinte:

npm i ethers@5.7

Certifique-se de que está a instalar a versão 5.7 do Ethers.js

O problema mais comum nesta etapa é uma falha interna do `node-gyp`. Pode seguir as instruções de instalação do node-gyp aqui.

Nota: Se se deparar com o problema do node-gyp, terá de garantir que a sua versão do Python corresponde a uma das versões compatíveis indicadas nas instruções acima. 

Outro problema comum é um cache desatualizado; limpa o teu cache do npm digitando simplesmente o seguinte no cmd/terminal:

npm cache clean

Se tudo correr bem, o ethers.js será instalado no seu sistema.

Agora, abra um editor de texto e crie um novo ficheiro JavaScript chamado transaction.js. Copie e cole o seguinte no ficheiro.

var ethers = require('ethers');  
var chave-privada = "0x0111111111111111111122222222222222222223333333333333333333344445";
var carteira = new ethers.Carteira(chave privada);
console.log("Endereço: " + carteira.endereço);

Explicação do código acima:

Linha 1: Importação da biblioteca «ethers».

Linha 2: Ao guardar uma chave privada na variável privateKey, certifique-se de que utiliza a sua própria chave privada. Pode aprender a gerar uma seguindo este guia sobre como gerar uma chave privada utilizando JavaScript.

Nota: Se pretender publicar o seu código na Internet (por exemplo, num repositório público do GitHub), é sempre boa prática guardar a chave privada num ficheiro .env e importá-la para o seu código principal através de uma variável de ambiente. 

Linha 3: Criar um novo endereço de carteira utilizando a chave privada e guardá-lo na variável wallet.

Linha 4: Imprimir o endereço da carteira juntamente com uma cadeia de caracteres.

Agora, guarde o ficheiro e execute o script.

transação do nó

Deve ficar assim.

Agora, vamos obter algum ETH de teste para enviar durante a transação e para pagar a taxa de gás. Copie o endereço da saída, aceda ao Kovan Faucet e inicie sessão com o GitHub ou o GitLab, cole o endereço da carteira no campo de texto do Faucet e, em seguida, clique em «Send me KETH!».

Pode verificar se recebeu ou não o ETH de teste colando o endereço no Etherscan do Kovan; assim, poderá ver o saldo de ETH.

Envio de uma transação sem custódia

Vamos criar uma transação de transferência de tokens utilizando a carteira que criámos anteriormente e enviar a transação para a cadeia através do Quicknode.

Atualize o seu ficheiro transaction.js da seguinte forma:

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);
});
});

Por isso, substitua `ADD_YOUR_ETHEREUM_NODE_URL` pelo fornecedor HTTP indicado na secção anterior.

Explicação do código acima.

Linha 1: Importação da biblioteca «ethers».

Linha 2: Guardar o nosso URL do Quicknode na variável «url».

Linha 3: Instanciar um novo fornecedor «ethers» e armazená-lo na variável «customHttpProvider».

Linha 4: Guardar a chave privada na variável privateKey (deve gerar a sua própria chave privada).

Linha 5: Criação de uma nova carteira a partir da chave privada.

Linha 6: Imprimir o endereço da carteira juntamente com uma cadeia de caracteres.

Linhas 7-12: Inicialização do nosso objeto de transação e fornecimento de parâmetros como «to», que contém o endereço do destinatário (qualquer endereço para o qual a transação deva ser enviada). Em segundo lugar, «value», que contém o valor em ETH a ser transferido. Em terceiro lugar, «chainId» é o identificador da rede (42, neste caso, porque estamos a utilizar a rede de teste Kovan). Por último, «nonce», que é a contagem das transações que um remetente já enviou. O valor aqui deve ser sempre o número de transações anteriores +1.

 Também podemos obter o nonce para um determinado endereço utilizando o método getTransactionCount() do ethers.js.

Linhas 13-14: Estimar o gas utilizando o fornecedor e, em seguida, armazená-lo na variável gasLimit do objeto de transação.

Linha 15: Definir o preço do gás e guardá-lo na variável gasPrice da transação.

Linha 16: Assinar a transação utilizando a carteira.

Linha 17: Envio da transação assinada através do fornecedor e exibição dos detalhes da transação na consola.

Guarde o ficheiro e execute-o utilizando:

transação do nó

O resultado será semelhante a este:

Copie o hash da transação e cole-o na barra de pesquisa do Kovan Etherscan para verificar se foi confirmado ou não.

Conclusão

Parabéns por ter efetuado uma transação sem custódia e por ser o único responsável pelos seus fundos. Nunca partilhe a sua chave privada com ninguém; guarde-a sempre num local seguro, para maior segurança da sua carteira e dos seus fundos.

Subscreve a nossa newsletter para receberes mais artigos e guias sobre o Ethereum. Também podes contactar-nos a qualquer momento no Twitter e no servidor da comunidade do Discord, onde encontrarás alguns dos programadores mais fantásticos que alguma vez conhecerás :)

Adoramos ❤️ os vossos comentários!

Diz-nos se tiveres algum comentário ou sugestão de novos temas. Adoraríamos saber a tua opinião.

Partilhe este guia