avm

package
v1.20.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 29, 2025 License: BSD-3-Clause Imports: 29 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	Version = &version.Semantic{
		Major: 1,
		Minor: 0,
		Patch: 0,
	}
)

Functions

func NewAttestationHandler

func NewAttestationHandler(vm *VM) http.Handler

NewAttestationHandler creates a new attestation handler

func NewOracleHandler

func NewOracleHandler(vm *VM) http.Handler

NewOracleHandler creates a new oracle handler

Types

type Attestation

type Attestation struct {
	ID         ids.ID          `json:"id"`
	Type       AttestationType `json:"type"`
	SourceID   string          `json:"sourceId"` // Oracle ID, TEE ID, etc.
	Data       []byte          `json:"data"`     // The attested data
	Timestamp  int64           `json:"timestamp"`
	Signatures [][]byte        `json:"signatures"` // Threshold signatures
	SignerIDs  []string        `json:"signerIds"`  // IDs of signers
	Proof      []byte          `json:"proof"`      // ZK proof or TEE quote
	Metadata   []byte          `json:"metadata"`   // Additional metadata

	// Aggregated signature support
	AggregatedSignature *aggregated.AggregatedSignature `json:"aggregatedSignature,omitempty"`
}

Attestation represents a signed attestation

func (*Attestation) ComputeID

func (a *Attestation) ComputeID() ids.ID

ComputeID computes the ID of an attestation

type AttestationConfig

type AttestationConfig struct {
	// Threshold signature configuration
	SignatureThreshold int `json:"signatureThreshold"`
	MaxSigners         int `json:"maxSigners"`

	// Oracle configuration
	OracleRegistryEnabled bool `json:"oracleRegistryEnabled"`

	// TEE configuration
	TEEVerificationEnabled bool     `json:"teeVerificationEnabled"`
	TrustedEnclaveKeys     []string `json:"trustedEnclaveKeys"`

	// GPU proof configuration
	GPUProofVerificationEnabled bool `json:"gpuProofVerificationEnabled"`

	// Aggregated signature configuration
	AggregatedSignatureConfig *aggregated.SignatureConfig `json:"aggregatedSignatureConfig,omitempty"`
}

AttestationConfig contains VM configuration

type AttestationDB

type AttestationDB struct {
	// contains filtered or unexported fields
}

AttestationDB manages attestation storage

func NewAttestationDB

func NewAttestationDB(db database.Database, log logging.Logger) (*AttestationDB, error)

NewAttestationDB creates a new attestation database

func (*AttestationDB) AddPendingAttestation

func (adb *AttestationDB) AddPendingAttestation(att *Attestation) error

AddPendingAttestation adds an attestation to the pending pool

func (*AttestationDB) Close

func (adb *AttestationDB) Close()

Close closes the attestation database

func (*AttestationDB) GetAttestation

func (adb *AttestationDB) GetAttestation(attID ids.ID) (*Attestation, error)

GetAttestation retrieves an attestation by ID

func (*AttestationDB) GetAttestationCount

func (adb *AttestationDB) GetAttestationCount() uint64

GetAttestationCount returns the total number of accepted attestations

func (*AttestationDB) GetPendingAttestations

func (adb *AttestationDB) GetPendingAttestations(limit int) ([]*Attestation, error)

GetPendingAttestations returns pending attestations up to limit

func (*AttestationDB) MarkAttestationAccepted

func (adb *AttestationDB) MarkAttestationAccepted(attID ids.ID) error

MarkAttestationAccepted moves an attestation from pending to accepted

type AttestationHandler

type AttestationHandler struct {
	// contains filtered or unexported fields
}

AttestationHandler handles attestation-related HTTP requests

type AttestationListResponse

type AttestationListResponse struct {
	Attestations []*Attestation `json:"attestations"`
	Count        int            `json:"count"`
}

type AttestationRequest

type AttestationRequest struct {
	RequestID    ids.ID          `json:"requestId"`
	Type         AttestationType `json:"type"`
	DataToSign   []byte          `json:"dataToSign"`
	RequiredSigs int             `json:"requiredSigs"`
	Deadline     time.Time       `json:"deadline"`
}

AttestationRequest represents a request for attestation

type AttestationResult

type AttestationResult struct {
	RequestID   ids.ID       `json:"requestId"`
	Attestation *Attestation `json:"attestation"`
	Success     bool         `json:"success"`
	Error       string       `json:"error,omitempty"`
}

AttestationResult represents the result of an attestation

type AttestationSubmitRequest

type AttestationSubmitRequest struct {
	Type       AttestationType `json:"type"`
	SourceID   string          `json:"sourceId"`
	Data       []byte          `json:"data"`
	Signatures [][]byte        `json:"signatures"`
	SignerIDs  []string        `json:"signerIds"`
	Proof      []byte          `json:"proof,omitempty"`
	Metadata   []byte          `json:"metadata,omitempty"`
}

type AttestationSubmitResponse

type AttestationSubmitResponse struct {
	ID      string `json:"id"`
	Success bool   `json:"success"`
	Message string `json:"message"`
}

type AttestationType

type AttestationType uint8

AttestationType represents the type of attestation

const (
	AttestationTypeOracle AttestationType = iota
	AttestationTypeTEE
	AttestationTypeGPU
	AttestationTypeCustom
)

type Block

type Block struct {
	ParentID     ids.ID         `json:"parentId"`
	Height       uint64         `json:"height"`
	Timestamp    int64          `json:"timestamp"`
	Attestations []*Attestation `json:"attestations"`

	// Cached values
	ID_ ids.ID
	// contains filtered or unexported fields
}

Block represents a block in the attestation chain

func (*Block) Accept

func (b *Block) Accept() error

Accept accepts the block

func (*Block) BlockHeight

func (b *Block) BlockHeight() uint64

Height returns the block height

func (*Block) BlockTimestamp

func (b *Block) BlockTimestamp() time.Time

Timestamp returns the block timestamp

func (*Block) Bytes

func (b *Block) Bytes() ([]byte, error)

Bytes returns the block bytes

func (*Block) ID

func (b *Block) ID() ids.ID

ID returns the block ID

func (*Block) Parent

func (b *Block) Parent() ids.ID

Parent returns the parent block ID

func (*Block) Reject

func (b *Block) Reject() error

Reject rejects the block

func (*Block) Status

func (b *Block) Status() choices.Status

Status returns the block status

func (*Block) Verify

func (b *Block) Verify() error

Verify verifies the block

type GPUProofInfo

type GPUProofInfo struct {
	ID           string `json:"id"`
	ComputeType  string `json:"computeType"` // FFT, ML inference, etc.
	ProofSystem  string `json:"proofSystem"` // Groth16, PLONK, etc.
	VerifyingKey []byte `json:"verifyingKey"`
	CircuitHash  []byte `json:"circuitHash"`
}

GPUProofInfo represents GPU computation proof info

type Genesis

type Genesis struct {
	Timestamp           int64          `json:"timestamp"`
	InitialOracles      []*OracleInfo  `json:"initialOracles,omitempty"`
	InitialAttestations []*Attestation `json:"initialAttestations,omitempty"`
}

Genesis represents genesis data

func ParseGenesis

func ParseGenesis(genesisBytes []byte) (*Genesis, error)

ParseGenesis parses genesis bytes

type Health

type Health struct {
	DatabaseHealthy   bool   `json:"databaseHealthy"`
	AttestationCount  uint64 `json:"attestationCount"`
	LastBlockHeight   uint64 `json:"lastBlockHeight"`
	PendingBlockCount int    `json:"pendingBlockCount"`
	RegisteredOracles int    `json:"registeredOracles,omitempty"`
}

Health represents VM health status

type OracleHandler

type OracleHandler struct {
	// contains filtered or unexported fields
}

OracleHandler handles oracle-related HTTP requests

type OracleInfo

type OracleInfo struct {
	ID         string   `json:"id"`
	Name       string   `json:"name"`
	PublicKey  []byte   `json:"publicKey"`
	Endpoint   string   `json:"endpoint"`
	Feeds      []string `json:"feeds"` // Types of data this oracle provides
	Reputation uint64   `json:"reputation"`
	JoinedAt   int64    `json:"joinedAt"`
}

OracleInfo represents oracle information

type OracleListResponse

type OracleListResponse struct {
	Oracles []*OracleInfo `json:"oracles"`
	Count   int           `json:"count"`
}

type OracleRegisterResponse

type OracleRegisterResponse struct {
	Success bool   `json:"success"`
	Message string `json:"message"`
	ID      string `json:"id"`
}

type OracleRegistry

type OracleRegistry struct {
	// contains filtered or unexported fields
}

OracleRegistry manages registered oracles

func NewOracleRegistry

func NewOracleRegistry(db database.Database, log logging.Logger) (*OracleRegistry, error)

NewOracleRegistry creates a new oracle registry

func (*OracleRegistry) Close

func (or *OracleRegistry) Close()

Close closes the oracle registry

func (*OracleRegistry) GetAllOracles

func (or *OracleRegistry) GetAllOracles() []*OracleInfo

GetAllOracles returns all registered oracles

func (*OracleRegistry) GetOracle

func (or *OracleRegistry) GetOracle(oracleID string) (*OracleInfo, error)

GetOracle retrieves an oracle by ID

func (*OracleRegistry) GetOracleCount

func (or *OracleRegistry) GetOracleCount() int

GetOracleCount returns the total number of registered oracles

func (*OracleRegistry) GetOraclesByFeed

func (or *OracleRegistry) GetOraclesByFeed(feedType string) ([]*OracleInfo, error)

GetOraclesByFeed returns oracles that provide a specific feed type

func (*OracleRegistry) RegisterOracle

func (or *OracleRegistry) RegisterOracle(oracle *OracleInfo) error

RegisterOracle registers a new oracle

func (*OracleRegistry) RemoveOracle

func (or *OracleRegistry) RemoveOracle(oracleID string) error

RemoveOracle removes an oracle from the registry

func (*OracleRegistry) UpdateOracleReputation

func (or *OracleRegistry) UpdateOracleReputation(oracleID string, delta int64) error

UpdateOracleReputation updates an oracle's reputation score

type SignatureVerifier

type SignatureVerifier struct {
	// contains filtered or unexported fields
}

SignatureVerifier verifies threshold signatures

func NewSignatureVerifier

func NewSignatureVerifier(threshold int, log logging.Logger) *SignatureVerifier

NewSignatureVerifier creates a new signature verifier

func (*SignatureVerifier) VerifyBLSAggregateSignature

func (sv *SignatureVerifier) VerifyBLSAggregateSignature(
	message []byte,
	aggregateSignature []byte,
	publicKeys [][]byte,
) error

VerifyBLSAggregateSignature verifies BLS aggregate signatures

func (*SignatureVerifier) VerifyTEESignature

func (sv *SignatureVerifier) VerifyTEESignature(
	quote []byte,
	signature []byte,
	trustedKeys []string,
) error

VerifyTEESignature verifies TEE attestation signatures

func (*SignatureVerifier) VerifyThresholdSignature

func (sv *SignatureVerifier) VerifyThresholdSignature(
	message []byte,
	signatures [][]byte,
	signerIDs []string,
) error

VerifyThresholdSignature verifies threshold ECDSA signatures (CGGMP21 style)

type TEEInfo

type TEEInfo struct {
	ID              string `json:"id"`
	EnclaveID       string `json:"enclaveId"`
	MeasurementHash []byte `json:"measurementHash"`
	PublicKey       []byte `json:"publicKey"`
	Platform        string `json:"platform"` // SGX, TrustZone, etc.
	Version         string `json:"version"`
}

TEEInfo represents TEE information

type VM

type VM struct {
	// contains filtered or unexported fields
}

VM implements the Attestation Chain VM

func (*VM) AppGossip

func (vm *VM) AppGossip(ctx context.Context, nodeID ids.NodeID, msg []byte) error

func (*VM) AppRequest

func (vm *VM) AppRequest(ctx context.Context, nodeID ids.NodeID, requestID uint32, deadline time.Time, request []byte) error

func (*VM) AppRequestFailed

func (vm *VM) AppRequestFailed(ctx context.Context, nodeID ids.NodeID, requestID uint32) error

func (*VM) AppResponse

func (vm *VM) AppResponse(ctx context.Context, nodeID ids.NodeID, requestID uint32, response []byte) error

func (*VM) BuildBlock

func (vm *VM) BuildBlock(ctx context.Context) (snowman.Block, error)

BuildBlock builds a new block

func (*VM) Connected

func (vm *VM) Connected(ctx context.Context, nodeID ids.NodeID, nodeVersion *version.Application) error

func (*VM) CreateHandlers

func (vm *VM) CreateHandlers(context.Context) (map[string]http.Handler, error)

CreateHandlers returns the VM handlers

func (*VM) CrossChainAppRequest

func (vm *VM) CrossChainAppRequest(ctx context.Context, chainID ids.ID, requestID uint32, deadline time.Time, request []byte) error

func (*VM) CrossChainAppRequestFailed

func (vm *VM) CrossChainAppRequestFailed(ctx context.Context, chainID ids.ID, requestID uint32) error

func (*VM) CrossChainAppResponse

func (vm *VM) CrossChainAppResponse(ctx context.Context, chainID ids.ID, requestID uint32, response []byte) error

func (*VM) Disconnected

func (vm *VM) Disconnected(ctx context.Context, nodeID ids.NodeID) error

func (*VM) GetBlock

func (vm *VM) GetBlock(ctx context.Context, blkID ids.ID) (snowman.Block, error)

GetBlock retrieves a block by ID

func (*VM) HealthCheck

func (vm *VM) HealthCheck(ctx context.Context) (interface{}, error)

HealthCheck performs a health check

func (*VM) Initialize

func (vm *VM) Initialize(
	ctx context.Context,
	chainCtx *snow.Context,
	db database.Database,
	genesisBytes []byte,
	upgradeBytes []byte,
	configBytes []byte,
	toEngine chan<- common.Message,
	fxs []*vms.Fx,
	appSender common.AppSender,
) error

Initialize initializes the VM

func (*VM) LastAccepted

func (vm *VM) LastAccepted(ctx context.Context) (ids.ID, error)

func (*VM) ParseBlock

func (vm *VM) ParseBlock(ctx context.Context, blockBytes []byte) (snowman.Block, error)

ParseBlock parses a block from bytes

func (*VM) SetPreference

func (vm *VM) SetPreference(ctx context.Context, blkID ids.ID) error

Additional interface implementations

func (*VM) SetState

func (vm *VM) SetState(ctx context.Context, state snow.State) error

SetState sets the VM state

func (*VM) Shutdown

func (vm *VM) Shutdown(ctx context.Context) error

Shutdown shuts down the VM

func (*VM) SubmitAttestation

func (vm *VM) SubmitAttestation(att *Attestation) error

SubmitAttestation submits a new attestation

func (*VM) Version

func (vm *VM) Version(ctx context.Context) (string, error)

Version returns the VM version

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL