🚩Mainnet
Introduction
AOS is an AI inference verification and sampling network for the Hetu protocol on EigenLayer. AOS can bring enhanced security to AI networks, while supporting more efficient and clean verification services for AI networks. We are utilizing logical clocks as the core mechanism.
Network Info
The information about the AOS Network and its corresponding settlement layer EigenLayer is as follows:
AVS related address:
Service Manager Address: 0x500C4E641b5d61026f26148Ab9363EB3241C08f3
Registry Address: 0xbB1923B9b05eE12538331fcf4C0aE28CF61a061C
Network:Ethereum
Name: Aos Network
Operator Address: 0xC5871146a0bFA6F8117E5F18FD57Aa284c67CDC7
Malicious Actions:
Offline: The node is not functioning properly and fails to fulfill its duties, such as not participating in network consensus or processing transactions.
Generating Incorrect Inference Results: The results differ from those of the OPML (Operator Performance Monitoring and Logging) inference tasks.
zkverify Not Passed: zkverify is a zero-knowledge proof verification mechanism. If the verification fails, it indicates that there is an issue with the proof submitted by the operator, which may involve data tampering or other malicious actions.
For the first year, we're not going to slash.
Punishment Mechanisms:
Offline Punishment: No slash will be applied for offline periods of up to 1 hour. For extended offline periods, a slash of 0.1 ETH will be applied each time. There is a risk mitigation mechanism in place to prevent honest nodes from being slashed.The specific slash amount can be adjusted based on community consensus.
Sampling Inference Verification Not Passed Punishment: A slash of 0.1 ETH will also be applied. The specific slash amount can be adjusted based on community consensus and the security requirements of the network.
Node online detection mechanism
Aos network has an online service that dynamically checks the running status of each node. The operator node is periodically requested by heartbeat detection. If the operator does not respond to a node's request for a long period of time, there is a risk of slash.
Remote Signing
This project supports Web3Signer as a remote signing server, enabling message signing via HTTP requests. For setup and usage details, please refer to the official documentation: Web3Signer.
Configuration
To use Web3Signer for remote signing, configure the operator
settings in the config.yaml
file as follows:
...
node_id: "0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73"
signer_key: "http://127.0.0.1:9000"
...
Configuration Details
node_id
: The Ethereum address of the Operator. The corresponding private key must be stored on the Web3Signer server for signing operations.signer_key
: The HTTP address of the Web3Signer server. The Operator will send signing requests to this address, and Web3Signer will return the signature.
Execution Steps
1. Start the Web3Signer Server
Configure Web3Signer to store the private key associated with node_id
, and start the server to listen for HTTP requests:
sudo docker run -p 9000:9000
-v keystore.json:/opt/web3signer/keystore.json
-v keystore.txt:/opt/web3signer/keystore.txt
consensys/web3signer:develop
--http-host-allowlist="*"
eth1
--chain-id 1
--keystores-path=/opt/web3signer
--keystores-passwords-path=/opt/web3signer
To verify if Web3Signer is running properly, use:
curl --location 'http://127.0.0.1:9000/healthcheck
If the response is OK
, the service is operational.
2. Start the Operator and Load the Configuration
Ensure config.yaml
is properly set with node_id
and signer_key
, then start the Operator:
./operator-runer -c ./config.yaml
3. Operator Sends Signing Requests, Web3Signer Signs the Data
The Operator sends a signing request to Web3Signer.
Web3Signer uses the stored private key to sign the data and returns the signature.
The Operator proceeds with further processing, such as submitting the message to aos dispatcher.
Example
Sending a Signing Request
Suppose the Operator needs to sign a message, it can send a request to Web3Signer using cURL
:
curl --location 'http://127.0.0.1:9000' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc":"2.0",
"method":"eth_sign",
"params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73", "2eadbe10"],
"id":1
}'
After processing, Web3Signer returns the signed data, which the Operator can then use for message submission.
Specification
EigenLayer PoS Block Time - 5 seconds
Block Gas Limit - 50,000,000
Checkpoint Periods - 30 minutes
Challenge Periods - 3 days
Feedback
We welcome feedback! Join the discussion on our forum or open an issue on GitHub.
Last updated