Search code examples
javascriptweb3js

How to handle web3JS without using external wallets


I wanted to use web3JS config without using external wallets like metamask. To handle automated functions using cron jobs which are supposed to run every week. Since metamask asks for permission to use send() method to remove that I wanted to use a account where I will upload private key and stuff. I got this code from internet it works for locally/browser wallets dont know where to edit.

import Web3 from "web3";

const getWeb3 = () =>
  new Promise((resolve, reject) => {
    // Wait for loading completion to avoid race conditions with web3 injection timing.
    window.addEventListener("load", async () => {
      // Modern dapp browsers...
      if (window.ethereum) {
        const web3 = new Web3(window.ethereum);

        try {
          // Request account access if needed
          await window.ethereum.enable();
          // Accounts now exposed
          resolve(web3);
          console.log("enabled", web3);
          console.log("MetaMask injected");
        } catch (error) {
          reject(error);
        }
      }
      // Legacy dapp browsers...
      else if (window.web3) {
        // Use Mist/MetaMask's provider.
        const web3 = window.web3;
        // const web3 = window.web3.currentProvider.enable();
        console.log("Injected web3 detected.");
        resolve(web3);
      }
      // Fallback to localhost; use dev console port by default...
      else {
        const provider = new Web3.providers.HttpProvider(
          "http://127.0.0.1:7545"
        );
        const web3 = new Web3(provider);
        console.log("No web3 instance injected, using Local web3.");
        resolve(web3);
      }
    });
  });

export default getWeb3;

Solution

  • solved it

    const Web3 = require("web3");
    const WalletProvider = require("@truffle/hdwallet-provider");
    
    
    let provider = new WalletProvider({
      mnemonic: {
        phrase:
          "*******",
      },
      providerOrUrl: "https://goerli.infura.io/v3/****************",
    });
    
    const web3 = new Web3(provider);
    const fetch123 = async () => {
      const accounts = await web3.eth.getAccounts();
      console.log(accounts);
    };
    fetch123();