BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Ghostnet
  • /
  • KT1Tmo6...1pTj
operations (125)Storage Code Interact Tokens Fork Statistics Details
Latest
​x
268
 
1
parameter (or
2
            (or
3
              (pair %createBox (mutez %price)
4
                               (list %tokens (pair (nat %amount)
5
                                                  (pair (address %cAddress)
6
                                                        (nat %tokenId)))))
7
              (unit %getFunds))
8
            (or (nat %openBox) (or (unit %sendTip) (address %update_admin))));
9
storage (pair
10
          (pair (address %admin)
11
                (pair (nat %boxCounter)
12
                      (big_map %boxes nat
13
                                      (pair (address %owner)
14
                                            (pair (mutez %price)
15
                                                  (list %tokens (pair (nat %amount)
16
                                                                     (pair
17
                                                                       (address %cAddress)
18
                                                                       (nat %tokenId)))))))))
19
          (pair (nat %fee)
20
                (pair (nat %supporterCounter)
21
                      (big_map %supporters nat
22
                                           (pair (mutez %amount) (address %supporter))))));
23
code { UNPAIR ;
24
       IF_LEFT
25
         { IF_LEFT
26
             { DUP ;
27
               CDR ;
28
               NIL operation ;
29
               SWAP ;
30
               ITER { DUP ;
31
                      DUG 2 ;
32
                      GET 3 ;
33
                      CONTRACT %transfer (list (pair (address %from_)
34
                                                    (list %txs (pair (address %to_)
35
                                                                    (pair
36
                                                                      (nat %token_id)
37
                                                                      (nat %amount)))))) ;
38
                      IF_NONE { PUSH int 80 ; FAILWITH } {} ;
39
                      PUSH mutez 0 ;
40
                      NIL (pair address (list (pair address (pair nat nat)))) ;
41
                      NIL (pair address (pair nat nat)) ;
42
                      DIG 5 ;
43
                      DUP ;
44
                      CAR ;
45
                      SWAP ;
46
                      GET 4 ;
47
                      SELF_ADDRESS ;
48
                      PAIR 3 ;
49
                      CONS ;
50
                      SENDER ;
51
                      PAIR ;
52
                      CONS ;
53
                      TRANSFER_TOKENS ;
54
                      CONS } ;
55
               SWAP ;
56
               UNPAIR ;
57
               SENDER ;
58
               PAIR 3 ;
59
               DUP 3 ;
60
               UNPAIR ;
61
               UNPAIR ;
62
               SWAP ;
63
               UNPAIR ;
64
               SWAP ;
65
               DIG 4 ;
66
               SOME ;
67
               DIG 6 ;
68
               CAR ;
69
               GET 3 ;
70
               UPDATE ;
71
               SWAP ;
72
               PUSH nat 1 ;
73
               ADD ;
74
               PAIR ;
75
               SWAP ;
76
               PAIR ;
77
               PAIR ;
78
               SWAP }
79
             { DROP ;
80
               DUP ;
81
               CAR ;
82
               CAR ;
83
               SENDER ;
84
               COMPARE ;
85
               EQ ;
86
               IF
87
                 {}
88
                 { PUSH string "WrongCondition: sp.sender == self.data.admin" ; FAILWITH } ;
89
               DUP ;
90
               CAR ;
91
               CAR ;
92
               CONTRACT unit ;
93
               IF_NONE { PUSH int 113 ; FAILWITH } {} ;
94
               NIL operation ;
95
               SWAP ;
96
               BALANCE ;
97
               UNIT ;
98
               TRANSFER_TOKENS ;
99
               CONS } }
100
         { IF_LEFT
101
             { DUP ;
102
               DUP 3 ;
103
               CAR ;
104
               GET 3 ;
105
               COMPARE ;
106
               GT ;
107
               IF
108
                 {}
109
                 { PUSH string "WrongCondition: self.data.boxCounter > params" ;
110
                   FAILWITH } ;
111
               SWAP ;
112
               DUP ;
113
               DUG 2 ;
114
               CAR ;
115
               GET 4 ;
116
               SWAP ;
117
               DUP ;
118
               DUG 2 ;
119
               GET ;
120
               IF_NONE { PUSH int 100 ; FAILWITH } {} ;
121
               GET 3 ;
122
               AMOUNT ;
123
               COMPARE ;
124
               GE ;
125
               IF
126
                 {}
127
                 { PUSH string "WrongCondition: sp.amount >= self.data.boxes[params].price" ;
128
                   FAILWITH } ;
129
               NIL operation ;
130
               DUP 3 ;
131
               CAR ;
132
               GET 4 ;
133
               DUP 3 ;
134
               GET ;
135
               IF_NONE { PUSH int 102 ; FAILWITH } {} ;
136
               GET 4 ;
137
               ITER { DUP ;
138
                      DUG 2 ;
139
                      GET 3 ;
140
                      CONTRACT %transfer (list (pair (address %from_)
141
                                                    (list %txs (pair (address %to_)
142
                                                                    (pair
143
                                                                      (nat %token_id)
144
                                                                      (nat %amount)))))) ;
145
                      IF_NONE { PUSH int 80 ; FAILWITH } {} ;
146
                      PUSH mutez 0 ;
147
                      NIL (pair address (list (pair address (pair nat nat)))) ;
148
                      NIL (pair address (pair nat nat)) ;
149
                      DIG 5 ;
150
                      DUP ;
151
                      CAR ;
152
                      SWAP ;
153
                      GET 4 ;
154
                      SENDER ;
155
                      PAIR 3 ;
156
                      CONS ;
157
                      SELF_ADDRESS ;
158
                      PAIR ;
159
                      CONS ;
160
                      TRANSFER_TOKENS ;
161
                      CONS } ;
162
               DUP 3 ;
163
               CAR ;
164
               GET 4 ;
165
               DUP 3 ;
166
               GET ;
167
               IF_NONE { PUSH int 106 ; FAILWITH } {} ;
168
               CAR ;
169
               CONTRACT unit ;
170
               IF_NONE { PUSH int 106 ; FAILWITH } {} ;
171
               PUSH nat 100 ;
172
               DIG 4 ;
173
               DUP ;
174
               GET 3 ;
175
               SWAP ;
176
               DUP ;
177
               DUG 6 ;
178
               CAR ;
179
               GET 4 ;
180
               DUP 6 ;
181
               GET ;
182
               IF_NONE { PUSH int 106 ; FAILWITH } {} ;
183
               GET 3 ;
184
               MUL ;
185
               EDIV ;
186
               IF_NONE { PUSH int 106 ; FAILWITH } {} ;
187
               CAR ;
188
               DUP 5 ;
189
               CAR ;
190
               GET 4 ;
191
               DUP 5 ;
192
               GET ;
193
               IF_NONE { PUSH int 106 ; FAILWITH } {} ;
194
               GET 3 ;
195
               SUB_MUTEZ ;
196
               IF_NONE { PUSH int 106 ; FAILWITH } {} ;
197
               UNIT ;
198
               TRANSFER_TOKENS ;
199
               CONS ;
200
               DIG 2 ;
201
               UNPAIR ;
202
               UNPAIR ;
203
               SWAP ;
204
               UNPAIR ;
205
               SWAP ;
206
               NONE (pair address (pair mutez (list (pair nat (pair address nat))))) ;
207
               DIG 6 ;
208
               UPDATE ;
209
               SWAP ;
210
               PAIR ;
211
               SWAP ;
212
               PAIR ;
213
               PAIR ;
214
               SWAP }
215
             { IF_LEFT
216
                 { DROP ;
217
                   PUSH mutez 1 ;
218
                   PUSH nat 100000 ;
219
                   MUL ;
220
                   AMOUNT ;
221
                   COMPARE ;
222
                   GE ;
223
                   IF
224
                     {}
225
                     { PUSH string "WrongCondition: sp.amount >= sp.mul(sp.set_type_expr(100000, sp.TNat), sp.mutez(1))" ;
226
                       FAILWITH } ;
227
                   SENDER ;
228
                   AMOUNT ;
229
                   PAIR ;
230
                   SWAP ;
231
                   DUP ;
232
                   DUG 2 ;
233
                   DUP ;
234
                   GET 6 ;
235
                   DIG 2 ;
236
                   SOME ;
237
                   DIG 3 ;
238
                   GET 5 ;
239
                   UPDATE ;
240
                   UPDATE 6 ;
241
                   DUP ;
242
                   GET 5 ;
243
                   PUSH nat 1 ;
244
                   ADD ;
245
                   UPDATE 5 }
246
                 { SWAP ;
247
                   DUP ;
248
                   DUG 2 ;
249
                   CAR ;
250
                   CAR ;
251
                   SENDER ;
252
                   COMPARE ;
253
                   EQ ;
254
                   IF
255
                     {}
256
                     { PUSH string "WrongCondition: sp.sender == self.data.admin" ;
257
                       FAILWITH } ;
258
                   SWAP ;
259
                   UNPAIR ;
260
                   CDR ;
261
                   DIG 2 ;
262
                   PAIR ;
263
                   PAIR } ;
264
               NIL operation } } ;
265
       NIL operation ;
266
       SWAP ;
267
       ITER { CONS } ;
268
       PAIR }