Firebase Functions Direct Access

It is possible to call Firebase Functions directly without going through the CLI or the Hardhat plugin. This might be useful in a few use cases where you are trying to automate certain tasks and integrate Ethernal in your workflow.
This page will explain how to use the most common ones. Other functions are accessible but are less relevant. If there is a certain task you would like to automate and need more endpoints that these ones, please reach out by email or on Discord.


You need to add the firebase package to your project. Examples below are for versions lower than 9.
First, you'll need to initialize firebase with Ethernal's configuration. If you are self-hosting, you can replace those values with your own:
apiKey: 'AIzaSyCUefO7sAM0YafO3CVslIf8Tn7eRZbXI3s',
authDomain: '',
databaseURL: '',
projectId: 'ethernal-95a14',
storageBucket: '',
messagingSenderId: '864612390560',
appId: '1:864612390560:web:b339dc0292ff15f7161bc5'
const firebase = require('firebase/app');
// Your Ethernal email/password combination
await firebase.auth().signInWithEmailAndPassword("[email protected]", "password");
From here, every call with be authentified with your credentials.

Synchronize contract metadata

This lets you associate a name & an ABI to a synchronized contract.
await firebase.functions().httpsCallable('syncContractData')({
workspace: workspaceName,
name: contractName,
address: contractAddress,
abi: contractAbi
workspace and address parameters are mandatory, name & abi are optionals

Reset a workspace

This will remove all accounts/blocks/transactions/contracts from the workspace
await firebase.functions().httpsCallable('resetWorkspace')({
workspace: workspaceName

Import a contract

This will add a contract at the specified address in the workspace. This will also trigger a fetch from the scanner (Etherscan, Bscscan, etc...) if applicable.
await firebase.functions().httpsCallable('importContract')({
workspace: workspaceName,
contractAddress: contractAddress