Use Smart Account

Overview

The Othentic Stack supports using Ethereum Smart Accounts as Operators.

EIP-1271 is a standard that enables smart contract wallets to verify signatures, addressing the limitations of traditional signature verification methods designed primarily for Externally Owned Accounts (EOAs).

In this setup:

  • The Controller Key is a smart contract wallet compliant with EIP-1271 - i.e Safe.

  • The Consensus Key is a raw private key.


Register to EigenLayer and AVS

Prerequisites

  1. EIP-1271 compatible Smart Account (e.g Safe)

    1. Private key of one of the allowed signers for the Smart Account

    2. Sufficient gas funds on Ethereum mainnet

  2. AVS Governance contract address you want to register with

  3. A rewards receiver address (can be a smart contract or EOA)

  4. An Ethereum mainnet RPC endpoint

Follow the steps below:

1

Set up Operator registration scripts

Clone the Operator registration scripts repository:

# Clone the repo
git clone https://github.com/Othentic-Labs/operator-registration-script.git
cd othentic-operator-scripts

# Install dependencies
npm install
2

Generate BLS Signature

Use your Consensus Key to generate the required BLS signature that will be used during registration:

ts-node scripts/genAvsRegisterBlsSignature.ts \
<BLS_PRIVATE_KEY> \ # Consensus Key
<AVS_GOVERNANCE_ADDRESS> \ # Contract address
<SMART_WALLET_ADDRESS> \ # Smart account contract address
<RPC> # Ethereum mainnet RPC endpoint

Output will be stored in .othentic/othentic-avs-register-as-operator.json

3

Generate Auth Signature (Optional)

If the AVS is allowlist-enabled, you will also need to generate an AUTH_TOKEN. Run the below script to generate the required token.

ts-node scripts/allowlist/generateSignature.ts \
<PRIVATE_KEY> \ # Smart account signer private key
<WALLET_ADDRESS> \ # Smart account contract address
<AVS_GOVERNANCE_ADDRESS> # Contract address

Output will be stored in .othentic/othentic-allowlist-request-signature.json

4

Generate Transaction Data for Operator Registration

Use the script below to prepare transaction data for the Operator registration transaction:

ts-node scripts/genRegisterAsOperatorTx.ts \
<ECDSA_PRIVATE_KEY> \ # Private key of smart account signer
<JSON_FILE> \ # Path to the JSON file generated in Step 1
<RECEIVER_ADDRESS> \ # Address where Operator rewards will be sent
<AUTH_TOKEN> \ # (Optional) Token for allowlist access generated in Step 2
<RPC> # Ethereum mainnet RPC endpoint

💡 Note:

The ECDSA_PRIVATE_KEY parameter can belong to any one of the Safe owners. This is used only to sign and prepare the transaction payload; the actual execution will still require quorum signatures from the Safe UI.

Output will be stored in .othentic/othentic-evm-transaction-data.json .

5

Navigate to the official Safe UI, connect your signer wallet, access your Safe, then go to Apps -> Transaction Builder.

6

Initiate a transaction with custom data

Paste the raw transaction data from the .othentic/othentic-evm-transaction-data.json file generated in Step 4.

7

Execute transaction with signer quorum

Submit and confirm the transaction using the minimum required Safe owner signatures.


Deposit Stake

1

Connect your Smart Account to Etherscan

Use WalletConnect to connect your Smart Account to Etherscan through the official Safe UI.

2

After submitting the transaction, confirm the transaction using the required Safe owner signatures.

Last updated