2019-10-31 22:34:42 +04:00

1720 lines
101 KiB
Plaintext

// automatically generated from `smartcont/stdlib.fc` `smartcont/elector-code.fc`
PROGRAM{
DECLPROC load_data
DECLPROC store_data
DECLPROC unpack_elect
DECLPROC pack_elect
DECLPROC get_validator_conf
DECLPROC send_message_back
DECLPROC return_stake
DECLPROC send_confirmation
DECLPROC send_validator_set_to_config
DECLPROC ~credit_to
DECLPROC process_new_stake
DECLPROC unfreeze_without_bonuses
DECLPROC unfreeze_with_bonuses
DECLPROC unfreeze_all
DECLPROC config_set_confirmed
DECLPROC process_simple_transfer
DECLPROC recover_stake
1666 DECLMETHOD after_code_upgrade
DECLPROC upgrade_code
DECLPROC recv_internal
DECLPROC postpone_elections
DECLPROC compute_total_stake
DECLPROC try_elect
DECLPROC conduct_elections
DECLPROC update_active_vset_id
DECLPROC cell_hash_eq?
DECLPROC validator_set_installed
DECLPROC check_unfreeze
DECLPROC announce_new_elections
DECLPROC run_ticktock
86535 DECLMETHOD active_election_id
87852 DECLMETHOD participates_in
123541 DECLMETHOD participant_list
130944 DECLMETHOD compute_returned_stake
load_data PROC:<{
//
c4 PUSH // _1
CTOS // cs
LDDICT // _4 cs
LDDICT // _4 _6 cs
LDDICT // _4 _6 _8 cs
LDGRAMS // _4 _6 _8 _10 cs
32 LDU // _4 _6 _8 _10 _12 cs
256 LDU // res res res res res res cs
ENDS
}>
store_data PROC:<{
// elect credits past_elect grams active_id active_hash
NEWC // elect credits past_elect grams active_id active_hash _6
s1 s6 XCHG // active_hash credits past_elect grams active_id elect _6
STDICT // active_hash credits past_elect grams active_id _7
s1 s4 XCHG // active_hash active_id past_elect grams credits _7
STDICT // active_hash active_id past_elect grams _8
s1 s2 XCHG // active_hash active_id grams past_elect _8
STDICT // active_hash active_id grams _9
SWAP // active_hash active_id _9 grams
STGRAMS // active_hash active_id _10
32 STU // active_hash _12
256 STU // _14
ENDC // _15
c4 POP
}>
unpack_elect PROC:<{
// elect
CTOS // es
32 LDU // _4 es
32 LDU // _4 _7 es
LDGRAMS // _4 _7 _10 es
LDGRAMS // _4 _7 _10 _12 es
LDDICT // _4 _7 _10 _12 _14 es
1 LDI // _4 _7 _10 _12 _14 _16 es
1 LDI // res res res res res res res es
ENDS
}>
pack_elect PROC:<{
// elect_at elect_close min_stake total_stake members failed finished
NEWC // elect_at elect_close min_stake total_stake members failed finished _7
s1 s7 XCHG // finished elect_close min_stake total_stake members failed elect_at _7
32 STU // finished elect_close min_stake total_stake members failed _9
s1 s5 XCHG // finished failed min_stake total_stake members elect_close _9
32 STU // finished failed min_stake total_stake members _11
s0 s3 XCHG2 // finished failed members total_stake _11 min_stake
STGRAMS // finished failed members total_stake _12
SWAP // finished failed members _12 total_stake
STGRAMS // finished failed members _13
STDICT // finished failed _14
1 STI // finished _16
1 STI // _18
ENDC // _19
}>
get_validator_conf PROC:<{
//
15 PUSHINT // _1=15
CONFIGOPTPARAM // _2
CTOS // cs
32 LDI // _4 cs
32 LDI // _4 _7 cs
32 LDI // _4 _7 _10 cs
32 PLDI // _4 _7 _10 _14
}>
send_message_back PROC:<{
// addr ans_tag query_id body grams mode
0 PUSHINT // addr ans_tag query_id body grams mode _7=0
24 PUSHINT // addr ans_tag query_id body grams mode _7=0 _8=24
NEWC // addr ans_tag query_id body grams mode _7=0 _8=24 _9
6 STU // addr ans_tag query_id body grams mode _7=0 _11
s0 s7 XCHG2 // _7=0 ans_tag query_id body grams mode _11 addr
STSLICER // _7=0 ans_tag query_id body grams mode _12
ROT // _7=0 ans_tag query_id body mode _12 grams
STGRAMS // _7=0 ans_tag query_id body mode _13
s1 s5 XCHG // mode ans_tag query_id body _7=0 _13
107 STU // mode ans_tag query_id body _27
s1 s3 XCHG // mode body query_id ans_tag _27
32 STU // mode body query_id _29
64 STU // mode body msg
OVER // mode body msg body
-1 GTINT // mode body msg _33
IF:<{ // mode body msg
32 STU // mode msg
}>ELSE<{
NIP // mode msg
}>
ENDC // mode _37
SWAP // _37 mode
SENDRAWMSG
}>
return_stake PROC:<{
// addr query_id reason
4000269644 PUSHINT // addr query_id reason _3=4000269644
0 PUSHINT // addr query_id reason _3=4000269644 _4=0
s3 s3 s0 XCHG3
64 PUSHINT // addr _3=4000269644 query_id reason _4=0 _5=64
send_message_back CALLDICT
}>
send_confirmation PROC:<{
// addr query_id comment
4084484172 PUSHINT // addr query_id comment _3=4084484172
1000000000 PUSHINT // addr query_id comment _3=4084484172 _4=1000000000
s3 s3 s0 XCHG3
2 PUSHINT // addr _3=4084484172 query_id comment _4=1000000000 _5=2
send_message_back CALLDICT
}>
send_validator_set_to_config PROC:<{
// config_addr vset query_id
1314280276 PUSHINT // config_addr vset query_id _4=1314280276
0 PUSHINT // config_addr vset query_id _4=1314280276 _5=0
50431 PUSHINT // config_addr vset query_id _4=1314280276 _5=0 _6=50431
NEWC // config_addr vset query_id _4=1314280276 _5=0 _6=50431 _7
17 STU // config_addr vset query_id _4=1314280276 _5=0 _9
s1 s5 XCHG // _5=0 vset query_id _4=1314280276 config_addr _9
256 STU // _5=0 vset query_id _4=1314280276 _11
30 PUSHPOW2 // _5=0 vset query_id _4=1314280276 _11 _14
STGRAMS // _5=0 vset query_id _4=1314280276 _15
s1 s4 XCHG // _4=1314280276 vset query_id _5=0 _15
107 STU // _4=1314280276 vset query_id _29
s1 s3 XCHG // query_id vset _4=1314280276 _29
32 STU // query_id vset _31
s1 s2 XCHG // vset query_id _31
64 STU // vset _33
STREF // msg
ENDC // _35
1 PUSHINT // _35 _36=1
SENDRAWMSG
}>
~credit_to PROC:<{
// credits addr amount
s1 s2 PUSH2
8 PUSHPOW2 // credits addr amount addr credits _5=256
DICTUGET
NULLSWAPIFNOT // credits addr amount val f
IF:<{ // credits addr amount val
LDGRAMS // credits addr amount _18 _17
DROP // credits addr amount _7
ADD // credits addr amount
}>ELSE<{
DROP // credits addr amount
}>
NEWC // credits addr amount _11
SWAP // credits addr _11 amount
STGRAMS // credits addr _12
s0 s2 XCHG
8 PUSHPOW2 // _12 addr credits _13=256
DICTUSETB // credits
}>
process_new_stake PROC:<{
// s_addr msg_value cs query_id
s3 PUSH // s_addr msg_value cs query_id s_addr
REWRITESTDADDR // s_addr msg_value cs query_id src_wc src_addr
c4 PUSH // s_addr msg_value cs query_id src_wc src_addr _8
CTOS // s_addr msg_value cs query_id src_wc src_addr ds
LDDICT // s_addr msg_value cs query_id src_wc src_addr elect ds
OVER // s_addr msg_value cs query_id src_wc src_addr elect ds elect
ISNULL // s_addr msg_value cs query_id src_wc src_addr elect ds _13
s0 s4 XCHG // s_addr msg_value cs query_id _13 src_addr elect ds src_wc
INC // s_addr msg_value cs query_id _13 src_addr elect ds _15
s1 s4 XCHG // s_addr msg_value cs query_id ds src_addr elect _13 _15
OR // s_addr msg_value cs query_id ds src_addr elect _16
IFJMP:<{ // s_addr msg_value cs query_id ds src_addr elect
s3 s5 XCHG
5 BLKDROP // s_addr query_id
0 PUSHINT // s_addr query_id _17=0
return_stake CALLDICT
}> // s_addr msg_value cs query_id ds src_addr elect
s0 s4 XCHG // s_addr msg_value elect query_id ds src_addr cs
256 LDU // s_addr msg_value elect query_id ds src_addr validator_pubkey cs
32 LDU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at cs
32 LDU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor cs
256 LDU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr cs
LDREF // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr _36 cs
SWAP // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr cs _36
CTOS // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr cs _38
9 PUSHPOW2 // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr cs _38 _39=512
PLDSLICEX // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr cs signature
SWAP // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature cs
ENDS
1699500148 PUSHINT // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _42=1699500148
NEWC // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _42=1699500148 _43
32 STU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _45
s4 s(-1) PUXC // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature stake_at _45
32 STU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _47
s3 s(-1) PUXC // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature max_factor _47
32 STU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _49
s6 s(-1) PUXC // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature src_addr _49
256 STU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _51
s2 s(-1) PUXC // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature adnl_addr _51
256 STU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _53
ENDC // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _54
CTOS // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr signature _55
s1 s5 XCPU // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr _55 signature validator_pubkey
CHKSIGNS // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr _56
IFNOTJMP:<{ // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr
s6 s8 XCHG
8 BLKDROP // s_addr query_id
1 PUSHINT // s_addr query_id _57=1
return_stake CALLDICT
}> // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr
OVER
16 PUSHPOW2 // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr max_factor _59=65536
LESS // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr _60
IFJMP:<{ // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr
s6 s8 XCHG
8 BLKDROP // s_addr query_id
6 PUSHINT // s_addr query_id _61=6
return_stake CALLDICT
}> // s_addr msg_value elect query_id ds src_addr validator_pubkey stake_at max_factor adnl_addr
s0 s7 XCHG // s_addr msg_value adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor elect
unpack_elect CALLDICT // s_addr msg_value adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor _146 _147 _148 _149 _150 _151 _152
NIP // s_addr msg_value adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor elect_at elect_close min_stake total_stake members finished
s0 s5 XCHG // s_addr msg_value adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor finished elect_close min_stake total_stake members elect_at
s0 DUMP // s_addr msg_value adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor finished elect_close min_stake total_stake members elect_at
s0 s13 XCHG
1000000000 PUSHINT // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor finished elect_close min_stake total_stake members msg_value _73=1000000000
SUB // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor finished elect_close min_stake total_stake members msg_value
DUP // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor finished elect_close min_stake total_stake members msg_value msg_value
12 LSHIFT# // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor finished elect_close min_stake total_stake members msg_value _76
s3 PUSH // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor finished elect_close min_stake total_stake members msg_value _76 total_stake
LESS // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor finished elect_close min_stake total_stake members msg_value _77
IFJMP:<{ // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor finished elect_close min_stake total_stake members msg_value
s11 s12 XCHG
12 BLKDROP
NIP // s_addr query_id
2 PUSHINT // s_addr query_id _78=2
return_stake CALLDICT
}> // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor finished elect_close min_stake total_stake members msg_value
s2 s2 XCPU // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor finished elect_close min_stake msg_value members total_stake msg_value
ADD // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey stake_at max_factor finished elect_close min_stake msg_value members total_stake
s7 s13 XCPU // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor finished elect_close min_stake msg_value members stake_at elect_at
NEQ // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor finished elect_close min_stake msg_value members _81
IFJMP:<{ // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor finished elect_close min_stake msg_value members
s10 s12 XCHG
12 BLKDROP // s_addr query_id
3 PUSHINT // s_addr query_id _82=3
return_stake CALLDICT
}> // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor finished elect_close min_stake msg_value members
s0 s4 XCHG // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value finished
IFJMP:<{ // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value
s9 s11 XCHG
11 BLKDROP // s_addr query_id
0 PUSHINT // s_addr query_id _84=0
return_stake CALLDICT
}> // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value
s6 s3 PUSH2
8 PUSHPOW2 // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value validator_pubkey members _88=256
DICTUGET
NULLSWAPIFNOT // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value mem found
DUP // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value mem found found
IF:<{ // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value mem found
DROP // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value mem
LDGRAMS // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value _90 mem
-ROT // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake mem msg_value _90
ADD // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake mem msg_value
SWAP // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value mem
64 LDU // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value _158 _157
NIP // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value mem
256 LDU // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value _160 _159
DROP // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value _96
s8 s(-1) PUXC // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value src_addr _96
NEQ // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value found
}>ELSE<{
NIP // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value found
}>
IFJMP:<{ // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value
s9 s11 XCHG
11 BLKDROP // s_addr query_id
4 PUSHINT // s_addr query_id _100=4
return_stake CALLDICT
}> // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value
s0 s1 PUSH2 // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value msg_value min_stake
LESS // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value _102
IFJMP:<{ // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value
s9 s11 XCHG
11 BLKDROP // s_addr query_id
5 PUSHINT // s_addr query_id _103=5
return_stake CALLDICT
}> // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value
DUP // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value msg_value
44 THROWIFNOT
ACCEPT
NOW // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value _109
NEWC // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake msg_value _109 _110
ROT // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake _109 _110 msg_value
STGRAMS // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake _109 _111
32 STU // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake max_factor members elect_close min_stake _113
s1 s4 XCHG // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake min_stake members elect_close max_factor _113
32 STU // s_addr elect_at adnl_addr query_id ds src_addr validator_pubkey total_stake min_stake members elect_close _115
s1 s6 XCHG // s_addr elect_at adnl_addr query_id ds elect_close validator_pubkey total_stake min_stake members src_addr _115
256 STU // s_addr elect_at adnl_addr query_id ds elect_close validator_pubkey total_stake min_stake members _117
s1 s8 XCHG // s_addr elect_at members query_id ds elect_close validator_pubkey total_stake min_stake adnl_addr _117
256 STU // s_addr elect_at members query_id ds elect_close validator_pubkey total_stake min_stake _119
s0 s3 s7 XCHG3
8 PUSHPOW2 // s_addr elect_at total_stake query_id ds elect_close min_stake _119 validator_pubkey members _120=256
DICTUSETB // s_addr elect_at total_stake query_id ds elect_close min_stake members
FALSE // s_addr elect_at total_stake query_id ds elect_close min_stake members _122
s5 s7 XCHG
s3 s4 XCHG
s2 s3 XCHG
s2 s6 XCHG
FALSE // s_addr query_id ds elect_at elect_close min_stake total_stake members _122 _123
pack_elect CALLDICT // s_addr query_id ds elect
NEWC // s_addr query_id ds elect _125
STDICT // s_addr query_id ds _126
SWAP // s_addr query_id _126 ds
STSLICER // s_addr query_id _127
ENDC // s_addr query_id _128
c4 POP
DUP // s_addr query_id query_id
IFJMP:<{ // s_addr query_id
0 PUSHINT // s_addr query_id _130=0
send_confirmation CALLDICT
}> // s_addr query_id
2DROP //
}>
unfreeze_without_bonuses PROC:<{
// credits freeze_dict tot_stakes
0 PUSHINT // credits freeze_dict tot_stakes _5=0
DUP // credits freeze_dict tot_stakes total=0 recovered=0
-1 PUSHINT // credits freeze_dict tot_stakes total=0 recovered=0 pubkey=-1
UNTIL:<{
s4 PUSH
8 PUSHPOW2 // credits freeze_dict tot_stakes total recovered pubkey freeze_dict _10=256
DICTUGETNEXT
NULLSWAPIFNOT
NULLSWAPIFNOT // credits freeze_dict tot_stakes total recovered cs pubkey f
DUP // credits freeze_dict tot_stakes total recovered cs pubkey f f
IF:<{ // credits freeze_dict tot_stakes total recovered cs pubkey f
s0 s2 XCHG // credits freeze_dict tot_stakes total recovered f pubkey cs
256 LDU // credits freeze_dict tot_stakes total recovered f pubkey _16 cs
64 LDU // credits freeze_dict tot_stakes total recovered f pubkey _16 _42 _41
NIP // credits freeze_dict tot_stakes total recovered f pubkey _16 cs
LDGRAMS // credits freeze_dict tot_stakes total recovered f pubkey _16 _22 cs
1 LDI // credits freeze_dict tot_stakes total recovered f pubkey addr stake banned cs
ENDS
IF:<{ // credits freeze_dict tot_stakes total recovered f pubkey addr stake
NIP // credits freeze_dict tot_stakes total recovered f pubkey stake
s3 s3 XCPU // credits freeze_dict tot_stakes total stake f pubkey recovered stake
ADD // credits freeze_dict tot_stakes total stake f pubkey recovered
}>ELSE<{ // credits freeze_dict tot_stakes total recovered f pubkey addr stake
s8 s8 s8 XC2PU // stake freeze_dict tot_stakes total recovered f pubkey credits addr stake
~credit_to CALLDICT // stake freeze_dict tot_stakes total recovered f pubkey credits
s0 s7 XCHG
s0 s3 XCHG // credits freeze_dict tot_stakes total stake f pubkey recovered
}>
s4 s3 XCHG2 // credits freeze_dict tot_stakes pubkey recovered f total stake
ADD // credits freeze_dict tot_stakes pubkey recovered f total
}>ELSE<{
s4 s2 XCHG2
DROP // credits freeze_dict tot_stakes pubkey recovered f total
}>
SWAP // credits freeze_dict tot_stakes pubkey recovered total f
NOT // credits freeze_dict tot_stakes pubkey recovered total _32
s1 s3 XCHG // credits freeze_dict tot_stakes total recovered pubkey _32
}> // credits freeze_dict tot_stakes total recovered pubkey
DROP
s3 POP // credits recovered tot_stakes total
SWAP // credits recovered total tot_stakes
EQUAL // credits recovered _34
59 THROWIFNOT
}>
unfreeze_with_bonuses PROC:<{
// credits freeze_dict tot_stakes tot_bonuses
0 PUSHINT // credits freeze_dict tot_stakes tot_bonuses _7=0
s0 s0 PUSH2 // credits freeze_dict tot_stakes tot_bonuses total=0 returned_bonuses=0 recovered=0
-1 PUSHINT // credits freeze_dict tot_stakes tot_bonuses total=0 returned_bonuses=0 recovered=0 pubkey=-1
UNTIL:<{
s6 PUSH
8 PUSHPOW2 // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered pubkey freeze_dict _12=256
DICTUGETNEXT
NULLSWAPIFNOT
NULLSWAPIFNOT // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered cs pubkey f
DUP // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered cs pubkey f f
IF:<{ // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered cs pubkey f
s0 s2 XCHG // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey cs
256 LDU // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey _18 cs
64 LDU // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey _18 _52 _51
NIP // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey _18 cs
LDGRAMS // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey _18 _24 cs
1 LDI // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey addr stake banned cs
ENDS
IF:<{ // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey addr stake
NIP // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey stake
s3 s3 XCPU // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses stake f pubkey recovered stake
ADD // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses stake f pubkey recovered
}>ELSE<{ // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey addr stake
s7 s0 s8 PUSH3 // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey addr stake tot_bonuses stake tot_stakes
MULDIV // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey addr stake bonus
s6 s6 XCPU // credits freeze_dict tot_stakes tot_bonuses total bonus recovered f pubkey addr stake returned_bonuses bonus
ADD // credits freeze_dict tot_stakes tot_bonuses total bonus recovered f pubkey addr stake returned_bonuses
s1 s6 PUXC // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey addr stake stake bonus
ADD // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey addr stake _35
s11 s11 s0 XCHG3 // stake freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey credits addr _35
~credit_to CALLDICT // stake freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered f pubkey credits
s0 s9 XCHG
s0 s3 XCHG // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses stake f pubkey recovered
}>
s5 s3 XCHG2 // credits freeze_dict tot_stakes tot_bonuses pubkey returned_bonuses recovered f total stake
ADD // credits freeze_dict tot_stakes tot_bonuses pubkey returned_bonuses recovered f total
}>ELSE<{
s5 s2 XCHG2
DROP // credits freeze_dict tot_stakes tot_bonuses pubkey returned_bonuses recovered f total
}>
SWAP // credits freeze_dict tot_stakes tot_bonuses pubkey returned_bonuses recovered total f
NOT // credits freeze_dict tot_stakes tot_bonuses pubkey returned_bonuses recovered total _38
s1 s4 XCHG // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered pubkey _38
}> // credits freeze_dict tot_stakes tot_bonuses total returned_bonuses recovered pubkey
DROP
s5 POP // credits recovered tot_stakes tot_bonuses total returned_bonuses
s0 s3 XCHG // credits recovered returned_bonuses tot_bonuses total tot_stakes
EQUAL // credits recovered returned_bonuses tot_bonuses _40
s2 s1 PUSH2 // credits recovered returned_bonuses tot_bonuses _40 returned_bonuses tot_bonuses
LEQ // credits recovered returned_bonuses tot_bonuses _40 _41
AND // credits recovered returned_bonuses tot_bonuses _42
59 THROWIFNOT
s1 s2 XCHG // credits returned_bonuses recovered tot_bonuses
ADD // credits returned_bonuses _44
SWAP // credits _44 returned_bonuses
SUB // credits _45
}>
unfreeze_all PROC:<{
// credits past_elections elect_id
SWAP
32 PUSHINT // credits elect_id past_elections _6=32
DICTUDELGET
NULLSWAPIFNOT // credits past_elections fs f
IFNOTJMP:<{ // credits past_elections fs
DROP // credits past_elections
0 PUSHINT // credits past_elections _8=0
}> // credits past_elections fs
64 LDU // credits past_elections _44 _43
NIP // credits past_elections fs
256 LDU // credits past_elections _46 _45
NIP // credits past_elections fs
LDDICT // credits past_elections _21 fs
LDGRAMS // credits past_elections _21 _23 fs
LDGRAMS // credits past_elections _21 _23 _25 fs
LDDICT // credits past_elections _21 _23 _25 _54 _53
NIP // credits past_elections fdict tot_stakes bonuses fs
ENDS
DUP // credits past_elections fdict tot_stakes bonuses bonuses
0 GTINT // credits past_elections fdict tot_stakes bonuses _32
IF:<{ // credits past_elections fdict tot_stakes bonuses
s3 s4 XCHG // past_elections credits fdict tot_stakes bonuses
unfreeze_with_bonuses CALLDICT // past_elections credits _33
}>ELSE<{ // credits past_elections fdict tot_stakes bonuses
DROP // credits past_elections fdict tot_stakes
s2 s3 XCHG // past_elections credits fdict tot_stakes
unfreeze_without_bonuses CALLDICT // past_elections credits _33
}> // past_elections credits unused_prizes
s1 s2 XCHG // credits past_elections unused_prizes
}>
config_set_confirmed PROC:<{
// s_addr cs query_id ok
s2 POP // s_addr ok query_id
s0 s2 XCHG // query_id ok s_addr
REWRITESTDADDR // query_id ok src_wc src_addr
0 PUSHINT // query_id ok src_wc src_addr _8=0
CONFIGOPTPARAM // query_id ok src_wc src_addr _9
CTOS // query_id ok src_wc src_addr _10
256 PLDU // query_id ok src_wc src_addr config_addr
c4 PUSH // query_id ok src_wc src_addr config_addr _14
CTOS // query_id ok src_wc src_addr config_addr ds
LDDICT // query_id ok src_wc src_addr config_addr elect ds
s0 s4 XCHG // query_id ok ds src_addr config_addr elect src_wc
INC // query_id ok ds src_addr config_addr elect _20
2SWAP // query_id ok ds elect _20 src_addr config_addr
NEQ // query_id ok ds elect _20 _21
OR // query_id ok ds elect _22
OVER // query_id ok ds elect _22 elect
ISNULL // query_id ok ds elect _22 _23
OR // query_id ok ds elect _24
IFJMP:<{ // query_id ok ds elect
4 BLKDROP //
}> // query_id ok ds elect
unpack_elect CALLDICT // query_id ok ds _63 _64 _65 _66 _67 _68 _69
s0 s5 XCHG
5 BLKDROP // query_id ok ds elect_at finished
s1 s4 PUXC // finished ok ds elect_at elect_at query_id
NEQ // finished ok ds elect_at _33
s0 s4 XCHG // _33 ok ds elect_at finished
NOT // _33 ok ds elect_at _34
s1 s4 XCHG // elect_at ok ds _33 _34
OR // elect_at ok ds _35
IFJMP:<{ // elect_at ok ds
3 BLKDROP //
}> // elect_at ok ds
ACCEPT
SWAP // elect_at ds ok
IFNOT:<{ // elect_at ds
LDDICT // elect_at _40 ds
LDDICT // elect_at _40 _42 ds
LDGRAMS // elect_at credits past_elections grams ds
s3 s3 s4 XCHG3 // ds grams credits past_elections elect_at
unfreeze_all CALLDICT // ds grams credits past_elections unused_prizes
FALSE // ds grams credits past_elections unused_prizes _48
NEWC // ds grams credits past_elections unused_prizes _48 _49
1 STI // ds grams credits past_elections unused_prizes _51
s1 s3 XCHG // ds grams unused_prizes past_elections credits _51
STDICT // ds grams unused_prizes past_elections _52
STDICT // ds grams unused_prizes _53
-ROT // ds _53 grams unused_prizes
ADD // ds _53 _54
STGRAMS // ds _55
SWAP // _55 ds
STSLICER // _56
ENDC // _57
c4 POP
}>ELSE<{
2DROP //
}>
}>
process_simple_transfer PROC:<{
// s_addr msg_value
load_data CALLDICT // s_addr msg_value elect credits past_elect grams active_id active_hash
s0 s7 XCHG // active_hash msg_value elect credits past_elect grams active_id s_addr
REWRITESTDADDR // active_hash msg_value elect credits past_elect grams active_id src_wc src_addr
SWAP // active_hash msg_value elect credits past_elect grams active_id src_addr src_wc
INC // active_hash msg_value elect credits past_elect grams active_id src_addr _13
OR // active_hash msg_value elect credits past_elect grams active_id _14
OVER // active_hash msg_value elect credits past_elect grams active_id _14 active_id
0 EQINT // active_hash msg_value elect credits past_elect grams active_id _14 _16
OR // active_hash msg_value elect credits past_elect grams active_id _17
IFJMP:<{ // active_hash msg_value elect credits past_elect grams active_id
s0 s5 XCHG // active_hash active_id elect credits past_elect grams msg_value
ADD // active_hash active_id elect credits past_elect grams
2 4 BLKSWAP
SWAP // elect credits past_elect grams active_id active_hash
store_data CALLDICT
}> // active_hash msg_value elect credits past_elect grams active_id
s0 s2 PUSH2
32 PUSHINT // active_hash msg_value elect credits past_elect grams active_id active_id past_elect _22=32
DICTUGET
NULLSWAPIFNOT // active_hash msg_value elect credits past_elect grams active_id fs f
IF:<{ // active_hash msg_value elect credits past_elect grams active_id fs
64 LDU // active_hash msg_value elect credits past_elect grams active_id _30 fs
256 LDU // active_hash msg_value elect credits past_elect grams active_id _30 _33 fs
LDDICT // active_hash msg_value elect credits past_elect grams active_id _30 _33 _36 fs
LDGRAMS // active_hash msg_value elect credits past_elect grams active_id _30 _33 _36 _38 fs
LDGRAMS // active_hash msg_value elect credits past_elect grams active_id data hash dict total_stake bonuses fs
s0 s11 XCHG // active_hash fs elect credits past_elect grams active_id data hash dict total_stake bonuses msg_value
ADD // active_hash fs elect credits past_elect grams active_id data hash dict total_stake bonuses
NEWC // active_hash fs elect credits past_elect grams active_id data hash dict total_stake bonuses _44
s1 s5 XCHG // active_hash fs elect credits past_elect grams active_id bonuses hash dict total_stake data _44
64 STU // active_hash fs elect credits past_elect grams active_id bonuses hash dict total_stake _46
s1 s3 XCHG // active_hash fs elect credits past_elect grams active_id bonuses total_stake dict hash _46
256 STU // active_hash fs elect credits past_elect grams active_id bonuses total_stake dict _48
STDICT // active_hash fs elect credits past_elect grams active_id bonuses total_stake _49
SWAP // active_hash fs elect credits past_elect grams active_id bonuses _49 total_stake
STGRAMS // active_hash fs elect credits past_elect grams active_id bonuses _50
SWAP // active_hash fs elect credits past_elect grams active_id _50 bonuses
STGRAMS // active_hash fs elect credits past_elect grams active_id _51
s0 s6 XCHG2 // active_hash active_id elect credits past_elect grams _51 fs
STSLICER // active_hash active_id elect credits past_elect grams _52
SWAP
32 PUSHINT
s6 s3 s3 PUXC2 // active_hash active_id elect credits grams _52 active_id past_elect _53=32
DICTUSETB // active_hash active_id elect credits grams past_elect
}>ELSE<{ // active_hash msg_value elect credits past_elect grams active_id fs
DROP // active_hash msg_value elect credits past_elect grams active_id
s0 s5 XCHG // active_hash active_id elect credits past_elect grams msg_value
ADD // active_hash active_id elect credits past_elect grams
SWAP // active_hash active_id elect credits grams past_elect
}>
s3 s5 XCHG
s1 s4 s3 XCHG3 // elect credits past_elect grams active_id active_hash
store_data CALLDICT
}>
recover_stake PROC:<{
// op s_addr cs query_id
NIP // op s_addr query_id
OVER // op s_addr query_id s_addr
REWRITESTDADDR // op s_addr query_id src_wc src_addr
SWAP // op s_addr query_id src_addr src_wc
INC // op s_addr query_id src_addr _8
IFJMP:<{ // op s_addr query_id src_addr
DROP // op s_addr query_id
4294967294 PUSHINT // op s_addr query_id _9=4294967294
0 PUSHINT // op s_addr query_id _9=4294967294 _10=0
s3 s4 XCHG
s1 s3 XCHG
64 PUSHINT // s_addr _9=4294967294 query_id op _10=0 _11=64
send_message_back CALLDICT
}> // op s_addr query_id src_addr
c4 PUSH // op s_addr query_id src_addr _14
CTOS // op s_addr query_id src_addr ds
LDDICT // op s_addr query_id src_addr _18 ds
LDDICT // op s_addr query_id src_addr elect credits ds
s3 s3 XCHG2
8 PUSHPOW2 // op s_addr query_id ds elect src_addr credits _25=256
DICTUDELGET
NULLSWAPIFNOT // op s_addr query_id ds elect credits cs f
IFNOTJMP:<{ // op s_addr query_id ds elect credits cs
4 BLKDROP // op s_addr query_id
4294967294 PUSHINT // op s_addr query_id _27=4294967294
0 PUSHINT // op s_addr query_id _27=4294967294 _28=0
s3 s4 XCHG
s1 s3 XCHG
64 PUSHINT // s_addr _27=4294967294 query_id op _28=0 _29=64
send_message_back CALLDICT
}> // op s_addr query_id ds elect credits cs
s6 POP // cs s_addr query_id ds elect credits
s0 s5 XCHG // credits s_addr query_id ds elect cs
LDGRAMS // credits s_addr query_id ds elect amount cs
ENDS
NEWC // credits s_addr query_id ds elect amount _35
s1 s2 XCHG // credits s_addr query_id ds amount elect _35
STDICT // credits s_addr query_id ds amount _36
s1 s5 XCHG // amount s_addr query_id ds credits _36
STDICT // amount s_addr query_id ds _37
SWAP // amount s_addr query_id _37 ds
STSLICER // amount s_addr query_id _38
ENDC // amount s_addr query_id _39
c4 POP
4184830756 PUSHINT // amount s_addr query_id _41=4184830756
0 PUSHINT // amount s_addr query_id _41=4184830756 _42=0
24 PUSHINT // amount s_addr query_id _41=4184830756 _42=0 _43=24
NEWC // amount s_addr query_id _41=4184830756 _42=0 _43=24 _44
6 STU // amount s_addr query_id _41=4184830756 _42=0 _46
s0 s4 XCHG2 // amount _42=0 query_id _41=4184830756 _46 s_addr
STSLICER // amount _42=0 query_id _41=4184830756 _47
s0 s4 XCHG2 // _41=4184830756 _42=0 query_id _47 amount
STGRAMS // _41=4184830756 _42=0 query_id _48
s1 s2 XCHG // _41=4184830756 query_id _42=0 _48
107 STU // _41=4184830756 query_id _62
s1 s2 XCHG // query_id _41=4184830756 _62
32 STU // query_id _64
64 STU // _66
ENDC // _67
64 PUSHINT // _67 _68=64
SENDRAWMSG
}>
after_code_upgrade PROC:<{
// s_addr cs query_id
NIP // s_addr query_id
1313042276 PUSHINT // s_addr query_id op=1313042276
3460525924 PUSHINT // s_addr query_id op=1313042276 _5=3460525924
0 PUSHINT // s_addr query_id op=1313042276 _5=3460525924 _6=0
s3 s3 s0 XCHG3
64 PUSHINT // s_addr _5=3460525924 query_id op=1313042276 _6=0 _7=64
send_message_back CALLDICT
}>
upgrade_code PROC:<{
// s_addr cs query_id
0 PUSHINT // s_addr cs query_id _4=0
CONFIGOPTPARAM // s_addr cs query_id c_addr
DUP // s_addr cs query_id c_addr c_addr
ISNULL // s_addr cs query_id c_addr _6
IFJMP:<{ // s_addr cs query_id c_addr
4 BLKDROP //
FALSE // _7
}> // s_addr cs query_id c_addr
CTOS // s_addr cs query_id _9
256 PLDU // s_addr cs query_id config_addr
s3 PUSH // s_addr cs query_id config_addr s_addr
REWRITESTDADDR // s_addr cs query_id config_addr src_wc src_addr
SWAP // s_addr cs query_id config_addr src_addr src_wc
INC // s_addr cs query_id config_addr src_addr _16
s0 s2 XCHG // s_addr cs query_id _16 src_addr config_addr
NEQ // s_addr cs query_id _16 _17
OR // s_addr cs query_id _18
IFJMP:<{ // s_addr cs query_id
3 BLKDROP //
FALSE // _19
}> // s_addr cs query_id
ACCEPT
SWAP // s_addr query_id cs
LDREF // s_addr query_id code cs
OVER // s_addr query_id code cs code
SETCODE
DUP // s_addr query_id code cs cs
SEMPTY // s_addr query_id code cs _25
IFNOT:<{ // s_addr query_id code cs
SWAP // s_addr query_id cs code
c3 POP
SWAP // s_addr cs query_id
after_code_upgrade CALLDICT
0 THROW
}>ELSE<{
4 BLKDROP //
}>
TRUE // _30
}>
recv_internal PROC:<{
// msg_value in_msg_cell in_msg
SWAP // msg_value in_msg in_msg_cell
CTOS // msg_value in_msg cs
4 LDU // msg_value in_msg flags cs
SWAP
1 PUSHINT // msg_value in_msg cs flags _9=1
AND // msg_value in_msg cs _10
IFJMP:<{ // msg_value in_msg cs
3 BLKDROP //
}> // msg_value in_msg cs
LDMSGADDR // msg_value in_msg _61 _60
DROP // msg_value in_msg s_addr
OVER // msg_value in_msg s_addr in_msg
SEMPTY // msg_value in_msg s_addr _14
IFJMP:<{ // msg_value in_msg s_addr
NIP // msg_value s_addr
SWAP // s_addr msg_value
process_simple_transfer CALLDICT
}> // msg_value in_msg s_addr
SWAP // msg_value s_addr in_msg
32 LDU // msg_value s_addr op in_msg
OVER // msg_value s_addr op in_msg op
0 EQINT // msg_value s_addr op in_msg _21
IFJMP:<{ // msg_value s_addr op in_msg
2DROP // msg_value s_addr
SWAP // s_addr msg_value
process_simple_transfer CALLDICT
}> // msg_value s_addr op in_msg
64 LDU // msg_value s_addr op query_id in_msg
s2 PUSH
1316189259 PUSHINT // msg_value s_addr op query_id in_msg op _27=1316189259
EQUAL // msg_value s_addr op query_id in_msg _28
IFJMP:<{ // msg_value s_addr op query_id in_msg
s2 POP // msg_value s_addr in_msg query_id
s2 s3 XCHG // s_addr msg_value in_msg query_id
process_new_stake CALLDICT
}> // msg_value s_addr op query_id in_msg
s4 POP // in_msg s_addr op query_id
OVER
1197831204 PUSHINT // in_msg s_addr op query_id op _30=1197831204
EQUAL // in_msg s_addr op query_id _31
IFJMP:<{ // in_msg s_addr op query_id
s1 s3 XCHG // op s_addr in_msg query_id
recover_stake CALLDICT
}> // in_msg s_addr op query_id
OVER
1313042276 PUSHINT // in_msg s_addr op query_id op _33=1313042276
EQUAL // in_msg s_addr op query_id _34
IFJMP:<{ // in_msg s_addr op query_id
s2 s3 s3 PUXCPU // query_id s_addr op s_addr in_msg query_id
upgrade_code CALLDICT // query_id s_addr op ok
IF:<{ // query_id s_addr op
3460525924 PUSHINT // query_id s_addr op _37=3460525924
}>ELSE<{ // query_id s_addr op
32 PUSHPOW2DEC // query_id s_addr op _37=4294967295
}>
0 PUSHINT // query_id s_addr op _37 _40=0
s3 s4 XCHG
s3 s3 s0 XCHG3
64 PUSHINT // s_addr _37 query_id op _40=0 _41=64
send_message_back CALLDICT
}> // in_msg s_addr op query_id
OVER
4000730955 PUSHINT // in_msg s_addr op query_id op _44=4000730955
EQUAL // in_msg s_addr op query_id cfg_ok
s2 PUSH
4000730991 PUSHINT // in_msg s_addr op query_id cfg_ok op _46=4000730991
EQUAL // in_msg s_addr op query_id cfg_ok _47
s1 s(-1) PUXC // in_msg s_addr op query_id cfg_ok cfg_ok _47
OR // in_msg s_addr op query_id cfg_ok _48
IFJMP:<{ // in_msg s_addr op query_id cfg_ok
s2 POP // in_msg s_addr cfg_ok query_id
s2 s3 XCHG
SWAP // s_addr in_msg query_id cfg_ok
config_set_confirmed CALLDICT
}> // in_msg s_addr op query_id cfg_ok
DROP
s3 POP // query_id s_addr op
DUP
31 PUSHPOW2 // query_id s_addr op op _52
AND // query_id s_addr op _53
IFNOTJMP:<{ // query_id s_addr op
32 PUSHPOW2DEC // query_id s_addr op _54=4294967295
0 PUSHINT // query_id s_addr op _54=4294967295 _55=0
s3 s4 XCHG
s3 s3 s0 XCHG3
64 PUSHINT // s_addr _54=4294967295 query_id op _55=0 _56=64
send_message_back CALLDICT
}> // query_id s_addr op
3 BLKDROP //
}>
postpone_elections PROC:<{
//
FALSE // _0
}>
compute_total_stake PROC:<{
// l n m_stake
0 PUSHINT // l n m_stake tot_stake=0
s0 s2 XCHG // l tot_stake=0 m_stake n
REPEAT:<{ // l tot_stake m_stake
s0 s2 XCHG // m_stake tot_stake l
UNCONS // m_stake tot_stake h l
OVER // m_stake tot_stake h l h
0 INDEX // m_stake tot_stake h l stake
s0 s2 XCHG // m_stake tot_stake stake l h
1 INDEX // m_stake tot_stake stake l max_f
s4 PUSH // m_stake tot_stake stake l max_f m_stake
MUL // m_stake tot_stake stake l _13
16 RSHIFT# // m_stake tot_stake stake l _15
s1 s2 XCHG // m_stake tot_stake l stake _15
MIN // m_stake tot_stake l stake
s1 s2 XCHG // m_stake l tot_stake stake
ADD // m_stake l tot_stake
ROT // l tot_stake m_stake
}>
DROP
NIP // tot_stake
}>
try_elect PROC:<{
// credits members min_stake max_stake min_total_stake max_stake_factor
16 PUSHINT // credits members min_stake max_stake min_total_stake max_stake_factor _7=16
CONFIGOPTPARAM // credits members min_stake max_stake min_total_stake max_stake_factor _8
CTOS // credits members min_stake max_stake min_total_stake max_stake_factor cs
16 LDU // credits members min_stake max_stake min_total_stake max_stake_factor _13 cs
16 LDU // credits members min_stake max_stake min_total_stake max_stake_factor _13 _258 _257
NIP // credits members min_stake max_stake min_total_stake max_stake_factor _13 cs
16 LDU // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators cs
ENDS
1 PUSHINT // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators _23=1
MAX // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators
0 PUSHINT // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n=0
NEWDICT // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n=0 sdict
-1 PUSHINT // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n=0 sdict pubkey=-1
UNTIL:<{
s9 PUSH
8 PUSHPOW2 // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict pubkey members _33=256
DICTUGETNEXT
NULLSWAPIFNOT
NULLSWAPIFNOT // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict cs pubkey f
DUP // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict cs pubkey f f
IF:<{ // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict cs pubkey f
s0 s2 XCHG // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey cs
LDGRAMS // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey _40 cs
32 LDU // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey _40 _42 cs
32 LDU // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey _40 _42 _45 cs
256 LDU // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey _40 _42 _45 _48 cs
256 LDU // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey stake time max_factor addr adnl_addr cs
ENDS
s0 s3 XCHG // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey stake adnl_addr max_factor addr time
NEGATE // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey stake adnl_addr max_factor addr _56
NEWC // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey stake adnl_addr max_factor addr _56 _57
s1 s5 XCHG // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey _56 adnl_addr max_factor addr stake _57
128 STU // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey _56 adnl_addr max_factor addr _59
s1 s4 XCHG // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey addr adnl_addr max_factor _56 _59
32 STI // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey addr adnl_addr max_factor _61
s4 s(-1) PUXC // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey addr adnl_addr max_factor pubkey _61
256 STU // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey addr adnl_addr max_factor _63
ENDC // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey addr adnl_addr max_factor _64
CTOS // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey addr adnl_addr max_factor key
s1 s10 XCPU // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey addr adnl_addr key max_factor max_stake_factor
MIN // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey addr adnl_addr key _67
NEWC // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey addr adnl_addr key _67 _68
32 STU // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey addr adnl_addr key _70
s1 s3 XCHG // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey key adnl_addr addr _70
256 STU // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey key adnl_addr _72
256 STU // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict f pubkey key _74
s0 s1 s4 XCHG3
416 PUSHINT // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n pubkey f _74 key sdict _79
DICTSETB // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n pubkey f sdict
s0 s3 XCHG // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators sdict pubkey f n
INC // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators sdict pubkey f n
}>ELSE<{
s3 s4 XCHG
2SWAP
DROP // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators sdict pubkey f n
}>
SWAP // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators sdict pubkey n f
NOT // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators sdict pubkey n _83
s3 s3 s0 XCHG3 // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict pubkey _83
}> // credits members min_stake max_stake min_total_stake max_stake_factor max_validators min_validators n sdict pubkey
DROP
s4 POP // credits members min_stake max_stake min_total_stake sdict max_validators min_validators n
ROT // credits members min_stake max_stake min_total_stake sdict min_validators n max_validators
MIN // credits members min_stake max_stake min_total_stake sdict min_validators n
s0 s1 PUSH2 // credits members min_stake max_stake min_total_stake sdict min_validators n n min_validators
LESS // credits members min_stake max_stake min_total_stake sdict min_validators n _85
IFJMP:<{ // credits members min_stake max_stake min_total_stake sdict min_validators n
7 BLKDROP // credits
NEWDICT // credits _86
0 PUSHINT // credits _86 _87=0
NEWDICT // credits _86 _87=0 _88
s1 s1 PUSH2 // credits _86 _87=0 _88 _89=0 _90=0
}> // credits members min_stake max_stake min_total_stake sdict min_validators n
PUSHNULL // credits members min_stake max_stake min_total_stake sdict min_validators n l
UNTIL:<{
s0 s3 XCHG
416 PUSHINT // credits members min_stake max_stake min_total_stake l min_validators n sdict _101
DICTREMMIN
NULLSWAPIFNOT
NULLSWAPIFNOT // credits members min_stake max_stake min_total_stake l min_validators n sdict cs key f
DUP // credits members min_stake max_stake min_total_stake l min_validators n sdict cs key f f
IF:<{ // credits members min_stake max_stake min_total_stake l min_validators n sdict cs key f
SWAP // credits members min_stake max_stake min_total_stake l min_validators n sdict cs f key
128 LDU // credits members min_stake max_stake min_total_stake l min_validators n sdict cs f _106 key
s1 s9 XCPU // credits members min_stake max_stake min_total_stake l min_validators n sdict cs f key _106 max_stake
MIN // credits members min_stake max_stake min_total_stake l min_validators n sdict cs f key _109
SWAP // credits members min_stake max_stake min_total_stake l min_validators n sdict cs f _109 key
32 LDU // credits members min_stake max_stake min_total_stake l min_validators n sdict cs f _109 _284 _283
NIP // credits members min_stake max_stake min_total_stake l min_validators n sdict cs f _109 key
256 PLDU // credits members min_stake max_stake min_total_stake l min_validators n sdict cs f stake pubkey
s0 s3 XCHG // credits members min_stake max_stake min_total_stake l min_validators n sdict pubkey f stake cs
32 LDU // credits members min_stake max_stake min_total_stake l min_validators n sdict pubkey f stake _118 cs
256 LDU // credits members min_stake max_stake min_total_stake l min_validators n sdict pubkey f stake _118 _288 _287
NIP // credits members min_stake max_stake min_total_stake l min_validators n sdict pubkey f stake _118 cs
256 PLDU // credits members min_stake max_stake min_total_stake l min_validators n sdict pubkey f stake max_f adnl_addr
s1 s3 s0 XCHG3
s1 s4 XCHG // credits members min_stake max_stake min_total_stake l min_validators n sdict f stake max_f pubkey adnl_addr
4 TUPLE // credits members min_stake max_stake min_total_stake l min_validators n sdict f _126
s0 s5 XCHG2 // credits members min_stake max_stake min_total_stake f min_validators n sdict _126 l
CONS // credits members min_stake max_stake min_total_stake f min_validators n sdict l
}>ELSE<{
s6 s1 s6 XCHG3
2DROP // credits members min_stake max_stake min_total_stake f min_validators n sdict l
}>
s0 s4 XCHG // credits members min_stake max_stake min_total_stake l min_validators n sdict f
NOT // credits members min_stake max_stake min_total_stake l min_validators n sdict _128
s1 s4 XCHG // credits members min_stake max_stake min_total_stake sdict min_validators n l _128
}> // credits members min_stake max_stake min_total_stake sdict min_validators n l
s3 POP
s4 POP // credits members min_stake n min_total_stake l min_validators
DEC // credits members min_stake n min_total_stake l i
2DUP // credits members min_stake n min_total_stake l i l1 i
REPEAT:<{ // credits members min_stake n min_total_stake l i l1
CDR // credits members min_stake n min_total_stake l i l1
}>
0 PUSHINT // credits members min_stake n min_total_stake l i l1 _136=0
DUP // credits members min_stake n min_total_stake l i l1 best_stake=0 m=0
UNTIL:<{
s0 s2 XCHG // credits members min_stake n min_total_stake l i m best_stake l1
UNCONS // credits members min_stake n min_total_stake l i m best_stake _139 l1
SWAP // credits members min_stake n min_total_stake l i m best_stake l1 _139
0 INDEX // credits members min_stake n min_total_stake l i m best_stake l1 stake
s0 s4 XCHG // credits members min_stake n min_total_stake l stake m best_stake l1 i
INC // credits members min_stake n min_total_stake l stake m best_stake l1 i
s4 s8 PUSH2 // credits members min_stake n min_total_stake l stake m best_stake l1 i stake min_stake
GEQ // credits members min_stake n min_total_stake l stake m best_stake l1 i _145
IF:<{ // credits members min_stake n min_total_stake l stake m best_stake l1 i
s5 s(-1) s4 PU2XC // credits members min_stake n min_total_stake l i m best_stake l1 l i stake
compute_total_stake CALLDICT // credits members min_stake n min_total_stake l i m best_stake l1 tot_stake
s0 s2 PUSH2 // credits members min_stake n min_total_stake l i m best_stake l1 tot_stake tot_stake best_stake
GREATER // credits members min_stake n min_total_stake l i m best_stake l1 tot_stake _148
IF:<{ // credits members min_stake n min_total_stake l i m best_stake l1 tot_stake
s2 POP
s2 POP // credits members min_stake n min_total_stake l i l1 tot_stake
s2 PUSH // credits members min_stake n min_total_stake l i l1 best_stake m
}>ELSE<{
s1 s3 XCHG
DROP // credits members min_stake n min_total_stake l i l1 best_stake m
}>
}>ELSE<{
s3 s4 XCHG2
DROP // credits members min_stake n min_total_stake l i l1 best_stake m
}>
s3 s6 PUSH2 // credits members min_stake n min_total_stake l i l1 best_stake m i n
GEQ // credits members min_stake n min_total_stake l i l1 best_stake m _149
}> // credits members min_stake n min_total_stake l i l1 best_stake m
s2 POP
s2 POP
s4 POP
s4 POP // credits members best_stake m min_total_stake l
s2 PUSH // credits members best_stake m min_total_stake l m
0 EQINT // credits members best_stake m min_total_stake l _151
s4 s2 PUXC // credits members best_stake m _151 l best_stake min_total_stake
LESS // credits members best_stake m _151 l _152
s1 s2 XCHG // credits members best_stake m l _151 _152
OR // credits members best_stake m l _153
IFJMP:<{ // credits members best_stake m l
4 BLKDROP // credits
NEWDICT // credits _154
0 PUSHINT // credits _154 _155=0
NEWDICT // credits _154 _155=0 _156
s1 s1 PUSH2 // credits _154 _155=0 _156 _157=0 _158=0
}> // credits members best_stake m l
DUP // credits members best_stake m l l1
s0 DUMP // credits members best_stake m l l1
s2 PUSH // credits members best_stake m l l1 m
DEC // credits members best_stake m l l1 _163
REPEAT:<{ // credits members best_stake m l l1
CDR // credits members best_stake m l l1
}>
CAR // credits members best_stake m l _166
0 INDEX // credits members best_stake m l m_stake
0 PUSHINT // credits members best_stake m l m_stake i=0
s0 s0 PUSH2 // credits members best_stake m l m_stake i=0 tot_stake=0 tot_weight=0
NEWDICT // credits members best_stake m l m_stake i=0 tot_stake=0 tot_weight=0 vset
NEWDICT // credits members best_stake m l m_stake i=0 tot_stake=0 tot_weight=0 vset frozen
UNTIL:<{
s0 s6 XCHG // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l
UNCONS // credits members best_stake m frozen m_stake i tot_stake tot_weight vset _183 l
SWAP // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l _183
4 UNTUPLE // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l stake max_f pubkey adnl_addr
s1 s13 PUSH2
8 PUSHPOW2 // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l stake max_f pubkey adnl_addr pubkey members _188=256
DICTUGET
NULLSWAPIFNOT // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l stake max_f pubkey adnl_addr val f
61 THROWIFNOT
LDGRAMS // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l stake max_f pubkey adnl_addr _300 _299
NIP // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l stake max_f pubkey adnl_addr val
64 LDU // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l stake max_f pubkey adnl_addr _302 _301
NIP // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l stake max_f pubkey adnl_addr val
256 PLDU // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l stake max_f pubkey adnl_addr src_addr
s9 s12 PUSH2 // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l stake max_f pubkey adnl_addr src_addr i m
LESS // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l stake max_f pubkey adnl_addr src_addr _202
IF:<{ // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l stake max_f pubkey adnl_addr src_addr
s3 s10 XCPU // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l stake src_addr pubkey adnl_addr max_f m_stake
MUL // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l stake src_addr pubkey adnl_addr _204
16 RSHIFT# // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l stake src_addr pubkey adnl_addr _206
s4 s(-1) PUXC // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l stake src_addr pubkey adnl_addr stake _206
MIN // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l stake src_addr pubkey adnl_addr true_stake
s4 s4 XCPU // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l true_stake src_addr pubkey adnl_addr stake true_stake
SUB // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l true_stake src_addr pubkey adnl_addr stake
s4 PUSH // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l true_stake src_addr pubkey adnl_addr stake true_stake
60 LSHIFT# // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l true_stake src_addr pubkey adnl_addr stake _211
s14 PUSH // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l true_stake src_addr pubkey adnl_addr stake _211 best_stake
DIV // credits members best_stake m frozen m_stake i tot_stake tot_weight vset l true_stake src_addr pubkey adnl_addr stake weight
s9 s5 XCPU // credits members best_stake m frozen m_stake i weight tot_weight vset l true_stake src_addr pubkey adnl_addr stake tot_stake true_stake
ADD // credits members best_stake m frozen m_stake i weight tot_weight vset l true_stake src_addr pubkey adnl_addr stake tot_stake
s8 s9 XCPU // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey adnl_addr stake tot_weight weight
ADD // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey adnl_addr stake tot_weight
2390828938 PUSHINT // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey adnl_addr stake tot_weight _216=2390828938
s3 PUSH // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey adnl_addr stake tot_weight _216=2390828938 adnl_addr
IF:<{ // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey adnl_addr stake tot_weight _216=2390828938
115 PUSHINT // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey adnl_addr stake tot_weight _216=2390828938 _217=115
}>ELSE<{ // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey adnl_addr stake tot_weight _216=2390828938
83 PUSHINT // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey adnl_addr stake tot_weight _216=2390828938 _217=83
}>
NEWC // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey adnl_addr stake tot_weight _216=2390828938 _217 _220
8 STU // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey adnl_addr stake tot_weight _216=2390828938 _222
32 STU // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey adnl_addr stake tot_weight _224
s4 s(-1) PUXC // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey adnl_addr stake tot_weight pubkey _224
256 STU // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey adnl_addr stake tot_weight _226
s10 s(-1) PUXC // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey adnl_addr stake tot_weight weight _226
64 STU // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey adnl_addr stake tot_weight vinfo
s3 PUSH // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey adnl_addr stake tot_weight vinfo adnl_addr
IF:<{ // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey adnl_addr stake tot_weight vinfo
s1 s3 XCHG // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey tot_weight stake adnl_addr vinfo
256 STU // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey tot_weight stake vinfo
}>ELSE<{
s0 s3 XCHG2
DROP // credits members best_stake m frozen m_stake i weight tot_stake vset l true_stake src_addr pubkey tot_weight stake vinfo
}>
SWAP
16 PUSHINT
s11 s8 s8 PUXC2 // credits members best_stake m frozen m_stake i weight tot_stake stake l true_stake src_addr pubkey tot_weight vinfo i vset _233=16
DICTUSETB // credits members best_stake m frozen m_stake i weight tot_stake stake l true_stake src_addr pubkey tot_weight vset
FALSE // credits members best_stake m frozen m_stake i weight tot_stake stake l true_stake src_addr pubkey tot_weight vset _236
s4 PUSH
NEWC // credits members best_stake m frozen m_stake i weight tot_stake stake l true_stake src_addr pubkey tot_weight vset _236 src_addr _237
256 STU // credits members best_stake m frozen m_stake i weight tot_stake stake l true_stake src_addr pubkey tot_weight vset _236 _239
s1 s10 XCHG // credits members best_stake m frozen m_stake i _236 tot_stake stake l true_stake src_addr pubkey tot_weight vset weight _239
64 STU // credits members best_stake m frozen m_stake i _236 tot_stake stake l true_stake src_addr pubkey tot_weight vset _241
s0 s5 XCHG2 // credits members best_stake m frozen m_stake i _236 tot_stake stake l vset src_addr pubkey tot_weight _241 true_stake
STGRAMS // credits members best_stake m frozen m_stake i _236 tot_stake stake l vset src_addr pubkey tot_weight _242
s1 s8 XCHG // credits members best_stake m frozen m_stake i tot_weight tot_stake stake l vset src_addr pubkey _236 _242
1 STI // credits members best_stake m frozen m_stake i tot_weight tot_stake stake l vset src_addr pubkey _244
s0 s1 s10 XCHG3
8 PUSHPOW2 // credits members best_stake m src_addr m_stake i tot_weight tot_stake stake l vset _244 pubkey frozen _245=256
DICTUSETB // credits members best_stake m src_addr m_stake i tot_weight tot_stake stake l vset frozen
}>ELSE<{
s0 s11 XCHG
s7 s8 XCHG
s4 s6 XCHG
s0 s3 XCHG
3 BLKDROP // credits members best_stake m src_addr m_stake i tot_weight tot_stake stake l vset frozen
}>
s3 PUSH // credits members best_stake m src_addr m_stake i tot_weight tot_stake stake l vset frozen stake
IF:<{ // credits members best_stake m src_addr m_stake i tot_weight tot_stake stake l vset frozen
s12 s8 s3 XCHG3 // l members best_stake m vset m_stake i tot_weight tot_stake frozen credits src_addr stake
~credit_to CALLDICT // l members best_stake m vset m_stake i tot_weight tot_stake frozen credits
}>ELSE<{
s12 s8 s3 XCHG3
2DROP // l members best_stake m vset m_stake i tot_weight tot_stake frozen credits
}>
s0 s4 XCHG // l members best_stake m vset m_stake credits tot_weight tot_stake frozen i
INC // l members best_stake m vset m_stake credits tot_weight tot_stake frozen i
s10 PUSH // l members best_stake m vset m_stake credits tot_weight tot_stake frozen i l
ISNULL // l members best_stake m vset m_stake credits tot_weight tot_stake frozen i _251
s5 s11 XCHG
s5 s7 XCHG
s1 s5 XCHG
s3 s4 XCHG
s1 s2 XCHG // credits members best_stake m l m_stake i tot_stake tot_weight vset frozen _251
}> // credits members best_stake m l m_stake i tot_stake tot_weight vset frozen
s4 POP
s4 POP
s4 POP
s6 POP // credits tot_stake best_stake m tot_weight vset frozen
s5 s4 PUXC // credits tot_stake frozen m tot_weight vset tot_stake best_stake
EQUAL // credits tot_stake frozen m tot_weight vset _253
49 THROWIFNOT
s3 s3 s4 XCHG3
SWAP // credits vset tot_weight frozen tot_stake m
}>
conduct_elections PROC:<{
// ds elect credits
SWAP // ds credits elect
unpack_elect CALLDICT // ds credits _132 _133 _134 _135 _136 _137 _138
s4 POP // ds credits elect_at elect_close finished total_stake members failed
NOW // ds credits elect_at elect_close finished total_stake members failed _11
s5 PUSH // ds credits elect_at elect_close finished total_stake members failed _11 elect_close
LESS // ds credits elect_at elect_close finished total_stake members failed _12
IFJMP:<{ // ds credits elect_at elect_close finished total_stake members failed
8 BLKDROP //
FALSE // _13
}> // ds credits elect_at elect_close finished total_stake members failed
0 PUSHINT // ds credits elect_at elect_close finished total_stake members failed _14=0
CONFIGOPTPARAM // ds credits elect_at elect_close finished total_stake members failed _15
ISNULL // ds credits elect_at elect_close finished total_stake members failed _16
IFJMP:<{ // ds credits elect_at elect_close finished total_stake members failed
8 BLKDROP //
postpone_elections CALLDICT // _17
}> // ds credits elect_at elect_close finished total_stake members failed
17 PUSHINT // ds credits elect_at elect_close finished total_stake members failed _19=17
CONFIGOPTPARAM // ds credits elect_at elect_close finished total_stake members failed _20
CTOS // ds credits elect_at elect_close finished total_stake members failed cs
LDGRAMS // ds credits elect_at elect_close finished total_stake members failed min_stake cs
LDGRAMS // ds credits elect_at elect_close finished total_stake members failed min_stake max_stake cs
LDGRAMS // ds credits elect_at elect_close finished total_stake members failed min_stake max_stake min_total_stake cs
32 LDU // ds credits elect_at elect_close finished total_stake members failed min_stake max_stake min_total_stake max_stake_factor cs
ENDS
s6 s1 PUSH2 // ds credits elect_at elect_close finished total_stake members failed min_stake max_stake min_total_stake max_stake_factor total_stake min_total_stake
LESS // ds credits elect_at elect_close finished total_stake members failed min_stake max_stake min_total_stake max_stake_factor _35
IFJMP:<{ // ds credits elect_at elect_close finished total_stake members failed min_stake max_stake min_total_stake max_stake_factor
12 BLKDROP //
postpone_elections CALLDICT // _36
}> // ds credits elect_at elect_close finished total_stake members failed min_stake max_stake min_total_stake max_stake_factor
s0 s4 XCHG // ds credits elect_at elect_close finished total_stake members max_stake_factor min_stake max_stake min_total_stake failed
IFJMP:<{ // ds credits elect_at elect_close finished total_stake members max_stake_factor min_stake max_stake min_total_stake
11 BLKDROP //
postpone_elections CALLDICT // _37
}> // ds credits elect_at elect_close finished total_stake members max_stake_factor min_stake max_stake min_total_stake
s0 s6 XCHG // ds credits elect_at elect_close min_total_stake total_stake members max_stake_factor min_stake max_stake finished
IFJMP:<{ // ds credits elect_at elect_close min_total_stake total_stake members max_stake_factor min_stake max_stake
10 BLKDROP //
FALSE // _38
}> // ds credits elect_at elect_close min_total_stake total_stake members max_stake_factor min_stake max_stake
s3 s8 XCHG
s8 PUSH
s3 s2 XCPU
s7 s7 XCHG2 // ds members elect_at elect_close min_stake total_stake credits members min_stake max_stake min_total_stake max_stake_factor
try_elect CALLDICT // ds members elect_at elect_close min_stake total_stake credits vdict total_weight frozen total_stakes cnt
DUP // ds members elect_at elect_close min_stake total_stake credits vdict total_weight frozen total_stakes cnt cnt
0 EQINT // ds members elect_at elect_close min_stake total_stake credits vdict total_weight frozen total_stakes cnt failed
DUP // ds members elect_at elect_close min_stake total_stake credits vdict total_weight frozen total_stakes cnt failed failed
NOT // ds members elect_at elect_close min_stake total_stake credits vdict total_weight frozen total_stakes cnt failed finished
s11 PUSH
s0 s6 XCHG
s5 s11 XCHG
s4 s10 XCHG
s3 s9 XCHG
s13 s13 s13 XCHG3 // ds total_weight elect_at frozen total_stakes cnt credits vdict elect_at elect_close min_stake total_stake members failed finished
pack_elect CALLDICT // ds total_weight elect_at frozen total_stakes cnt credits vdict elect
s3 PUSH // ds total_weight elect_at frozen total_stakes cnt credits vdict elect cnt
IFNOTJMP:<{ // ds total_weight elect_at frozen total_stakes cnt credits vdict elect
NIP
s2 POP
s2 POP
s2 POP
s2 POP
s2 POP // ds elect credits
NEWC // ds elect credits _49
s1 s2 XCHG // ds credits elect _49
STDICT // ds credits _50
STDICT // ds _51
SWAP // _51 ds
STSLICER // _52
ENDC // _53
c4 POP
postpone_elections CALLDICT // _55
}> // ds total_weight elect_at frozen total_stakes cnt credits vdict elect
get_validator_conf CALLDICT // ds total_weight elect_at frozen total_stakes cnt credits vdict elect _153 _154 _155 _156
s2 POP // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held elect_end_before
NOW // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held elect_end_before _62
SWAP // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held _62 elect_end_before
ADD // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held _63
-60 ADDCONST // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held _65
s9 PUSH // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held _65 elect_at
MAX // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held start
16 PUSHINT // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held start _68=16
CONFIGOPTPARAM // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held start _69
CTOS // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held start _70
16 PUSHINT // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held start _70 _71=16
SDSKIPFIRST // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held start _72
16 PLDU // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held start main_validators
s7 s(-1) PUXC // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held start cnt main_validators
MIN // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held start _76
s1 s3 PUSH2 // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held start _76 start elect_for
ADD // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held start _76 _77
18 PUSHINT // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held start _76 _77 _78=18
NEWC // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held start _76 _77 _78=18 _79
8 STU // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held start _76 _77 _81
s3 s(-1) PUXC // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held start _76 _77 start _81
32 STU // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held start _76 _77 _83
32 STU // ds total_weight elect_at frozen total_stakes cnt credits vdict elect elect_for stake_held start _76 _85
s1 s8 XCHG // ds total_weight elect_at frozen total_stakes _76 credits vdict elect elect_for stake_held start cnt _85
16 STU // ds total_weight elect_at frozen total_stakes _76 credits vdict elect elect_for stake_held start _87
s1 s7 XCHG // ds total_weight elect_at frozen total_stakes start credits vdict elect elect_for stake_held _76 _87
16 STU // ds total_weight elect_at frozen total_stakes start credits vdict elect elect_for stake_held _89
s1 s10 XCHG // ds stake_held elect_at frozen total_stakes start credits vdict elect elect_for total_weight _89
64 STU // ds stake_held elect_at frozen total_stakes start credits vdict elect elect_for _91
s1 s3 XCHG // ds stake_held elect_at frozen total_stakes start credits elect_for elect vdict _91
STDICT // ds stake_held elect_at frozen total_stakes start credits elect_for elect _92
ENDC // ds stake_held elect_at frozen total_stakes start credits elect_for elect vset
0 PUSHINT // ds stake_held elect_at frozen total_stakes start credits elect_for elect vset _95=0
CONFIGOPTPARAM // ds stake_held elect_at frozen total_stakes start credits elect_for elect vset _96
CTOS // ds stake_held elect_at frozen total_stakes start credits elect_for elect vset _97
256 PLDU // ds stake_held elect_at frozen total_stakes start credits elect_for elect vset config_addr
s1 s8 PUSH2 // ds stake_held elect_at frozen total_stakes start credits elect_for elect vset config_addr vset elect_at
send_validator_set_to_config CALLDICT
s0 s9 XCHG // vset stake_held elect_at frozen total_stakes start credits elect_for elect ds
LDDICT // vset stake_held elect_at frozen total_stakes start credits elect_for elect past_elect ds
FALSE // vset stake_held elect_at frozen total_stakes start credits elect_for elect past_elect ds _105
s0 s11 XCHG // _105 stake_held elect_at frozen total_stakes start credits elect_for elect past_elect ds vset
HASHCU // _105 stake_held elect_at frozen total_stakes start credits elect_for elect past_elect ds _106
s6 s4 XCHG2 // _105 stake_held elect_at frozen total_stakes ds credits _106 elect past_elect start elect_for
ADD // _105 stake_held elect_at frozen total_stakes ds credits _106 elect past_elect _107
s9 PUSH // _105 stake_held elect_at frozen total_stakes ds credits _106 elect past_elect _107 stake_held
ADD // _105 stake_held elect_at frozen total_stakes ds credits _106 elect past_elect _108
NEWC // _105 stake_held elect_at frozen total_stakes ds credits _106 elect past_elect _108 _109
32 STU // _105 stake_held elect_at frozen total_stakes ds credits _106 elect past_elect _111
s1 s9 XCHG // _105 past_elect elect_at frozen total_stakes ds credits _106 elect stake_held _111
32 STU // _105 past_elect elect_at frozen total_stakes ds credits _106 elect _113
s1 s2 XCHG // _105 past_elect elect_at frozen total_stakes ds credits elect _106 _113
256 STU // _105 past_elect elect_at frozen total_stakes ds credits elect _115
s1 s5 XCHG // _105 past_elect elect_at elect total_stakes ds credits frozen _115
STDICT // _105 past_elect elect_at elect total_stakes ds credits _116
s0 s3 XCHG2 // _105 past_elect elect_at elect credits ds _116 total_stakes
STGRAMS // _105 past_elect elect_at elect credits ds _117
0 PUSHINT // _105 past_elect elect_at elect credits ds _117 _118=0
STGRAMS // _105 past_elect elect_at elect credits ds _119
s1 s6 XCHG // ds past_elect elect_at elect credits _105 _119
1 STI // ds past_elect elect_at elect credits _121
s0 s3 s4 XCHG3
32 PUSHINT // ds elect credits _121 elect_at past_elect _122=32
DICTUSETB // ds elect credits past_elect
NEWC // ds elect credits past_elect _124
s1 s3 XCHG // ds past_elect credits elect _124
STDICT // ds past_elect credits _125
STDICT // ds past_elect _126
STDICT // ds _127
SWAP // _127 ds
STSLICER // _128
ENDC // _129
c4 POP
TRUE // _131
}>
update_active_vset_id PROC:<{
//
load_data CALLDICT // elect credits past_elect grams active_id active_hash
34 PUSHINT // elect credits past_elect grams active_id active_hash _8=34
CONFIGOPTPARAM // elect credits past_elect grams active_id active_hash _9
HASHCU // elect credits past_elect grams active_id active_hash cur_hash
s0 s1 PUSH2 // elect credits past_elect grams active_id active_hash cur_hash cur_hash active_hash
EQUAL // elect credits past_elect grams active_id active_hash cur_hash _11
IFJMP:<{ // elect credits past_elect grams active_id active_hash cur_hash
7 BLKDROP //
FALSE // _12
}> // elect credits past_elect grams active_id active_hash cur_hash
s2 PUSH // elect credits past_elect grams active_id active_hash cur_hash active_id
IF:<{ // elect credits past_elect grams active_id active_hash cur_hash
s2 s4 PUSH2
32 PUSHINT // elect credits past_elect grams active_id active_hash cur_hash active_id past_elect _15=32
DICTUGET
NULLSWAPIFNOT // elect credits past_elect grams active_id active_hash cur_hash fs f
IF:<{ // elect credits past_elect grams active_id active_hash cur_hash fs
32 LDU // elect credits past_elect grams active_id active_hash cur_hash _99 _98
NIP // elect credits past_elect grams active_id active_hash cur_hash fs
DUP // elect credits past_elect grams active_id active_hash cur_hash fs0 fs
32 LDU // elect credits past_elect grams active_id active_hash cur_hash fs0 _24 fs
256 LDU // elect credits past_elect grams active_id active_hash cur_hash fs0 _24 _103 _102
DROP // elect credits past_elect grams active_id active_hash cur_hash fs0 stake_held hash
s0 s4 XCHG2 // elect credits past_elect grams active_id stake_held cur_hash fs0 hash active_hash
EQUAL // elect credits past_elect grams active_id stake_held cur_hash fs0 _31
57 THROWIFNOT
NOW // elect credits past_elect grams active_id stake_held cur_hash fs0 _33
s0 s3 XCHG2 // elect credits past_elect grams active_id fs0 cur_hash _33 stake_held
ADD // elect credits past_elect grams active_id fs0 cur_hash unfreeze_time
NEWC // elect credits past_elect grams active_id fs0 cur_hash unfreeze_time _36
32 STU // elect credits past_elect grams active_id fs0 cur_hash _38
ROT // elect credits past_elect grams active_id cur_hash _38 fs0
STSLICER // elect credits past_elect grams active_id cur_hash _39
s0 s0 s4 XCHG3
32 PUSHINT // elect credits cur_hash grams _39 active_id past_elect _40=32
DICTUSETB // elect credits cur_hash grams past_elect
}>ELSE<{
s1 s5 XCHG
s1 s3 XCHG
3 BLKDROP // elect credits cur_hash grams past_elect
}>
}>ELSE<{
s4 s1 s4 XCHG3
2DROP // elect credits cur_hash grams past_elect
}>
-1 PUSHINT // elect credits cur_hash grams past_elect id=-1
UNTIL:<{
OVER
32 PUSHINT // elect credits cur_hash grams past_elect id past_elect _46=32
DICTUGETNEXT
NULLSWAPIFNOT
NULLSWAPIFNOT // elect credits cur_hash grams past_elect fs id f
DUP // elect credits cur_hash grams past_elect fs id f f
IF:<{ // elect credits cur_hash grams past_elect fs id f
s0 s2 XCHG // elect credits cur_hash grams past_elect f id fs
64 LDU // elect credits cur_hash grams past_elect f id _50 fs
256 LDU // elect credits cur_hash grams past_elect f id tm hash fs
s1 s7 PUSH2 // elect credits cur_hash grams past_elect f id tm hash fs hash cur_hash
EQUAL // elect credits cur_hash grams past_elect f id tm hash fs _56
IF:<{ // elect credits cur_hash grams past_elect f id tm hash fs
s4 POP // elect credits cur_hash grams past_elect fs id tm hash
s0 s3 XCHG // elect credits cur_hash grams past_elect hash id tm fs
LDDICT // elect credits cur_hash grams past_elect hash id tm _60 fs
LDGRAMS // elect credits cur_hash grams past_elect hash id tm _60 _62 fs
LDGRAMS // elect credits cur_hash grams past_elect hash id tm dict total_stake bonuses fs
s8 PUSH // elect credits cur_hash grams past_elect hash id tm dict total_stake bonuses fs grams
3 RSHIFT# // elect credits cur_hash grams past_elect hash id tm dict total_stake bonuses fs amount
s9 s9 XCPU // elect credits cur_hash amount past_elect hash id tm dict total_stake bonuses fs grams amount
SUB // elect credits cur_hash amount past_elect hash id tm dict total_stake bonuses fs grams
s2 s9 XCHG2 // elect credits cur_hash grams past_elect hash id tm dict total_stake fs bonuses amount
ADD // elect credits cur_hash grams past_elect hash id tm dict total_stake fs bonuses
NEWC // elect credits cur_hash grams past_elect hash id tm dict total_stake fs bonuses _72
s1 s5 XCHG // elect credits cur_hash grams past_elect hash id bonuses dict total_stake fs tm _72
64 STU // elect credits cur_hash grams past_elect hash id bonuses dict total_stake fs _74
s1 s6 XCHG // elect credits cur_hash grams past_elect fs id bonuses dict total_stake hash _74
256 STU // elect credits cur_hash grams past_elect fs id bonuses dict total_stake _76
s1 s2 XCHG // elect credits cur_hash grams past_elect fs id bonuses total_stake dict _76
STDICT // elect credits cur_hash grams past_elect fs id bonuses total_stake _77
SWAP // elect credits cur_hash grams past_elect fs id bonuses _77 total_stake
STGRAMS // elect credits cur_hash grams past_elect fs id bonuses _78
SWAP // elect credits cur_hash grams past_elect fs id _78 bonuses
STGRAMS // elect credits cur_hash grams past_elect fs id _79
ROT // elect credits cur_hash grams past_elect id _79 fs
STSLICER // elect credits cur_hash grams past_elect id _80
SWAP
32 PUSHINT
s1 s3 s3 PUXC2 // elect credits cur_hash grams id _80 id past_elect _81=32
DICTUSETB // elect credits cur_hash grams id past_elect
FALSE // elect credits cur_hash grams id past_elect f
}>ELSE<{
s3 s5 XCHG
s3 s4 XCHG
3 BLKDROP // elect credits cur_hash grams id past_elect f
}>
}>ELSE<{
s3 s0 s3 XCHG3
DROP // elect credits cur_hash grams id past_elect f
}>
NOT // elect credits cur_hash grams id past_elect _84
s1 s2 XCHG // elect credits cur_hash grams past_elect id _84
}> // elect credits cur_hash grams past_elect id
DUP // elect credits cur_hash grams past_elect id id
ISNULL // elect credits cur_hash grams past_elect id _85
IF:<{ // elect credits cur_hash grams past_elect id
DROP // elect credits cur_hash grams past_elect
0 PUSHINT // elect credits cur_hash grams past_elect _86=0
}>ELSE<{ // elect credits cur_hash grams past_elect _86
}> // elect credits active_hash grams past_elect active_id
s0 s3 XCHG2 // elect credits past_elect grams active_id active_hash
store_data CALLDICT
TRUE // _89
}>
cell_hash_eq? PROC:<{
// vset expected_vset_hash
OVER // vset expected_vset_hash vset
ISNULL // vset expected_vset_hash _2
IF:<{ // vset expected_vset_hash
2DROP //
FALSE // _3
}>ELSE<{ // vset expected_vset_hash
SWAP // expected_vset_hash vset
HASHCU // expected_vset_hash _5
SWAP // _5 expected_vset_hash
EQUAL // _3
}>
}>
validator_set_installed PROC:<{
// ds elect credits
SWAP // ds credits elect
unpack_elect CALLDICT // ds credits _44 _45 _46 _47 _48 _49 _50
s0 s5 XCHG
5 BLKDROP // ds credits elect_at finished
IFNOTJMP:<{ // ds credits elect_at
3 BLKDROP //
FALSE // _11
}> // ds credits elect_at
s0 s2 XCHG // elect_at credits ds
LDDICT // elect_at credits past_elections ds
s3 s1 XCPU
32 PUSHINT // ds credits past_elections elect_at past_elections _17=32
DICTUGET
NULLSWAPIFNOT // ds credits past_elections fs f
IFNOTJMP:<{ // ds credits past_elections fs
4 BLKDROP //
FALSE // _19
}> // ds credits past_elections fs
64 PUSHINT // ds credits past_elections fs _21=64
SDSKIPFIRST // ds credits past_elections _22
256 PLDU // ds credits past_elections vset_hash
34 PUSHINT // ds credits past_elections vset_hash _25=34
CONFIGOPTPARAM // ds credits past_elections vset_hash _26
OVER // ds credits past_elections vset_hash _26 vset_hash
cell_hash_eq? CALLDICT // ds credits past_elections vset_hash _27
36 PUSHINT // ds credits past_elections vset_hash _27 _28=36
CONFIGOPTPARAM // ds credits past_elections vset_hash _27 _29
ROT // ds credits past_elections _27 _29 vset_hash
cell_hash_eq? CALLDICT // ds credits past_elections _27 _30
OR // ds credits past_elections _31
IFJMP:<{ // ds credits past_elections
FALSE // ds credits past_elections _32
NEWC // ds credits past_elections _32 _33
1 STI // ds credits past_elections _35
s1 s2 XCHG // ds past_elections credits _35
STDICT // ds past_elections _36
STDICT // ds _37
SWAP // _37 ds
STSLICER // _38
ENDC // _39
c4 POP
update_active_vset_id CALLDICT // _41
DROP //
TRUE // _42
}> // ds credits past_elections
3 BLKDROP //
FALSE // _43
}>
check_unfreeze PROC:<{
//
load_data CALLDICT // elect credits past_elect grams active_id active_hash
-1 PUSHINT // elect credits past_elect grams active_id active_hash id=-1
UNTIL:<{
s4 PUSH
32 PUSHINT // elect credits past_elect grams active_id active_hash id past_elect _11=32
DICTUGETNEXT
NULLSWAPIFNOT
NULLSWAPIFNOT // elect credits past_elect grams active_id active_hash fs id f
DUP // elect credits past_elect grams active_id active_hash fs id f f
IF:<{ // elect credits past_elect grams active_id active_hash fs id f
s0 s2 XCHG // elect credits past_elect grams active_id active_hash f id fs
32 LDU // elect credits past_elect grams active_id active_hash f id _39 _38
DROP // elect credits past_elect grams active_id active_hash f id unfreeze_at
NOW // elect credits past_elect grams active_id active_hash f id unfreeze_at _17
LEQ // elect credits past_elect grams active_id active_hash f id _18
s1 s4 PUSH2 // elect credits past_elect grams active_id active_hash f id _18 id active_id
NEQ // elect credits past_elect grams active_id active_hash f id _18 _19
AND // elect credits past_elect grams active_id active_hash f id _20
IF:<{ // elect credits past_elect grams active_id active_hash f id
NIP // elect credits past_elect grams active_id active_hash id
s5 s4 s4 XC2PU // elect active_hash id grams active_id credits past_elect id
unfreeze_all CALLDICT // elect active_hash id grams active_id credits past_elect unused_prizes
s1 s4 XCHG // elect active_hash id past_elect active_id credits grams unused_prizes
ADD // elect active_hash id past_elect active_id credits grams
s6 s1 s3 PUSH3
s3 s5 s8 PUSH3 // elect active_hash id past_elect active_id credits grams elect credits past_elect grams active_id active_hash
store_data CALLDICT
FALSE // elect active_hash id past_elect active_id credits grams f
}>ELSE<{
s6 s1 s5 XCHG3
s4 s4 XCHG2 // elect active_hash id past_elect active_id credits grams f
}>
}>ELSE<{
s3 s7 XCHG
s1 s6 XCHG
s5 s0 s5 XCHG3
DROP // elect active_hash id past_elect active_id credits grams f
}>
NOT // elect active_hash id past_elect active_id credits grams _26
s2 s6 XCHG
s4 s5 XCHG
s1 s4 XCHG // elect credits past_elect grams active_id active_hash id _26
}> // elect credits past_elect grams active_id active_hash id
s0 s6 XCHG
6 BLKDROP // id
ISNULL // _27
NOT // _28
}>
announce_new_elections PROC:<{
// ds elect credits
NIP // ds credits
36 PUSHINT // ds credits _4=36
CONFIGOPTPARAM // ds credits next_vset
ISNULL // ds credits _6
IFNOTJMP:<{ // ds credits
2DROP //
FALSE // _7
}> // ds credits
1 PUSHINT // ds credits _9=1
CONFIGOPTPARAM // ds credits _10
CTOS // ds credits _11
256 PLDU // ds credits elector_addr
MYADDR // ds credits elector_addr _16
REWRITESTDADDR // ds credits elector_addr my_wc my_addr
SWAP // ds credits elector_addr my_addr my_wc
INC // ds credits elector_addr my_addr _19
s0 s2 XCHG // ds credits _19 my_addr elector_addr
NEQ // ds credits _19 _20
OR // ds credits _21
IFJMP:<{ // ds credits
2DROP //
FALSE // _22
}> // ds credits
34 PUSHINT // ds credits _24=34
CONFIGOPTPARAM // ds credits cur_vset
DUP // ds credits cur_vset cur_vset
ISNULL // ds credits cur_vset _26
IFJMP:<{ // ds credits cur_vset
3 BLKDROP //
FALSE // _27
}> // ds credits cur_vset
get_validator_conf CALLDICT // ds credits cur_vset _76 _77 _78 _79
DROP
s2 POP // ds credits cur_vset elect_end_before elect_begin_before
s0 s2 XCHG // ds credits elect_begin_before elect_end_before cur_vset
CTOS // ds credits elect_begin_before elect_end_before _34
40 PUSHINT // ds credits elect_begin_before elect_end_before _34 _37
SDSKIPFIRST // ds credits elect_begin_before elect_end_before _38
32 PLDU // ds credits elect_begin_before elect_end_before cur_valid_until
NOW // ds credits elect_begin_before elect_end_before cur_valid_until t
s1 s3 XCPU // ds credits elect_begin_before elect_end_before t cur_valid_until elect_begin_before
SUB // ds credits elect_begin_before elect_end_before t t0
2DUP // ds credits elect_begin_before elect_end_before t t0 t t0
LESS // ds credits elect_begin_before elect_end_before t t0 _45
IFJMP:<{ // ds credits elect_begin_before elect_end_before t t0
6 BLKDROP //
FALSE // _46
}> // ds credits elect_begin_before elect_end_before t t0
2DUP // ds credits elect_begin_before elect_end_before t t0 t t0
SUB // ds credits elect_begin_before elect_end_before t t0 _47
60 LESSINT // ds credits elect_begin_before elect_end_before t t0 _49
IF:<{ // ds credits elect_begin_before elect_end_before t t0
NIP // ds credits elect_begin_before elect_end_before t
}>ELSE<{
DROP // ds credits elect_begin_before elect_end_before t
}>
17 PUSHINT // ds credits elect_begin_before elect_end_before t _52=17
CONFIGOPTPARAM // ds credits elect_begin_before elect_end_before t _53
CTOS // ds credits elect_begin_before elect_end_before t _54
LDGRAMS // ds credits elect_begin_before elect_end_before t _81 _80
DROP // ds credits elect_begin_before elect_end_before t min_stake
s0 s3 XCHG // ds credits min_stake elect_end_before t elect_begin_before
ADD // ds credits min_stake elect_end_before elect_at
s0 DUMP // ds credits min_stake elect_end_before elect_at
s0 s1 PUXC // ds credits min_stake elect_at elect_at elect_end_before
SUB // ds credits min_stake elect_at elect_close
0 PUSHINT // ds credits min_stake elect_at elect_close _62=0
NEWDICT // ds credits min_stake elect_at elect_close _62=0 _63
FALSE // ds credits min_stake elect_at elect_close _62=0 _63 _64
s4 s5 XCHG
s3 s4 XCHG
FALSE // ds credits elect_at elect_close min_stake _62=0 _63 _64 _65
pack_elect CALLDICT // ds credits elect
NEWC // ds credits elect _67
STDICT // ds credits _68
STDICT // ds _69
SWAP // _69 ds
STSLICER // _70
ENDC // _71
c4 POP
TRUE // _73
}>
run_ticktock PROC:<{
// is_tock
DROP //
c4 PUSH // _2
CTOS // ds
LDDICT // _6 ds
LDDICT // elect credits ds
s2 PUSH // elect credits ds elect
ISNULL // elect credits ds _10
IF:<{ // elect credits ds
-ROT // ds elect credits
announce_new_elections CALLDICT // _18
0 THROWIF
}>ELSE<{ // elect credits ds
s0 s2 s1 PUSH3 // elect credits ds ds elect credits
conduct_elections CALLDICT // elect credits ds _12
0 THROWIF
-ROT // ds elect credits
validator_set_installed CALLDICT // _15
0 THROWIF
}>
update_active_vset_id CALLDICT // _21
0 THROWIF
check_unfreeze CALLDICT // _23
DROP //
}>
active_election_id PROC:<{
//
c4 PUSH // _1
CTOS // _2
PLDDICT // elect
DUP // elect elect
ISNULL // elect _4
IF:<{ // elect
DROP //
0 PUSHINT // _5=0
}>ELSE<{ // elect
CTOS // _7
32 PLDU // _5
}>
}>
participates_in PROC:<{
// validator_pubkey
c4 PUSH // validator_pubkey _2
CTOS // validator_pubkey _3
PLDDICT // validator_pubkey elect
DUP // validator_pubkey elect elect
ISNULL // validator_pubkey elect _5
IFJMP:<{ // validator_pubkey elect
2DROP //
0 PUSHINT // _6=0
}> // validator_pubkey elect
unpack_elect CALLDICT // validator_pubkey _23 _24 _25 _26 _27 _28 _29
s2 s6 XCHG
6 BLKDROP // validator_pubkey members
8 PUSHPOW2 // validator_pubkey members _17=256
DICTUGET
NULLSWAPIFNOT // mem found
IF:<{ // mem
LDGRAMS // _33 _32
DROP // _19
}>ELSE<{ // mem
DROP //
0 PUSHINT // _19=0
}>
}>
participant_list PROC:<{
//
c4 PUSH // _1
CTOS // _2
PLDDICT // elect
DUP // elect elect
ISNULL // elect _4
IFJMP:<{ // elect
DROP //
PUSHNULL // _5
}> // elect
unpack_elect CALLDICT // _35 _36 _37 _38 _39 _40 _41
s2 s6 XCHG
6 BLKDROP // members
PUSHNULL // members l
256 PUSHPOW2DEC // members l id
UNTIL:<{
s2 PUSH
8 PUSHPOW2 // members l id members _28=256
DICTUGETPREV
NULLSWAPIFNOT
NULLSWAPIFNOT // members l fs id f
DUP // members l fs id f f
IF:<{ // members l fs id f
s0 s2 XCHG // members l f id fs
LDGRAMS // members l f id _46 _45
DROP // members l f id _30
s1 s(-1) PUXC // members l f id id _30
PAIR // members l f id _32
s0 s3 XCHG2 // members id f _32 l
CONS // members id f l
}>ELSE<{
2SWAP
DROP // members id f l
}>
SWAP // members id l f
NOT // members id l _34
s1 s2 XCHG // members l id _34
}> // members l id
DROP
NIP // l
}>
compute_returned_stake PROC:<{
// wallet_addr
c4 PUSH // wallet_addr _2
CTOS // wallet_addr cs
LDDICT // wallet_addr _19 _18
NIP // wallet_addr cs
LDDICT // wallet_addr _21 _20
DROP // wallet_addr credits
8 PUSHPOW2 // wallet_addr credits _12=256
DICTUGET
NULLSWAPIFNOT // val f
IF:<{ // val
LDGRAMS // _25 _24
DROP // _14
}>ELSE<{ // val
DROP //
0 PUSHINT // _14=0
}>
}>
}END>c