-
Notifications
You must be signed in to change notification settings - Fork 211
/
Plutus.hs
437 lines (397 loc) · 84.1 KB
/
Plutus.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE NumericUnderscores #-}
{-# LANGUAGE OverloadedLabels #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
module Test.Integration.Plutus
( mkSignerPolicy
, alwaysTrueValidator
, pingPong_1
, pingPong_2
, game_1
, game_2
, game_3
, mintBurn_1
, mintBurn_2
, withdrawScript_1
, currencyTx
-- utils
, toHex
) where
{- HLINT ignore "Avoid restricted qualification" -}
import Prelude hiding
( id )
import Cardano.Wallet.Api.Types
( ApiT (..), ApiWalletInput (..), EncodeAddress (..) )
import Cardano.Wallet.Primitive.Types.Hash
( Hash (..) )
import Cardano.Wallet.Unsafe
( unsafeFromHex, unsafeRight )
import Codec.Binary.Bech32.TH
( humanReadablePart )
import Codec.Serialise
( serialise )
import Control.Arrow
( left )
import Control.Monad.IO.Unlift
( MonadUnliftIO (..) )
import Crypto.Hash.Utils
( blake2b224 )
import Data.Aeson
( (.=) )
import Data.Aeson.QQ
( aesonQQ )
import Data.Generics.Internal.VL.Lens
( view )
import Data.String.Interpolate
( i )
import Data.Text
( Text )
import Text.Microstache
( compileMustacheText, renderMustache )
import qualified Codec.Binary.Bech32 as Bech32
import qualified Codec.CBOR.Term as CBOR
import qualified Data.Aeson as Aeson
import qualified Data.ByteString as BS
import qualified Data.ByteString.Base16 as Base16
import qualified Data.ByteString.Lazy as BSL
import qualified Data.Text.Encoding as T
import qualified Data.Text.Lazy as TL
import qualified Data.Text.Lazy.Encoding as TL
import qualified Flat.Bits as Bits
import qualified Text.Microstache as Mustache
--
-- Utility contracts
--
-- | Create a policy for which the only validation condition is that the
-- transaction is signed by some key.
--
-- This template has one parameter:
--
-- - vkHash: flat-encoded blake2b-224 hash of some verification key, in base16.
--
mkSignerPolicy :: Aeson.Value -> (Text, ApiT (Hash "TokenPolicy"))
mkSignerPolicy args =
let policy = TL.toStrict (renderMustache template args)
in (policy, hashScript policy)
where
template = unsafeRight $ left show $ compileMustacheText "mkSignerPolicy"
[i|59160e0100003323332223232323233223232323332223332223332223233332222323322323333222232332232332232333222323322323322323233223232323333222232323232323322332233333333333332222222222222323233333333222222223322332233223322323322332233223233223232323232323232323232323233333222223322332223003300200122232325335308601330053333573466e1cd55ce9baa0044800080708d4074d4c06ccd5ce2481035054310001c499263333573466e1cd55cea8012400046601064646464646464646464646666ae68cdc39aab9d500a480008cccccccccc0c8cd40688c8c8cccd5cd19b8735573aa004900011981c18119aba15002301f357426ae8940088d40b4d4c0accd5ce249035054310002c49926135573ca00226ea8004d5d0a80519a80d00d9aba150093335501d75ca0386ae854020ccd54075d7280e1aba1500733501a02335742a00c66a03466aa04c048eb4d5d0a8029919191999ab9a3370e6aae754009200023350553232323333573466e1cd55cea80124000466a0b666a052eb4d5d0a80118151aba135744a00446a0626a605e66ae712401035054310003049926135573ca00226ea8004d5d0a8011919191999ab9a3370e6aae7540092000233507a33502975a6ae854008c0a8d5d09aba2500223503135302f3357389201035054310003049926135573ca00226ea8004d5d09aba2500223502d35302b3357389201035054310002c49926135573ca00226ea8004d5d0a80219a80d3ae35742a00666a03466aa04ceb88004d5d0a80118101aba135744a00446a0526a604e66ae71241035054310002849926135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea8004d5d0a8011919191999ab9a3370ea002900311808980d9aba135573ca00646666ae68cdc3a8012400846020603a6ae84d55cf280211999ab9a3370ea006900111808180c9aba135573ca00a46666ae68cdc3a80224000460266eb8d5d09aab9e50062350243530223357389201035054310002349926499264984d55cea80089baa001357426ae8940088d4074d4c06ccd5ce249035054310001c49926101b13501c35301a3357389201035054350001b4984d55cf280089baa00122235301800233223535501d002222533530890133355305f12001350595058235300a00522330290020030031533530890133355305f12001350595058235300a0052235302a0022222222222353503100d22533530980133355306e12001350625064235303900122330940100200400c109a0113357389201024c3000099010021533530890133355305f12001350595058235300a0052235302a0022222222222353502f00d22533530980133355306e12001350625064235303b00122253353508a01001215335309d0133305f09501003006153353508b01330703530310073374a90001bb149802484cc254040040084278044278044274054cd4d4218054cccd4c06803485422004854220048542200484ccd54c1bc4800541cc8d4c0e8004894cd4c27004cc254040080104d42300400c5422c0403484d4c0e400488d4c0f4004888ccd54c18c4800488d4c108008888d4c11c02088d4c124014894cd4c29c04cccc2500401000c0080044cd41fc024020402141dc0444d40b8d4c0b0cd5ce249024c660002d4984268044cd5ce2481024c310009901001108b011508801150880115088013335501c3322330023042005001505c505d505d505d0012212330010030022001212222300400521222230030052122223002005212222300100520011232230023758002640026aa0fa446666aae7c004941588cd4154c010d5d080118019aba200201123232323333573466e1cd55cea801a400046660406464646666ae68cdc39aab9d5002480008cc098c04cd5d0a80119a8060091aba135744a00446a02e6a602a66ae712401035054310001649926135573ca00226ea8004d5d0a801999aa803bae500635742a00466a010eb8d5d09aba25002235013353011335738921035054310001249926135744a00226aae7940044dd5000899aa800bae75a224464460046eac004c8004d541ec88c8cccd55cf8011282a919a82a19aa82898031aab9d5002300535573ca00460086ae8800c0404d5d080089119191999ab9a3370ea002900011a83518029aba135573ca00646666ae68cdc3a801240044a0d446a0226a601e66ae7124010350543100010499264984d55cea80089baa001232323333573466e1cd55cea801240004660e6600a6ae854008dd69aba135744a00446a01c6a601866ae71241035054310000d49926135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088d4030d4c028cd5ce249035054310000b499261375400224464646666ae68cdc3a800a40084a0b246666ae68cdc3a8012400446a0b8600c6ae84d55cf280211999ab9a3370ea00690001282e11a8079a980699ab9c4901035054310000e4992649926135573aa00226ea80048c8cccd5cd19b8750014800881d88cccd5cd19b8750024800081d88d402cd4c024cd5ce249035054310000a499264984d55ce9baa001232323232323333573466e1d4005200c202023333573466e1d4009200a202223333573466e1d400d2008233020375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4660446eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc09cc030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c0a4c034d5d09aab9e500b23333573466e1d401d200023028300e357426aae7940308d404cd4c044cd5ce2481035054310001249926499264992649926135573aa00826aae79400c4d55cf280109aab9e5001137540024646464646666ae68cdc3a800a400446660ce6eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d40092000230693008357426aae7940188d4030d4c028cd5ce2481035054310000b499264984d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c19cdd71aba135573ca00646666ae68cdc3a80124000460d26eb8d5d09aab9e500423500935300733573892010350543100008499264984d55cea80089baa0011122232323333573466e1cd55cea80124000466aa090600c6ae854008c014d5d09aba25002235009353007335738921035054310000849926135573ca00226ea80044800480044984488848ccc00401000c00844800448848cc00400c0084800448848cc00400c00848004c8004d54198888cccccccccccd4c0580048d4c01400c88888888894cd4c1c54cd4d417cccd54c11c48005412c94cd4c1c8ccd5cd19b8f00c0010740731350620011506100321074107210731335738921024c340007222353006004222222222253353506053353506033355304812001504c2353550470012253353075333573466e3c00803c1dc1d84d419400c5419000884d418cd4d5411c0048800454184854cd4c1ccccd5cd19baf00100c07507410751506f1506e2353005003222222222253353071333553047120013503b503d2333573466ebc0300041d01cccd54c0f0480048d4d541180048800400841cc4cd5ce249024c3200072222323225335306c333573466e1cd4c0280208888888888c03001c0041b81b441b84cd5ce2481024c390006d3200135506d22335350430014800088d4d54108008894cd4c1c0ccd5cd19b8f00200a07207113007001130060033200135506c22335350420014800088d4d54104008894cd4c1bcccd5cd19b8f002007071070100113006003222353007005222222222253353073333553049120013503d503f2353016001222533535065001215335307833303a070003010153353506635301601422222222223305501b0022153353079333573466e3c0040081ec1e84d4c07401488cccc1a0008004c1c005541a841e841e441e441e002441d44cd5ce249024c6200074225335306833302a02900133355302d12001501750413530060042222222222333553037120012235301600222235301b00322335306d00225335307a333573466e3c0500041f01ec4cd414801401c401c801d412c02441a84cd5ce2481024c6100069253353067333029028001353005003222222222233355304712001501f235301400122200200910691335738921024c360006825335306733355303d1200135031503323300500400100110691335738921024c6400068253353067333029028001353005003222222222233355304712001501f23530120012235301600122200200a106913357389201024c35000682353005003222222222253353505f33355304712001504b235301200122533530743306d00200e1350640031506300a213530120012235301600122253353506500121507510791506e22353006004222222222253353506033355304812001504c235301300122533530753306e00200f1350650031506400a2107513357389201024c380007323530050032222222222353502e00b223535032002223535032008223535036002225335307933333332222222533353069333506000700600315335308001002153353080010051333505d0070010041081011333505d0070010041081011333505d007001004333333335060071225335307b333573466e1c0080041f41f0419c54cd4c1ecccd5cd19b8900200107d07c1065106622333573466e200080041f41f00e888ccd5cd19b8900200107c07d22333573466e200080041f01f4894cd4c1ecccd5cd19b8900200107d07c10011002225335307b333573466e240080041f41f04008400401801401c00800400c41ec4cd5ce249024c330007a222222222212333333333300100b00a0090080070060050040030022001221233001003002200122212333001004003002200122123300100300220012122222223007008221222222233006009008212222222300500812222222004122222220032212222222330020090082212222222330010090082001133502e5001502b1223355301e1200123535502800122335502b002335530211200123535502b00122335502e002333535501f0012330584800000488cc1640080048cc16000520000013301600200121222222222222300c00d2212222222222223300b00e00d21222222222222300a00d22221222222222222333300901000f00e00d222122222222222233300800f00e00d2212222222222223300700e00d21222222222222300600d21222222222222300500d21222222222222300400d21222222222222300300d2212222222222223300200e00d21222222222222300100d200112212330010030021200112212330010030021200122333573466e2400800410c108888ccd54c05c48004d404540408d4d5405800488ccd54c06848004d4051404c8d4d5406400488ccd4d540340048cc0292000001223300b00200123300a00148000004cc01000800488cd54c028480048d4d5405000488cd5405c008ccd4d540200048cd54c038480048d4d5406000488cd5406c008d5403c00400488ccd5540200ec0080048cd54c038480048d4d5406000488cd5406c008d54034004004ccd55400c0d8008004444888ccd54c01048005405ccd54c028480048d4d5405000488cd5405c008d5402c004ccd54c0104800488d4d54054008894cd4c10cccd54c06448004d4035403c8d4d5406000488cc028008014018400c4cd406c01000d4060004cd54c028480048d4d5405000488c8cd5406000cc004014c8004d54114894cd4d406c0044d5402c00c884d4d54068008894cd4c120cc0300080204cd5404001c0044c01800c008c8004d540f888448894cd4d405c0044008884cc014008ccd54c01c480040140100044484888c00c01044884888cc0080140104484888c00401044800448cd404c88ccd4d401800c88008008004d4d401000488004c8004d540e08844894cd4d404000454048884cd404cc010008cd54c018480040100044cd4008894cd4c0d800840e040040d448848cc00400c008480044cd400c894cd4c0cc008400440d00cc48cd403488ccd4d401000c88008008004d4d40080048800448848cc00400c00848004894cd4d4074ccd54c0144800540248d4d54010004894cd4c0c8ccd5cd19baf00100503403313502200315021001213502035355004001220021501e112212330010030021120013200135502d22112225335350060011353500a0032200122133353500c005220023004002333553007120010050040011122002122122330010040031200113350022253353501600221003100150151221233001003002120011222353500400222353500600322533353013333500a00700400215335302a0031001102c102b102c122123300100300212001122232323232533353500800621533353500900621533353500a0082130041613003161533353500a0072130041613003161015101315333535009007213004161300316153335350090062130041613003161014153335350080052101210131011153335350080052153335350090072130051613004161533353500900621300516130041610141012153335350080062130051613004161533353500800521300516130041610132533353500800521533353500900721533353500a00721333500f00a00200113011161301116130101610131533353500800621533353500900621333500e009002001130101613010161300f16101210112533353500700421533353500800621533353500900621333500e009002001130101613010161300f1610121533353500700521533353500800521333500d0080020011300f161300f161300e16101110102533353500600321533353500700521533353500800521333500d0080020011300f161300f161300e1610111533353500600421533353500700421333500c0070020011300e161300e161300d161010100f2533353500500221533353500600421533353500700421333500c0070020011300e161300e161300d1610101533353500500321533353500600321333500b0060020011300d161300d161300c16100f100e121222300300411222002112220011200112353500200122222222007122222222123333333300100900800700600500400300212001261222003122200212220012001222232335300c0052335300d00425335301a333573466e3c00800407006c5400c406c806c8cd4c034010806c94cd4c068ccd5cd19b8f00200101c01b15003101b15335350050032153353500600221335300a0022335300b0022335300f00223353010002233014002001201e23353010002201e23301400200122201e222335300d004201e2225335301f333573466e1c01800c08408054cd4c07cccd5cd19b8700500202102013301700400110201020101915335350050012101910191212230020031122001120012122300200322212233300100500400320012122300200321223001003200122333573466e3c00800403403088ccd5cd19b8700200100c00b2253353009333573466e3cd4c00c00888008d4c00c0048800802c0284ccd5cd19b87353003002220013530030012200100b00a100a221233001003002200113357389201024c630000513357389201024c37000042233700004002266ae71241024c640000212200212200120011123230010012233003300200200148811c{{vkHash}}0001|]
alwaysTrueValidator :: (Text, ApiT (Hash "TokenPolicy"))
alwaysTrueValidator =
let validator = "5908500100003233223322323233322232333222323333333322222222323332223233332222323233223233322232333222323233223322323233333222223322332233223322332233222232325335302f33223530470020333333573466e1cd55ce9baa00448000811c8d4114d4c118cd5ce2490350543100047499263333573466e1cd55cea8012400046600e64646464646464646464646666ae68cdc39aab9d500a480008cccccccccc054cd408c8c8c8cccd5cd19b8735573aa004900011980d981b1aba150023028357426ae8940088d4154d4c158cd5ce249035054310005749926135573ca00226ea8004d5d0a80519a8118121aba150093335502a75ca0526ae854020ccd540a9d728149aba1500733502303f35742a00c66a04666aa0a0090eb4d5d0a8029919191999ab9a3370e6aae7540092000233501d3232323333573466e1cd55cea80124000466a04a66a07ceb4d5d0a80118219aba135744a00446a0b26a60b466ae712401035054310005b49926135573ca00226ea8004d5d0a8011919191999ab9a3370e6aae7540092000233502333503e75a6ae854008c10cd5d09aba2500223505935305a3357389201035054310005b49926135573ca00226ea8004d5d09aba250022350553530563357389201035054310005749926135573ca00226ea8004d5d0a80219a811bae35742a00666a04666aa0a0eb88004d5d0a801181a9aba135744a00446a0a26a60a466ae71241035054310005349926135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea8004d5d0a8011919191999ab9a3370ea00290031180d181b9aba135573ca00646666ae68cdc3a801240084603260826ae84d55cf280211999ab9a3370ea00690011180c98161aba135573ca00a46666ae68cdc3a80224000460386eb8d5d09aab9e500623504c35304d3357389201035054310004e49926499264984d55cea80089baa001357426ae8940088d4114d4c118cd5ce2490350543100047499261046135044353045335738920103505435000464984d55cf280089baa0012212330010030022001222222222212333333333300100b00a00900800700600500400300220012212330010030022001122123300100300212001122123300100300212001122123300100300212001212222300400521222230030052122223002005212222300100520011232230023758002640026aa068446666aae7c004940388cd4034c010d5d080118019aba200203323232323333573466e1cd55cea801a4000466600e6464646666ae68cdc39aab9d5002480008cc034c0c4d5d0a80119a8098169aba135744a00446a06c6a606e66ae712401035054310003849926135573ca00226ea8004d5d0a801999aa805bae500a35742a00466a01eeb8d5d09aba25002235032353033335738921035054310003449926135744a00226aae7940044dd50009110919980080200180110009109198008018011000899aa800bae75a224464460046eac004c8004d540b888c8cccd55cf80112804919a80419aa81898031aab9d5002300535573ca00460086ae8800c0b84d5d08008891001091091198008020018900089119191999ab9a3370ea002900011a80418029aba135573ca00646666ae68cdc3a801240044a01046a0526a605466ae712401035054310002b499264984d55cea80089baa001121223002003112200112001232323333573466e1cd55cea8012400046600c600e6ae854008dd69aba135744a00446a0466a604866ae71241035054310002549926135573ca00226ea80048848cc00400c00880048c8cccd5cd19b8735573aa002900011bae357426aae7940088d407cd4c080cd5ce24810350543100021499261375400224464646666ae68cdc3a800a40084a00e46666ae68cdc3a8012400446a014600c6ae84d55cf280211999ab9a3370ea00690001280511a8111a981199ab9c490103505431000244992649926135573aa00226ea8004484888c00c0104488800844888004480048c8cccd5cd19b8750014800880188cccd5cd19b8750024800080188d4068d4c06ccd5ce249035054310001c499264984d55ce9baa0011220021220012001232323232323333573466e1d4005200c200b23333573466e1d4009200a200d23333573466e1d400d200823300b375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c46601a6eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc048c050d5d0a8049bae357426ae8940248cccd5cd19b875006480088c050c054d5d09aab9e500b23333573466e1d401d2000230133016357426aae7940308d407cd4c080cd5ce2481035054310002149926499264992649926135573aa00826aae79400c4d55cf280109aab9e500113754002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024646464646666ae68cdc3a800a400446660106eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d400920002300a300b357426aae7940188d4040d4c044cd5ce2490350543100012499264984d55cea80189aba25001135573ca00226ea80048488c00800c888488ccc00401401000c80048c8c8cccd5cd19b875001480088c018dd71aba135573ca00646666ae68cdc3a80124000460106eb8d5d09aab9e500423500a35300b3357389201035054310000c499264984d55cea80089baa001212230020032122300100320011122232323333573466e1cd55cea80124000466aa016600c6ae854008c014d5d09aba25002235007353008335738921035054310000949926135573ca00226ea8004498480048004448848cc00400c008448004448c8c00400488cc00cc0080080041"
in (validator, hashScript validator)
hashScript :: Text -> ApiT (Hash "TokenPolicy")
hashScript =
ApiT . Hash . blake2b224 . unsafeFromHex . ("01" <>) . T.encodeUtf8
--
-- Ping Pong
--
pingPong_1 :: Aeson.Value
pingPong_1 = [aesonQQ|{
"transaction": "84a500800d80018183581d714d72cf569a339a18a7d9302313983f56e0d96cd45bdcb1d6512dca6a1a001e84805820923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec02000e80a10481d87980f5f6",
"redeemers": [],
"inputs": []
}|]
pingPong_2 :: (MonadUnliftIO m, MonadFail m) => Aeson.Value -> m Aeson.Value
pingPong_2 =
renderMustacheThrow template
where
template = unsafeRight $ left show $ compileMustacheText "pingPong_2" [i|{
"transaction": "84a50081825820{{transactionId}}000d80018183581d714d72cf569a339a18a7d9302313983f56e0d96cd45bdcb1d6512dca6a1a001e848058208392f0c940435c06888f9bdb8c74a95dc69f156367d6a089cf008ae05caae01e02000e80a20381591b72591b6f01000033233332222333322223322332232323332223233322232333333332222222232333222323333222232323322323332223233322232323322332232323333322222332233223322332233223322223223223232533530333330083333573466e1d40192004204f23333573466e1d401d2002205123333573466e1d40212000205323504b35304c3357389201035054310004d49926499263333573466e1d40112004205323333573466e1d40152002205523333573466e1d40192000205723504b35304c3357389201035054310004d49926499263333573466e1cd55cea8012400046601664646464646464646464646666ae68cdc39aab9d500a480008cccccccccc064cd409c8c8c8cccd5cd19b8735573aa004900011980f981d1aba15002302c357426ae8940088d4164d4c168cd5ce2481035054310005b49926135573ca00226ea8004d5d0a80519a8138141aba150093335502e75ca05a6ae854020ccd540b9d728169aba1500733502704335742a00c66a04e66aa0a8098eb4d5d0a8029919191999ab9a3370e6aae754009200023350213232323333573466e1cd55cea80124000466a05266a084eb4d5d0a80118239aba135744a00446a0ba6a60bc66ae712401035054310005f49926135573ca00226ea8004d5d0a8011919191999ab9a3370e6aae7540092000233502733504275a6ae854008c11cd5d09aba2500223505d35305e3357389201035054310005f49926135573ca00226ea8004d5d09aba2500223505935305a3357389201035054310005b49926135573ca00226ea8004d5d0a80219a813bae35742a00666a04e66aa0a8eb88004d5d0a801181c9aba135744a00446a0aa6a60ac66ae71241035054310005749926135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea8004d5d0a8011919191999ab9a3370ea00290031180f181d9aba135573ca00646666ae68cdc3a801240084603a608a6ae84d55cf280211999ab9a3370ea00690011180e98181aba135573ca00a46666ae68cdc3a80224000460406eb8d5d09aab9e50062350503530513357389201035054310005249926499264984d55cea80089baa001357426ae8940088d4124d4c128cd5ce249035054310004b49926104a1350483530493357389201035054350004a4984d55cf280089baa001135573a6ea80044d55ce9baa0012212330010030022001222222222212333333333300100b00a00900800700600500400300220012212330010030022001122123300100300212001122123300100300212001122123300100300212001212222300400521222230030052122223002005212222300100520011232230023758002640026aa078446666aae7c004940388cd4034c010d5d080118019aba200203323232323333573466e1cd55cea801a4000466600e6464646666ae68cdc39aab9d5002480008cc034c0c4d5d0a80119a8098169aba135744a00446a06c6a606e66ae71241035054310003849926135573ca00226ea8004d5d0a801999aa805bae500a35742a00466a01eeb8d5d09aba25002235032353033335738921035054310003449926135744a00226aae7940044dd50009110919980080200180110009109198008018011000899aa800bae75a224464460046eac004c8004d540d888c8cccd55cf80112804919a80419aa81898031aab9d5002300535573ca00460086ae8800c0b84d5d08008891001091091198008020018900089119191999ab9a3370ea002900011a80418029aba135573ca00646666ae68cdc3a801240044a01046a0526a605466ae712401035054310002b499264984d55cea80089baa001121223002003112200112001232323333573466e1cd55cea8012400046600c600e6ae854008dd69aba135744a00446a0466a604866ae71241035054310002549926135573ca00226ea80048848cc00400c00880048c8cccd5cd19b8735573aa002900011bae357426aae7940088d407cd4c080cd5ce24810350543100021499261375400224464646666ae68cdc3a800a40084a00e46666ae68cdc3a8012400446a014600c6ae84d55cf280211999ab9a3370ea00690001280511a8111a981199ab9c490103505431000244992649926135573aa00226ea8004484888c00c0104488800844888004480048c8cccd5cd19b8750014800880188cccd5cd19b8750024800080188d4068d4c06ccd5ce249035054310001c499264984d55ce9baa0011220021220012001232323232323333573466e1d4005200c200b23333573466e1d4009200a200d23333573466e1d400d200823300b375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c46601a6eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc048c050d5d0a8049bae357426ae8940248cccd5cd19b875006480088c050c054d5d09aab9e500b23333573466e1d401d2000230133016357426aae7940308d407cd4c080cd5ce2481035054310002149926499264992649926135573aa00826aae79400c4d55cf280109aab9e500113754002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024646464646666ae68cdc3a800a400446660106eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d400920002300a300b357426aae7940188d4040d4c044cd5ce2490350543100012499264984d55cea80189aba25001135573ca00226ea80048488c00800c888488ccc00401401000c80048c8c8cccd5cd19b875001480088c018dd71aba135573ca00646666ae68cdc3a80124000460106eb8d5d09aab9e500423500a35300b3357389201035054310000c499264984d55cea80089baa001212230020032122300100320011122232323333573466e1cd55cea80124000466aa016600c6ae854008c014d5d09aba25002235007353008335738921035054310000949926135573ca00226ea8004498480048004448848cc00400c008448004488800c488800848880048004488800c488800848880048004448c8c00400488cc00cc008008004c8c8cc88cc88c8ccc888c8c8c8c8c8ccc888ccc888ccc888c8cccc8888c8cc88c8cccc8888c8cc88c8cc88c8ccc888c8c8cc88c8c8cc88c8c8c8cccc8888c8c8c8c8c8cc88c8cc88cc88ccccccccccccc8888888888888c8c8c8c8c8cccccccc88888888cc88cc88cc88cc88c8ccccc88888c8cc88cc88cc88c8cc88cc88cc88c8cc88c8c8c8cccc8888cccc8888c8888d4d540400108888c8c8c94cd4c24004ccc0140280240205400454cd4c24004cd5ce249025331000910115001109101153353508101003215335309001333573466e1cccc109400cd4c07800488004c0580212002092010910115002153353090013357389201025332000910115002109101150011533535080013300533501b00833303e03f5001323355306012001235355096010012233550990100233553063120012353550990100122335509c0100233704900080080080099a809801180a003003909a9aa84a8080091911a9a80f00091299a984a0098050010a99a984a00999aa9837090009a835283491a9aa84d8080091199aa9838890009a836a83611a9aa84f0080091199ab9a3370e900000084e0084d808008008a8020a99a984a0099ab9c49102533300095011500410950113535501e00522253353097013333355027253335301400113374a90001bb14984cdd2a40046ec52613374a90021bb149800c008c8cd400541d141d4488cc008cd40ac01cccc124128018cd4078034c07c04400403c4264044cd5ce249025335000980113535501a0012225335309301333335502325301d00100300200100b109501133573892010253340009401133573892010253360008f0113530220052235302d002222222222253353508b013303000a00b2135303a0012235303e0012220021350a10135309d0133573892010253300009e01498cccd5403488d4d404c008894ccd4c02400c54ccd4c01400854ccd4c02400c541f04d41f4cd542400554034cd405801c004541f054ccd4c02400c4d41f4cd542400554034cd4058020004541f0541f0541f054ccd4c01400854ccd4c02400c541f04d41f4cd542400554034cd405801c004541f054ccd4c02400c4d41f4cd542400554034cd4058020004541f0541f0541f04d41f4cd542400554034cd4058019419894ccd4c008004421c04421c044220048882280541e0488800c488800848880048004488800c48880084888004800444ccd5401d416541654164494cd4d41b8004848cd4168cd5421404d4c03000888004cd4168cd54214040052002505b505b12505a235355081013530100012235301b00222222222225335350793301e00a00b213530280012235302c00122235303100322335308701002230930116253353508201004213355098010020011309301161308a01162200211222212333300100500400300211200120011122212333001004003002112001122123300100300212001221233001003002200111222225335307533355304f120013504b504a235300b002223301500200300415335307533355304f120013504b504a235300b002223530160022222222222353501500d22533530840133355305e120013505450562353025001223304b00200400c10860113357389201024c30000850100315335307533355304f120013504b504a235300b002223530160022222222222353501300d22533530840133355305e12001350545056235302700122253353507a00121533530890133305108501003006153353507b330623019007009213308501001002108a01108a011089015335350763301b00c00d2135302500122353029001222333553055120012235302e00222235303300822353035005225335309301333308401004003002001133506f0090081008506701113508c01353088013357389201024c6600089014984218044cd5ce2481024c3100085010021077150741507415074122123300100300212001122123300100300212001221233001003002200122533335300300121505f21505f21505f2133355304612001504a235300d001225335306f3303300200413506300315062003212222300400521222230030052122223002005212222300100520013200135506c22233333333333353019001235300500322222222225335307153353506333355304b12001504f253353072333573466e3c0300041d01cc4d41980045419400c841d041c841cc4cd5ce249024c340007222353006004222222222253353506453353506433355304c1200150502353550790012253353075333573466e3c00803c1dc1d84d41a400c541a000884d419cd4d541e40048800454194854cd4c1ccccd5cd19baf00100c0750741075150701506f235300500322222222225335307133355304b120013504150432333573466ebc0300041d01cccd54c108480048d4d541e00048800400841cc4cd5ce249024c320007222225335306a333573466e1cd4c0200188888888888ccc09801c0380300041b01ac41b04cd5ce2481024c390006b22235300700522222222225335307333355304d1200135043504523530160012225335350690012153353078333040074003010153353506a35301601422222222223305b01b0022153353079333573466e3c0040081ec1e84d4c07401488cccc1b0008004c1d005541b841e841e441e441e002441d44cd5ce249024c6200074225335306833303002f0013335530331200150175045353006004222222222233355303d120012235301600222235301b00322335307100225335307a333573466e3c0500041f01ec4cd415801401c401c801d413c02441a84cd5ce2481024c610006925335306733302f02e001353005003222222222233355304b12001501f235301400122200200910691335738921024c36000682533530673335530411200135037503923300500400100110691335738921024c640006825335306733302f02e001353005003222222222233355304b12001501f23530120012235301600122200200a106913357389201024c35000682353005003222222222253353506333355304b12001504f235301200122533530743303800200e1350680031506700a213530120012235301600122253353506900121507610791506f22353006004222222222253353506433355304c120015050235301300122533530753303900200f1350690031506800a2107513357389201024c380007323530050032222222222353503100b22353503500222353503500822353503900222533530793333333222222253335306d33350640070060031533530800100215335308001005133350610070010041081011333506100700100410810113335061007001004333333335064075225335307b333573466e1c0080041f41f041ac54cd4c1ecccd5cd19b8900200107d07c1069106a22333573466e200080041f41f010088ccd5cd19b8900200107c07d22333573466e200080041f01f4894cd4c1ecccd5cd19b8900200107d07c10011002225335307b333573466e240080041f41f04008400401801401c00800400c41ec4cd5ce249024c330007a222222222212333333333300100b00a009008007006005004003002200122123300100300220012221233300100400300220012212330010030022001212222222300700822122222223300600900821222222230050081222222200412222222003221222222233002009008221222222233001009008200113350325001502f13001002222335530241200123535505a00122335505d002335530271200123535505d001223355060002333535502500123300a4800000488cc02c0080048cc02800520000013301c00200122337000040024446464600200a640026aa0b64466a6a05e0029000111a9aa82e00111299a982c199ab9a3371e0040120b40b22600e0022600c006640026aa0b44466a6a05c0029000111a9aa82d80111299a982b999ab9a3371e00400e0b20b020022600c00642444444444444601801a4424444444444446601601c01a42444444444444601401a44442444444444444666601202001e01c01a444244444444444466601001e01c01a4424444444444446600e01c01a42444444444444600c01a42444444444444600a01a42444444444444600801a42444444444444600601a4424444444444446600401c01a42444444444444600201a400224424660020060042400224424660020060042400244a66a607c666ae68cdc79a9801801110011a98018009100102001f8999ab9a3370e6a6006004440026a60060024400208007e207e442466002006004400244666ae68cdc480100081e81e111199aa980a890009a808a80811a9aa82100091199aa980c090009a80a280991a9aa82280091199a9aa8068009198052400000244660160040024660140029000000998020010009119aa98050900091a9aa8200009119aa821801199a9aa804000919aa98070900091a9aa8220009119aa8238011aa80780080091199aaa80401c801000919aa98070900091a9aa8220009119aa8238011aa806800800999aaa80181a001000888911199aa980209000a80a99aa98050900091a9aa8200009119aa8218011aa805800999aa980209000911a9aa82080111299a981e999aa980b890009a806a80791a9aa82200091198050010028030801899a80c802001a80b00099aa98050900091a9aa820000911919aa8220019800802990009aa82291299a9a80c80089aa8058019109a9aa82300111299a982119806001004099aa80800380089803001801190009aa81f1108911299a9a80a800880111099802801199aa980389000802802000889091118018020891091119801002802089091118008020890008919a80891199a9a803001910010010009a9a80200091000990009aa81c110891299a9a8070008a80811099a808980200119aa980309000802000899a80111299a981800108190800817891091980080180109000899a80191299a9816801080088170168919a80591199a9a802001910010010009a9a8010009100089109198008018010900091299a9a80d999aa980189000a80391a9aa81800091299a9816199ab9a3375e00200a05c05a26a0400062a03e002426a03c6a6aa060002440042a038640026aa05e4422444a66a6a00c00226a6a01400644002442666a6a01800a440046008004666aa600e2400200a00800222440042442446600200800624002266a00444a66a6a02c004420062002a02a24424660020060042400224446a6a008004446a6a00c00644a666a6026666a01400e0080042a66a604c00620022050204e2050244246600200600424002244464646464a666a6a01000c42a666a6a01200c42a666a6a0140104260082c260062c2a666a6a01400e4260082c260062c202a20262a666a6a01200e4260082c260062c2a666a6a01200c4260082c260062c20282a666a6a01000a42024202620222a666a6a01000a42a666a6a01200e42600a2c260082c2a666a6a01200c42600a2c260082c202820242a666a6a01000c42600a2c260082c2a666a6a01000a42600a2c260082c20264a666a6a01000a42a666a6a01200e42a666a6a01400e42666a01e014004002260222c260222c260202c20262a666a6a01000c42a666a6a01200c42666a01c012004002260202c260202c2601e2c202420224a666a6a00e00842a666a6a01000c42a666a6a01200c42666a01c012004002260202c260202c2601e2c20242a666a6a00e00a42a666a6a01000a42666a01a0100040022601e2c2601e2c2601c2c202220204a666a6a00c00642a666a6a00e00a42a666a6a01000a42666a01a0100040022601e2c2601e2c2601c2c20222a666a6a00c00842a666a6a00e00842666a01800e0040022601c2c2601c2c2601a2c2020201e4a666a6a00a00442a666a6a00c00842a666a6a00e00842666a01800e0040022601c2c2601c2c2601a2c20202a666a6a00a00642a666a6a00c00642666a01600c0040022601a2c2601a2c260182c201e201c2424446006008224440042244400224002246a6a0040024444444400e244444444246666666600201201000e00c00a008006004240024c244400624440042444002400244446466a601800a466a601a0084a66a602c666ae68cdc780100080c00b8a801880b900b919a9806802100b9299a980b199ab9a3371e00400203002e2a006202e2a66a6a00a00642a66a6a00c0044266a6014004466a6016004466a601e004466a60200044660280040024034466a6020004403446602800400244403444466a601a0084034444a66a6036666ae68cdc380300180e80e0a99a980d999ab9a3370e00a00403a03826602e00800220382038202a2a66a6a00a0024202a202a2424460040062244002240024244600400644424466600200a00800640024244600400642446002006400244666ae68cdc780100080480411199ab9a3370e00400201000e266ae712401024c630000413357389201024c370000313357389201024c64000021220021220012001235006353002335738921024c6700003498480048004448848cc00400c008448004498448c8c00400488cc00cc0080080050482d87a80d87980f5f6",
"inputs": [
{
"id": "{{transactionId}}",
"index": 0,
"address": "addr1w9xh9n6kngee5x98myczxyuc8atwpktv63daevwk2yku56sce02jy",
"datum": "923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec",
"amount": {
"quantity": 2000000,
"unit": "lovelace"
},
"assets": []
}
],
"redeemers": [
{
"purpose": "spending",
"input": {
"id": "{{transactionId}}",
"index": 0
},
"data": "D87A80"
}
]
}|]
--
-- Game
--
game_1 :: Aeson.Value
game_1 = [aesonQQ|{
"transaction": "84a500800d80018183581d71ca80730a8bb1eb9ed5c5c9deb55a3ee495f96fc3cee0646b76e1e7c31a00989680582014845e067bf83c19a97207c8a2057d9499624783f1fce1ef5abf600392240ad002000e80a10481d8799f581ca1c0a4e322cb639198421ec70e4d9d2c3586df70103a63c35494f51745677565737358202cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824fff5f6",
"inputs": [],
"redeemers": []
}|]
game_2 :: (MonadUnliftIO m, MonadFail m) => Aeson.Value -> m Aeson.Value
game_2 =
renderMustacheThrow template
where
template = unsafeRight $ left show $ compileMustacheText "game_2" [i|{
"transaction": "84a60081825820{{transactionId}}000d80018183581d71ca80730a8bb1eb9ed5c5c9deb55a3ee495f96fc3cee0646b76e1e7c31a0098968058204401f9f4de01abb2164d77909afb1249f2c519331aa034bbfc5248e50b08db8602000e8009a1581ca1c0a4e322cb639198421ec70e4d9d2c3586df70103a63c35494f517a145677565737301a2038259092a5909270100003323322333222323322323322323332223233322232333333332222222232333222323333222232323322323332223232323322332232323333322222332233223322332233223322332222232325335302f332235300a0012235300e0022222222222533335302200b2103f21333553058120013233505e223335350180032200200200135350160012200133501622533530400021042100103f235302b35301c0012200122235303000322335305500220462333573466e3c00406c11c11802c840fc840fccccd5cd19b8735573a6ea80112000204623504735304533573892010350543100046499263333573466e1cd55cea8012400046601464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc060cd40988c8c8cccd5cd19b8735573aa004900011980f181b1aba15002302b357426ae8940088d415cd4c154cd5ce249035054310005649926135573ca00226ea8004d5d0a80519a8130139aba150093335502d75ca0586ae854020ccd540b5d728161aba1500733502603f35742a00c66a04c66aa0a0090eb4d5d0a8029919191999ab9a3370e6aae754009200023350203232323333573466e1cd55cea80124000466a05066a07ceb4d5d0a80118219aba135744a00446a0b66a60b266ae712401035054310005a49926135573ca00226ea8004d5d0a8011919191999ab9a3370e6aae7540092000233502633503e75a6ae854008c10cd5d09aba2500223505b3530593357389201035054310005a49926135573ca00226ea8004d5d09aba250022350573530553357389201035054310005649926135573ca00226ea8004d5d0a80219a8133ae35742a00666a04c66aa0a0eb88004d5d0a801181a9aba135744a00446a0a66a60a266ae71241035054310005249926135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea8004d5d0a8011919191999ab9a3370ea00290031180e981b9aba135573ca00646666ae68cdc3a801240084603860826ae84d55cf280211999ab9a3370ea00690011180e18161aba135573ca00a46666ae68cdc3a802240004603e6eb8d5d09aab9e500623504e35304c3357389201035054310004d49926499264984d55cea80089baa001357426ae8940088d411cd4c114cd5ce2490350543100046499261045135046353044335738920103505435000454984d55cf280089baa0011221233001003002120012212330010030022001222222222212333333333300100b00a00900800700600500400300220012212330010030022001122123300100300212001122123300100300212001122123300100300212001212222300400521222230030052122223002005212222300100520011232230023758002640026aa06e446666aae7c004940dc8cd40d8c010d5d080118019aba200202f23232323333573466e1cd55cea801a4000466600e6464646666ae68cdc39aab9d5002480008cc034c0b8d5d0a80119a8080151aba135744a00446a06a6a606666ae71241035054310003449926135573ca00226ea8004d5d0a801999aa805bae500a35742a00466a018eb8d5d09aba2500223503135302f335738921035054310003049926135744a00226aae7940044dd50009110919980080200180110009109198008018011000899aa800bae75a224464460046eac004c8004d540c488c8cccd55cf80112819119a81899aa81718031aab9d5002300535573ca00460086ae8800c0a84d5d080089119191999ab9a3370ea002900011a80418029aba135573ca00646666ae68cdc3a801240044a01046a0566a605266ae71241035054310002a499264984d55cea80089baa001121223002003112200112001232323333573466e1cd55cea8012400046600c600e6ae854008dd69aba135744a00446a04a6a604666ae71241035054310002449926135573ca00226ea80048848cc00400c00880048c8cccd5cd19b8735573aa002900011bae357426aae7940088d4084d4c07ccd5ce24810350543100020499261375400224464646666ae68cdc3a800a40084a00e46666ae68cdc3a8012400446a014600c6ae84d55cf280211999ab9a3370ea00690001280511a8121a981119ab9c490103505431000234992649926135573aa00226ea8004484888c00c0104488800844888004480048c8cccd5cd19b8750014800880188cccd5cd19b8750024800080188d4070d4c068cd5ce249035054310001b499264984d55ce9baa0011220021220012001232323232323333573466e1d4005200c200b23333573466e1d4009200a200d23333573466e1d400d200823300b375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c46601a6eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc048c050d5d0a8049bae357426ae8940248cccd5cd19b875006480088c050c054d5d09aab9e500b23333573466e1d401d2000230133016357426aae7940308d4084d4c07ccd5ce2481035054310002049926499264992649926135573aa00826aae79400c4d55cf280109aab9e500113754002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024646464646666ae68cdc3a800a400446660106eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d400920002300a300b357426aae7940188d4048d4c040cd5ce2490350543100011499264984d55cea80189aba25001135573ca00226ea80048488c00800c888488ccc00401401000c80048c8c8cccd5cd19b875001480088c018dd71aba135573ca00646666ae68cdc3a80124000460106eb8d5d09aab9e500423500c35300a3357389201035054310000b499264984d55cea80089baa001212230020032122300100320011122232323333573466e1cd55cea80124000466aa016600c6ae854008c014d5d09aba25002235009353007335738921035054310000849926135573ca00226ea8004480048004498448848cc00400c008448004c8004d5401888448894cd4d40180044d4d402400c88004884ccd4d402c01488008c010008ccd54c01c480040140100044488008488488cc00401000c4800448848cc00400c00848004448c8c00400488cc00cc0080080052211cca80730a8bb1eb9ed5c5c9deb55a3ee495f96fc3cee0646b76e1e7c30001591ca6591ca3010000332323233223332223332223332223322323233322232333222323333333322222222323332223233332222323233223233322232323233223322323233333222223322332233223322332233222232323232323223232323223232533530383330103333573466e1d402520022333052375c6ae854030dd71aba1500b3505c357426ae89402c8cccd5cd19b87500a480008ccc150dd71aba1500f375c6ae854038d4174d5d09aba2500e23504f353050335738921035054310005149926498cccd5cd19b875004480088ccc158cd4175d71aba150073505c35742a00c666aa054eb940a4d5d09aba2500623333573466e1d40152000205623504f3530503357389201035054310005149926498cccd5cd19b8735573aa004900011980999191919191919191919191999ab9a3370e6aae75402920002333333333302133502f232323333573466e1cd55cea8012400046604e607e6ae854008c0d0d5d09aba2500223505e35305f3357389201035054310006049926135573ca00226ea8004d5d0a80519a8178181aba150093335503675ca06a6ae854020ccd540d9d7281a9aba1500733502f04835742a00c66a05e66aa0b20a2eb4d5d0a8029919191999ab9a3370e6aae754009200023350293232323333573466e1cd55cea80124000466a06266a08eeb4d5d0a80118261aba135744a00446a0c46a60c666ae712401035054310006449926135573ca00226ea8004d5d0a8011919191999ab9a3370e6aae7540092000233502f33504775a6ae854008c130d5d09aba250022350623530633357389201035054310006449926135573ca00226ea8004d5d09aba2500223505e35305f3357389201035054310006049926135573ca00226ea8004d5d0a80219a817bae35742a00666a05e66aa0b2eb88004d5d0a801181f1aba135744a00446a0b46a60b666ae71241035054310005c49926135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea8004d5d0a8011919191999ab9a3370ea00290031181318201aba135573ca00646666ae68cdc3a801240084604a60946ae84d55cf280211999ab9a3370ea006900111812981a9aba135573ca00a46666ae68cdc3a80224000460506eb8d5d09aab9e50062350553530563357389201035054310005749926499264984d55cea80089baa001357426ae8940088d4138d4c13ccd5ce249035054310005049926104f13504d35304e3357389201035054350004f4984d55cf280089baa001135573aa00626ae8940044d55cf280089baa001135573aa00a26ae8940044d55cf280189aba25001135573ca00226ea80048848cc00400c0088004888888888848cccccccccc00402c02802402001c01801401000c00880048848cc00400c008800448848cc00400c0084800448848cc00400c0084800448848cc00400c00848004848888c010014848888c00c014848888c008014848888c004014800448c88c008dd6000990009aa81e111999aab9f0012503a233503930043574200460066ae880080c08c8c8c8cccd5cd19b8735573aa006900011998039919191999ab9a3370e6aae754009200023300d302e35742a00466a0200546ae84d5d1280111a8199a981a19ab9c4901035054310003549926135573ca00226ea8004d5d0a801999aa805bae500a35742a00466a018eb8d5d09aba2500223502f353030335738921035054310003149926135744a00226aae7940044dd50009110919980080200180110009109198008018011000899aa800bae75a224464460046eac004c8004d540d888c8cccd55cf8011281a919a81a19aa81b98031aab9d5002300535573ca00460086ae8800c0ac4d5d080089119191999ab9a3370ea002900011a80418029aba135573ca00646666ae68cdc3a801240044a01046a0526a605466ae71241035054310002b499264984d55cea80089baa001121223002003112200112001232323333573466e1cd55cea8012400046600c600e6ae854008dd69aba135744a00446a0466a604866ae71241035054310002549926135573ca00226ea80048848cc00400c00880048c8cccd5cd19b8735573aa002900011bae357426aae7940088d407cd4c080cd5ce24810350543100021499261375400224464646666ae68cdc3a800a40084a00e46666ae68cdc3a8012400446a014600c6ae84d55cf280211999ab9a3370ea00690001280511a8111a981199ab9c490103505431000244992649926135573aa00226ea8004484888c00c0104488800844888004480048c8cccd5cd19b8750014800880188cccd5cd19b8750024800080188d4068d4c06ccd5ce249035054310001c499264984d55ce9baa0011220021220012001232323232323333573466e1d4005200c200b23333573466e1d4009200a200d23333573466e1d400d200823300b375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c46601a6eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc048c050d5d0a8049bae357426ae8940248cccd5cd19b875006480088c050c054d5d09aab9e500b23333573466e1d401d2000230133016357426aae7940308d407cd4c080cd5ce2481035054310002149926499264992649926135573aa00826aae79400c4d55cf280109aab9e500113754002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024646464646666ae68cdc3a800a400446660106eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d400920002300a300b357426aae7940188d4040d4c044cd5ce2490350543100012499264984d55cea80189aba25001135573ca00226ea80048488c00800c888488ccc00401401000c80048c8c8cccd5cd19b875001480088c018dd71aba135573ca00646666ae68cdc3a80124000460106eb8d5d09aab9e500423500a35300b3357389201035054310000c499264984d55cea80089baa001212230020032122300100320011122232323333573466e1cd55cea80124000466aa028600c6ae854008c014d5d09aba25002235007353008335738921035054310000949926135573ca00226ea8004498480048004888488ccc00801401000c888488ccc00401401000c8004888488ccc00801401000c48800480044488008488488cc00401000c48004448848cc00400c0084480044d4005d70900088919180080091198019801001000991919911991191999111919191919199911199911199911191999911119199119199991111919911919911919991119191991191919911919191999911119191919191991191991199119999999999999111111111111191919191919999999911111111991199119911991191999991111191991199119911919911991199119199119191919911999111999111919191111a9aa8090021111191919299a9849009998028050048040a8008a99a98490099ab9c491025331000930115001109301153353508301003215335309201333573466e1cccc111400cd4c08000488004c0600212002094010930115002153353092013357389201025332000930115002109301150011533535082013300533501d00833304004150013301448004cd4054008c05801801c84d4d5425c040048c88d4d4080004894cd4c25804c02800854cd4c25804ccd54c1c048004d41b141ac8d4d542740400488ccd54c1cc48004d41bd41b88d4d542800400488ccd5cd19b874800000427804274040040045401054cd4c25804cd5ce248102533300097011500410970113535502000522253353099013333355029233530160012223374a900019aba0375200666ae80dd480119aba037520026ec5262223374a900119aba0375200666ae80dd480119aba037520026ec526003002350141223300233502d00733304b04c00633502000d302101100100f109b0113357389210253350009a0113535501c0012225335309501333335502525301f00100300200100b10970113357389201025334000960113357389201025336000910113530240052235302f002222222222253353508d013303200a00b2135303c001223530400012220021350a30135309f013357389201025330000a001498cccd5403c88d4d405400888cd4c01c0088894cd4c03401888854210044d420804cd5425404ccd54064d4024488cc008cccc13001540280112002001506b506b33501b33300b0030020010042225335300d006222153353091013308c01004372400626a10a0266aa1300266446a6aaa02a666aaa02c6a6aa03a004444666aa60c224002a0e46a6aa0400084440060066a6aa03a004444666aa60c224002a0e46a6aa0400084440040046a6aa03a004444666aa60c224002a0e46a6aa040008444002002444666aa042006004002666aa0386a01824466004609466a0de66aa1340201066a0de66aa1340200e900128382838000a8372837199aa80e1a8060911980119998278042806803a4000002a0dca0dc66a03c66601c00c00a00466608208400e6602a90008008a842008a8408090448091104600a83d099ba548000dd8a4c2466a002a0c4a0c644424466600400a00800644424466600200a008006400244424466600400a00800624400240022224442466600200800600422240024466aa609e2400246a6aa10a020024466aa1100200466aa60a42400246a6aa110020024466aa1160200466e08020004004004494cd4d41b8004848cd4168cd5421404d4c03000888004cd4168cd54214040052002505b505b12505a235355081013530100012235301b00222222222225335350793301e00a00b213530280012235302c00122235303100322335308701002230930116253353508201004213355098010020011309301161308a01162200211222212333300100500400300211200120011122212333001004003002112001122123300100300212001221233001003002200111222225335307533355304f120013504b504a235300b002223301500200300415335307533355304f120013504b504a235300b002223530160022222222222353501500d22533530840133355305e120013505450562353025001223304b00200400c10860113357389201024c30000850100315335307533355304f120013504b504a235300b002223530160022222222222353501300d22533530840133355305e12001350545056235302700122253353507a00121533530890133305108501003006153353507b330623019007009213308501001002108a01108a011089015335350763301b00c00d2135302500122353029001222333553055120012235302e00222235303300822353035005225335309301333308401004003002001133506f0090081008506701113508c01353088013357389201024c6600089014984218044cd5ce2481024c3100085010021077150741507415074122123300100300212001122123300100300212001221233001003002200122533335300300121505f21505f21505f2133355304612001504a235300d001225335306f3303300200413506300315062003212222300400521222230030052122223002005212222300100520013200135506c22233333333333353019001235300500322222222225335307153353506333355304b12001504f253353072333573466e3c0300041d01cc4d41980045419400c841d041c841cc4cd5ce249024c340007222353006004222222222253353506453353506433355304c1200150502353550790012253353075333573466e3c00803c1dc1d84d41a400c541a000884d419cd4d541e40048800454194854cd4c1ccccd5cd19baf00100c0750741075150701506f235300500322222222225335307133355304b120013504150432333573466ebc0300041d01cccd54c108480048d4d541e00048800400841cc4cd5ce249024c320007222225335306a333573466e1cd4c0200188888888888ccc09801c0380300041b01ac41b04cd5ce2481024c390006b22235300700522222222225335307333355304d1200135043504523530160012225335350690012153353078333040074003010153353506a35301601422222222223305b01b0022153353079333573466e3c0040081ec1e84d4c07401488cccc1b0008004c1d005541b841e841e441e441e002441d44cd5ce249024c6200074225335306833303002f0013335530331200150175045353006004222222222233355303d120012235301600222235301b00322335307100225335307a333573466e3c0500041f01ec4cd415801401c401c801d413c02441a84cd5ce2481024c610006925335306733302f02e001353005003222222222233355304b12001501f235301400122200200910691335738921024c36000682533530673335530411200135037503923300500400100110691335738921024c640006825335306733302f02e001353005003222222222233355304b12001501f23530120012235301600122200200a106913357389201024c35000682353005003222222222253353506333355304b12001504f235301200122533530743303800200e1350680031506700a213530120012235301600122253353506900121507610791506f22353006004222222222253353506433355304c120015050235301300122533530753303900200f1350690031506800a2107513357389201024c380007323530050032222222222353503100b22353503500222353503500822353503900222533530793333333222222253335306d33350640070060031533530800100215335308001005133350610070010041081011333506100700100410810113335061007001004333333335064075225335307b333573466e1c0080041f41f041ac54cd4c1ecccd5cd19b8900200107d07c1069106a22333573466e200080041f41f010088ccd5cd19b8900200107c07d22333573466e200080041f01f4894cd4c1ecccd5cd19b8900200107d07c10011002225335307b333573466e240080041f41f04008400401801401c00800400c41ec4cd5ce249024c330007a222222222212333333333300100b00a009008007006005004003002200122123300100300220012221233300100400300220012212330010030022001212222222300700822122222223300600900821222222230050081222222200412222222003221222222233002009008221222222233001009008200113350325001502f13001002222335530241200123535505a00122335505d002335530271200123535505d001223355060002333535502500123300a4800000488cc02c0080048cc02800520000013301c00200122337000040024446464600200a640026aa0b64466a6a05e0029000111a9aa82e00111299a982c199ab9a3371e0040120b40b22600e0022600c006640026aa0b44466a6a05c0029000111a9aa82d80111299a982b999ab9a3371e00400e0b20b020022600c00642444444444444601801a4424444444444446601601c01a42444444444444601401a44442444444444444666601202001e01c01a444244444444444466601001e01c01a4424444444444446600e01c01a42444444444444600c01a42444444444444600a01a42444444444444600801a42444444444444600601a4424444444444446600401c01a42444444444444600201a400224424660020060042400224424660020060042400244a66a607c666ae68cdc79a9801801110011a98018009100102001f8999ab9a3370e6a6006004440026a60060024400208007e207e442466002006004400244666ae68cdc480100081e81e111199aa980a890009a808a80811a9aa82100091199aa980c090009a80a280991a9aa82280091199a9aa8068009198052400000244660160040024660140029000000998020010009119aa98050900091a9aa8200009119aa821801199a9aa804000919aa98070900091a9aa8220009119aa8238011aa80780080091199aaa80401c801000919aa98070900091a9aa8220009119aa8238011aa806800800999aaa80181a001000888911199aa980209000a80a99aa98050900091a9aa8200009119aa8218011aa805800999aa980209000911a9aa82080111299a981e999aa980b890009a806a80791a9aa82200091198050010028030801899a80c802001a80b00099aa98050900091a9aa820000911919aa8220019800802990009aa82291299a9a80c80089aa8058019109a9aa82300111299a982119806001004099aa80800380089803001801190009aa81f1108911299a9a80a800880111099802801199aa980389000802802000889091118018020891091119801002802089091118008020890008919a80891199a9a803001910010010009a9a80200091000990009aa81c110891299a9a8070008a80811099a808980200119aa980309000802000899a80111299a981800108190800817891091980080180109000899a80191299a9816801080088170168919a80591199a9a802001910010010009a9a8010009100089109198008018010900091299a9a80d999aa980189000a80391a9aa81800091299a9816199ab9a3375e00200a05c05a26a0400062a03e002426a03c6a6aa060002440042a038640026aa05e4422444a66a6a00c00226a6a01400644002442666a6a01800a440046008004666aa600e2400200a00800222440042442446600200800624002266a00444a66a6a02c004420062002a02a24424660020060042400224446a6a008004446a6a00c00644a666a6026666a01400e0080042a66a604c00620022050204e2050244246600200600424002244464646464a666a6a01000c42a666a6a01200c42a666a6a0140104260082c260062c2a666a6a01400e4260082c260062c202a20262a666a6a01200e4260082c260062c2a666a6a01200c4260082c260062c20282a666a6a01000a42024202620222a666a6a01000a42a666a6a01200e42600a2c260082c2a666a6a01200c42600a2c260082c202820242a666a6a01000c42600a2c260082c2a666a6a01000a42600a2c260082c20264a666a6a01000a42a666a6a01200e42a666a6a01400e42666a01e014004002260222c260222c260202c20262a666a6a01000c42a666a6a01200c42666a01c012004002260202c260202c2601e2c202420224a666a6a00e00842a666a6a01000c42a666a6a01200c42666a01c012004002260202c260202c2601e2c20242a666a6a00e00a42a666a6a01000a42666a01a0100040022601e2c2601e2c2601c2c202220204a666a6a00c00642a666a6a00e00a42a666a6a01000a42666a01a0100040022601e2c2601e2c2601c2c20222a666a6a00c00842a666a6a00e00842666a01800e0040022601c2c2601c2c2601a2c2020201e4a666a6a00a00442a666a6a00c00842a666a6a00e00842666a01800e0040022601c2c2601c2c2601a2c20202a666a6a00a00642a666a6a00c00642666a01600c0040022601a2c2601a2c260182c201e201c2424446006008224440042244400224002246a6a0040024444444400e244444444246666666600201201000e00c00a008006004240024c244400624440042444002400244446466a601800a466a601a0084a66a602c666ae68cdc780100080c00b8a801880b900b919a9806802100b9299a980b199ab9a3371e00400203002e2a006202e2a66a6a00a00642a66a6a00c0044266a6014004466a6016004466a601e004466a60200044660280040024034466a6020004403446602800400244403444466a601a0084034444a66a6036666ae68cdc380300180e80e0a99a980d999ab9a3370e00a00403a03826602e00800220382038202a2a66a6a00a0024202a202a2424460040062244002240024244600400644424466600200a00800640024244600400642446002006400244666ae68cdc780100080480411199ab9a3370e00400201000e266ae712401024c630000413357389201024c370000313357389201024c64000021220021220012001235006353002335738921024c6700003498480048004448848cc00400c008448004498448c8c00400488cc00cc0080080050482d8799f581ca1c0a4e322cb639198421ec70e4d9d2c3586df70103a63c35494f51745677565737358202cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824ffd87a9f581ca1c0a4e322cb639198421ec70e4d9d2c3586df70103a63c35494f51745677565737358202cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824fff5f6",
"inputs": [
{
"id": "{{transactionId}}",
"index": 0,
"address": "addr1w89gquc23wc7h8k4chyaad268mjft7t0c08wqertwms70sc5pc6gt",
"datum": "14845e067bf83c19a97207c8a2057d9499624783f1fce1ef5abf600392240ad0",
"amount": {
"quantity": 10000000,
"unit": "lovelace"
},
"assets": []
}
],
"redeemers": [
{
"purpose": "spending",
"input": {
"id": "{{transactionId}}",
"index": 0
},
"data": "D87980"
},
{
"purpose": "minting",
"policy_id": "a1c0a4e322cb639198421ec70e4d9d2c3586df70103a63c35494f517",
"data": "D87980"
}
]
}|]
game_3 :: (MonadUnliftIO m, MonadFail m) => Aeson.Value -> m Aeson.Value
game_3 =
renderMustacheThrow template
where
template = unsafeRight $ left show $ compileMustacheText "game_3" [i|{
"transaction": "84A50081825820{{transactionId}}000D80018282581D61FABC30D46356151102CC57D427D338B8790B2244C1250159685400DD821A001E8480A1581CA1C0A4E322CB639198421EC70E4D9D2C3586DF70103A63C35494F517A14567756573730183581D71CA80730A8BB1EB9ED5C5C9DEB55A3EE495F96FC3CEE0646B76E1E7C31A007A1200582016AE33FF78BAC196BC387E612FD0BC45BD900ABD29A42DAA791A03FB7CDAE46302000E80A20381591CA6591CA3010000332323233223332223332223332223322323233322232333222323333333322222222323332223233332222323233223233322232323233223322323233333222223322332233223322332233222232323232323223232323223232533530383330103333573466E1D402520022333052375C6AE854030DD71ABA1500B3505C357426AE89402C8CCCD5CD19B87500A480008CCC150DD71ABA1500F375C6AE854038D4174D5D09ABA2500E23504F353050335738921035054310005149926498CCCD5CD19B875004480088CCC158CD4175D71ABA150073505C35742A00C666AA054EB940A4D5D09ABA2500623333573466E1D40152000205623504F3530503357389201035054310005149926498CCCD5CD19B8735573AA004900011980999191919191919191919191999AB9A3370E6AAE75402920002333333333302133502F232323333573466E1CD55CEA8012400046604E607E6AE854008C0D0D5D09ABA2500223505E35305F3357389201035054310006049926135573CA00226EA8004D5D0A80519A8178181ABA150093335503675CA06A6AE854020CCD540D9D7281A9ABA1500733502F04835742A00C66A05E66AA0B20A2EB4D5D0A8029919191999AB9A3370E6AAE754009200023350293232323333573466E1CD55CEA80124000466A06266A08EEB4D5D0A80118261ABA135744A00446A0C46A60C666AE712401035054310006449926135573CA00226EA8004D5D0A8011919191999AB9A3370E6AAE7540092000233502F33504775A6AE854008C130D5D09ABA250022350623530633357389201035054310006449926135573CA00226EA8004D5D09ABA2500223505E35305F3357389201035054310006049926135573CA00226EA8004D5D0A80219A817BAE35742A00666A05E66AA0B2EB88004D5D0A801181F1ABA135744A00446A0B46A60B666AE71241035054310005C49926135744A00226AE8940044D5D1280089ABA25001135744A00226AE8940044D5D1280089ABA25001135573CA00226EA8004D5D0A8011919191999AB9A3370EA00290031181318201ABA135573CA00646666AE68CDC3A801240084604A60946AE84D55CF280211999AB9A3370EA006900111812981A9ABA135573CA00A46666AE68CDC3A80224000460506EB8D5D09AAB9E50062350553530563357389201035054310005749926499264984D55CEA80089BAA001357426AE8940088D4138D4C13CCD5CE249035054310005049926104F13504D35304E3357389201035054350004F4984D55CF280089BAA001135573AA00626AE8940044D55CF280089BAA001135573AA00A26AE8940044D55CF280189ABA25001135573CA00226EA80048848CC00400C0088004888888888848CCCCCCCCCC00402C02802402001C01801401000C00880048848CC00400C008800448848CC00400C0084800448848CC00400C0084800448848CC00400C00848004848888C010014848888C00C014848888C008014848888C004014800448C88C008DD6000990009AA81E111999AAB9F0012503A233503930043574200460066AE880080C08C8C8C8CCCD5CD19B8735573AA006900011998039919191999AB9A3370E6AAE754009200023300D302E35742A00466A0200546AE84D5D1280111A8199A981A19AB9C4901035054310003549926135573CA00226EA8004D5D0A801999AA805BAE500A35742A00466A018EB8D5D09ABA2500223502F353030335738921035054310003149926135744A00226AAE7940044DD50009110919980080200180110009109198008018011000899AA800BAE75A224464460046EAC004C8004D540D888C8CCCD55CF8011281A919A81A19AA81B98031AAB9D5002300535573CA00460086AE8800C0AC4D5D080089119191999AB9A3370EA002900011A80418029ABA135573CA00646666AE68CDC3A801240044A01046A0526A605466AE71241035054310002B499264984D55CEA80089BAA001121223002003112200112001232323333573466E1CD55CEA8012400046600C600E6AE854008DD69ABA135744A00446A0466A604866AE71241035054310002549926135573CA00226EA80048848CC00400C00880048C8CCCD5CD19B8735573AA002900011BAE357426AAE7940088D407CD4C080CD5CE24810350543100021499261375400224464646666AE68CDC3A800A40084A00E46666AE68CDC3A8012400446A014600C6AE84D55CF280211999AB9A3370EA00690001280511A8111A981199AB9C490103505431000244992649926135573AA00226EA8004484888C00C0104488800844888004480048C8CCCD5CD19B8750014800880188CCCD5CD19B8750024800080188D4068D4C06CCD5CE249035054310001C499264984D55CE9BAA0011220021220012001232323232323333573466E1D4005200C200B23333573466E1D4009200A200D23333573466E1D400D200823300B375C6AE854014DD69ABA135744A00A46666AE68CDC3A8022400C46601A6EB8D5D0A8039BAE357426AE89401C8CCCD5CD19B875005480108CC048C050D5D0A8049BAE357426AE8940248CCCD5CD19B875006480088C050C054D5D09AAB9E500B23333573466E1D401D2000230133016357426AAE7940308D407CD4C080CD5CE2481035054310002149926499264992649926135573AA00826AAE79400C4D55CF280109AAB9E500113754002424444444600E01044244444446600C012010424444444600A010244444440082444444400644244444446600401201044244444446600201201040024646464646666AE68CDC3A800A400446660106EB4D5D0A8021BAD35742A0066EB4D5D09ABA2500323333573466E1D400920002300A300B357426AAE7940188D4040D4C044CD5CE2490350543100012499264984D55CEA80189ABA25001135573CA00226EA80048488C00800C888488CCC00401401000C80048C8C8CCCD5CD19B875001480088C018DD71ABA135573CA00646666AE68CDC3A80124000460106EB8D5D09AAB9E500423500A35300B3357389201035054310000C499264984D55CEA80089BAA001212230020032122300100320011122232323333573466E1CD55CEA80124000466AA028600C6AE854008C014D5D09ABA25002235007353008335738921035054310000949926135573CA00226EA8004498480048004888488CCC00801401000C888488CCC00401401000C8004888488CCC00801401000C48800480044488008488488CC00401000C48004448848CC00400C0084480044D4005D70900088919180080091198019801001000991919911991191999111919191919199911199911199911191999911119199119199991111919911919911919991119191991191919911919191999911119191919191991191991199119999999999999111111111111191919191919999999911111111991199119911991191999991111191991199119911919911991199119199119191919911999111999111919191111A9AA8090021111191919299A9849009998028050048040A8008A99A98490099AB9C491025331000930115001109301153353508301003215335309201333573466E1CCCC111400CD4C08000488004C0600212002094010930115002153353092013357389201025332000930115002109301150011533535082013300533501D00833304004150013301448004CD4054008C05801801C84D4D5425C040048C88D4D4080004894CD4C25804C02800854CD4C25804CCD54C1C048004D41B141AC8D4D542740400488CCD54C1CC48004D41BD41B88D4D542800400488CCD5CD19B874800000427804274040040045401054CD4C25804CD5CE248102533300097011500410970113535502000522253353099013333355029233530160012223374A900019ABA0375200666AE80DD480119ABA037520026EC5262223374A900119ABA0375200666AE80DD480119ABA037520026EC526003002350141223300233502D00733304B04C00633502000D302101100100F109B0113357389210253350009A0113535501C0012225335309501333335502525301F00100300200100B10970113357389201025334000960113357389201025336000910113530240052235302F002222222222253353508D013303200A00B2135303C001223530400012220021350A30135309F013357389201025330000A001498CCCD5403C88D4D405400888CD4C01C0088894CD4C03401888854210044D420804CD5425404CCD54064D4024488CC008CCCC13001540280112002001506B506B33501B33300B0030020010042225335300D006222153353091013308C01004372400626A10A0266AA1300266446A6AAA02A666AAA02C6A6AA03A004444666AA60C224002A0E46A6AA0400084440060066A6AA03A004444666AA60C224002A0E46A6AA0400084440040046A6AA03A004444666AA60C224002A0E46A6AA040008444002002444666AA042006004002666AA0386A01824466004609466A0DE66AA1340201066A0DE66AA1340200E900128382838000A8372837199AA80E1A8060911980119998278042806803A4000002A0DCA0DC66A03C66601C00C00A00466608208400E6602A90008008A842008A8408090448091104600A83D099BA548000DD8A4C2466A002A0C4A0C644424466600400A00800644424466600200A008006400244424466600400A00800624400240022224442466600200800600422240024466AA609E2400246A6AA10A020024466AA1100200466AA60A42400246A6AA110020024466AA1160200466E08020004004004494CD4D41B8004848CD4168CD5421404D4C03000888004CD4168CD54214040052002505B505B12505A235355081013530100012235301B00222222222225335350793301E00A00B213530280012235302C00122235303100322335308701002230930116253353508201004213355098010020011309301161308A01162200211222212333300100500400300211200120011122212333001004003002112001122123300100300212001221233001003002200111222225335307533355304F120013504B504A235300B002223301500200300415335307533355304F120013504B504A235300B002223530160022222222222353501500D22533530840133355305E120013505450562353025001223304B00200400C10860113357389201024C30000850100315335307533355304F120013504B504A235300B002223530160022222222222353501300D22533530840133355305E12001350545056235302700122253353507A00121533530890133305108501003006153353507B330623019007009213308501001002108A01108A011089015335350763301B00C00D2135302500122353029001222333553055120012235302E00222235303300822353035005225335309301333308401004003002001133506F0090081008506701113508C01353088013357389201024C6600089014984218044CD5CE2481024C3100085010021077150741507415074122123300100300212001122123300100300212001221233001003002200122533335300300121505F21505F21505F2133355304612001504A235300D001225335306F3303300200413506300315062003212222300400521222230030052122223002005212222300100520013200135506C22233333333333353019001235300500322222222225335307153353506333355304B12001504F253353072333573466E3C0300041D01CC4D41980045419400C841D041C841CC4CD5CE249024C340007222353006004222222222253353506453353506433355304C1200150502353550790012253353075333573466E3C00803C1DC1D84D41A400C541A000884D419CD4D541E40048800454194854CD4C1CCCCD5CD19BAF00100C0750741075150701506F235300500322222222225335307133355304B120013504150432333573466EBC0300041D01CCCD54C108480048D4D541E00048800400841CC4CD5CE249024C320007222225335306A333573466E1CD4C0200188888888888CCC09801C0380300041B01AC41B04CD5CE2481024C390006B22235300700522222222225335307333355304D1200135043504523530160012225335350690012153353078333040074003010153353506A35301601422222222223305B01B0022153353079333573466E3C0040081EC1E84D4C07401488CCCC1B0008004C1D005541B841E841E441E441E002441D44CD5CE249024C6200074225335306833303002F0013335530331200150175045353006004222222222233355303D120012235301600222235301B00322335307100225335307A333573466E3C0500041F01EC4CD415801401C401C801D413C02441A84CD5CE2481024C610006925335306733302F02E001353005003222222222233355304B12001501F235301400122200200910691335738921024C36000682533530673335530411200135037503923300500400100110691335738921024C640006825335306733302F02E001353005003222222222233355304B12001501F23530120012235301600122200200A106913357389201024C35000682353005003222222222253353506333355304B12001504F235301200122533530743303800200E1350680031506700A213530120012235301600122253353506900121507610791506F22353006004222222222253353506433355304C120015050235301300122533530753303900200F1350690031506800A2107513357389201024C380007323530050032222222222353503100B22353503500222353503500822353503900222533530793333333222222253335306D33350640070060031533530800100215335308001005133350610070010041081011333506100700100410810113335061007001004333333335064075225335307B333573466E1C0080041F41F041AC54CD4C1ECCCD5CD19B8900200107D07C1069106A22333573466E200080041F41F010088CCD5CD19B8900200107C07D22333573466E200080041F01F4894CD4C1ECCCD5CD19B8900200107D07C10011002225335307B333573466E240080041F41F04008400401801401C00800400C41EC4CD5CE249024C330007A222222222212333333333300100B00A009008007006005004003002200122123300100300220012221233300100400300220012212330010030022001212222222300700822122222223300600900821222222230050081222222200412222222003221222222233002009008221222222233001009008200113350325001502F13001002222335530241200123535505A00122335505D002335530271200123535505D001223355060002333535502500123300A4800000488CC02C0080048CC02800520000013301C00200122337000040024446464600200A640026AA0B64466A6A05E0029000111A9AA82E00111299A982C199AB9A3371E0040120B40B22600E0022600C006640026AA0B44466A6A05C0029000111A9AA82D80111299A982B999AB9A3371E00400E0B20B020022600C00642444444444444601801A4424444444444446601601C01A42444444444444601401A44442444444444444666601202001E01C01A444244444444444466601001E01C01A4424444444444446600E01C01A42444444444444600C01A42444444444444600A01A42444444444444600801A42444444444444600601A4424444444444446600401C01A42444444444444600201A400224424660020060042400224424660020060042400244A66A607C666AE68CDC79A9801801110011A98018009100102001F8999AB9A3370E6A6006004440026A60060024400208007E207E442466002006004400244666AE68CDC480100081E81E111199AA980A890009A808A80811A9AA82100091199AA980C090009A80A280991A9AA82280091199A9AA8068009198052400000244660160040024660140029000000998020010009119AA98050900091A9AA8200009119AA821801199A9AA804000919AA98070900091A9AA8220009119AA8238011AA80780080091199AAA80401C801000919AA98070900091A9AA8220009119AA8238011AA806800800999AAA80181A001000888911199AA980209000A80A99AA98050900091A9AA8200009119AA8218011AA805800999AA980209000911A9AA82080111299A981E999AA980B890009A806A80791A9AA82200091198050010028030801899A80C802001A80B00099AA98050900091A9AA820000911919AA8220019800802990009AA82291299A9A80C80089AA8058019109A9AA82300111299A982119806001004099AA80800380089803001801190009AA81F1108911299A9A80A800880111099802801199AA980389000802802000889091118018020891091119801002802089091118008020890008919A80891199A9A803001910010010009A9A80200091000990009AA81C110891299A9A8070008A80811099A808980200119AA980309000802000899A80111299A981800108190800817891091980080180109000899A80191299A9816801080088170168919A80591199A9A802001910010010009A9A8010009100089109198008018010900091299A9A80D999AA980189000A80391A9AA81800091299A9816199AB9A3375E00200A05C05A26A0400062A03E002426A03C6A6AA060002440042A038640026AA05E4422444A66A6A00C00226A6A01400644002442666A6A01800A440046008004666AA600E2400200A00800222440042442446600200800624002266A00444A66A6A02C004420062002A02A24424660020060042400224446A6A008004446A6A00C00644A666A6026666A01400E0080042A66A604C00620022050204E2050244246600200600424002244464646464A666A6A01000C42A666A6A01200C42A666A6A0140104260082C260062C2A666A6A01400E4260082C260062C202A20262A666A6A01200E4260082C260062C2A666A6A01200C4260082C260062C20282A666A6A01000A42024202620222A666A6A01000A42A666A6A01200E42600A2C260082C2A666A6A01200C42600A2C260082C202820242A666A6A01000C42600A2C260082C2A666A6A01000A42600A2C260082C20264A666A6A01000A42A666A6A01200E42A666A6A01400E42666A01E014004002260222C260222C260202C20262A666A6A01000C42A666A6A01200C42666A01C012004002260202C260202C2601E2C202420224A666A6A00E00842A666A6A01000C42A666A6A01200C42666A01C012004002260202C260202C2601E2C20242A666A6A00E00A42A666A6A01000A42666A01A0100040022601E2C2601E2C2601C2C202220204A666A6A00C00642A666A6A00E00A42A666A6A01000A42666A01A0100040022601E2C2601E2C2601C2C20222A666A6A00C00842A666A6A00E00842666A01800E0040022601C2C2601C2C2601A2C2020201E4A666A6A00A00442A666A6A00C00842A666A6A00E00842666A01800E0040022601C2C2601C2C2601A2C20202A666A6A00A00642A666A6A00C00642666A01600C0040022601A2C2601A2C260182C201E201C2424446006008224440042244400224002246A6A0040024444444400E244444444246666666600201201000E00C00A008006004240024C244400624440042444002400244446466A601800A466A601A0084A66A602C666AE68CDC780100080C00B8A801880B900B919A9806802100B9299A980B199AB9A3371E00400203002E2A006202E2A66A6A00A00642A66A6A00C0044266A6014004466A6016004466A601E004466A60200044660280040024034466A6020004403446602800400244403444466A601A0084034444A66A6036666AE68CDC380300180E80E0A99A980D999AB9A3370E00A00403A03826602E00800220382038202A2A66A6A00A0024202A202A2424460040062244002240024244600400644424466600200A00800640024244600400642446002006400244666AE68CDC780100080480411199AB9A3370E00400201000E266AE712401024C630000413357389201024C370000313357389201024C64000021220021220012001235006353002335738921024C6700003498480048004448848CC00400C008448004498448C8C00400488CC00CC0080080050482D87A9F581CA1C0A4E322CB639198421EC70E4D9D2C3586DF70103A63C35494F5174567756573735820859601DEB772672B933EF30D66609610C928BCF116951A52F4B8698F34C1FC80FFD87A9F581CA1C0A4E322CB639198421EC70E4D9D2C3586DF70103A63C35494F51745677565737358202CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B9824FFF5F6",
"inputs": [
{
"id": "{{transactionId}}",
"index": 0,
"address": "addr1w89gquc23wc7h8k4chyaad268mjft7t0c08wqertwms70sc5pc6gt",
"datum": "4401f9f4de01abb2164d77909afb1249f2c519331aa034bbfc5248e50b08db86",
"amount": {
"quantity": 10000000,
"unit": "lovelace"
},
"assets": []
}
],
"redeemers": [
{
"purpose": "spending",
"input": {
"id": "{{transactionId}}",
"index": 0
},
"data": "D87A834568656C6C6F5820859601DEB772672B933EF30D66609610C928BCF116951A52F4B8698F34C1FC80A140A1401A001E8480"
}
]
}|]
--
-- Required Signers
--
-- | A first transaction template which mints some token aimed for the wallet
-- submitting the transaction (collected as part of balancing). Other than the
-- minted token, the transaction has no inputs and no outputs. So the wallet is
-- expected to balance it out and assign the minted token to a change address.
--
-- The template has three parameters:
--
-- - policyId: A base16 policyId
-- - policy: A base16 corresponding policy (see 'mkSignerPolicy')
-- - vkHash: The verification key hash (base16) which was used to generate the policy.
--
mintBurn_1 :: (MonadUnliftIO m, MonadFail m) => Aeson.Value -> m Aeson.Value
mintBurn_1 =
renderMustacheThrow template
where
template = unsafeRight $ left show $ compileMustacheText "mintBurn_1" [i|{
"transaction": "84a600800d80018002000e81581c{{ vkHash }}09a1581c{{ policyId }}a1496d696e742d6275726e01a20381591611{{ policy }}0480f5f6",
"inputs": [],
"redeemers": [
{
"purpose": "minting",
"policy_id": "{{ policyId }}",
"data": "D87980"
}
]
}|]
-- The second transaction burn the token minted by the previous one. The token
-- isn't explictly listed in the inputs, as we expect the wallet to select the
-- right input during balancing.
--
-- The template has the same three parameters as 'mintBurn_1'
--
mintBurn_2 :: (MonadUnliftIO m, MonadFail m) => Aeson.Value -> m Aeson.Value
mintBurn_2 =
renderMustacheThrow template
where
-- Note on the "transaction"
-- vkHash is the required_signers in the transaction_body
template = unsafeRight $ left show $ compileMustacheText "mintBurn_2" [i|{
"transaction": "84a600800d80018002000e81581c{{ vkHash }}09a1581c{{ policyId }}a1496d696e742d6275726e20a20381591611{{ policy }}0480f5f6",
"inputs": [],
"redeemers": [
{
"purpose": "minting",
"policy_id": "{{ policyId }}",
"data": "D87980"
}
]
}|]
--
-- Withdrawal Redemption
--
-- | In this scenario, we attempt to perform a withdrawal of 42 ₳ from stake
-- address locked by the special 'alwaysTrueValidator', which always validate.
--
-- This however requires to pass a `Rewarding` type of redeemer, which is quite
-- exotic :)
--
withdrawScript_1 :: (MonadUnliftIO m, MonadFail m) => m Aeson.Value
withdrawScript_1 =
renderMustacheThrow template $ Aeson.object
[ "script" .= script
, "scriptHash" .= scriptHash
, "stakeAddr" .= stakeAddr
]
where
(script, scriptHash) = alwaysTrueValidator
stakeAddr =
Bech32.encodeLenient prefix $ Bech32.dataPartFromBytes $
(header <>) $ getHash $ getApiT scriptHash
where
prefix = [humanReadablePart|stake|]
header = BS.singleton 241
template = unsafeRight $ left show $ compileMustacheText "withdrawScript_1" [i|{
"transaction": "84A600800D80018002000E8005A1581DF1{{scriptHash}}1A0280DE80A10381590853{{script}}F5F6",
"inputs": [],
"redeemers": [
{
"purpose": "rewarding",
"stake_address": "{{stakeAddr}}",
"data": "D87980"
}
]
}|]
{-----------------------------------------------------------------------------
Smart contract: Currency
------------------------------------------------------------------------------}
-- | Partial transaction that mints assets using the "currency" contract.
--
-- The contract is implemented in Plutus here:
--
-- * <https://github.com/input-output-hk/plutus-apps/blob/main/plutus-use-cases/src/Plutus/Contracts/Currency.hs>
-- * <https://github.com/input-output-hk/plutus-apps/blob/main/plutus-use-cases/test/Spec/Currency.hs>
--
-- The contract was serialised using the suppor code in
-- @/extra/Plutus/CurrencyContract.hs@ in this repository.
--
-- Assets can be minted by spending a specific UTxO that is hard-wired into
-- the smart contract. Hence, minting can happen only once, as UTxOs can be
-- spent only once.
--
-- The transaction is partial and needs to be sent to the
-- @/transactions-balance@ endpoint of the wallet in order
-- to add change outputs and further inputs to cover fees if necessary.
-- This endpoint also needs to make sure that the minted assets
-- are assigned to a change output.
currencyTx
:: forall n. EncodeAddress n
=> ApiWalletInput n
-- ^ UTxO that is hard-wired into the smart contract.
-> Aeson.Value
currencyTx input = Aeson.object
[ "transaction" .= Aeson.String (toHex $ fromCBOR transaction)
, "inputs" .= Aeson.toJSON [ Aeson.object
[ "id" .= view #id input
, "index" .= view #index input
, "address" .= view #address input
, "amount" .= view #amount input
, "assets" .= Aeson.Array mempty
] ]
, "redeemers" .= Aeson.toJSON [ Aeson.object
[ "purpose" .= Aeson.String "minting"
, "policy_id" .= Aeson.String (toHex $ getHash $ getApiT policy_id)
, "data" .= Aeson.String "D87980" -- "()" as a Plutus value
] ]
]
where
fromCBOR = BSL.toStrict . serialise
transaction = CBOR.TList
[ transaction_body, transaction_witness_set
, CBOR.TBool True, CBOR.TNull
]
transaction_witness_set = CBOR.TMap
[ (c_plutus_script, CBOR.TList [ CBOR.TBytes (fromHex policy) ])
, (c_plutus_data, CBOR.TList []) -- leave empty
]
[c_plutus_script, c_plutus_data] = map CBOR.TInt [3,4]
transaction_body = CBOR.TMap
[ (c_inputs, CBOR.TList [transaction_input])
, (c_outputs, CBOR.TList []) -- desired output
, (c_fee, CBOR.TInt 0) -- will be provided by balancing
, (c_collaterals, CBOR.TList []) -- ditto
, (c_mint, multiassets )
]
[c_inputs, c_outputs, c_fee, c_mint, c_collaterals]
= map CBOR.TInt [0,1,2,9,13]
transaction_input = CBOR.TList
[ CBOR.TBytes (getHash $ getApiT $ view #id input)
, CBOR.TInt (fromIntegral $ view #index input)
]
multiassets = CBOR.TMap [ (CBOR.TBytes (getHash $ getApiT policy_id), assets_) ]
assets_ = CBOR.TMap
[ ( CBOR.TBytes "apfel" , CBOR.TInt 1_000 )
, ( CBOR.TBytes "banana", CBOR.TInt 1 )
]
(policy, policy_id) = mkCurrencyPolicy input
toHex :: BS.ByteString -> Text
toHex = T.decodeUtf8 . Base16.encode
fromHex :: Text -> BS.ByteString
fromHex = Base16.decodeLenient . T.encodeUtf8
-- | Minting policy that mints 1_000 units of "apfel" and 1 unit of "banana"
-- when a specific UTxO is spent (which can be done only once).
mkCurrencyPolicy :: ApiWalletInput n -> (Text, ApiT (Hash "TokenPolicy"))
mkCurrencyPolicy input = (script, hashScript script)
where
-- Created using the helper module CurrencyContract.rawScript
script =
"590ccd0100003323233322232332233322233223322332232323232323233223232323233332222323232323322323332223233322232333333332222222232323333222232323322323332223232323322332232323333322222332233223322332233223322222323253353061332235305b00722353550620022235300c005223305b33058491024330003322333553055120013505e505c235355069001223335530581200135061505f23535506c0012233353550550012330714800000488cc1c80080048cc1c400520000013304c002001332235306300122333223355002001200130571200133506222335530581200123535506d0012233550700023355305b1200123535507000122335507300233353550590012330794800000488cc1e80080048cc1e400520000013305000200150693355305d1200123535506b0012233506b335506e00733506b335506e002001506c506c00135300e00722533335301c001213504c35304a335738921024c680004b4988400484d4130d4c128cd5ce249024c680004b49884d4130d4c128cd5ce2481024c680004b498034d4c040008888888888801ccc161240102433100353010002222222222233355305d120013505b505e253353074333573466e3c03cd4c07400488d4c0e4008880081d81d44ccd5cd19b8700e35301d0012235303900222001076075107500a3333573466e1cd55ce9baa0044800081048d4108d4c100cd5ce2490350543100041499263333573466e1cd55cea8012400046601064646464646464646464646666ae68cdc39aab9d500a480008cccccccccc058cd40908c8c8cccd5cd19b8735573aa004900011980e181a1aba150023029357426ae8940088d4148d4c140cd5ce249035054310005149926135573ca00226ea8004d5d0a80519a8120129aba150093335502b75ca0546ae854020ccd540add728151aba1500733502403a35742a00c66a04866aa096086eb4d5d0a8029919191999ab9a3370e6aae7540092000233501e3232323333573466e1cd55cea80124000466a04c66a078eb4d5d0a80118209aba135744a00446a0ac6a60a866ae712401035054310005549926135573ca00226ea8004d5d0a8011919191999ab9a3370e6aae7540092000233502433503c75a6ae854008c104d5d09aba250022350563530543357389201035054310005549926135573ca00226ea8004d5d09aba250022350523530503357389201035054310005149926135573ca00226ea8004d5d0a80219a8123ae35742a00666a04866aa096eb88004d5d0a80118199aba135744a00446a09c6a609866ae71241035054310004d49926135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea8004d5d0a8011919191999ab9a3370ea00290031180d98191aba135573ca00646666ae68cdc3a801240084603460786ae84d55cf280211999ab9a3370ea00690011180d18151aba135573ca00a46666ae68cdc3a802240004603a6eb8d5d09aab9e50062350493530473357389201035054310004849926499264984d55cea80089baa001357426ae8940088d4108d4c100cd5ce249035054310004149926104013504135303f335738920103505435000404984d55cf280089baa0012212330010030022001222222222212333333333300100b00a00900800700600500400300220012212330010030022001122123300100300212001122123300100300212001122123300100300212001212222300400521222230030052122223002005212222300100520011232230023758002640026aa09e446666aae7c004941288cd4124c010d5d080118019aba200202c23232323333573466e1cd55cea801a4000466600e6464646666ae68cdc39aab9d5002480008cc034c0acd5d0a80119a8080139aba135744a00446a0646a606066ae712401035054310003149926135573ca00226ea8004d5d0a801999aa805bae500a35742a00466a018eb8d5d09aba2500223502e35302c335738921035054310002d49926135744a00226aae7940044dd50009110919980080200180110009109198008018011000899aa800bae75a224464460046eac004c8004d5412488c8cccd55cf80112822919a82219aa82398031aab9d5002300535573ca00460086ae8800c09c4d5d080089119191999ab9a3370ea002900011a80418029aba135573ca00646666ae68cdc3a801240044a01046a0506a604c66ae712410350543100027499264984d55cea80089baa001121223002003112200112001232323333573466e1cd55cea8012400046600c600e6ae854008dd69aba135744a00446a0446a604066ae71241035054310002149926135573ca00226ea80048848cc00400c00880048c8cccd5cd19b8735573aa002900011bae357426aae7940088d4078d4c070cd5ce2481035054310001d499261375400224464646666ae68cdc3a800a40084a00e46666ae68cdc3a8012400446a014600c6ae84d55cf280211999ab9a3370ea00690001280511a8109a980f99ab9c490103505431000204992649926135573aa00226ea8004484888c00c0104488800844888004480048c8cccd5cd19b8750014800880e88cccd5cd19b8750024800080e88d4064d4c05ccd5ce2490350543100018499264984d55ce9baa001232323232323333573466e1d4005200c200b23333573466e1d4009200a200d23333573466e1d400d200823300b375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c46601a6eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc048c050d5d0a8049bae357426ae8940248cccd5cd19b875006480088c050c054d5d09aab9e500b23333573466e1d401d2000230133016357426aae7940308d4084d4c07ccd5ce2481035054310002049926499264992649926135573aa00826aae79400c4d55cf280109aab9e500113754002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024646464646666ae68cdc3a800a400446660106eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d400920002300a300b357426aae7940188d4048d4c040cd5ce2490350543100011499264984d55cea80189aba25001135573ca00226ea80048488c00800c888488ccc00401401000c80048c8c8cccd5cd19b875001480088c018dd71aba135573ca00646666ae68cdc3a80124000460106eb8d5d09aab9e500423500c35300a3357389201035054310000b499264984d55cea80089baa001212230020032122300100320011122232323333573466e1cd55cea80124000466aa04e600c6ae854008c014d5d09aba25002235009353007335738921035054310000849926135573ca00226ea800448004800449888cd54c028480048d4d5407c00488cd54088008ccd4d540200048cd54c038480048d4d5408c00488cd54098008d5403c00400488ccd5540200500080048cd54c038480048d4d5408c00488cd54098008d54034004004ccd55400c03c008004444888ccd54c010480054070cd54c028480048d4d5407c00488cd54088008d5402c004ccd54c0104800488d4d54080008894cd4c094ccd54c03c48004d403540408d4d5408c00488cc028008014018400c4cd408001000d4074004cd54c028480048d4d5407c00488c8cd5408c00cc004014c8004d540a0894cd4d40800044d5402c00c884d4d54094008894cd4c0a8cc0300080204cd5404001c0044c01800c008c8004d5408488448894cd4d40700044008884cc014008ccd54c01c480040140100044484888c00c01044884888cc0080140104484888c00401044800448cd403888ccd4d401c00c88008008004d4d401400488004c8004d5406c8844894cd4d40540045405c884cd4060c010008cd54c01848004010004c8004d5406888448894cd4d40540044d4d403c00c88004884ccd4d404401488008c010008ccd54c01c480040140100044cd4008894cd4c05c0084064400405848848cc00400c0084800488ccd5cd19b8f002001016015225335301300110151335738004028640026aa028442244a66a6a01c0022a02044266a022600800466aa600c24002008002266a00c00202244a66a6020004200220222466a00644666a6a00c006440040040026a6a008002440022442466002006004240022442466002006004240024424660020060044002224400424424466002008006240022244246600200600422400244666ae68cdc380100080280209100109100090009119b800020011123230010012233003300200200133223332223322330023355007488120"
<> toHex transactionId
<> "0048" <> idxEncoded
<> "d4010cd5401d220105617066656c00483403ccd4010cd5401d22010662616e616e61004800940148848cc00400c00880044488008488488cc00401000c48004448848cc00400c008448005"
ApiT (Hash transactionId) = view #id input
idx = view #index input
-- Oldschool hex editing.
-- Plutus uses the "Flat" library to encode compiled expressions.
-- This encoding does *not* respect byte boundaries,
-- that is why we have to fiddle with individual bits.
idxEncoded = toHex $ BS.pack $ Bits.asBytes
$ toBits "00" <> Bits.bits (fromIntegral idx :: Integer) <> toBits "001100"
toBits = Bits.fromBools . map (/= '0')
{-----------------------------------------------------------------------------
Helpers
------------------------------------------------------------------------------}
renderMustacheThrow
:: forall m. (MonadUnliftIO m, MonadFail m)
=> Mustache.Template
-> Aeson.Value
-> m Aeson.Value
renderMustacheThrow template args =
case Aeson.eitherDecode' (TL.encodeUtf8 $ renderMustache template args) of
Left e -> fail $ "Failed to render template: " <> show e
Right a -> pure a