BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Shadownet
  • /
  • KT1UQ28...q6QB
operations (1)Storage Code Interact Tokens Fork Views Statistics Details
Latest
​x
175
 
1
{ parameter (or (key_hash %claim_voting_rights)
2
                (pair %propose_voting_key address (pair bool (option (set address))))) ;
3
  storage (pair
4
            (big_map %voting_delegations address
5
                                         (map key_hash
6
                                              (pair bool (option (set address)))))
7
            (big_map %proposals (pair address key_hash)
8
                                (pair bool (option (set address))))) ;
9
  code { LAMBDA
10
           unit
11
           unit
12
           { DROP ;
13
             PUSH string "TEZ_IN_TRANSACTION_DISALLOWED" ;
14
             PUSH mutez 0 ;
15
             AMOUNT ;
16
             COMPARE ;
17
             EQ ;
18
             IF { DROP ; UNIT } { FAILWITH } } ;
19
         SWAP ;
20
         UNPAIR ;
21
         IF_LEFT
22
           { UNIT ;
23
             DIG 3 ;
24
             SWAP ;
25
             EXEC ;
26
             DROP ;
27
             SENDER ;
28
             DUP 3 ;
29
             CDR ;
30
             NONE (pair bool (option (set address))) ;
31
             DUP 4 ;
32
             DUP 4 ;
33
             PAIR ;
34
             GET_AND_UPDATE ;
35
             DUP 5 ;
36
             CAR ;
37
             DUP 4 ;
38
             GET ;
39
             IF_NONE { EMPTY_MAP key_hash (pair bool (option (set address))) } {} ;
40
             SWAP ;
41
             DIG 4 ;
42
             UPDATE ;
43
             SWAP ;
44
             DIG 3 ;
45
             CAR ;
46
             PUSH nat 0 ;
47
             DUP 4 ;
48
             SIZE ;
49
             COMPARE ;
50
             EQ ;
51
             IF
52
               { DIG 2 ; DROP ; NONE (map key_hash (pair bool (option (set address)))) }
53
               { DIG 2 ; SOME } ;
54
             DIG 3 ;
55
             UPDATE ;
56
             PAIR }
57
           { UNPAIR 3 ;
58
             UNIT ;
59
             DIG 5 ;
60
             SWAP ;
61
             EXEC ;
62
             DROP ;
63
             SENDER ;
64
             DUP ;
65
             PACK ;
66
             PUSH bytes 0x00 ;
67
             DUP 2 ;
68
             PUSH nat 1 ;
69
             PUSH nat 6 ;
70
             SLICE ;
71
             IF_NONE { PUSH string "SLICE" ; FAILWITH } {} ;
72
             COMPARE ;
73
             EQ ;
74
             IF {} { PUSH string "NOT_IMPLICIT_ADDRESS" ; FAILWITH } ;
75
             NIL bytes ;
76
             DUP 2 ;
77
             PUSH nat 21 ;
78
             PUSH nat 7 ;
79
             SLICE ;
80
             IF_NONE { PUSH string "SLICE" ; FAILWITH } {} ;
81
             CONS ;
82
             PUSH bytes 0x00000015 ;
83
             CONS ;
84
             SWAP ;
85
             PUSH nat 2 ;
86
             PUSH nat 0 ;
87
             SLICE ;
88
             IF_NONE { PUSH string "SLICE" ; FAILWITH } {} ;
89
             CONS ;
90
             CONCAT ;
91
             UNPACK key_hash ;
92
             PUSH string "FAILED_TO_CAST_ADDRESS_TO_KEY_HASH" ;
93
             SWAP ;
94
             IF_NONE { FAILWITH } { SWAP ; DROP } ;
95
             PUSH string "KEY_HASH_NOT_EQUAL_TO_SOURCE_ADDRESS" ;
96
             DIG 2 ;
97
             DUP 3 ;
98
             IMPLICIT_ACCOUNT ;
99
             ADDRESS ;
100
             COMPARE ;
101
             EQ ;
102
             IF { DROP } { FAILWITH } ;
103
             DUP 4 ;
104
             IF_NONE
105
               { DUP 3 ;
106
                 IF
107
                   { DIG 3 ; DIG 3 ; PAIR ; SOME }
108
                   { DIG 2 ; DIG 3 ; DROP 2 ; NONE (pair bool (option (set address))) } }
109
               { DROP ; DIG 3 ; DIG 3 ; PAIR ; SOME } ;
110
             DUP 4 ;
111
             CAR ;
112
             DUP 4 ;
113
             GET ;
114
             IF_NONE
115
               { NONE (map key_hash (pair bool (option (set address)))) }
116
               { DUP ;
117
                 DUP 4 ;
118
                 MEM ;
119
                 IF
120
                   { SOME }
121
                   { DROP ; NONE (map key_hash (pair bool (option (set address)))) } } ;
122
             IF_NONE
123
               { DUP 4 ; CDR ; SWAP ; DIG 2 ; DIG 3 ; PAIR ; UPDATE ; DUP 2 ; CAR }
124
               { DUP 5 ; CDR ; DUP 6 ; CAR ; DIG 2 ; DIG 3 ; DIG 4 ; UPDATE ; SOME ; DIG 3 ; UPDATE } ;
125
             DIG 2 ;
126
             SWAP ;
127
             UPDATE 1 ;
128
             SWAP ;
129
             UPDATE 2 } ;
130
         NIL operation ;
131
         PAIR } ;
132
  view "is_voting_key_of" (pair address (pair key_hash (option address))) bool
133
        { UNPAIR ;
134
          UNPAIR 3 ;
135
          DIG 3 ;
136
          CAR ;
137
          SWAP ;
138
          GET ;
139
          IF_NONE
140
            { DROP 2 ; PUSH bool False }
141
            { SWAP ;
142
              GET ;
143
              SWAP ;
144
              IF_NONE
145
                { IF_NONE { PUSH bool False } { DROP ; PUSH bool True } }
146
                { SWAP ;
147
                  IF_NONE
148
                    { DROP ; PUSH bool False }
149
                    { UNPAIR ;
150
                      IF
151
                        { IF_NONE { DROP ; PUSH bool True } { SWAP ; MEM } }
152
                        { IF_NONE { DROP ; PUSH bool True } { SWAP ; MEM ; NOT } } } } } } ;
153
  view "list_voters" (pair address (option address)) (list key_hash)
154
        { UNPAIR ;
155
          UNPAIR ;
156
          DIG 2 ;
157
          CAR ;
158
          SWAP ;
159
          GET ;
160
          SWAP ;
161
          IF_NONE
162
            { IF_NONE { NIL key_hash } { NIL key_hash ; SWAP ; ITER { CAR ; CONS } } }
163
            { SWAP ;
164
              IF_NONE
165
                { DROP ; NIL key_hash }
166
                { NIL key_hash ;
167
                  SWAP ;
168
                  ITER { UNPAIR ;
169
                         SWAP ;
170
                         UNPAIR ;
171
                         IF
172
                           { IF_NONE { CONS } { DUP 4 ; MEM ; IF { CONS } { DROP } } }
173
                           { IF_NONE { CONS } { DUP 4 ; MEM ; IF { DROP } { CONS } } } } ;
174
                  SWAP ;
175
                  DROP } } } }