Documentation
¶
Overview ¶
Package aivm provides the AI Virtual Machine for the Lux network. AIVM handles AI compute tasks, provider attestation, and reward distribution.
Key features:
- TEE attestation for compute providers (CPU: SGX/SEV-SNP/TDX, GPU: nvtrust)
- Local GPU attestation via nvtrust (no cloud dependency)
- Task submission and assignment
- Mining rewards and merkle anchoring to Q-Chain
Index ¶
- Variables
- func NewService(vm *VM) http.Handler
- type Block
- type Config
- type Factory
- type ProviderReg
- type RegisterProviderRequest
- type Service
- type SubmitResultRequest
- type SubmitTaskRequest
- type VM
- func (vm *VM) ClaimRewards(providerID string) (string, error)
- func (vm *VM) Connected(ctx context.Context, nodeID ids.NodeID, nodeVersion *version.Application) error
- func (vm *VM) CreateHandlers(ctx context.Context) (map[string]http.Handler, error)
- func (vm *VM) Disconnected(ctx context.Context, nodeID ids.NodeID) error
- func (vm *VM) GetMerkleRoot() [32]byte
- func (vm *VM) GetModels() []*aivm.ModelInfo
- func (vm *VM) GetProviders() []*aivm.Provider
- func (vm *VM) GetRewardStats(providerID string) (map[string]interface{}, error)
- func (vm *VM) GetStats() map[string]interface{}
- func (vm *VM) GetTask(taskID string) (*aivm.Task, error)
- func (vm *VM) Initialize(ctx context.Context, chainCtx interface{}, db interface{}, genesisBytes []byte, ...) error
- func (vm *VM) RegisterProvider(provider *aivm.Provider) error
- func (vm *VM) SetState(ctx context.Context, state interface{}) error
- func (vm *VM) Shutdown(ctx context.Context) error
- func (vm *VM) SubmitResult(result *aivm.TaskResult) error
- func (vm *VM) SubmitTask(task *aivm.Task) error
- func (vm *VM) VerifyGPUAttestation(att *attestation.GPUAttestation) (*attestation.DeviceStatus, error)
- type VerifyAttestationRequest
Constants ¶
This section is empty.
Variables ¶
Functions ¶
func NewService ¶ added in v1.16.56
NewService creates a new AIVM service
Types ¶
type Block ¶
type Block struct {
ID ids.ID `json:"id"`
ParentID ids.ID `json:"parentID"`
Height uint64 `json:"height"`
Timestamp time.Time `json:"timestamp"`
// AI-specific data
Tasks []aivm.Task `json:"tasks,omitempty"`
Results []aivm.TaskResult `json:"results,omitempty"`
MerkleRoot [32]byte `json:"merkleRoot"`
ProviderRegs []ProviderReg `json:"providerRegs,omitempty"`
// contains filtered or unexported fields
}
Block represents an AIVM block
type Config ¶ added in v1.16.56
type Config struct {
// Network settings
MaxProvidersPerNode int `serialize:"true" json:"maxProvidersPerNode"`
MaxTasksPerProvider int `serialize:"true" json:"maxTasksPerProvider"`
// Attestation settings
RequireTEEAttestation bool `serialize:"true" json:"requireTEEAttestation"`
MinTrustScore uint8 `serialize:"true" json:"minTrustScore"`
AttestationTimeout string `serialize:"true" json:"attestationTimeout"`
// Task settings
MaxTaskQueueSize int `serialize:"true" json:"maxTaskQueueSize"`
TaskTimeout string `serialize:"true" json:"taskTimeout"`
// Reward settings
BaseReward uint64 `serialize:"true" json:"baseReward"`
EpochDuration string `serialize:"true" json:"epochDuration"`
MerkleAnchorFreq int `serialize:"true" json:"merkleAnchorFreq"` // Blocks between Q-Chain anchors
}
Config contains AIVM configuration
func DefaultConfig ¶ added in v1.16.56
func DefaultConfig() Config
DefaultConfig returns default AIVM configuration
type Factory ¶
type Factory struct{}
Factory implements vms.Factory interface for creating AIVM instances
type ProviderReg ¶ added in v1.16.56
type ProviderReg struct {
ProviderID string `json:"providerId"`
WalletAddress string `json:"walletAddress"`
Endpoint string `json:"endpoint"`
CPUAttestation *attestation.AttestationQuote `json:"cpuAttestation,omitempty"`
GPUAttestation *attestation.GPUAttestation `json:"gpuAttestation,omitempty"`
}
ProviderReg represents a provider registration in a block
type RegisterProviderRequest ¶ added in v1.16.56
type RegisterProviderRequest struct {
ID string `json:"id"`
WalletAddress string `json:"wallet_address"`
Endpoint string `json:"endpoint"`
GPUs []aivm.GPUInfo `json:"gpus"`
GPUAttestation *attestation.GPUAttestation `json:"gpu_attestation,omitempty"`
}
RegisterProviderRequest is the request for registering a provider
type Service ¶ added in v1.16.56
type Service struct {
// contains filtered or unexported fields
}
Service provides AIVM RPC service
type SubmitResultRequest ¶ added in v1.16.56
type SubmitResultRequest struct {
TaskID string `json:"task_id"`
ProviderID string `json:"provider_id"`
Output json.RawMessage `json:"output"`
ComputeTime uint64 `json:"compute_time_ms"`
Proof []byte `json:"proof"`
Error string `json:"error,omitempty"`
}
SubmitResultRequest is the request for submitting a task result
type SubmitTaskRequest ¶ added in v1.16.56
type SubmitTaskRequest struct {
ID string `json:"id"`
Type string `json:"type"`
Model string `json:"model"`
Input json.RawMessage `json:"input"`
Fee uint64 `json:"fee"`
}
SubmitTaskRequest is the request for submitting a task
type VM ¶
type VM struct {
// contains filtered or unexported fields
}
VM implements the AI Virtual Machine
func (*VM) ClaimRewards ¶ added in v1.16.56
ClaimRewards claims pending rewards for a provider
func (*VM) Connected ¶
func (vm *VM) Connected(ctx context.Context, nodeID ids.NodeID, nodeVersion *version.Application) error
Connected notifies the VM about connected nodes
func (*VM) CreateHandlers ¶
CreateHandlers returns HTTP handlers
func (*VM) Disconnected ¶
Disconnected notifies the VM about disconnected nodes
func (*VM) GetMerkleRoot ¶ added in v1.16.56
GetMerkleRoot returns merkle root for Q-Chain anchoring
func (*VM) GetProviders ¶ added in v1.16.56
GetProviders returns all registered providers
func (*VM) GetRewardStats ¶ added in v1.16.56
GetRewardStats returns reward statistics for a provider
func (*VM) Initialize ¶
func (vm *VM) Initialize( ctx context.Context, chainCtx interface{}, db interface{}, genesisBytes []byte, upgradeBytes []byte, configBytes []byte, msgChan interface{}, fxs []interface{}, appSender interface{}, ) error
Initialize initializes the VM
func (*VM) RegisterProvider ¶ added in v1.16.56
RegisterProvider registers a new AI compute provider
func (*VM) SubmitResult ¶ added in v1.16.56
func (vm *VM) SubmitResult(result *aivm.TaskResult) error
SubmitResult submits a task result
func (*VM) SubmitTask ¶ added in v1.16.56
SubmitTask submits a new AI task
func (*VM) VerifyGPUAttestation ¶ added in v1.16.56
func (vm *VM) VerifyGPUAttestation(att *attestation.GPUAttestation) (*attestation.DeviceStatus, error)
VerifyGPUAttestation verifies GPU attestation (local nvtrust - no cloud)
type VerifyAttestationRequest ¶ added in v1.16.56
type VerifyAttestationRequest struct {
GPUAttestation *attestation.GPUAttestation `json:"gpu_attestation"`
}
VerifyAttestationRequest is the request for verifying attestation