BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Ghostnet
  • /
  • KT1FcUN...YwEg
operations (89)Storage Code Interact Tokens Metadata Fork Views Events Statistics Details
Latest
​x
405
 
1
{ parameter (or
2
              (or (or (address %declare_ownership) (unit %claim_ownership))
3
                  (or (unit %pause) (unit %unpause)))
4
              (or
5
                (or (pair %set_metadata (string %k) (option %d bytes)) (bytes %add_poll))
6
                (or (or (bytes %approve) (bytes %disapprove))
7
                    (or (nat %remove) (pair %respond (nat %pk) (nat %choice_id)))))) ;
8
  storage (pair (address %owner)
9
                (pair (option %owner_candidate address)
10
                      (pair (bool %paused)
11
                            (pair (nat %polls_counter)
12
                                  (pair
13
                                    (map %poll nat
14
                                               (pair (bytes %ipfs_hash)
15
                                                     (pair (map %responses nat nat)
16
                                                           (timestamp %creation))))
17
                                    (pair (big_map %poll_to_approve bytes address)
18
                                          (pair (big_map %responder address (set nat))
19
                                                (big_map %metadata string bytes)))))))) ;
20
  code { LAMBDA
21
           bool
22
           bool
23
           { PUSH unit Unit ;
24
             DUP 2 ;
25
             IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
26
             PUSH bool True ;
27
             SWAP ;
28
             DROP ;
29
             DUG 1 ;
30
             DROP } ;
31
         NIL operation ;
32
         DIG 2 ;
33
         UNPAIR ;
34
         DIP { UNPAIR 8 } ;
35
         IF_LEFT
36
           { IF_LEFT
37
               { IF_LEFT
38
                   { DUP 2 ;
39
                     SENDER ;
40
                     COMPARE ;
41
                     EQ ;
42
                     NOT ;
43
                     IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
44
                     DUP ;
45
                     SOME ;
46
                     DIP { DIG 2 ; DROP } ;
47
                     DUG 2 ;
48
                     DROP ;
49
                     PAIR 8 ;
50
                     DIG 1 ;
51
                     PAIR }
52
                   { DROP ;
53
                     DUP 2 ;
54
                     IF_NONE
55
                       { PUSH bool False }
56
                       { SENDER ; DUP 2 ; COMPARE ; EQ ; SWAP ; DROP } ;
57
                     NOT ;
58
                     IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
59
                     SENDER ;
60
                     SWAP ;
61
                     DROP ;
62
                     NONE address ;
63
                     DIP { DIG 1 ; DROP } ;
64
                     DUG 1 ;
65
                     PAIR 8 ;
66
                     DIG 1 ;
67
                     PAIR } }
68
               { IF_LEFT
69
                   { DROP ;
70
                     DUP ;
71
                     SENDER ;
72
                     COMPARE ;
73
                     EQ ;
74
                     NOT ;
75
                     IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
76
                     DUP 10 ;
77
                     DUP 4 ;
78
                     EXEC ;
79
                     NOT ;
80
                     IF
81
                       { PUSH string "pausable_r1" ;
82
                         PUSH string "INVALID_CONDITION" ;
83
                         PAIR ;
84
                         FAILWITH }
85
                       {} ;
86
                     PUSH bool True ;
87
                     DIP { DIG 2 ; DROP } ;
88
                     DUG 2 ;
89
                     PAIR 8 ;
90
                     DIG 1 ;
91
                     PAIR }
92
                   { DROP ;
93
                     DUP ;
94
                     SENDER ;
95
                     COMPARE ;
96
                     EQ ;
97
                     NOT ;
98
                     IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
99
                     DUP 3 ;
100
                     NOT ;
101
                     IF { PUSH string "CONTRACT_NOT_PAUSED" ; FAILWITH } {} ;
102
                     PUSH bool False ;
103
                     DIP { DIG 2 ; DROP } ;
104
                     DUG 2 ;
105
                     PAIR 8 ;
106
                     DIG 1 ;
107
                     PAIR } } }
108
           { IF_LEFT
109
               { IF_LEFT
110
                   { UNPAIR ;
111
                     SWAP ;
112
                     DUP 3 ;
113
                     SENDER ;
114
                     COMPARE ;
115
                     EQ ;
116
                     NOT ;
117
                     IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
118
                     DUP 12 ;
119
                     DUP 6 ;
120
                     EXEC ;
121
                     NOT ;
122
                     IF
123
                       { PUSH string "md_r1" ;
124
                         PUSH string "INVALID_CONDITION" ;
125
                         PAIR ;
126
                         FAILWITH }
127
                       {} ;
128
                     DUP 10 ;
129
                     DUP 2 ;
130
                     DUP 4 ;
131
                     UPDATE ;
132
                     DIP { DIG 9 ; DROP } ;
133
                     DUG 9 ;
134
                     DROP 2 ;
135
                     PAIR 8 ;
136
                     DIG 1 ;
137
                     PAIR }
138
                   { DUP 11 ;
139
                     DUP 5 ;
140
                     EXEC ;
141
                     NOT ;
142
                     IF
143
                       { PUSH string "r1" ; PUSH string "INVALID_CONDITION" ; PAIR ; FAILWITH }
144
                       {} ;
145
                     DUP 7 ;
146
                     DUP 2 ;
147
                     MEM ;
148
                     IF
149
                       { PUSH string "poll_to_approve" ;
150
                         PUSH string "KEY_EXISTS" ;
151
                         PAIR ;
152
                         FAILWITH }
153
                       { DUP 7 ; SENDER ; SOME ; DUP 3 ; UPDATE ; DIP { DIG 6 ; DROP } ; DUG 6 } ;
154
                     NIL operation ;
155
                     NIL operation ;
156
                     DUP 12 ;
157
                     ITER { CONS } ;
158
                     DUP 3 ;
159
                     SENDER ;
160
                     PAIR ;
161
                     EMIT %NewPoll (pair (address %creator) (bytes %poll_id)) ;
162
                     CONS ;
163
                     ITER { CONS } ;
164
                     DIP { DIG 9 ; DROP } ;
165
                     DUG 9 ;
166
                     DROP ;
167
                     PAIR 8 ;
168
                     DIG 1 ;
169
                     PAIR } }
170
               { IF_LEFT
171
                   { IF_LEFT
172
                       { DUP 2 ;
173
                         SENDER ;
174
                         COMPARE ;
175
                         EQ ;
176
                         NOT ;
177
                         IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
178
                         DUP 7 ;
179
                         DUP 2 ;
180
                         GET ;
181
                         IF_NONE { NONE address } { DUP ; SOME ; SWAP ; DROP } ;
182
                         IF_NONE { PUSH string "POLL_NOT_FOUND" ; FAILWITH } {} ;
183
                         DUP 7 ;
184
                         DUP 7 ;
185
                         MEM ;
186
                         IF
187
                           { PUSH string "poll" ; PUSH string "KEY_EXISTS" ; PAIR ; FAILWITH }
188
                           { DUP 7 ;
189
                             NOW ;
190
                             EMPTY_MAP nat nat ;
191
                             PAIR ;
192
                             DUP 4 ;
193
                             PAIR ;
194
                             SOME ;
195
                             DUP 8 ;
196
                             UPDATE ;
197
                             DIP { DIG 6 ; DROP } ;
198
                             DUG 6 } ;
199
                         PUSH nat 1 ;
200
                         DUP 7 ;
201
                         ADD ;
202
                         DIP { DIG 5 ; DROP } ;
203
                         DUG 5 ;
204
                         DUP 8 ;
205
                         NONE address ;
206
                         DUP 4 ;
207
                         UPDATE ;
208
                         DIP { DIG 7 ; DROP } ;
209
                         DUG 7 ;
210
                         NIL operation ;
211
                         NIL operation ;
212
                         DUP 13 ;
213
                         ITER { CONS } ;
214
                         DUP 4 ;
215
                         DUP 4 ;
216
                         PAIR ;
217
                         EMIT %ApprovePoll (pair (address %creator) (bytes %poll_id)) ;
218
                         CONS ;
219
                         ITER { CONS } ;
220
                         DIP { DIG 10 ; DROP } ;
221
                         DUG 10 ;
222
                         DROP 2 ;
223
                         PAIR 8 ;
224
                         DIG 1 ;
225
                         PAIR }
226
                       { DUP 2 ;
227
                         SENDER ;
228
                         COMPARE ;
229
                         EQ ;
230
                         NOT ;
231
                         IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
232
                         DUP 7 ;
233
                         NONE address ;
234
                         DUP 3 ;
235
                         UPDATE ;
236
                         DIP { DIG 6 ; DROP } ;
237
                         DUG 6 ;
238
                         DROP ;
239
                         PAIR 8 ;
240
                         DIG 1 ;
241
                         PAIR } }
242
                   { IF_LEFT
243
                       { DUP 2 ;
244
                         SENDER ;
245
                         COMPARE ;
246
                         EQ ;
247
                         NOT ;
248
                         IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
249
                         DUP 6 ;
250
                         NONE (pair bytes (pair (map nat nat) timestamp)) ;
251
                         DUP 3 ;
252
                         UPDATE ;
253
                         DIP { DIG 5 ; DROP } ;
254
                         DUG 5 ;
255
                         DROP ;
256
                         PAIR 8 ;
257
                         DIG 1 ;
258
                         PAIR }
259
                       { UNPAIR ;
260
                         SWAP ;
261
                         DUP 7 ;
262
                         DUP 3 ;
263
                         GET ;
264
                         IF_NONE
265
                           { PUSH nat 0 }
266
                           { DUP ; CDR ; CAR ; DUP 3 ; GET ; IF_NONE { PUSH nat 0 } {} ; SWAP ; DROP } ;
267
                         DUP 13 ;
268
                         DUP 7 ;
269
                         EXEC ;
270
                         NOT ;
271
                         IF
272
                           { PUSH string "r2" ;
273
                             PUSH string "INVALID_CONDITION" ;
274
                             PAIR ;
275
                             FAILWITH }
276
                           {} ;
277
                         DUP 8 ;
278
                         DUP 4 ;
279
                         MEM ;
280
                         NOT ;
281
                         IF { PUSH string "POLL_NOT_FOUND" ; FAILWITH } {} ;
282
                         DUP 10 ;
283
                         SENDER ;
284
                         GET ;
285
                         IF_NONE
286
                           { PUSH bool False }
287
                           { DUP ; DUP 5 ; MEM ; SWAP ; DROP } ;
288
                         IF { PUSH string "CANNOT_RESPOND_TWICE" ; FAILWITH } {} ;
289
                         DUP 10 ;
290
                         SENDER ;
291
                         MEM ;
292
                         IF
293
                           { DUP 10 ;
294
                             DUP 11 ;
295
                             SENDER ;
296
                             GET ;
297
                             IF_NONE
298
                               { PUSH string "responder" ;
299
                                 PUSH string "ASSET_NOT_FOUND" ;
300
                                 PAIR ;
301
                                 FAILWITH }
302
                               {} ;
303
                             PUSH bool True ;
304
                             DUP 6 ;
305
                             UPDATE ;
306
                             SOME ;
307
                             SENDER ;
308
                             UPDATE ;
309
                             DIP { DIG 9 ; DROP } ;
310
                             DUG 9 }
311
                           { DUP 10 ;
312
                             EMPTY_SET nat ;
313
                             PUSH bool True ;
314
                             DUP 6 ;
315
                             UPDATE ;
316
                             SOME ;
317
                             SENDER ;
318
                             UPDATE ;
319
                             DIP { DIG 9 ; DROP } ;
320
                             DUG 9 } ;
321
                         DUP 8 ;
322
                         DUP 9 ;
323
                         DUP 5 ;
324
                         GET ;
325
                         IF_NONE
326
                           { PUSH string "poll" ;
327
                             PUSH string "ASSET_NOT_FOUND" ;
328
                             PAIR ;
329
                             FAILWITH }
330
                           {} ;
331
                         UNPAIR ;
332
                         SWAP ;
333
                         UNPAIR ;
334
                         DROP ;
335
                         DUP 11 ;
336
                         DUP 7 ;
337
                         GET ;
338
                         IF_NONE
339
                           { PUSH string "poll" ;
340
                             PUSH string "ASSET_NOT_FOUND" ;
341
                             PAIR ;
342
                             FAILWITH }
343
                           {} ;
344
                         CDR ;
345
                         CAR ;
346
                         PUSH nat 1 ;
347
                         DUP 6 ;
348
                         ADD ;
349
                         SOME ;
350
                         DUP 7 ;
351
                         UPDATE ;
352
                         PAIR ;
353
                         SWAP ;
354
                         PAIR ;
355
                         SOME ;
356
                         DUP 5 ;
357
                         UPDATE ;
358
                         DIP { DIG 7 ; DROP } ;
359
                         DUG 7 ;
360
                         NIL operation ;
361
                         NIL operation ;
362
                         DUP 14 ;
363
                         ITER { CONS } ;
364
                         DUP 4 ;
365
                         DUP 6 ;
366
                         PAIR ;
367
                         SENDER ;
368
                         PAIR ;
369
                         EMIT %Response (pair (address %responder_addr)
370
                                              (pair (nat %poll_id) (nat %response))) ;
371
                         CONS ;
372
                         ITER { CONS } ;
373
                         DIP { DIG 11 ; DROP } ;
374
                         DUG 11 ;
375
                         DROP 3 ;
376
                         PAIR 8 ;
377
                         DIG 1 ;
378
                         PAIR } } } } ;
379
         DIP { DROP } } ;
380
  view "get_responses" nat (map nat nat)
381
        { UNPAIR ;
382
          DIP { CDR ; CDR ; CDR ; CDR ; UNPAIR ; SWAP ; DROP } ;
383
          UNIT ;
384
          DUP 3 ;
385
          DUP 3 ;
386
          GET ;
387
          IF_NONE
388
            { PUSH string "poll" ; PUSH string "ASSET_NOT_FOUND" ; PAIR ; FAILWITH }
389
            {} ;
390
          CDR ;
391
          CAR ;
392
          SWAP ;
393
          DROP ;
394
          DIP { DROP 2 } } ;
395
  view "already_responded" nat bool
396
        { UNPAIR ;
397
          DIP { CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; UNPAIR ; SWAP ; DROP } ;
398
          UNIT ;
399
          DUP 3 ;
400
          SOURCE ;
401
          GET ;
402
          IF_NONE { PUSH bool False } { DUP ; DUP 4 ; MEM ; SWAP ; DROP } ;
403
          SWAP ;
404
          DROP ;
405
          DIP { DROP 2 } } }