mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
572 lines
38 KiB
Plaintext
572 lines
38 KiB
Plaintext
// automatically generated from `smartcont/stdlib.fc` `smartcont/payment-channel-code.fc`
|
|
PROGRAM{
|
|
DECLPROC unpack_data
|
|
DECLPROC pack_data
|
|
DECLPROC unpack_config
|
|
DECLPROC unwrap_signatures
|
|
DECLPROC unpack_state_init
|
|
DECLPROC pack_state_init
|
|
DECLPROC unpack_state_close
|
|
DECLPROC pack_state_close
|
|
DECLPROC send_payout
|
|
DECLPROC do_payout
|
|
DECLPROC with_init
|
|
DECLPROC with_close
|
|
DECLPROC recv_any
|
|
DECLPROC recv_internal
|
|
DECLPROC recv_external
|
|
unpack_data PROCREF:<{
|
|
//
|
|
c4 PUSH // _1
|
|
CTOS // cs
|
|
LDREF // _4 cs
|
|
LDREF // res res cs
|
|
ENDS
|
|
}>
|
|
pack_data PROCREF:<{
|
|
// config state
|
|
SWAP
|
|
NEWC // state config _2
|
|
STREF // state _3
|
|
STREF // _4
|
|
ENDC // _5
|
|
c4 POP
|
|
}>
|
|
unpack_config PROC:<{
|
|
// config
|
|
CTOS // cs
|
|
32 LDU // _4 cs
|
|
32 LDU // _4 _7 cs
|
|
256 LDU // _4 _7 _10 cs
|
|
256 LDU // _4 _7 _10 _13 cs
|
|
LDREF // _4 _7 _10 _13 _16 cs
|
|
SWAP // _4 _7 _10 _13 cs _16
|
|
CTOS // _4 _7 _10 _13 cs _18
|
|
SWAP // _4 _7 _10 _13 _18 cs
|
|
LDREF // _4 _7 _10 _13 _18 _19 cs
|
|
SWAP // _4 _7 _10 _13 _18 cs _19
|
|
CTOS // _4 _7 _10 _13 _18 cs _21
|
|
SWAP // _4 _7 _10 _13 _18 _21 cs
|
|
64 LDU // res res res res res res res cs
|
|
ENDS
|
|
}>
|
|
unwrap_signatures PROC:<{
|
|
// cs a_key b_key
|
|
s0 s2 XCHG // b_key a_key cs
|
|
1 LDI // b_key a_key a? cs
|
|
s0 s1 PUSH2 // b_key a_key a? cs a_sig a?
|
|
IF:<{ // b_key a_key a? cs a_sig
|
|
DROP // b_key a_key a? cs
|
|
LDREF // b_key a_key a? _8 cs
|
|
SWAP // b_key a_key a? cs _8
|
|
CTOS // b_key a_key a? cs _10
|
|
9 PUSHPOW2 // b_key a_key a? cs _10 _11=512
|
|
PLDSLICEX // b_key a_key a? cs a_sig
|
|
}> // b_key a_key a? cs a_sig
|
|
SWAP // b_key a_key a? a_sig cs
|
|
1 LDI // b_key a_key a? a_sig b? cs
|
|
s0 s1 PUSH2 // b_key a_key a? a_sig b? cs b_sig b?
|
|
IF:<{ // b_key a_key a? a_sig b? cs b_sig
|
|
DROP // b_key a_key a? a_sig b? cs
|
|
LDREF // b_key a_key a? a_sig b? _18 cs
|
|
SWAP // b_key a_key a? a_sig b? cs _18
|
|
CTOS // b_key a_key a? a_sig b? cs _20
|
|
9 PUSHPOW2 // b_key a_key a? a_sig b? cs _20 _21=512
|
|
PLDSLICEX // b_key a_key a? a_sig b? cs b_sig
|
|
}> // b_key a_key a? a_sig b? cs b_sig
|
|
OVER // b_key a_key a? a_sig b? cs b_sig cs
|
|
HASHSU // b_key a_key a? a_sig b? cs b_sig hash
|
|
s5 PUSH // b_key a_key a? a_sig b? cs b_sig hash a?
|
|
IF:<{ // b_key a_key a? a_sig b? cs b_sig hash
|
|
31 PUSHINT // b_key a_key a? a_sig b? cs b_sig hash _25
|
|
s1 s5 s7 PUXC2 // b_key hash a? _25 b? cs b_sig hash a_sig a_key
|
|
CHKSIGNU // b_key hash a? _25 b? cs b_sig _26
|
|
s1 s4 XCHG // b_key hash a? b_sig b? cs _25 _26
|
|
THROWANYIFNOT
|
|
s2 s4 XCHG // b_key b_sig a? hash b? cs
|
|
}>ELSE<{
|
|
s4 POP
|
|
s5 POP // b_key b_sig a? hash b? cs
|
|
}>
|
|
OVER // b_key b_sig a? hash b? cs b?
|
|
IF:<{ // b_key b_sig a? hash b? cs
|
|
32 PUSHINT // b_key b_sig a? hash b? cs _28
|
|
s3 s5 s6 XCHG3 // _28 cs a? b? hash b_sig b_key
|
|
CHKSIGNU // _28 cs a? b? _29
|
|
s1 s4 XCHG // b? cs a? _28 _29
|
|
THROWANYIFNOT
|
|
s1 s2 XCHG // cs b? a?
|
|
}>ELSE<{
|
|
s5 POP
|
|
s3 POP
|
|
DROP // cs b? a?
|
|
}>
|
|
SWAP // cs a? b?
|
|
}>
|
|
unpack_state_init PROC:<{
|
|
// state
|
|
1 LDI // _1 state
|
|
1 LDI // _1 _4 state
|
|
LDGRAMS // _1 _4 _7 state
|
|
LDGRAMS // _1 _4 _7 _9 state
|
|
32 LDU // _1 _4 _7 _9 _11 state
|
|
LDGRAMS // _1 _4 _7 _9 _11 _14 state
|
|
LDGRAMS // _1 _4 _7 _9 _11 _14 _31 _30
|
|
DROP // _1 _4 _7 _9 _11 _14 _16
|
|
}>
|
|
pack_state_init PROC:<{
|
|
// signed_A? signed_B? min_A min_B expire_at A B
|
|
0 PUSHINT // signed_A? signed_B? min_A min_B expire_at A B _7
|
|
NEWC // signed_A? signed_B? min_A min_B expire_at A B _7 _8
|
|
3 STI // signed_A? signed_B? min_A min_B expire_at A B _10
|
|
s1 s7 XCHG // B signed_B? min_A min_B expire_at A signed_A? _10
|
|
1 STI // B signed_B? min_A min_B expire_at A _12
|
|
s1 s5 XCHG // B A min_A min_B expire_at signed_B? _12
|
|
1 STI // B A min_A min_B expire_at _14
|
|
s0 s3 XCHG2 // B A expire_at min_B _14 min_A
|
|
STGRAMS // B A expire_at min_B _15
|
|
SWAP // B A expire_at _15 min_B
|
|
STGRAMS // B A expire_at _16
|
|
32 STU // B A _18
|
|
SWAP // B _18 A
|
|
STGRAMS // B _19
|
|
SWAP // _19 B
|
|
STGRAMS // _20
|
|
ENDC // _21
|
|
}>
|
|
unpack_state_close PROC:<{
|
|
// state
|
|
1 LDI // _1 state
|
|
1 LDI // _1 _4 state
|
|
LDGRAMS // _1 _4 _7 state
|
|
LDGRAMS // _1 _4 _7 _9 state
|
|
32 LDU // _1 _4 _7 _9 _11 state
|
|
LDGRAMS // _1 _4 _7 _9 _11 _14 state
|
|
LDGRAMS // _1 _4 _7 _9 _11 _14 _31 _30
|
|
DROP // _1 _4 _7 _9 _11 _14 _16
|
|
}>
|
|
pack_state_close PROC:<{
|
|
// signed_A? signed_B? promise_A promise_B expire_at A B
|
|
1 PUSHINT // signed_A? signed_B? promise_A promise_B expire_at A B _7
|
|
NEWC // signed_A? signed_B? promise_A promise_B expire_at A B _7 _8
|
|
3 STI // signed_A? signed_B? promise_A promise_B expire_at A B _10
|
|
s1 s7 XCHG // B signed_B? promise_A promise_B expire_at A signed_A? _10
|
|
1 STI // B signed_B? promise_A promise_B expire_at A _12
|
|
s1 s5 XCHG // B A promise_A promise_B expire_at signed_B? _12
|
|
1 STI // B A promise_A promise_B expire_at _14
|
|
s0 s3 XCHG2 // B A expire_at promise_B _14 promise_A
|
|
STGRAMS // B A expire_at promise_B _15
|
|
SWAP // B A expire_at _15 promise_B
|
|
STGRAMS // B A expire_at _16
|
|
32 STU // B A _18
|
|
SWAP // B _18 A
|
|
STGRAMS // B _19
|
|
SWAP // _19 B
|
|
STGRAMS // _20
|
|
ENDC // _21
|
|
}>
|
|
send_payout PROC:<{
|
|
// s_addr amount channel_id flags
|
|
0x37fe7810 PUSHINT // s_addr amount channel_id flags _4
|
|
0 PUSHINT // s_addr amount channel_id flags _4 _5=0
|
|
16 PUSHINT // s_addr amount channel_id flags _4 _5=0 _6=16
|
|
NEWC // s_addr amount channel_id flags _4 _5=0 _6=16 _7
|
|
6 STU // s_addr amount channel_id flags _4 _5=0 _9
|
|
s0 s6 XCHG2 // _5=0 amount channel_id flags _4 _9 s_addr
|
|
STSLICER // _5=0 amount channel_id flags _4 _10
|
|
s0 s4 XCHG2 // _5=0 _4 channel_id flags _10 amount
|
|
STGRAMS // _5=0 _4 channel_id flags _11
|
|
s1 s4 XCHG // flags _4 channel_id _5=0 _11
|
|
107 STU // flags _4 channel_id _25
|
|
s1 s2 XCHG // flags channel_id _4 _25
|
|
32 STU // flags channel_id _27
|
|
64 STU // flags _29
|
|
ENDC // flags _30
|
|
SWAP // _30 flags
|
|
SENDRAWMSG
|
|
}>
|
|
do_payout PROC:<{
|
|
// promise_A promise_B A B a_addr b_addr channel_id
|
|
ACCEPT
|
|
s5 s6 XCHG2 // channel_id b_addr A B a_addr promise_B promise_A
|
|
SUB // channel_id b_addr A B a_addr diff
|
|
s3 PUSH // channel_id b_addr A B a_addr diff A
|
|
NEGATE // channel_id b_addr A B a_addr diff _10
|
|
s1 s(-1) PUXC // channel_id b_addr A B a_addr diff diff _10
|
|
LESS // channel_id b_addr A B a_addr diff _11
|
|
IF:<{ // channel_id b_addr A B a_addr diff
|
|
DROP // channel_id b_addr A B a_addr
|
|
s2 PUSH // channel_id b_addr A B a_addr A
|
|
NEGATE // channel_id b_addr A B a_addr diff
|
|
}> // channel_id b_addr A B a_addr diff
|
|
s0 s2 PUSH2 // channel_id b_addr A B a_addr diff diff B
|
|
GREATER // channel_id b_addr A B a_addr diff _13
|
|
IF:<{ // channel_id b_addr A B a_addr diff
|
|
DROP // channel_id b_addr A B a_addr
|
|
OVER // channel_id b_addr A B a_addr diff
|
|
}> // channel_id b_addr A B a_addr diff
|
|
s3 s3 XCPU // channel_id b_addr diff B a_addr A diff
|
|
ADD // channel_id b_addr diff B a_addr A
|
|
s2 s3 XCHG2 // channel_id b_addr A a_addr B diff
|
|
SUB // channel_id b_addr A a_addr B
|
|
s1 s2 s4 XCPU2
|
|
3 PUSHINT // channel_id b_addr A B a_addr A channel_id _16=3
|
|
send_payout CALLDICT
|
|
s2 s0 s3 XCPUXC
|
|
3 PUSHINT // B A b_addr B channel_id _18=3
|
|
send_payout CALLDICT
|
|
2 PUSHINT // B A _20
|
|
NEWC // B A _20 _21
|
|
3 STI // B A _23
|
|
SWAP // B _23 A
|
|
STGRAMS // B _24
|
|
SWAP // _24 B
|
|
STGRAMS // _25
|
|
ENDC // _26
|
|
}>
|
|
with_init PROC:<{
|
|
// state msg_value msg msg_signed_A? msg_signed_B? a_addr b_addr init_timeout channel_id
|
|
s0 s8 XCHG // channel_id msg_value msg msg_signed_A? msg_signed_B? a_addr b_addr init_timeout state
|
|
unpack_state_init CALLDICT // channel_id msg_value msg msg_signed_A? msg_signed_B? a_addr b_addr init_timeout signed_A? signed_B? min_A min_B expire_at A B
|
|
s2 PUSH // channel_id msg_value msg msg_signed_A? msg_signed_B? a_addr b_addr init_timeout signed_A? signed_B? min_A min_B expire_at A B expire_at
|
|
0 EQINT // channel_id msg_value msg msg_signed_A? msg_signed_B? a_addr b_addr init_timeout signed_A? signed_B? min_A min_B expire_at A B _18
|
|
IF:<{ // channel_id msg_value msg msg_signed_A? msg_signed_B? a_addr b_addr init_timeout signed_A? signed_B? min_A min_B expire_at A B
|
|
s2 POP // channel_id msg_value msg msg_signed_A? msg_signed_B? a_addr b_addr init_timeout signed_A? signed_B? min_A min_B B A
|
|
NOW // channel_id msg_value msg msg_signed_A? msg_signed_B? a_addr b_addr init_timeout signed_A? signed_B? min_A min_B B A _19
|
|
s0 s7 XCHG2 // channel_id msg_value msg msg_signed_A? msg_signed_B? a_addr b_addr A signed_A? signed_B? min_A min_B B _19 init_timeout
|
|
ADD // channel_id msg_value msg msg_signed_A? msg_signed_B? a_addr b_addr A signed_A? signed_B? min_A min_B B expire_at
|
|
s0 s6 XCHG2 // channel_id msg_value msg msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at A
|
|
}>ELSE<{
|
|
s7 POP // channel_id msg_value msg msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at A
|
|
}>
|
|
s0 s11 XCHG // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at msg
|
|
32 LDU // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at op msg
|
|
0x43278a28 PUSHINT // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at op msg _25
|
|
s2 s(-1) PUXC // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at op msg op _25
|
|
EQUAL // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at op msg _26
|
|
IFJMP:<{ // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at op msg
|
|
s2 s6 XCHG
|
|
6 BLKDROP
|
|
s4 POP
|
|
s4 POP
|
|
s5 POP // channel_id b_addr A B expire_at a_addr
|
|
35 PUSHINT // channel_id b_addr A B expire_at a_addr _27
|
|
s0 s2 XCHG
|
|
NOW // channel_id b_addr A B _27 a_addr expire_at _28
|
|
LESS // channel_id b_addr A B _27 a_addr _29
|
|
s1 s2 XCHG // channel_id b_addr A B a_addr _27 _29
|
|
THROWANYIFNOT
|
|
0 PUSHINT // channel_id b_addr A B a_addr _31=0
|
|
s4 s4 XCPU
|
|
s0 s6 XCHG // _31=0 _32=0 A B a_addr b_addr channel_id
|
|
do_payout CALLDICT // _33
|
|
}> // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at op msg
|
|
36 PUSHINT // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at op msg _34
|
|
0x27317822 PUSHINT // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at op msg _34 _35
|
|
s1 s3 XCHG // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at _34 msg op _35
|
|
EQUAL // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at _34 msg _36
|
|
s1 s2 XCHG // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at msg _34 _36
|
|
THROWANYIFNOT
|
|
LDGRAMS // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at _43 msg
|
|
LDGRAMS // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at _43 _45 msg
|
|
LDGRAMS // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at _43 _45 _47 msg
|
|
LDGRAMS // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at _43 _45 _47 _49 msg
|
|
64 LDU // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at _43 _45 _47 _49 _104 _103
|
|
DROP // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at inc_A inc_B upd_min_A upd_min_B got_channel_id
|
|
39 PUSHINT // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at inc_A inc_B upd_min_A upd_min_B got_channel_id _54
|
|
SWAP
|
|
18 s() PUSH // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at inc_A inc_B upd_min_A upd_min_B _54 got_channel_id channel_id
|
|
EQUAL // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at inc_A inc_B upd_min_A upd_min_B _54 _55
|
|
THROWANYIFNOT
|
|
33 PUSHINT // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at inc_A inc_B upd_min_A upd_min_B _57
|
|
s4 s3 PUSH2 // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at inc_A inc_B upd_min_A upd_min_B _57 inc_A inc_B
|
|
ADD // channel_id msg_value A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at inc_A inc_B upd_min_A upd_min_B _57 _58
|
|
s1 17 s() XCHG // channel_id _57 A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at inc_A inc_B upd_min_A upd_min_B msg_value _58
|
|
LESS // channel_id _57 A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at inc_A inc_B upd_min_A upd_min_B _59
|
|
s1 16 s() XCHG // channel_id upd_min_B A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at inc_A inc_B upd_min_A _57 _59
|
|
THROWANYIF
|
|
34 PUSHINT // channel_id upd_min_B A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at inc_A inc_B upd_min_A _61
|
|
s13 s8 PUSH2 // channel_id upd_min_B A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at inc_A inc_B upd_min_A _61 msg_signed_A? signed_A?
|
|
LESS // channel_id upd_min_B A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at inc_A inc_B upd_min_A _61 _62
|
|
s13 s8 PUSH2 // channel_id upd_min_B A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at inc_A inc_B upd_min_A _61 _62 msg_signed_B? signed_B?
|
|
LESS // channel_id upd_min_B A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at inc_A inc_B upd_min_A _61 _62 _63
|
|
OR // channel_id upd_min_B A msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at inc_A inc_B upd_min_A _61 _64
|
|
THROWANYIFNOT
|
|
s13 s2 XCHG2 // channel_id upd_min_B inc_B msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at upd_min_A A inc_A
|
|
ADD // channel_id upd_min_B inc_B msg_signed_A? msg_signed_B? a_addr b_addr B signed_A? signed_B? min_A min_B expire_at upd_min_A A
|
|
s7 s12 XCHG2 // channel_id upd_min_B A msg_signed_A? msg_signed_B? a_addr b_addr upd_min_A signed_A? signed_B? min_A min_B expire_at B inc_B
|
|
ADD // channel_id upd_min_B A msg_signed_A? msg_signed_B? a_addr b_addr upd_min_A signed_A? signed_B? min_A min_B expire_at B
|
|
s5 s10 XCHG2 // channel_id upd_min_B A B msg_signed_B? a_addr b_addr upd_min_A expire_at signed_B? min_A min_B signed_A? msg_signed_A?
|
|
OR // channel_id upd_min_B A B msg_signed_B? a_addr b_addr upd_min_A expire_at signed_B? min_A min_B signed_A?
|
|
s2 s5 PUSH2 // channel_id upd_min_B A B msg_signed_B? a_addr b_addr upd_min_A expire_at signed_B? min_A min_B signed_A? min_A upd_min_A
|
|
LESS // channel_id upd_min_B A B msg_signed_B? a_addr b_addr upd_min_A expire_at signed_B? min_A min_B signed_A? _69
|
|
IF:<{ // channel_id upd_min_B A B msg_signed_B? a_addr b_addr upd_min_A expire_at signed_B? min_A min_B signed_A?
|
|
s2 POP // channel_id upd_min_B A B msg_signed_B? a_addr b_addr min_A expire_at signed_B? signed_A? min_B
|
|
s1 s4 XCHG // channel_id upd_min_B A B msg_signed_B? a_addr b_addr signed_A? expire_at signed_B? min_A min_B
|
|
}>ELSE<{
|
|
s5 POP // channel_id upd_min_B A B msg_signed_B? a_addr b_addr signed_A? expire_at signed_B? min_A min_B
|
|
}>
|
|
s2 s7 XCHG2 // channel_id upd_min_B A B min_B a_addr b_addr signed_A? expire_at min_A signed_B? msg_signed_B?
|
|
OR // channel_id upd_min_B A B min_B a_addr b_addr signed_A? expire_at min_A signed_B?
|
|
s6 s9 PUSH2 // channel_id upd_min_B A B min_B a_addr b_addr signed_A? expire_at min_A signed_B? min_B upd_min_B
|
|
LESS // channel_id upd_min_B A B min_B a_addr b_addr signed_A? expire_at min_A signed_B? _71
|
|
IF:<{ // channel_id upd_min_B A B min_B a_addr b_addr signed_A? expire_at min_A signed_B?
|
|
s6 POP // channel_id min_B A B signed_B? a_addr b_addr signed_A? expire_at min_A
|
|
s5 s8 XCHG // channel_id signed_B? A B min_B a_addr b_addr signed_A? expire_at min_A
|
|
}>ELSE<{
|
|
s9 POP // channel_id signed_B? A B min_B a_addr b_addr signed_A? expire_at min_A
|
|
}>
|
|
s2 s8 PUSH2 // channel_id signed_B? A B min_B a_addr b_addr signed_A? expire_at min_A signed_A? signed_B?
|
|
AND // channel_id signed_B? A B min_B a_addr b_addr signed_A? expire_at min_A _72
|
|
IFJMP:<{ // channel_id signed_B? A B min_B a_addr b_addr signed_A? expire_at min_A
|
|
s8 POP
|
|
2DROP // channel_id min_A A B min_B a_addr b_addr
|
|
s5 s4 XCPU // channel_id b_addr A B min_B a_addr min_A A
|
|
GREATER // channel_id b_addr A B min_B a_addr _73
|
|
s2 s3 XCPU // channel_id b_addr A B _73 a_addr min_B B
|
|
GREATER // channel_id b_addr A B _73 a_addr _74
|
|
s1 s2 XCHG // channel_id b_addr A B a_addr _73 _74
|
|
OR // channel_id b_addr A B a_addr _75
|
|
IFJMP:<{ // channel_id b_addr A B a_addr
|
|
0 PUSHINT // channel_id b_addr A B a_addr _76=0
|
|
s4 s4 XCPU
|
|
s0 s6 XCHG // _76=0 _77=0 A B a_addr b_addr channel_id
|
|
do_payout CALLDICT // _78
|
|
}> // channel_id b_addr A B a_addr
|
|
DROP
|
|
2 2 BLKDROP2 // A B
|
|
0 PUSHINT // A B _79=0
|
|
s0 s0 s0 PUSH3 // A B _79=0 _80=0 _81=0 _82=0
|
|
DUP // A B _79=0 _80=0 _81=0 _82=0 _83=0
|
|
2 5 BLKSWAP // _79=0 _80=0 _81=0 _82=0 _83=0 A B
|
|
pack_state_close CALLDICT // _84
|
|
}> // channel_id signed_B? A B min_B a_addr b_addr signed_A? expire_at min_A
|
|
s3 POP
|
|
s3 POP
|
|
s7 POP // signed_A? signed_B? A B min_B expire_at min_A
|
|
s1 s4 s4 XCHG3
|
|
s0 s3 XCHG // signed_A? signed_B? min_A min_B expire_at A B
|
|
pack_state_init CALLDICT // _85
|
|
}>
|
|
with_close PROC:<{
|
|
// cs msg msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr expire_timeout channel_id
|
|
s0 s9 XCHG // channel_id msg msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr expire_timeout cs
|
|
unpack_state_close CALLDICT // channel_id msg msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr expire_timeout signed_A? signed_B? promise_A promise_B expire_at A B
|
|
s2 PUSH // channel_id msg msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr expire_timeout signed_A? signed_B? promise_A promise_B expire_at A B expire_at
|
|
0 EQINT // channel_id msg msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr expire_timeout signed_A? signed_B? promise_A promise_B expire_at A B _19
|
|
IF:<{ // channel_id msg msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr expire_timeout signed_A? signed_B? promise_A promise_B expire_at A B
|
|
s2 POP // channel_id msg msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr expire_timeout signed_A? signed_B? promise_A promise_B B A
|
|
NOW // channel_id msg msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr expire_timeout signed_A? signed_B? promise_A promise_B B A _20
|
|
s0 s7 XCHG2 // channel_id msg msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr A signed_A? signed_B? promise_A promise_B B _20 expire_timeout
|
|
ADD // channel_id msg msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr A signed_A? signed_B? promise_A promise_B B expire_at
|
|
s0 s6 XCHG2 // channel_id msg msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at A
|
|
}>ELSE<{
|
|
s7 POP // channel_id msg msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at A
|
|
}>
|
|
s0 s13 XCHG // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at msg
|
|
32 LDU // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at op msg
|
|
0x43278a28 PUSHINT // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at op msg _26
|
|
s2 s(-1) PUXC // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at op msg op _26
|
|
EQUAL // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at op msg _27
|
|
IFJMP:<{ // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at op msg
|
|
2DROP
|
|
s3 POP
|
|
s3 POP
|
|
s6 POP
|
|
s6 POP
|
|
s6 POP
|
|
s6 POP // channel_id A B promise_B expire_at promise_A a_addr b_addr
|
|
35 PUSHINT // channel_id A B promise_B expire_at promise_A a_addr b_addr _28
|
|
s0 s4 XCHG
|
|
NOW // channel_id A B promise_B _28 promise_A a_addr b_addr expire_at _29
|
|
LESS // channel_id A B promise_B _28 promise_A a_addr b_addr _30
|
|
s1 s4 XCHG // channel_id A B promise_B b_addr promise_A a_addr _28 _30
|
|
THROWANYIFNOT
|
|
s1 s6 XCHG
|
|
s3 s5 XCHG
|
|
s3 s4 XCHG
|
|
-ROT // promise_A promise_B A B a_addr b_addr channel_id
|
|
do_payout CALLDICT // _32
|
|
}> // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at op msg
|
|
37 PUSHINT // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at op msg _33
|
|
0xf28ae183 PUSHINT // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at op msg _33 _34
|
|
s1 s3 XCHG // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at _33 msg op _34
|
|
EQUAL // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at _33 msg _35
|
|
s1 s2 XCHG // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at msg _33 _35
|
|
THROWANYIFNOT
|
|
34 PUSHINT // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at msg _37
|
|
s13 s6 PUSH2 // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at msg _37 msg_signed_A? signed_A?
|
|
LESS // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at msg _37 _38
|
|
s13 s6 PUSH2 // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at msg _37 _38 msg_signed_B? signed_B?
|
|
LESS // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at msg _37 _38 _39
|
|
OR // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_A? signed_B? promise_A promise_B expire_at msg _37 _40
|
|
THROWANYIFNOT
|
|
s5 s12 XCPU // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B msg signed_B? promise_A promise_B expire_at signed_A? msg_signed_A?
|
|
OR // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B msg signed_B? promise_A promise_B expire_at signed_A?
|
|
s4 s11 XCPU // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B msg signed_A? promise_A promise_B expire_at signed_B? msg_signed_B?
|
|
OR // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B msg signed_A? promise_A promise_B expire_at signed_B?
|
|
s0 s5 XCHG // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at msg
|
|
LDGRAMS // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at _46 msg
|
|
LDGRAMS // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A extra_B msg
|
|
1 LDI // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A extra_B has_sig msg
|
|
SWAP // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A extra_B msg has_sig
|
|
IF:<{ // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A extra_B msg
|
|
LDREF // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A extra_B _55 msg
|
|
SWAP // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A extra_B msg _55
|
|
CTOS // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A extra_B msg _57
|
|
9 PUSHPOW2 // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A extra_B msg _57 _58=512
|
|
PLDSLICEX // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A extra_B msg sig
|
|
OVER // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A extra_B msg sig msg
|
|
HASHSU // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A extra_B msg sig hash
|
|
s0 16 s() XCHG // channel_id A hash msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A extra_B msg sig msg_signed_A?
|
|
IFNOT:<{ // channel_id A hash msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A extra_B msg sig
|
|
s3 POP // channel_id A hash msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at sig extra_B msg
|
|
31 PUSHINT // channel_id A hash msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at sig extra_B msg _62
|
|
s15 s3 s13 PU2XC // channel_id A hash msg_signed_B? _62 b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at sig extra_B msg hash sig a_key
|
|
CHKSIGNU // channel_id A hash msg_signed_B? _62 b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at sig extra_B msg _63
|
|
s1 s13 XCHG // channel_id A hash msg_signed_B? msg b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at sig extra_B _62 _63
|
|
THROWANYIFNOT
|
|
s1 s11 XCHG
|
|
0 PUSHINT
|
|
s0 s2 XCHG // channel_id A hash msg_signed_B? sig b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A=0 extra_B msg
|
|
}>ELSE<{
|
|
s13 POP // channel_id A hash msg_signed_B? sig b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A extra_B msg
|
|
}>
|
|
s0 s13 XCHG // channel_id A hash msg sig b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A extra_B msg_signed_B?
|
|
IFNOT:<{ // channel_id A hash msg sig b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A extra_B
|
|
DROP // channel_id A hash msg sig b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A
|
|
32 PUSHINT // channel_id A hash msg sig b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A _66
|
|
s13 s11 s10 XCHG3 // channel_id A expire_at msg extra_A _66 a_addr b_addr B signed_B? signed_A? promise_A promise_B hash sig b_key
|
|
CHKSIGNU // channel_id A expire_at msg extra_A _66 a_addr b_addr B signed_B? signed_A? promise_A promise_B _67
|
|
s1 s8 XCHG // channel_id A expire_at msg extra_A promise_B a_addr b_addr B signed_B? signed_A? promise_A _66 _67
|
|
THROWANYIFNOT
|
|
0 PUSHINT // channel_id A expire_at msg extra_A promise_B a_addr b_addr B signed_B? signed_A? promise_A extra_B=0
|
|
s0 s7 XCHG // channel_id A expire_at msg extra_A extra_B=0 a_addr b_addr B signed_B? signed_A? promise_A promise_B
|
|
}>ELSE<{
|
|
s2 s13 XCHG
|
|
s10 POP
|
|
s10 POP
|
|
DROP // channel_id A expire_at msg extra_A extra_B a_addr b_addr B signed_B? signed_A? promise_A promise_B
|
|
}>
|
|
}>ELSE<{ // channel_id A msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr B signed_B? signed_A? promise_A promise_B expire_at extra_A extra_B msg
|
|
s11 POP
|
|
2DROP
|
|
s9 POP // channel_id A msg_signed_A? msg_signed_B? expire_at msg a_addr b_addr B signed_B? signed_A? promise_A promise_B
|
|
38 PUSHINT // channel_id A msg_signed_A? msg_signed_B? expire_at msg a_addr b_addr B signed_B? signed_A? promise_A promise_B _70
|
|
s11 s10 XCHG2 // channel_id A promise_B _70 expire_at msg a_addr b_addr B signed_B? signed_A? promise_A msg_signed_A? msg_signed_B?
|
|
AND // channel_id A promise_B _70 expire_at msg a_addr b_addr B signed_B? signed_A? promise_A _71
|
|
s1 s9 XCHG // channel_id A promise_B promise_A expire_at msg a_addr b_addr B signed_B? signed_A? _70 _71
|
|
THROWANYIFNOT
|
|
0 PUSHINT // channel_id A promise_B promise_A expire_at msg a_addr b_addr B signed_B? signed_A? extra_A=0
|
|
DUP // channel_id A promise_B promise_A expire_at msg a_addr b_addr B signed_B? signed_A? extra_A=0 extra_B=0
|
|
s8 s10 XCHG
|
|
s0 s7 XCHG
|
|
s9 s9 XCHG2
|
|
s0 s8 XCHG // channel_id A expire_at msg extra_A extra_B a_addr b_addr B signed_B? signed_A? promise_A promise_B
|
|
}>
|
|
s0 s9 XCHG // channel_id A expire_at promise_B extra_A extra_B a_addr b_addr B signed_B? signed_A? promise_A msg
|
|
64 LDU // channel_id A expire_at promise_B extra_A extra_B a_addr b_addr B signed_B? signed_A? promise_A _78 msg
|
|
LDGRAMS // channel_id A expire_at promise_B extra_A extra_B a_addr b_addr B signed_B? signed_A? promise_A _78 _81 msg
|
|
LDGRAMS // channel_id A expire_at promise_B extra_A extra_B a_addr b_addr B signed_B? signed_A? promise_A _78 _81 _118 _117
|
|
DROP // channel_id A expire_at promise_B extra_A extra_B a_addr b_addr B signed_B? signed_A? promise_A got_channel_id update_promise_A update_promise_B
|
|
39 PUSHINT // channel_id A expire_at promise_B extra_A extra_B a_addr b_addr B signed_B? signed_A? promise_A got_channel_id update_promise_A update_promise_B _85
|
|
s3 s15 XCPU // channel_id A expire_at promise_B extra_A extra_B a_addr b_addr B signed_B? signed_A? promise_A _85 update_promise_A update_promise_B got_channel_id channel_id
|
|
EQUAL // channel_id A expire_at promise_B extra_A extra_B a_addr b_addr B signed_B? signed_A? promise_A _85 update_promise_A update_promise_B _86
|
|
s1 s3 XCHG // channel_id A expire_at promise_B extra_A extra_B a_addr b_addr B signed_B? signed_A? promise_A update_promise_B update_promise_A _85 _86
|
|
THROWANYIFNOT
|
|
ACCEPT
|
|
s0 s9 XCHG2 // channel_id A expire_at promise_B update_promise_B extra_B a_addr b_addr B signed_B? signed_A? promise_A update_promise_A extra_A
|
|
ADD // channel_id A expire_at promise_B update_promise_B extra_B a_addr b_addr B signed_B? signed_A? promise_A update_promise_A
|
|
2DUP // channel_id A expire_at promise_B update_promise_B extra_B a_addr b_addr B signed_B? signed_A? promise_A update_promise_A promise_A update_promise_A
|
|
LESS // channel_id A expire_at promise_B update_promise_B extra_B a_addr b_addr B signed_B? signed_A? promise_A update_promise_A _90
|
|
IF:<{ // channel_id A expire_at promise_B update_promise_B extra_B a_addr b_addr B signed_B? signed_A? promise_A update_promise_A
|
|
NIP // channel_id A expire_at promise_B update_promise_B extra_B a_addr b_addr B signed_B? signed_A? promise_A
|
|
}>ELSE<{
|
|
DROP // channel_id A expire_at promise_B update_promise_B extra_B a_addr b_addr B signed_B? signed_A? promise_A
|
|
}>
|
|
s7 s6 XCHG2 // channel_id A expire_at promise_B signed_A? promise_A a_addr b_addr B signed_B? update_promise_B extra_B
|
|
ADD // channel_id A expire_at promise_B signed_A? promise_A a_addr b_addr B signed_B? update_promise_B
|
|
s7 s0 PUSH2 // channel_id A expire_at promise_B signed_A? promise_A a_addr b_addr B signed_B? update_promise_B promise_B update_promise_B
|
|
LESS // channel_id A expire_at promise_B signed_A? promise_A a_addr b_addr B signed_B? update_promise_B _92
|
|
IF:<{ // channel_id A expire_at promise_B signed_A? promise_A a_addr b_addr B signed_B? update_promise_B
|
|
s7 POP // channel_id A expire_at promise_B signed_A? promise_A a_addr b_addr B signed_B?
|
|
}>ELSE<{
|
|
DROP // channel_id A expire_at promise_B signed_A? promise_A a_addr b_addr B signed_B?
|
|
}>
|
|
s5 s0 PUSH2 // channel_id A expire_at promise_B signed_A? promise_A a_addr b_addr B signed_B? signed_A? signed_B?
|
|
AND // channel_id A expire_at promise_B signed_A? promise_A a_addr b_addr B signed_B? _93
|
|
IFJMP:<{ // channel_id A expire_at promise_B signed_A? promise_A a_addr b_addr B signed_B?
|
|
DROP
|
|
s4 POP
|
|
s5 POP // channel_id A b_addr promise_B B promise_A a_addr
|
|
s1 s6 XCHG
|
|
s3 s5 XCHG
|
|
s3 s4 XCHG
|
|
s0 s3 s3 XCHG3 // promise_A promise_B A B a_addr b_addr channel_id
|
|
do_payout CALLDICT // _94
|
|
}> // channel_id A expire_at promise_B signed_A? promise_A a_addr b_addr B signed_B?
|
|
2 2 BLKDROP2
|
|
s7 POP // signed_B? A expire_at promise_B signed_A? promise_A B
|
|
s2 s6 XCHG
|
|
s5 s4 s0 XCHG3
|
|
s1 s2 XCHG // signed_A? signed_B? promise_A promise_B expire_at A B
|
|
pack_state_close CALLDICT // _95
|
|
}>
|
|
recv_any PROC:<{
|
|
// msg_value msg
|
|
unpack_data INLINECALLDICT // msg_value msg config state
|
|
OVER // msg_value msg config state config
|
|
unpack_config CALLDICT // msg_value msg config state init_timeout close_timeout a_key b_key a_addr b_addr channel_id
|
|
s9 s4 s3 XCPU2 // msg_value channel_id config state init_timeout close_timeout a_key b_key a_addr b_addr msg a_key b_key
|
|
unwrap_signatures CALLDICT // msg_value channel_id config state init_timeout close_timeout a_key b_key a_addr b_addr msg msg_signed_A? msg_signed_B?
|
|
s9 PUSH // msg_value channel_id config state init_timeout close_timeout a_key b_key a_addr b_addr msg msg_signed_A? msg_signed_B? state
|
|
CTOS // msg_value channel_id config state init_timeout close_timeout a_key b_key a_addr b_addr msg msg_signed_A? msg_signed_B? cs
|
|
3 LDU // msg_value channel_id config state init_timeout close_timeout a_key b_key a_addr b_addr msg msg_signed_A? msg_signed_B? state_type cs
|
|
0 PUSHINT // msg_value channel_id config state init_timeout close_timeout a_key b_key a_addr b_addr msg msg_signed_A? msg_signed_B? state_type cs _23
|
|
s2 s(-1) PUXC // msg_value channel_id config state init_timeout close_timeout a_key b_key a_addr b_addr msg msg_signed_A? msg_signed_B? state_type cs state_type _23
|
|
EQUAL // msg_value channel_id config state init_timeout close_timeout a_key b_key a_addr b_addr msg msg_signed_A? msg_signed_B? state_type cs _24
|
|
IF:<{ // msg_value channel_id config state init_timeout close_timeout a_key b_key a_addr b_addr msg msg_signed_A? msg_signed_B? state_type cs
|
|
s11 POP // msg_value channel_id config cs init_timeout close_timeout a_key b_key a_addr b_addr msg msg_signed_A? msg_signed_B? state_type
|
|
s10 s13 s(-1) PUXC2
|
|
s4 s3 s(-2) PU2XC
|
|
s8 s7 s0 PUSH3
|
|
s0 s15 XCHG
|
|
18 s() PUSH // state_type channel_id config cs msg_signed_B? close_timeout a_key b_key a_addr b_addr msg msg_signed_A? cs msg_value msg msg_signed_A? msg_signed_B? a_addr b_addr init_timeout channel_id
|
|
with_init CALLDICT // state_type channel_id config cs msg_signed_B? close_timeout a_key b_key a_addr b_addr msg msg_signed_A? state
|
|
s0 s9 XCHG
|
|
s0 s8 XCHG // state_type channel_id config state cs close_timeout a_key b_key a_addr b_addr msg msg_signed_A? msg_signed_B?
|
|
}>ELSE<{
|
|
s10 POP
|
|
s13 POP // state_type channel_id config state cs close_timeout a_key b_key a_addr b_addr msg msg_signed_A? msg_signed_B?
|
|
}>
|
|
1 PUSHINT // state_type channel_id config state cs close_timeout a_key b_key a_addr b_addr msg msg_signed_A? msg_signed_B? _26
|
|
s1 s13 XCHG // msg_signed_B? channel_id config state cs close_timeout a_key b_key a_addr b_addr msg msg_signed_A? state_type _26
|
|
EQUAL // msg_signed_B? channel_id config state cs close_timeout a_key b_key a_addr b_addr msg msg_signed_A? _27
|
|
IF:<{ // msg_signed_B? channel_id config state cs close_timeout a_key b_key a_addr b_addr msg msg_signed_A?
|
|
s8 POP // msg_signed_B? channel_id config msg_signed_A? cs close_timeout a_key b_key a_addr b_addr msg
|
|
s6 s9 XCHG
|
|
s0 s8 XCHG
|
|
s6 s10 XCHG
|
|
s4 s5 XCHG
|
|
s3 s4 XCHG
|
|
s1 s3 s10 XCHG3 // config cs msg msg_signed_A? msg_signed_B? a_key b_key a_addr b_addr close_timeout channel_id
|
|
with_close CALLDICT // config state
|
|
}>ELSE<{
|
|
8 BLKDROP
|
|
2 2 BLKDROP2 // config state
|
|
}>
|
|
pack_data INLINECALLDICT
|
|
}>
|
|
recv_internal PROC:<{
|
|
// msg_value in_msg_cell in_msg
|
|
NIP // msg_value in_msg
|
|
recv_any CALLDICT
|
|
}>
|
|
recv_external PROC:<{
|
|
// in_msg
|
|
0 PUSHINT // in_msg _1=0
|
|
SWAP // _1=0 in_msg
|
|
recv_any CALLDICT
|
|
}>
|
|
}END>c
|