diff --git a/.gitignore b/.gitignore index ea96d14..f5a1839 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ *.abi.json *.tvc +*.code diff --git a/contracts/abstract/AFlexWallet.sol b/contracts/abstract/AFlexWallet.sol index 4518eb9..26f9c3d 100644 --- a/contracts/abstract/AFlexWallet.sol +++ b/contracts/abstract/AFlexWallet.sol @@ -16,6 +16,19 @@ abstract contract AFlexWallet { uint256 code_hash, uint16 code_depth, int8 workchain_id) {} + + function details(uint32 _answer_id) public functionID(0x14) + returns ( + string name, string symbol, uint8 decimals, uint128 balance, + uint256 root_public_key, address root_address, uint256 wallet_pubkey, + optional(address) owner_address, + optional(uint256) lend_pubkey, + lend_owner_array_record[] lend_owners, + uint128 lend_balance, + optional(BindInfo) binding, + uint256 code_hash, + uint16 code_depth, + int8 workchain_id) {} function cancelOrder( uint128 evers, diff --git a/contracts/amm/Helper.code b/contracts/amm/Helper.code deleted file mode 100644 index fd2c2f0..0000000 --- a/contracts/amm/Helper.code +++ /dev/null @@ -1,390 +0,0 @@ -.version sol 0.66.0 - -.macro constructor -DROP -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7_with_init_storage$ -} -GETGLOB 6 -THROWIF 51 -ENDS -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc modifiers/modifiers.sol, 0 -CALLREF { - CALL $c7_to_c4$ -} -THROW 0 - -.macro getData -DROP -GETGLOB 6 -THROWIFNOT 76 -.loc Helper.sol, 20 -OVER -PUSHCONT { - LDU 32 - LDREF - ENDS - CTOS - LDU 256 - LDI 1 - SWAP - NULLROTRIFNOT - PUSHCONT { - LDMSGADDR - } - IF -} -PUSHCONT { - LDU 32 - LDU 256 - LDI 1 - SWAP - NULLROTRIFNOT - PUSHCONT { - LDMSGADDR - } - IF - LDREF - ENDS - CTOS -} -IFELSE -LDU 128 -ENDS -.loc Helper.sol, 0 -CALLREF { - CALL $getData_992c3f12_internal_macro$ -} -OVER -PUSHCONT { - PUSH S3 - CTOS - LDU 2 - LDMSGADDR - DROP - NIP - NEWC - STSLICECONST xc - STSLICE - PUSHINT 3191377539 - STUR 130 - STREF - ENDC - PUSHINT 0 - SENDRAWMSG -} -PUSHCONT { - DROP -} -IFELSE -IFREF { - CALL $c7_to_c4$ -} -THROW 0 - -.globl getData_992c3f12_internal -.type getData_992c3f12_internal, @function -CALL $getData_992c3f12_internal_macro$ - -.macro getData_992c3f12_internal_macro -.loc Helper.sol, 25 -REVERSE 4, 0 -NEWC -STSLICECONST x0000000b -STU 32 -STU 256 -XCPU S1, S0 -ISNULL -PUSHCONT { - DROP - STSLICECONST 0 -} -PUSHCONT { - SWAP - STSLICECONST 1 - STSLICE -} -IFELSE -SWAP -NEWC -STU 128 -STBREFR -ENDC -.loc Helper.sol, 0 - -.macro getDeposit -DROP -GETGLOB 6 -THROWIFNOT 76 -.loc Helper.sol, 29 -OVER -PUSHCONT { - LDREF - ENDS - CTOS -} -IF -LDU 128 -LDMSGADDR -LDREF -ENDS -CTOS -LDMSGADDR -LDREF -ENDS -.loc Helper.sol, 0 -CALLREF { - CALL $getDeposit_00c00cd3_internal_macro$ -} -OVER -PUSHCONT { - PUSH S3 - CTOS - LDU 2 - LDMSGADDR - DROP - NIP - NEWC - STSLICECONST xc - STSLICE - PUSHINT 3510988742 - STUR 130 - STREF - ENDC - PUSHINT 0 - SENDRAWMSG -} -PUSHCONT { - DROP -} -IFELSE -IFREF { - CALL $c7_to_c4$ -} -THROW 0 - -.globl getDeposit_00c00cd3_internal -.type getDeposit_00c00cd3_internal, @function -CALL $getDeposit_00c00cd3_internal_macro$ - -.macro getDeposit_00c00cd3_internal_macro -.loc Helper.sol, 30 -TRUE -BLKSWAP 3, 2 -XCHG S2 -NEWC -STSLICECONST x46a9d7ec -STU 128 -STSLICE -ROLLREV 3 -NEWC -STSLICE -STI 1 -STREF -STBREFR -ENDC -.loc Helper.sol, 0 - -.macro receive_macro -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc Helper.sol, 0 -CALLREF { - CALL $c7_to_c4$ -} - -.internal-alias onCodeUpgrade_fb00cc5e_internal, 749264623 -.internal onCodeUpgrade_fb00cc5e_internal -.loc Helper.sol, 0 -CALLREF { - CALL $c7_to_c4$ -} -COMMIT -THROW 0 - -.macro c4_to_c7 -PUSHROOT -CTOS -LDU 256 ; pubkey c4 -LDU 64 ; pubkey timestamp c4 -LDU 1 ; ctor flag -NIP -ENDS -SETGLOB 3 -SETGLOB 2 - -.macro c4_to_c7_with_init_storage -PUSHROOT -CTOS -SBITS -GTINT 1 -PUSHCONT { - PUSHINT 0 - PUSHROOT - CTOS - PLDDICT ; D - PUSHINT 64 - DICTUGET - THROWIFNOT 61 - PLDU 256 - SETGLOB 2 - PUSHINT 0 ; timestamp - SETGLOB 3 -} -IFREFELSE { - CALL $c4_to_c7$ -} - -.macro c7_to_c4 -GETGLOB 3 -GETGLOB 2 -NEWC -STU 256 -STU 64 -STONE -ENDC -POPROOT - -.macro upd_only_time_in_c4 -PUSHROOT -CTOS -LDU 256 -LDU 64 -NIP -GETGLOB 3 -ROT -NEWC -STU 256 -STU 64 -STSLICE -ENDC -POPROOT - -.internal-alias :main_internal, 0 -.internal :main_internal -PUSHROOT -CTOS -SBITS -NEQINT 1 -SETGLOB 6 -PUSH S2 -CTOS -LDU 4 ; bounced tail -LDMSGADDR ; bounced src tail -DROP -SETGLOB 9 -MODPOW2 1 -IFRET -OVER -SEMPTY ; isEmpty -IFJMPREF { - GETGLOB 6 - THROWIFNOT 76 -} -OVER -LDUQ 32 ; [funcId] body' ok -THROWIFNOT 60 -OVER -IFNOTJMPREF { - GETGLOB 6 - THROWIFNOT 76 -} -SWAP -CALLREF { - CALL $public_function_selector$ -} -THROW 60 - -.internal-alias :main_external, -1 -.internal :main_external -PUSHROOT -CTOS -SBITS -NEQINT 1 -SETGLOB 6 -PUSHSLICE x8000000000000000000000000000000000000000000000000000000000000000001_ -SETGLOB 9 -OVER -CALLREF { - CALL $c4_to_c7_with_init_storage$ -} -LDU 1 ; haveSign msgSlice -SWAP -PUSHCONT { - PUSHPOW2 9 - LDSLICEX - DUP - MYADDR - NEWC - STSLICE - STSLICE - ENDC - HASHCU - SWAP - LDU 1 ; signatureSlice hashMsgSlice hasPubkey msgSlice - SWAP - PUSHCONT { - LDU 256 ; signatureSlice hashMsgSlice pubkey msgSlice - XCHG S3 - SWAP - } - PUSHCONT { - XCHG S2 - GETGLOB 2 - } - IFELSE - DUP - SETGLOB 5 - CHKSIGNU - THROWIFNOT 40 -} -PUSHCONT { - LDU 1 ; hasPubkey msgSlice - SWAP - THROWIF 58 -} -IFELSE -LDU 64 ; timestamp msgSlice -SWAP -CALL $replay_protection_macro$ -LDU 32 ; expireAt msgSlice -SWAP -NOW ; msgSlice expireAt now -GREATER ; msgSlice expireAt>now -THROWIFNOT 57 -LDU 32 ; funcId body -SWAP -CALLREF { - CALL $public_function_selector$ -} -THROW 60 - -.macro public_function_selector -DUP -PUSHINT 1043893891 -EQUAL -IFJMPREF { - CALL $getData$ -} -DUP -PUSHINT 1363505094 -EQUAL -IFJMPREF { - CALL $getDeposit$ -} -DUP -PUSHINT 1756716863 -EQUAL -IFJMPREF { - CALL $constructor$ -} - diff --git a/contracts/amm/Helper.sol b/contracts/amm/Helper.sol index c02451e..a9f14d0 100644 --- a/contracts/amm/Helper.sol +++ b/contracts/amm/Helper.sol @@ -35,6 +35,28 @@ contract StockNotify is Modifiers { value0); } + function getCorrectData(TvmCell a) public pure returns(TvmCell){ + TvmSlice data = a.toSlice(); + (uint16 _w1, uint8 _w2) = data.size(); + bool _s1 = data.decode(bool); + uint128 _s2 = data.decode(uint128); + _w1; _w2; _s1; _s2; + TvmBuilder p; + p.store(data); + return p.toCell(); + } + + function getCorrectDataFull(TvmCell a, uint128 price) public pure returns(TvmCell){ + TvmSlice data = a.toSlice(); + (uint16 _w1, uint8 _w2) = data.size(); + bool _s1 = data.decode(bool); + uint128 _s2 = data.decode(uint128); + _w1; _w2; _s1; _s2; + TvmBuilder b; + b.store(false, price, data); + return b.toCell(); + } + receive() external { } diff --git a/contracts/amm/marketmaker.code b/contracts/amm/marketmaker.code deleted file mode 100644 index fc086fc..0000000 --- a/contracts/amm/marketmaker.code +++ /dev/null @@ -1,2524 +0,0 @@ -.version sol 0.66.0 - -.macro constructor -DROP -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7_with_init_storage$ -} -GETGLOB 6 -THROWIF 51 -ENDS -.loc modifiers/modifiers.sol, 44 -GETGLOB 5 -DUP -ISNULL -PUSHCONT { - DROP - PUSHINT 0 -} -IF -GETGLOB 2 -EQUAL -THROWIFNOT 200 -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc modifiers/modifiers.sol, 0 -CALLREF { - CALL $c7_to_c4$ -} -THROW 0 - -.macro init -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 33 -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $init_e1c7392a_internal_macro$ -} -CALLREF { - CALL $c7_to_c4$ -} -THROW 0 - -.globl init_e1c7392a_internal -.type init_e1c7392a_internal, @function -CALL $init_e1c7392a_internal_macro$ - -.macro init_e1c7392a_internal_macro -.loc modifiers/modifiers.sol, 44 -GETGLOB 5 -DUP -ISNULL -PUSHCONT { - DROP - PUSHINT 0 -} -IF -GETGLOB 2 -EQUAL -THROWIFNOT 200 -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc marketmaker.sol, 34 -PUSHINT 0 -NEWDICT -PAIR -SETGLOB 15 -.loc marketmaker.sol, 35 -PUSHINT 0 -NEWDICT -PAIR -SETGLOB 16 -.loc marketmaker.sol, 36 -PUSHINT 2 -.loc marketmaker.sol, 37 -GETGLOB 15 -PUSHINT 1 -NEWC -STU 128 -SWAP -UNPAIR -OVER -INC -ROLLREV 3 -PUSHINT 32 -DICTUSETB -PAIR -DUP -SETGLOB 15 -.loc marketmaker.sol, 38 -PUSHINT 1 -NEWC -STU 128 -SWAP -UNPAIR -OVER -INC -ROLLREV 3 -PUSHINT 32 -DICTUSETB -PAIR -SETGLOB 15 -.loc marketmaker.sol, 39 -GETGLOB 16 -PUSHINT 1 -NEWC -STU 128 -SWAP -UNPAIR -OVER -INC -ROLLREV 3 -PUSHINT 32 -DICTUSETB -PAIR -DUP -SETGLOB 16 -.loc marketmaker.sol, 40 -PUSHINT 2 -NEWC -STU 128 -SWAP -UNPAIR -OVER -INC -ROLLREV 3 -PUSHINT 32 -DICTUSETB -PAIR -SETGLOB 16 -.loc marketmaker.sol, 41 -PUSHINT 2 -PUSHCONT { - DUP - LESSINT 20 -} -PUSHCONT { - .loc marketmaker.sol, 42 - GETGLOB 15 - OVER - DEC - UFITS 128 - GETGLOB 15 - SECOND - PUSHINT 32 - DICTUGET - THROWIFNOT 50 - PLDU 128 - PUSH S2 - ADDCONST -2 - UFITS 128 - GETGLOB 15 - SECOND - PUSHINT 32 - DICTUGET - THROWIFNOT 50 - PLDU 128 - ADD - UFITS 128 - NEWC - STU 128 - SWAP - UNPAIR - OVER - INC - ROLLREV 3 - PUSHINT 32 - DICTUSETB - PAIR - SETGLOB 15 - .loc marketmaker.sol, 43 - DUP - GETGLOB 15 - SECOND - PUSHINT 32 - DICTUGET - THROWIFNOT 50 - PLDU 128 - PUSH S2 - ADD - UFITS 128 - POP S2 - .loc marketmaker.sol, 44 - GETGLOB 16 - PUSH S2 - NEWC - STU 128 - SWAP - UNPAIR - OVER - INC - ROLLREV 3 - PUSHINT 32 - DICTUSETB - PAIR - SETGLOB 16 - .loc marketmaker.sol, 41 - INC - UFITS 128 - .loc marketmaker.sol, 0 -} -WHILE -DROP2 -.loc marketmaker.sol, 0 - -.globl _innerPrice_f88151c7_internal -.type _innerPrice_f88151c7_internal, @function -CALL $_innerPrice_f88151c7_internal_macro$ - -.macro _innerPrice_f88151c7_internal_macro -.loc marketmaker.sol, 49 -PUSHINT 0 -GETGLOB 20 -SECOND -PUSHINT 32 -DICTUGET -THROWIFNOT 50 -CALLREF { - LDMSGADDR - LDU 128 - LDU 8 - ENDS - TRIPLE -} -SECOND -GETGLOB 19 -MUL -UFITS 128 -PUSHINT 1 -GETGLOB 20 -SECOND -PUSHINT 32 -DICTUGET -THROWIFNOT 50 -CALLREF { - LDMSGADDR - LDU 128 - LDU 8 - ENDS - TRIPLE -} -SECOND -DIV -.loc marketmaker.sol, 0 - -.macro setFlexClient -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 52 -OVER -PUSHCONT { - LDREF - ENDS - CTOS -} -IF -LDMSGADDR -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $setFlexClient_d247e7dd_internal_macro$ -} -CALLREF { - CALL $c7_to_c4$ -} -THROW 0 - -.globl setFlexClient_d247e7dd_internal -.type setFlexClient_d247e7dd_internal, @function -CALL $setFlexClient_d247e7dd_internal_macro$ - -.macro setFlexClient_d247e7dd_internal_macro -.loc modifiers/modifiers.sol, 44 -GETGLOB 5 -DUP -ISNULL -PUSHCONT { - DROP - PUSHINT 0 -} -IF -GETGLOB 2 -EQUAL -THROWIFNOT 200 -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc marketmaker.sol, 53 -SETGLOB 10 -.loc marketmaker.sol, 0 - -.globl getLendSellAmount_24f0c148_internal -.type getLendSellAmount_24f0c148_internal, @function -CALL $getLendSellAmount_24f0c148_internal_macro$ - -.macro getLendSellAmount_24f0c148_internal_macro -.loc marketmaker.sol, 57 -XCHG S2 -.loc marketmaker.sol, 58 -EQINT 1 -PUSHCONT { - .loc marketmaker.sol, 58 - OVER - MUL - UFITS 128 - GETGLOB 19 - DIV - INC - UFITS 128 - .loc marketmaker.sol, 0 -} -IF -.loc marketmaker.sol, 59 -PUSHINT 10015 -MUL -UFITS 128 -PUSHINT 10000 -DIV -INC -UFITS 128 -NIP -.loc marketmaker.sol, 0 - -.globl preparePriceXchg_49c313eb_internal -.type preparePriceXchg_49c313eb_internal, @function -CALL $preparePriceXchg_49c313eb_internal_macro$ - -.macro preparePriceXchg_49c313eb_internal_macro -.loc marketmaker.sol, 63 -CALLREF { - CALL $preparePriceXchgData_326ef661_internal_macro$ -} -GETGLOB 11 -NEWC -STSLICECONST x2_ -STOPTREF -STOPTREF -STZERO -ENDC -.loc marketmaker.sol, 64 -HASHCU -NEWC -STSLICECONST x801_ -STU 256 -ENDC -CTOS -.loc marketmaker.sol, 0 - -.globl preparePriceXchgData_326ef661_internal -.type preparePriceXchgData_326ef661_internal, @function -CALL $preparePriceXchgData_326ef661_internal_macro$ - -.macro preparePriceXchgData_326ef661_internal_macro -.loc marketmaker.sol, 68 -NEWDICT -.loc marketmaker.sol, 69 -SWAP -PUSHINT 0 -BLKPUSH 2, 0 -PUSH S4 -PUSHINT 0 -ROLL 6 -TUPLE 7 -.loc marketmaker.sol, 71 -NEWC -SWAP -UNTUPLE 7 -REVERSE 8, 0 -STU 128 -STU 128 -STU 128 -STU 32 -STDICT -STU 32 -STDICT -.loc marketmaker.sol, 72 -ENDC -.loc marketmaker.sol, 0 - -.macro setWallet -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 75 -OVER -PUSHCONT { - LDREF - ENDS - CTOS -} -IF -LDMSGADDR -LDU 128 -LDU 8 -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $setWallet_fd3c54db_internal_macro$ -} -CALLREF { - CALL $c7_to_c4$ -} -THROW 0 - -.globl setWallet_fd3c54db_internal -.type setWallet_fd3c54db_internal, @function -CALL $setWallet_fd3c54db_internal_macro$ - -.macro setWallet_fd3c54db_internal_macro -.loc modifiers/modifiers.sol, 44 -GETGLOB 5 -DUP -ISNULL -PUSHCONT { - DROP - PUSHINT 0 -} -IF -GETGLOB 2 -EQUAL -THROWIFNOT 200 -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc marketmaker.sol, 77 -PUSHREFSLICE { - .blob x8000000000000000000000000000000000000000000000000000000000000000001_ -} -PUSHINT 0 -DUP -TRIPLE -ROLL 3 -SETINDEX 0 -.loc marketmaker.sol, 78 -ROT -SETINDEX 1 -.loc marketmaker.sol, 79 -SWAP -SETINDEX 2 -.loc marketmaker.sol, 80 -GETGLOB 20 -SWAP -CALLREF { - UNTRIPLE - XCHG S2 - NEWC - STSLICE - STU 128 - STU 8 -} -SWAP -UNPAIR -OVER -INC -ROLLREV 3 -PUSHINT 32 -DICTUSETB -PAIR -SETGLOB 20 -.loc marketmaker.sol, 0 - -.macro clearWallet -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 83 -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $clearWallet_347b1df1_internal_macro$ -} -CALLREF { - CALL $c7_to_c4$ -} -THROW 0 - -.globl clearWallet_347b1df1_internal -.type clearWallet_347b1df1_internal, @function -CALL $clearWallet_347b1df1_internal_macro$ - -.macro clearWallet_347b1df1_internal_macro -.loc modifiers/modifiers.sol, 44 -GETGLOB 5 -DUP -ISNULL -PUSHCONT { - DROP - PUSHINT 0 -} -IF -GETGLOB 2 -EQUAL -THROWIFNOT 200 -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc marketmaker.sol, 84 -PUSHINT 0 -NEWDICT -PAIR -SETGLOB 20 -.loc marketmaker.sol, 0 - -.macro bindWallets -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 87 -OVER -PUSHCONT { - LDI 1 - LDREF - ENDS - CTOS - LDI 1 - SWAP - NULLSWAPIFNOT - PUSHCONT { - LDMSGADDR - LDU 256 - ROTREV - PAIR - } - IF - SWAP - LDI 1 - LDREF - ENDS - CTOS - LDI 1 - SWAP - NULLROTRIFNOT - PUSHCONT { - LDU 256 - } - IF -} -PUSHCONT { - LDI 1 - LDI 1 - SWAP - NULLSWAPIFNOT - PUSHCONT { - LDMSGADDR - LDU 256 - ROTREV - PAIR - } - IF - SWAP - LDI 1 - LDREF - ENDS - CTOS - LDI 1 - SWAP - NULLROTRIFNOT - PUSHCONT { - LDU 256 - } - IF -} -IFELSE -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $bindWallets_1bb6e177_internal_macro$ -} -IFREF { - CALL $upd_only_time_in_c4$ -} -THROW 0 - -.globl bindWallets_1bb6e177_internal -.type bindWallets_1bb6e177_internal, @function -CALL $bindWallets_1bb6e177_internal_macro$ - -.macro bindWallets_1bb6e177_internal_macro -.loc modifiers/modifiers.sol, 44 -GETGLOB 5 -DUP -ISNULL -PUSHCONT { - DROP - PUSHINT 0 -} -IF -GETGLOB 2 -EQUAL -THROWIFNOT 200 -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc marketmaker.sol, 93 -PUSH3 S0, S1, S2 -PUSH S6 -PUSHINT 0 -GETGLOB 20 -SECOND -PUSHINT 32 -DICTUGET -THROWIFNOT 50 -CALLREF { - LDMSGADDR - LDU 128 - LDU 8 - ENDS - TRIPLE -} -FIRST -NEWC -STSLICECONST x62_ -STSLICE -PUSHINT 2949852426645541256083542794369173188247553 -STUR 143 -ROLLREV 4 -NEWC -STSLICECONST x00000013 -STI 1 -XCPU S1, S0 -ISNULL -PUSHCONT { - DROP - STSLICECONST 0 -} -PUSHCONT { - SWAP - STSLICECONST 1 - SWAP - UNPAIR - XCHG S2 - STSLICE - STU 256 -} -IFELSE -STI 1 -NEWC -ROT -DUP -ISNULL -PUSHCONT { - DROP - STSLICECONST 0 -} -PUSHCONT { - SWAP - STSLICECONST 1 - STU 256 -} -IFELSE -STBREFR -STBREFR -ENDC -PUSHINT 1 -SENDRAWMSG -.loc marketmaker.sol, 94 -REVERSE 4, 0 -PUSHINT 1 -GETGLOB 20 -SECOND -PUSHINT 32 -DICTUGET -THROWIFNOT 50 -CALLREF { - LDMSGADDR - LDU 128 - LDU 8 - ENDS - TRIPLE -} -FIRST -NEWC -STSLICECONST x62_ -STSLICE -PUSHINT 2949852426645541256083542794369173188247553 -STUR 143 -ROLLREV 4 -NEWC -STSLICECONST x00000013 -STI 1 -XCPU S1, S0 -ISNULL -PUSHCONT { - DROP - STSLICECONST 0 -} -PUSHCONT { - SWAP - STSLICECONST 1 - SWAP - UNPAIR - XCHG S2 - STSLICE - STU 256 -} -IFELSE -STI 1 -NEWC -ROT -DUP -ISNULL -PUSHCONT { - DROP - STSLICECONST 0 -} -PUSHCONT { - SWAP - STSLICECONST 1 - STU 256 -} -IFELSE -STBREFR -STBREFR -ENDC -PUSHINT 1 -SENDRAWMSG -.loc marketmaker.sol, 0 - -.macro makeOrders -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 97 -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $makeOrders_f1b71576_internal_macro$ -} -CALLREF { - CALL $c7_to_c4$ -} -THROW 0 - -.globl makeOrders_f1b71576_internal -.type makeOrders_f1b71576_internal, @function -CALL $makeOrders_f1b71576_internal_macro$ - -.macro makeOrders_f1b71576_internal_macro -.loc modifiers/modifiers.sol, 44 -GETGLOB 5 -DUP -ISNULL -PUSHCONT { - DROP - PUSHINT 0 -} -IF -GETGLOB 2 -EQUAL -THROWIFNOT 200 -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc marketmaker.sol, 98 -GETGLOB 13 -PUSHCONT { - DUP - GTINT 0 -} -PUSHCONT { - .loc marketmaker.sol, 99 - CALLREF { - CALL $_innerPrice_f88151c7_internal_macro$ - } - GETGLOB 14 - PUSH S2 - MUL - UFITS 128 - ADD - UFITS 128 - .loc marketmaker.sol, 100 - OVER - DEC - UFITS 128 - GETGLOB 15 - SECOND - PUSHINT 32 - DICTUGET - THROWIFNOT 50 - PLDU 128 - PUSHINT 0 - GETGLOB 20 - SECOND - PUSHINT 32 - DICTUGET - THROWIFNOT 50 - CALLREF { - LDMSGADDR - LDU 128 - LDU 8 - ENDS - TRIPLE - } - SECOND - MUL - UFITS 128 - PUSHINT 10 - DIV - .loc marketmaker.sol, 101 - GETGLOB 13 - DEC - UFITS 128 - GETGLOB 16 - SECOND - PUSHINT 32 - DICTUGET - THROWIFNOT 50 - PLDU 128 - DIV - .loc marketmaker.sol, 102 - PUSHINT 0 - PUSH S2 - PAIR - SWAP - CALLREF { - CALL $_deployOrder_3f6f8352_internal_macro$ - } - .loc marketmaker.sol, 103 - GETGLOB 17 - PUSHINT 0 - ROT - PAIR - CALLREF { - UNPAIR - SWAP - NEWC - STU 128 - STU 128 - } - SWAP - UNPAIR - OVER - INC - ROLLREV 3 - PUSHINT 32 - DICTUSETB - PAIR - SETGLOB 17 - .loc marketmaker.sol, 98 - DEC - UFITS 128 - .loc marketmaker.sol, 0 -} -WHILE -DROP -.loc marketmaker.sol, 105 -GETGLOB 13 -PUSHCONT { - DUP - GTINT 0 -} -PUSHCONT { - PUSHCONT { - .loc marketmaker.sol, 106 - CALLREF { - CALL $_innerPrice_f88151c7_internal_macro$ - } - FITS 128 - GETGLOB 14 - FITS 128 - PUSH S2 - FITS 128 - MUL - FITS 128 - SUB - FITS 128 - .loc marketmaker.sol, 107 - DUP - LESSINT 0 - PUSHCONT { - .loc marketmaker.sol, 108 - DROP - .loc marketmaker.sol, 0 - } - IFJMP - .loc marketmaker.sol, 110 - UFITS 128 - .loc marketmaker.sol, 111 - OVER - DEC - UFITS 128 - GETGLOB 15 - SECOND - PUSHINT 32 - DICTUGET - THROWIFNOT 50 - PLDU 128 - PUSHINT 1 - GETGLOB 20 - SECOND - PUSHINT 32 - DICTUGET - THROWIFNOT 50 - CALLREF { - LDMSGADDR - LDU 128 - LDU 8 - ENDS - TRIPLE - } - SECOND - MUL - UFITS 128 - PUSHINT 10 - DIV - .loc marketmaker.sol, 112 - GETGLOB 13 - DEC - UFITS 128 - GETGLOB 16 - SECOND - PUSHINT 32 - DICTUGET - THROWIFNOT 50 - PLDU 128 - DIV - .loc marketmaker.sol, 113 - GETGLOB 19 - MUL - UFITS 128 - .loc marketmaker.sol, 114 - OVER - DIV - .loc marketmaker.sol, 115 - PUSHINT 1 - PUSH S2 - PAIR - SWAP - CALLREF { - CALL $_deployOrder_3f6f8352_internal_macro$ - } - .loc marketmaker.sol, 116 - GETGLOB 17 - PUSHINT 1 - ROT - PAIR - CALLREF { - UNPAIR - SWAP - NEWC - STU 128 - STU 128 - } - SWAP - UNPAIR - OVER - INC - ROLLREV 3 - PUSHINT 32 - DICTUSETB - PAIR - SETGLOB 17 - .loc marketmaker.sol, 0 - } - CALLX - .loc marketmaker.sol, 105 - DEC - UFITS 128 - .loc marketmaker.sol, 0 -} -WHILE -DROP -.loc marketmaker.sol, 0 - -.macro removeOrders -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 120 -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $removeOrders_5c6849f2_internal_macro$ -} -CALLREF { - CALL $c7_to_c4$ -} -THROW 0 - -.globl removeOrders_5c6849f2_internal -.type removeOrders_5c6849f2_internal, @function -CALL $removeOrders_5c6849f2_internal_macro$ - -.macro removeOrders_5c6849f2_internal_macro -.loc modifiers/modifiers.sol, 44 -GETGLOB 5 -DUP -ISNULL -PUSHCONT { - DROP - PUSHINT 0 -} -IF -GETGLOB 2 -EQUAL -THROWIFNOT 200 -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc marketmaker.sol, 121 -PUSHINT 0 -PUSHCONT { - DUP - GETGLOB 17 - FIRST - FITS 128 - DEC - FITS 128 - LEQ -} -PUSHCONT { - .loc marketmaker.sol, 122 - DUP - UFITS 128 - GETGLOB 17 - SECOND - PUSHINT 32 - DICTUGET - THROWIFNOT 50 - CALLREF { - LDU 128 - LDU 128 - ENDS - PAIR - } - CALLREF { - CALL $_cancelOrder_8fa90b7a_internal_macro$ - } - .loc marketmaker.sol, 121 - INC - FITS 128 - .loc marketmaker.sol, 0 -} -WHILE -DROP -.loc marketmaker.sol, 124 -PUSHINT 0 -NEWDICT -PAIR -SETGLOB 17 -.loc marketmaker.sol, 0 - -.macro deployOrder -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 128 -OVER -PUSHCONT { - LDREF - ENDS - CTOS -} -IF -LDU 128 -LDU 128 -ROTREV -PAIR -SWAP -LDU 128 -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $deployOrder_fc8ec546_internal_macro$ -} -IFREF { - CALL $upd_only_time_in_c4$ -} -THROW 0 - -.globl deployOrder_fc8ec546_internal -.type deployOrder_fc8ec546_internal, @function -CALL $deployOrder_fc8ec546_internal_macro$ - -.macro deployOrder_fc8ec546_internal_macro -.loc modifiers/modifiers.sol, 44 -GETGLOB 5 -DUP -ISNULL -PUSHCONT { - DROP - PUSHINT 0 -} -IF -GETGLOB 2 -EQUAL -THROWIFNOT 200 -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc marketmaker.sol, 129 -CALLREF { - CALL $_deployOrder_3f6f8352_internal_macro$ -} -.loc marketmaker.sol, 0 - -.globl _deployOrder_3f6f8352_internal -.type _deployOrder_3f6f8352_internal, @function -CALL $_deployOrder_3f6f8352_internal_macro$ - -.macro _deployOrder_3f6f8352_internal_macro -.loc marketmaker.sol, 136 -NOW -PUSHINT 10 -UFITS 32 -MULCONST 60 -UFITS 32 -ADD -UFITS 32 -.loc marketmaker.sol, 137 -TRUE -BLKPUSH 2, 0 -PUSH S4 -MYADDR -GETGLOB 18 -PUSHINT 0 -TUPLE 7 -.loc marketmaker.sol, 138 -PUSH S3 -FIRST -EQINT 1 -PUSHCONT { - .loc marketmaker.sol, 138 - FALSE - TRUE - PUSH2 S0, S4 - MYADDR - GETGLOB 18 - PUSHINT 0 - TUPLE 7 - NIP - .loc marketmaker.sol, 0 -} -IF -.loc marketmaker.sol, 139 -GETGLOB 11 -GETGLOB 12 -PUSH S5 -SECOND -ROLL 4 -PUSH S6 -FIRST -ROLL 6 -PUSH S7 -SECOND -CALLREF { - CALL $getLendSellAmount_24f0c148_internal_macro$ -} -PUSHINT 3000000000 -MYADDR -PUSHINT 0 -ROLL 9 -FIRST -GETGLOB 20 -SECOND -PUSHINT 32 -DICTUGET -THROWIFNOT 50 -CALLREF { - LDMSGADDR - LDU 128 - LDU 8 - ENDS - TRIPLE -} -FIRST -NEWC -STSLICECONST x62_ -STSLICE -PUSHINT 3436630257133181346258276825233557188247553 -STUR 143 -ROLLREV 9 -NEWC -STSLICECONST x00000010 -STU 32 -XCPU S1, S0 -ISNULL -PUSHCONT { - DROP - STSLICECONST 0 -} -PUSHCONT { - SWAP - STSLICECONST 1 - STSLICE -} -IFELSE -STU 128 -STU 128 -STU 32 -ROLLREV 4 -NEWC -STU 128 -STREF -STREF -SWAP -UNTUPLE 7 -REVERSE 8, 0 -STI 1 -STI 1 -STI 1 -STU 128 -STSLICE -ROTREV -NEWC -STU 256 -STU 256 -STBREFR -STBREFR -STBREFR -ENDC -PUSHINT 1 -SENDRAWMSG -.loc marketmaker.sol, 0 - -.macro cancelOrder -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 142 -OVER -PUSHCONT { - LDREF - ENDS - CTOS -} -IF -LDU 128 -LDU 128 -ROTREV -PAIR -SWAP -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $cancelOrder_8bd0bcf1_internal_macro$ -} -IFREF { - CALL $upd_only_time_in_c4$ -} -THROW 0 - -.globl cancelOrder_8bd0bcf1_internal -.type cancelOrder_8bd0bcf1_internal, @function -CALL $cancelOrder_8bd0bcf1_internal_macro$ - -.macro cancelOrder_8bd0bcf1_internal_macro -.loc modifiers/modifiers.sol, 44 -GETGLOB 5 -DUP -ISNULL -PUSHCONT { - DROP - PUSHINT 0 -} -IF -GETGLOB 2 -EQUAL -THROWIFNOT 200 -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc marketmaker.sol, 145 -CALLREF { - CALL $_cancelOrder_8fa90b7a_internal_macro$ -} -.loc marketmaker.sol, 0 - -.globl _cancelOrder_8fa90b7a_internal -.type _cancelOrder_8fa90b7a_internal, @function -CALL $_cancelOrder_8fa90b7a_internal_macro$ - -.macro _cancelOrder_8fa90b7a_internal_macro -.loc marketmaker.sol, 151 -NULL -.loc marketmaker.sol, 152 -TRUE -PUSH S2 -SECOND -CALLREF { - CALL $preparePriceXchg_49c313eb_internal_macro$ -} -PUSHINT 2000000000 -ROLL 4 -FIRST -GETGLOB 20 -SECOND -PUSHINT 32 -DICTUGET -THROWIFNOT 50 -CALLREF { - LDMSGADDR - LDU 128 - LDU 8 - ENDS - TRIPLE -} -FIRST -NEWC -STSLICECONST x62_ -STSLICE -PUSHINT 3274370980303967982866698814945429188247553 -STUR 143 -ROLLREV 4 -NEWC -STSLICECONST x00000011 -STU 128 -STSLICE -STI 1 -XCPU S1, S0 -ISNULL -PUSHCONT { - DROP - STSLICECONST 0 -} -PUSHCONT { - SWAP - STSLICECONST 1 - STU 256 -} -IFELSE -STBREFR -ENDC -PUSHINT 1 -SENDRAWMSG -.loc marketmaker.sol, 0 - -.macro sendMoney -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 156 -OVER -PUSHCONT { - LDREF - ENDS - CTOS -} -IF -LDU 128 -LDMSGADDR -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $sendMoney_2ff5f735_internal_macro$ -} -IFREF { - CALL $upd_only_time_in_c4$ -} -THROW 0 - -.globl sendMoney_2ff5f735_internal -.type sendMoney_2ff5f735_internal, @function -CALL $sendMoney_2ff5f735_internal_macro$ - -.macro sendMoney_2ff5f735_internal_macro -.loc modifiers/modifiers.sol, 44 -GETGLOB 5 -DUP -ISNULL -PUSHCONT { - DROP - PUSHINT 0 -} -IF -GETGLOB 2 -EQUAL -THROWIFNOT 200 -.loc modifiers/modifiers.sol, 45 -OVER -.loc modifiers/modifiers.sol, 64 -GETPARAM 7 -FIRST -SWAP -PUSHINT 1000000000 -ADD -UFITS 128 -GREATER -THROWIFNOT 203 -.loc marketmaker.sol, 157 -NEWC -STSLICECONST x42_ -STSLICE -SWAP -STGRAMS -PUSHINT 107 -STZEROES -ENDC -PUSHINT 3 -SENDRAWMSG -.loc marketmaker.sol, 0 - -.macro setPriceCode -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 161 -LDREF -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $setPriceCode_bbe9ccb6_internal_macro$ -} -CALLREF { - CALL $c7_to_c4$ -} -THROW 0 - -.globl setPriceCode_bbe9ccb6_internal -.type setPriceCode_bbe9ccb6_internal, @function -CALL $setPriceCode_bbe9ccb6_internal_macro$ - -.macro setPriceCode_bbe9ccb6_internal_macro -.loc modifiers/modifiers.sol, 44 -GETGLOB 5 -DUP -ISNULL -PUSHCONT { - DROP - PUSHINT 0 -} -IF -GETGLOB 2 -EQUAL -THROWIFNOT 200 -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc marketmaker.sol, 162 -SETGLOB 12 -.loc marketmaker.sol, 0 - -.macro setPriceSaltCode -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 165 -LDREF -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $setPriceSaltCode_acfae46d_internal_macro$ -} -CALLREF { - CALL $c7_to_c4$ -} -THROW 0 - -.globl setPriceSaltCode_acfae46d_internal -.type setPriceSaltCode_acfae46d_internal, @function -CALL $setPriceSaltCode_acfae46d_internal_macro$ - -.macro setPriceSaltCode_acfae46d_internal_macro -.loc modifiers/modifiers.sol, 44 -GETGLOB 5 -DUP -ISNULL -PUSHCONT { - DROP - PUSHINT 0 -} -IF -GETGLOB 2 -EQUAL -THROWIFNOT 200 -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc marketmaker.sol, 166 -SETGLOB 11 -.loc marketmaker.sol, 0 - -.macro setUserId -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 169 -OVER -PUSHCONT { - LDREF - ENDS - CTOS -} -IF -LDU 256 -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $setUserId_6c282993_internal_macro$ -} -CALLREF { - CALL $c7_to_c4$ -} -THROW 0 - -.globl setUserId_6c282993_internal -.type setUserId_6c282993_internal, @function -CALL $setUserId_6c282993_internal_macro$ - -.macro setUserId_6c282993_internal_macro -.loc modifiers/modifiers.sol, 44 -GETGLOB 5 -DUP -ISNULL -PUSHCONT { - DROP - PUSHINT 0 -} -IF -GETGLOB 2 -EQUAL -THROWIFNOT 200 -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc marketmaker.sol, 170 -SETGLOB 18 -.loc marketmaker.sol, 0 - -.macro setPairDecimals -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 173 -OVER -PUSHCONT { - LDREF - ENDS - CTOS -} -IF -LDU 128 -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $setPairDecimals_34d71841_internal_macro$ -} -CALLREF { - CALL $c7_to_c4$ -} -THROW 0 - -.globl setPairDecimals_34d71841_internal -.type setPairDecimals_34d71841_internal, @function -CALL $setPairDecimals_34d71841_internal_macro$ - -.macro setPairDecimals_34d71841_internal_macro -.loc modifiers/modifiers.sol, 44 -GETGLOB 5 -DUP -ISNULL -PUSHCONT { - DROP - PUSHINT 0 -} -IF -GETGLOB 2 -EQUAL -THROWIFNOT 200 -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc marketmaker.sol, 174 -SETGLOB 19 -.loc marketmaker.sol, 0 - -.macro setConfig -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 177 -OVER -PUSHCONT { - LDREF - ENDS - CTOS -} -IF -LDU 128 -LDU 128 -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $setConfig_cb82eb58_internal_macro$ -} -CALLREF { - CALL $c7_to_c4$ -} -THROW 0 - -.globl setConfig_cb82eb58_internal -.type setConfig_cb82eb58_internal, @function -CALL $setConfig_cb82eb58_internal_macro$ - -.macro setConfig_cb82eb58_internal_macro -.loc modifiers/modifiers.sol, 44 -GETGLOB 5 -DUP -ISNULL -PUSHCONT { - DROP - PUSHINT 0 -} -IF -GETGLOB 2 -EQUAL -THROWIFNOT 200 -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc marketmaker.sol, 178 -SETGLOB 13 -.loc marketmaker.sol, 179 -SETGLOB 14 -.loc marketmaker.sol, 0 - -.macro updateCode -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 183 -LDREF -LDREF -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $updateCode_10aae4d5_internal_macro$ -} -CALLREF { - CALL $c7_to_c4$ -} -THROW 0 - -.globl updateCode_10aae4d5_internal -.type updateCode_10aae4d5_internal, @function -CALL $updateCode_10aae4d5_internal_macro$ - -.macro updateCode_10aae4d5_internal_macro -.loc modifiers/modifiers.sol, 44 -GETGLOB 5 -DUP -ISNULL -PUSHCONT { - DROP - PUSHINT 0 -} -IF -GETGLOB 2 -EQUAL -THROWIFNOT 200 -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc marketmaker.sol, 184 -OVER -SETCODE -.loc marketmaker.sol, 185 -SWAP -CTOS -DUP -PUSHSLICE x8adb35 -SDEQ -PUSHCONT { - PLDREFIDX 1 - CTOS -} -IF -PLDREF -CTOS -BLESS -POP C3 -.loc marketmaker.sol, 186 -PUSHINT $onCodeUpgrade_0e89a1b9_internal$ -PUSH C3 -EXECUTE -.loc marketmaker.sol, 0 - -.internal-alias onCodeUpgrade_0e89a1b9_internal, 2083461128 -.internal onCodeUpgrade_0e89a1b9_internal -.loc marketmaker.sol, 190 -DROP -.loc marketmaker.sol, 191 -PUSHREFSLICE { - .blob x8000000000000000000000000000000000000000000000000000000000000000001_ -} -SETGLOB 10 -PUSHREF { -} -SETGLOB 11 -PUSHREF { -} -SETGLOB 12 -PUSHINT 0 -SETGLOB 13 -PUSHINT 0 -SETGLOB 14 -PUSHINT 0 -NEWDICT -PAIR -SETGLOB 15 -PUSHINT 0 -NEWDICT -PAIR -SETGLOB 16 -PUSHINT 0 -NEWDICT -PAIR -SETGLOB 17 -PUSHINT 0 -SETGLOB 18 -PUSHINT 0 -SETGLOB 19 -PUSHINT 0 -NEWDICT -PAIR -SETGLOB 20 -.loc marketmaker.sol, 0 -CALLREF { - CALL $c7_to_c4$ -} -COMMIT -THROW 0 - -.macro getInit -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 194 -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $getInit_96c13b0e_internal_macro$ -} -PUSH S2 -PUSHCONT { - PUSH S4 - CTOS - LDU 2 - LDMSGADDR - DROP - NIP - NEWC - STSLICECONST xc - STSLICE - PUSHINT 98 - STZEROES - REVERSE 2, 1 - STSLICECONST x9ba61b3f - SWAP - UNPAIR - XCHG S2 - STU 32 - STDICT - SWAP - UNPAIR - XCHG S2 - STU 32 - STDICT - ENDC - PUSHINT 0 - SENDRAWMSG -} -PUSHCONT { - DROP2 -} -IFELSE -IFREF { - CALL $upd_only_time_in_c4$ -} -THROW 0 - -.globl getInit_96c13b0e_internal -.type getInit_96c13b0e_internal, @function -CALL $getInit_96c13b0e_internal_macro$ - -.macro getInit_96c13b0e_internal_macro -.loc marketmaker.sol, 195 -GETGLOB 15 -GETGLOB 16 -.loc marketmaker.sol, 0 - -.macro getPriceAddr -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 198 -OVER -PUSHCONT { - LDREF - ENDS - CTOS -} -IF -LDU 128 -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $getPriceAddr_ec946895_internal_macro$ -} -OVER -PUSHCONT { - PUSH S3 - CTOS - LDU 2 - LDMSGADDR - DROP - NIP - NEWC - STSLICECONST xc - STSLICE - PUSHINT 1 - STUR 98 - SWAP - NEWC - STSLICECONST x9ce00362 - STSLICE - STBREFR - ENDC - PUSHINT 0 - SENDRAWMSG -} -PUSHCONT { - DROP -} -IFELSE -IFREF { - CALL $upd_only_time_in_c4$ -} -THROW 0 - -.globl getPriceAddr_ec946895_internal -.type getPriceAddr_ec946895_internal, @function -CALL $getPriceAddr_ec946895_internal_macro$ - -.macro getPriceAddr_ec946895_internal_macro -.loc marketmaker.sol, 199 -CALLREF { - CALL $preparePriceXchg_49c313eb_internal_macro$ -} -.loc marketmaker.sol, 0 - -.macro getPriceData -DROP -GETGLOB 6 -THROWIFNOT 76 -.loc marketmaker.sol, 202 -OVER -PUSHCONT { - LDREF - ENDS - CTOS -} -IF -LDU 128 -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $getPriceData_462b9a2d_internal_macro$ -} -OVER -PUSHCONT { - PUSH S3 - CTOS - LDU 2 - LDMSGADDR - DROP - NIP - NEWC - STSLICECONST xc - STSLICE - PUSHINT 2641377344 - STUR 130 - STREF - ENDC - PUSHINT 0 - SENDRAWMSG -} -PUSHCONT { - DROP -} -IFELSE -IFREF { - CALL $upd_only_time_in_c4$ -} -THROW 0 - -.globl getPriceData_462b9a2d_internal -.type getPriceData_462b9a2d_internal, @function -CALL $getPriceData_462b9a2d_internal_macro$ - -.macro getPriceData_462b9a2d_internal_macro -.loc marketmaker.sol, 203 -CALLREF { - CALL $preparePriceXchgData_326ef661_internal_macro$ -} -.loc marketmaker.sol, 0 - -.macro getWallets -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 206 -ENDS -.loc marketmaker.sol, 0 -CALLREF { - CALL $getWallets_db7a4605_internal_macro$ -} -OVER -PUSHCONT { - PUSH S3 - CTOS - LDU 2 - LDMSGADDR - DROP - NIP - NEWC - STSLICECONST xc - STSLICE - PUSHINT 4102026668 - STUR 130 - SWAP - UNPAIR - XCHG S2 - STU 32 - STDICT - ENDC - PUSHINT 0 - SENDRAWMSG -} -PUSHCONT { - DROP -} -IFELSE -IFREF { - CALL $upd_only_time_in_c4$ -} -THROW 0 - -.globl getWallets_db7a4605_internal -.type getWallets_db7a4605_internal, @function -CALL $getWallets_db7a4605_internal_macro$ - -.macro getWallets_db7a4605_internal_macro -.loc marketmaker.sol, 207 -GETGLOB 20 -.loc marketmaker.sol, 0 - -.macro receive_macro -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 0 -CALLREF { - CALL $c7_to_c4$ -} - -.macro on_bounce_macro -DROP -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 0 -DUP -IFREF { - CALL $upd_only_time_in_c4$ -} - -.macro fallback_macro -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc marketmaker.sol, 0 -DUP -IFREF { - CALL $upd_only_time_in_c4$ -} - -.macro c4_to_c7 -PUSHROOT -CTOS -LDU 256 ; pubkey c4 -LDU 64 ; pubkey timestamp c4 -LDU 1 ; ctor flag -NIP -LDMSGADDR -LDREF -LDREF -LDREF -ENDS -CTOS -LDU 128 -LDU 128 -LDU 32 -LDDICT -ROTREV -PAIR -SWAP -LDU 32 -LDDICT -ROTREV -PAIR -SWAP -LDU 32 -LDDICT -ROTREV -PAIR -SWAP -LDU 256 -LDU 128 -LDU 32 -LDDICT -ROTREV -PAIR -SWAP -ENDS -SETGLOB 20 -SETGLOB 19 -SETGLOB 18 -SETGLOB 17 -SETGLOB 16 -SETGLOB 15 -SETGLOB 14 -SETGLOB 13 -SETGLOB 12 -SETGLOB 11 -SETGLOB 10 -SETGLOB 3 -SETGLOB 2 - -.macro c4_to_c7_with_init_storage -PUSHROOT -CTOS -SBITS -GTINT 1 -PUSHCONT { - PUSHINT 0 - PUSHROOT - CTOS - PLDDICT ; D - PUSHREFSLICE { - .blob x8000000000000000000000000000000000000000000000000000000000000000001_ - } - PUSHREF { - } - DUP - PUSHINT 0 - BLKPUSH 2, 0 - NEWDICT - PAIR - BLKPUSH 2, 0 - PUSHINT 0 - BLKPUSH 2, 0 - NEWDICT - PAIR - SETGLOB 20 - SETGLOB 19 - SETGLOB 18 - SETGLOB 17 - SETGLOB 16 - SETGLOB 15 - SETGLOB 14 - SETGLOB 13 - SETGLOB 12 - SETGLOB 11 - SETGLOB 10 - PUSHINT 64 - DICTUGET - THROWIFNOT 61 - PLDU 256 - SETGLOB 2 - PUSHINT 0 ; timestamp - SETGLOB 3 - PUSHINT 3 - SETGLOB 13 - PUSHINT 1000000 - SETGLOB 14 - PUSHINT 10000 - SETGLOB 19 -} -IFREFELSE { - CALL $c4_to_c7$ -} - -.macro c7_to_c4 -GETGLOB 20 -GETGLOB 19 -GETGLOB 18 -GETGLOB 17 -GETGLOB 16 -GETGLOB 15 -GETGLOB 14 -GETGLOB 13 -GETGLOB 12 -GETGLOB 11 -GETGLOB 10 -GETGLOB 3 -GETGLOB 2 -NEWC -STU 256 -STU 64 -STONE -STSLICE -STREF -STREF -ROLLREV 8 -NEWC -STU 128 -STU 128 -SWAP -UNPAIR -XCHG S2 -STU 32 -STDICT -SWAP -UNPAIR -XCHG S2 -STU 32 -STDICT -SWAP -UNPAIR -XCHG S2 -STU 32 -STDICT -STU 256 -STU 128 -SWAP -UNPAIR -XCHG S2 -STU 32 -STDICT -STBREFR -ENDC -POPROOT - -.macro upd_only_time_in_c4 -PUSHROOT -CTOS -LDU 256 -LDU 64 -NIP -GETGLOB 3 -ROT -NEWC -STU 256 -STU 64 -STSLICE -ENDC -POPROOT - -.internal-alias :main_internal, 0 -.internal :main_internal -PUSHROOT -CTOS -SBITS -NEQINT 1 -SETGLOB 6 -PUSH S2 -CTOS -LDU 4 ; bounced tail -LDMSGADDR ; bounced src tail -DROP -SETGLOB 9 -MODPOW2 1 -IFRET -OVER -SEMPTY ; isEmpty -IFJMPREF { - GETGLOB 6 - THROWIFNOT 76 -} -OVER -LDUQ 32 ; [funcId] body' ok -PUSHCONT { - DROP - CALLREF { - CALL $fallback_macro$ - } - THROW 0 -} -IFNOT -OVER -IFNOTJMPREF { - GETGLOB 6 - THROWIFNOT 76 -} -SWAP -CALLREF { - CALL $public_function_selector$ -} -DROP2 -CALLREF { - CALL $fallback_macro$ -} - -.internal-alias :main_external, -1 -.internal :main_external -PUSHROOT -CTOS -SBITS -NEQINT 1 -SETGLOB 6 -PUSHREFSLICE { - .blob x8000000000000000000000000000000000000000000000000000000000000000001_ -} -SETGLOB 9 -OVER -CALLREF { - CALL $c4_to_c7_with_init_storage$ -} -LDU 1 ; haveSign msgSlice -SWAP -PUSHCONT { - PUSHPOW2 9 - LDSLICEX - DUP - MYADDR - NEWC - STSLICE - STSLICE - ENDC - HASHCU - SWAP - LDU 1 ; signatureSlice hashMsgSlice hasPubkey msgSlice - SWAP - PUSHCONT { - LDU 256 ; signatureSlice hashMsgSlice pubkey msgSlice - XCHG S3 - SWAP - } - PUSHCONT { - XCHG S2 - GETGLOB 2 - } - IFELSE - DUP - SETGLOB 5 - CHKSIGNU - THROWIFNOT 40 -} -PUSHCONT { - LDU 1 ; hasPubkey msgSlice - SWAP - THROWIF 58 -} -IFELSE -LDU 64 ; timestamp msgSlice -SWAP -CALL $replay_protection_macro$ -LDU 32 ; expireAt msgSlice -SWAP -NOW ; msgSlice expireAt now -GREATER ; msgSlice expireAt>now -THROWIFNOT 57 -LDU 32 ; funcId body -SWAP -CALLREF { - CALL $public_function_selector$ -} -DROP2 -CALLREF { - CALL $fallback_macro$ -} - -.macro public_function_selector -DUP -PUSHINT 1756716863 -LEQ -IFJMPREF { - DUP - PUSHINT 463870783 - LEQ - IFJMPREF { - DUP - PUSHINT 22475522 - EQUAL - IFJMPREF { - CALL $setWallet$ - } - DUP - PUSHINT 176078910 - EQUAL - IFJMPREF { - CALL $clearWallet$ - } - DUP - PUSHINT 352725591 - EQUAL - IFJMPREF { - CALL $sendMoney$ - } - DUP - PUSHINT 463870783 - EQUAL - IFJMPREF { - CALL $getInit$ - } - } - DUP - PUSHINT 519071127 - LEQ - IFJMPREF { - DUP - PUSHINT 480962201 - EQUAL - IFJMPREF { - CALL $setFlexClient$ - } - DUP - PUSHINT 484442978 - EQUAL - IFJMPREF { - CALL $getPriceAddr$ - } - DUP - PUSHINT 493893696 - EQUAL - IFJMPREF { - CALL $getPriceData$ - } - DUP - PUSHINT 519071127 - EQUAL - IFJMPREF { - CALL $setPriceCode$ - } - } - DUP - PUSHINT 975833324 - LEQ - IFJMPREF { - DUP - PUSHINT 639422336 - EQUAL - IFJMPREF { - CALL $removeOrders$ - } - DUP - PUSHINT 803291766 - EQUAL - IFJMPREF { - CALL $setPairDecimals$ - } - DUP - PUSHINT 805475044 - EQUAL - IFJMPREF { - CALL $init$ - } - DUP - PUSHINT 975833324 - EQUAL - IFJMPREF { - CALL $setConfig$ - } - } - DUP - PUSHINT 1756716863 - LEQ - IFJMPREF { - DUP - PUSHINT 1038408101 - EQUAL - IFJMPREF { - CALL $setPriceSaltCode$ - } - DUP - PUSHINT 1498911242 - EQUAL - IFJMPREF { - CALL $bindWallets$ - } - DUP - PUSHINT 1732020652 - EQUAL - IFJMPREF { - CALL $makeOrders$ - } - DUP - PUSHINT 1756716863 - EQUAL - IFJMPREF { - CALL $constructor$ - } - } -} -DUP -PUSHINT 2136069134 -LEQ -IFJMPREF { - DUP - PUSHINT 2095978802 - LEQ - IFJMPREF { - DUP - PUSHINT 1835176432 - EQUAL - IFJMPREF { - CALL $setUserId$ - } - DUP - PUSHINT 1871649425 - EQUAL - IFJMPREF { - CALL $cancelOrder$ - } - DUP - PUSHINT 1954543020 - EQUAL - IFJMPREF { - CALL $getWallets$ - } - DUP - PUSHINT 2095978802 - EQUAL - IFJMPREF { - CALL $updateCode$ - } - } - DUP - PUSHINT 2136069134 - EQUAL - IFJMPREF { - CALL $deployOrder$ - } -} - diff --git a/contracts/amm/marketmaker.sol b/contracts/amm/marketmaker.sol index ba98d2d..a5eb00c 100644 --- a/contracts/amm/marketmaker.sol +++ b/contracts/amm/marketmaker.sol @@ -16,6 +16,7 @@ contract MarketMaker is Modifiers { address m_FlexClient; TvmCell m_PriceSaltCode; TvmCell m_PriceCode; + TvmCell m_PriceDataPart; uint128 _numberOrders = 3; uint128 _stepPrice = 1e6; @@ -25,6 +26,11 @@ contract MarketMaker is Modifiers { uint256 _user_id; uint128 _pairdecimals = 1e4; + uint128 _ready = 0; + uint128 _oldprice = 0; + + uint128 _count = 0; + Wallet[] _FlexWallet; constructor() public onlyOwner accept { @@ -43,6 +49,7 @@ contract MarketMaker is Modifiers { sum += fibNumber[i]; sumFib.push(sum); } + _oldprice = _innerPrice(); } function _innerPrice() private view returns(uint128) { @@ -64,20 +71,41 @@ contract MarketMaker is Modifiers { return address(tvm.hash(stateInit)); } - function preparePriceXchgData(uint128 price_num) private pure returns(TvmCell) { - mapping(uint => uint) test; + function preparePriceXchgData(uint128 price_num) private view returns(TvmCell) { +/* mapping(uint => uint) test; DPriceXchgCustom price_data = DPriceXchgCustom(price_num, 0, 0, 0, test, 0, test); TvmBuilder b; - b.store(price_data); + b.store(price_data);*/ + TvmBuilder b; + b.store(price_num, m_PriceDataPart); return b.toCell(); } - function setWallet (address wallet, uint128 balance, uint8 decimals) public onlyOwner accept { + function setWallet (address wallet, uint8 decimals) public onlyOwner accept { Wallet FlexWallet; FlexWallet.wallet = wallet; - FlexWallet.balance = balance; + FlexWallet.balance = 0; FlexWallet.decimals = decimals; _FlexWallet.push(FlexWallet); + AFlexWallet(FlexWallet.wallet).details{value: 1 ton}(uint32(100)); + + } + + function setBalance( + string name, string symbol, uint8 decimals, uint128 balance, + uint256 root_public_key, address root_address, uint256 wallet_pubkey, + optional(address) owner_address, + optional(uint256) lend_pubkey, + lend_owner_array_record[] lend_owners, + uint128 lend_balance, + optional(BindInfo) binding, + uint256 code_hash, + uint16 code_depth, + int8 workchain_id) public accept functionID(100) { + name; symbol; decimals; root_public_key; root_address; wallet_pubkey; owner_address; lend_pubkey; lend_owners; lend_balance; binding; code_hash; code_depth; workchain_id; + if (_FlexWallet[0].wallet == msg.sender) { _FlexWallet[0].balance = balance; } + if (_FlexWallet[1].wallet == msg.sender) { _FlexWallet[1].balance = balance; } + if ((_FlexWallet.length == 2) && (_ready == 1)) { refresh(); } } function clearWallet () public onlyOwner accept { @@ -94,16 +122,32 @@ contract MarketMaker is Modifiers { AFlexWallet(_FlexWallet[1].wallet).bind{value: 1 ton, flag: 1}(set_binding, binding, set_trader, trader); } + function refreshBalance(address wallet) private view { + if (_FlexWallet[0].wallet == wallet) { AFlexWallet(wallet).details{value: 1 ton}(100); } + if (_FlexWallet[1].wallet == wallet) { AFlexWallet(wallet).details{value: 1 ton}(100); } + } + + function refresh() private { + uint128 newprice = _innerPrice(); + _count++; + if ((newprice != _oldprice) || (_count >= 5)) { + _oldprice = newprice; + removeOrders(); + makeOrders(); + _count = 0; + } + } + function makeOrders() public onlyOwner accept { for (uint128 i = _numberOrders; i >= 1; i--){ - uint128 nowPrice = _innerPrice() + _stepPrice * i; + uint128 nowPrice = _oldprice + _stepPrice * i; uint128 nowOrder = fibNumber[i - 1] * _FlexWallet[0].balance / 10; nowOrder /= sumFib[_numberOrders - 1]; _deployOrder(Order(0, nowPrice), nowOrder); _price.push(Order(0, nowPrice)); } for (uint128 i = _numberOrders; i >= 1; i--){ - int128 nowPrice_t = int128(_innerPrice()) - int128(_stepPrice) * int128(i); + int128 nowPrice_t = int128(_oldprice) - int128(_stepPrice) * int128(i); if (nowPrice_t < 0){ continue; } @@ -166,6 +210,10 @@ contract MarketMaker is Modifiers { m_PriceSaltCode = code; } + function setPriceDataPart(TvmCell code) public onlyOwner accept { + m_PriceDataPart = code; + } + function setUserId(uint256 id) public onlyOwner accept { _user_id = id; } @@ -179,6 +227,9 @@ contract MarketMaker is Modifiers { _stepPrice = step; } + function setReady(uint128 ready) public onlyOwner accept { + _ready = ready; + } function updateCode(TvmCell newcode, TvmCell cell) public onlyOwner accept { tvm.setcode(newcode); @@ -199,10 +250,14 @@ contract MarketMaker is Modifiers { return preparePriceXchg(price); } - function getPriceData(uint128 price) public pure returns(TvmCell) { + function getPriceData(uint128 price) public view returns(TvmCell) { return preparePriceXchgData(price); } + function getPriceStateInit(uint128 price) public view returns(TvmCell) { + return tvm.buildStateInit(m_PriceSaltCode, preparePriceXchgData(price)); + } + function getWallets() public view returns(Wallet[]) { return _FlexWallet; } @@ -212,6 +267,9 @@ contract MarketMaker is Modifiers { } onBounce(TvmSlice body) external view { + body; + tvm.accept(); + refreshBalance(msg.sender); } fallback() external view { diff --git a/contracts/amm/modifiers/errors.sol b/contracts/amm/modifiers/errors.sol index 3dffa73..a351e8d 100644 --- a/contracts/amm/modifiers/errors.sol +++ b/contracts/amm/modifiers/errors.sol @@ -13,4 +13,5 @@ abstract contract Errors { uint constant ERR_LOW_VALUE = 201; uint constant ERR_INVALID_SENDER = 202; uint constant ERR_LOW_BALANCE = 203; + uint constant ERR_WRONG_PRICE_ADDR = 204; } diff --git a/contracts/amm/scripts/setWallet.sh b/contracts/amm/scripts/setWallet.sh index d33c1e2..c0313ce 100644 --- a/contracts/amm/scripts/setWallet.sh +++ b/contracts/amm/scripts/setWallet.sh @@ -1,12 +1,14 @@ -./tonos-cli call 0:d63dfca928e51ec6f1d2c4b5a1a74932120fb210c5e998ddbd8587099011a72b init '{}' --abi ../../../work/gex/contracts/amm/marketmaker.abi.json --sign surf2.json ./tonos-cli call 0:d63dfca928e51ec6f1d2c4b5a1a74932120fb210c5e998ddbd8587099011a72b setFlexClient '{"client":"0:836444681da138f13179d2bf16485520c9b460a4b3b7302c21b58386772dfe96"}' --abi ../../../work/gex/contracts/amm/marketmaker.abi.json --sign surf2.json ./tonos-cli call 0:d63dfca928e51ec6f1d2c4b5a1a74932120fb210c5e998ddbd8587099011a72b setUserId '{"id":"0xedab2e180ca6566edf8c2120dc90af7daa48d89f2983f26c934c9504e6dcef2e"}' --abi ../../../work/gex/contracts/amm/marketmaker.abi.json --sign surf2.json -./tonos-cli call 0:d63dfca928e51ec6f1d2c4b5a1a74932120fb210c5e998ddbd8587099011a72b setWallet '{"wallet":"0:acac20fe9f3f19a8549b7fb17e9e90c4798562d0658a503dcbfd8d2f66af60a2", "balance": 100, "decimals": 6}' --abi ../../../work/gex/contracts/amm/marketmaker.abi.json --sign surf2.json -./tonos-cli call 0:d63dfca928e51ec6f1d2c4b5a1a74932120fb210c5e998ddbd8587099011a72b setWallet '{"wallet":"0:0ba3a4da80b6b385b43a94f60759c0de3feacb82bef2827a2421e7375cbe99eb", "balance": 100, "decimals": 6}' --abi ../../../work/gex/contracts/amm/marketmaker.abi.json --sign surf2.json +./tonos-cli call 0:d63dfca928e51ec6f1d2c4b5a1a74932120fb210c5e998ddbd8587099011a72b setWallet '{"wallet":"0:acac20fe9f3f19a8549b7fb17e9e90c4798562d0658a503dcbfd8d2f66af60a2", "decimals": 6}' --abi ../../../work/gex/contracts/amm/marketmaker.abi.json --sign surf2.json +./tonos-cli call 0:d63dfca928e51ec6f1d2c4b5a1a74932120fb210c5e998ddbd8587099011a72b setWallet '{"wallet":"0:0ba3a4da80b6b385b43a94f60759c0de3feacb82bef2827a2421e7375cbe99eb", "decimals": 6}' --abi ../../../work/gex/contracts/amm/marketmaker.abi.json --sign surf2.json ./tonos-cli call 0:d63dfca928e51ec6f1d2c4b5a1a74932120fb210c5e998ddbd8587099011a72b setPriceCode '{"code": "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"}' --abi ../../../work/gex/contracts/amm/marketmaker.abi.json --sign surf2.json ./tonos-cli call 0:d63dfca928e51ec6f1d2c4b5a1a74932120fb210c5e998ddbd8587099011a72b setPriceSaltCode '{"code": "te6ccgECDAEAAf8AAUOAG7IWP+PJWjBbPG1fF3zVyVk1e0ftEVjbQc/m1t78JT9QAQFDgBHOVDCbeMfrqua93+fb4d+fqd5NLHECtEireECjCQyD8AIDhYAUUVYZBgBD+nvHky6yxqW7UNM0J2CZOBrZk1gMdwGRy0DbgH4hK89zzGn0lKfB3+IYkaup8YGweu88KaINoZ+hidALCgMDhYAXcgyD/6j36l3K73rhNzXBLd2Hz7wF7n5t7fVMeBp53yDbgH4hK89zzGn0lKfB3+IYkaup8YGweu88KaINoZ+hidAJCAQBQ4AWqhUicIpabaFDxx29dYAMfmJNya9JnrJ82BIfVF2ApHAFAUOAAAttYrmQhMPpiR5DhCKdH09NCMZzfq9gMk96IJ0OFOQwBgGjgA3MSoOTVnRcha61w9wMDdgFAWadzYtJ5A1fmmmuOIf0gAAAAAAAAAAAAAAAAjw0YAAAAAAAAAAAAAAAAAF9eEAAAAAAAAAAAAAAAAAAvrwgEAcAxAAAAAAAAAAAAAAAABfXhAAAAAAAAAAAAAAAAAAF9eEAAAAAAAAAAAAAAAAAAJiWgAAAAAAAAAAAAAAAAAAPQkAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAnEBQAAAhUU0RUABJUZXN0IFVTRFQACFRTREMAElRlc3QgVVNEQw=="}' --abi ../../../work/gex/contracts/amm/marketmaker.abi.json --sign surf2.json ./tonos-cli call 0:d63dfca928e51ec6f1d2c4b5a1a74932120fb210c5e998ddbd8587099011a72b bindWallets '{"set_binding": true, "binding":{"flex": "0:dd90b1ff1e4ad182d9e36af8bbe6ae4ac9abda3f688ac6da0e7f36b6f7e129fa", "unsalted_price_code_hash": "0x2208041ad970526ce91ba3839b5d10f8d097bc87f3c84d5e4902a76a781ae429"},"set_trader": true, "trader": "0x75f973b351fd663e56f4d7faf93a159de05c47967f2653ac94cd164da2c50259"}' --abi ../../../work/gex/contracts/amm/marketmaker.abi.json --sign surf2.json - - +./tonos-cli call 0:d63dfca928e51ec6f1d2c4b5a1a74932120fb210c5e998ddbd8587099011a72b setConfig '{"step":1, "number":3}' --abi ../../../work/gex/contracts/amm/marketmaker.abi.json --sign surf2.json +./tonos-cli call 0:d63dfca928e51ec6f1d2c4b5a1a74932120fb210c5e998ddbd8587099011a72b setPairDecimals '{"dec":10000}' --abi ../../../work/gex/contracts/amm/marketmaker.abi.json --sign surf2.json +./tonos-cli call 0:d63dfca928e51ec6f1d2c4b5a1a74932120fb210c5e998ddbd8587099011a72b setPriceDataPart '{"code":"te6ccgEBAQEAKwAAUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg"}' --abi ../../../work/gex/contracts/amm/marketmaker.abi.json --sign surf2.json +./tonos-cli call 0:d63dfca928e51ec6f1d2c4b5a1a74932120fb210c5e998ddbd8587099011a72b init '{}' --abi ../../../work/gex/contracts/amm/marketmaker.abi.json --sign surf2.json +#./tonos-cli call 0:d63dfca928e51ec6f1d2c4b5a1a74932120fb210c5e998ddbd8587099011a72b setReady '{"ready":true}' --abi ../../../work/gex/contracts/amm/marketmaker.abi.json --sign surf2.json diff --git a/contracts/amm/stocknotify.code b/contracts/amm/stocknotify.code deleted file mode 100644 index 0772f6e..0000000 --- a/contracts/amm/stocknotify.code +++ /dev/null @@ -1,207 +0,0 @@ -.version sol 0.66.0 - -.macro constructor -DROP -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7_with_init_storage$ -} -GETGLOB 6 -THROWIF 51 -ENDS -.loc modifiers/modifiers.sol, 49 -ACCEPT -.loc modifiers/modifiers.sol, 0 -CALLREF { - CALL $c7_to_c4$ -} -THROW 0 - -.macro receive_macro -GETGLOB 6 -THROWIFNOT 76 -GETGLOB 2 -ISNULL -IFREF { - CALL $c4_to_c7$ -} -.loc stocknotify.sol, 0 -CALLREF { - CALL $c7_to_c4$ -} - -.internal-alias onCodeUpgrade_fb00cc5e_internal, 749264623 -.internal onCodeUpgrade_fb00cc5e_internal -.loc stocknotify.sol, 0 -CALLREF { - CALL $c7_to_c4$ -} -COMMIT -THROW 0 - -.macro c4_to_c7 -PUSHROOT -CTOS -LDU 256 ; pubkey c4 -LDU 64 ; pubkey timestamp c4 -LDU 1 ; ctor flag -NIP -ENDS -SETGLOB 3 -SETGLOB 2 - -.macro c4_to_c7_with_init_storage -PUSHROOT -CTOS -SBITS -GTINT 1 -PUSHCONT { - PUSHINT 0 - PUSHROOT - CTOS - PLDDICT ; D - PUSHINT 64 - DICTUGET - THROWIFNOT 61 - PLDU 256 - SETGLOB 2 - PUSHINT 0 ; timestamp - SETGLOB 3 -} -IFREFELSE { - CALL $c4_to_c7$ -} - -.macro c7_to_c4 -GETGLOB 3 -GETGLOB 2 -NEWC -STU 256 -STU 64 -STONE -ENDC -POPROOT - -.macro upd_only_time_in_c4 -PUSHROOT -CTOS -LDU 256 -LDU 64 -NIP -GETGLOB 3 -ROT -NEWC -STU 256 -STU 64 -STSLICE -ENDC -POPROOT - -.internal-alias :main_internal, 0 -.internal :main_internal -PUSHROOT -CTOS -SBITS -NEQINT 1 -SETGLOB 6 -PUSH S2 -CTOS -LDU 4 ; bounced tail -LDMSGADDR ; bounced src tail -DROP -SETGLOB 9 -MODPOW2 1 -IFRET -OVER -SEMPTY ; isEmpty -IFJMPREF { - GETGLOB 6 - THROWIFNOT 76 -} -OVER -LDUQ 32 ; [funcId] body' ok -THROWIFNOT 60 -OVER -IFNOTJMPREF { - GETGLOB 6 - THROWIFNOT 76 -} -SWAP -CALLREF { - CALL $public_function_selector$ -} -THROW 60 - -.internal-alias :main_external, -1 -.internal :main_external -PUSHROOT -CTOS -SBITS -NEQINT 1 -SETGLOB 6 -PUSHSLICE x8000000000000000000000000000000000000000000000000000000000000000001_ -SETGLOB 9 -OVER -CALLREF { - CALL $c4_to_c7_with_init_storage$ -} -LDU 1 ; haveSign msgSlice -SWAP -PUSHCONT { - PUSHPOW2 9 - LDSLICEX - DUP - MYADDR - NEWC - STSLICE - STSLICE - ENDC - HASHCU - SWAP - LDU 1 ; signatureSlice hashMsgSlice hasPubkey msgSlice - SWAP - PUSHCONT { - LDU 256 ; signatureSlice hashMsgSlice pubkey msgSlice - XCHG S3 - SWAP - } - PUSHCONT { - XCHG S2 - GETGLOB 2 - } - IFELSE - DUP - SETGLOB 5 - CHKSIGNU - THROWIFNOT 40 -} -PUSHCONT { - LDU 1 ; hasPubkey msgSlice - SWAP - THROWIF 58 -} -IFELSE -LDU 64 ; timestamp msgSlice -SWAP -CALL $replay_protection_macro$ -LDU 32 ; expireAt msgSlice -SWAP -NOW ; msgSlice expireAt now -GREATER ; msgSlice expireAt>now -THROWIFNOT 57 -LDU 32 ; funcId body -SWAP -CALLREF { - CALL $public_function_selector$ -} -THROW 60 - -.macro public_function_selector -DUP -PUSHINT 1756716863 -EQUAL -IFJMPREF { - CALL $constructor$ -} -