Skip to content

Commit f7d79d4

Browse files
committed
Fix token name parsing
1 parent 9cf0c14 commit f7d79d4

File tree

1 file changed

+7
-9
lines changed

1 file changed

+7
-9
lines changed

src/BotPlutusInterface/UtxoParser.hs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ module BotPlutusInterface.UtxoParser (
33
feeParser,
44
utxoParser,
55
utxoMapParser,
6+
tokenNameParser,
67
) where
78

8-
import Control.Applicative (many)
9+
import Control.Applicative (many, (<|>))
910
import Control.Monad (mzero, void)
1011
import Data.Aeson.Extras (tryDecode)
1112
import Data.Attoparsec.Text (
@@ -22,11 +23,10 @@ import Data.Attoparsec.Text (
2223
skipSpace,
2324
skipWhile,
2425
takeWhile,
26+
string,
2527
(<?>),
2628
)
27-
import Data.Hex (unhex)
2829
import Data.Text (Text)
29-
import Data.Text.Encoding (decodeUtf8, encodeUtf8)
3030
import Ledger (Address (addressCredential))
3131
import Ledger.Ada qualified as Ada
3232
import Ledger.Scripts (DatumHash (..))
@@ -35,12 +35,13 @@ import Ledger.Tx (
3535
TxOutRef (..),
3636
)
3737
import Ledger.TxId (TxId (..))
38-
import Ledger.Value (AssetClass, TokenName, Value)
38+
import Ledger.Value (AssetClass, Value)
3939
import Ledger.Value qualified as Value
4040
import Plutus.V1.Ledger.Api (
4141
BuiltinByteString,
4242
Credential (PubKeyCredential, ScriptCredential),
4343
CurrencySymbol (..),
44+
TokenName(..),
4445
)
4546
import PlutusTx.Builtins (toBuiltin)
4647
import Prelude hiding (takeWhile)
@@ -106,7 +107,8 @@ tokenNameParser = do
106107
where
107108
tokenName = do
108109
void $ char '.'
109-
Value.tokenName . encodeUtf8 <$> decodeHex (takeWhile (/= ' '))
110+
void $ (string "0x" <|> string "")
111+
TokenName <$> decodeHash (takeWhile (not . inClass " "))
110112

111113
datumHashNoneParser :: Parser ()
112114
datumHashNoneParser = "TxOutDatumNone" >> pure ()
@@ -123,10 +125,6 @@ decodeHash :: Parser Text -> Parser BuiltinByteString
123125
decodeHash rawParser =
124126
rawParser >>= \parsed -> either (const mzero) (pure . toBuiltin) (tryDecode parsed)
125127

126-
decodeHex :: Parser Text -> Parser Text
127-
decodeHex rawParser =
128-
rawParser >>= \parsed -> either (const mzero) (pure . decodeUtf8) ((unhex . encodeUtf8) parsed)
129-
130128
feeParser :: Parser Integer
131129
feeParser =
132130
choice [prefixed, suffixed]

0 commit comments

Comments
 (0)