Using a map REQUIRES that all TLM functions are commutative. While it is probably a great requirement or goal, it doesn’t mean that we need to make a design choice which makes it a hard constraint, thereby introducing a chain halt pathway.
type TLMMintBurn struct {
TLMName string
Destination string
}
type TLMTransfer struct {
TLMName string
Source: string
Destination: string
}
type TLMProcessingResult { // Supersedes PendingClaimResult
Claims: []*sharedtypes.Claim
Mints: []TLMMintBurn
Burns: []TLMMintBurn
Transfers: []TLMTransfer
}
func (tlmPR) GetNumComputeUnits() int64
func (tlmPR) GetNumRelays() int64
func (tlmPR) GetNumClaims() int64
func (tlmPR) GetApplicationAddrs() []string
func (tlmPR) GetSupplierAddrs() []string
func (tlmPR) GetSessionEndHeight() int64
func (tlmPR) GetServices() []string // use for determinstic loops
func (tlmPR) RelaysPerServiceMap() map[string]uint64
func (tlmPR) Append(TLMProcessingResult) TLMProcessingResult
var tokenLogicModuleProcessors = []TokenLogicModule{...}
type TokenLogicModule struct {
Name string
Process func(
context.Context,
*sharedtypes.Service,
*sessiontypes.SessionHeader,
*apptypes.Application,
*sharedtypes.Supplier,
cosmostypes.Coin, // This is the "actualSettlementCoin" rather than just the "claimCoin" because of how settlement functions; see ensureClaimAmountLimits for details.
*servicetypes.RelayMiningDifficulty,
) (TLMProcessingResult, error)
}