plutus
plutus copied to clipboard
SmartContract crashes when checking two Value instances for equality
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
- Compile smartcontract
- Build smartcontract address
- Upload funds to smartcontract address
- Try unlocking funds
- 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
$
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.
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
I have also tried comparing two Value
s instances with geq
, leq
and smartcontract also crashed with those
@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.
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 PubKeyHash
es . 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.
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.