BCD

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