-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathtest2.fif
More file actions
140 lines (85 loc) · 2.75 KB
/
test2.fif
File metadata and controls
140 lines (85 loc) · 2.75 KB
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
#!/usr/bin/env fift -s
"TonUtil.fif" include
"Asm.fif" include
"owner.addr" load-address 2dup 2constant owner_addr
variable storage
variable exit_code
{ storage ! exit_code ! } : finish_run
{ exit_code @ 0 = not abort"command failed" } : exit_grace
{
."Exit code " exit_code @ . cr
."Updated storage: " cr storage @ <s csr. cr
."Stack:" cr .s
} : print_result
"token.fif" include =: code
100000000000000000000000000 =: total_supply
<b total_supply Gram, b> <s <b owner_addr addr, b> <s dictnew 264 sdict! drop =: balances
dictnew =: allowed
// init storage
<b "RUB" $len 8 u,
"RUB" $,
"R" $len 8 u,
"R" $,
18 8 u,
total_supply Gram,
balances dict,
allowed dict,
0 1 u,
b> storage !
// receive external - init
<b b> <s
124838 code <s storage @ runvm
finish_run print_result exit_grace
// action = 0 - just accept grams
0
<b 0 1 i, b{000100} s, owner_addr addr, 3 Gram, b>
<b 0 32 u, b> <s
90191 code <s storage @ runvm
finish_run print_result exit_grace
// action = 1 - transfer
0
<b 0 1 i, b{000100} s, owner_addr addr, 3 Gram, b>
<b 1 32 u, 0 64 u, owner_addr addr, 1 Gram, b> <s
90191 code <s storage @ runvm
finish_run print_result exit_grace
// action = 3 - approve
0
<b 0 1 i, b{000100} s, owner_addr addr, 3 Gram, b>
<b 3 32 u, 0 64 u, owner_addr addr, 3000000000000 Gram, b> <s
90191 code <s storage @ runvm
finish_run print_result exit_grace
// action = 4 - increase approve
0
<b 0 1 i, b{000100} s, owner_addr addr, 3 Gram, b>
<b 4 32 u, 0 64 u, 0 1 u, owner_addr addr, 1000000000000 Gram, b> <s
90191 code <s storage @ runvm
finish_run print_result exit_grace
// action = 4 - decrease approve
0
<b 0 1 i, b{000100} s, owner_addr addr, 3 Gram, b>
<b 4 32 u, 0 64 u, 1 1 u, owner_addr addr, 500000000000 Gram, b> <s
90191 code <s storage @ runvm
finish_run print_result exit_grace
// action = 2 - transfer from
0
<b 0 1 i, b{000100} s, owner_addr addr, 3 Gram, b>
<b owner_addr addr, owner_addr addr, 2 Gram, b> =: REF
<b 2 32 u, 0 64 u, REF ref, b> <s
90191 code <s storage @ runvm
finish_run print_result exit_grace
// action = 2 - transfer from hex
0
<b 0 1 i, b{000100} s, owner_addr addr, 3 Gram, b>
<b "F553F6A10CFBCE36F300B2BFAC4461DDF2B0D7BD78316F906085A749DC1B0FE3D6F553F6A10CFBCE36F3477359400" $>s s, b> =: REF
<b 0 32 u, "00000002000000000000000000B2BFAC4461DDF2B0D7BD78316F906085A749DC1B0FE3D6" $>s s, REF ref, b> <s
90191 code <s storage @ runvm
finish_run print_result exit_grace
// balance_of owner
<b owner_addr addr, b> <s
112966 code <s storage @ runvm
finish_run print_result exit_grace
// allowance owner
<b owner_addr addr, b> <s
<b owner_addr addr, b> <s
82759 code <s storage @ runvm
finish_run print_result exit_grace