BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • Youves on demand oracle
operations (447)Storage Code Interact Tokens Metadata Fork Views Statistics Details
Latest
​x
610
 
1
{ parameter (or
2
              (or
3
                (or (address %add_certificate_updater)
4
                    (or (key %add_valid_source)
5
                        (pair %fulfill (set %certificates_data bytes)
6
                                       (pair (bytes %payload_data)
7
                                             (set %signatures_data (pair
8
                                                                    (key %public_key)
9
                                                                    (signature %signature)))))))
10
                (or (address %propose_administrator)
11
                    (or (address %remove_administrator)
12
                        (address %remove_certificate_updater))))
13
              (or
14
                (or (key %remove_valid_source)
15
                    (or (unit %set_administrator) (bytes %set_valid_script)))
16
                (or
17
                  (pair %update_certificate (option %new_certificate bytes)
18
                                            (option %old_certificate bytes))
19
                  (or (nat %update_certificates_threshold)
20
                      (nat %update_response_threshold))))) ;
21
  storage (pair
22
            (pair
23
              (pair (big_map %administrators address nat)
24
                    (big_map %certificate_updaters address unit))
25
              (pair (big_map %metadata string bytes)
26
                    (pair (nat %price_validity_duration)
27
                          (big_map %prices string
28
                                           (pair (nat %price)
29
                                                 (timestamp %last_update_timestamp))))))
30
            (pair (pair (nat %response_threshold) (set %valid_certificates bytes))
31
                  (pair (nat %valid_certificates_threshold)
32
                        (pair (bytes %valid_script) (set %valid_sources key))))) ;
33
  code { LAMBDA
34
           (pair (set bytes)
35
                 (pair
36
                   (pair (pair (big_map address nat) (big_map address unit))
37
                         (pair (big_map string bytes)
38
                               (pair nat (big_map string (pair nat timestamp)))))
39
                   (pair (pair nat (set bytes)) (pair nat (pair bytes (set key))))))
40
           (pair unit
41
                 (pair
42
                   (pair (pair (big_map address nat) (big_map address unit))
43
                         (pair (big_map string bytes)
44
                               (pair nat (big_map string (pair nat timestamp)))))
45
                   (pair (pair nat (set bytes)) (pair nat (pair bytes (set key))))))
46
           { UNPAIR ;
47
             PUSH nat 0 ;
48
             SWAP ;
49
             DUP ;
50
             DUG 2 ;
51
             ITER { DUP 4 ; GET 3 ; CDR ; SWAP ; MEM ; IF { PUSH nat 1 ; ADD } {} } ;
52
             SWAP ;
53
             DROP ;
54
             SWAP ;
55
             DUP ;
56
             DUG 2 ;
57
             GET 5 ;
58
             SWAP ;
59
             COMPARE ;
60
             GE ;
61
             IF {} { PUSH string "InsufficientValidCertificates" ; FAILWITH } ;
62
             UNIT ;
63
             PAIR } ;
64
         SWAP ;
65
         LAMBDA
66
           (pair unit
67
                 (pair
68
                   (pair (pair (big_map address nat) (big_map address unit))
69
                         (pair (big_map string bytes)
70
                               (pair nat (big_map string (pair nat timestamp)))))
71
                   (pair (pair nat (set bytes)) (pair nat (pair bytes (set key))))))
72
           (pair unit
73
                 (pair
74
                   (pair (pair (big_map address nat) (big_map address unit))
75
                         (pair (big_map string bytes)
76
                               (pair nat (big_map string (pair nat timestamp)))))
77
                   (pair (pair nat (set bytes)) (pair nat (pair bytes (set key))))))
78
           { CDR ;
79
             DUP ;
80
             CAR ;
81
             CAR ;
82
             CAR ;
83
             PUSH nat 1 ;
84
             SWAP ;
85
             SENDER ;
86
             GET ;
87
             IF_NONE { PUSH int 21 ; FAILWITH } {} ;
88
             COMPARE ;
89
             EQ ;
90
             IF {} { PUSH int 401 ; FAILWITH } ;
91
             UNIT ;
92
             PAIR } ;
93
         SWAP ;
94
         UNPAIR ;
95
         IF_LEFT
96
           { IF_LEFT
97
               { IF_LEFT
98
                   { DIG 3 ;
99
                     DROP ;
100
                     AMOUNT ;
101
                     PUSH mutez 0 ;
102
                     COMPARE ;
103
                     EQ ;
104
                     IF {} { AMOUNT ; FAILWITH } ;
105
                     DIG 2 ;
106
                     UNIT ;
107
                     SWAP ;
108
                     DIG 3 ;
109
                     DIG 2 ;
110
                     PAIR ;
111
                     EXEC ;
112
                     CDR ;
113
                     UNPAIR ;
114
                     UNPAIR ;
115
                     UNPAIR ;
116
                     SWAP ;
117
                     PUSH (option unit) (Some Unit) ;
118
                     DIG 5 ;
119
                     UPDATE ;
120
                     SWAP ;
121
                     PAIR ;
122
                     PAIR ;
123
                     PAIR }
124
                   { IF_LEFT
125
                       { DIG 3 ;
126
                         DROP ;
127
                         AMOUNT ;
128
                         PUSH mutez 0 ;
129
                         COMPARE ;
130
                         EQ ;
131
                         IF {} { AMOUNT ; FAILWITH } ;
132
                         DIG 2 ;
133
                         UNIT ;
134
                         SWAP ;
135
                         DIG 3 ;
136
                         DIG 2 ;
137
                         PAIR ;
138
                         EXEC ;
139
                         CDR ;
140
                         DUP ;
141
                         GET 8 ;
142
                         PUSH bool True ;
143
                         DIG 3 ;
144
                         UPDATE ;
145
                         UPDATE 8 }
146
                       { AMOUNT ;
147
                         PUSH mutez 0 ;
148
                         COMPARE ;
149
                         EQ ;
150
                         IF {} { AMOUNT ; FAILWITH } ;
151
                         SWAP ;
152
                         DUP ;
153
                         DUG 2 ;
154
                         GET 3 ;
155
                         CAR ;
156
                         SWAP ;
157
                         DUP ;
158
                         DUG 2 ;
159
                         GET 4 ;
160
                         SIZE ;
161
                         COMPARE ;
162
                         GE ;
163
                         IF {} { PUSH string "InsufficientResponses" ; FAILWITH } ;
164
                         DUP 4 ;
165
                         SWAP ;
166
                         DUP ;
167
                         DUG 2 ;
168
                         CAR ;
169
                         SWAP ;
170
                         DIG 3 ;
171
                         DIG 2 ;
172
                         PAIR ;
173
                         EXEC ;
174
                         UNPAIR ;
175
                         DIG 4 ;
176
                         DIG 4 ;
177
                         DIG 3 ;
178
                         DIG 4 ;
179
                         DIG 4 ;
180
                         SWAP ;
181
                         DUP ;
182
                         DUG 2 ;
183
                         GET 4 ;
184
                         ITER { DUP 4 ;
185
                                GET 8 ;
186
                                SWAP ;
187
                                DUP ;
188
                                DUG 2 ;
189
                                CAR ;
190
                                MEM ;
191
                                IF {} { PUSH string "InvalidSource" ; FAILWITH } ;
192
                                NIL bytes ;
193
                                DUP 4 ;
194
                                GET 3 ;
195
                                CONS ;
196
                                DUP 5 ;
197
                                GET 7 ;
198
                                CONS ;
199
                                PUSH bytes 0x616375736967 ;
200
                                CONS ;
201
                                CONCAT ;
202
                                SWAP ;
203
                                UNPAIR ;
204
                                CHECK_SIGNATURE ;
205
                                IF {} { PUSH string "InvalidSignature" ; FAILWITH } } ;
206
                         SWAP ;
207
                         DUP ;
208
                         DUG 2 ;
209
                         GET 3 ;
210
                         UNPACK (list (pair timestamp (pair string nat))) ;
211
                         IF_NONE { PUSH string "InvalidData" ; FAILWITH } {} ;
212
                         DUP ;
213
                         ITER { DUP 5 ;
214
                                CAR ;
215
                                GET 6 ;
216
                                SWAP ;
217
                                DUP ;
218
                                DUG 2 ;
219
                                GET 3 ;
220
                                MEM ;
221
                                IF
222
                                  { DUP ;
223
                                    CAR ;
224
                                    DUP 6 ;
225
                                    CAR ;
226
                                    GET 6 ;
227
                                    DUP 3 ;
228
                                    GET 3 ;
229
                                    GET ;
230
                                    IF_NONE { PUSH int 165 ; FAILWITH } {} ;
231
                                    CDR ;
232
                                    COMPARE ;
233
                                    LT ;
234
                                    IF
235
                                      { DIG 4 ;
236
                                        UNPAIR ;
237
                                        UNPAIR ;
238
                                        SWAP ;
239
                                        UNPAIR ;
240
                                        SWAP ;
241
                                        UNPAIR ;
242
                                        SWAP ;
243
                                        DUP ;
244
                                        DUP 7 ;
245
                                        GET 3 ;
246
                                        DUP ;
247
                                        DUG 2 ;
248
                                        GET ;
249
                                        IF_NONE { PUSH int 166 ; FAILWITH } {} ;
250
                                        DUP 8 ;
251
                                        GET 4 ;
252
                                        UPDATE 1 ;
253
                                        SOME ;
254
                                        SWAP ;
255
                                        UPDATE ;
256
                                        DUP ;
257
                                        DUP 7 ;
258
                                        GET 3 ;
259
                                        DUP ;
260
                                        DUG 2 ;
261
                                        GET ;
262
                                        IF_NONE { PUSH int 167 ; FAILWITH } {} ;
263
                                        DIG 7 ;
264
                                        CAR ;
265
                                        UPDATE 2 ;
266
                                        SOME ;
267
                                        SWAP ;
268
                                        UPDATE ;
269
                                        SWAP ;
270
                                        PAIR ;
271
                                        SWAP ;
272
                                        PAIR ;
273
                                        SWAP ;
274
                                        PAIR ;
275
                                        PAIR ;
276
                                        DUG 3 }
277
                                      { DROP } }
278
                                  { DIG 4 ;
279
                                    UNPAIR ;
280
                                    UNPAIR ;
281
                                    SWAP ;
282
                                    UNPAIR ;
283
                                    SWAP ;
284
                                    UNPAIR ;
285
                                    SWAP ;
286
                                    DIG 5 ;
287
                                    DUP ;
288
                                    CAR ;
289
                                    SWAP ;
290
                                    DUP ;
291
                                    DUG 7 ;
292
                                    GET 4 ;
293
                                    PAIR ;
294
                                    SOME ;
295
                                    DIG 6 ;
296
                                    GET 3 ;
297
                                    UPDATE ;
298
                                    SWAP ;
299
                                    PAIR ;
300
                                    SWAP ;
301
                                    PAIR ;
302
                                    SWAP ;
303
                                    PAIR ;
304
                                    PAIR ;
305
                                    DUG 3 } } ;
306
                         DROP 3 ;
307
                         SWAP ;
308
                         DROP ;
309
                         SWAP ;
310
                         DROP } } }
311
               { IF_LEFT
312
                   { DIG 3 ;
313
                     DROP ;
314
                     AMOUNT ;
315
                     PUSH mutez 0 ;
316
                     COMPARE ;
317
                     EQ ;
318
                     IF {} { AMOUNT ; FAILWITH } ;
319
                     DIG 2 ;
320
                     UNIT ;
321
                     SWAP ;
322
                     DIG 3 ;
323
                     DIG 2 ;
324
                     PAIR ;
325
                     EXEC ;
326
                     CDR ;
327
                     UNPAIR ;
328
                     UNPAIR ;
329
                     UNPAIR ;
330
                     PUSH (option nat) (Some 0) ;
331
                     DIG 5 ;
332
                     UPDATE ;
333
                     PAIR ;
334
                     PAIR ;
335
                     PAIR }
336
                   { IF_LEFT
337
                       { DIG 3 ;
338
                         DROP ;
339
                         AMOUNT ;
340
                         PUSH mutez 0 ;
341
                         COMPARE ;
342
                         EQ ;
343
                         IF {} { AMOUNT ; FAILWITH } ;
344
                         DIG 2 ;
345
                         UNIT ;
346
                         SWAP ;
347
                         DIG 3 ;
348
                         DIG 2 ;
349
                         PAIR ;
350
                         EXEC ;
351
                         CDR ;
352
                         UNPAIR ;
353
                         UNPAIR ;
354
                         UNPAIR ;
355
                         NONE nat ;
356
                         DIG 5 ;
357
                         UPDATE ;
358
                         PAIR ;
359
                         PAIR ;
360
                         PAIR }
361
                       { DIG 3 ;
362
                         DROP ;
363
                         AMOUNT ;
364
                         PUSH mutez 0 ;
365
                         COMPARE ;
366
                         EQ ;
367
                         IF {} { AMOUNT ; FAILWITH } ;
368
                         DIG 2 ;
369
                         UNIT ;
370
                         SWAP ;
371
                         DIG 3 ;
372
                         DIG 2 ;
373
                         PAIR ;
374
                         EXEC ;
375
                         CDR ;
376
                         UNPAIR ;
377
                         UNPAIR ;
378
                         UNPAIR ;
379
                         SWAP ;
380
                         NONE unit ;
381
                         DIG 5 ;
382
                         UPDATE ;
383
                         SWAP ;
384
                         PAIR ;
385
                         PAIR ;
386
                         PAIR } } } }
387
           { IF_LEFT
388
               { IF_LEFT
389
                   { DIG 3 ;
390
                     DROP ;
391
                     AMOUNT ;
392
                     PUSH mutez 0 ;
393
                     COMPARE ;
394
                     EQ ;
395
                     IF {} { AMOUNT ; FAILWITH } ;
396
                     DIG 2 ;
397
                     UNIT ;
398
                     SWAP ;
399
                     DIG 3 ;
400
                     DIG 2 ;
401
                     PAIR ;
402
                     EXEC ;
403
                     CDR ;
404
                     DUP ;
405
                     GET 8 ;
406
                     PUSH bool False ;
407
                     DIG 3 ;
408
                     UPDATE ;
409
                     UPDATE 8 }
410
                   { IF_LEFT
411
                       { DROP ;
412
                         SWAP ;
413
                         DROP ;
414
                         SWAP ;
415
                         DROP ;
416
                         AMOUNT ;
417
                         PUSH mutez 0 ;
418
                         COMPARE ;
419
                         EQ ;
420
                         IF {} { AMOUNT ; FAILWITH } ;
421
                         DUP ;
422
                         CAR ;
423
                         CAR ;
424
                         CAR ;
425
                         PUSH nat 0 ;
426
                         SWAP ;
427
                         SENDER ;
428
                         GET ;
429
                         IF_NONE { PUSH int 46 ; FAILWITH } {} ;
430
                         COMPARE ;
431
                         EQ ;
432
                         IF {} { PUSH int 405 ; FAILWITH } ;
433
                         UNPAIR ;
434
                         UNPAIR ;
435
                         UNPAIR ;
436
                         PUSH (option nat) (Some 1) ;
437
                         SENDER ;
438
                         UPDATE ;
439
                         PAIR ;
440
                         PAIR ;
441
                         PAIR }
442
                       { DIG 3 ;
443
                         DROP ;
444
                         AMOUNT ;
445
                         PUSH mutez 0 ;
446
                         COMPARE ;
447
                         EQ ;
448
                         IF {} { AMOUNT ; FAILWITH } ;
449
                         DIG 2 ;
450
                         UNIT ;
451
                         SWAP ;
452
                         DIG 3 ;
453
                         DIG 2 ;
454
                         PAIR ;
455
                         EXEC ;
456
                         CDR ;
457
                         SWAP ;
458
                         UPDATE 7 } } }
459
               { IF_LEFT
460
                   { AMOUNT ;
461
                     PUSH mutez 0 ;
462
                     COMPARE ;
463
                     EQ ;
464
                     IF {} { AMOUNT ; FAILWITH } ;
465
                     SWAP ;
466
                     DUP ;
467
                     DUG 2 ;
468
                     CAR ;
469
                     CAR ;
470
                     CDR ;
471
                     SENDER ;
472
                     MEM ;
473
                     IF {} { PUSH string "NotCertificateUpdater" ; FAILWITH } ;
474
                     DUP ;
475
                     CDR ;
476
                     IF_NONE
477
                       { DIG 2 ;
478
                         DROP ;
479
                         DIG 2 ;
480
                         DROP ;
481
                         DUP ;
482
                         CAR ;
483
                         IF_NONE { PUSH bool False } { DROP ; PUSH bool True } }
484
                       { DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; PUSH bool True } ;
485
                     IF {} { PUSH string "InvalidData" ; FAILWITH } ;
486
                     DUP ;
487
                     CDR ;
488
                     IF_NONE
489
                       {}
490
                       { DROP ;
491
                         SWAP ;
492
                         UNPAIR ;
493
                         SWAP ;
494
                         UNPAIR ;
495
                         UNPAIR ;
496
                         SWAP ;
497
                         PUSH bool False ;
498
                         DUP 6 ;
499
                         CDR ;
500
                         IF_NONE { PUSH int 297 ; FAILWITH } {} ;
501
                         UPDATE ;
502
                         SWAP ;
503
                         PAIR ;
504
                         PAIR ;
505
                         SWAP ;
506
                         PAIR ;
507
                         SWAP } ;
508
                     DUP ;
509
                     CAR ;
510
                     IF_NONE
511
                       { DROP }
512
                       { DROP ;
513
                         SWAP ;
514
                         UNPAIR ;
515
                         SWAP ;
516
                         UNPAIR ;
517
                         UNPAIR ;
518
                         SWAP ;
519
                         PUSH bool True ;
520
                         DIG 5 ;
521
                         CAR ;
522
                         IF_NONE { PUSH int 299 ; FAILWITH } {} ;
523
                         UPDATE ;
524
                         SWAP ;
525
                         PAIR ;
526
                         PAIR ;
527
                         SWAP ;
528
                         PAIR } }
529
                   { IF_LEFT
530
                       { DIG 3 ;
531
                         DROP ;
532
                         AMOUNT ;
533
                         PUSH mutez 0 ;
534
                         COMPARE ;
535
                         EQ ;
536
                         IF {} { AMOUNT ; FAILWITH } ;
537
                         DIG 2 ;
538
                         UNIT ;
539
                         SWAP ;
540
                         DIG 3 ;
541
                         DIG 2 ;
542
                         PAIR ;
543
                         EXEC ;
544
                         CDR ;
545
                         SWAP ;
546
                         UPDATE 5 }
547
                       { DIG 3 ;
548
                         DROP ;
549
                         AMOUNT ;
550
                         PUSH mutez 0 ;
551
                         COMPARE ;
552
                         EQ ;
553
                         IF {} { AMOUNT ; FAILWITH } ;
554
                         DIG 2 ;
555
                         UNIT ;
556
                         SWAP ;
557
                         DIG 3 ;
558
                         DIG 2 ;
559
                         PAIR ;
560
                         EXEC ;
561
                         CDR ;
562
                         UNPAIR ;
563
                         SWAP ;
564
                         UNPAIR ;
565
                         CDR ;
566
                         DIG 3 ;
567
                         PAIR ;
568
                         PAIR ;
569
                         SWAP ;
570
                         PAIR } } } } ;
571
         NIL operation ;
572
         PAIR } ;
573
  view "get_price" string nat
574
        { UNPAIR ;
575
          SWAP ;
576
          DUP ;
577
          DUG 2 ;
578
          CAR ;
579
          GET 6 ;
580
          SWAP ;
581
          DUP ;
582
          DUG 2 ;
583
          MEM ;
584
          IF {} { PUSH string "InvalidSymbol" ; FAILWITH } ;
585
          SWAP ;
586
          DUP ;
587
          DUG 2 ;
588
          CAR ;
589
          GET 6 ;
590
          SWAP ;
591
          GET ;
592
          IF_NONE { PUSH int 364 ; FAILWITH } {} ;
593
          NOW ;
594
          DIG 2 ;
595
          CAR ;
596
          GET 5 ;
597
          INT ;
598
          DUP 3 ;
599
          CDR ;
600
          ADD ;
601
          COMPARE ;
602
          GE ;
603
          IF {} { PUSH string "OldPrice" ; FAILWITH } ;
604
          DUP ;
605
          CAR ;
606
          PUSH nat 0 ;
607
          COMPARE ;
608
          LT ;
609
          IF {} { PUSH string "InvalidPrice" ; FAILWITH } ;
610
          CAR } }