Documentation
¶
Overview ¶
Package artifacts defines canonical artifact types for cross-chain settlement per the v1.1 Unified Quantum-Safe PoS Ecosystem specification.
Each chain emits exactly one artifact type that X-Chain accepts:
- C → CReceipt
- D → DSettlementReceipt
- O → OracleAttestation
- R → VerifiedMessage
- I → CredentialProof
- T → Cert (OracleCert, RelayCert, DACert)
- Z → ZKProofCommitment
Index ¶
- Variables
- type Artifact
- type CReceipt
- type CredentialProof
- type DACert
- type DSettlementReceipt
- func (r *DSettlementReceipt) ArtifactID() ids.ID
- func (r *DSettlementReceipt) Bytes() []byte
- func (r *DSettlementReceipt) DomainID() ids.ID
- func (r *DSettlementReceipt) Expiry() time.Time
- func (r *DSettlementReceipt) SchemaVersion() uint32
- func (r *DSettlementReceipt) SignatureSuite() SignatureSuite
- type EscrowRef
- type FeePayment
- type MessageStatus
- type OracleAttestation
- type OracleCert
- type RelayCert
- type SignatureSuite
- type TradeNetting
- type VerificationMode
- type VerifiedMessage
- type Withdrawal
- type ZKProofCommitment
Constants ¶
This section is empty.
Variables ¶
var ( DomainSepCReceipt = []byte("LUX:CReceipt:v1") DomainSepDSettlementReceipt = []byte("LUX:DSettlementReceipt:v1") DomainSepOracleAttestation = []byte("LUX:OracleAttestation:v1") DomainSepVerifiedMessage = []byte("LUX:VerifiedMessage:v1") DomainSepCredentialProof = []byte("LUX:CredentialProof:v1") DomainSepOracleCert = []byte("LUX:OracleCert:v1") DomainSepRelayCert = []byte("LUX:RelayCert:v1") DomainSepDACert = []byte("LUX:DACert:v1") DomainSepZKProof = []byte("LUX:ZKProofCommitment:v1") )
Functions ¶
This section is empty.
Types ¶
type Artifact ¶
type Artifact interface {
// ArtifactID returns the unique identifier for this artifact
ArtifactID() ids.ID
// DomainID returns the source domain/chain identifier
DomainID() ids.ID
// SchemaVersion returns the artifact schema version
SchemaVersion() uint32
// SignatureSuite returns the cryptographic suite used
SignatureSuite() SignatureSuite
// Expiry returns when this artifact expires
Expiry() time.Time
// Bytes returns the serialized artifact
Bytes() []byte
}
Artifact is the base interface for all cross-chain artifacts
type CReceipt ¶
type CReceipt struct {
// Header
Version_ uint32 `json:"version"`
SigSuite_ SignatureSuite `json:"sigSuite"`
DomainID_ ids.ID `json:"domainId"`
Height uint64 `json:"height"`
Timestamp_ time.Time `json:"timestamp"`
ExpiryTime time.Time `json:"expiry"`
// State commitments
CStateRoot [32]byte `json:"cStateRoot"`
DARoot [32]byte `json:"daRoot"`
WitnessRoot [32]byte `json:"witnessRoot"`
MessagesRoot [32]byte `json:"messagesOutRoot"`
// Settlement data
Withdrawals []Withdrawal `json:"withdrawals"`
Fees []FeePayment `json:"fees"`
// Proofs
FinalityProof []byte `json:"finalityProof"`
InclusionProof []byte `json:"inclusionProof"`
// contains filtered or unexported fields
}
CReceipt is the canonical artifact emitted by C-Chain for X-Chain settlement
func (*CReceipt) ArtifactID ¶
func (*CReceipt) SchemaVersion ¶
func (*CReceipt) SignatureSuite ¶
func (r *CReceipt) SignatureSuite() SignatureSuite
type CredentialProof ¶
type CredentialProof struct {
// Header
Version_ uint32 `json:"version"`
SigSuite_ SignatureSuite `json:"sigSuite"`
DomainID_ ids.ID `json:"domainId"`
// Credential identification
CredentialID ids.ID `json:"credentialId"`
IssuerDID string `json:"issuerDid"`
SubjectDID string `json:"subjectDid"`
CredType string `json:"credentialType"`
// Claims (can be plain or selectively disclosed via ZK)
Claims map[string][]byte `json:"claims,omitempty"`
ClaimsCommitment [32]byte `json:"claimsCommitment,omitempty"`
SelectiveProof []byte `json:"selectiveProof,omitempty"`
// Trust policy
IssuerTrustPolicy [32]byte `json:"issuerTrustPolicy"`
// Freshness
IssuedAt time.Time `json:"issuedAt"`
ExpiresAt time.Time `json:"expiresAt"`
// Non-revocation proof
RevocationProof []byte `json:"revocationProof,omitempty"`
RevocationEpoch uint64 `json:"revocationEpoch"`
// Subject binding (key ownership proof)
SubjectBinding []byte `json:"subjectBinding"`
// contains filtered or unexported fields
}
CredentialProof is the canonical artifact for identity credentials
func (*CredentialProof) ArtifactID ¶
func (c *CredentialProof) ArtifactID() ids.ID
func (*CredentialProof) Bytes ¶
func (c *CredentialProof) Bytes() []byte
func (*CredentialProof) DomainID ¶
func (c *CredentialProof) DomainID() ids.ID
func (*CredentialProof) Expiry ¶
func (c *CredentialProof) Expiry() time.Time
func (*CredentialProof) SchemaVersion ¶
func (c *CredentialProof) SchemaVersion() uint32
func (*CredentialProof) SignatureSuite ¶
func (c *CredentialProof) SignatureSuite() SignatureSuite
type DACert ¶
type DACert struct {
Version_ uint32 `json:"version"`
SigSuite_ SignatureSuite `json:"sigSuite"`
DomainID_ ids.ID `json:"domainId"`
ChainID ids.ID `json:"chainId"`
Height uint64 `json:"height"`
DARoot [32]byte `json:"daRoot"`
// Sampling evidence
SampleCount uint32 `json:"sampleCount"`
Samplers []ids.NodeID `json:"samplers"`
Signatures [][]byte `json:"signatures"`
Threshold uint32 `json:"threshold"`
Timestamp time.Time `json:"timestamp"`
ExpiresAt time.Time `json:"expiresAt"`
// contains filtered or unexported fields
}
DACert aggregates DA sampling evidence
func (*DACert) ArtifactID ¶
func (*DACert) SchemaVersion ¶
func (*DACert) SignatureSuite ¶
func (c *DACert) SignatureSuite() SignatureSuite
type DSettlementReceipt ¶
type DSettlementReceipt struct {
// Header
Version_ uint32 `json:"version"`
SigSuite_ SignatureSuite `json:"sigSuite"`
DomainID_ ids.ID `json:"domainId"`
Height uint64 `json:"height"`
Timestamp_ time.Time `json:"timestamp"`
ExpiryTime time.Time `json:"expiry"`
// Escrow inputs (X-Chain UTXO refs)
EscrowInputs []EscrowRef `json:"escrowInputs"`
// Trade settlements
TradeNettings []TradeNetting `json:"tradeNettings"`
// Fees
Fees []FeePayment `json:"fees"`
// Risk checks
RiskPolicyHash [32]byte `json:"riskPolicyHash"`
// Proofs
FinalityProof []byte `json:"finalityProof"`
InclusionProof []byte `json:"inclusionProof"`
// contains filtered or unexported fields
}
DSettlementReceipt is the canonical artifact for D-Chain escrow settlement
func (*DSettlementReceipt) ArtifactID ¶
func (r *DSettlementReceipt) ArtifactID() ids.ID
func (*DSettlementReceipt) Bytes ¶
func (r *DSettlementReceipt) Bytes() []byte
func (*DSettlementReceipt) DomainID ¶
func (r *DSettlementReceipt) DomainID() ids.ID
func (*DSettlementReceipt) Expiry ¶
func (r *DSettlementReceipt) Expiry() time.Time
func (*DSettlementReceipt) SchemaVersion ¶
func (r *DSettlementReceipt) SchemaVersion() uint32
func (*DSettlementReceipt) SignatureSuite ¶
func (r *DSettlementReceipt) SignatureSuite() SignatureSuite
type EscrowRef ¶
type EscrowRef struct {
TxID ids.ID `json:"txId"`
OutputIndex uint32 `json:"outputIndex"`
Amount uint64 `json:"amount"`
AssetID ids.ID `json:"assetId"`
}
EscrowRef references an escrow UTXO on X-Chain
type FeePayment ¶
type FeePayment struct {
Recipient []byte `json:"recipient"`
Amount uint64 `json:"amount"`
FeeType string `json:"feeType"` // "base", "priority", "blob"
}
FeePayment represents a fee payment to be settled on X
type MessageStatus ¶
type MessageStatus uint8
MessageStatus represents the delivery status
const ( MessagePending MessageStatus = iota MessageDelivered MessageAcked MessageTimeout MessageFailed )
type OracleAttestation ¶
type OracleAttestation struct {
// Header
Version_ uint32 `json:"version"`
SigSuite_ SignatureSuite `json:"sigSuite"`
DomainID_ ids.ID `json:"domainId"`
// Feed identification
FeedID ids.ID `json:"feedId"`
Epoch uint64 `json:"epoch"`
// Value (can be plain or committed)
Value []byte `json:"value,omitempty"`
ValueCommitment [32]byte `json:"valueCommitment,omitempty"`
// Aggregation proof (optional ZK proof of correct aggregation)
AggProof []byte `json:"aggProof,omitempty"`
// Quorum certificate (optional, for attested mode)
QuorumCert []byte `json:"quorumCert,omitempty"`
// Validity window
ValidFrom time.Time `json:"validFrom"`
ValidTo time.Time `json:"validTo"`
// Policy
PolicyHash [32]byte `json:"policyHash"`
// contains filtered or unexported fields
}
OracleAttestation is the canonical artifact for oracle data feeds
func (*OracleAttestation) ArtifactID ¶
func (a *OracleAttestation) ArtifactID() ids.ID
func (*OracleAttestation) Bytes ¶
func (a *OracleAttestation) Bytes() []byte
func (*OracleAttestation) DomainID ¶
func (a *OracleAttestation) DomainID() ids.ID
func (*OracleAttestation) Expiry ¶
func (a *OracleAttestation) Expiry() time.Time
func (*OracleAttestation) SchemaVersion ¶
func (a *OracleAttestation) SchemaVersion() uint32
func (*OracleAttestation) SignatureSuite ¶
func (a *OracleAttestation) SignatureSuite() SignatureSuite
type OracleCert ¶
type OracleCert struct {
Version_ uint32 `json:"version"`
SigSuite_ SignatureSuite `json:"sigSuite"`
DomainID_ ids.ID `json:"domainId"`
FeedID ids.ID `json:"feedId"`
Epoch uint64 `json:"epoch"`
AttestationHash [32]byte `json:"attestationHash"`
// Quorum signatures
Signers []ids.NodeID `json:"signers"`
Signatures [][]byte `json:"signatures"`
Threshold uint32 `json:"threshold"`
Timestamp time.Time `json:"timestamp"`
ExpiresAt time.Time `json:"expiresAt"`
// contains filtered or unexported fields
}
OracleCert attests that a quorum signed an oracle attestation
func (*OracleCert) ArtifactID ¶
func (c *OracleCert) ArtifactID() ids.ID
func (*OracleCert) Bytes ¶
func (c *OracleCert) Bytes() []byte
func (*OracleCert) DomainID ¶
func (c *OracleCert) DomainID() ids.ID
func (*OracleCert) Expiry ¶
func (c *OracleCert) Expiry() time.Time
func (*OracleCert) SchemaVersion ¶
func (c *OracleCert) SchemaVersion() uint32
func (*OracleCert) SignatureSuite ¶
func (c *OracleCert) SignatureSuite() SignatureSuite
type RelayCert ¶
type RelayCert struct {
Version_ uint32 `json:"version"`
SigSuite_ SignatureSuite `json:"sigSuite"`
DomainID_ ids.ID `json:"domainId"`
SrcDomain ids.ID `json:"srcDomain"`
MsgBatchHash [32]byte `json:"msgBatchHash"`
// Quorum signatures
Signers []ids.NodeID `json:"signers"`
Signatures [][]byte `json:"signatures"`
Threshold uint32 `json:"threshold"`
// Risk bounds (for attested mode)
ValueCap uint64 `json:"valueCap"`
MinDelay uint64 `json:"minDelay"`
EmergencyHalt bool `json:"emergencyHalt"`
Timestamp time.Time `json:"timestamp"`
ExpiresAt time.Time `json:"expiresAt"`
// contains filtered or unexported fields
}
RelayCert attests that a quorum verified a message batch
func (*RelayCert) ArtifactID ¶
func (*RelayCert) SchemaVersion ¶
func (*RelayCert) SignatureSuite ¶
func (c *RelayCert) SignatureSuite() SignatureSuite
type SignatureSuite ¶
type SignatureSuite uint8
SignatureSuite defines the cryptographic suite used
const ( // SuitePQOnly uses post-quantum signatures only SuitePQOnly SignatureSuite = iota // SuiteHybrid uses hybrid PQ+classical signatures SuiteHybrid // SuiteClassic uses classical signatures (legacy) SuiteClassic )
type TradeNetting ¶
type TradeNetting struct {
Maker []byte `json:"maker"`
Taker []byte `json:"taker"`
MakerDelta int64 `json:"makerDelta"` // Positive = receive, negative = send
TakerDelta int64 `json:"takerDelta"`
AssetID ids.ID `json:"assetId"`
TradeID ids.ID `json:"tradeId"`
}
TradeNetting represents netted trade outcomes
type VerificationMode ¶
type VerificationMode uint8
VerificationMode defines how an artifact is verified
const ( // LCMode uses light-client verified headers + inclusion proofs (preferred) LCMode VerificationMode = iota // ValidityMode uses ZK validity proofs ValidityMode // AttestedMode uses threshold certificate (compatibility fallback) AttestedMode )
type VerifiedMessage ¶
type VerifiedMessage struct {
// Header
Version_ uint32 `json:"version"`
SigSuite_ SignatureSuite `json:"sigSuite"`
// Message envelope
SrcDomain ids.ID `json:"srcDomain"`
DstDomain ids.ID `json:"dstDomain"`
Nonce uint64 `json:"nonce"`
PayloadType string `json:"payloadType"`
Payload []byte `json:"payload"`
Fee uint64 `json:"fee"`
Timeout uint64 `json:"timeout"` // Block height
// Verification mode
Mode VerificationMode `json:"mode"`
// Proofs (based on mode)
SrcFinalityProof []byte `json:"srcFinalityProof,omitempty"`
SrcInclusionProof []byte `json:"srcInclusionProof,omitempty"`
ValidityProof []byte `json:"validityProof,omitempty"`
RelayCert []byte `json:"relayCert,omitempty"`
// Status
Status MessageStatus `json:"status"`
Timestamp time.Time `json:"timestamp"`
// contains filtered or unexported fields
}
VerifiedMessage is the canonical artifact for cross-chain messages
func (*VerifiedMessage) ArtifactID ¶
func (m *VerifiedMessage) ArtifactID() ids.ID
func (*VerifiedMessage) Bytes ¶
func (m *VerifiedMessage) Bytes() []byte
func (*VerifiedMessage) DomainID ¶
func (m *VerifiedMessage) DomainID() ids.ID
func (*VerifiedMessage) Expiry ¶
func (m *VerifiedMessage) Expiry() time.Time
func (*VerifiedMessage) SchemaVersion ¶
func (m *VerifiedMessage) SchemaVersion() uint32
func (*VerifiedMessage) SignatureSuite ¶
func (m *VerifiedMessage) SignatureSuite() SignatureSuite
type Withdrawal ¶
type Withdrawal struct {
AssetID ids.ID `json:"assetId"`
Amount uint64 `json:"amount"`
Recipient []byte `json:"recipient"` // X-Chain address
Nonce uint64 `json:"nonce"`
}
Withdrawal represents an asset withdrawal from C to X
type ZKProofCommitment ¶
type ZKProofCommitment struct {
Version_ uint32 `json:"version"`
SigSuite_ SignatureSuite `json:"sigSuite"`
DomainID_ ids.ID `json:"domainId"`
// Proof identification
ProofID ids.ID `json:"proofId"`
ProofType string `json:"proofType"` // groth16, plonk, stark, bulletproof
// Commitments
ProofCommitment [32]byte `json:"proofCommitment"`
PublicInputsHash [32]byte `json:"publicInputsHash"`
VerifyingKeyHash [32]byte `json:"verifyingKeyHash"`
// The actual proof (can be large)
ProofData []byte `json:"proofData"`
PublicInputs [][]byte `json:"publicInputs"`
// Verification status
Verified bool `json:"verified"`
VerifiedAt time.Time `json:"verifiedAt,omitempty"`
VerifiedBy ids.ID `json:"verifiedBy,omitempty"`
Timestamp time.Time `json:"timestamp"`
ExpiresAt time.Time `json:"expiresAt"`
// contains filtered or unexported fields
}
ZKProofCommitment is the canonical artifact for ZK proofs
func (*ZKProofCommitment) ArtifactID ¶
func (z *ZKProofCommitment) ArtifactID() ids.ID
func (*ZKProofCommitment) Bytes ¶
func (z *ZKProofCommitment) Bytes() []byte
func (*ZKProofCommitment) DomainID ¶
func (z *ZKProofCommitment) DomainID() ids.ID
func (*ZKProofCommitment) Expiry ¶
func (z *ZKProofCommitment) Expiry() time.Time
func (*ZKProofCommitment) SchemaVersion ¶
func (z *ZKProofCommitment) SchemaVersion() uint32
func (*ZKProofCommitment) SignatureSuite ¶
func (z *ZKProofCommitment) SignatureSuite() SignatureSuite