Ton

Форк
0
/
gen-zerostate.fif 
227 строк · 7.3 Кб
1
#!/usr/bin/create-state -s
2
"TonUtil.fif" include
3
"Asm.fif" include
4
"Lists.fif" include
5

6
def? $1 { @' $1 } { "" } cond constant suffix 
7
{ suffix $+ } : +suffix
8
256 1<<1- 15 / constant AllOnes
9

10
wc_master setworkchain
11
13 setglobalid   // negative value means a test instance of the blockchain
12
0x11EF55AA default-subwallet-id!  // use this subwallet id in user wallets by default
13

14
// Initial state of Workchain 0 (Basic workchain)
15

16
0 mkemptyShardState 
17

18
cr ."initial basechain state is:" cr dup <s csr. cr
19
dup dup 31 boc+>B dup Bx. cr
20
dup "basestate0" +suffix +".boc" tuck B>file
21
."(Initial basechain state saved to file " type .")" cr
22
Bhashu dup =: basestate0_fhash
23
."file hash=" dup 64x. space 256 u>B dup B>base64url type cr
24
"basestate0" +suffix +".fhash" B>file
25
hashu dup =: basestate0_rhash
26
."root hash=" dup 64x. space 256 u>B dup B>base64url type cr
27
"basestate0" +suffix +".rhash" B>file
28

29
// root-hash file-hash start-at actual-min-split min-split-depth max-split-depth wc-id
30
basestate0_rhash basestate0_fhash now 0 4 8 0 add-std-workchain
31
config.workchains!
32

33
/*
34
 *
35
 *  Initial wallets (test)
36
 *
37
 */
38

39
// Stage 1 wallets
40

41
PK'Puasxr0QfFZZnYISRphVse7XHKfW7pZU5SJarVHXvQ+rpzkD rwallet-init-pubkey !
42
-86400 rwallet-start-at +!
43

44
{ swap create-wallet3 } : stage1
45
{ bl word $>GR bl word parse-pubkey } : parse-amount-pubkey
46
{ parse-amount-pubkey stage1 } : StA
47

48
// test
49
StA 1001 PuZ8WoEOTgSR8-HopmCIVlOVSL94tNn9zgraiJqMk1SnioEQ
50

51
// Stage 2 wallets
52

53
{ swap create-wallet0 } : stage2
54
{ parse-amount-pubkey stage2 } : StB
55

56
// test
57
StB 999. PubMMGvqM08jx_6BibYldMclwjl-D88r7-u0_IEcDXHA30-G
58

59
// Lockdowns
60

61
{ swap create-wallet3b } : stage3
62
{ parse-amount-pubkey stage3 } : StC
63

64
// SmartContract #1 (Advanced wallet)
65

66
// Create new advanced wallet; code adapted from `auto/wallet3-code.fif`
67
WCode3 // code
68
<b 0 32 u, 0 32 u,  // subwallet-id=0
69
   "main-wallet" +suffix +".pk" load-generate-keypair drop
70
   B, 
71
b> // data
72
empty_cell // libs
73
GR$4999999000 allocated-balance - // balance
74
0 // split_depth
75
0 // ticktock
76
AllOnes 1 * // address
77
6 // mode: create+setaddr
78
register_smc
79
dup make_special dup constant smc1_addr  
80
Masterchain over 
81
2dup ."main wallet address = " .addr cr 2dup 6 .Addr cr
82
"main-wallet" +suffix +".addr" save-address-verbose
83

84
/*
85
 *
86
 * SmartContract #4 (elector)
87
 *
88
 */
89
"auto/elector-code.fif" include   // code in separate source file
90
<b 0 1 1+ 1+ 4 + 32 + u, 0 256 u, b>  // data: dict dict dict grams uint32 uint256
91
empty_cell  // libraries
92
GR$500  // balance: 500 grams
93
0 // split_depth
94
2 // ticktock: tick
95
AllOnes 3 * // address: -1:333...333
96
6 // mode: create + setaddr
97
register_smc
98
dup make_special dup constant smc4_addr dup constant elector_addr
99
Masterchain swap
100
."elector smart contract address = " 2dup .addr cr 2dup 7 .Addr cr
101
"elector" +suffix +".addr" save-address-verbose
102

103
/*
104
 *
105
 * Configuration Parameters
106
 *
107
 */
108
// version capabilities
109
1 capCreateStats capBounceMsgBody or capReportVersion or capShortDequeue or config.version!
110
// max-validators max-main-validators min-validators
111
// 9 4 1 config.validator_num!
112
1000 100 13 config.validator_num!
113
// min-stake max-stake min-total-stake max-factor
114
GR$10000 GR$10000000 GR$500000 sg~3 config.validator_stake_limits!
115
// elected-for elect-start-before elect-end-before stakes-frozen-for
116
// 400000 200000 4000 400000 config.election_params!
117
// 4000 2000 500 1000 config.election_params!  // DEBUG
118
65536 32768 8192 32768 config.election_params!  // TestNet DEBUG
119
// config-addr = -1:5555...5555
120
AllOnes 5 * constant config_addr
121
config_addr config.config_smc!
122
// elector-addr
123
elector_addr config.elector_smc!
124

125
// 1 sg* 100 sg* 1000 sg* 1000000 sg* config.storage_prices!  // old values (too high)
126
1 500 1000 500000 config.storage_prices!
127
config.special!
128

129
// gas_price gas_limit special_gas_limit gas_credit block_gas_limit freeze_due_limit delete_due_limit flat_gas_limit flat_gas_price -- 
130
1000 sg* 1 *M dup 10000 10 *M GR$0.1 GR$1.0 1000 1000000 config.gas_prices!
131
10000 sg* 1 *M 10 *M 10000 10 *M GR$0.1 GR$1.0 1000 10000000 config.mc_gas_prices!
132
// lump_price bit_price cell_price ihr_factor first_frac next_frac
133
1000000 1000 sg* 100000 sg* 3/2 sg*/ 1/3 sg*/ 1/3 sg*/ config.fwd_prices!
134
10000000 10000 sg* 1000000 sg* 3/2 sg*/ 1/3 sg*/ 1/3 sg*/ config.mc_fwd_prices!
135
// mc-cc-lifetime sh-cc-lifetime sh-val-lifetime sh-val-num mc-shuffle
136
250 250 1000 7 true config.catchain_params!
137
// round-candidates next-cand-delay-ms consensus-timeout-ms fast-attempts attempt-duration cc-max-deps max-block-size max-collated-size new-cc-ids
138
3 2000 16000 3 8 4 2 *Mi 2 *Mi true config.consensus_params!
139

140

141
128 *Ki 512 *Ki 1 *Mi triple      // [ underload soft hard ] : block bytes limit
142
2000000 10000000 20000000 triple  // gas limits
143
1000 5000 10000 triple            // lt limits
144
triple dup untriple config.mc_block_limits!
145
untriple config.block_limits!
146

147
GR$160 GR$100 config.block_create_fees!
148
// smc1_addr config.collector_smc!
149
smc1_addr config.minter_smc!
150

151
1000000000000 -17 of-cc 666666666666 239 of-cc cc+ config.to_mint!
152

153
( 0 1 9 10 12 14 15 16 17 18 20 21 22 23 24 25 28 34 ) config.mandatory_params!
154
( -999 -1000 -1001 0 1 9 10 12 14 15 16 17 32 34 36 ) config.critical_params!
155

156
// [ min_tot_rounds max_tot_rounds min_wins max_losses min_store_sec max_store_sec bit_pps cell_pps ]
157
// first for ordinary proposals, then for critical proposals
158
_( 2 3 2 2 1000000 10000000 1 500 )
159
_( 4 7 4 2 5000000 20000000 2 1000 )
160
config.param_proposals_setup!
161

162
// deposit bit_pps cell_pps
163
GR$100 1 500 config.complaint_prices!
164

165
{ file>B { dup Blen } { 
166
    32 B| swap dup ."Validator public key = " Bx. cr
167
    17 add-validator
168
  } while drop
169
} : load-keys-from-file
170

171
false =: keys-from-file
172
keys-from-file
173
{ "validator-keys" +suffix +".pub" load-keys-from-file
174
} {
175
  VPK'xrQTSOn2F9RjLgeHdSS0uIvde4Lv49l+/KXfJe0I7wYatz6e
176
  B64{8E9AbL8blhRiBUoZt/b/vIo3+iZzglLKiL8MTf0g6Sg=} 256 B>u@
177
  1 add-adnl-validator
178
} cond
179
// newkeypair nip dup ."Validator #1 public key = " Bx. cr 
180
// 17 add-validator
181
// newkeypair nip dup ."Validator #2 public key = " Bx. cr
182
// 239 add-validator
183

184
3000 =: orig_vset_valid_for  // original validator set valid 3000 seconds
185
now dup orig_vset_valid_for + 0 config.validators!
186

187
/*
188
 *
189
 * SmartContract #5 (Configuration smart contract)
190
 *
191
 */
192
"auto/config-code.fif" include   // code in separate source file
193
<b configdict ref,  // initial configuration
194
   0 32 u,          // seqno
195
   "config-master" +suffix +".pk" load-generate-keypair drop
196
   B,
197
   dictnew dict,   // vote dict
198
b> // data
199
empty_cell  // libraries
200
GR$500  // balance
201
0 1 config_addr 6 register_smc  // tock
202
dup set_config_smc
203
Masterchain swap
204
."config smart contract address = " 2dup .addr cr 2dup 7 .Addr cr
205
"config-master" +suffix +".addr" save-address-verbose
206
// Other data
207
 
208
/*
209
 *
210
 *  Create state
211
 *
212
 */
213

214
create_state
215
cr cr ."new state is:" cr dup <s csr. cr
216
dup 31 boc+>B dup Bx. cr
217
dup "zerostate" +suffix +".boc" tuck B>file
218
."(Initial masterchain state saved to file " type .")" cr
219
Bhashu dup =: zerostate_fhash
220
."file hash= " dup X. space 256 u>B dup B>base64url type cr
221
"zerostate" +suffix +".fhash" B>file
222
hashu dup =: zerostate_rhash ."root hash= " dup X. space 256 u>B dup B>base64url type cr
223
"zerostate" +suffix +".rhash" B>file
224
basestate0_rhash ."Basestate0 root hash= " dup X. space 256 u>B B>base64url type cr
225
basestate0_fhash ."Basestate0 file hash= " dup X. space 256 u>B B>base64url type cr
226
zerostate_rhash ."Zerostate root hash= " dup X. space 256 u>B B>base64url type cr
227
zerostate_fhash ."Zerostate file hash= " dup X. space 256 u>B B>base64url type cr
228

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.