From c2213a894a9743e01cdb9e0d3b1098c3735f4f56 Mon Sep 17 00:00:00 2001 From: Adam Bozanich Date: Fri, 16 Jun 2023 10:53:51 -0700 Subject: [PATCH] feat: take rate, multi-currency (#118) * expose currency to bid engine --- bidengine/order.go | 5 +++++ bidengine/pricing.go | 3 +-- bidengine/shellscript.go | 3 +++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/bidengine/order.go b/bidengine/order.go index 5fb99036f..3331c3763 100644 --- a/bidengine/order.go +++ b/bidengine/order.go @@ -387,6 +387,11 @@ loop: price := result.Value().(sdk.DecCoin) maxPrice := group.GroupSpec.Price() + if maxPrice.GetDenom() != price.GetDenom() { + o.log.Error("Unsupported Denomination", "calculated", price.String(), "max-price", maxPrice.String()) + break loop + } + if maxPrice.IsLT(price) { o.log.Info("Price too high, not bidding", "price", price.String(), "max-price", maxPrice.String()) break loop diff --git a/bidengine/pricing.go b/bidengine/pricing.go index 6b06bd86b..81b2ece38 100644 --- a/bidengine/pricing.go +++ b/bidengine/pricing.go @@ -27,8 +27,6 @@ type BidPricingStrategy interface { CalculatePrice(ctx context.Context, req Request) (sdk.DecCoin, error) } -const denom = "uakt" - var ( errAllScalesZero = errors.New("at least one bid price must be a non-zero number") errNoPriceScaleForStorageClass = errors.New("no pricing configured for storage class") @@ -130,6 +128,7 @@ func (fp scalePricing) CalculatePrice(_ context.Context, req Request) (sdk.DecCo cpuTotal := decimal.NewFromInt(0) memoryTotal := decimal.NewFromInt(0) storageTotal := make(Storage) + denom := req.GSpec.Price().Denom for k := range fp.storageScale { storageTotal[k] = decimal.NewFromInt(0) diff --git a/bidengine/shellscript.go b/bidengine/shellscript.go index 03b7ffe87..bddb0cd79 100644 --- a/bidengine/shellscript.go +++ b/bidengine/shellscript.go @@ -161,8 +161,11 @@ func (ssp shellScriptPricing) CalculatePrice(ctx context.Context, req Request) ( stderrBuf := &bytes.Buffer{} cmd.Stderr = stderrBuf + denom := req.GSpec.Price().Denom + subprocEnv := os.Environ() subprocEnv = append(subprocEnv, fmt.Sprintf("AKASH_OWNER=%s", req.Owner)) + subprocEnv = append(subprocEnv, fmt.Sprintf("AKASH_DENOM=%s", denom)) cmd.Env = subprocEnv err = cmd.Run()