Radish alpha
r
Radicle web interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
Replace MockExtensionProvider with @rsksmart/mock-web3-provider
Sebastian Martinez committed 3 years ago
commit 906b205e952e38291c9dd9ab0b6f4b0f4c174297
parent c4c0ec21945a4eec72cd20e4b87388c5e264f9df
5 files changed +251 -161
modified cypress/e2e/home.spec.ts
@@ -1,5 +1,5 @@
/// <reference types="cypress" />
-
import { MockExtensionProvider } from "../support/e2e";
+
import { MockProvider } from "@rsksmart/mock-web3-provider";

describe("Landing page", () => {
  it("Loads projects", () => {
@@ -30,10 +30,14 @@ describe("Landing page", () => {
    );
    cy.visit("/", {
      onBeforeLoad(win) {
-
        win.ethereum = new MockExtensionProvider(
-
          "homestead",
-
          "0x3256a804085C24f3451cAb2C98a37e16DEEc5721",
-
        );
+
        const address = "0xB98bD7C7f656290071E52D1aA617D9cB4467Fd6D";
+
        const privateKey =
+
          "de926db3012af759b4f24b5a51ef6afa397f04670f634aa4f48d4480417007f3";
+
        win.ethereum = new MockProvider({
+
          address,
+
          privateKey,
+
          networkVersion: 1,
+
        });
      },
    });
    cy.get(".project .name")
modified cypress/e2e/project.spec.ts
@@ -1,6 +1,6 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
/// <reference types="cypress" />
-
import { MockExtensionProvider } from "../support/e2e";
+
import { MockProvider } from "@rsksmart/mock-web3-provider";

const groupedCommits = [
  {
@@ -112,10 +112,14 @@ describe("Project view", () => {
  it("Page header", () => {
    cy.visit("/seeds/willow.radicle.garden/bright-forest-protocol", {
      onBeforeLoad(win) {
-
        win.ethereum = new MockExtensionProvider(
-
          "homestead",
-
          "0x3256a804085C24f3451cAb2C98a37e16DEEc5721",
-
        );
+
        const address = "0xB98bD7C7f656290071E52D1aA617D9cB4467Fd6D";
+
        const privateKey =
+
          "de926db3012af759b4f24b5a51ef6afa397f04670f634aa4f48d4480417007f3";
+
        win.ethereum = new MockProvider({
+
          address,
+
          privateKey,
+
          networkVersion: 1,
+
        });
      },
    });
    cy.get("div.title").contains("bright-forest-protocol");
modified cypress/support/e2e.ts
@@ -1,9 +1,6 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import "@cypress/code-coverage/support";
-
import { JsonRpcProvider, JsonRpcSigner } from "@ethersproject/providers";
import "@testing-library/cypress/add-commands";
-
import { BigNumber, ethers } from "ethers";
-
import { Resolver } from "@ethersproject/providers";

declare global {
  interface Window {
@@ -11,151 +8,3 @@ declare global {
    localStorage: Storage;
  }
}
-

-
export class MockExtensionProvider extends ethers.providers.BaseProvider {
-
  isMetaMask = true;
-
  currentAddress: string;
-

-
  constructor(network: ethers.providers.Networkish, address: string) {
-
    super(network);
-
    this.currentAddress = address;
-
    console.debug("Creating Mock provider");
-
  }
-

-
  get ready(): Promise<ethers.providers.Network> {
-
    return Promise.resolve(this.network);
-
  }
-

-
  getSigner(addressOrIndex?: string | number): JsonRpcSigner {
-
    return new JsonRpcSigner(
-
      {},
-
      this as unknown as JsonRpcProvider,
-
      addressOrIndex,
-
    );
-
  }
-

-
  async getResolver(name: string): Promise<null | Resolver> {
-
    const address = "0x5E813e48a81977c6Fdd565ed5097eb600C73C4f0";
-
    return new Resolver(this, address, name, address);
-
  }
-

-
  async lookupAddress(
-
    address: string | Promise<string>,
-
  ): Promise<string | null> {
-
    return "mock.eth";
-
  }
-

-
  changeAccount(address: string): void {
-
    this.currentAddress = address;
-
    this.emit("accountsChanged", [address]);
-
  }
-

-
  async request({
-
    method,
-
    params,
-
  }: {
-
    method: string;
-
    params: any;
-
  }): Promise<any> {
-
    switch (method) {
-
      case "eth_chainId":
-
        return this.network.chainId;
-
      case "net_version":
-
        return this.network.chainId;
-
      case "eth_call":
-
        return resolveEthCall(params);
-
      case "eth_accounts":
-
        return [this.currentAddress];
-
      case "eth_requestAccounts":
-
        return [this.currentAddress];
-
      case "eth_getCode":
-
        return "0x";
-
      case "eth_blockNumber":
-
        return BigNumber.from(1);
-
      case "eth_estimateGas":
-
        return BigNumber.from(21000);
-
      case "eth_sendTransaction":
-
        return "0x8829dea7e20ebcf6dbfd942e3613d7ac49b9aef3ecbed396acfc5901713f5983";
-
      case "eth_getTransactionByHash":
-
        return {
-
          hash: "0x8829dea7e20ebcf6dbfd942e3613d7ac49b9aef3ecbed396acfc5901713f5983",
-
          to: "0x0000000000000000000000000000000000000000",
-
          from: "0x0000000000000000000000000000000000000000",
-
          nonce: 123,
-
          gasLimit: BigNumber.from(21000),
-
          gasPrice: BigNumber.from(40),
-
          data: "0x",
-
          value: BigNumber.from(0),
-
          chainId: 4,
-
        };
-
      case "eth_getTransactionCount":
-
        return BigNumber.from(123);
-
      case "eth_getTransactionReceipt":
-
        return {
-
          to: "0x01139F82659A3bD56D1f051D57D4Bc96a3b9Ef05",
-
          from: "0x00192Fb10dF37c9FB26829eb2CC623cd1BF599E8",
-
          contractAddress: null,
-
          transactionIndex: 338,
-
          gasUsed: BigNumber.from("0x5208"),
-
          logsBloom:
-
            "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
-
          blockHash:
-
            "0xdbe7ca0dd26310cd5415202c67467d46795cfec922dbb47e4cc4ff388e7856d2",
-
          transactionHash:
-
            "0x8829dea7e20ebcf6dbfd942e3613d7ac49b9aef3ecbed396acfc5901713f5983",
-
          logs: [],
-
          blockNumber: 14451272,
-
          confirmations: 53,
-
          cumulativeGasUsed: BigNumber.from("0x01b11d57"),
-
          effectiveGasPrice: BigNumber.from("0x0dffd03ca0"),
-
          status: 1,
-
          type: 2,
-
          byzantium: true,
-
        };
-
      default:
-
        console.debug("Unknown method", method);
-
        break;
-
    }
-
  }
-
}
-

-
function resolveEthCall(params: { to: string; data: string }[]): string {
-
  const [{ to, data }] = params;
-

-
  // Get Resolver
-
  if (to === "0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e") {
-
    return "0x0000000000000000000000004976fb03c32e5b8cfe2b6ccb31c09ba78ebaba41";
-
    // Get ENS Attributes
-
  } else if (
-
    to === "0x4976fb03c32e5b8cfe2b6ccb31c09ba78ebaba41" &&
-
    data ===
-
      "0x59d1d43c567c364804de7bbedb53f583e483f6b73513fd2f44299e281024e4719da0b332000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000066176617461720000000000000000000000000000000000000000000000000000"
-
  ) {
-
    return "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001f68747470733a2f2f636c6f7564686561642e696f2f6176617461722e706e6700";
-
    // Get Org informations
-
  } else if (
-
    to === "0x8152237402e0f194176154c3a6ea1eb99b611482" &&
-
    data === "0x8da5cb5b"
-
  ) {
-
    return "0x000000000000000000000000ceab094641905c209cc796fc8037dd9ecc87ca2f";
-
    // Get Token Balance
-
  } else if (
-
    to === "0x31c8eacbffdd875c74b94b077895bd78cf1e64a3" &&
-
    data ===
-
      "0x70a082310000000000000000000000003256a804085c24f3451cab2c98a37e16deec5721"
-
  ) {
-
    return "0x00000000000000000000000000000000000000000000000246DDF97976680000";
-
    // getMaxWithdrawAmount
-
  } else if (
-
    to === "0x9aa75397ed632a3060acb5de7f96e2457bceed8d" &&
-
    data === "0xf516440c"
-
  ) {
-
    return "0x000000000000000000000000000000000000000000000001D7D843DC3B480000";
-
    // Get resolved address from ENS
-
  } else if (to === "0x4976fb03c32e5b8cfe2b6ccb31c09ba78ebaba41") {
-
    return "0x000000000000000000000000394b920c5d39e0ca40fca2871569b6b90d750c7c";
-
    // Return 0 for token balances else
-
  } else {
-
    return "0x0000000000000000000000000000000000000000000000000000000000000000";
-
  }
-
}
modified package-lock.json
@@ -46,6 +46,7 @@
      "devDependencies": {
        "@cypress/code-coverage": "^3.10.0",
        "@cypress/vite-dev-server": "^2.2.2",
+
        "@rsksmart/mock-web3-provider": "^1.0.1",
        "@sveltejs/vite-plugin-svelte": "^1.0.1",
        "@testing-library/cypress": "^8.0.3",
        "@testing-library/svelte": "^3.1.0",
@@ -3154,6 +3155,15 @@
        "node": ">= 8.0.0"
      }
    },
+
    "node_modules/@rsksmart/mock-web3-provider": {
+
      "version": "1.0.1",
+
      "resolved": "https://registry.npmjs.org/@rsksmart/mock-web3-provider/-/mock-web3-provider-1.0.1.tgz",
+
      "integrity": "sha512-29syghh9X2ju80HXtH2O/tXEkUloCORo1lssLx70Trr1fiaxvpH5sxcFBDzjF0XPwwlrj3pqoQc34sL8EiUNYg==",
+
      "dev": true,
+
      "dependencies": {
+
        "eth-sig-util": "^3.0.1"
+
      }
+
    },
    "node_modules/@self.id/core": {
      "version": "0.1.0",
      "resolved": "https://registry.npmjs.org/@self.id/core/-/core-0.1.0.tgz",
@@ -6814,6 +6824,40 @@
        "node": ">=0.10.0"
      }
    },
+
    "node_modules/eth-sig-util": {
+
      "version": "3.0.1",
+
      "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-3.0.1.tgz",
+
      "integrity": "sha512-0Us50HiGGvZgjtWTyAI/+qTzYPMLy5Q451D0Xy68bxq1QMWdoOddDwGvsqcFT27uohKgalM9z/yxplyt+mY2iQ==",
+
      "deprecated": "Deprecated in favor of '@metamask/eth-sig-util'",
+
      "dev": true,
+
      "dependencies": {
+
        "ethereumjs-abi": "^0.6.8",
+
        "ethereumjs-util": "^5.1.1",
+
        "tweetnacl": "^1.0.3",
+
        "tweetnacl-util": "^0.15.0"
+
      }
+
    },
+
    "node_modules/eth-sig-util/node_modules/ethereumjs-util": {
+
      "version": "5.2.1",
+
      "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz",
+
      "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==",
+
      "dev": true,
+
      "dependencies": {
+
        "bn.js": "^4.11.0",
+
        "create-hash": "^1.1.2",
+
        "elliptic": "^6.5.2",
+
        "ethereum-cryptography": "^0.1.3",
+
        "ethjs-util": "^0.1.3",
+
        "rlp": "^2.0.0",
+
        "safe-buffer": "^5.1.1"
+
      }
+
    },
+
    "node_modules/eth-sig-util/node_modules/tweetnacl": {
+
      "version": "1.0.3",
+
      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
+
      "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==",
+
      "dev": true
+
    },
    "node_modules/ethereum-blockies": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/ethereum-blockies/-/ethereum-blockies-0.1.1.tgz",
@@ -6841,6 +6885,40 @@
        "setimmediate": "^1.0.5"
      }
    },
+
    "node_modules/ethereumjs-abi": {
+
      "version": "0.6.8",
+
      "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz",
+
      "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==",
+
      "dev": true,
+
      "dependencies": {
+
        "bn.js": "^4.11.8",
+
        "ethereumjs-util": "^6.0.0"
+
      }
+
    },
+
    "node_modules/ethereumjs-abi/node_modules/@types/bn.js": {
+
      "version": "4.11.6",
+
      "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz",
+
      "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==",
+
      "dev": true,
+
      "dependencies": {
+
        "@types/node": "*"
+
      }
+
    },
+
    "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": {
+
      "version": "6.2.1",
+
      "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz",
+
      "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==",
+
      "dev": true,
+
      "dependencies": {
+
        "@types/bn.js": "^4.11.3",
+
        "bn.js": "^4.11.0",
+
        "create-hash": "^1.1.2",
+
        "elliptic": "^6.5.2",
+
        "ethereum-cryptography": "^0.1.3",
+
        "ethjs-util": "0.1.6",
+
        "rlp": "^2.2.3"
+
      }
+
    },
    "node_modules/ethereumjs-util": {
      "version": "7.1.4",
      "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz",
@@ -6908,6 +6986,20 @@
        "@ethersproject/wordlists": "5.7.0"
      }
    },
+
    "node_modules/ethjs-util": {
+
      "version": "0.1.6",
+
      "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz",
+
      "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==",
+
      "dev": true,
+
      "dependencies": {
+
        "is-hex-prefixed": "1.0.0",
+
        "strip-hex-prefix": "1.0.0"
+
      },
+
      "engines": {
+
        "node": ">=6.5.0",
+
        "npm": ">=3"
+
      }
+
    },
    "node_modules/event-target-shim": {
      "version": "5.0.1",
      "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
@@ -7935,6 +8027,16 @@
        "node": ">=0.10.0"
      }
    },
+
    "node_modules/is-hex-prefixed": {
+
      "version": "1.0.0",
+
      "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz",
+
      "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==",
+
      "dev": true,
+
      "engines": {
+
        "node": ">=6.5.0",
+
        "npm": ">=3"
+
      }
+
    },
    "node_modules/is-installed-globally": {
      "version": "0.4.0",
      "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
@@ -10564,6 +10666,19 @@
        "node": ">=6"
      }
    },
+
    "node_modules/strip-hex-prefix": {
+
      "version": "1.0.0",
+
      "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz",
+
      "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==",
+
      "dev": true,
+
      "dependencies": {
+
        "is-hex-prefixed": "1.0.0"
+
      },
+
      "engines": {
+
        "node": ">=6.5.0",
+
        "npm": ">=3"
+
      }
+
    },
    "node_modules/strip-indent": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
@@ -11130,6 +11245,12 @@
      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
      "dev": true
    },
+
    "node_modules/tweetnacl-util": {
+
      "version": "0.15.1",
+
      "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz",
+
      "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==",
+
      "dev": true
+
    },
    "node_modules/type-check": {
      "version": "0.4.0",
      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -14014,6 +14135,15 @@
        "picomatch": "^2.2.2"
      }
    },
+
    "@rsksmart/mock-web3-provider": {
+
      "version": "1.0.1",
+
      "resolved": "https://registry.npmjs.org/@rsksmart/mock-web3-provider/-/mock-web3-provider-1.0.1.tgz",
+
      "integrity": "sha512-29syghh9X2ju80HXtH2O/tXEkUloCORo1lssLx70Trr1fiaxvpH5sxcFBDzjF0XPwwlrj3pqoQc34sL8EiUNYg==",
+
      "dev": true,
+
      "requires": {
+
        "eth-sig-util": "^3.0.1"
+
      }
+
    },
    "@self.id/core": {
      "version": "0.1.0",
      "resolved": "https://registry.npmjs.org/@self.id/core/-/core-0.1.0.tgz",
@@ -16832,6 +16962,41 @@
      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
      "dev": true
    },
+
    "eth-sig-util": {
+
      "version": "3.0.1",
+
      "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-3.0.1.tgz",
+
      "integrity": "sha512-0Us50HiGGvZgjtWTyAI/+qTzYPMLy5Q451D0Xy68bxq1QMWdoOddDwGvsqcFT27uohKgalM9z/yxplyt+mY2iQ==",
+
      "dev": true,
+
      "requires": {
+
        "ethereumjs-abi": "^0.6.8",
+
        "ethereumjs-util": "^5.1.1",
+
        "tweetnacl": "^1.0.3",
+
        "tweetnacl-util": "^0.15.0"
+
      },
+
      "dependencies": {
+
        "ethereumjs-util": {
+
          "version": "5.2.1",
+
          "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz",
+
          "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==",
+
          "dev": true,
+
          "requires": {
+
            "bn.js": "^4.11.0",
+
            "create-hash": "^1.1.2",
+
            "elliptic": "^6.5.2",
+
            "ethereum-cryptography": "^0.1.3",
+
            "ethjs-util": "^0.1.3",
+
            "rlp": "^2.0.0",
+
            "safe-buffer": "^5.1.1"
+
          }
+
        },
+
        "tweetnacl": {
+
          "version": "1.0.3",
+
          "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
+
          "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==",
+
          "dev": true
+
        }
+
      }
+
    },
    "ethereum-blockies": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/ethereum-blockies/-/ethereum-blockies-0.1.1.tgz",
@@ -16859,6 +17024,42 @@
        "setimmediate": "^1.0.5"
      }
    },
+
    "ethereumjs-abi": {
+
      "version": "0.6.8",
+
      "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz",
+
      "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==",
+
      "dev": true,
+
      "requires": {
+
        "bn.js": "^4.11.8",
+
        "ethereumjs-util": "^6.0.0"
+
      },
+
      "dependencies": {
+
        "@types/bn.js": {
+
          "version": "4.11.6",
+
          "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz",
+
          "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==",
+
          "dev": true,
+
          "requires": {
+
            "@types/node": "*"
+
          }
+
        },
+
        "ethereumjs-util": {
+
          "version": "6.2.1",
+
          "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz",
+
          "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==",
+
          "dev": true,
+
          "requires": {
+
            "@types/bn.js": "^4.11.3",
+
            "bn.js": "^4.11.0",
+
            "create-hash": "^1.1.2",
+
            "elliptic": "^6.5.2",
+
            "ethereum-cryptography": "^0.1.3",
+
            "ethjs-util": "0.1.6",
+
            "rlp": "^2.2.3"
+
          }
+
        }
+
      }
+
    },
    "ethereumjs-util": {
      "version": "7.1.4",
      "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz",
@@ -16915,6 +17116,16 @@
        "@ethersproject/wordlists": "5.7.0"
      }
    },
+
    "ethjs-util": {
+
      "version": "0.1.6",
+
      "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz",
+
      "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==",
+
      "dev": true,
+
      "requires": {
+
        "is-hex-prefixed": "1.0.0",
+
        "strip-hex-prefix": "1.0.0"
+
      }
+
    },
    "event-target-shim": {
      "version": "5.0.1",
      "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
@@ -17675,6 +17886,12 @@
        "is-extglob": "^2.1.1"
      }
    },
+
    "is-hex-prefixed": {
+
      "version": "1.0.0",
+
      "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz",
+
      "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==",
+
      "dev": true
+
    },
    "is-installed-globally": {
      "version": "0.4.0",
      "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
@@ -19687,6 +19904,15 @@
      "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
      "dev": true
    },
+
    "strip-hex-prefix": {
+
      "version": "1.0.0",
+
      "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz",
+
      "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==",
+
      "dev": true,
+
      "requires": {
+
        "is-hex-prefixed": "1.0.0"
+
      }
+
    },
    "strip-indent": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
@@ -20076,6 +20302,12 @@
      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
      "dev": true
    },
+
    "tweetnacl-util": {
+
      "version": "0.15.1",
+
      "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz",
+
      "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==",
+
      "dev": true
+
    },
    "type-check": {
      "version": "0.4.0",
      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
modified package.json
@@ -18,6 +18,7 @@
  "devDependencies": {
    "@cypress/code-coverage": "^3.10.0",
    "@cypress/vite-dev-server": "^2.2.2",
+
    "@rsksmart/mock-web3-provider": "^1.0.1",
    "@sveltejs/vite-plugin-svelte": "^1.0.1",
    "@testing-library/cypress": "^8.0.3",
    "@testing-library/svelte": "^3.1.0",