FAQ
Getting Started & Setup
Troubleshooting Checklist
Set the
L1_RPC
andL2_RPC
environment variables using private, reliable RPC endpoints to avoid any errors.Make sure you are using the latest version of Othentic-cli.
Use
npm update othentic-cli
command ordocker-compose build --no-cache
to directly update inside docker images.Make sure all your containers for operators, attesters, execution service and validation service are up and running.
Make sure Operators have enough funds on L1 and staked tokens on Eigen layer as per the funds requirements mentioned in the Getting Started guide.
Verify that
.env
file contains all required environment variables, and ensure private keys are not prefixed with0x
.Run
othentic-cli network contracts
in the root directory and cross-check all the contract addresses in your.env
file.Verify that attesters, aggregator, and performers are registered as operators with the AVS. Did you run the
othentic-cli operator register
command for each operator?Make sure that attesters in the P2P network have more than 66% of the voting power. You can check the total voting power and individual voting power of the attesters and verify, if necessary, deposit additional funds to help them reach the 66% threshold.
Make sure you are using the correct
taskDefinitionId
and the corresponding task definitions are created.
Roles & Operator Management
Who runs and maintains all three role nodes: Performer, Attester and Aggregator nodes?
In principle, each node can perform any single role or combination of roles. Initially, the AVS developers choose to bootstrap the network with Performers and Aggregators maintained internally, with Attester nodes run by external Operators. Over time, the developer may choose to open up the Performer and Aggregator roles for external Operators as well.
AVS may configure a policy of requirements to be eligible for a specific role; for example, an AVS may choose to grant a Performer role only to nodes with a certain reputation score or ones that staked a certain amount of the AVS native token.
How do I gain exposure to node operators?
Create a simple document for operators with instructions like this. To make your AVS visible on eigen UI, create a JSON file like this:
{
"name": "K3 AVS",
"website": "<https://www.k3-labs.com>",
"description": "K3 Labs allows users to easily design and deploy business workflows and applications that utilize the power of decentralized compute, storage, and execution.",
"logo": "<https://app.k3-labs.com/k3-rec.png>",
"twitter": "<https://twitter.com/k3_labs>"
}
Execute the network register command with above details. Once completed, your AVS will be visible on Eigen Dashboard.
What happens when I unregister an operator? And when should one unregister an operator?
Operators can use the unregister command to remove themselves from the AVS. When this happens, the operator exits the system, which results in a reduction of the total voting power of the AVS by the amount of that individual operator’ voting power.
How can an operator claim rewards?
Refer to the Claim Rewards.
Network & Contract Information
How do I view all the deployed contract addresses, such as AVS Governance and Attestation Center?
Run cat .othentic/state.output.json
in your AVS working directory.
How do I get the voting power of an operator?
You can query the votingPower method in the Attestation Center contract using the operator’s address. Alternatively, you can use the votingPower method in the OBLS contract by querying with the operator ID. The Attestation Center contract is your go-to for details about operators and task definitions.
Voting Power & Consensus
How do I ensure the attesters have 66% of the voting power?
Query the totalVotingPower method on the OBLS contract. Check each attester’s individual voting power and ensure they have 66% of the total voting power.
The tasks are not being submitted. What should I do?
For tasks to be successfully submitted, operators holding at least 66% of the voting power within the AVS must act as attesters. Please ensure that this condition is met.
Administration & Governance
How can I pause/ unpause any flow such as payments?
You can pause or unpause any flow using the cli by running othentic-cli network pause-flow command. It shows the list of all the flows. You can also use the pause and unpause contract functions in the AVS governance contract. You can find the exact byte code of the flows by using the PauserRolesLibrary.
Development & Integration
How can I integrate my custom smart contract or logic with the AttestationCenter contract?
The Othentic Stack enables developers to create an AVSLogic contract, which includes pre and post-execution hooks. For more details, refer to the Hooks.
How to enable debug mode?
To enable debug mode, set DEBUG=*
in your .env file or directly in the terminal before running commands. For example:
DEBUG=* othentic-cli …
Do you have source code published for AVSGovernance or other contracts?
Refer to the core-contracts repository on github.
Common Errors & Troubleshooting
Why am I seeing “Operator inactive, ignoring….”?
Verify the voting power of the operator using the votingPower method on the Attestation center contract. This message usually appears when the operator has zero voting power. To resolve:
Check Internal Tasks: Ensure that internal tasks are running. If not, start them according to the configuration here.
Verify Operator’s Deposit: Confirm that the operator has deposited funds into the Eigen strategy as outlined in the Setup Operator Voting Power Step of the Quickstart guide.
You can verify this by checking the Operator transactions for deposit Into Strategy transactions, similar to this example deposit.
Check Voting Power Sync: If the deposit has been made but voting power is still not reflected, the Voting power sync may not be working. Look for any relevant logs in the Aggregator related to Internal tasks.
Check If Operator is using the correct chain with --l2-chain parameter and the rpc.
Manually Sync Voting Power: If internal tasks are functioning correctly but voting power is still not synced, you may need to manually sync it.
Can not find module ‘nest-commander’
sudo docker compose up
WARN[0000] docker-compose.yml: version is obsolete
[+] Running 2/0
✔️ Container infini-route-attestators-public-avs-webapi-1 Created 0.0s
✔️ Container infini-route-attestators-public-attester-1 Created 0.0s
Attaching to attester-1, avs-webapi-1
attester-1 | node:internal/modules/cjs/loader:1251
attester-1 | throw err;
attester-1 | ^
attester-1 |
attester-1 | Error: Cannot find module 'nest-commander'
attester-1 | Require stack:
attester-1 | - /usr/local/bin/othentic-cli
attester-1 | at Module._resolveFilename (node:internal/modules/cjs/loader:1248:15)
attester-1 | at Module._load (node:internal/modules/cjs/loader:1074:27)
attester-1 | at TracingChannel.traceSync (node:diagnostics_channel:315:14)
attester-1 | at wrapModuleLoad (node:internal/modules/cjs/loader:217:24)
attester-1 | at Module.require (node:internal/modules/cjs/loader:1339:12)
attester-1 | at require (node:internal/modules/helpers:125:16)
attester-1 | at Object.<anonymous> (/usr/local/bin/othentic-cli:57:18)
attester-1 | at webpack_require (/usr/local/bin/othentic-cli:5198:42)
attester-1 | at Object.<anonymous> (/usr/local/bin/othentic-cli:20:26)
attester-1 | at webpack_require (/usr/local/bin/othentic-cli:5198:42) {
attester-1 | code: 'MODULE_NOT_FOUND',
attester-1 | requireStack: [ '/usr/local/bin/othentic-cli' ]
attester-1 | }
attester-1 |
attester-1 | Node.js v22.6.0
avs-webapi-1 | Server started on port: 4002
attester-1 exited with code 1
Please avoid using sudo
when working with the Othentic CLI. Reinstall the CLI without sudo
to ensure proper permissions.
ERR_BUFFER_OUT_OF_BOUNDS(‘length’)
hrow new ERR_BUFFER_OUT_OF_BOUNDS('length');
^
RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: "length" is outside of buffer bounds
at proto.utf8Write (node:internal/buffer:1066:13)
at p8e.zAo [as fn] (/usr/local/lib/node_modules/@othentic/othentic-cli/dist/othentic-cli:645:866549)
at Uq.e [as finish] (/usr/local/lib/node_modules/@othentic/othentic-cli/dist/othentic-cli:645:865725)
at yWo.sendTask (/usr/local/lib/node_modules/@othentic/othentic-cli/dist/othentic-cli:645:1119964)
at yWo.handleRpcRequest (/usr/local/lib/node_modules/@othentic/othentic-cli/dist/othentic-cli:645:1118981)
at /usr/local/lib/node_modules/@othentic/othentic-cli/dist/othentic-cli:645:1118528
at Array.map (<anonymous>)
at /usr/local/lib/node_modules/@othentic/othentic-cli/dist/othentic-cli:645:1118516
at O_e.e [as handle_request] (/usr/local/lib/node_modules/@othentic/othentic-cli/dist/othentic-cli:120:874618)
at f (/usr/local/lib/node_modules/@othentic/othentic-cli/dist/othentic-cli:120:876800) {
code: 'ERR_BUFFER_OUT_OF_BOUNDS'
}
Node.js v22.7.0
Please make sure to use Node v22.6.0⚠️, via NVM
TypeError: invalid value for Contract target (when running nodes)
TypeError: invalid value for Contract target (argument="target", value=null, code=INVALID_ARGUMENT, version=6.8.1)
at l$r (/Users/user/.nvm/versions/node/v22.6.0/lib/node_modules/@othentic/othentic-cli/dist/othentic-cli:644:253521)
at Eye (/Users/user/.nvm/versions/node/v22.6.0/lib/node_modules/@othentic/othentic-cli/dist/othentic-cli:644:253827)
at mno (/Users/user/.nvm/versions/node/v22.6.0/lib/node_modules/@othentic/othentic-cli/dist/othentic-cli:644:253875)
at new e (/Users/user/.nvm/versions/node/v22.6.0/lib/node_modules/@othentic/othentic-cli/dist/othentic-cli:644:513082)
at new kFt (/Users/user/.nvm/versions/node/v22.6.0/lib/node_modules/@othentic/othentic-cli/dist/othentic-cli:644:518004)
at b$o.setObls (/Users/user/.nvm/versions/node/v22.6.0/lib/node_modules/@othentic/othentic-cli/dist/othentic-cli:647:1905)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async b$o.onModuleInit (/Users/user/.nvm/versions/node/v22.6.0/lib/node_modules/@othentic/othentic-cli/dist/othentic-cli:645:1033488)
at async Promise.all (index 0)
at async D6i (/Users/user/.nvm/versions/node/v22.6.0/lib/node_modules/@othentic/othentic-cli/dist/othentic-cli:119:23099) {
code: 'INVALID_ARGUMENT',
argument: 'target',
value: undefined,
shortMessage: 'invalid value for Contract target'
}
Node.js v22.6.0
This indicates you are not passing the proper --l2-chain
flag when running the node.
Operator registration is not working
othentic-cli operator register
Unknown error occurred
ERROR [AvsService] Error: missing revert data (action="estimateGas", data=null, reason=null, transaction={ "data": "0x226...)
The Operator registration function is using cross-chain capabilities. Please make sure that the L1MessageHandler
smart contract holds enough funds, for the cross-chain messaging fees.
Cannot read properties of undefined (reading ‘connect’)
This error indicates one or more of AVS_GOVERNANCE_ADDRESS
or ATTESTATION_CENTER_ADDRESS
is missing from your .env file
Error: could not decode result data (value=“0x”, info={ “method”: “obls”, “signature”: “obls()” }
This error could have several causes:
Your
AttestationCenter
address is incorrectYou are passing the wrong
--l2-chain
flagYou are using an
L2_RPC
in your.env
which is pointing to the wrong chain
Error: network does not support ENS
You’ve either input an address in an incorrect format, or either of AVS_GOVERNANCE_ADDRESS
or ATTESTATION_CENTER_ADDRESS
in your .env file are in an incorrect format.
Last updated