Skip to content

Commit

Permalink
Enable tests
Browse files Browse the repository at this point in the history
  • Loading branch information
newhoggy committed Apr 2, 2022
1 parent 75f0acd commit 3cb78c7
Show file tree
Hide file tree
Showing 21 changed files with 174 additions and 31 deletions.
File renamed without changes.
1 change: 1 addition & 0 deletions plutus-example/plutus/data/42.datum.cbor
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*
1 change: 1 addition & 0 deletions plutus-example/plutus/data/42.redeemer
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"int":42}
1 change: 1 addition & 0 deletions plutus-example/plutus/data/42.redeemer.cbor
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*
1 change: 1 addition & 0 deletions plutus-example/plutus/data/typed-42.datum
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"constructor":0,"fields":[{"int":42}]}
1 change: 1 addition & 0 deletions plutus-example/plutus/data/typed-42.datum.cbor
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
�y�*�
1 change: 1 addition & 0 deletions plutus-example/plutus/data/typed-42.redeemer
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"constructor":0,"fields":[{"int":42}]}
137 changes: 137 additions & 0 deletions plutus-example/plutus/example-txin-locking-plutus-script.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
#!/usr/bin/env bash

# Unofficial bash strict mode.
# See: http://redsymbol.net/articles/unofficial-bash-strict-mode/
set -e
set -o pipefail

export WORK="${WORK:-example/work}"
export BASE="${BASE:-.}"
export CARDANO_CLI="${CARDANO_CLI:-cardano-cli}"
export CARDANO_NODE_SOCKET_PATH="${CARDANO_NODE_SOCKET_PATH:-example/node-bft1/node.sock}"
export TESTNET_MAGIC="${TESTNET_MAGIC:-42}"
export UTXO_VKEY="${UTXO_VKEY:-example/shelley/utxo-keys/utxo1.vkey}"
export UTXO_SKEY="${UTXO_SKEY:-example/shelley/utxo-keys/utxo1.skey}"
export RESULT_FILE="${RESULT_FILE:-$WORK/result.out}"

echo "Socket path: $CARDANO_NODE_SOCKET_PATH"
echo "Socket path: $(pwd)"

ls -al "$CARDANO_NODE_SOCKET_PATH"

if [ "$1" == "guessinggame" ]; then
# NB: This plutus script uses a "typed" redeemer and "typed" datum.
plutusscriptinuse="$BASE/plutus-example/plutus/scripts/custom-guess-42-datum-42.plutus"
# This datum hash is the hash of the typed 42
scriptdatumhash="fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273"
datumfilepath="$BASE/plutus-example/plutus/data/typed-42.datum"
redeemerfilepath="$BASE/plutus-example/plutus/data/typed-42.redeemer"
echo "Guessing game Plutus script in use. The datum and redeemer must be equal to 42."
echo "Script at: $plutusscriptinuse"

elif [ "$1" == "" ]; then
plutusscriptinuse="$BASE/plutus-example/plutus/scripts/always-succeeds-spending.plutus"
# This datum hash is the hash of the untyped 42
scriptdatumhash="9e1199a988ba72ffd6e9c269cadb3b53b5f360ff99f112d9b2ee30c4d74ad88b"
datumfilepath="$BASE/plutus-example/plutus/data/42.datum"
redeemerfilepath="$BASE/plutus-example/plutus/data/42.redeemer"
echo "Always succeeds Plutus script in use. Any datum and redeemer combination will succeed."
echo "Script at: $plutusscriptinuse"
fi


# Step 1: Create a tx output with a datum hash at the script address. In order for a tx output to be locked
# by a plutus script, it must have a datahash. We also need collateral tx inputs so we split the utxo
# in order to accommodate this.


plutusscriptaddr=$($CARDANO_CLI address build --payment-script-file "$plutusscriptinuse" --testnet-magic "$TESTNET_MAGIC")

mkdir -p "$WORK"

utxoaddr=$($CARDANO_CLI address build --testnet-magic "$TESTNET_MAGIC" --payment-verification-key-file "$UTXO_VKEY")

$CARDANO_CLI query utxo --address "$utxoaddr" --cardano-mode --testnet-magic "$TESTNET_MAGIC" --out-file $WORK/utxo-1.json
cat $WORK/utxo-1.json

txin=$(jq -r 'keys[0]' $WORK/utxo-1.json)
lovelaceattxin=$(jq -r ".[\"$txin\"].value.lovelace" $WORK/utxo-1.json)
lovelaceattxindiv3=$(expr $lovelaceattxin / 3)

$CARDANO_CLI query protocol-parameters --testnet-magic "$TESTNET_MAGIC" --out-file $WORK/pparams.json

$CARDANO_CLI transaction build \
--alonzo-era \
--cardano-mode \
--testnet-magic "$TESTNET_MAGIC" \
--change-address "$utxoaddr" \
--tx-in "$txin" \
--tx-out "$plutusscriptaddr+$lovelaceattxindiv3" \
--tx-out-datum-hash "$scriptdatumhash" \
--tx-out "$utxoaddr+$lovelaceattxindiv3" \
--protocol-params-file "$WORK/pparams.json" \
--out-file "$WORK/create-datum-output.body"

$CARDANO_CLI transaction sign \
--tx-body-file $WORK/create-datum-output.body \
--testnet-magic "$TESTNET_MAGIC" \
--signing-key-file $UTXO_SKEY \
--out-file $WORK/create-datum-output.tx

# SUBMIT
$CARDANO_CLI transaction submit --tx-file $WORK/create-datum-output.tx --testnet-magic "$TESTNET_MAGIC"
echo "Pausing for 5 seconds..."
sleep 5

# Step 2
# After "locking" the tx output at the script address, we can now can attempt to spend
# the "locked" tx output below.

$CARDANO_CLI query utxo --address $plutusscriptaddr --testnet-magic "$TESTNET_MAGIC" --out-file $WORK/plutusutxo.json

plutusutxotxin=$(jq -r 'keys[]' $WORK/plutusutxo.json)

$CARDANO_CLI query utxo --address $utxoaddr --cardano-mode --testnet-magic "$TESTNET_MAGIC" --out-file $WORK/utxo-2.json
cat $WORK/utxo-2.json
txinCollateral=$(jq -r 'keys[0]' $WORK/utxo-2.json)


dummyaddress=addr_test1vpqgspvmh6m2m5pwangvdg499srfzre2dd96qq57nlnw6yctpasy4

lovelaceatplutusscriptaddr=$(jq -r ".[\"$plutusutxotxin\"].value.lovelace" $WORK/plutusutxo.json)

echo "Plutus txin"
echo "$plutusutxotxin"

echo "Collateral"
echo "$txinCollateral"

$CARDANO_CLI transaction build \
--alonzo-era \
--cardano-mode \
--testnet-magic "$TESTNET_MAGIC" \
--change-address "$utxoaddr" \
--tx-in "$plutusutxotxin" \
--tx-in-collateral "$txinCollateral" \
--tx-out "$dummyaddress+10000000" \
--tx-in-script-file "$plutusscriptinuse" \
--tx-in-datum-file "$datumfilepath" \
--protocol-params-file "$WORK/pparams.json" \
--tx-in-redeemer-file "$redeemerfilepath" \
--out-file $WORK/test-alonzo.body

$CARDANO_CLI transaction sign \
--tx-body-file $WORK/test-alonzo.body \
--testnet-magic "$TESTNET_MAGIC" \
--signing-key-file "${UTXO_SKEY}" \
--out-file $WORK/alonzo.tx

# SUBMIT $WORK/alonzo.tx
echo "Submit the tx with plutus script and wait 5 seconds..."
$CARDANO_CLI transaction submit --tx-file $WORK/alonzo.tx --testnet-magic "$TESTNET_MAGIC"
sleep 5
echo ""
echo "Querying UTxO at $dummyaddress. If there is ADA at the address the Plutus script successfully executed!"
echo ""
$CARDANO_CLI query utxo --address "$dummyaddress" --testnet-magic "$TESTNET_MAGIC" \
| tee "$RESULT_FILE"
5 changes: 5 additions & 0 deletions plutus-example/plutus/scripts/always-succeeds-spending.plutus
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"type": "PlutusScriptV1",
"description": "",
"cborHex": "4e4d01000033222220051200120011"
}
5 changes: 5 additions & 0 deletions plutus-example/plutus/scripts/context-equivalance-test.plutus
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"type": "PlutusScriptV1",
"description": "",
"cborHex": "5914d65914d3010000332323233223322333222323232333222333222333333332222222233223333322222333322223332223322332233223332223322332233223322323232323232323232323232323232323232323232323322332232323232335500104c500911222222300733300430060033005002300800125335302f001105213504c3530513357389201025064000524988c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266012a002a0042600c6ae8540084c068d5d09aba25001135573ca00226ea80084d412d262323232323232323232323232323232323232323232323333573466e1cd55cea80aa40004a0044a02e930999999999980d2800a8012801a8022802a8032803a8042804a805099a81400d9aba15012133502701b35742a0202666aa044eb94084d5d0a8070999aa810bae502035742a018266a04804e6ae8540284cd408ccd5408809dd69aba15008133501875a6ae8540184cd4085d71aba150041335020335501f75c03c6ae8540084c098d5d09aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea80084d4129262212330010030022001222222222212333333333300100b00a00900800700600500400300220011232323232323232323232323232323232323232323333573466e1cd55cea809a40004a0044a02a930999999999815a800a8012801a8022802a8032803a8042804899a81080a9aba15010133502001335742a01c2666aa036eb94068d5d0a806099a80a3ad35742a0142666aa032eb94060d5d0a804099a80e280c9aba15006133501b01e35742a008266a034eb8d5d0a801099a80d00d9aba135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea80084d41152623232323232323333573466e1cd55cea802a40004a0044a00e9309980f2800a8010980c1aba1500213005357426ae8940044d55cf280089baa0021350444988c8c8c8c8c8c8c8c8cccd5cd19b8735573aa00e90001280112804a4c2666042a002a004a006260106ae8540104ccd54039d728069aba15002133501275c6ae84d5d1280089aba25001135573ca00226ea80084d410d2623232323232323333573466e1cd55cea802a40004a0044a00e930998102800a8010980a9aba150021335010013357426ae8940044d55cf280089baa002135042498488c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266a04aa002a004266a00e00c6ae8540084cd401c014d5d09aba25001135573ca00226ea80084d4109261223232323232323333573466e1cd55cea802a40004a0044a00e93099a8142800a801099a8040031aba1500213008357426ae8940044d55cf280089baa002135041498488c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266a04aa002a004266a00e00c6ae8540084c01cd5d09aba25001135573ca00226ea80084d410126122323232323232323333573466e1d401520042502e250024984cccd5cd19b8750044800894008940112613502d500113006357426aae79400c4cccd5cd19b87500148000940ac9401126135573aa00226ea80084d40fd2623232323333573466e1d400920022026250024984cccd5cd19b8750014800080909400d26135573a6ea80084d40f5261335500175ceb444888c8c8c004dd58019a80090008918009aa82391191919191919191999aab9f008550482530021200104d350022200135001220023555504e12223300321300a357440124266a096a00aa600624002266aa096a002a004260106aae7540084c018d55cf280089aba10011335500275c0024002224446464646464646666ae68cdc39aab9d500548000940089401d2613355047500150021300735742a0042600a6ae84d5d1280089aab9e50011375400426a07493091191918009bac0033500120011230013550422233335573e0024a080466a07e600c6ae84008c00cd5d10010208911919191919191999ab9a3370ea0089000128011280224c26a030a0022600c6ae84d55cf280189999ab9a3370ea00290011280b1280224c26aae7540044dd500109a81ba4c464646464646464646464646464646666ae68cdc3a8052400c4a0044a00893098182800898071aba135573ca01626666ae68cdc3a803a40084a0044a0089309815a800898061aba135573ca01026666ae68cdc3a802240044a0044a0089309813a800898059aba135573ca00a26666ae68cdc3a800a40004a0064a00c9309aab9d50031302550011375c6ae84d55cf280089baa0021350354988c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8cccd5cd19b875015480308108940092613333573466e1d4051200a2042250024984cccd5cd19b8750134802094008940192613303c500150021375c6ae8540084dd69aba135744a00226aae7940484cccd5cd19b87500e48018940089401926133038500150021375c6ae8540084dd71aba135744a00226aae7940344cccd5cd19b87500948010940089401926133037500150021300d35742a00426eb8d5d09aba25001135573ca01026666ae68cdc3a802240044a0044a0089309819a800898041aba135573ca00a26666ae68cdc3a800a40004a0064a00c9309aab9d50031302d500113004357426aae7940044dd500109a81a24c46464646464646464646464646666ae68cdc3a804240044a0044a01093099981c2800a801280189bad35742a00826eb4d5d0a80109bad357426ae8940044d5d1280089aab9e500513333573466e1d4005200025003250064984d55cea80189818a800898021aba135573ca00226ea80084d40cd26232323232323232323333573466e1d4011200225002250044984c0d940044dd71aba135573ca00a26666ae68cdc3a800a40004a0064a00c9309aab9d50031303350011375c6ae84d55cf280089baa0021350324988c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c26604ca002a0042600c6ae8540084dd69aba135744a00226aae7940044dd500109a818a4c46464646666ae68cdc39aab9d5002480009400894011261375c6ae84d55cf280089baa00213503049888888888848ccccccccc00402802402001c01801401000c00880048848cc00400c008800488848ccc00401000c00880048848cc00400c008800448488c00800c44880044800448848cc00400c0084800448848cc00400c0084800448848cc00400c008480044880084880048004484888c00c010448880084488800448004848888c010014848888c00c014848888c008014848888c00401480048848cc00400c0088004848888888c01c0208848888888cc018024020848888888c014020488888880104888888800c8848888888cc0080240208848888888cc00402402080048488c00800c888488ccc00401401000c80048488c00800c8488c00400c80048c8c8c8cccd5cd19b8735573aa0049000128011280224c26eb4d5d09aab9e50011375400426a0049309308928020891001091091198008020018900089000900088910919800801801089000889191800800911980198010010008888919a8011091980091a80191180100191a80191180080180089191918008009119801980100100091091a9802091a98020019a801800800991919191919991119911919991119191919191991191919191919191991191919911919191999911119911919191919191919191919191919191919191919191919191919191919191919191919191919191919190009111a98020011111111111919299a982a9998138291a980e280111111111110038048a99a982a999a8098291a980e280111111111110020040a99a982a999a980809000a80a9a980e280111111111110010030a99a982a999a98080900082a1a980e2801111111111100180209919191919299a982d180099aa980e8900099aa9814090008139a9810a80391111111110049a80f89119801240046600490020008991919299a982ea99a982e9800a804899191919191800a8071a80090008918009aa83711299a9a83480088321109a9aa82f00111299a98339981b801280408348980300189a8311980080a28339a80090008918009aa835911299a9a83380108009109980280099a835001001882f0991919299a9830180099aa9811890009a9813a80691111111110031a81289119801240040022a66a6a0ae01c426603c0026a604e0304400226a0d29308309a80090008918009aa83611299a9a83380088311109a9aa82e00111299a983299830001280408338980300189a830006882f1a80090008918009aa83491299a9a832000882f9109a9aa82c80111299a983119819001280408320980300189a82e807882d9a80090008918009aa83311299a9a830800882e1109a9aa82b00111299a982f99981882e001280408308980300189a82d1980099aa981289000812006a82f9a80090008918009aa831911299a9a82f80108009109980280099a831001001882b082b082b082b099aa980b890009a980da80091111111110051a80c891198012400466004900200089a980c8051100110009a80090008918009aa829110911299a9a8280010a99a9a8280008826110826910a99a9a8290018826910a99a9827198038020010999a9804890008038018008827911999a9808801129999a98090011099821001000908241082410824129999a98090011082410998230010009082410824129999a98090011082410824109982180100090824129999a9809001108241082410824109981d00100089111a9a806801111a9a808801111a9a808802911a9a80a8011119192999a9a80d00410a999a9a80d80290a99a9828998078010008a8018829082888288a999a9a80d002108288a80088280a999a9a80d0021082888280a8008a99a98270030a99a98270010a80088278a99a982700108278a80089a9a80b003911a9a80c002912999a9a80e00210a999a9a80e80190a99a982999808801000899809002801882a082988298a999a9a80e0011082989980800180088290a999a9a80e00110829882909980800180091299a982180108008a99a982180088220822899aa80101f80091199ab9a3375e0040020860842244446a6aa076004446a6aa07a00644a66a608c6601000800426600e006002208e6a00240022460026aa094442244a66a6a08e0042a092442a66a6a0920062a09644266a09866aa07e00800466aa6010240020060022466a002a086a0884002400224002240022400224002400246a60520024440046a00240022460026aa07e442244a66a6a0780022a07c44266a07e600800466aa600c24002008002446a604c004446a605000644a66a606c6605200800426600e006002206e44a66a6062660466a604c0044440066a604c0024440062a66a606266600605c6a604c0044440046a604c00244400426a604c004444a66a6a056002426a605400a444a66a6a05e002426607000a002207226a6052008444a66a6a05c002420722072206420644446660084666a6aa02e00246600a90000009119803001000919802800a400000400244464666aa601c240026a038a03446a6aa05600244666aa602224002a00846a6aa05c0024460140020026600a00600426a036a0324466aa60122400246a6aa0500024466aa056004666a6aa02c002466aa601a2400246a6aa0580024466aa05e0046aa03a00200244666aaa010064004002466aa601a2400246a6aa0580024466aa05e0046aa036002002666aaa00605a004002222444666aa600824002a06a66aa60122400246a6aa0500024466aa0560046aa032002666aa600824002446a6aa05200444a66a6064666aa601e240026a014a02646a6aa058002446601400400a00c2006266a072008006a06c00266aa60122400246a6aa05000244646466aa05a008600200c6a00240022460026aa07e44a66a6a07400226aa0340084426a6aa05e00444a66a60706601a004012266aa03e0100022600c0060046a00240022460026aa06e4422444a66a6a06a00220044426600a004666aa600e2400200a0080022466a02c44666a00a0060040026a004002246a6a01600244002246a6a014002440046a00240022460026aa064442244a66a6a05e0022a06244266a064600800466aa600c240020080026a00240022460026aa060442246444a66a6a05e00226a01000844266a00a6008004666aa60102400200c00800226a00c002246a6a01c00244002246a6a01a00244004266a00600204044a66a60400042044200224424660020060042400222424446006008224424446600400a00822424446002008224002266a01000203244a66a6030004200220322466a00644666a00e0060040026a008002244246600200600424002246a6a00600244002246a6a00400244004244246600200600424002446a600c004446a6010006446466a604200a466a60440084a66a602e666ae68cdc780100080c80c0a801880c100c119a9811002100c1299a980b999ab9a3371e0040020320302a00620302a66a6a01600642a66a6a0180044266024004002202c2a66a6a0160024202c202c44a66a601e666ae68cdc79a9803801110011a9803800910010088080999ab9a3370e6a600e004440026a600e0024400202202020204002400240022400240022244246600200600422400244a6666666a602200442a6666666a6024004426600a0040024420164201420122012442016442016442a6666666a602600642016442a66a60166600e0080042660140060022018420162014201444201844201842a6666666a602400442014442016426600a004002201220124420164420162a6666666a60220024201244201442012201220104420144420142a6666666a6022002420124420144201220102012442014442014442a6666666a6026006420164420184201620142014442a66a6016666ae68cdc78020010068060998050018008806110806110a9999999a9809801908059108061080588050805110806110a99a9805999ab9a3371e00800401a01826601000600220184466a6022004466a602400446600c00400244401644466a60280084016444a66a6018666ae68cdc38030018070068a99a9806199ab9a3370e00a00401c01a266012008002201a201a44666ae68cdc38010008038031119a9808001119a98088011198028010009003919a9808801100391980280100091199ab9a3371e00400200a008244004244002400224a66a6a00800226a00e6a600466ae71241025062000034988840084800480044488008488488cc00401000c48004498800480048004448c8c00400488cc00cc008008005"
}
Loading

0 comments on commit 3cb78c7

Please sign in to comment.