-
Notifications
You must be signed in to change notification settings - Fork 214
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
21 changed files
with
174 additions
and
31 deletions.
There are no files selected for viewing
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"int":42} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"constructor":0,"fields":[{"int":42}]} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
�y�*� |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"constructor":0,"fields":[{"int":42}]} |
137 changes: 137 additions & 0 deletions
137
plutus-example/plutus/example-txin-locking-plutus-script.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
5
plutus-example/plutus/scripts/always-succeeds-spending.plutus
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{ | ||
"type": "PlutusScriptV1", | ||
"description": "", | ||
"cborHex": "4e4d01000033222220051200120011" | ||
} |
File renamed without changes.
5 changes: 5 additions & 0 deletions
5
plutus-example/plutus/scripts/context-equivalance-test.plutus
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{ | ||
"type": "PlutusScriptV1", | ||
"description": "", | ||
"cborHex": "5914d65914d3010000332323233223322333222323232333222333222333333332222222233223333322222333322223332223322332233223332223322332233223322323232323232323232323232323232323232323232323322332232323232335500104c500911222222300733300430060033005002300800125335302f001105213504c3530513357389201025064000524988c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266012a002a0042600c6ae8540084c068d5d09aba25001135573ca00226ea80084d412d262323232323232323232323232323232323232323232323333573466e1cd55cea80aa40004a0044a02e930999999999980d2800a8012801a8022802a8032803a8042804a805099a81400d9aba15012133502701b35742a0202666aa044eb94084d5d0a8070999aa810bae502035742a018266a04804e6ae8540284cd408ccd5408809dd69aba15008133501875a6ae8540184cd4085d71aba150041335020335501f75c03c6ae8540084c098d5d09aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea80084d4129262212330010030022001222222222212333333333300100b00a00900800700600500400300220011232323232323232323232323232323232323232323333573466e1cd55cea809a40004a0044a02a930999999999815a800a8012801a8022802a8032803a8042804899a81080a9aba15010133502001335742a01c2666aa036eb94068d5d0a806099a80a3ad35742a0142666aa032eb94060d5d0a804099a80e280c9aba15006133501b01e35742a008266a034eb8d5d0a801099a80d00d9aba135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea80084d41152623232323232323333573466e1cd55cea802a40004a0044a00e9309980f2800a8010980c1aba1500213005357426ae8940044d55cf280089baa0021350444988c8c8c8c8c8c8c8c8cccd5cd19b8735573aa00e90001280112804a4c2666042a002a004a006260106ae8540104ccd54039d728069aba15002133501275c6ae84d5d1280089aba25001135573ca00226ea80084d410d2623232323232323333573466e1cd55cea802a40004a0044a00e930998102800a8010980a9aba150021335010013357426ae8940044d55cf280089baa002135042498488c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266a04aa002a004266a00e00c6ae8540084cd401c014d5d09aba25001135573ca00226ea80084d4109261223232323232323333573466e1cd55cea802a40004a0044a00e93099a8142800a801099a8040031aba1500213008357426ae8940044d55cf280089baa002135041498488c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266a04aa002a004266a00e00c6ae8540084c01cd5d09aba25001135573ca00226ea80084d410126122323232323232323333573466e1d401520042502e250024984cccd5cd19b8750044800894008940112613502d500113006357426aae79400c4cccd5cd19b87500148000940ac9401126135573aa00226ea80084d40fd2623232323333573466e1d400920022026250024984cccd5cd19b8750014800080909400d26135573a6ea80084d40f5261335500175ceb444888c8c8c004dd58019a80090008918009aa82391191919191919191999aab9f008550482530021200104d350022200135001220023555504e12223300321300a357440124266a096a00aa600624002266aa096a002a004260106aae7540084c018d55cf280089aba10011335500275c0024002224446464646464646666ae68cdc39aab9d500548000940089401d2613355047500150021300735742a0042600a6ae84d5d1280089aab9e50011375400426a07493091191918009bac0033500120011230013550422233335573e0024a080466a07e600c6ae84008c00cd5d10010208911919191919191999ab9a3370ea0089000128011280224c26a030a0022600c6ae84d55cf280189999ab9a3370ea00290011280b1280224c26aae7540044dd500109a81ba4c464646464646464646464646464646666ae68cdc3a8052400c4a0044a00893098182800898071aba135573ca01626666ae68cdc3a803a40084a0044a0089309815a800898061aba135573ca01026666ae68cdc3a802240044a0044a0089309813a800898059aba135573ca00a26666ae68cdc3a800a40004a0064a00c9309aab9d50031302550011375c6ae84d55cf280089baa0021350354988c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8cccd5cd19b875015480308108940092613333573466e1d4051200a2042250024984cccd5cd19b8750134802094008940192613303c500150021375c6ae8540084dd69aba135744a00226aae7940484cccd5cd19b87500e48018940089401926133038500150021375c6ae8540084dd71aba135744a00226aae7940344cccd5cd19b87500948010940089401926133037500150021300d35742a00426eb8d5d09aba25001135573ca01026666ae68cdc3a802240044a0044a0089309819a800898041aba135573ca00a26666ae68cdc3a800a40004a0064a00c9309aab9d50031302d500113004357426aae7940044dd500109a81a24c46464646464646464646464646666ae68cdc3a804240044a0044a01093099981c2800a801280189bad35742a00826eb4d5d0a80109bad357426ae8940044d5d1280089aab9e500513333573466e1d4005200025003250064984d55cea80189818a800898021aba135573ca00226ea80084d40cd26232323232323232323333573466e1d4011200225002250044984c0d940044dd71aba135573ca00a26666ae68cdc3a800a40004a0064a00c9309aab9d50031303350011375c6ae84d55cf280089baa0021350324988c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c26604ca002a0042600c6ae8540084dd69aba135744a00226aae7940044dd500109a818a4c46464646666ae68cdc39aab9d5002480009400894011261375c6ae84d55cf280089baa00213503049888888888848ccccccccc00402802402001c01801401000c00880048848cc00400c008800488848ccc00401000c00880048848cc00400c008800448488c00800c44880044800448848cc00400c0084800448848cc00400c0084800448848cc00400c008480044880084880048004484888c00c010448880084488800448004848888c010014848888c00c014848888c008014848888c00401480048848cc00400c0088004848888888c01c0208848888888cc018024020848888888c014020488888880104888888800c8848888888cc0080240208848888888cc00402402080048488c00800c888488ccc00401401000c80048488c00800c8488c00400c80048c8c8c8cccd5cd19b8735573aa0049000128011280224c26eb4d5d09aab9e50011375400426a0049309308928020891001091091198008020018900089000900088910919800801801089000889191800800911980198010010008888919a8011091980091a80191180100191a80191180080180089191918008009119801980100100091091a9802091a98020019a801800800991919191919991119911919991119191919191991191919191919191991191919911919191999911119911919191919191919191919191919191919191919191919191919191919191919191919191919191919190009111a98020011111111111919299a982a9998138291a980e280111111111110038048a99a982a999a8098291a980e280111111111110020040a99a982a999a980809000a80a9a980e280111111111110010030a99a982a999a98080900082a1a980e2801111111111100180209919191919299a982d180099aa980e8900099aa9814090008139a9810a80391111111110049a80f89119801240046600490020008991919299a982ea99a982e9800a804899191919191800a8071a80090008918009aa83711299a9a83480088321109a9aa82f00111299a98339981b801280408348980300189a8311980080a28339a80090008918009aa835911299a9a83380108009109980280099a835001001882f0991919299a9830180099aa9811890009a9813a80691111111110031a81289119801240040022a66a6a0ae01c426603c0026a604e0304400226a0d29308309a80090008918009aa83611299a9a83380088311109a9aa82e00111299a983299830001280408338980300189a830006882f1a80090008918009aa83491299a9a832000882f9109a9aa82c80111299a983119819001280408320980300189a82e807882d9a80090008918009aa83311299a9a830800882e1109a9aa82b00111299a982f99981882e001280408308980300189a82d1980099aa981289000812006a82f9a80090008918009aa831911299a9a82f80108009109980280099a831001001882b082b082b082b099aa980b890009a980da80091111111110051a80c891198012400466004900200089a980c8051100110009a80090008918009aa829110911299a9a8280010a99a9a8280008826110826910a99a9a8290018826910a99a9827198038020010999a9804890008038018008827911999a9808801129999a98090011099821001000908241082410824129999a98090011082410998230010009082410824129999a98090011082410824109982180100090824129999a9809001108241082410824109981d00100089111a9a806801111a9a808801111a9a808802911a9a80a8011119192999a9a80d00410a999a9a80d80290a99a9828998078010008a8018829082888288a999a9a80d002108288a80088280a999a9a80d0021082888280a8008a99a98270030a99a98270010a80088278a99a982700108278a80089a9a80b003911a9a80c002912999a9a80e00210a999a9a80e80190a99a982999808801000899809002801882a082988298a999a9a80e0011082989980800180088290a999a9a80e00110829882909980800180091299a982180108008a99a982180088220822899aa80101f80091199ab9a3375e0040020860842244446a6aa076004446a6aa07a00644a66a608c6601000800426600e006002208e6a00240022460026aa094442244a66a6a08e0042a092442a66a6a0920062a09644266a09866aa07e00800466aa6010240020060022466a002a086a0884002400224002240022400224002400246a60520024440046a00240022460026aa07e442244a66a6a0780022a07c44266a07e600800466aa600c24002008002446a604c004446a605000644a66a606c6605200800426600e006002206e44a66a6062660466a604c0044440066a604c0024440062a66a606266600605c6a604c0044440046a604c00244400426a604c004444a66a6a056002426a605400a444a66a6a05e002426607000a002207226a6052008444a66a6a05c002420722072206420644446660084666a6aa02e00246600a90000009119803001000919802800a400000400244464666aa601c240026a038a03446a6aa05600244666aa602224002a00846a6aa05c0024460140020026600a00600426a036a0324466aa60122400246a6aa0500024466aa056004666a6aa02c002466aa601a2400246a6aa0580024466aa05e0046aa03a00200244666aaa010064004002466aa601a2400246a6aa0580024466aa05e0046aa036002002666aaa00605a004002222444666aa600824002a06a66aa60122400246a6aa0500024466aa0560046aa032002666aa600824002446a6aa05200444a66a6064666aa601e240026a014a02646a6aa058002446601400400a00c2006266a072008006a06c00266aa60122400246a6aa05000244646466aa05a008600200c6a00240022460026aa07e44a66a6a07400226aa0340084426a6aa05e00444a66a60706601a004012266aa03e0100022600c0060046a00240022460026aa06e4422444a66a6a06a00220044426600a004666aa600e2400200a0080022466a02c44666a00a0060040026a004002246a6a01600244002246a6a014002440046a00240022460026aa064442244a66a6a05e0022a06244266a064600800466aa600c240020080026a00240022460026aa060442246444a66a6a05e00226a01000844266a00a6008004666aa60102400200c00800226a00c002246a6a01c00244002246a6a01a00244004266a00600204044a66a60400042044200224424660020060042400222424446006008224424446600400a00822424446002008224002266a01000203244a66a6030004200220322466a00644666a00e0060040026a008002244246600200600424002246a6a00600244002246a6a00400244004244246600200600424002446a600c004446a6010006446466a604200a466a60440084a66a602e666ae68cdc780100080c80c0a801880c100c119a9811002100c1299a980b999ab9a3371e0040020320302a00620302a66a6a01600642a66a6a0180044266024004002202c2a66a6a0160024202c202c44a66a601e666ae68cdc79a9803801110011a9803800910010088080999ab9a3370e6a600e004440026a600e0024400202202020204002400240022400240022244246600200600422400244a6666666a602200442a6666666a6024004426600a0040024420164201420122012442016442016442a6666666a602600642016442a66a60166600e0080042660140060022018420162014201444201844201842a6666666a602400442014442016426600a004002201220124420164420162a6666666a60220024201244201442012201220104420144420142a6666666a6022002420124420144201220102012442014442014442a6666666a6026006420164420184201620142014442a66a6016666ae68cdc78020010068060998050018008806110806110a9999999a9809801908059108061080588050805110806110a99a9805999ab9a3371e00800401a01826601000600220184466a6022004466a602400446600c00400244401644466a60280084016444a66a6018666ae68cdc38030018070068a99a9806199ab9a3370e00a00401c01a266012008002201a201a44666ae68cdc38010008038031119a9808001119a98088011198028010009003919a9808801100391980280100091199ab9a3371e00400200a008244004244002400224a66a6a00800226a00e6a600466ae71241025062000034988840084800480044488008488488cc00401000c48004498800480048004448c8c00400488cc00cc008008005" | ||
} |
File renamed without changes.
File renamed without changes.
Oops, something went wrong.