From 42cf3b54299a129e7c15943c4265ded108ad880e Mon Sep 17 00:00:00 2001 From: SIDANWhatever Date: Fri, 16 Aug 2024 14:44:49 +0800 Subject: [PATCH 1/2] feat: add evaluator for blockfrost and yaci --- packages/mesh-provider/src/blockfrost.ts | 5 +++- packages/mesh-provider/src/yaci.ts | 31 +++++++++++++++++++++--- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/packages/mesh-provider/src/blockfrost.ts b/packages/mesh-provider/src/blockfrost.ts index 24d4521c8..5f2677617 100644 --- a/packages/mesh-provider/src/blockfrost.ts +++ b/packages/mesh-provider/src/blockfrost.ts @@ -8,6 +8,7 @@ import { BlockInfo, castProtocol, fromUTF8, + IEvaluator, IFetcher, IListener, ISubmitter, @@ -28,7 +29,9 @@ import { parseAssetUnit } from "./utils/parse-asset-unit"; export type BlockfrostSupportedNetworks = "mainnet" | "preview" | "preprod"; -export class BlockfrostProvider implements IFetcher, IListener, ISubmitter { +export class BlockfrostProvider + implements IFetcher, IListener, ISubmitter, IEvaluator +{ private readonly _axiosInstance: AxiosInstance; private readonly _network: BlockfrostSupportedNetworks; diff --git a/packages/mesh-provider/src/yaci.ts b/packages/mesh-provider/src/yaci.ts index 817135b79..b01f5054e 100644 --- a/packages/mesh-provider/src/yaci.ts +++ b/packages/mesh-provider/src/yaci.ts @@ -2,17 +2,20 @@ import axios, { AxiosInstance } from "axios"; import { AccountInfo, + Action, Asset, AssetMetadata, BlockInfo, castProtocol, fromUTF8, + IEvaluator, IFetcher, IListener, ISubmitter, NativeScript, PlutusScript, Protocol, + RedeemerTagType, SUPPORTED_HANDLES, TransactionInfo, Unit, @@ -23,7 +26,9 @@ import { resolveRewardAddress, toScriptRef } from "@meshsdk/core-cst"; import { parseHttpError } from "./utils"; import { parseAssetUnit } from "./utils/parse-asset-unit"; -export class YaciProvider implements IFetcher, IListener, ISubmitter { +export class YaciProvider + implements IFetcher, IListener, ISubmitter, IEvaluator +{ private readonly _axiosInstance: AxiosInstance; /** @@ -385,7 +390,7 @@ export class YaciProvider implements IFetcher, IListener, ISubmitter { } } - async evaluateTx(txHex: string): Promise { + async evaluateTx(txHex: string) { try { const headers = { "Content-Type": "application/cbor" }; const { status, data } = await this._axiosInstance.post( @@ -396,8 +401,26 @@ export class YaciProvider implements IFetcher, IListener, ISubmitter { }, ); - if (status === 200) { - return data; + if (status === 200 && data.result.EvaluationResult) { + const tagMap: { [key: string]: RedeemerTagType } = { + spend: "SPEND", + mint: "MINT", + certificate: "CERT", + withdrawal: "REWARD", + }; + const result: Omit[] = []; + + Object.keys(data.result.EvaluationResult).forEach((key) => { + const [tagKey, index] = key.split(":"); + const { memory, steps } = data.result.EvaluationResult[key]; + result.push({ + tag: tagMap[tagKey!]!, + index: Number(index), + budget: { mem: memory, steps }, + }); + }); + + return result; } throw parseHttpError(data); From 5290a3cd98e8a24bf565915867f787909a14c9d6 Mon Sep 17 00:00:00 2001 From: SIDANWhatever Date: Fri, 16 Aug 2024 20:43:24 +0800 Subject: [PATCH 2/2] fix: fix metadata for mint in tx class --- packages/mesh-transaction/src/transaction/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/mesh-transaction/src/transaction/index.ts b/packages/mesh-transaction/src/transaction/index.ts index f3b5a4b1e..16c313bc7 100644 --- a/packages/mesh-transaction/src/transaction/index.ts +++ b/packages/mesh-transaction/src/transaction/index.ts @@ -398,8 +398,9 @@ export class Transaction { this.setMetadata(Number(mint.label), { [policyId]: { [mint.assetName]: mint.metadata }, }); + } else { + this.setMetadata(Number(mint.label), mint.metadata); } - this.setMetadata(Number(mint.label), mint.metadata); } return this;