mirror of
https://github.com/luxfi/chains.git
synced 2026-09-24 00:26:00 +00:00
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.
25 lines
965 B
Go
25 lines
965 B
Go
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package zkvm
|
|
|
|
import (
|
|
"github.com/luxfi/chains/fee"
|
|
)
|
|
|
|
// gateUserTx admits a user-submitted Transaction iff its declared Fee
|
|
// satisfies the chain's declared floor. Called from the HTTP entry
|
|
// (handleSendTransaction) before Mempool.AddTransaction, so a zero-fee tx is
|
|
// rejected before mempool or heap pressure changes.
|
|
//
|
|
// The shielded-tx Fee field is uint64-nLUX-denominated; the implicit asset is
|
|
// the chain's primary UTXO asset (always LUX on Z-Chain).
|
|
//
|
|
// Internal callers (consensus engine replay) bypass the gate by reaching
|
|
// processGenesisTransactions or direct mempool calls.
|
|
func (vm *VM) gateUserTx(tx *Transaction) error { return vm.fee.Admit(tx.Fee) }
|
|
|
|
// FeePolicy exposes the chain's declared fee policy for diagnostics and the
|
|
// boot-time Validate gate.
|
|
func (vm *VM) FeePolicy() fee.Policy { return vm.fee.Policy() }
|