-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdev-fund.tz
168 lines (168 loc) · 10.7 KB
/
dev-fund.tz
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
parameter (or (or (unit %default) (or (pair %send mutez address) (pair %sendTokens nat address))) (or (address %setAdministratorContract) (or (option %setDelegate key_hash) (address %setGovernorContract))));
storage (pair (address %administratorContractAddress) (pair (address %governorContractAddress) (address %tokenContractAddress)));
code
{
UNPAIR; # @parameter : @storage
IF_LEFT
{
IF_LEFT
{
DROP; # @storage
# == default == # @storage
NIL operation; # list operation : @storage
}
{
IF_LEFT
{
SWAP; # @storage : @parameter%send
# == send ==
# sp.verify(sp.sender == self.data.governorContractAddress, message = 4) # @storage : @parameter%send
DUP; # @storage : @storage : @parameter%send
DUG 2; # @storage : @parameter%send : @storage
GET 3; # address : @parameter%send : @storage
SENDER; # address : address : @parameter%send : @storage
COMPARE; # int : @parameter%send : @storage
EQ; # bool : @parameter%send : @storage
IF
{}
{
PUSH int 4; # int : @parameter%send : @storage
FAILWITH; # FAILED
}; # @parameter%send : @storage
# sp.send(sp.snd(params), sp.fst(params)) # @parameter%send : @storage
DUP; # @parameter%send : @parameter%send : @storage
CDR; # address : @parameter%send : @storage
CONTRACT unit; # option (contract unit) : @parameter%send : @storage
IF_SOME
{}
{
UNIT; # unit : @parameter%send : @storage
FAILWITH; # FAILED
}; # @some : @parameter%send : @storage
NIL operation; # list operation : @some : @parameter%send : @storage
SWAP; # @some : list operation : @parameter%send : @storage
DIG 2; # @parameter%send : @some : list operation : @storage
CAR; # mutez : @some : list operation : @storage
UNIT; # unit : mutez : @some : list operation : @storage
TRANSFER_TOKENS; # operation : list operation : @storage
CONS; # list operation : @storage
}
{
SWAP; # @storage : @parameter%sendTokens
# == sendTokens ==
# sp.verify(sp.sender == self.data.governorContractAddress, message = 4) # @storage : @parameter%sendTokens
DUP; # @storage : @storage : @parameter%sendTokens
DUG 2; # @storage : @parameter%sendTokens : @storage
GET 3; # address : @parameter%sendTokens : @storage
SENDER; # address : address : @parameter%sendTokens : @storage
COMPARE; # int : @parameter%sendTokens : @storage
EQ; # bool : @parameter%sendTokens : @storage
IF
{}
{
PUSH int 4; # int : @parameter%sendTokens : @storage
FAILWITH; # FAILED
}; # @parameter%sendTokens : @storage
# sp.transfer(sp.record(from_ = sp.self_address, to_ = sp.snd(params), value = sp.fst(params)), sp.tez(0), sp.contract(sp.TRecord(from_ = sp.TAddress, to_ = sp.TAddress, value = sp.TNat).layout(("from_ as from", ("to_ as to", "value"))), self.data.tokenContractAddress, entry_point='transfer').open_some()) # @parameter%sendTokens : @storage
NIL operation; # list operation : @parameter%sendTokens : @storage
DUP 3; # @storage : list operation : @parameter%sendTokens : @storage
GET 4; # address : list operation : @parameter%sendTokens : @storage
CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))); # option (contract (pair (address %from) (pair (address %to) (nat %value)))) : list operation : @parameter%sendTokens : @storage
IF_SOME
{}
{
UNIT; # unit : list operation : @parameter%sendTokens : @storage
FAILWITH; # FAILED
}; # @some : list operation : @parameter%sendTokens : @storage
PUSH mutez 0; # mutez : @some : list operation : @parameter%sendTokens : @storage
DIG 3; # @parameter%sendTokens : mutez : @some : list operation : @storage
UNPAIR; # nat : address : mutez : @some : list operation : @storage
SWAP; # address : nat : mutez : @some : list operation : @storage
PAIR %to %value; # pair (address %to) (nat %value) : mutez : @some : list operation : @storage
SELF_ADDRESS; # address : pair (address %to) (nat %value) : mutez : @some : list operation : @storage
PAIR %from; # pair (address %from) (pair (address %to) (nat %value)) : mutez : @some : list operation : @storage
TRANSFER_TOKENS; # operation : list operation : @storage
CONS; # list operation : @storage
}; # list operation : @storage
}; # list operation : @storage
}
{
IF_LEFT
{
SWAP; # @storage : @parameter%setAdministratorContract
# == setAdministratorContract ==
# sp.verify(sp.sender == self.data.governorContractAddress, message = 4) # @storage : @parameter%setAdministratorContract
DUP; # @storage : @storage : @parameter%setAdministratorContract
DUG 2; # @storage : @parameter%setAdministratorContract : @storage
GET 3; # address : @parameter%setAdministratorContract : @storage
SENDER; # address : address : @parameter%setAdministratorContract : @storage
COMPARE; # int : @parameter%setAdministratorContract : @storage
EQ; # bool : @parameter%setAdministratorContract : @storage
IF
{}
{
PUSH int 4; # int : @parameter%setAdministratorContract : @storage
FAILWITH; # FAILED
}; # @parameter%setAdministratorContract : @storage
SWAP; # @storage : @parameter%setAdministratorContract
# self.data.administratorContractAddress = params # @storage : @parameter%setAdministratorContract
CDR; # pair (address %governorContractAddress) (address %tokenContractAddress) : @parameter%setAdministratorContract
SWAP; # @parameter%setAdministratorContract : pair (address %governorContractAddress) (address %tokenContractAddress)
PAIR; # pair @parameter%setAdministratorContract (pair (address %governorContractAddress) (address %tokenContractAddress))
NIL operation; # list operation : pair @parameter%setAdministratorContract (pair (address %governorContractAddress) (address %tokenContractAddress))
}
{
IF_LEFT
{
SWAP; # @storage : @parameter%setDelegate
# == setDelegate ==
# sp.verify(sp.sender == self.data.administratorContractAddress, message = 8) # @storage : @parameter%setDelegate
DUP; # @storage : @storage : @parameter%setDelegate
DUG 2; # @storage : @parameter%setDelegate : @storage
CAR; # address : @parameter%setDelegate : @storage
SENDER; # address : address : @parameter%setDelegate : @storage
COMPARE; # int : @parameter%setDelegate : @storage
EQ; # bool : @parameter%setDelegate : @storage
IF
{}
{
PUSH int 8; # int : @parameter%setDelegate : @storage
FAILWITH; # FAILED
}; # @parameter%setDelegate : @storage
# sp.set_delegate(params) # @parameter%setDelegate : @storage
SET_DELEGATE; # operation : @storage
NIL operation; # list operation : operation : @storage
SWAP; # operation : list operation : @storage
CONS; # list operation : @storage
}
{
SWAP; # @storage : @parameter%setGovernorContract
# == setGovernorContract ==
# sp.verify(sp.sender == self.data.governorContractAddress, message = 4) # @storage : @parameter%setGovernorContract
DUP; # @storage : @storage : @parameter%setGovernorContract
DUG 2; # @storage : @parameter%setGovernorContract : @storage
GET 3; # address : @parameter%setGovernorContract : @storage
SENDER; # address : address : @parameter%setGovernorContract : @storage
COMPARE; # int : @parameter%setGovernorContract : @storage
EQ; # bool : @parameter%setGovernorContract : @storage
IF
{}
{
PUSH int 4; # int : @parameter%setGovernorContract : @storage
FAILWITH; # FAILED
}; # @parameter%setGovernorContract : @storage
SWAP; # @storage : @parameter%setGovernorContract
# self.data.governorContractAddress = params # @storage : @parameter%setGovernorContract
UNPAIR; # address : pair (address %governorContractAddress) (address %tokenContractAddress) : @parameter%setGovernorContract
SWAP; # pair (address %governorContractAddress) (address %tokenContractAddress) : address : @parameter%setGovernorContract
CDR; # address : address : @parameter%setGovernorContract
DIG 2; # @parameter%setGovernorContract : address : address
PAIR; # pair @parameter%setGovernorContract address : address
SWAP; # address : pair @parameter%setGovernorContract address
PAIR; # pair address (pair @parameter%setGovernorContract address)
NIL operation; # list operation : pair address (pair @parameter%setGovernorContract address)
}; # list operation : pair address (pair address address)
}; # list operation : pair address (pair address address)
}; # list operation : pair address (pair address address)
PAIR; # pair (list operation) (pair address (pair address address))
};