mirror of
https://github.com/luxfi/chains.git
synced 2026-09-24 00:26:00 +00:00
build the VMs without the daemon in their closure
A plugin is its own binary; the daemon that loads it has no business being linked into it. Twelve VMs reached into github.com/luxfi/node for four things, and each one now programs against a home that is actually its own: - fee admission (Policy, FlatPolicy, NoUserTxPolicy, Validate) joins the settlement half already in chains/fee. One fee package, and the nodefee alias that marked the split is gone. - the cross-chain artifact types move to chains/artifacts. - the factory the daemon registers is luxfi/vm/manager.Factory, and the version types are luxfi/version. Both are ordinary modules the daemon reads too, so a VM imports them directly rather than through anything of ours. The GPU switch is deleted, not moved. It was a global set during daemon startup that a separate process could never observe, so every plugin read its default; FHEOptions.Backend is the switch that was really there. go list -deps names no luxfi/node for aivm, bridgevm, dexvm, evm, fhevm, graphvm, identityvm, keyvm, mpcvm, quantumvm, schain or zkvm, and the built plugin binaries carry no such string. oraclevm and relayvm still do: they are re-export shims over luxfi/oracle and luxfi/relay, which build their fee policies upstream. Their tests keep naming the daemon's fee package because that is the type their value has.
This commit is contained in:
@@ -260,6 +260,35 @@ the discipline in their own code and are the shape it was generalised from;
|
||||
schain and quantumvm are partway. graphvm is NOT on it and does not need to be —
|
||||
it writes nothing at all, so there is no partial state to have.
|
||||
|
||||
## What a plugin programs against
|
||||
|
||||
A VM here ships as its own binary. The daemon that loads it is not in its
|
||||
dependency closure and must not be: `go list -deps ./<vm>/...` names no
|
||||
`github.com/luxfi/node`. The four surfaces a VM used to reach into the daemon
|
||||
for now have their own homes:
|
||||
|
||||
| what the VM needs | where it lives |
|
||||
| --- | --- |
|
||||
| fee admission (`Policy`, `FlatPolicy`, `NoUserTxPolicy`, `Validate`) | `github.com/luxfi/chains/fee` — beside settlement, one fee package |
|
||||
| cross-chain artifacts (`CredentialProof`, the `Artifact` interface, suites) | `github.com/luxfi/chains/artifacts` |
|
||||
| the factory the daemon registers | `github.com/luxfi/vm/manager.Factory` |
|
||||
| protocol + semantic version | `github.com/luxfi/version` |
|
||||
|
||||
Two of those are ordinary modules the daemon also reads, so there is no shim
|
||||
between a VM and them — importing the module directly is the whole mechanism.
|
||||
|
||||
The GPU switch is gone rather than moved. It was a process-global set during
|
||||
daemon startup; a plugin is a different process and could never observe it, so
|
||||
it always read its default. `FHEOptions.Backend` is now the only switch, which
|
||||
is what a plugin actually had.
|
||||
|
||||
O-Chain and R-Chain are the exception, and the reason is upstream: `oraclevm`
|
||||
and `relayvm` are re-export shims over `luxfi/oracle` and `luxfi/relay`, whose
|
||||
own `/vm` packages still build fee policies and artifacts from the daemon. They
|
||||
reach a clean closure when those two repos make this same cut; nothing here can
|
||||
move them, and their fee tests name the daemon's fee package because that is the
|
||||
type their value actually has.
|
||||
|
||||
## Sibling repos
|
||||
|
||||
See the org-level `LLM.md` at `/Users/a/work/lux/luxfi/LLM.md` for the full inventory of sibling repos and inter-repo dependencies.
|
||||
|
||||
+3
-3
@@ -7,15 +7,15 @@ import (
|
||||
"github.com/luxfi/accel"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/vms"
|
||||
"github.com/luxfi/vm/manager"
|
||||
)
|
||||
|
||||
var _ vms.Factory = (*Factory)(nil)
|
||||
var _ manager.Factory = (*Factory)(nil)
|
||||
|
||||
// VMID is the unique identifier for AIVM (A-Chain)
|
||||
var VMID = ids.ID{'a', 'i', 'v', 'm'}
|
||||
|
||||
// Factory implements vms.Factory interface for creating AIVM instances
|
||||
// Factory implements manager.Factory interface for creating AIVM instances
|
||||
type Factory struct{}
|
||||
|
||||
// New creates a new AIVM instance.
|
||||
|
||||
+1
-1
@@ -7,8 +7,8 @@ import (
|
||||
"fmt"
|
||||
|
||||
"github.com/luxfi/ai/pkg/aivm"
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/constants"
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
)
|
||||
|
||||
// newFeePolicy returns the canonical A-Chain FeePolicy. A-Chain accepts
|
||||
|
||||
@@ -9,10 +9,10 @@ import (
|
||||
"testing"
|
||||
|
||||
luxai "github.com/luxfi/ai/pkg/aivm"
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/database/memdb"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/runtime"
|
||||
vmcore "github.com/luxfi/vm"
|
||||
)
|
||||
|
||||
+2
-2
@@ -59,9 +59,9 @@ import (
|
||||
vmcore "github.com/luxfi/vm"
|
||||
"github.com/luxfi/vm/chain"
|
||||
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/consensus/engine/dag/vertex"
|
||||
"github.com/luxfi/node/version"
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/version"
|
||||
|
||||
"github.com/luxfi/ai/pkg/aivm"
|
||||
"github.com/luxfi/ai/pkg/attestation"
|
||||
|
||||
@@ -0,0 +1,581 @@
|
||||
// Copyright (c) 2019-2026 Lux Industries Inc.
|
||||
// SPDX-License-Identifier: BSD-3-Clause-Eco
|
||||
|
||||
// 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
|
||||
package artifacts
|
||||
|
||||
import (
|
||||
"crypto/sha256"
|
||||
"encoding/binary"
|
||||
"time"
|
||||
|
||||
"github.com/luxfi/ids"
|
||||
)
|
||||
|
||||
// VerificationMode defines how an artifact is verified
|
||||
type VerificationMode uint8
|
||||
|
||||
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
|
||||
)
|
||||
|
||||
// SignatureSuite defines the cryptographic suite used
|
||||
type SignatureSuite uint8
|
||||
|
||||
const (
|
||||
// SuitePQOnly uses post-quantum signatures only
|
||||
SuitePQOnly SignatureSuite = iota
|
||||
// SuiteHybrid uses hybrid PQ+classical signatures
|
||||
SuiteHybrid
|
||||
// SuiteClassic uses classical signatures (legacy)
|
||||
SuiteClassic
|
||||
)
|
||||
|
||||
// =============================================================================
|
||||
// Base Artifact Interface
|
||||
// =============================================================================
|
||||
|
||||
// Artifact is the base interface for all cross-chain artifacts
|
||||
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
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
// Domain Separators (prevent cross-domain replay)
|
||||
// =============================================================================
|
||||
|
||||
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")
|
||||
)
|
||||
|
||||
// =============================================================================
|
||||
// CReceipt (C-Chain → X-Chain)
|
||||
// =============================================================================
|
||||
|
||||
// Withdrawal represents an asset withdrawal from C to X
|
||||
type Withdrawal struct {
|
||||
AssetID ids.ID `json:"assetId"`
|
||||
Amount uint64 `json:"amount"`
|
||||
Recipient []byte `json:"recipient"` // X-Chain address
|
||||
Nonce uint64 `json:"nonce"`
|
||||
}
|
||||
|
||||
// FeePayment represents a fee payment to be settled on X
|
||||
type FeePayment struct {
|
||||
Recipient []byte `json:"recipient"`
|
||||
Amount uint64 `json:"amount"`
|
||||
FeeType string `json:"feeType"` // "base", "priority", "blob"
|
||||
}
|
||||
|
||||
// CReceipt is the canonical artifact emitted by C-Chain for X-Chain settlement
|
||||
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"`
|
||||
|
||||
// Cached
|
||||
id ids.ID
|
||||
bytes []byte
|
||||
}
|
||||
|
||||
func (r *CReceipt) ArtifactID() ids.ID {
|
||||
if r.id == ids.Empty {
|
||||
r.id = r.computeID()
|
||||
}
|
||||
return r.id
|
||||
}
|
||||
|
||||
func (r *CReceipt) computeID() ids.ID {
|
||||
h := sha256.New()
|
||||
h.Write(DomainSepCReceipt)
|
||||
h.Write(r.DomainID_[:])
|
||||
binary.Write(h, binary.BigEndian, r.Height)
|
||||
h.Write(r.CStateRoot[:])
|
||||
return ids.ID(h.Sum(nil))
|
||||
}
|
||||
|
||||
func (r *CReceipt) DomainID() ids.ID { return r.DomainID_ }
|
||||
func (r *CReceipt) SchemaVersion() uint32 { return r.Version_ }
|
||||
func (r *CReceipt) SignatureSuite() SignatureSuite { return r.SigSuite_ }
|
||||
func (r *CReceipt) Expiry() time.Time { return r.ExpiryTime }
|
||||
func (r *CReceipt) Bytes() []byte { return r.bytes }
|
||||
|
||||
// =============================================================================
|
||||
// DSettlementReceipt (D-Chain → X-Chain)
|
||||
// =============================================================================
|
||||
|
||||
// EscrowRef references an escrow UTXO on X-Chain
|
||||
type EscrowRef struct {
|
||||
TxID ids.ID `json:"txId"`
|
||||
OutputIndex uint32 `json:"outputIndex"`
|
||||
Amount uint64 `json:"amount"`
|
||||
AssetID ids.ID `json:"assetId"`
|
||||
}
|
||||
|
||||
// TradeNetting represents netted trade outcomes
|
||||
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"`
|
||||
}
|
||||
|
||||
// DSettlementReceipt is the canonical artifact for D-Chain escrow settlement
|
||||
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"`
|
||||
|
||||
// Cached
|
||||
id ids.ID
|
||||
bytes []byte
|
||||
}
|
||||
|
||||
func (r *DSettlementReceipt) ArtifactID() ids.ID {
|
||||
if r.id == ids.Empty {
|
||||
h := sha256.New()
|
||||
h.Write(DomainSepDSettlementReceipt)
|
||||
h.Write(r.DomainID_[:])
|
||||
binary.Write(h, binary.BigEndian, r.Height)
|
||||
r.id = ids.ID(h.Sum(nil))
|
||||
}
|
||||
return r.id
|
||||
}
|
||||
|
||||
func (r *DSettlementReceipt) DomainID() ids.ID { return r.DomainID_ }
|
||||
func (r *DSettlementReceipt) SchemaVersion() uint32 { return r.Version_ }
|
||||
func (r *DSettlementReceipt) SignatureSuite() SignatureSuite { return r.SigSuite_ }
|
||||
func (r *DSettlementReceipt) Expiry() time.Time { return r.ExpiryTime }
|
||||
func (r *DSettlementReceipt) Bytes() []byte { return r.bytes }
|
||||
|
||||
// =============================================================================
|
||||
// OracleAttestation (O-Chain → X-Chain)
|
||||
// =============================================================================
|
||||
|
||||
// OracleAttestation is the canonical artifact for oracle data feeds
|
||||
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"`
|
||||
|
||||
// Cached
|
||||
id ids.ID
|
||||
bytes []byte
|
||||
}
|
||||
|
||||
func (a *OracleAttestation) ArtifactID() ids.ID {
|
||||
if a.id == ids.Empty {
|
||||
h := sha256.New()
|
||||
h.Write(DomainSepOracleAttestation)
|
||||
h.Write(a.FeedID[:])
|
||||
binary.Write(h, binary.BigEndian, a.Epoch)
|
||||
a.id = ids.ID(h.Sum(nil))
|
||||
}
|
||||
return a.id
|
||||
}
|
||||
|
||||
func (a *OracleAttestation) DomainID() ids.ID { return a.DomainID_ }
|
||||
func (a *OracleAttestation) SchemaVersion() uint32 { return a.Version_ }
|
||||
func (a *OracleAttestation) SignatureSuite() SignatureSuite { return a.SigSuite_ }
|
||||
func (a *OracleAttestation) Expiry() time.Time { return a.ValidTo }
|
||||
func (a *OracleAttestation) Bytes() []byte { return a.bytes }
|
||||
|
||||
// =============================================================================
|
||||
// VerifiedMessage (R-Chain → X-Chain)
|
||||
// =============================================================================
|
||||
|
||||
// MessageStatus represents the delivery status
|
||||
type MessageStatus uint8
|
||||
|
||||
const (
|
||||
MessagePending MessageStatus = iota
|
||||
MessageDelivered
|
||||
MessageAcked
|
||||
MessageTimeout
|
||||
MessageFailed
|
||||
)
|
||||
|
||||
// VerifiedMessage is the canonical artifact for cross-chain messages
|
||||
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"`
|
||||
|
||||
// Cached
|
||||
id ids.ID
|
||||
bytes []byte
|
||||
}
|
||||
|
||||
func (m *VerifiedMessage) ArtifactID() ids.ID {
|
||||
if m.id == ids.Empty {
|
||||
h := sha256.New()
|
||||
h.Write(DomainSepVerifiedMessage)
|
||||
h.Write(m.SrcDomain[:])
|
||||
h.Write(m.DstDomain[:])
|
||||
binary.Write(h, binary.BigEndian, m.Nonce)
|
||||
m.id = ids.ID(h.Sum(nil))
|
||||
}
|
||||
return m.id
|
||||
}
|
||||
|
||||
func (m *VerifiedMessage) DomainID() ids.ID { return m.SrcDomain }
|
||||
func (m *VerifiedMessage) SchemaVersion() uint32 { return m.Version_ }
|
||||
func (m *VerifiedMessage) SignatureSuite() SignatureSuite { return m.SigSuite_ }
|
||||
func (m *VerifiedMessage) Expiry() time.Time {
|
||||
return m.Timestamp.Add(time.Duration(m.Timeout) * time.Second)
|
||||
}
|
||||
func (m *VerifiedMessage) Bytes() []byte { return m.bytes }
|
||||
|
||||
// =============================================================================
|
||||
// CredentialProof (I-Chain → X-Chain)
|
||||
// =============================================================================
|
||||
|
||||
// CredentialProof is the canonical artifact for identity credentials
|
||||
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"`
|
||||
|
||||
// Cached
|
||||
id ids.ID
|
||||
bytes []byte
|
||||
}
|
||||
|
||||
func (c *CredentialProof) ArtifactID() ids.ID {
|
||||
if c.id == ids.Empty {
|
||||
h := sha256.New()
|
||||
h.Write(DomainSepCredentialProof)
|
||||
h.Write(c.CredentialID[:])
|
||||
h.Write([]byte(c.IssuerDID))
|
||||
c.id = ids.ID(h.Sum(nil))
|
||||
}
|
||||
return c.id
|
||||
}
|
||||
|
||||
func (c *CredentialProof) DomainID() ids.ID { return c.DomainID_ }
|
||||
func (c *CredentialProof) SchemaVersion() uint32 { return c.Version_ }
|
||||
func (c *CredentialProof) SignatureSuite() SignatureSuite { return c.SigSuite_ }
|
||||
func (c *CredentialProof) Expiry() time.Time { return c.ExpiresAt }
|
||||
func (c *CredentialProof) Bytes() []byte { return c.bytes }
|
||||
|
||||
// =============================================================================
|
||||
// Cert Types (T-Chain → Various)
|
||||
// =============================================================================
|
||||
|
||||
// OracleCert attests that a quorum signed an oracle attestation
|
||||
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"`
|
||||
|
||||
id ids.ID
|
||||
bytes []byte
|
||||
}
|
||||
|
||||
func (c *OracleCert) ArtifactID() ids.ID {
|
||||
if c.id == ids.Empty {
|
||||
h := sha256.New()
|
||||
h.Write(DomainSepOracleCert)
|
||||
h.Write(c.FeedID[:])
|
||||
binary.Write(h, binary.BigEndian, c.Epoch)
|
||||
c.id = ids.ID(h.Sum(nil))
|
||||
}
|
||||
return c.id
|
||||
}
|
||||
|
||||
func (c *OracleCert) DomainID() ids.ID { return c.DomainID_ }
|
||||
func (c *OracleCert) SchemaVersion() uint32 { return c.Version_ }
|
||||
func (c *OracleCert) SignatureSuite() SignatureSuite { return c.SigSuite_ }
|
||||
func (c *OracleCert) Expiry() time.Time { return c.ExpiresAt }
|
||||
func (c *OracleCert) Bytes() []byte { return c.bytes }
|
||||
|
||||
// RelayCert attests that a quorum verified a message batch
|
||||
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"`
|
||||
|
||||
id ids.ID
|
||||
bytes []byte
|
||||
}
|
||||
|
||||
func (c *RelayCert) ArtifactID() ids.ID {
|
||||
if c.id == ids.Empty {
|
||||
h := sha256.New()
|
||||
h.Write(DomainSepRelayCert)
|
||||
h.Write(c.SrcDomain[:])
|
||||
h.Write(c.MsgBatchHash[:])
|
||||
c.id = ids.ID(h.Sum(nil))
|
||||
}
|
||||
return c.id
|
||||
}
|
||||
|
||||
func (c *RelayCert) DomainID() ids.ID { return c.DomainID_ }
|
||||
func (c *RelayCert) SchemaVersion() uint32 { return c.Version_ }
|
||||
func (c *RelayCert) SignatureSuite() SignatureSuite { return c.SigSuite_ }
|
||||
func (c *RelayCert) Expiry() time.Time { return c.ExpiresAt }
|
||||
func (c *RelayCert) Bytes() []byte { return c.bytes }
|
||||
|
||||
// DACert aggregates DA sampling evidence
|
||||
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"`
|
||||
|
||||
id ids.ID
|
||||
bytes []byte
|
||||
}
|
||||
|
||||
func (c *DACert) ArtifactID() ids.ID {
|
||||
if c.id == ids.Empty {
|
||||
h := sha256.New()
|
||||
h.Write(DomainSepDACert)
|
||||
h.Write(c.ChainID[:])
|
||||
binary.Write(h, binary.BigEndian, c.Height)
|
||||
c.id = ids.ID(h.Sum(nil))
|
||||
}
|
||||
return c.id
|
||||
}
|
||||
|
||||
func (c *DACert) DomainID() ids.ID { return c.DomainID_ }
|
||||
func (c *DACert) SchemaVersion() uint32 { return c.Version_ }
|
||||
func (c *DACert) SignatureSuite() SignatureSuite { return c.SigSuite_ }
|
||||
func (c *DACert) Expiry() time.Time { return c.ExpiresAt }
|
||||
func (c *DACert) Bytes() []byte { return c.bytes }
|
||||
|
||||
// =============================================================================
|
||||
// ZKProofCommitment (Z-Chain → X/C)
|
||||
// =============================================================================
|
||||
|
||||
// ZKProofCommitment is the canonical artifact for ZK proofs
|
||||
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"`
|
||||
|
||||
id ids.ID
|
||||
bytes []byte
|
||||
}
|
||||
|
||||
func (z *ZKProofCommitment) ArtifactID() ids.ID {
|
||||
if z.id == ids.Empty {
|
||||
h := sha256.New()
|
||||
h.Write(DomainSepZKProof)
|
||||
h.Write(z.ProofID[:])
|
||||
h.Write(z.ProofCommitment[:])
|
||||
z.id = ids.ID(h.Sum(nil))
|
||||
}
|
||||
return z.id
|
||||
}
|
||||
|
||||
func (z *ZKProofCommitment) DomainID() ids.ID { return z.DomainID_ }
|
||||
func (z *ZKProofCommitment) SchemaVersion() uint32 { return z.Version_ }
|
||||
func (z *ZKProofCommitment) SignatureSuite() SignatureSuite { return z.SigSuite_ }
|
||||
func (z *ZKProofCommitment) Expiry() time.Time { return z.ExpiresAt }
|
||||
func (z *ZKProofCommitment) Bytes() []byte { return z.bytes }
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
package bridgevm
|
||||
|
||||
import (
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/chains/fee"
|
||||
)
|
||||
|
||||
// gateUserBridgeFee refuses a bridge transfer whose declared fee does not meet
|
||||
|
||||
@@ -8,8 +8,8 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/luxfi/chains/chain"
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
)
|
||||
|
||||
// newBridgeVMWithPolicy wires a VM with the canonical FlatPolicy
|
||||
|
||||
+2
-2
@@ -16,16 +16,16 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/luxfi/chains/chain"
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/chains/internal/bridgeattest"
|
||||
"github.com/luxfi/chains/internal/warpmsg"
|
||||
"github.com/luxfi/database"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/version"
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/runtime"
|
||||
"github.com/luxfi/threshold/pkg/party"
|
||||
"github.com/luxfi/threshold/protocols/cmp/config"
|
||||
"github.com/luxfi/version"
|
||||
vmcore "github.com/luxfi/vm"
|
||||
vmchain "github.com/luxfi/vm/chain"
|
||||
"github.com/luxfi/warp"
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@ package chain
|
||||
|
||||
import (
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/vms"
|
||||
"github.com/luxfi/vm/manager"
|
||||
)
|
||||
|
||||
// Factory builds one chain's VM. The zero VM is the whole of it: a VM gets its
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
// that decide what a fresh VM holds, and they drift.
|
||||
type Factory[T any] struct{}
|
||||
|
||||
var _ vms.Factory = Factory[struct{}]{}
|
||||
var _ manager.Factory = Factory[struct{}]{}
|
||||
|
||||
// New returns a VM with nothing set. Initialize does the rest.
|
||||
func (Factory[T]) New(log.Logger) (interface{}, error) { return new(T), nil }
|
||||
|
||||
+8
-8
@@ -4,9 +4,9 @@
|
||||
package chain
|
||||
|
||||
import (
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/constants"
|
||||
"github.com/luxfi/ids"
|
||||
nodefee "github.com/luxfi/node/vms/types/fee"
|
||||
)
|
||||
|
||||
// Fee is what a chain charges to admit a user transaction, and the check that
|
||||
@@ -16,23 +16,23 @@ import (
|
||||
// what the chain costs to submit to, while the actual per-operation debit and
|
||||
// burn happen inside consensus against the payer's on-chain balance
|
||||
// (github.com/luxfi/chains/fee). A chain declares one of these at Initialize;
|
||||
// the node's boot-time nodefee.Validate reads it.
|
||||
// the node's boot-time fee.Validate reads it.
|
||||
//
|
||||
// The zero Fee admits nothing, so a chain that forgets to declare one refuses
|
||||
// every caller rather than admitting every caller.
|
||||
type Fee struct {
|
||||
policy nodefee.Policy
|
||||
policy fee.Policy
|
||||
asset ids.ID
|
||||
}
|
||||
|
||||
// Floor is the canonical declaration for a chain that accepts user-submitted
|
||||
// work: the network's UTXO asset at the minimum transaction fee. A chain with
|
||||
// a user-facing entry MUST charge at least this, or nodefee.Validate flags it
|
||||
// a user-facing entry MUST charge at least this, or fee.Validate flags it
|
||||
// at boot as a zero-fee user-facing chain.
|
||||
func Floor(networkID uint32) Fee {
|
||||
asset := constants.UTXOAssetIDFor(networkID)
|
||||
return Fee{
|
||||
policy: nodefee.FlatPolicy{Fee: nodefee.MinTxFeeFloor, AssetID: asset},
|
||||
policy: fee.FlatPolicy{Fee: fee.MinTxFeeFloor, AssetID: asset},
|
||||
asset: asset,
|
||||
}
|
||||
}
|
||||
@@ -42,7 +42,7 @@ func Floor(networkID uint32) Fee {
|
||||
// Every caller is refused, so an entry that exposes itself as user-callable
|
||||
// still refuses explicitly instead of by omission.
|
||||
func Closed() Fee {
|
||||
return Fee{policy: nodefee.NoUserTxPolicy{}, asset: nodefee.NoUserTxPolicy{}.FeeAssetID()}
|
||||
return Fee{policy: fee.NoUserTxPolicy{}, asset: fee.NoUserTxPolicy{}.FeeAssetID()}
|
||||
}
|
||||
|
||||
// Admit refuses a payment the declaration does not cover. Every user-facing
|
||||
@@ -50,10 +50,10 @@ func Closed() Fee {
|
||||
// is reachable.
|
||||
func (f Fee) Admit(paid uint64) error {
|
||||
if f.policy == nil {
|
||||
return nodefee.ErrChainAcceptsNoUserTxs
|
||||
return fee.ErrChainAcceptsNoUserTxs
|
||||
}
|
||||
return f.policy.ValidateFee(paid, f.asset)
|
||||
}
|
||||
|
||||
// Policy is the declaration itself, for diagnostics and the boot-time gate.
|
||||
func (f Fee) Policy() nodefee.Policy { return f.policy }
|
||||
func (f Fee) Policy() fee.Policy { return f.policy }
|
||||
|
||||
+11
-11
@@ -8,25 +8,25 @@ import (
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
nodefee "github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/chains/fee"
|
||||
)
|
||||
|
||||
func TestAChainThatChargesRefusesLessThanTheFloor(t *testing.T) {
|
||||
f := Floor(1)
|
||||
require.Error(t, f.Admit(0))
|
||||
require.Error(t, f.Admit(nodefee.MinTxFeeFloor-1))
|
||||
require.NoError(t, f.Admit(nodefee.MinTxFeeFloor))
|
||||
require.NoError(t, f.Admit(nodefee.MinTxFeeFloor+1))
|
||||
require.NoError(t, nodefee.Validate(f.Policy()),
|
||||
require.Error(t, f.Admit(fee.MinTxFeeFloor-1))
|
||||
require.NoError(t, f.Admit(fee.MinTxFeeFloor))
|
||||
require.NoError(t, f.Admit(fee.MinTxFeeFloor+1))
|
||||
require.NoError(t, fee.Validate(f.Policy()),
|
||||
"the node's boot-time check must accept what a user-facing chain declares")
|
||||
}
|
||||
|
||||
func TestAClosedChainRefusesEveryCaller(t *testing.T) {
|
||||
f := Closed()
|
||||
require.ErrorIs(t, f.Admit(0), nodefee.ErrChainAcceptsNoUserTxs)
|
||||
require.ErrorIs(t, f.Admit(nodefee.MinTxFeeFloor), nodefee.ErrChainAcceptsNoUserTxs)
|
||||
require.ErrorIs(t, f.Admit(1<<62), nodefee.ErrChainAcceptsNoUserTxs)
|
||||
require.NoError(t, nodefee.Validate(f.Policy()))
|
||||
require.ErrorIs(t, f.Admit(0), fee.ErrChainAcceptsNoUserTxs)
|
||||
require.ErrorIs(t, f.Admit(fee.MinTxFeeFloor), fee.ErrChainAcceptsNoUserTxs)
|
||||
require.ErrorIs(t, f.Admit(1<<62), fee.ErrChainAcceptsNoUserTxs)
|
||||
require.NoError(t, fee.Validate(f.Policy()))
|
||||
}
|
||||
|
||||
// TestAnUndeclaredFeeAdmitsNothing is the fail-closed shape: a chain that
|
||||
@@ -34,8 +34,8 @@ func TestAClosedChainRefusesEveryCaller(t *testing.T) {
|
||||
// admitting every caller.
|
||||
func TestAnUndeclaredFeeAdmitsNothing(t *testing.T) {
|
||||
var f Fee
|
||||
require.ErrorIs(t, f.Admit(0), nodefee.ErrChainAcceptsNoUserTxs)
|
||||
require.ErrorIs(t, f.Admit(1<<62), nodefee.ErrChainAcceptsNoUserTxs)
|
||||
require.ErrorIs(t, f.Admit(0), fee.ErrChainAcceptsNoUserTxs)
|
||||
require.ErrorIs(t, f.Admit(1<<62), fee.ErrChainAcceptsNoUserTxs)
|
||||
require.Nil(t, f.Policy())
|
||||
}
|
||||
|
||||
|
||||
+23
-24
@@ -1,15 +1,19 @@
|
||||
// Copyright (C) 2019-2026, Lux Industries Inc. All rights reserved.
|
||||
// See the file LICENSE for licensing terms.
|
||||
// Copyright (c) 2019-2026 Lux Industries Inc.
|
||||
// SPDX-License-Identifier: BSD-3-Clause-Eco
|
||||
|
||||
// Package fee is the native fee/gas SETTLEMENT primitive for Lux service
|
||||
// chains (K-Chain keyvm today; M-Chain and F-Chain next). It is the half the
|
||||
// 2026-05 fee audit found missing: node/vms/types/fee declares an ADMISSION
|
||||
// policy (is a submitted fee acceptable at the gate?), but nothing could
|
||||
// actually METER, DEBIT, and BURN a fee during block execution the way the
|
||||
// C-Chain EVM does (evm/core/state_transition.go buyGas: balance check ->
|
||||
// ErrInsufficientFunds -> SubBalance). Service chains charged "fees" that were
|
||||
// unbacked integers a caller wrote into a JSON request — never settled against
|
||||
// real on-chain balance.
|
||||
// Package fee is the whole native fee model of a Lux service chain: the
|
||||
// ADMISSION policy a VM declares at boot (policy.go) and the SETTLEMENT
|
||||
// mechanism that meters, debits and burns the admitted fee during block
|
||||
// execution (balance.go, meter.go, settle.go).
|
||||
//
|
||||
// Admission is the half every user-facing chain must declare: a Policy whose
|
||||
// MinTxFee is > 0, or the NoUserTxPolicy sentinel for committee-only chains,
|
||||
// checked once by Validate. Settlement is the half the 2026-05 fee audit found
|
||||
// missing: nothing could actually METER, DEBIT, and BURN a fee during block
|
||||
// execution the way the C-Chain EVM does (evm/core/state_transition.go buyGas:
|
||||
// balance check -> ErrInsufficientFunds -> SubBalance). Service chains charged
|
||||
// "fees" that were unbacked integers a caller wrote into a JSON request —
|
||||
// never settled against real on-chain balance.
|
||||
//
|
||||
// This package supplies the three pillars those chains lacked, modelled on the
|
||||
// EVM's buyGas but for the native account model (P/X-Chain style direct usage,
|
||||
@@ -34,18 +38,13 @@
|
||||
// INSIDE consensus block processing, atomically with the operation's state
|
||||
// effect via the VM's versiondb commit — never in a synchronous RPC.
|
||||
//
|
||||
// Orthogonality. This package is deliberately separate from, and complementary
|
||||
// to, node/vms/types/fee: that package is ADMISSION POLICY (the boot-time floor
|
||||
// declaration Manager validates); this package is SETTLEMENT MECHANISM (the
|
||||
// per-block debit+burn). A VM declares a Policy AND settles through a Ledger;
|
||||
// the two compose, they do not overlap. The schedule of "which operation costs
|
||||
// how much gas" is supplied BY THE VM (keyvm prices per cryptographic
|
||||
// algorithm) — this package is the pure mechanism, the VM owns the values.
|
||||
// Orthogonality. Admission and settlement are two files of one package, not
|
||||
// one mechanism: a VM declares a Policy AND settles through a Ledger; the two
|
||||
// compose, they do not overlap. The schedule of "which operation costs how
|
||||
// much gas" is supplied BY THE VM (keyvm prices per cryptographic algorithm) —
|
||||
// this package is the pure mechanism, the VM owns the values.
|
||||
//
|
||||
// It lives in the chains module (not node) on purpose: a service VM must be
|
||||
// able to build and settle fees under the reproducible GOWORK=off build, where
|
||||
// the chains module resolves a pinned node from the module cache and therefore
|
||||
// cannot see VM-local additions made to the node tree. Keeping the settlement
|
||||
// primitive beside the VMs that use it is what makes it buildable and reusable
|
||||
// by K/M/F under that build.
|
||||
// It lives in the chains module on purpose: the VMs are plugin binaries built
|
||||
// without the node daemon in their dependency closure, so the fee surface they
|
||||
// program against must live beside them.
|
||||
package fee
|
||||
|
||||
+122
@@ -0,0 +1,122 @@
|
||||
// Copyright (c) 2019-2026 Lux Industries Inc.
|
||||
// SPDX-License-Identifier: BSD-3-Clause-Eco
|
||||
|
||||
package fee
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/luxfi/ids"
|
||||
)
|
||||
|
||||
// MinTxFeeFloor is the minimum tx fee, in the base unit (constants.MicroLux,
|
||||
// 1e-6 LUX — written nLUX throughout this package), that any user-facing chain
|
||||
// SHOULD charge. It is the lower bound used when reviewing per-VM policies;
|
||||
// Validate does not enforce it (a VM is free to charge MORE), but a VM choosing
|
||||
// less is flagged at review.
|
||||
//
|
||||
// Known intentional exception: the X-Chain prices transactions through its own
|
||||
// UTXO fee subsystem, NOT a FlatPolicy, and sits deliberately outside this
|
||||
// floor — its UTXO economics are set independently of the account-model floor.
|
||||
const MinTxFeeFloor uint64 = 1_000_000
|
||||
|
||||
// Sentinel errors returned by Policy implementations and Validate.
|
||||
var (
|
||||
// ErrZeroMinFee is returned by Validate when a non-sentinel policy declares
|
||||
// a zero minimum fee. User-facing chains MUST charge > 0.
|
||||
ErrZeroMinFee = errors.New("fee policy declares zero min tx fee on a user-facing chain")
|
||||
|
||||
// ErrWrongFeeAsset is returned by Policy.ValidateFee when the tx pays in an
|
||||
// asset other than the policy's FeeAssetID.
|
||||
ErrWrongFeeAsset = errors.New("tx pays fee in wrong asset")
|
||||
|
||||
// ErrInsufficientFee is returned by Policy.ValidateFee when the paid amount
|
||||
// is below MinTxFee.
|
||||
ErrInsufficientFee = errors.New("tx fee below policy minimum")
|
||||
|
||||
// ErrChainAcceptsNoUserTxs is returned by NoUserTxPolicy.ValidateFee for
|
||||
// any tx — committee-driven chains have no user mempool, so any arrival at
|
||||
// the fee gate is a wiring bug.
|
||||
ErrChainAcceptsNoUserTxs = errors.New("chain accepts no user-submitted txs")
|
||||
)
|
||||
|
||||
// Policy is the ADMISSION half of the fee model: how a VM decides whether a
|
||||
// user-submitted tx pays enough to enter at all. Every chain that accepts user
|
||||
// txs MUST declare a non-nil Policy whose MinTxFee() is > 0. Chains that accept
|
||||
// no user txs declare NoUserTxPolicy — the only legal way to opt out.
|
||||
//
|
||||
// Policy is declared at boot and checked once by Validate; settlement of the
|
||||
// admitted fee during block execution is the Ledger / Charge half of this
|
||||
// package. The two compose and do not overlap.
|
||||
type Policy interface {
|
||||
// MinTxFee returns the minimum fee, in nLUX, that any user tx must pay.
|
||||
// MUST be > 0 for user-facing VMs.
|
||||
MinTxFee() uint64
|
||||
|
||||
// FeeAssetID returns the asset the fee is paid in. For primary-network
|
||||
// burn this is constants.UTXOAssetIDFor(networkID).
|
||||
FeeAssetID() ids.ID
|
||||
|
||||
// ValidateFee returns nil if the paid amount and asset satisfy the policy,
|
||||
// else ErrWrongFeeAsset, ErrInsufficientFee or ErrChainAcceptsNoUserTxs.
|
||||
ValidateFee(paidNanoLux uint64, paidAsset ids.ID) error
|
||||
}
|
||||
|
||||
// FlatPolicy charges a fixed fee per user tx — the canonical policy for VMs
|
||||
// without dynamic gas pricing.
|
||||
type FlatPolicy struct {
|
||||
// Fee is the per-tx burn amount, in nLUX. MUST be > 0.
|
||||
Fee uint64
|
||||
|
||||
// AssetID is the fee asset. For primary-network burn, use
|
||||
// constants.UTXOAssetIDFor(networkID).
|
||||
AssetID ids.ID
|
||||
}
|
||||
|
||||
// MinTxFee returns the flat fee.
|
||||
func (p FlatPolicy) MinTxFee() uint64 { return p.Fee }
|
||||
|
||||
// FeeAssetID returns the configured fee asset.
|
||||
func (p FlatPolicy) FeeAssetID() ids.ID { return p.AssetID }
|
||||
|
||||
// ValidateFee enforces the flat policy.
|
||||
func (p FlatPolicy) ValidateFee(paid uint64, asset ids.ID) error {
|
||||
if asset != p.AssetID {
|
||||
return ErrWrongFeeAsset
|
||||
}
|
||||
if paid < p.Fee {
|
||||
return ErrInsufficientFee
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// NoUserTxPolicy is the sentinel for chains that accept no user-submitted txs
|
||||
// (committee-driven only). Distinguishing it from "policy not set" is what lets
|
||||
// Validate refuse zero-fee user-facing chains without false positives on the
|
||||
// committee chains.
|
||||
type NoUserTxPolicy struct{}
|
||||
|
||||
// MinTxFee always returns 0 — there are no user txs to charge.
|
||||
func (NoUserTxPolicy) MinTxFee() uint64 { return 0 }
|
||||
|
||||
// FeeAssetID returns ids.Empty — there is no fee asset.
|
||||
func (NoUserTxPolicy) FeeAssetID() ids.ID { return ids.Empty }
|
||||
|
||||
// ValidateFee always returns ErrChainAcceptsNoUserTxs — any caller reaching
|
||||
// this gate is a wiring bug.
|
||||
func (NoUserTxPolicy) ValidateFee(uint64, ids.ID) error {
|
||||
return ErrChainAcceptsNoUserTxs
|
||||
}
|
||||
|
||||
// Validate is the boot-time check run against a VM's declared Policy. It
|
||||
// returns ErrZeroMinFee if a non-sentinel policy declares MinTxFee() == 0,
|
||||
// and nil for NoUserTxPolicy (the explicit opt-out) or any MinTxFee > 0.
|
||||
func Validate(p Policy) error {
|
||||
if _, ok := p.(NoUserTxPolicy); ok {
|
||||
return nil
|
||||
}
|
||||
if p.MinTxFee() == 0 {
|
||||
return ErrZeroMinFee
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
// Copyright (c) 2019-2026 Lux Industries Inc.
|
||||
// SPDX-License-Identifier: BSD-3-Clause-Eco
|
||||
|
||||
package fee
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/luxfi/constants"
|
||||
"github.com/luxfi/ids"
|
||||
)
|
||||
|
||||
func TestFlatPolicy_ValidatesAtMinTxFeeFloor(t *testing.T) {
|
||||
p := FlatPolicy{Fee: MinTxFeeFloor, AssetID: constants.UTXO_ASSET_ID}
|
||||
if err := Validate(p); err != nil {
|
||||
t.Fatalf("Validate(FlatPolicy{Fee: MinTxFeeFloor}) = %v, want nil", err)
|
||||
}
|
||||
if got := p.MinTxFee(); got != MinTxFeeFloor {
|
||||
t.Errorf("MinTxFee() = %d, want %d", got, MinTxFeeFloor)
|
||||
}
|
||||
if got := p.FeeAssetID(); got != constants.UTXO_ASSET_ID {
|
||||
t.Errorf("FeeAssetID() = %v, want UTXO_ASSET_ID", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFlatPolicy_RejectsZeroFee(t *testing.T) {
|
||||
p := FlatPolicy{Fee: 0, AssetID: constants.UTXO_ASSET_ID}
|
||||
err := Validate(p)
|
||||
if !errors.Is(err, ErrZeroMinFee) {
|
||||
t.Fatalf("Validate(FlatPolicy{Fee: 0}) = %v, want ErrZeroMinFee", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFlatPolicy_ValidateFee(t *testing.T) {
|
||||
const fee = MinTxFeeFloor
|
||||
p := FlatPolicy{Fee: fee, AssetID: constants.UTXO_ASSET_ID}
|
||||
|
||||
// exact pays — accepted.
|
||||
if err := p.ValidateFee(fee, constants.UTXO_ASSET_ID); err != nil {
|
||||
t.Errorf("ValidateFee(exact) = %v, want nil", err)
|
||||
}
|
||||
// over-pay — accepted.
|
||||
if err := p.ValidateFee(fee+1, constants.UTXO_ASSET_ID); err != nil {
|
||||
t.Errorf("ValidateFee(over) = %v, want nil", err)
|
||||
}
|
||||
// under-pay — refused with ErrInsufficientFee.
|
||||
if err := p.ValidateFee(fee-1, constants.UTXO_ASSET_ID); !errors.Is(err, ErrInsufficientFee) {
|
||||
t.Errorf("ValidateFee(under) = %v, want ErrInsufficientFee", err)
|
||||
}
|
||||
// wrong asset — refused with ErrWrongFeeAsset (even if paid >= fee).
|
||||
wrong := ids.GenerateTestID()
|
||||
if err := p.ValidateFee(fee, wrong); !errors.Is(err, ErrWrongFeeAsset) {
|
||||
t.Errorf("ValidateFee(wrong asset) = %v, want ErrWrongFeeAsset", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNoUserTxPolicy_PassesValidate(t *testing.T) {
|
||||
p := NoUserTxPolicy{}
|
||||
if err := Validate(p); err != nil {
|
||||
t.Fatalf("Validate(NoUserTxPolicy) = %v, want nil", err)
|
||||
}
|
||||
if got := p.MinTxFee(); got != 0 {
|
||||
t.Errorf("MinTxFee() = %d, want 0", got)
|
||||
}
|
||||
if got := p.FeeAssetID(); got != ids.Empty {
|
||||
t.Errorf("FeeAssetID() = %v, want ids.Empty", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNoUserTxPolicy_ValidateFeeAlwaysRefuses(t *testing.T) {
|
||||
p := NoUserTxPolicy{}
|
||||
// Any call into the fee gate on a committee-only chain is a wiring
|
||||
// bug — the chain should never have accepted the user tx in the
|
||||
// first place.
|
||||
if err := p.ValidateFee(0, ids.Empty); !errors.Is(err, ErrChainAcceptsNoUserTxs) {
|
||||
t.Errorf("ValidateFee(0) = %v, want ErrChainAcceptsNoUserTxs", err)
|
||||
}
|
||||
if err := p.ValidateFee(MinTxFeeFloor, constants.UTXO_ASSET_ID); !errors.Is(err, ErrChainAcceptsNoUserTxs) {
|
||||
t.Errorf("ValidateFee(paid, asset) = %v, want ErrChainAcceptsNoUserTxs", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPolicy_InterfaceSatisfaction(t *testing.T) {
|
||||
// Compile-time check that the two concrete types satisfy Policy.
|
||||
// (A missing method would fail the build, not this test, but
|
||||
// keeping the assertion documents the contract.)
|
||||
var _ Policy = FlatPolicy{}
|
||||
var _ Policy = NoUserTxPolicy{}
|
||||
}
|
||||
+2
-2
@@ -7,10 +7,10 @@ import (
|
||||
"github.com/luxfi/constants"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/vms"
|
||||
"github.com/luxfi/vm/manager"
|
||||
)
|
||||
|
||||
var _ vms.Factory = (*Factory)(nil)
|
||||
var _ manager.Factory = (*Factory)(nil)
|
||||
|
||||
// VMID identifies F-Chain: coordination of confidential compute — ciphertext
|
||||
// handles, access permits, and threshold decryption (LP-8200, LP-167). It is
|
||||
|
||||
+5
-5
@@ -4,8 +4,8 @@
|
||||
package fhevm
|
||||
|
||||
import (
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/constants"
|
||||
nodefee "github.com/luxfi/node/vms/types/fee"
|
||||
)
|
||||
|
||||
// newFeePolicy returns the F-Chain ADMISSION policy: a non-zero floor so the
|
||||
@@ -17,13 +17,13 @@ import (
|
||||
// fee, driven in block Accept) performs the actual per-operation debit + burn,
|
||||
// priced by the per-scheme gas schedule (gas.go). The floor declared here is
|
||||
// below MinScheduledFee(), so the two surfaces agree — proven in gas_test.go.
|
||||
func newFeePolicy(networkID uint32) nodefee.Policy {
|
||||
return nodefee.FlatPolicy{
|
||||
Fee: nodefee.MinTxFeeFloor,
|
||||
func newFeePolicy(networkID uint32) fee.Policy {
|
||||
return fee.FlatPolicy{
|
||||
Fee: fee.MinTxFeeFloor,
|
||||
AssetID: constants.UTXOAssetIDFor(networkID),
|
||||
}
|
||||
}
|
||||
|
||||
// FeePolicy exposes the chain's declared admission policy for diagnostics and
|
||||
// the boot-time Validate gate.
|
||||
func (vm *VM) FeePolicy() nodefee.Policy { return vm.feePolicy }
|
||||
func (vm *VM) FeePolicy() fee.Policy { return vm.feePolicy }
|
||||
|
||||
+6
-6
@@ -8,7 +8,7 @@ import (
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
nodefee "github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/chains/fee"
|
||||
)
|
||||
|
||||
// TestGas_PerSchemeDistinct proves the cost model is real: a TFHE boolean, a
|
||||
@@ -35,17 +35,17 @@ func TestGas_AllOperationsMeetFloor(t *testing.T) {
|
||||
for scheme := range schemeGas {
|
||||
f, err := FeeFor(&Transaction{Type: op, Scheme: scheme})
|
||||
require.NoError(t, err)
|
||||
require.GreaterOrEqualf(t, f, nodefee.MinTxFeeFloor,
|
||||
"op %d scheme %s fee %d below floor %d", op, scheme, f, nodefee.MinTxFeeFloor)
|
||||
require.GreaterOrEqualf(t, f, fee.MinTxFeeFloor,
|
||||
"op %d scheme %s fee %d below floor %d", op, scheme, f, fee.MinTxFeeFloor)
|
||||
}
|
||||
continue
|
||||
}
|
||||
f, err := FeeFor(&Transaction{Type: op})
|
||||
require.NoError(t, err)
|
||||
require.GreaterOrEqualf(t, f, nodefee.MinTxFeeFloor,
|
||||
"op %d fee %d below floor %d", op, f, nodefee.MinTxFeeFloor)
|
||||
require.GreaterOrEqualf(t, f, fee.MinTxFeeFloor,
|
||||
"op %d fee %d below floor %d", op, f, fee.MinTxFeeFloor)
|
||||
}
|
||||
require.GreaterOrEqual(t, MinScheduledFee(), nodefee.MinTxFeeFloor,
|
||||
require.GreaterOrEqual(t, MinScheduledFee(), fee.MinTxFeeFloor,
|
||||
"the cheapest scheduled fee must satisfy the admission floor")
|
||||
}
|
||||
|
||||
|
||||
+2
-3
@@ -55,7 +55,6 @@ import (
|
||||
"github.com/luxfi/database/versiondb"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
nodefee "github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/timer/mockable"
|
||||
vmcore "github.com/luxfi/vm"
|
||||
"github.com/luxfi/vm/chain"
|
||||
@@ -186,7 +185,7 @@ type VM struct {
|
||||
// Admission policy (node/vms/types/fee). Orthogonal to settlement: this is
|
||||
// the boot-time floor declaration Manager validates; the per-op burn is done
|
||||
// through `ledger`.
|
||||
feePolicy nodefee.Policy
|
||||
feePolicy fee.Policy
|
||||
|
||||
// Consensus mempool. `claims` holds the effect of every queued transaction
|
||||
// so admission can refuse a second claim on it, and `queued` the highest
|
||||
@@ -287,7 +286,7 @@ func (vm *VM) Initialize(ctx context.Context, init vmcore.Init) error {
|
||||
|
||||
vm.ledger = fee.NewLedger(vm.versdb)
|
||||
vm.feePolicy = newFeePolicy(vm.networkID)
|
||||
if err := nodefee.Validate(vm.feePolicy); err != nil {
|
||||
if err := fee.Validate(vm.feePolicy); err != nil {
|
||||
return fmt.Errorf("fhevm: fee policy: %w", err)
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -22,7 +22,6 @@ import (
|
||||
"github.com/luxfi/database/memdb"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
nodefee "github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/runtime"
|
||||
vmcore "github.com/luxfi/vm"
|
||||
)
|
||||
@@ -523,7 +522,7 @@ func TestLifecycleCallsAreAnswered(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, h)
|
||||
|
||||
require.Equal(t, nodefee.MinTxFeeFloor, vm.FeePolicy().(nodefee.FlatPolicy).Fee)
|
||||
require.Equal(t, fee.MinTxFeeFloor, vm.FeePolicy().(fee.FlatPolicy).Fee)
|
||||
|
||||
// A factory-built VM holds nothing until Initialize.
|
||||
raw, err := (&Factory{}).New(log.NewNoOpLogger())
|
||||
|
||||
@@ -9,12 +9,10 @@ require (
|
||||
github.com/holiman/uint256 v1.3.2
|
||||
github.com/luxfi/accel v1.3.2
|
||||
github.com/luxfi/ai v0.1.0
|
||||
github.com/luxfi/api v1.1.9
|
||||
github.com/luxfi/consensus v1.36.63
|
||||
github.com/luxfi/constants v1.6.2
|
||||
github.com/luxfi/crypto v1.20.5
|
||||
github.com/luxfi/database v1.21.5
|
||||
github.com/luxfi/dex v1.14.2
|
||||
github.com/luxfi/evm v1.104.30
|
||||
github.com/luxfi/geth v1.20.2
|
||||
github.com/luxfi/ids v1.3.2
|
||||
@@ -26,7 +24,6 @@ require (
|
||||
github.com/luxfi/oracle v1.1.1
|
||||
github.com/luxfi/precompile v0.19.8
|
||||
github.com/luxfi/relay v1.1.1
|
||||
github.com/luxfi/rpc v1.1.0
|
||||
github.com/luxfi/runtime v1.3.1
|
||||
github.com/luxfi/sys v0.1.0
|
||||
github.com/luxfi/threshold v1.12.6
|
||||
@@ -37,12 +34,10 @@ require (
|
||||
github.com/luxfi/warp v1.24.1
|
||||
github.com/luxfi/zap v1.2.6
|
||||
github.com/stretchr/testify v1.11.1
|
||||
github.com/zeebo/blake3 v0.2.4
|
||||
golang.org/x/crypto v0.52.0
|
||||
)
|
||||
|
||||
require (
|
||||
capnproto.org/go/capnp/v3 v3.0.1-alpha.2 // indirect
|
||||
filippo.io/edwards25519 v1.2.0 // indirect
|
||||
filippo.io/hpke v0.4.0 // indirect
|
||||
github.com/ALTree/bigfloat v0.2.0 // indirect
|
||||
@@ -70,9 +65,6 @@ require (
|
||||
github.com/aws/smithy-go v1.24.2 // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/bits-and-blooms/bitset v1.24.4 // indirect
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.5.0 // indirect
|
||||
github.com/btcsuite/btcd/btcutil v1.1.6 // indirect
|
||||
github.com/btcsuite/btcd/chainhash/v2 v2.0.0 // indirect
|
||||
github.com/cenkalti/backoff v2.2.1+incompatible // indirect
|
||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/cloudflare/circl v1.6.3 // indirect
|
||||
@@ -82,7 +74,6 @@ require (
|
||||
github.com/cockroachdb/pebble v1.1.5 // indirect
|
||||
github.com/cockroachdb/redact v1.1.8 // indirect
|
||||
github.com/cockroachdb/tokenbucket v0.0.0-20250429170803-42689b6311bb // indirect
|
||||
github.com/colega/zeropool v0.0.0-20230505084239-6fb4a4f75381 // indirect
|
||||
github.com/cosmos/go-bip39 v1.0.0 // indirect
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect
|
||||
github.com/crate-crypto/go-eth-kzg v1.5.0 // indirect
|
||||
@@ -90,7 +81,6 @@ require (
|
||||
github.com/cronokirby/saferith v0.33.0 // indirect
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||
github.com/deckarep/golang-set/v2 v2.9.0 // indirect
|
||||
github.com/decred/dcrd/crypto/blake256 v1.1.0 // indirect
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.1 // indirect
|
||||
github.com/dgraph-io/ristretto/v2 v2.4.0 // indirect
|
||||
github.com/dlclark/regexp2 v1.11.5 // indirect
|
||||
@@ -100,10 +90,8 @@ require (
|
||||
github.com/ethereum/c-kzg-4844/v2 v2.1.7 // indirect
|
||||
github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab // indirect
|
||||
github.com/ferranbt/fastssz v1.0.0 // indirect
|
||||
github.com/fjl/gencodec v0.1.1 // indirect
|
||||
github.com/fsnotify/fsnotify v1.9.0 // indirect
|
||||
github.com/fxamacker/cbor/v2 v2.9.1 // indirect
|
||||
github.com/garslo/gogen v0.0.0-20170306192744-1d203ffc1f61 // indirect
|
||||
github.com/gballet/go-libpcsclite v0.0.0-20250918194357-1ec6f2e601c6 // indirect
|
||||
github.com/getsentry/sentry-go v0.46.2 // indirect
|
||||
github.com/go-ini/ini v1.67.0 // indirect
|
||||
@@ -112,17 +100,14 @@ require (
|
||||
github.com/go-logr/stdr v1.2.2 // indirect
|
||||
github.com/go-ole/go-ole v1.3.0 // indirect
|
||||
github.com/go-sourcemap/sourcemap v2.1.4+incompatible // indirect
|
||||
github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
|
||||
github.com/gofrs/flock v0.13.0 // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/golang/mock v1.7.0-rc.1 // indirect
|
||||
github.com/golang/snappy v1.0.0 // indirect
|
||||
github.com/google/flatbuffers v25.12.19+incompatible // indirect
|
||||
github.com/google/go-cmp v0.7.0 // indirect
|
||||
github.com/google/pprof v0.0.0-20260302011040-a15ffb7f9dcc // indirect
|
||||
github.com/google/renameio/v2 v2.0.2 // indirect
|
||||
github.com/google/uuid v1.6.0 // indirect
|
||||
github.com/gorilla/mux v1.8.1 // indirect
|
||||
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
|
||||
github.com/grandcat/zeroconf v1.0.0 // indirect
|
||||
github.com/gtank/merlin v0.1.1 // indirect
|
||||
@@ -130,7 +115,6 @@ require (
|
||||
github.com/hanzoai/vfs v0.4.3 // indirect
|
||||
github.com/hanzos3/crc64nvme v1.1.2 // indirect
|
||||
github.com/hanzos3/go v1.0.2 // indirect
|
||||
github.com/hanzos3/go-sdk v1.0.2 // indirect
|
||||
github.com/hanzos3/md5-simd v1.1.3 // indirect
|
||||
github.com/hashicorp/go-bexpr v0.1.16 // indirect
|
||||
github.com/holiman/billy v0.0.0-20250707135307-f2f9b9aae7db // indirect
|
||||
@@ -142,25 +126,22 @@ require (
|
||||
github.com/klauspost/crc32 v1.3.0 // indirect
|
||||
github.com/kr/pretty v0.3.1 // indirect
|
||||
github.com/kr/text v0.2.0 // indirect
|
||||
github.com/luxfi/address v1.1.1 // indirect
|
||||
github.com/luxfi/age v1.6.0 // indirect
|
||||
github.com/luxfi/api v1.1.9 // indirect
|
||||
github.com/luxfi/atomic v1.0.0 // indirect
|
||||
github.com/luxfi/cache v1.3.1 // indirect
|
||||
github.com/luxfi/codec v1.2.1 // indirect
|
||||
github.com/luxfi/compress v0.1.1 // indirect
|
||||
github.com/luxfi/concurrent v0.1.1 // indirect
|
||||
github.com/luxfi/container v0.2.2 // indirect
|
||||
github.com/luxfi/corona v0.10.4 // indirect
|
||||
github.com/luxfi/crypto/ipa v1.2.4 // indirect
|
||||
github.com/luxfi/dex v1.14.2 // indirect
|
||||
github.com/luxfi/dkg v0.3.5 // indirect
|
||||
github.com/luxfi/fhe v1.11.1 // indirect
|
||||
github.com/luxfi/filesystem v0.0.1 // indirect
|
||||
github.com/luxfi/formatting v1.1.1 // indirect
|
||||
github.com/luxfi/genesis v1.16.2 // indirect
|
||||
github.com/luxfi/go-bip32 v1.1.0 // indirect
|
||||
github.com/luxfi/go-bip39 v1.2.0 // indirect
|
||||
github.com/luxfi/gpu v1.1.2 // indirect
|
||||
github.com/luxfi/keychain v1.1.1 // indirect
|
||||
github.com/luxfi/lens v0.2.1 // indirect
|
||||
github.com/luxfi/magnetar v1.2.3 // indirect
|
||||
github.com/luxfi/math/big v0.1.0 // indirect
|
||||
@@ -168,41 +149,32 @@ require (
|
||||
github.com/luxfi/mdns v0.1.1 // indirect
|
||||
github.com/luxfi/mlwe v0.3.0 // indirect
|
||||
github.com/luxfi/mock v0.1.1 // indirect
|
||||
github.com/luxfi/net v0.1.1 // indirect
|
||||
github.com/luxfi/p2p v1.22.1 // indirect
|
||||
github.com/luxfi/pq v1.1.0 // indirect
|
||||
github.com/luxfi/proto v1.4.2 // indirect
|
||||
github.com/luxfi/pulsar v1.9.2 // indirect
|
||||
github.com/luxfi/resource v0.1.1 // indirect
|
||||
github.com/luxfi/sampler v1.1.0 // indirect
|
||||
github.com/luxfi/staking v1.6.1 // indirect
|
||||
github.com/luxfi/tls v1.1.1 // indirect
|
||||
github.com/luxfi/trace v1.2.1 // indirect
|
||||
github.com/luxfi/upgrade v1.0.3 // indirect
|
||||
github.com/luxfi/utils v1.3.1 // indirect
|
||||
github.com/luxfi/utxo v0.5.8 // indirect
|
||||
github.com/luxfi/zapdb v1.10.6 // indirect
|
||||
github.com/luxfi/zwing v0.6.1 // indirect
|
||||
github.com/mattn/go-colorable v0.1.15 // indirect
|
||||
github.com/mattn/go-isatty v0.0.22 // indirect
|
||||
github.com/miekg/dns v1.1.72 // indirect
|
||||
github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b // indirect
|
||||
github.com/minio/crc64nvme v1.1.1 // indirect
|
||||
github.com/minio/md5-simd v1.1.2 // indirect
|
||||
github.com/minio/sha256-simd v1.0.1 // indirect
|
||||
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||
github.com/mitchellh/pointerstructure v1.2.1 // indirect
|
||||
github.com/montanaflynn/stats v0.9.0 // indirect
|
||||
github.com/mr-tron/base58 v1.3.0 // indirect
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.3.0 // indirect
|
||||
github.com/philhofer/fwd v1.2.0 // indirect
|
||||
github.com/pion/dtls/v2 v2.2.12 // indirect
|
||||
github.com/pion/logging v0.2.4 // indirect
|
||||
github.com/pion/stun/v2 v2.0.0 // indirect
|
||||
github.com/pion/transport/v2 v2.2.10 // indirect
|
||||
github.com/pion/transport/v3 v3.1.1 // indirect
|
||||
github.com/pires/go-proxyproto v0.11.0 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
|
||||
github.com/prometheus/client_golang v1.23.2 // indirect
|
||||
@@ -210,18 +182,12 @@ require (
|
||||
github.com/prometheus/common v0.68.0 // indirect
|
||||
github.com/prometheus/procfs v0.20.1 // indirect
|
||||
github.com/rogpeppe/go-internal v1.15.0 // indirect
|
||||
github.com/rs/cors v1.11.1 // indirect
|
||||
github.com/rs/xid v1.6.0 // indirect
|
||||
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||
github.com/sagikazarmark/locafero v0.12.0 // indirect
|
||||
github.com/shirou/gopsutil v3.21.11+incompatible // indirect
|
||||
github.com/shopspring/decimal v1.4.0 // indirect
|
||||
github.com/spf13/afero v1.15.0 // indirect
|
||||
github.com/spf13/cast v1.10.0 // indirect
|
||||
github.com/spf13/pflag v1.0.10 // indirect
|
||||
github.com/spf13/viper v1.21.0 // indirect
|
||||
github.com/status-im/keycard-go v0.3.3 // indirect
|
||||
github.com/subosito/gotenv v1.6.0 // indirect
|
||||
github.com/supranational/blst v0.3.16 // indirect
|
||||
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
|
||||
github.com/tinylib/msgp v1.6.4 // indirect
|
||||
@@ -232,7 +198,7 @@ require (
|
||||
github.com/x448/float16 v0.8.4 // indirect
|
||||
github.com/xrash/smetrics v0.0.0-20250705151800-55b8f293f342 // indirect
|
||||
github.com/yusufpapurcu/wmi v1.2.4 // indirect
|
||||
github.com/zap-proto/http v0.0.0-20260506200741-fd6047874433 // indirect
|
||||
github.com/zeebo/blake3 v0.2.4 // indirect
|
||||
go.mongodb.org/mongo-driver v1.17.9 // indirect
|
||||
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
|
||||
go.opentelemetry.io/otel v1.44.0 // indirect
|
||||
@@ -240,8 +206,6 @@ require (
|
||||
go.opentelemetry.io/otel/sdk v1.43.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.44.0 // indirect
|
||||
go.uber.org/mock v0.6.0 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
go.uber.org/zap v1.27.1 // indirect
|
||||
go.yaml.in/yaml/v3 v3.0.4 // indirect
|
||||
golang.org/x/exp v0.0.0-20260529124908-c761662dc8c9 // indirect
|
||||
golang.org/x/mod v0.36.0 // indirect
|
||||
|
||||
@@ -1,41 +1,19 @@
|
||||
bazil.org/fuse v0.0.0-20230120002735-62a210ff1fd5/go.mod h1:gG3RZAMXCa/OTes6rr9EwusmR1OH1tDDy+cg9c5YliY=
|
||||
c2sp.org/CCTV/age v0.0.0-20251208015420-e9274a7bdbfd h1:ZLsPO6WdZ5zatV4UfVpr7oAwLGRZ+sebTUruuM4Ra3M=
|
||||
c2sp.org/CCTV/age v0.0.0-20251208015420-e9274a7bdbfd/go.mod h1:SrHC2C7r5GkDk8R+NFVzYy/sdj0Ypg9htaPXQq5Cqeo=
|
||||
capnproto.org/go/capnp/v3 v3.0.1-alpha.2 h1:W/cf+XEArUSwcBBE/9wS2NpWDkM5NLQOjmzEiHZpYi0=
|
||||
capnproto.org/go/capnp/v3 v3.0.1-alpha.2/go.mod h1:2vT5D2dtG8sJGEoEKU17e+j7shdaYp1Myl8X03B3hmc=
|
||||
codeberg.org/go-fonts/liberation v0.5.0/go.mod h1:zS/2e1354/mJ4pGzIIaEtm/59VFCFnYC7YV6YdGl5GU=
|
||||
codeberg.org/go-latex/latex v0.1.0/go.mod h1:LA0q/AyWIYrqVd+A9Upkgsb+IqPcmSTKc9Dny04MHMw=
|
||||
codeberg.org/go-pdf/fpdf v0.10.0/go.mod h1:Y0DGRAdZ0OmnZPvjbMp/1bYxmIPxm0ws4tfoPOc4LjU=
|
||||
connectrpc.com/connect v1.19.1/go.mod h1:tN20fjdGlewnSFeZxLKb0xwIZ6ozc3OQs2hTXy4du9w=
|
||||
filippo.io/edwards25519 v1.2.0 h1:crnVqOiS4jqYleHd9vaKZ+HKtHfllngJIiOpNpoJsjo=
|
||||
filippo.io/edwards25519 v1.2.0/go.mod h1:xzAOLCNug/yB62zG1bQ8uziwrIqIuxhctzJT18Q77mc=
|
||||
filippo.io/hpke v0.4.0 h1:p575VVQ6ted4pL+it6M00V/f2qTZITO0zgmdKCkd5+A=
|
||||
filippo.io/hpke v0.4.0/go.mod h1:EmAN849/P3qdeK+PCMkDpDm83vRHM5cDipBJ8xbQLVY=
|
||||
filippo.io/nistec v0.0.4/go.mod h1:PK/lw8I1gQT4hUML4QGaqljwdDaFcMyFKSXN7kjrtKI=
|
||||
git.sr.ht/~sbinet/gg v0.6.0/go.mod h1:uucygbfC9wVPQIfrmwM2et0imr8L7KQWywX0xpFMm94=
|
||||
github.com/ALTree/bigfloat v0.2.0 h1:AwNzawrpFuw55/YDVlcPw0F0cmmXrmngBHhVrvdXPvM=
|
||||
github.com/ALTree/bigfloat v0.2.0/go.mod h1:+NaH2gLeY6RPBPPQf4aRotPPStg+eXc8f9ZaE4vRfD4=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0/go.mod h1:t76Ruy8AHvUAC8GfMWJMa0ElSbuIcO03NLpynfbgsPA=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0/go.mod h1:7dCRMLwisfRH3dBupKeNCioWYUZ4SS09Z14H+7i8ZoY=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.4/go.mod h1:8mwH4klAm9DUgR2EEHyEEAQlRDvLPyg5fQry3y+cDew=
|
||||
github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
||||
github.com/ChainSafe/go-schnorrkel v1.1.0 h1:rZ6EU+CZFCjB4sHUE1jIu8VDoB/wRKZxoe1tkcO71Wk=
|
||||
github.com/ChainSafe/go-schnorrkel v1.1.0/go.mod h1:ABkENxiP+cvjFiByMIZ9LYbRoNNLeBLiakC1XeTFxfE=
|
||||
github.com/DataDog/zstd v1.5.7 h1:ybO8RBeh29qrxIhCA9E8gKY6xfONU9T6G6aP9DTKfLE=
|
||||
github.com/DataDog/zstd v1.5.7/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
|
||||
github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo=
|
||||
github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
|
||||
github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
|
||||
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
|
||||
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
|
||||
github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20260311194731-d5b7577c683d/go.mod h1:ioLG6R+5bUSO1oeGSDxOV3FADARuMoytZCSX6MEMQkI=
|
||||
github.com/StephenButtolph/canoto v0.17.3/go.mod h1:IcnAHC6nJUfQFVR9y60ko2ecUqqHHSB6UwI9NnBFZnE=
|
||||
github.com/aclements/go-moremath v0.0.0-20210112150236-f10218a38794/go.mod h1:7e+I0LQFUI9AXWxOfsQROs9xPhoJtbsyWcjJqDd4KPY=
|
||||
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
|
||||
github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM=
|
||||
github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
|
||||
github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b/go.mod h1:fvzegU4vN3H1qMT+8wDmzjAcDONcgo2/SZ/TyfdUOFs=
|
||||
github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk=
|
||||
github.com/aws/aws-sdk-go-v2 v1.41.5 h1:dj5kopbwUsVUVFgO4Fi5BIT3t4WyqIDjGKCangnV/yY=
|
||||
github.com/aws/aws-sdk-go-v2 v1.41.5/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=
|
||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 h1:eBMB84YGghSocM7PsjmmPffTa+1FBUeNvGvFou6V/4o=
|
||||
@@ -62,7 +40,6 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21 h1:c31//R3x
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21/go.mod h1:r6+pf23ouCB718FUxaqzZdbpYFyDtehyZcmP5KL9FkA=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.21 h1:ZlvrNcHSFFWURB8avufQq9gFsheUgjVD9536obIknfM=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.21/go.mod h1:cv3TNhVrssKR0O/xxLJVRfd2oazSnZnkUeTf6ctUwfQ=
|
||||
github.com/aws/aws-sdk-go-v2/service/route53 v1.62.5/go.mod h1:TmxGowuBYwjmHFOsEDxaZdsQE62JJzOmtiWafTi/czg=
|
||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.97.3 h1:HwxWTbTrIHm5qY+CAEur0s/figc3qwvLWsNkF4RPToo=
|
||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.97.3/go.mod h1:uoA43SdFwacedBfSgfFSjjCvYe8aYBS7EnU5GZ/YKMM=
|
||||
github.com/aws/aws-sdk-go-v2/service/signin v1.0.9 h1:QKZH0S178gCmFEgst8hN0mCX1KxLgHBKKY/CLqwP8lg=
|
||||
@@ -79,50 +56,20 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
||||
github.com/bits-and-blooms/bitset v1.24.4 h1:95H15Og1clikBrKr/DuzMXkQzECs1M6hhoGXLwLQOZE=
|
||||
github.com/bits-and-blooms/bitset v1.24.4/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
|
||||
github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ=
|
||||
github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M=
|
||||
github.com/btcsuite/btcd v0.23.5-0.20231215221805-96c9fd8078fd/go.mod h1:nm3Bko6zh6bWP60UxwoT5LzdGJsQJaPo6HjduXq9p6A=
|
||||
github.com/btcsuite/btcd v0.24.2/go.mod h1:5C8ChTkl5ejr3WHj8tkQSCmydiMEPB0ZhQhehpq7Dgg=
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA=
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE=
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.5.0 h1:KioMXOWa76b86sTZZOmbzv/ldaQCmB8KFAyn5PbB8E8=
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.5.0/go.mod h1:+K/MYXcLBtHEQjRbjHuJChuybk4LCgjdjgRwil+e+Kk=
|
||||
github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A=
|
||||
github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE=
|
||||
github.com/btcsuite/btcd/btcutil v1.1.5/go.mod h1:PSZZ4UitpLBWzxGd5VGOrLnmOjtPP/a6HaFo12zMs00=
|
||||
github.com/btcsuite/btcd v0.24.2 h1:aLmxPguqxza+4ag8R1I2nnJjSu2iFn/kqtHTIImswcY=
|
||||
github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c=
|
||||
github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE=
|
||||
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
|
||||
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
|
||||
github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
|
||||
github.com/btcsuite/btcd/chainhash/v2 v2.0.0 h1:PMLlSloHJuEeB80XG9EjpXWNEKAZAMLl6YHZ6YsEuoA=
|
||||
github.com/btcsuite/btcd/chainhash/v2 v2.0.0/go.mod h1:mKxcZ7oGTXE7IRV+sS9hP4EVBwc/SzfNR+52IsOP9j8=
|
||||
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA=
|
||||
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
|
||||
github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg=
|
||||
github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY=
|
||||
github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I=
|
||||
github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=
|
||||
github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=
|
||||
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY=
|
||||
github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs=
|
||||
github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
|
||||
github.com/campoy/embedmd v1.0.0/go.mod h1:oxyr9RCiSXg0M3VJ3ks0UGfp98BpSSGr0kpiX3MzVl8=
|
||||
github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
|
||||
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
|
||||
github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=
|
||||
github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk=
|
||||
github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s=
|
||||
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
||||
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
||||
github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk=
|
||||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||
github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM=
|
||||
github.com/cloudflare/circl v1.6.3 h1:9GPOhQGF9MCYUeXyMYlqTR6a5gTrgR/fBLXvUgtVcg8=
|
||||
github.com/cloudflare/circl v1.6.3/go.mod h1:2eXP6Qfat4O/Yhh8BznvKnJ+uzEoTQ6jVKJRn81BiS4=
|
||||
github.com/cloudflare/cloudflare-go v0.116.0/go.mod h1:Ds6urDwn/TF2uIU24mu7H91xkKP8gSAHxQ44DSZgVmU=
|
||||
github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4=
|
||||
github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU=
|
||||
github.com/cockroachdb/errors v1.13.0 h1:BoCcJeiP9hpBJDETkX19qi8Tb8So37srSsp3stTaDMQ=
|
||||
@@ -137,10 +84,6 @@ github.com/cockroachdb/redact v1.1.8 h1:8eVLLj6juKxiKrAEw2b8cJvNqWq++U8WOfQFuL7K
|
||||
github.com/cockroachdb/redact v1.1.8/go.mod h1:GceHHpJ0rMDpYARL5In88Alq/xMBUtVlz7Qxix6ZVkw=
|
||||
github.com/cockroachdb/tokenbucket v0.0.0-20250429170803-42689b6311bb h1:3bCgBvB8PbJVMX1ouCcSIxvsqKPYM7gs72o0zC76n9g=
|
||||
github.com/cockroachdb/tokenbucket v0.0.0-20250429170803-42689b6311bb/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ=
|
||||
github.com/coder/websocket v1.8.12/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs=
|
||||
github.com/colega/zeropool v0.0.0-20230505084239-6fb4a4f75381 h1:d5EKgQfRQvO97jnISfR89AiCCCJMwMFoSxUiU0OGCRU=
|
||||
github.com/colega/zeropool v0.0.0-20230505084239-6fb4a4f75381/go.mod h1:OU76gHeRo8xrzGJU3F3I1CqX1ekM8dfJw0+wPeMwnp0=
|
||||
github.com/consensys/bavard v0.2.2-0.20260118153501-cba9f5475432/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs=
|
||||
github.com/consensys/gnark-crypto v0.20.1 h1:PXDUBvk8AzhvWowHLWBEAfUQcV1/aZgWIqD6eMpXmDg=
|
||||
github.com/consensys/gnark-crypto v0.20.1/go.mod h1:RBWrSgy+IDbGR69RRV313th3M/aZU1ubk2om+qHuTSc=
|
||||
github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY=
|
||||
@@ -154,7 +97,6 @@ github.com/crate-crypto/go-kzg-4844 v1.1.0/go.mod h1:JolLjpSff1tCCJKaJx4psrlEdlX
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/cronokirby/saferith v0.33.0 h1:TgoQlfsD4LIwx71+ChfRcIpjkw+RPOapDEVxa+LhwLo=
|
||||
github.com/cronokirby/saferith v0.33.0/go.mod h1:QKJhjoqUtBsXCAVEjw38mFqoi7DebT7kthcD7UzbnoA=
|
||||
github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
|
||||
@@ -163,23 +105,18 @@ github.com/dchest/siphash v1.2.3 h1:QXwFc8cFOR2dSa/gE6o/HokBMWtLUaNDVd+22aKHeEA=
|
||||
github.com/dchest/siphash v1.2.3/go.mod h1:0NvQU092bT0ipiFN++/rXm69QG9tVxLAlQHIXMPAkHc=
|
||||
github.com/deckarep/golang-set/v2 v2.9.0 h1:prva4eP9UysWagLyKrtn074ughi0NnkIf0A4M5yOCKI=
|
||||
github.com/deckarep/golang-set/v2 v2.9.0/go.mod h1:EWknQXbs0mcFpat2QOoXV0Ee57cD+w6ZEN76BR2JVrM=
|
||||
github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
|
||||
github.com/decred/dcrd/crypto/blake256 v1.1.0 h1:zPMNGQCm0g4QTY27fOCorQW7EryeQ/U0x++OzVrdms8=
|
||||
github.com/decred/dcrd/crypto/blake256 v1.1.0/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.1 h1:5RVFMOWjMyRy8cARdy79nAmgYw3hK/4HUq48LQ6Wwqo=
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.1/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40=
|
||||
github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218=
|
||||
github.com/dgraph-io/ristretto/v2 v2.4.0 h1:I/w09yLjhdcVD2QV192UJcq8dPBaAJb9pOuMyNy0XlU=
|
||||
github.com/dgraph-io/ristretto/v2 v2.4.0/go.mod h1:0KsrXtXvnv0EqnzyowllbVJB8yBonswa2lTCK2gGo9E=
|
||||
github.com/dgryski/go-farm v0.0.0-20240924180020-3414d57e47da h1:aIftn67I1fkbMa512G+w+Pxci9hJPB8oMnkcP3iZF38=
|
||||
github.com/dgryski/go-farm v0.0.0-20240924180020-3414d57e47da/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
|
||||
github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ=
|
||||
github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
|
||||
github.com/donovanhide/eventsource v0.0.0-20210830082556-c59027999da0/go.mod h1:56wL82FO0bfMU5RvfXoIwSOP2ggqqxT+tAfNEIyxuHw=
|
||||
github.com/dop251/goja v0.0.0-20260311135729-065cd970411c h1:OcLmPfx1T1RmZVHHFwWMPaZDdRf0DBMZOFMVWJa7Pdk=
|
||||
github.com/dop251/goja v0.0.0-20260311135729-065cd970411c/go.mod h1:MxLav0peU43GgvwVgNbLAj1s/bSGboKkhuULvq/7hx4=
|
||||
github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d/go.mod h1:DngW8aVqWbuLRMHItjPUyqdj+HWPvnQe8V8y1nDpIbM=
|
||||
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
||||
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
||||
github.com/emicklei/dot v1.11.0 h1:zsrhCuFHAJge/aZIC4N4LdHy5tqYu4tWEaUzIwdYj4Y=
|
||||
@@ -188,13 +125,8 @@ github.com/ethereum/c-kzg-4844/v2 v2.1.7 h1:aat3CuITdDbPC6pmEGRT0zJ5eOxzrZj8TJT5
|
||||
github.com/ethereum/c-kzg-4844/v2 v2.1.7/go.mod h1:8HMkUZ5JRv4hpw/XUrYWSQNAUzhHMg2UDb/U+5m+XNw=
|
||||
github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab h1:rvv6MJhy07IMfEKuARQ9TKojGqLVNxQajaXEp/BoqSk=
|
||||
github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab/go.mod h1:IuLm4IsPipXKF7CW5Lzf68PIbZ5yl7FFd74l/E0o9A8=
|
||||
github.com/ethereum/go-ethereum v1.10.26/go.mod h1:EYFyF19u3ezGLD4RqOkLq+ZCXzYbLoNDdZlMt7kyKFg=
|
||||
github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE=
|
||||
github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
|
||||
github.com/ferranbt/fastssz v1.0.0 h1:9EXXYsracSqQRBQiHeaVsG/KQeYblPf40hsQPb9Dzk8=
|
||||
github.com/ferranbt/fastssz v1.0.0/go.mod h1:Ea3+oeoRGGLGm5shYAeDgu6PGUlcvQhE2fILyD9+tGg=
|
||||
github.com/fjl/gencodec v0.1.1 h1:DhQY29Q6JLXB/GgMqE86NbOEuvckiYcJCbXFu02toms=
|
||||
github.com/fjl/gencodec v0.1.1/go.mod h1:chDHL3wKXuBgauP8x3XNZkl5EIAR5SoCTmmmDTZRzmw=
|
||||
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
|
||||
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
@@ -204,13 +136,10 @@ github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S
|
||||
github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
|
||||
github.com/fxamacker/cbor/v2 v2.9.1 h1:2rWm8B193Ll4VdjsJY28jxs70IdDsHRWgQYAI80+rMQ=
|
||||
github.com/fxamacker/cbor/v2 v2.9.1/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
|
||||
github.com/garslo/gogen v0.0.0-20170306192744-1d203ffc1f61 h1:IZqZOB2fydHte3kUgxrzK5E1fW7RQGeDwE8F/ZZnUYc=
|
||||
github.com/garslo/gogen v0.0.0-20170306192744-1d203ffc1f61/go.mod h1:Q0X6pkwTILDlzrGEckF6HKjXe48EgsY/l7K7vhY4MW8=
|
||||
github.com/gballet/go-libpcsclite v0.0.0-20250918194357-1ec6f2e601c6 h1:ko+DlyhLqUHpgrvwqs5ybydoGAqjpJQTXpAS7vUqVlM=
|
||||
github.com/gballet/go-libpcsclite v0.0.0-20250918194357-1ec6f2e601c6/go.mod h1:3IVE7v4II2gS2V5amIH7F7NeYQtbbORtQtjdflgS1vk=
|
||||
github.com/getsentry/sentry-go v0.46.2 h1:1jhYwrKGa3sIpo/y5iDNXS5wDoT7I1KNzMHrnK6ojns=
|
||||
github.com/getsentry/sentry-go v0.46.2/go.mod h1:evVbw2qotNUdYG8KxXbAdjOQWWvWIwKxpjdZZIvcIPw=
|
||||
github.com/ghemawat/stream v0.0.0-20171120220530-696b145b53b9/go.mod h1:106OIgooyS7OzLDOpUGgm9fA3bQENb/cFSyyBmMoJDs=
|
||||
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
|
||||
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
|
||||
github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A=
|
||||
@@ -227,28 +156,16 @@ github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
|
||||
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
|
||||
github.com/go-sourcemap/sourcemap v2.1.4+incompatible h1:a+iTbH5auLKxaNwQFg0B+TCYl6lbukKPc7b5x0n1s6Q=
|
||||
github.com/go-sourcemap/sourcemap v2.1.4+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg=
|
||||
github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4=
|
||||
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I=
|
||||
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
|
||||
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
|
||||
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
|
||||
github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro=
|
||||
github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
|
||||
github.com/goccmack/gocc v1.0.2/go.mod h1:LXX2tFVUggS/Zgx/ICPOr3MLyusuM7EcbfkPvNsjdO8=
|
||||
github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
|
||||
github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=
|
||||
github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw=
|
||||
github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0=
|
||||
github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4=
|
||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM=
|
||||
github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI=
|
||||
github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
|
||||
github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE=
|
||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
|
||||
github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U=
|
||||
github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||
@@ -258,11 +175,9 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq
|
||||
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs=
|
||||
github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
|
||||
github.com/google/flatbuffers v25.12.19+incompatible h1:haMV2JRRJCe1998HeW/p0X9UaMTK6SDo0ffLn2+DbLs=
|
||||
github.com/google/flatbuffers v25.12.19+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
|
||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
@@ -271,7 +186,6 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
||||
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
||||
github.com/google/go-querystring v1.2.0/go.mod h1:8IFJqpSRITyJ8QhQ13bmbeMBDfmeEJZD5A0egEOmkqU=
|
||||
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
|
||||
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||
@@ -281,30 +195,22 @@ github.com/google/renameio/v2 v2.0.2 h1:qKZs+tfn+arruZZhQ7TKC/ergJunuJicWS6gLDt/
|
||||
github.com/google/renameio/v2 v2.0.2/go.mod h1:OX+G6WHHpHq3NVj7cAOleLOwJfcQ1s3uUJQCrr78SWo=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
|
||||
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
|
||||
github.com/gorilla/rpc v1.2.1 h1:yC+LMV5esttgpVvNORL/xX4jvTTEUE30UZhZ5JF7K9k=
|
||||
github.com/gorilla/rpc v1.2.1/go.mod h1:uNpOihAlF5xRFLuTYhfR0yfCTm0WTQSQttkMSptRfGk=
|
||||
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 h1:JeSE6pjso5THxAzdVpqr6/geYxZytqFMBCOtn/ujyeo=
|
||||
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA=
|
||||
github.com/grandcat/zeroconf v1.0.0 h1:uHhahLBKqwWBV6WZUDAT71044vwOTL+McW0mBJvo6kE=
|
||||
github.com/grandcat/zeroconf v1.0.0/go.mod h1:lTKmG1zh86XyCoUeIHSA4FJMBwCJiQmGfcP2PdzytEs=
|
||||
github.com/graph-gophers/graphql-go v1.9.0/go.mod h1:23olKZ7duEvHlF/2ELEoSZaY1aNPfShjP782SOoNTyM=
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c=
|
||||
github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is=
|
||||
github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s=
|
||||
github.com/gtank/ristretto255 v0.2.0 h1:LeOuWr6giplWkkMizx2emfG03SRPJqKt1nfIHLVHQ/0=
|
||||
github.com/gtank/ristretto255 v0.2.0/go.mod h1:OJ1ox/dWcp7sJ5grYDcZ+kkHYuj5nelW5aaL7ESVXBw=
|
||||
github.com/guptarohit/asciigraph v0.5.5/go.mod h1:dYl5wwK4gNsnFf9Zp+l06rFiDZ5YtXM6x7SRWZ3KGag=
|
||||
github.com/hanzoai/vfs v0.4.3 h1:QN9SemEQBq9x1l/toi51/TZWctbt3i3mgUJfz5RPALY=
|
||||
github.com/hanzoai/vfs v0.4.3/go.mod h1:wTHfTpJ/165yz0qfPBNFcYRg+tGw8YDwPu+xgps88zU=
|
||||
github.com/hanzos3/crc64nvme v1.1.2 h1:LVZSxgYqmE0qrW4rRZCivD4qcP75SQaXCAuBm0D8OQE=
|
||||
github.com/hanzos3/crc64nvme v1.1.2/go.mod h1:nUrSo9VBx/TA/OlF3zv2F1xK+nHBp7mVhtMPz8cg+zU=
|
||||
github.com/hanzos3/go v1.0.2 h1:DK0sqmNSqs2Uteayi7VHVskp8Cj+joarBfLnkOzeGzI=
|
||||
github.com/hanzos3/go v1.0.2/go.mod h1:x6QkgFvf3NUN6Crc/zB0qR4lu8pj5ubqbJLu0pNVDI8=
|
||||
github.com/hanzos3/go-sdk v1.0.2 h1:EOJQGVnwclkzIyRJyWqtqmA2muyaSsF4y+7KYC4Vhdw=
|
||||
github.com/hanzos3/go-sdk v1.0.2/go.mod h1:oOp/rYVDpZIv2Mn3ZacAUiIahRNOi+V/vlGukvIcuI0=
|
||||
github.com/hanzos3/md5-simd v1.1.3 h1:J2iC5I9BnK3dT8baCBqyVz6kmA66MPGlN1H8C4e6+zU=
|
||||
github.com/hanzos3/md5-simd v1.1.3/go.mod h1:/Zmk10TVcOVcjtrXrkWn2NyfCMmNUTaN9DQI3bseYpo=
|
||||
github.com/hashicorp/go-bexpr v0.1.16 h1:D+fKoGyUzXVS0FdjOX1ws3vIck8DVtBqQ0tsusmYDR8=
|
||||
@@ -320,32 +226,13 @@ github.com/holiman/uint256 v1.3.2/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXei
|
||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||
github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
|
||||
github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
|
||||
github.com/hydrogen18/memlistener v1.0.0/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE=
|
||||
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||
github.com/ianlancetaylor/demangle v0.0.0-20250417193237-f615e6bd150b/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw=
|
||||
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||
github.com/influxdata/influxdb-client-go/v2 v2.14.0/go.mod h1:Ahpm3QXKMJslpXl3IftVLVezreAUtBOTZssDrjZEFHI=
|
||||
github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
|
||||
github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo=
|
||||
github.com/jackpal/gateway v1.1.1/go.mod h1:Tl1vZVtUaXx5j6P5HFmv45alhEi4yHHLfT4PRbB7eyw=
|
||||
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
|
||||
github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
|
||||
github.com/jacobsa/fuse v0.0.0-20260302145937-f1ba38d60fdf/go.mod h1:fcpw1yk/suvFhB8rT9P+pst+NLboWsBLky9csooKjPc=
|
||||
github.com/jedisct1/go-minisign v0.0.0-20241212093149-d2f9f49435c7/go.mod h1:BMxO138bOokdgt4UaxZiEfypcSHX0t6SIFimVP1oRfk=
|
||||
github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
||||
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
||||
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
|
||||
github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ=
|
||||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
|
||||
github.com/kilic/bls12-381 v0.1.0/go.mod h1:vDTTHJONJ6G+P2R74EhnyotQDTliQDnFEwhdmfzw1ig=
|
||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
|
||||
github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE=
|
||||
github.com/klauspost/compress v1.18.6 h1:2jupLlAwFm95+YDR+NwD2MEfFO9d4z4Prjl1XXDjuao=
|
||||
github.com/klauspost/compress v1.18.6/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
|
||||
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||
github.com/klauspost/cpuid/v2 v2.0.6/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||
github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=
|
||||
github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
|
||||
@@ -359,10 +246,6 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0
|
||||
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
|
||||
github.com/leanovate/gopter v0.2.11 h1:vRjThO1EKPb/1NsDXuDrzldR28RLkBflWYcU9CvzWu4=
|
||||
github.com/leanovate/gopter v0.2.11/go.mod h1:aK3tzZP/C+p1m3SPRE4SYZFGP7jjkuSI4f7Xvpt0S9c=
|
||||
github.com/luxfi/accel v1.2.4 h1:5VbIHyEvvfobn2zBiTFODxDw1CeqxCepZOLlvkuf9yQ=
|
||||
github.com/luxfi/accel v1.2.4/go.mod h1:ISIwAX+ZfsL/S5nsP2JvfldXN6Nc+QzoWf6Jtaq+xsQ=
|
||||
github.com/luxfi/accel v1.3.1 h1:hr4Vu0yPWVh8DFMmwkr4erFvD9D5LdsP9eQjlzL3880=
|
||||
github.com/luxfi/accel v1.3.1/go.mod h1:ISIwAX+ZfsL/S5nsP2JvfldXN6Nc+QzoWf6Jtaq+xsQ=
|
||||
github.com/luxfi/accel v1.3.2 h1:/3/LEf5mTCp9qbsSJmGoPLpXG28+HPqxD2+IC7WnhWY=
|
||||
github.com/luxfi/accel v1.3.2/go.mod h1:ISIwAX+ZfsL/S5nsP2JvfldXN6Nc+QzoWf6Jtaq+xsQ=
|
||||
github.com/luxfi/address v1.1.1 h1:4afWzyBWzTiZN7RenBtdMC9LIvP9L4CSBzSquwKEAgI=
|
||||
@@ -371,56 +254,34 @@ github.com/luxfi/age v1.6.0 h1:KMD8gSOP4NVCb7NWSlRcgBZNV2xm2a+qQWPyPmiX6f4=
|
||||
github.com/luxfi/age v1.6.0/go.mod h1:7cu9CIyikgyAvr5MlXFapEDQ15yBaHOSdKkK5lG04WE=
|
||||
github.com/luxfi/ai v0.1.0 h1:PwTGob0GJivbdqNpUs82bvwcE8/qxyTokxfY7BZVPoo=
|
||||
github.com/luxfi/ai v0.1.0/go.mod h1:lTuY32dGjEJUgVheYuanlt1O0jHj0AZ09sUSpRsmH6M=
|
||||
github.com/luxfi/api v1.1.1 h1:CXD7m0quPmUm+Qw35TrF+E7b0Fq4qz9gHfrZ5gyrjHU=
|
||||
github.com/luxfi/api v1.1.1/go.mod h1:g6J0iohVqaIj2aO1u/ZJPqjiX2tog0NM3/SBf7wJ4cA=
|
||||
github.com/luxfi/api v1.1.3 h1:BznTWnRwubABs5iWotOMiEsoiK7nKASa68UAPyKs3ro=
|
||||
github.com/luxfi/api v1.1.3/go.mod h1:I8nB0+qNkJ7CHZpQl5Oy8ik3m53C/Dl33RkSD7EzUg4=
|
||||
github.com/luxfi/api v1.1.6 h1:HcnFwpBeVL8ZPYjJIC7LH8ZP2c5KxiRp26tK1uIPNVo=
|
||||
github.com/luxfi/api v1.1.6/go.mod h1:I8nB0+qNkJ7CHZpQl5Oy8ik3m53C/Dl33RkSD7EzUg4=
|
||||
github.com/luxfi/api v1.1.9 h1:JBSnh8P/6JARW8oADPLdTb9qMdh1WsJrQEAhsWKhBmY=
|
||||
github.com/luxfi/api v1.1.9/go.mod h1:I8nB0+qNkJ7CHZpQl5Oy8ik3m53C/Dl33RkSD7EzUg4=
|
||||
github.com/luxfi/atomic v1.0.0 h1:xUV60MuzRvXngaQ1sM0yVC2v4TRoLlUGkkH7M9PS4yw=
|
||||
github.com/luxfi/atomic v1.0.0/go.mod h1:0G2mTlQ6TXWHICUHrUUPu1/qAiIyR4gSZ2tva9ci/bI=
|
||||
github.com/luxfi/bft v0.1.5/go.mod h1:5I8Ft8yA69xZlDe3RB0i4MgbqFKLZe65o/sha8JuKvU=
|
||||
github.com/luxfi/cache v1.3.1 h1:grQhi/B5GKypG7avDMeY143QTgFbfEvQICKNIh1Cw6U=
|
||||
github.com/luxfi/cache v1.3.1/go.mod h1:2MokdbeNUy/9O3mdREWkE6BiN7tRvePkXiKkcb+4M7g=
|
||||
github.com/luxfi/codec v1.2.1 h1:NA/O3dWm9QejQPdjLEIVx42ddVqAXsy6Y6igL/V1+aU=
|
||||
github.com/luxfi/codec v1.2.1/go.mod h1:xjWOTEbw9gxY/N8nZwQPvRCfPnK/ugJHBWsb3BZ0HHs=
|
||||
github.com/luxfi/compress v0.1.1 h1:cQjRYQFRrw8HinjW1T8FmKgqdRwrFYDCdecc1t0i+uQ=
|
||||
github.com/luxfi/compress v0.1.1/go.mod h1:d4CkRRmwPzafIp57Jxra3RmAmNwNwU8Oc0QBBRlTqGo=
|
||||
github.com/luxfi/concurrent v0.1.1 h1:LkAmNXybOsAm97nFILqMDBp/YLgleuLmyGomFT7YNxU=
|
||||
github.com/luxfi/concurrent v0.1.1/go.mod h1:GlkfiJtPBpatNxvROf7hkPi4gsnmdHGmqhDnVWFrkZE=
|
||||
github.com/luxfi/consensus v1.36.2 h1:eKzasq4O0XPc2YBgOUtb77dU8LLVVxwrxiDehVfBXvk=
|
||||
github.com/luxfi/consensus v1.36.2/go.mod h1:JJ7TxUmFCuH4/dJUmj9gDAKT2cJGL1v5g2pGyNPNJhU=
|
||||
github.com/luxfi/consensus v1.36.63 h1:lgDVIQKmx8v184VVA/8qNMT5wXMqlJEZG3zX32mnyis=
|
||||
github.com/luxfi/consensus v1.36.63/go.mod h1:BxuxU2P5FUtOexN3e4AFlY4k8ESJi5hs2WtRE7pEL/A=
|
||||
github.com/luxfi/constants v1.6.2 h1:pXHdKIFbfE9qX4xOjq2LxYvagNhhNvspUVEbPcIEKfA=
|
||||
github.com/luxfi/constants v1.6.2/go.mod h1:r0oH8C/+r/XFYBq1AJxt6zWRKKRKgDzrEMop/CCs9rI=
|
||||
github.com/luxfi/container v0.2.1 h1:MTnfKXzS5+oxV5jKZerdOxSA6iMPaQI9/FWGufizzaw=
|
||||
github.com/luxfi/container v0.2.1/go.mod h1:B+uM0wP0lGvt/SSK7QOEn/qBcsHzILVHlKikdCyzSgM=
|
||||
github.com/luxfi/container v0.2.2 h1:/IunVpvNuwsqwAYjJSibDskmH/39y4pRKQxrrMLF5Qk=
|
||||
github.com/luxfi/container v0.2.2/go.mod h1:owTgLOeBnjPK9Ow+/M9Cy9ulLNit6O8M/tWn6rqq7C4=
|
||||
github.com/luxfi/corona v0.10.4 h1:/+Uy5iOWBMkr+XACnRRiyrbb5ebsZLsUXjHfJW3sFyw=
|
||||
github.com/luxfi/corona v0.10.4/go.mod h1:44Tjnm2uRG22kmmLfCzR8QEO8OXZ3jR/OnUKLsnjVJ8=
|
||||
github.com/luxfi/crypto v1.20.2 h1:L81WEsU/hs2A76F5PWBusG0yU74QqkDdUqqgexWUxh4=
|
||||
github.com/luxfi/crypto v1.20.2/go.mod h1:qYHOM0lO4PRh7LEaObxFQUIMjmT1/paVm/WgZkobT1k=
|
||||
github.com/luxfi/crypto v1.20.5 h1:kL69Ewyr90A/wQsTnIK8Zj6cHUPYvM1WHhgSErc2Yh0=
|
||||
github.com/luxfi/crypto v1.20.5/go.mod h1:gic3n9puSJhZFonBfmIwc5Cck/SMqetxpcfzrk9gna8=
|
||||
github.com/luxfi/crypto/ipa v1.2.4 h1:6xfwhI9/HrcDkF3Ti5/NxsNQIWbwYDJmRSNIHRQ/xfU=
|
||||
github.com/luxfi/crypto/ipa v1.2.4/go.mod h1:43J6f6rcfUMrZt4cQectMOZb6Ps+fAEj8ZTPC3Kk+gE=
|
||||
github.com/luxfi/database v1.21.1 h1:GNnoWVa82l+n2dK7x2aG8LR2NEToq6ZCRX0sQjmK0OM=
|
||||
github.com/luxfi/database v1.21.1/go.mod h1:Gc7Z2OPrrcYLnAL8B1trOnguXauOlSDV5tkviLN6Xec=
|
||||
github.com/luxfi/database v1.21.5 h1:ZKSD5FfpDJzKhLzMusZMtJt64AhS8AAGgTYkdiDFH8c=
|
||||
github.com/luxfi/database v1.21.5/go.mod h1:xyzYWICv/QEu+l/42jdaQtClF8/hPTiQywn+xsM7CtQ=
|
||||
github.com/luxfi/dex v1.14.0 h1:4PtorVbRmbD73S6YWPvgp5GRCb9jeuaedl7mo1CbzCI=
|
||||
github.com/luxfi/dex v1.14.0/go.mod h1:wYWQmwospvdKBWQ6OJMXb8I+kfgEtE46R1rD8H7vHCQ=
|
||||
github.com/luxfi/dex v1.14.2 h1:SAm8UuyItXy9U7Gshi/HwNiXOZq1UIILxwuh8dMt41w=
|
||||
github.com/luxfi/dex v1.14.2/go.mod h1:wYWQmwospvdKBWQ6OJMXb8I+kfgEtE46R1rD8H7vHCQ=
|
||||
github.com/luxfi/dkg v0.3.5 h1:s2L2mMQaz+n9m0b0ghvoV5VZNxiwb2z4WrGugvK0udY=
|
||||
github.com/luxfi/dkg v0.3.5/go.mod h1:M+WH7GFRN+YUD851Rlnumdp0Md98kplNN8pVx65U8I8=
|
||||
github.com/luxfi/evm v1.104.10 h1:4c4ZpZz5EW3RwxEIC/sGFB+M3xKnbIj+LOuSa2zY/TQ=
|
||||
github.com/luxfi/evm v1.104.29 h1:DyjPeHm8GBHHbLy1tntKdbYeEkdS/yBOeEWAljMN+Xg=
|
||||
github.com/luxfi/evm v1.104.29/go.mod h1:n020OYht3istzB4+nAhLt+21vkjLGGtCSmBg9IPSM7M=
|
||||
github.com/luxfi/evm v1.104.30 h1:OEl96LVmso7rdgJCRh/gSV/NbKQNyc+ah5+Q+edBS3E=
|
||||
github.com/luxfi/evm v1.104.30/go.mod h1:n020OYht3istzB4+nAhLt+21vkjLGGtCSmBg9IPSM7M=
|
||||
github.com/luxfi/fhe v1.11.1 h1:fDTpXhWrqgtrmgvu/tOkDt4A5omJ6cU6u/wrRMBC6lc=
|
||||
@@ -429,27 +290,16 @@ github.com/luxfi/filesystem v0.0.1 h1:VZ6xMFKaAPBW/ddlMsDnI2G0VU1lV5rYaVcW5d+KwE
|
||||
github.com/luxfi/filesystem v0.0.1/go.mod h1:OQVSU6XNwqrr1AI+MqkID2taHUclx7NYmmr3svgttec=
|
||||
github.com/luxfi/formatting v1.1.1 h1:MJhVXIPh1dbysvYEjtaEA/Z0FUTiI7n0DwOF54FS08c=
|
||||
github.com/luxfi/formatting v1.1.1/go.mod h1:zhBWp6fLZduhpiAdPgVDdPVOyhw4FvwRUksF6+xKQCE=
|
||||
github.com/luxfi/genesis v1.16.2 h1:OLQg5+ln8qgORBYnJuQsZxar8AfZlsXg5g/f95AraPI=
|
||||
github.com/luxfi/genesis v1.16.2/go.mod h1:piaSqJY80eVpgov8DUWQXll9IdlCroWgvhnwC7/3lTA=
|
||||
github.com/luxfi/genesis/builder v0.1.0/go.mod h1:p0vgZzt/aOTSlpw7VSvhh4Wfdp99FErW37CDlCAp88o=
|
||||
github.com/luxfi/genesis/pkg/genesis/security v1.13.8/go.mod h1:DzU+GYUFv12ja4Vc46bWKNBBmNYbcow3u/DASx4wpfI=
|
||||
github.com/luxfi/geth v1.20.1 h1:QUGQr4AKvADjwMi7t8a0OfoyxShgEcI9pwie1jFYfm0=
|
||||
github.com/luxfi/geth v1.20.1/go.mod h1:GV5bIMEgWviRN+jPXERyVpI16H3iHqPcdIokDoZdrvU=
|
||||
github.com/luxfi/geth v1.20.2 h1:XwNVyIpb4ip4wy/SsQS8fHdVEVlmsvLNwGPykFDvutw=
|
||||
github.com/luxfi/geth v1.20.2/go.mod h1:5vJMlOrSvz4ORC+fe16k+i0CUqTadmiFi9ldAHb5TE4=
|
||||
github.com/luxfi/go-bip32 v1.1.0 h1:zjy19WKa1KJnGamRNyOZM3l/MPtV/sax7M4NMPwLHZQ=
|
||||
github.com/luxfi/go-bip32 v1.1.0/go.mod h1:QyDXlzWL3xRiCbMUi4Z3J52Q/SMoCvdRLXXlYvSZor8=
|
||||
github.com/luxfi/go-bip39 v1.2.0 h1:fx3pFuSGawCG4In6pA4OLLStqbgIqD1j8EygFskoHzY=
|
||||
github.com/luxfi/go-bip39 v1.2.0/go.mod h1:if+2OVbG4k4jKIuBt/Rse1KV1kgWQM5j5xFbUtwbNtc=
|
||||
github.com/luxfi/gpu v1.1.2 h1:xQupCMqb8L18WoBaMcTzVGP8856Nkhc+CkmqKzMw9nI=
|
||||
github.com/luxfi/gpu v1.1.2/go.mod h1:26fz0M7/R8PwZIR2Z3DTZ+iZWInb2AG4v3/wKwL/44Q=
|
||||
github.com/luxfi/hid v0.9.3/go.mod h1:XJ/7DZAHf5dggm3zWNbitKuFGB7J96b4iX+8NO3BsnY=
|
||||
github.com/luxfi/ids v1.3.2 h1:c6Rft5kZB4XqiCtWaGH47bfhaNFm3FGRfhEzI01GVeI=
|
||||
github.com/luxfi/ids v1.3.2/go.mod h1:+5l8cYMbKpORJbQ2r98CYJo9TQATgUdnmzpYFZWMwwc=
|
||||
github.com/luxfi/keychain v1.1.1 h1:dTYEPy6CGVC1sogMci4iJogUvW6VdTmemplQdzRqnAs=
|
||||
github.com/luxfi/keychain v1.1.1/go.mod h1:hAzBcwxGumtoYrM5hfhwdt8wE0p7r2JCd5AxswqfkoY=
|
||||
github.com/luxfi/keys v1.4.1/go.mod h1:P8EUP5DKrR1SUZBGZjDT3rWcp2P1miUlVh7IBRNBphU=
|
||||
github.com/luxfi/kms v1.12.4/go.mod h1:hdbnJp5S+BKW2RcH1+qSC87NZkIGEL5Z8/9UJyKBikw=
|
||||
github.com/luxfi/lattice/v7 v7.1.4 h1:hQR02M6cHTAV5+joOPi9gb9Gm+z/hKJnhJF4IlciIJs=
|
||||
github.com/luxfi/lattice/v7 v7.1.4/go.mod h1:DmIQFi3mJiehVsR235l1NKYEU0JhU649OX5p7gMEW2c=
|
||||
github.com/luxfi/lens v0.2.1 h1:5Qd0GdjbM+XUVgwDbZ452tKkR7yeE8QnBTHHaH8fJNY=
|
||||
@@ -472,52 +322,36 @@ github.com/luxfi/mlwe v0.3.0 h1:5mtXLbO2RxaE45r75sj43c6UdpjDKQ5nTQcOGuoRQT8=
|
||||
github.com/luxfi/mlwe v0.3.0/go.mod h1:DD9EHTeiyh/y0KGGeqL+q9S4n8raeGiGdaG/BQPAvT0=
|
||||
github.com/luxfi/mock v0.1.1 h1:0HEtIjg1J6CWz+IUyP6rsGqNWTcmxjFnSQIhaDuARwY=
|
||||
github.com/luxfi/mock v0.1.1/go.mod h1:jo35akl3Vtd8LbzDts8VJ0jmSVycrd1/eBi6g6t5hKU=
|
||||
github.com/luxfi/net v0.1.1 h1:jIQCb8ulBGEvHIcorzDDNCeWzutFzLVtRWodutrQE24=
|
||||
github.com/luxfi/net v0.1.1/go.mod h1:SwxbUQ538u4QAcgC/N61uahDk1TDHL6Ku89CX/WV2lk=
|
||||
github.com/luxfi/node v1.36.15 h1:tpa1Z0OjJ1QD2kuzrTlpyavE0YL7EEZL+qEhnrZ2VAs=
|
||||
github.com/luxfi/node v1.36.15/go.mod h1:35u+z4SbpTjOLLXuCQcfrqD5voSI88osoTru0UoNv4Q=
|
||||
github.com/luxfi/oracle v1.1.1 h1:KwU9TEeHdJb+vc6VJlMxS7nKhLOJ9EI4WGqxwSJp/J0=
|
||||
github.com/luxfi/oracle v1.1.1/go.mod h1:ST/4cVIUBa08GnkI9vQbfg8GGt0oDCXfTnEkx0WsnPs=
|
||||
github.com/luxfi/ordering v0.0.1/go.mod h1:Ld5UAayScKxicsd9BYuQ/D7vzEUndOC7cGCT+fj++jM=
|
||||
github.com/luxfi/p2p v1.22.1 h1:M59Iy+FIJta99aFfTpG6EE70jm9uqIX+iHrGBYPHDhg=
|
||||
github.com/luxfi/p2p v1.22.1/go.mod h1:FHOSavVcq8JS1ZQtfddd9Jj1gaPstz1cjvNgczAQRyg=
|
||||
github.com/luxfi/password v0.0.1/go.mod h1:xKhi28+V3xqPc4+kIZHRp7oZ1W7nUKze6EauvMVq19s=
|
||||
github.com/luxfi/pq v1.1.0 h1:ADplfUSyirLymSxs3Ix0HeDTyl5oswCNUpXJt/5vLY8=
|
||||
github.com/luxfi/pq v1.1.0/go.mod h1:KT5rG9ztpzIkT9QSnXK4WFqBBLzKCLjY7l1c/unBi8I=
|
||||
github.com/luxfi/precompile v0.19.3 h1:ljJholS+9mlR8EjbfM96BLYvIni7xCt7KkX06YzAIJU=
|
||||
github.com/luxfi/precompile v0.19.3/go.mod h1:c+dh+FWfpKr3FNfI4LhIdnn0naQmmS5Yz0KKTt4LknY=
|
||||
github.com/luxfi/precompile v0.19.8 h1:7VD+AE/EWI+95EmHs6aWQX2E4fIwJsqGszGIftalNNQ=
|
||||
github.com/luxfi/precompile v0.19.8/go.mod h1:QRUEgAYgEuUl1fUJ0HBJVsiS9mG0CPdcbs2Cw4G50Lg=
|
||||
github.com/luxfi/proto v1.4.2 h1:dEGTE7xOWVPTXRZNDBJfwh2Q19vE7MQBhyXXmWenw+8=
|
||||
github.com/luxfi/proto v1.4.2/go.mod h1:vwVkrC9ghhuCL8bluA59+G5jaD6WuqiDyd1iKh7yzOE=
|
||||
github.com/luxfi/protocol v0.0.2/go.mod h1:Yjn2VRwn5PXim0+JTalAyrVG6YbmuSnYOfeUXSbAsqA=
|
||||
github.com/luxfi/pulsar v1.9.2 h1:pFLoAfBlCwFZfchqHn78J6yMe29AhaoKGRa/KTUP8CE=
|
||||
github.com/luxfi/pulsar v1.9.2/go.mod h1:uTOtribcUvTTwAOy0Ztg0S2AUiNAsVqFfopTrKW+zjM=
|
||||
github.com/luxfi/relay v1.1.1 h1:s5gH9dmTyz2X+K4GvCSuG4baZLjiJxK8ji8xvqj5k1E=
|
||||
github.com/luxfi/relay v1.1.1/go.mod h1:jdgwxl8G0iykzyqW43uazRPsdz49awgv24kev3cMiQI=
|
||||
github.com/luxfi/resource v0.1.1 h1:k11s5xLGX85UWq/iLZyWLhnqeLTlp3FHEt8u/8AHdkY=
|
||||
github.com/luxfi/resource v0.1.1/go.mod h1:s7SbZOSVbgj9bWFOcLCcXgnMlHxbqtqhAeJ3f0Xuy/Y=
|
||||
github.com/luxfi/rpc v1.1.0 h1:B/PJbK399th1mHRDSufhCpVbAciZqId3LsaWhIGNWH4=
|
||||
github.com/luxfi/rpc v1.1.0/go.mod h1:s0bI7/Wg1ZdFdG/cQK+4pZNdEmUsXNBA3HeZRZ+XLeM=
|
||||
github.com/luxfi/runtime v1.3.1 h1:vsQZ3sl6XMeyHuNGCMM86d0whrE/lhMre4CCJaClPdE=
|
||||
github.com/luxfi/runtime v1.3.1/go.mod h1:Tct998uUcmCQbUC1WLEeGLDH2IaVgMb+SkKcHKZpHV0=
|
||||
github.com/luxfi/sampler v1.1.0 h1:u3iRDl7V06ARh0e85h3HT+aZ1saCFo2yMMsh+dCJbqk=
|
||||
github.com/luxfi/sampler v1.1.0/go.mod h1:kJa53S3tC9+VSbuV3RFu68MmbCCBlr2UM39LOClQ/Hs=
|
||||
github.com/luxfi/sdk v1.18.1/go.mod h1:8BE1iF2ewkDbsV31TPE0/HT7RGJILR1ZALbKE1GgHMc=
|
||||
github.com/luxfi/staking v1.6.1 h1:be023mY88AnFgF9P+MMvILX21I2CaqVAVkGcc+a20so=
|
||||
github.com/luxfi/staking v1.6.1/go.mod h1:X8i/uCLc009mlIUnFMErrQMCwfGaOVCAVf+GbDN5nn4=
|
||||
github.com/luxfi/sys v0.1.0 h1:M7RYOt8W4Wws7cxxsyOHe50UKMYTzIu7HYknqW4xt0Y=
|
||||
github.com/luxfi/sys v0.1.0/go.mod h1:GT8vGdYTfoqRy9/11blmRuqPPypzwrudCTHZXT+ru9M=
|
||||
github.com/luxfi/threshold v1.12.6 h1:mpC4oD2SfiD+ICI4qxAZsgNcHLOdnDXzNaRo3NMwBPg=
|
||||
github.com/luxfi/threshold v1.12.6/go.mod h1:ddg3ipZ3WXozPn+TupPQPmNw/jGscmX13n9OtitmI6Q=
|
||||
github.com/luxfi/timer v1.1.1 h1:54GiNBKydQ0VF5/EwVc/mCsbqe0yJNfZV7Ae8qJhCwk=
|
||||
github.com/luxfi/timer v1.1.1/go.mod h1:OXY/8ZFKCdEsimpfnUG1MQWvzjjFbsmBOiW/m6KSrC0=
|
||||
github.com/luxfi/tls v1.1.1 h1:BSZ0gHSp7U8vzlmzx7WSSCz+b7Ky4JtD9HDDhn7vrDg=
|
||||
github.com/luxfi/tls v1.1.1/go.mod h1:+5TDy8UtLL+tz124brZzpUDBRj+sKrq0JFqdmpMUHgw=
|
||||
github.com/luxfi/trace v1.2.1 h1:MPV079P2eTijB7F06AyJU1HJwpQVxRx1qYXhva9YsvM=
|
||||
github.com/luxfi/trace v1.2.1/go.mod h1:/bX8g0RRHPHUq7kX8of/Aaq6C7rD0JuNH57vVbw7ZG8=
|
||||
github.com/luxfi/units v1.0.0 h1:2aNVB+WsP1XeDob71IsO0w3jJqP3FtZdYnFsmORkJZg=
|
||||
github.com/luxfi/units v1.0.0/go.mod h1:tma28v4ed1tupdS0kpSeyO+u1wWK/g1NqODPbN1YzmA=
|
||||
github.com/luxfi/upgrade v1.0.3 h1:mFMfIb88HzoL4fp7I6w1g+VnxlAWj6UQdZOdf4AkCLk=
|
||||
github.com/luxfi/upgrade v1.0.3/go.mod h1:3c/u4T/n7EsODofkWg5VigSt9BATQM8EmaNttfHMCrU=
|
||||
github.com/luxfi/utils v1.3.1 h1:Us02ag60kGu94B41XIelExa7c+K6zPKwDJyq+eB+hc0=
|
||||
@@ -528,11 +362,6 @@ github.com/luxfi/validators v1.3.1 h1:+/7j0CTXlMKyaSLFM+gd6Fq64/edORJfrD/xGnf7Xc
|
||||
github.com/luxfi/validators v1.3.1/go.mod h1:sIQyUZOvXoJ/9/RCOhHSzjumZIoxiqacNOn5mQWVozU=
|
||||
github.com/luxfi/version v1.0.1 h1:T/1KYWEMmsrNQk7pN7PFPAwh/7XbeX7cFAKLBqI37Sk=
|
||||
github.com/luxfi/version v1.0.1/go.mod h1:Y5fPkQ2DB0XRBCxgSPXp4ISzL1/jptKnmFknShRJCyg=
|
||||
github.com/luxfi/vm v1.3.1 h1:U2Bv7IDRFv8JtjUARfY53ZnOPRB2iPrPHSMDCQ+T0Js=
|
||||
github.com/luxfi/vm v1.3.6 h1:LXhldc1TN+FrEOF5nX1liY+NdWcecgvuH9vqJWxWFLo=
|
||||
github.com/luxfi/vm v1.3.6/go.mod h1:lxjv6dh/i8Cj82hZzKWvnbzOG+5wqFNlAeYfDBeCkGM=
|
||||
github.com/luxfi/vm v1.3.12 h1:oUBzAGlbBd2Z9pFjo5F4WWKO3vivZVne+mNWhjdppnY=
|
||||
github.com/luxfi/vm v1.3.12/go.mod h1:YkgpELut1AEZJVyHCNFzghIfyvIQu0KnzJartcPXmjU=
|
||||
github.com/luxfi/vm v1.3.16 h1:2/TkiHygLH2sEYdPFBalHAt7I3nllo/c68mrMSq/BjU=
|
||||
github.com/luxfi/vm v1.3.16/go.mod h1:TXm/WLxH8WF/NRhiiLd7VPVaDvVqLPzmQFnzp/T2kAY=
|
||||
github.com/luxfi/warp v1.24.1 h1:9F+z6fy4sxmXp+3LlR9m3TiZ8Dfthh+s5KOeewSJL30=
|
||||
@@ -541,29 +370,18 @@ github.com/luxfi/zap v1.2.6 h1:NBpbm9Gib41Oi/XAkAZKQ3hb+xCafo7JsrUjw+bKiAc=
|
||||
github.com/luxfi/zap v1.2.6/go.mod h1:sTAe/AMMamoE85cVoe81+NbqHJkgvqS0LhY9ByHEmr0=
|
||||
github.com/luxfi/zapcodec v1.1.1 h1:SdYexj7oWdks/wfF9s+8m/9PAYt3S8QjORxURutvIs0=
|
||||
github.com/luxfi/zapcodec v1.1.1/go.mod h1:fmmgd8C/JrQdh3b1OzBkrvPN4TYs5uRfVV3sVtbiLbQ=
|
||||
github.com/luxfi/zapdb v1.10.1 h1:XV3k4UTTKKxUMgbfC7woPXgUEIJd3P5nj2lGTQ88xeE=
|
||||
github.com/luxfi/zapdb v1.10.1/go.mod h1:3Y0hH2A9kvjR+Bp9N2yEbtHnhXGHhqCQOLvBRkHrrM0=
|
||||
github.com/luxfi/zapdb v1.10.6 h1:K62BsDk64Va72D1T7DHtvtFjfR0ExNl57ytCdPNMemk=
|
||||
github.com/luxfi/zapdb v1.10.6/go.mod h1:hynrYB7lWXbqq9oLBFsoOvIpNcqy1OzrFiP9CNAyYUo=
|
||||
github.com/luxfi/zwing v0.6.1 h1:Ve7RvYVBXx4JWe8TZhLfpez1N1G685hl/PSMDsR4RI4=
|
||||
github.com/luxfi/zwing v0.6.1/go.mod h1:Eal4hnjmdFXc6rxciA6cxeCfV1BKs8le03v83W5oiKg=
|
||||
github.com/mattn/go-colorable v0.1.15 h1:+u9SLTRGnXv73cEsnsmoZBom+dMU88B2M0aDcWy0/jY=
|
||||
github.com/mattn/go-colorable v0.1.15/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
|
||||
github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4=
|
||||
github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4=
|
||||
github.com/mattn/go-runewidth v0.0.21/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
|
||||
github.com/miekg/dns v1.1.27/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
|
||||
github.com/miekg/dns v1.1.72 h1:vhmr+TF2A3tuoGNkLDFK9zi36F2LS+hKTRW0Uf8kbzI=
|
||||
github.com/miekg/dns v1.1.72/go.mod h1:+EuEPhdHOsfk6Wk5TT2CzssZdqkmFhf8r+aVyDEToIs=
|
||||
github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM=
|
||||
github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b h1:QrHweqAtyJ9EwCaGHBu1fghwxIPiopAHV06JlXrMHjk=
|
||||
github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b/go.mod h1:xxLb2ip6sSUts3g1irPVHyk/DGslwQsNOo9I7smJfNU=
|
||||
github.com/minio/crc64nvme v1.1.1 h1:8dwx/Pz49suywbO+auHCBpCtlW1OfpcLN7wYgVR6wAI=
|
||||
github.com/minio/crc64nvme v1.1.1/go.mod h1:eVfm2fAzLlxMdUGc0EEBGSMmPwmXD5XiNRpnu9J3bvg=
|
||||
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
|
||||
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
|
||||
github.com/minio/minio-go/v7 v7.2.0/go.mod h1:EU9hENAStx/xXduNdrGO5e4X5vk19NtgB+RIPjZO8o0=
|
||||
github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
|
||||
github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
|
||||
github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||
@@ -571,45 +389,29 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua
|
||||
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||
github.com/mitchellh/pointerstructure v1.2.1 h1:ZhBBeX8tSlRpu/FFhXH4RC4OJzFlqsQhoHZAz4x7TIw=
|
||||
github.com/mitchellh/pointerstructure v1.2.1/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4=
|
||||
github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||
github.com/montanaflynn/stats v0.9.0 h1:tsBJ0RXwph9BmAuFoCmqGv6e8xa0MENQ8m0ptKq29mQ=
|
||||
github.com/montanaflynn/stats v0.9.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
|
||||
github.com/mr-tron/base58 v1.3.0 h1:K6Y13R2h+dku0wOqKtecgRnBUBPrZzLZy5aIj8lCcJI=
|
||||
github.com/mr-tron/base58 v1.3.0/go.mod h1:2BuubE67DCSWwVfx37JWNG8emOC0sHEU4/HpcYgCLX8=
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||
github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0=
|
||||
github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E=
|
||||
github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354/go.mod h1:KSVJerMDfblTH7p5MZaTt+8zaT2iEk3AkVb9PQdZuE8=
|
||||
github.com/ncruces/go-strftime v1.0.0/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
|
||||
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
||||
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
|
||||
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
|
||||
github.com/oapi-codegen/runtime v1.3.1/go.mod h1:kOdeacKy7t40Rclb1je37ZLFboFxh+YLy0zaPCMibPY=
|
||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
||||
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
|
||||
github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
|
||||
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
|
||||
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
|
||||
github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
|
||||
github.com/onsi/ginkgo/v2 v2.28.1 h1:S4hj+HbZp40fNKuLUQOYLDgZLwNUVn19N3Atb98NCyI=
|
||||
github.com/onsi/ginkgo/v2 v2.28.1/go.mod h1:CLtbVInNckU3/+gC8LzkGUb9oF+e8W8TdUsxPwvdOgE=
|
||||
github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
|
||||
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
|
||||
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
||||
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
|
||||
github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
|
||||
github.com/onsi/gomega v1.39.1 h1:1IJLAad4zjPn2PsnhH70V4DKRFlrCzGBNrNaru+Vf28=
|
||||
github.com/onsi/gomega v1.39.1/go.mod h1:hL6yVALoTOxeWudERyfppUcZXjMwIMLnuSfruD2lcfg=
|
||||
github.com/pelletier/go-toml/v2 v2.3.0 h1:k59bC/lIZREW0/iVaQR8nDHxVq8OVlIzYCOJf421CaM=
|
||||
github.com/pelletier/go-toml/v2 v2.3.0/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
|
||||
github.com/peterh/liner v1.2.2/go.mod h1:xFwJyiKIXJZUKItq5dGHZSTBRAuG/CpeNpWLyiNRNwI=
|
||||
github.com/philhofer/fwd v1.2.0 h1:e6DnBTl7vGY+Gz322/ASL4Gyp1FspeMvx1RNDoToZuM=
|
||||
github.com/philhofer/fwd v1.2.0/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM=
|
||||
github.com/pingcap/errors v0.11.5-0.20210425183316-da1aaba5fb63 h1:+FZIDR/D97YOPik4N4lPDaUcLDF/EQPogxtlHB2ZZRM=
|
||||
@@ -629,8 +431,6 @@ github.com/pion/transport/v2 v2.2.10/go.mod h1:sq1kSLWs+cHW9E+2fJP95QudkzbK7wscs
|
||||
github.com/pion/transport/v3 v3.0.1/go.mod h1:UY7kiITrlMv7/IKgd5eTUcaahZx5oUN3l9SzK5f5xE0=
|
||||
github.com/pion/transport/v3 v3.1.1 h1:Tr684+fnnKlhPceU+ICdrw6KKkTms+5qHMgw6bIkYOM=
|
||||
github.com/pion/transport/v3 v3.1.1/go.mod h1:+c2eewC5WJQHiAA46fkMMzoYZSuGzA/7E2FPrOYHctQ=
|
||||
github.com/pires/go-proxyproto v0.11.0 h1:gUQpS85X/VJMdUsYyEgyn59uLJvGqPhJV5YvG68wXH4=
|
||||
github.com/pires/go-proxyproto v0.11.0/go.mod h1:ZKAAyp3cgy5Y5Mo4n9AlScrkCZwUy0g3Jf+slqQVcuU=
|
||||
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
@@ -645,14 +445,10 @@ github.com/prometheus/common v0.68.0 h1:8rQJvQmYltsR2L7h8Zw0Iyj8WYNNmpwikoQTZXwf
|
||||
github.com/prometheus/common v0.68.0/go.mod h1:4soH+U8yJSROk7OJ//hmTiWKsxapv6zRGgTt3keN8gQ=
|
||||
github.com/prometheus/procfs v0.20.1 h1:XwbrGOIplXW/AU3YhIhLODXMJYyC1isLFfYCsTEycfc=
|
||||
github.com/prometheus/procfs v0.20.1/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo=
|
||||
github.com/protolambda/bls12-381-util v0.1.0/go.mod h1:cdkysJTRpeFeuUVx/TXGDQNMTiRAalk1vQw3TYTHcE4=
|
||||
github.com/protolambda/zrnt v0.34.1/go.mod h1:A0fezkp9Tt3GBLATSPIbuY4ywYESyAuc/FFmPKg8Lqs=
|
||||
github.com/protolambda/ztyp v0.2.2/go.mod h1:9bYgKGqg3wJqT9ac1gI2hnVb0STQq7p/1lapqrqY1dU=
|
||||
github.com/prysmaticlabs/gohashtree v0.0.4-beta h1:H/EbCuXPeTV3lpKeXGPpEV9gsUpkqOOVnWapUyeWro4=
|
||||
github.com/prysmaticlabs/gohashtree v0.0.4-beta/go.mod h1:BFdtALS+Ffhg3lGQIHv9HDWuHS8cTvHZzrHWxwOtGOs=
|
||||
github.com/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic=
|
||||
github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU=
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
||||
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
|
||||
github.com/rogpeppe/go-internal v1.15.0 h1:D0RCU5rMAp+SpgkiNdrjfJ+LX4J1M32V2NeCY7EJ6hc=
|
||||
github.com/rogpeppe/go-internal v1.15.0/go.mod h1:DrUVZyrJU+txYW5/1kwtXQSMFio52ZOxX7yM1VHvnxs=
|
||||
@@ -662,35 +458,19 @@ github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU=
|
||||
github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0=
|
||||
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
|
||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||
github.com/sagikazarmark/locafero v0.12.0 h1:/NQhBAkUb4+fH1jivKHWusDYFjMOOKU88eegjfxfHb4=
|
||||
github.com/sagikazarmark/locafero v0.12.0/go.mod h1:sZh36u/YSZ918v0Io+U9ogLYQJ9tLLBmM4eneO6WwsI=
|
||||
github.com/sanity-io/litter v1.5.5 h1:iE+sBxPBzoK6uaEP5Lt3fHNgpKcHXc/A2HGETy0uJQo=
|
||||
github.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U=
|
||||
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
|
||||
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
|
||||
github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
|
||||
github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
|
||||
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||
github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U=
|
||||
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
||||
github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=
|
||||
github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=
|
||||
github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY=
|
||||
github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo=
|
||||
github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4=
|
||||
github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
|
||||
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU=
|
||||
github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY=
|
||||
github.com/status-im/keycard-go v0.3.3 h1:qk/JHSkT9sMka+lVXrTOIVSgHIY7lDm46wrUqTsNa4s=
|
||||
github.com/status-im/keycard-go v0.3.3/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||
github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0=
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
|
||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||
@@ -698,63 +478,42 @@ github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl
|
||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
|
||||
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
||||
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
|
||||
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
|
||||
github.com/supranational/blst v0.3.16 h1:bTDadT+3fK497EvLdWRQEjiGnUtzJ7jjIUMF0jqwYhE=
|
||||
github.com/supranational/blst v0.3.16/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw=
|
||||
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc=
|
||||
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs=
|
||||
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48=
|
||||
github.com/thepudds/fzgen v0.4.3 h1:srUP/34BulQaEwPP/uHZkdjUcUjIzL7Jkf4CBVryiP8=
|
||||
github.com/thepudds/fzgen v0.4.3/go.mod h1:BhhwtRhzgvLWAjjcHDJ9pEiLD2Z9hrVIFjBCHJ//zJ4=
|
||||
github.com/tinylib/msgp v1.6.4 h1:mOwYbyYDLPj35mkA2BjjYejgJk9BuHxDdvRnb6v2ZcQ=
|
||||
github.com/tinylib/msgp v1.6.4/go.mod h1:RSp0LW9oSxFut3KzESt5Voq4GVWyS+PSulT77roAqEA=
|
||||
github.com/tj/assert v0.0.3 h1:Df/BlaZ20mq6kuai7f5z2TvPFiwC3xaWJSDQNiIS3Rk=
|
||||
github.com/tj/assert v0.0.3/go.mod h1:Ne6X72Q+TB1AteidzQncjw9PabbMp4PBMZ1k+vd1Pvk=
|
||||
github.com/tklauser/go-sysconf v0.4.0 h1:7H0uAN+7RkwWRaxhYXDLqa5V3LPrJeV8wmD9dRUgPQU=
|
||||
github.com/tklauser/go-sysconf v0.4.0/go.mod h1:8mTNWyog7H+MpKijp4VmKJAd2bbYQ2zuUwkYRbUArPI=
|
||||
github.com/tklauser/numcpus v0.12.0 h1:NR85qdvHA9pFse3x3weVZ0r0ST8R6l5RHbZrlRaqob4=
|
||||
github.com/tklauser/numcpus v0.12.0/go.mod h1:ABHeXzJnr/qqwguhClkZKT1/8VABcYrsyUiUGobwWJg=
|
||||
github.com/urfave/cli/v2 v2.27.7 h1:bH59vdhbjLv3LAvIu6gd0usJHgoTTPhCFib8qqOwXYU=
|
||||
github.com/urfave/cli/v2 v2.27.7/go.mod h1:CyNAG/xg+iAOg0N4MPGZqVmv2rCoP267496AOXUZjA4=
|
||||
github.com/urfave/cli/v3 v3.6.2/go.mod h1:ysVLtOEmg2tOy6PknnYVhDoouyC/6N42TMeoMzskhso=
|
||||
github.com/wlynxg/anet v0.0.3/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA=
|
||||
github.com/wlynxg/anet v0.0.5 h1:J3VJGi1gvo0JwZ/P1/Yc/8p63SoW98B5dHkYDmpgvvU=
|
||||
github.com/wlynxg/anet v0.0.5/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA=
|
||||
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
|
||||
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
|
||||
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
|
||||
github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
|
||||
github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=
|
||||
github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU=
|
||||
github.com/xrash/smetrics v0.0.0-20250705151800-55b8f293f342 h1:FnBeRrxr7OU4VvAzt5X7s6266i6cSVkkFPS0TuXWbIg=
|
||||
github.com/xrash/smetrics v0.0.0-20250705151800-55b8f293f342/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM=
|
||||
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI=
|
||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
|
||||
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
||||
github.com/zap-proto/http v0.0.0-20260506200741-fd6047874433 h1:7WsCr/pZvWozimdYNffL3B9K6gLr8w0Z7WAi1+eZWtc=
|
||||
github.com/zap-proto/http v0.0.0-20260506200741-fd6047874433/go.mod h1:xySyVTIwjknmVE+p+6rukkX86rFZtXeAu/QY7KXMYqw=
|
||||
github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ=
|
||||
github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
|
||||
github.com/zeebo/blake3 v0.2.4 h1:KYQPkhpRtcqh0ssGYcKLG1JYvddkEA8QwCM/yBqhaZI=
|
||||
github.com/zeebo/blake3 v0.2.4/go.mod h1:7eeQ6d2iXWRGF6npfaxl2CU+xy2Fjo2gxeyZGCRUjcE=
|
||||
github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo=
|
||||
github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4=
|
||||
github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s=
|
||||
go.mongodb.org/mongo-driver v1.17.9 h1:IexDdCuuNJ3BHrELgBlyaH9p60JXAvdzWR128q+U5tU=
|
||||
go.mongodb.org/mongo-driver v1.17.9/go.mod h1:LlOhpH5NUEfhxcAwG0UEkMqwYcc4JU18gtCdGudk/tQ=
|
||||
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
|
||||
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
|
||||
go.opentelemetry.io/contrib/zpages v0.62.0/go.mod h1:C8kXoiC1Ytvereztus2R+kqdSa6W/MZ8FfS8Zwj+LiM=
|
||||
go.opentelemetry.io/otel v1.44.0 h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU=
|
||||
go.opentelemetry.io/otel v1.44.0/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0/go.mod h1:J2pvYM5NGHofZ2/Ru6zw/TNWnEQp5crgyDeSrYpXkAw=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.42.0/go.mod h1:v0Tj04armyT59mnURNUJf7RCKcKzq+lgJs6QSjHjaTc=
|
||||
go.opentelemetry.io/otel/metric v1.44.0 h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc=
|
||||
go.opentelemetry.io/otel/metric v1.44.0/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo=
|
||||
go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
|
||||
@@ -763,23 +522,16 @@ go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfC
|
||||
go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
|
||||
go.opentelemetry.io/otel/trace v1.44.0 h1:jxF5CsGYCe74MCRx2X4g7WsY/VBKRqqpNvXlX/6gtIk=
|
||||
go.opentelemetry.io/otel/trace v1.44.0/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE=
|
||||
go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk=
|
||||
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
|
||||
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
|
||||
go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
|
||||
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
||||
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
|
||||
go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y=
|
||||
go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU=
|
||||
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
|
||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
||||
go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc=
|
||||
go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
|
||||
go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ=
|
||||
go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ=
|
||||
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
|
||||
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
|
||||
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
@@ -792,16 +544,13 @@ golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988=
|
||||
golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc=
|
||||
golang.org/x/exp v0.0.0-20260529124908-c761662dc8c9 h1:4d4PbuBNwaxMXkXI8yiIYjydtMU+04RHeuSxJdgKftM=
|
||||
golang.org/x/exp v0.0.0-20260529124908-c761662dc8c9/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw=
|
||||
golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs=
|
||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4=
|
||||
golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ=
|
||||
golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
@@ -809,11 +558,9 @@ golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLL
|
||||
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
|
||||
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
|
||||
golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
@@ -824,8 +571,6 @@ golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
|
||||
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
|
||||
golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8=
|
||||
golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww=
|
||||
golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=
|
||||
golang.org/x/perf v0.0.0-20230113213139-801c7ef9e5c5/go.mod h1:UBKtEnL8aqnd+0JHqZ+2qoMDwtuy6cYhhKNoHLBiTQc=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
@@ -845,14 +590,11 @@ golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
@@ -865,7 +607,6 @@ golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY=
|
||||
golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
||||
golang.org/x/telemetry v0.0.0-20260508192327-42602be52be6/go.mod h1:Eqhaxk/wZsWEH8CRxLwj6xzEJbz7k1EFGqx7nyCoabE=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
@@ -873,9 +614,7 @@ golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
|
||||
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
|
||||
golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
|
||||
golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
|
||||
golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
@@ -893,13 +632,10 @@ golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapK
|
||||
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||
golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8=
|
||||
golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0=
|
||||
golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY=
|
||||
golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated/go.mod h1:RVAQXBGNv1ib0J382/DPCRS/BPnsGebyM1Gj5VSDpG8=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
@@ -907,10 +643,6 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T
|
||||
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
|
||||
gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
|
||||
gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
|
||||
gonum.org/v1/plot v0.15.2/go.mod h1:DX+x+DWso3LTha+AdkJEv5Txvi+Tql3KAGkehP0/Ubg=
|
||||
gonum.org/v1/tools v0.0.0-20200318103217-c168b003ce8c/go.mod h1:fy6Otjqbk477ELp8IXTpw1cObQtLbRCBVonY+bTTfcM=
|
||||
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:7QBABkRtR8z+TEnmXTqIqwJLlzrZKVfAUm7tY3yGv0M=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
|
||||
google.golang.org/grpc v1.81.1 h1:VnnIIZ88UzOOKLukQi+ImGz8O1Wdp8nAGGnvOfEIWQQ=
|
||||
@@ -929,12 +661,10 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
gopkg.in/ini.v1 v1.67.2/go.mod h1:x/cyOwCgZqOkJoDIJ3c1KNHMo10+nLGAhh+kn3Zizss=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
@@ -943,9 +673,3 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
modernc.org/libc v1.72.0/go.mod h1:tTU8DL8A+XLVkEY3x5E/tO7s2Q/q42EtnNWda/L5QhQ=
|
||||
modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg=
|
||||
modernc.org/memory v1.11.0/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw=
|
||||
modernc.org/sqlite v1.50.0/go.mod h1:m0w8xhwYUVY3H6pSDwc3gkJ/irZT/0YEXwBlhaxQEew=
|
||||
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
|
||||
rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA=
|
||||
|
||||
+2
-2
@@ -6,10 +6,10 @@ package graphvm
|
||||
import (
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/vms"
|
||||
"github.com/luxfi/vm/manager"
|
||||
)
|
||||
|
||||
var _ vms.Factory = (*Factory)(nil)
|
||||
var _ manager.Factory = (*Factory)(nil)
|
||||
|
||||
// VMID is the unique identifier for GraphVM (G-Chain)
|
||||
var VMID = ids.ID{'g', 'r', 'a', 'p', 'h', 'v', 'm'}
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
package graphvm
|
||||
|
||||
import "github.com/luxfi/node/vms/types/fee"
|
||||
import "github.com/luxfi/chains/fee"
|
||||
|
||||
// newFeePolicy returns the canonical G-Chain FeePolicy.
|
||||
//
|
||||
|
||||
@@ -14,10 +14,10 @@ import (
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/database"
|
||||
"github.com/luxfi/database/memdb"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/runtime"
|
||||
vmcore "github.com/luxfi/vm"
|
||||
)
|
||||
|
||||
+3
-3
@@ -16,22 +16,22 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/database"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/runtime"
|
||||
vmcore "github.com/luxfi/vm"
|
||||
"github.com/luxfi/vm/chain"
|
||||
"github.com/luxfi/warp"
|
||||
|
||||
nodeversion "github.com/luxfi/node/version"
|
||||
"github.com/luxfi/version"
|
||||
)
|
||||
|
||||
var (
|
||||
_ chain.ChainVM = (*VM)(nil)
|
||||
|
||||
Version = &nodeversion.Semantic{
|
||||
Version = &version.Semantic{
|
||||
Major: 1,
|
||||
Minor: 0,
|
||||
Patch: 0,
|
||||
|
||||
@@ -11,10 +11,10 @@ import (
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/database/memdb"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/runtime"
|
||||
vmcore "github.com/luxfi/vm"
|
||||
)
|
||||
|
||||
+1
-1
@@ -10,8 +10,8 @@ import (
|
||||
"sort"
|
||||
"time"
|
||||
|
||||
"github.com/luxfi/chains/artifacts"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/node/vms/artifacts"
|
||||
)
|
||||
|
||||
// Submit queues one state change for a block. Nothing here writes state: a
|
||||
|
||||
@@ -16,8 +16,8 @@ import (
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
)
|
||||
|
||||
// rpc drives the JSON-RPC server the node mounts, which is what a client
|
||||
|
||||
+1
-1
@@ -20,10 +20,10 @@ import (
|
||||
grjson "github.com/gorilla/rpc/v2/json2"
|
||||
|
||||
"github.com/luxfi/chains/chain"
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/consensus/core/choices"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/runtime"
|
||||
vmcore "github.com/luxfi/vm"
|
||||
vmchain "github.com/luxfi/vm/chain"
|
||||
|
||||
+2
-2
@@ -6,10 +6,10 @@ package keyvm
|
||||
import (
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/vms"
|
||||
"github.com/luxfi/vm/manager"
|
||||
)
|
||||
|
||||
var _ vms.Factory = (*Factory)(nil)
|
||||
var _ manager.Factory = (*Factory)(nil)
|
||||
|
||||
// VMID is the K-Chain VM identifier (matches constants.KeyVMID).
|
||||
var VMID = ids.ID{'k', 'e', 'y', 'v', 'm'}
|
||||
|
||||
+5
-5
@@ -4,8 +4,8 @@
|
||||
package keyvm
|
||||
|
||||
import (
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/constants"
|
||||
nodefee "github.com/luxfi/node/vms/types/fee"
|
||||
)
|
||||
|
||||
// newFeePolicy returns the K-Chain ADMISSION policy: a non-zero floor so the
|
||||
@@ -20,13 +20,13 @@ import (
|
||||
// gas_test.go. The old per-RPC "fee is a uint64 the caller writes into the JSON
|
||||
// request" gate is GONE: a fee is never an unbacked integer, it is gas metered
|
||||
// and burned from the payer's on-chain balance inside consensus.
|
||||
func newFeePolicy(networkID uint32) nodefee.Policy {
|
||||
return nodefee.FlatPolicy{
|
||||
Fee: nodefee.MinTxFeeFloor,
|
||||
func newFeePolicy(networkID uint32) fee.Policy {
|
||||
return fee.FlatPolicy{
|
||||
Fee: fee.MinTxFeeFloor,
|
||||
AssetID: constants.UTXOAssetIDFor(networkID),
|
||||
}
|
||||
}
|
||||
|
||||
// FeePolicy exposes the chain's declared admission policy for diagnostics and
|
||||
// the boot-time Validate gate.
|
||||
func (vm *VM) FeePolicy() nodefee.Policy { return vm.feePolicy }
|
||||
func (vm *VM) FeePolicy() fee.Policy { return vm.feePolicy }
|
||||
|
||||
@@ -9,7 +9,7 @@ import (
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
nodefee "github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/chains/fee"
|
||||
)
|
||||
|
||||
// TestAdmissionPolicy_AttachedAtInit proves the chain still declares a non-zero
|
||||
@@ -21,13 +21,13 @@ func TestAdmissionPolicy_AttachedAtInit(t *testing.T) {
|
||||
defer func() { _ = vm.Shutdown(context.Background()) }()
|
||||
|
||||
require.NotNil(t, vm.FeePolicy())
|
||||
require.Equal(t, nodefee.MinTxFeeFloor, vm.FeePolicy().MinTxFee())
|
||||
require.NoError(t, nodefee.Validate(vm.FeePolicy()))
|
||||
require.Equal(t, fee.MinTxFeeFloor, vm.FeePolicy().MinTxFee())
|
||||
require.NoError(t, fee.Validate(vm.FeePolicy()))
|
||||
}
|
||||
|
||||
// TestAdmissionAndSettlementAgree proves the two fee surfaces are consistent:
|
||||
// the cheapest fee the per-algorithm settlement schedule can charge is at least
|
||||
// the declared admission floor, so they can never drift apart.
|
||||
func TestAdmissionAndSettlementAgree(t *testing.T) {
|
||||
require.GreaterOrEqual(t, MinScheduledFee(), nodefee.MinTxFeeFloor)
|
||||
require.GreaterOrEqual(t, MinScheduledFee(), fee.MinTxFeeFloor)
|
||||
}
|
||||
|
||||
+5
-5
@@ -9,7 +9,7 @@ import (
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
nodefee "github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/chains/fee"
|
||||
)
|
||||
|
||||
// TestGas_PerAlgorithmDistinct proves the audit fix: ML-KEM encapsulation,
|
||||
@@ -41,17 +41,17 @@ func TestGas_AllOperationsMeetFloor(t *testing.T) {
|
||||
for algo := range algoGas {
|
||||
f, err := FeeFor(&Transaction{Type: op, Algorithm: algo})
|
||||
require.NoError(t, err)
|
||||
require.GreaterOrEqualf(t, f, nodefee.MinTxFeeFloor,
|
||||
"op %d algo %s fee %d below floor %d", op, algo, f, nodefee.MinTxFeeFloor)
|
||||
require.GreaterOrEqualf(t, f, fee.MinTxFeeFloor,
|
||||
"op %d algo %s fee %d below floor %d", op, algo, f, fee.MinTxFeeFloor)
|
||||
}
|
||||
}
|
||||
// Policy-only operations (algorithm-independent).
|
||||
for _, op := range []uint8{TxSetPolicy, TxRevokeKey} {
|
||||
f, err := FeeFor(&Transaction{Type: op})
|
||||
require.NoError(t, err)
|
||||
require.GreaterOrEqual(t, f, nodefee.MinTxFeeFloor)
|
||||
require.GreaterOrEqual(t, f, fee.MinTxFeeFloor)
|
||||
}
|
||||
require.GreaterOrEqual(t, MinScheduledFee(), nodefee.MinTxFeeFloor,
|
||||
require.GreaterOrEqual(t, MinScheduledFee(), fee.MinTxFeeFloor,
|
||||
"the cheapest scheduled fee must satisfy the admission floor")
|
||||
}
|
||||
|
||||
|
||||
+2
-3
@@ -30,7 +30,6 @@ import (
|
||||
"github.com/luxfi/database/versiondb"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
nodefee "github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/timer/mockable"
|
||||
vmcore "github.com/luxfi/vm"
|
||||
"github.com/luxfi/vm/chain"
|
||||
@@ -152,7 +151,7 @@ type VM struct {
|
||||
// Admission policy (node/vms/types/fee). Orthogonal to settlement: this is
|
||||
// the boot-time floor declaration Manager validates; the per-op burn is done
|
||||
// through `ledger`. Kept so the chain still satisfies the zero-fee refusal.
|
||||
feePolicy nodefee.Policy
|
||||
feePolicy fee.Policy
|
||||
|
||||
// Block bookkeeping, under stateLock.
|
||||
pendingBlocks map[ids.ID]*Block
|
||||
@@ -223,7 +222,7 @@ func (vm *VM) Initialize(ctx context.Context, init vmcore.Init) error {
|
||||
|
||||
vm.ledger = fee.NewLedger(vm.versdb)
|
||||
vm.feePolicy = newFeePolicy(vm.networkID)
|
||||
if err := nodefee.Validate(vm.feePolicy); err != nil {
|
||||
if err := fee.Validate(vm.feePolicy); err != nil {
|
||||
return fmt.Errorf("keyvm: fee policy: %w", err)
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -6,10 +6,10 @@ package mpcvm
|
||||
import (
|
||||
"github.com/luxfi/constants"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/vms"
|
||||
"github.com/luxfi/vm/manager"
|
||||
)
|
||||
|
||||
var _ vms.Factory = (*Factory)(nil)
|
||||
var _ manager.Factory = (*Factory)(nil)
|
||||
|
||||
// VMID identifies M-Chain: MPC threshold signing and bridge custody of external
|
||||
// wallets (LP-7100). It is constants.MPCVMID and nothing else.
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
package mpcvm
|
||||
|
||||
import (
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/chains/fee"
|
||||
)
|
||||
|
||||
// Fee is what M-Chain charges to admit a user transaction, which is nothing,
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/chains/fee"
|
||||
)
|
||||
|
||||
// M-Chain declares the closed policy: it is a committee-driven service VM and
|
||||
|
||||
+5
-11
@@ -22,7 +22,6 @@ import (
|
||||
"github.com/luxfi/accel"
|
||||
"github.com/luxfi/lattice/v7/ring"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/config"
|
||||
)
|
||||
|
||||
// FHEAccelerator provides GPU-accelerated FHE operations for ThresholdVM.
|
||||
@@ -59,16 +58,11 @@ func NewFHEAccelerator(logger log.Logger) (*FHEAccelerator, error) {
|
||||
}
|
||||
|
||||
// NewFHEAcceleratorWithOptions creates a new GPU FHE accelerator with custom options.
|
||||
// If options are zero-valued, it uses the global GPU config.
|
||||
func NewFHEAcceleratorWithOptions(logger log.Logger, opts FHEOptions) (*FHEAccelerator, error) {
|
||||
// Get global config if options not specified
|
||||
gpuCfg := config.GetGlobalGPUConfig()
|
||||
|
||||
// Determine if GPU should be enabled
|
||||
enabled := gpuCfg.Enabled
|
||||
if opts.Backend == "cpu" {
|
||||
enabled = false
|
||||
}
|
||||
// The device is used unless the caller asks for the CPU by name. A plugin
|
||||
// is its own process, so no node-side setting can reach it: the option is
|
||||
// the only switch there is.
|
||||
enabled := opts.Backend != "cpu"
|
||||
|
||||
// Check if accel is available
|
||||
available := accel.Available() && enabled
|
||||
@@ -93,7 +87,7 @@ func NewFHEAcceleratorWithOptions(logger log.Logger, opts FHEOptions) (*FHEAccel
|
||||
"device", session.DeviceInfo().Name)
|
||||
} else {
|
||||
logger.Warn("GPU FHE acceleration not available, using CPU fallback",
|
||||
"gpuConfigEnabled", gpuCfg.Enabled,
|
||||
"gpuEnabled", enabled,
|
||||
"accelAvailable", accel.Available())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import (
|
||||
)
|
||||
|
||||
// NodeID identifies a Lux validator. Same definition as the rest of
|
||||
// luxfi/node — 32 bytes, content-addressed.
|
||||
// the platform — 32 bytes, content-addressed.
|
||||
type NodeID [32]byte
|
||||
|
||||
// Participant is one validator selected (via stake-weighted VRF) into
|
||||
|
||||
+2
-2
@@ -24,19 +24,19 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/luxfi/chains/chain"
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/constants"
|
||||
luxcrypto "github.com/luxfi/crypto"
|
||||
"github.com/luxfi/crypto/secp256k1"
|
||||
"github.com/luxfi/database"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/version"
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/runtime"
|
||||
"github.com/luxfi/threshold/pkg/party"
|
||||
"github.com/luxfi/threshold/pkg/pool"
|
||||
"github.com/luxfi/threshold/pkg/protocol"
|
||||
"github.com/luxfi/threshold/pkg/quorum"
|
||||
"github.com/luxfi/version"
|
||||
vmcore "github.com/luxfi/vm"
|
||||
vmchain "github.com/luxfi/vm/chain"
|
||||
"github.com/luxfi/warp"
|
||||
|
||||
+9
-2
@@ -9,7 +9,14 @@ package oraclevm
|
||||
// caller that constructs a VM through this shim transitively gets the
|
||||
// NoUserTxPolicy{} declared in ~/work/lux/oracle/vm/feegate.go.
|
||||
//
|
||||
// The policy value this shim hands back is the one luxfi/oracle constructs, and
|
||||
// luxfi/oracle v1.1.1 still builds it from the node's fee package. So the test
|
||||
// beside this file asserts against that package and not against
|
||||
// github.com/luxfi/chains/fee: the two declare the same shape under the same
|
||||
// name, but they are different types, and a test may only claim the type the
|
||||
// value actually has. O-Chain reaches a node-free closure when luxfi/oracle
|
||||
// programs against the chains fee surface; nothing in this repo can move it.
|
||||
//
|
||||
// See:
|
||||
// - oraclevm.go: re-export shim
|
||||
// - ~/work/lux/oracle/vm/feegate.go: canonical NoUserTxPolicy
|
||||
// - ~/work/lux/node/CLAUDE.md FeePolicy section
|
||||
// - luxfi/oracle/vm: canonical NoUserTxPolicy
|
||||
|
||||
@@ -7,15 +7,15 @@ import (
|
||||
"github.com/luxfi/chains/quantumvm/config"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/vms"
|
||||
"github.com/luxfi/vm/manager"
|
||||
)
|
||||
|
||||
var _ vms.Factory = (*Factory)(nil)
|
||||
var _ manager.Factory = (*Factory)(nil)
|
||||
|
||||
// VMID is the unique identifier for QuantumVM (Q-Chain)
|
||||
var VMID = ids.ID{'q', 'u', 'a', 'n', 't', 'u', 'm', 'v', 'm'}
|
||||
|
||||
// Factory implements vms.Factory interface for creating QVM instances
|
||||
// Factory implements manager.Factory interface for creating QVM instances
|
||||
type Factory struct {
|
||||
config.Config
|
||||
}
|
||||
|
||||
@@ -6,8 +6,8 @@ package quantumvm
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
)
|
||||
|
||||
// Per LP-0130 §6, Q-Chain has NO user-payable blockspace: finality-cert
|
||||
|
||||
+1
-1
@@ -13,6 +13,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/gorilla/rpc/v2"
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/chains/internal/codec"
|
||||
"github.com/luxfi/chains/quantumvm/config"
|
||||
"github.com/luxfi/chains/quantumvm/quantum"
|
||||
@@ -22,7 +23,6 @@ import (
|
||||
"github.com/luxfi/database/versiondb"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/timer/mockable"
|
||||
"github.com/luxfi/version"
|
||||
luxvm "github.com/luxfi/vm"
|
||||
|
||||
@@ -10,13 +10,13 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/chains/quantumvm/config"
|
||||
"github.com/luxfi/chains/quantumvm/quantum"
|
||||
"github.com/luxfi/consensus/protocol/quasar"
|
||||
"github.com/luxfi/database/memdb"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/runtime"
|
||||
luxvm "github.com/luxfi/vm"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
+9
-2
@@ -9,7 +9,14 @@ package relayvm
|
||||
// caller that constructs a VM through this shim transitively gets the
|
||||
// NoUserTxPolicy{} declared in ~/work/lux/relay/vm/feegate.go.
|
||||
//
|
||||
// The policy value this shim hands back is the one luxfi/relay constructs, and
|
||||
// luxfi/relay v1.1.1 still builds it from the node's fee package. So the test
|
||||
// beside this file asserts against that package and not against
|
||||
// github.com/luxfi/chains/fee: the two declare the same shape under the same
|
||||
// name, but they are different types, and a test may only claim the type the
|
||||
// value actually has. R-Chain reaches a node-free closure when luxfi/relay
|
||||
// programs against the chains fee surface; nothing in this repo can move it.
|
||||
//
|
||||
// See:
|
||||
// - relayvm.go: re-export shim
|
||||
// - ~/work/lux/relay/vm/feegate.go: canonical NoUserTxPolicy
|
||||
// - ~/work/lux/node/CLAUDE.md FeePolicy section
|
||||
// - luxfi/relay/vm: canonical NoUserTxPolicy
|
||||
|
||||
+3
-3
@@ -6,7 +6,7 @@ package schain
|
||||
import (
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/vms"
|
||||
"github.com/luxfi/vm/manager"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -15,13 +15,13 @@ var (
|
||||
// byte pattern dexvm uses (dexvm/factory.go:31, ids.ID{'d','e','x','v','m'}).
|
||||
VMID = ids.ID{'s', 'c', 'h', 'a', 'i', 'n'}
|
||||
|
||||
_ vms.Factory = (*Factory)(nil)
|
||||
_ manager.Factory = (*Factory)(nil)
|
||||
)
|
||||
|
||||
// Factory creates new S-Chain VM instances for the chains manager.
|
||||
type Factory struct{}
|
||||
|
||||
// New implements vms.Factory. It returns a ChainVM (which implements
|
||||
// New implements manager.Factory. It returns a ChainVM (which implements
|
||||
// chain.ChainVM) for the chains manager to drive. Unlike dexvm, the storage VM
|
||||
// allocates no GPU session — there is no latency-critical compute on its hot
|
||||
// path; manifest commits are pure database writes.
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
package zkvm
|
||||
|
||||
import (
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/chains/fee"
|
||||
)
|
||||
|
||||
// gateUserTx admits a user-submitted Transaction iff its declared Fee
|
||||
|
||||
@@ -13,10 +13,10 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/database/memdb"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/runtime"
|
||||
vmcore "github.com/luxfi/vm"
|
||||
)
|
||||
|
||||
+4
-9
@@ -23,7 +23,6 @@ import (
|
||||
"github.com/luxfi/accel"
|
||||
"github.com/luxfi/lattice/v7/ring"
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/node/config"
|
||||
)
|
||||
|
||||
// FHEAccelerator provides GPU-accelerated operations for CKKS FHE.
|
||||
@@ -63,14 +62,10 @@ type FHEAccelOptions struct {
|
||||
|
||||
// NewFHEAcceleratorWithOptions creates a new FHE accelerator with custom options.
|
||||
func NewFHEAcceleratorWithOptions(logger log.Logger, opts FHEAccelOptions) (*FHEAccelerator, error) {
|
||||
// Get global config if options not specified
|
||||
gpuCfg := config.GetGlobalGPUConfig()
|
||||
|
||||
// Determine if GPU should be enabled
|
||||
enabled := gpuCfg.Enabled
|
||||
if opts.Backend == "cpu" {
|
||||
enabled = false
|
||||
}
|
||||
// The device is used unless the caller asks for the CPU by name. A plugin
|
||||
// is its own process, so no node-side setting can reach it: the option is
|
||||
// the only switch there is.
|
||||
enabled := opts.Backend != "cpu"
|
||||
|
||||
// Check if GPU is available via accel library
|
||||
available := accel.Available() && enabled
|
||||
|
||||
+2
-2
@@ -24,8 +24,8 @@ import (
|
||||
vmchain "github.com/luxfi/vm/chain"
|
||||
"github.com/luxfi/warp"
|
||||
|
||||
"github.com/luxfi/node/version"
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
"github.com/luxfi/chains/fee"
|
||||
"github.com/luxfi/version"
|
||||
)
|
||||
|
||||
var (
|
||||
|
||||
Reference in New Issue
Block a user