plutus icon indicating copy to clipboard operation
plutus copied to clipboard

SmartContract crashes when checking two Value instances for equality

Open taada-finance opened this issue 3 years ago • 4 comments

Summary

I'm trying to create smartcontract to validate by the amount of lovelace sent to owner of public key hash provided by datum.

My validator looks like this:

data MyDatum = MyDatum
    { beneficiary :: !PubKeyHash
    }
    
-- {-# INLINABLE mkValidator -#} commented this out because with this pragma syntax highlighting doesn't work
mkValidator :: MyDatum -> () -> ScriptContext -> Bool
mkValidator dat _ ctx = validate
  where
    info :: TxInfo
    info = scriptContextTxInfo ctx
    
    findTxFromThisSc :: Maybe TxOut
    findTxFromThisSc = case findOwnInput ctx of
      Just txInInfo -> Just (txInInfoResolved txInInfo)
      Nothing       -> Nothing
    
    getValuePaidToPkh :: Value
    getValuePaidToPkh = valuePaidTo info (beneficiary dat)
  
    valueOutInLovelaces :: Value -> Integer
    valueOutInLovelaces v = valueOf v adaSymbol adaToken

    validate :: Bool
    validate = case findTxFromThisSc of
      Just txo -> traceIfFalse "Value paid to pkh owner isn't equal to 2000000" (valueOutInLovelaces getValuePaidToPkh == 2000000) -- or 0
      Nothing -> traceIfFalse "Tx from this sc was not found" False

Even though I do lock 2000000 lovelaces proof with 0 check, proof with 2000000 check

Validation always fails!!! But the weirdest thing is that when I test against 0 instead of 2000000 validation fails gracefully and I get my expected error message:

Value paid to pkh owner isn't equal to 0

but when I test locking/unlocking against 2000000 I get huge output with a lot of gibberish and this error:

ApplyTxError [UtxowFailure (WrappedShelleyEraFailure (UtxoFailure (UtxosFailure (ValidationTagMismatch (IsValid True) (FailedUnexpectedly [PlutusFailure "\nThe 3 arg plutus script (PlutusScript PlutusV1 ScriptHash \"d13196be073516394395be6399e6895957d1a16c960d215d8b1d5e9f\") fails.\nCekError An error has occurred: User error:\nThe provided Plutus code called 'error'...

Steps to reproduce the behavior

  1. Compile smartcontract
  2. Build smartcontract address
  3. Upload funds to smartcontract address
  4. Try unlocking funds
  5. Get an error

Actual Result

Estimated transaction fee: Lovelace 501223
Command failed: transaction submit  Error: Error while submitting tx: ShelleyTxValidationError ShelleyBasedEraAlonzo (ApplyTxError [UtxowFailure (WrappedShelleyEraFailure (UtxoFailure (UtxosFailure (ValidationTagMismatch (IsValid True) (FailedUnexpectedly [PlutusFailure "\nThe 3 arg plutus script (PlutusScript PlutusV1 ScriptHash \"d13196be073516394395be6399e6895957d1a16c960d215d8b1d5e9f\") fails.\nCekError An error has occurred:  User error:\nThe provided Plutus code called 'error'.\nThe data is: Constr 0 [B \"])\\255\\254ey\\185% \\147P\\183\\DELtb\\158Wg\\223\\SUB\\144\\SUB\\NAKK\\213\\a\\205\\235\"]\nThe redeemer is: Constr 0 [I 23]\nThe context is:\nPurpose: Spending (TxOutRef {txOutRefId = 57c4fe4e2bc6c8bd3d9bbf9f84e801edc0edb2ea40e9c0ed9d501e4e69f059dd, txOutRefIdx = 1})\nTxInfo:\n  TxId: 202115a32efba6e20bc4a8b4f8ed9f9b9e48a498d88110168740ff2e3bbd62f7\n  Inputs: [ 57c4fe4e2bc6c8bd3d9bbf9f84e801edc0edb2ea40e9c0ed9d501e4e69f059dd!0 -> - Value (Map [(,Map [(\"\",909871351)])]) addressed to\n                                                                                    PubKeyCredential: 1b9f802ceb143dab0172a4536afa3a3e5225d1169e3bd915487fddf0 (no staking credential)\n          , 57c4fe4e2bc6c8bd3d9bbf9f84e801edc0edb2ea40e9c0ed9d501e4e69f059dd!1 -> - Value (Map [(,Map [(\"\",2000000)])]) addressed to\n                                                                                    ScriptCredential: d13196be073516394395be6399e6895957d1a16c960d215d8b1d5e9f (no staking credential)\n          , df9d824ff05677c3bb08cedd5d102dca3b2cf36fb3f9429b1c87f6322d904b5f!1 -> - Value (Map [(,Map [(\"\",2000000)])]) addressed to\n                                                                                    PubKeyCredential: 1b9f802ceb143dab0172a4536afa3a3e5225d1169e3bd915487fddf0 (no staking credential) ]\n  Outputs: [ - Value (Map [(,Map [(\"\",911370128)])]) addressed to\n               PubKeyCredential: 5d29fffe6579b925209350b77f74629e5767df1a901a154bd507cdeb (no staking credential)\n           , - Value (Map [(,Map [(\"\",2000000)])]) addressed to\n               PubKeyCredential: 5d29fffe6579b925209350b77f74629e5767df1a901a154bd507cdeb (no staking credential) ]\n  Fee: Value (Map [(,Map [(\"\",501223)])])\n  Value minted: Value (Map [])\n  DCerts: []\n  Wdrl: []\n  Valid range: (-\8734 , +\8734)\n  Signatories: []\n  Datums: [ ( b892ff4df3f69e44bb2943abf5dc59fd9761388ab9b3427268148c1b284b2bf3\n          , <\"])\\255\\254ey\\185% \\147P\\183\\DELtb\\158Wg\\223\\SUB\\144\\SUB\\NAKK\\213\\a\\205\\235\"> ) ]\n" "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BNQI1AoI1NVA3ABIjMAoAIAUAYQAxM1A0AEADUDEAEzVTAGEgASNTVQMwASIyMjNVA4AEMAEAY1ABIAESMAE1UEMiUzU1A1ABE1UA8AQiE1NVA6ACIlM1MEIzANACAJEzVQFACAARMAYAMAI1ABIAESMAE1UDsiESIlM1NQMAARACIhMwBQAjM1UwBxIAEAUAQAE1ABIAESMAE1UDkiESJTNTUC0AEVAvIhM1AwMAQAIzVTAGEgAQBAAREhIiMAMAQRIhIiMwAgBQBBEhIiMAEAQRIAEiMzVzRm48AIAEDAC8iM3AABAAkRGRkZGACAMagAkACJGACaqBsRGamoFAAKQABEamqgWgBESmamBqZmrmjNx4AQBQG4GwmAQACJgDABkZGRgAgBmoAJAAiRgAmqgbERmpqBQACkAARGpqoFoAREpmpgamZq5ozceAEASBuBsIAImAMAGRqYEAAJEQAJGpgOgAkREREREASRqYDoAJEACRKZqYFAAIgVCZq5wAICkjUwGQASI1MBwAIiIiIiIlMzNTA1ALIVAxIVAxIVAxITM1UwDxIAFQEyNTApABIlM1MDYzAYACAEE1A1ADFQNACzUAEgARIwATVQKyIRIyIlM1NQIQARNQCABCITNQBTAEACMzVTAIEgAQBgBAARNQBgARI1NQDAASIAESNTUAsAEiACEzUApQAVAeEiUzU1AeACIQAxABIlM1MCAzNXNGbjzUwJAAiIAI1MCQAEiACAiAhEzNXNGbhzUwJAAiIAE1MCQAEiABAiAhECEiMzVzRm4cAIAECECAjUwAgASABIAERIyIzVQA1ACABE1ACUAcSM1AEIjM1AHADACABNQAgARI1NQBwASIAESISMwAQAwAhIAESNTUAQAEiACEzUAMAEBUiUzUwFQAhAXEAESISMwAQAwAhIAEgARIAEjUwAgASIAIgASABIAEgAREiACEiEiMwAQBAAxIAERIhIzABADACESABIAESEiMAIAMRIgARIAESIAISIAEgASABIAEgASABESMjABABIjMAMwAgAgATMiMwAkiQH/AEiBHOjl+KprmTY/OafYiDZS4le+OnMRyQjamrgRa7UAIhIzABADACIAEZ/YeZ9YHF0p//5lebklIJNQt390Yp5XZ98akBoVS9UHzev/2HmfF//YeZ/YeZ+f2Hmf2Hmf2HmfWCBXxP5OK8bIvT2bv5+E6AHtwO2y6kDpwO2dUB5OafBZ3f8A/9h5n9h5n9h5n1gcG5+ALOsUPasBcqRTavo6PlIl0RaeO9kVSH/d8P/YeoD/oUChQBo2O4j32HqA///YeZ/YeZ/YeZ9YIFfE/k4rxsi9PZu/n4ToAe3A7bLqQOnA7Z1QHk5p8Fnd/wH/2Hmf2Hmf2HqfWBzRMZa+BzUWOUOVvmOZ5olZV9GhbJYNIV2LHV6f/9h6gP+hQKFAGgAehIDYeZ9YILiS/03z9p5EuylDq/XcWf2XYTiKubNCcmgUjBsoSyvz////2Hmf2Hmf2HmfWCDfnYJP8FZ3w7sIzt1dEC3KOyzzb7P5Qpsch/YyLZBLX/8B/9h5n9h5n9h5n1gcG5+ALOsUPasBcqRTavo6PlIl0RaeO9kVSH/d8P/YeoD/oUChQBoAHoSA2HqA////n9h5n9h5n9h5n1gcXSn//mV5uSUgk1C3f3Rinldn3xqQGhVL1QfN6//YeoD/oUChQBo2UmeQ2HqA/9h5n9h5n9h5n1gcXSn//mV5uSUgk1C3f3Rinldn3xqQGhVL1QfN6//YeoD/oUChQBoAHoSA2HqA//+hQKFAGgAHpeehQKFAAICA2Hmf2Hmf2HmA2HqA/9h5n9h7gNh6gP//gJ/YeZ9YILiS/03z9p5EuylDq/XcWf2XYTiKubNCcmgUjBsoSyvz2HmfWBxdKf/+ZXm5JSCTULd/dGKeV2ffGpAaFUvVB83r////2HmfWCAgIRWjLvum4gvEqLT47Z+bnkikmNiBEBaHQP8uO71i9///2Hqf2Hmf2HmfWCBXxP5OK8bIvT2bv5+E6AHtwO2y6kDpwO2dUB5OafBZ3f8B/////wA="])))))])

Expected Result

Error like this:

Command failed: transaction build  Error: The following scripts have execution failures:
the script for transaction input 1 (in the order of the TxIds) failed with: 
The Plutus script evaluation failed: An error has occurred:  User error:
The provided Plutus code called 'error'.
Script debugging logs: value paid to hash isnt 0
Validation failed
Pd

But with 2000000 in validator instead of 0 or validation should pass

Describe the approach you would take to fix this

Fix error tracing or fix validation when using valuePaidTo function

System info

$ cardano-cli --version
cardano-cli 1.32.0 - linux-x86_64 - ghc-8.10
git rev 845a8df985fe5898f15925829bc29e6cfd6cb825
$ cardano-node --version
cardano-node 1.32.0 - linux-x86_64 - ghc-8.10
git rev 845a8df985fe5898f15925829bc29e6cfd6cb825
$ uname -r
5.4.0-89-generic
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.3 LTS
Release:        20.04
Codename:       focal
$ 

taada-finance avatar Jan 27 '22 15:01 taada-finance

At first glance valuePaidTo has no error calls and should work fine.

Have you considered to use a binary search to inspect what the value might be? By using <= and >= you can check what's the value. For example:

traceIfFalse "less than 1000000" (valueOutInLovelaces getValuePaidToPkh >= 1000000)
|| traceIfFalse "greater than 1000000" (valueOutInLovelaces getValuePaidToPkh <= 1000000)

and then add more/or change traces with bigger/smaller numbers.

ak3n avatar Jan 31 '22 07:01 ak3n

Did a little bit more of testing. In this case I locked 10 of my custom tokens:

data LockFundsDatum = LockFundsDatum
    { beneficiary     :: !PubKeyHash
    , lockedTokensID  :: !CurrencySymbol
    , lockedTokenName :: !TokenName
    } deriving Show

{-# INLINABLE mkValidator #-}
mkValidator ::LockFundsDatum -> () -> ScriptContext -> Bool
mkValidator dat _ ctx = validate
  where
    info :: TxInfo
    info = scriptContextTxInfo ctx

    lockedValue :: Value
    lockedValue = valuePaidTo info (beneficiary dat)

    valueOutInteger :: Value -> Integer
    valueOutInteger v = valueOf v (lockedTokensID dat) (lockedTokenName dat)

    findTxFromThisSc :: Maybe TxOut
    findTxFromThisSc = case findOwnInput ctx of
      Just txInInfo -> Just (txInInfoResolved txInInfo)
      Nothing       -> Nothing

    lockedValue' :: Maybe Value
    lockedValue' = case findTxFromThisSc of
      Just txo -> Just $ txOutValue txo
      Nothing  -> Nothing

    test0 :: Bool
    test0 = case lockedValue' of
      Just v  -> valueOutInteger v == valueOutInteger lockedValue
      Nothing -> False

    test1 :: Bool
    test1 = case lockedValue' of
      Just v -> traceIfTrue "value of test1 is 10 true" $ valueOutInteger v == 10
      Nothing -> False

    test2 :: Bool
    test2 = traceIfFalse "value of test2 is 10 is false" $ valueOutInteger lockedValue == 10

    test3 :: Bool
    test3 = case lockedValue' of
      Just v -> traceIfFalse "values are not equal" $ v == lockedValue
      Nothing -> False

    validate :: Bool
    validate = traceIfFalse "Final test failed" test0 && test1 && test2 && test3

Out of these:

  • test0 passes
  • test1 passes
  • test2 passes
  • test3 crashes smartcontract

taada-finance avatar Feb 01 '22 08:02 taada-finance

I have also tried comparing two Values instances with geq, leq and smartcontract also crashed with those

taada-finance avatar Feb 03 '22 08:02 taada-finance

@taada-finance - Did you ever get a fix for this issue? I have a feeling that I'm hitting the same problem but finding it very difficult to debug!

Does it also crash when running via the Playground / Plutus Testing? My script is working well when running in my Haskell Tests but when I try creating a transaction from the Cardano Serialization Library I'm getting a similar issue to what you have explained. Running on Testnet at the moment.

gavinharris-dev avatar May 21 '22 23:05 gavinharris-dev

UPD: There was no issue actually. Turns out it was my mistake, I parsed pub key hash incorrectly.

issue details

I have a similar issue, though I'm trying to compare PubKeyHashes . Here is the script. The minting policy is working when I mint with pab. But when I compile it and dump to text envelope, trying to sumbit tx (using blockfrost) results in:

transaction submit error ShelleyTxValidationError ShelleyBasedEraBabbage (ApplyTxError [UtxowFailure (UtxoFailure (FromAlonzoUtxoFail (UtxosFailure (ValidationTagMismatch (IsValid True) (FailedUnexpectedly (PlutusFailure \\"\\\\nThe 2 arg plutus script (PlutusScript PlutusV2 ScriptHash \\\\\\"e3909c16b5082088aaa3f3ee9812d6ee1ed13cc89b8ecd816f751c2e\\\\\\") fails.\\\\nCekError An error has occurred:  User error:\\\\nThe machine terminated because of an error, either from a built-in function or from an explicit use of \'error\'.\\\\nThe protocol version is: ProtVer {pvMajor = 7, pvMinor = 0}\\\\nThe redeemer is: Constr 0 []\\\\nThe second data argument, does not decode to a context\\\\nConstr 0 [Constr 0 [List [Constr 0 [Constr 0 [Constr 0 [B 

... very long string At the same time submitting with a very simple minting policy works:

{-# INLINEABLE mkMintingPolicy #-}
mkMintingPolicy :: (PaymentPubKeyHash, Integer) -> () -> ScriptContext -> Bool
mkMintingPolicy _ _ _ = True

Fixed it here.

stanislav-az avatar Dec 05 '22 08:12 stanislav-az

UPD: There was no issue actually. Turns out it was my mistake, I parsed pub key hash incorrectly.

Best kind of issue! Thank you for the update.

effectfully avatar Jan 31 '23 23:01 effectfully