🚩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