tx · B5S3mvGzH8gBR3QERw35R7RTknQ36VDfaCgddtqAKJjG

3N7QVf6Rexcj4SAcYXC5XgZ3mjkbVwEHeUy:  -0.01400000 Waves

2022.03.02 21:49 [1946738] smart account 3N7QVf6Rexcj4SAcYXC5XgZ3mjkbVwEHeUy > SELF 0.00000000 Waves

{ "type": 13, "id": "B5S3mvGzH8gBR3QERw35R7RTknQ36VDfaCgddtqAKJjG", "fee": 1400000, "feeAssetId": null, "timestamp": 1646247035780, "version": 1, "sender": "3N7QVf6Rexcj4SAcYXC5XgZ3mjkbVwEHeUy", "senderPublicKey": "BzdZUDWWPgMxaJXc1cbPuhaxz5ab5xq46SH9gAWBfdai", "proofs": [ "VWxs2WvJ5WVQ4om6NDoJhzF7ya7zupmsjF7XttrwGoLTghg6KZbmBSKfFv7sqyxbyQzgMHCS7HUTgppjqk5H47g", "2FhjtneaeAKeQwDCxhhKrfEJ37YGAsEjJzu7539RmTYntEu8op5gLTZbCem2nKbhGYE6hmHrSYrSMai3x1WZEkiC", "PVXxTbavx1JrviGL8oM3QwqQNVuVrqfqz9eZMCKevAPUKdjys3Xvh6cSVAxU8htZ1EqT5K3LUH7ecrpiThGVMJN" ], "script": "base64:AAIFAAAAAAAAAAkIAhIAEgMKAQgAAABBAQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQAAAAAAAAAAAAEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkCAAAAAAEAAAAWZ2V0Qm9vbEJ5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5BwEAAAAYZ2V0U3RyaW5nQnlBZGRyZXNzQW5kS2V5AAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkCAAAAAAEAAAAYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkAAAAAAAAAAAABAAAACWFzQW55TGlzdAAAAAEAAAADdmFsBAAAAAckbWF0Y2gwBQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACUxpc3RbQW55XQQAAAAKdmFsQW55THlzdAUAAAAHJG1hdGNoMAUAAAAKdmFsQW55THlzdAkAAAIAAAABAgAAABtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BAAAACGFzU3RyaW5nAAAAAQAAAAN2YWwEAAAAByRtYXRjaDAFAAAAA3ZhbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAZ2YWxTdHIFAAAAByRtYXRjaDAFAAAABnZhbFN0cgkAAAIAAAABAgAAABhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBAAAABWFzSW50AAAAAQAAAAN2YWwEAAAAByRtYXRjaDAFAAAAA3ZhbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAZ2YWxJbnQFAAAAByRtYXRjaDAFAAAABnZhbEludAkAAAIAAAABAgAAABVmYWlsIHRvIGNhc3QgaW50byBJbnQAAAAAB1dBVkVMRVQAAAAAAAX14QAAAAAABVBBVUxJAAAAAAAAD0JAAAAAAAhCSUdQQVVMSQkAATYAAAABAAAAAAAAD0JAAAAAAAhQUklDRUxFVAAAAAAAAA9CQAAAAAAETVVMVAAAAAAABfXhAAAAAAAJQklHTVVMVDE2CQABNgAAAAEAACOG8m/BAAAAAAAABlNDQUxFOAAAAAAAAAAACAAAAAAHU0NBTEUxNgAAAAAAAAAAEAAAAAANTUlOT1JERVJUT1RBTAkAAGgAAAACAAAAAAAAAAAKBQAAAAdXQVZFTEVUAAAAAAZNQVhST0kAAAAAAAAAAF8AAAAACENBTkNFTEVEAgAAAAhjYW5jZWxlZAAAAAADTkVXAgAAAANuZXcAAAAABkZJTExFRAIAAAAGZmlsbGVkAAAAAAhQcmljZUtleQIAAAAFcHJpY2UAAAAADk5zYnRBc3NldElkS2V5AgAAAA1ib25kX2Fzc2V0X2lkAAAAABJOZXV0cmlub0Fzc2V0SWRLZXkCAAAAEW5ldXRyaW5vX2Fzc2V0X2lkAAAAABFCYWxhbmNlTG9ja2Vka0tleQIAAAANYmFsYW5jZV9sb2NrXwAAAAAVV2F2ZXNMb2NrZWRCYWxhbmNlS2V5CQABLAAAAAIFAAAAEUJhbGFuY2VMb2NrZWRrS2V5AgAAAAV3YXZlcwAAAAAYTmV1dHJpbm9Mb2NrZWRCYWxhbmNlS2V5CQABLAAAAAIFAAAAEUJhbGFuY2VMb2NrZWRrS2V5AgAAAAhuZXV0cmlubwAAAAANRmlyc3RPcmRlcktleQIAAAALb3JkZXJfZmlyc3QAAAAAD01hdGhDb250cmFjdEtleQIAAAANbWF0aF9jb250cmFjdAAAAAAVTWluV2F2ZXNGb3JOc2J0QnV5S2V5AgAAABJtaW5fd2F2ZXNfbnNidF9idXkBAAAAEmdldFJvaUJ5T3JkZXJJZEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAABBkZWJ1Z19vcmRlcl9yb2lfBQAAAAdvcmRlcklkAQAAABBnZXRPcmRlclByaWNlS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAADG9yZGVyX3ByaWNlXwUAAAAHb3JkZXJJZAEAAAAQZ2V0T3JkZXJUb3RhbEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAxvcmRlcl90b3RhbF8FAAAAB29yZGVySWQBAAAAEGdldE9yZGVyT3duZXJLZXkAAAABAAAAB29yZGVySWQJAAEsAAAAAgIAAAAMb3JkZXJfb3duZXJfBQAAAAdvcmRlcklkAQAAABFnZXRPcmRlckhlaWdodEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAA1vcmRlcl9oZWlnaHRfBQAAAAdvcmRlcklkAQAAABFnZXRPcmRlclN0YXR1c0tleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAA1vcmRlcl9zdGF0dXNfBQAAAAdvcmRlcklkAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAE29yZGVyX2ZpbGxlZF90b3RhbF8FAAAAB29yZGVySWQBAAAAD2dldFByZXZPcmRlcktleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAtvcmRlcl9wcmV2XwUAAAAHb3JkZXJJZAEAAAAPZ2V0TmV4dE9yZGVyS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAC29yZGVyX25leHRfBQAAAAdvcmRlcklkAQAAABZjb252ZXJ0TmV1dHJpbm9Ub1dhdmVzAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAABrAAAAAwkAAGsAAAADBQAAAAZhbW91bnQFAAAACFBSSUNFTEVUBQAAAAVwcmljZQUAAAAHV0FWRUxFVAUAAAAFUEFVTEkBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACAAAABmFtb3VudAAAAAVwcmljZQkAAGsAAAADCQAAawAAAAMFAAAABmFtb3VudAUAAAAFcHJpY2UFAAAACFBSSUNFTEVUBQAAAAVQQVVMSQUAAAAHV0FWRUxFVAEAAAASY29udmVydFdhdmVzVG9Cb25kAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAQAAABZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAAAAAgUAAAAGYW1vdW50BQAAAAVwcmljZQEAAAASY29udmVydEJvbmRUb1dhdmVzAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAQAAABZjb252ZXJ0TmV1dHJpbm9Ub1dhdmVzAAAAAgUAAAAGYW1vdW50BQAAAAVwcmljZQEAAAAFdG9YMTYAAAACAAAAB29yaWdWYWwAAAANb3JpZ1NjYWxlTXVsdAkAATwAAAADCQABNgAAAAEFAAAAB29yaWdWYWwFAAAACUJJR01VTFQxNgkAATYAAAABBQAAAA1vcmlnU2NhbGVNdWx0AQAAAAdmcm9tWDE2AAAAAgAAAAN2YWwAAAAPcmVzdWx0U2NhbGVNdWx0CQABoAAAAAEJAAE8AAAAAwUAAAADdmFsCQABNgAAAAEFAAAAD3Jlc3VsdFNjYWxlTXVsdAUAAAAJQklHTVVMVDE2AAAAABBuZXV0cmlub0NvbnRyYWN0CQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFXcARipkeb6a1WaJTL74WMMIIgKJoIFJayAAAAAA9jb250cm9sQ29udHJhY3QJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVcjs60SXJOkyuw5/k9G1s1WTS37EPtjmHoAAAAAE2xpcXVpZGF0aW9uQ29udHJhY3QJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVca6knL+gp+ygh/KNWflY4Me2m1qTiRH0gAAAAADG1hdGhDb250cmFjdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAAPTWF0aENvbnRyYWN0S2V5AAAAAA9uZXV0cmlub0Fzc2V0SWQBAAAAILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRAAAAAAtuc2J0QXNzZXRJZAEAAAAgVe7DvqoL8FDoccgbqm5wnqSxyP5KLrnB8czFaw94l0sAAAAACWlzQmxvY2tlZAkBAAAAFmdldEJvb2xCeUFkZHJlc3NBbmRLZXkAAAACBQAAAA9jb250cm9sQ29udHJhY3QCAAAACmlzX2Jsb2NrZWQAAAAAFW1pbldhdmVzQW1vdW50TnNidEJ1eQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAABVNaW5XYXZlc0Zvck5zYnRCdXlLZXkAAAAAAAAAAAoAAAAACmZpcnN0T3JkZXIJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAADUZpcnN0T3JkZXJLZXkBAAAADWdldE9yZGVyUHJpY2UAAAABAAAAAmlkCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAQZ2V0T3JkZXJQcmljZUtleQAAAAEFAAAAAmlkAQAAAA1nZXRPcmRlclRvdGFsAAAAAQAAAAJpZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEGdldE9yZGVyVG90YWxLZXkAAAABBQAAAAJpZAEAAAANZ2V0T3JkZXJPd25lcgAAAAEAAAACaWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABBnZXRPcmRlck93bmVyS2V5AAAAAQUAAAACaWQBAAAADmdldE9yZGVyU3RhdHVzAAAAAQAAAAJpZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEWdldE9yZGVyU3RhdHVzS2V5AAAAAQUAAAACaWQBAAAAE2dldE9yZGVyRmlsbGVkVG90YWwAAAABAAAAAmlkCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAWZ2V0T3JkZXJGaWxsZWRUb3RhbEtleQAAAAEFAAAAAmlkAQAAAAxnZXRQcmV2T3JkZXIAAAABAAAAAmlkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAPZ2V0UHJldk9yZGVyS2V5AAAAAQUAAAACaWQBAAAADGdldE5leHRPcmRlcgAAAAEAAAACaWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA9nZXROZXh0T3JkZXJLZXkAAAABBQAAAAJpZAEAAAAPZ2V0UmV2ZXJzZVByaWNlAAAAAQAAAAVwcmljZQkAAGkAAAACCQAAaAAAAAIFAAAACFBSSUNFTEVUBQAAAAhQUklDRUxFVAUAAAAFcHJpY2UBAAAAFmNhbGNOc2J0MldhdmVzUHJpY2VSYXcAAAACAAAADXNwZW50V2F2ZXNSYXcAAAAPcmVjZWl2ZWROc2J0UmF3CQAAawAAAAMFAAAADXNwZW50V2F2ZXNSYXcJAABoAAAAAgUAAAAFUEFVTEkFAAAACFBSSUNFTEVUBQAAAA9yZWNlaXZlZE5zYnRSYXcBAAAACW9yZGVyRGF0YQAAAAgAAAAHb3JkZXJJZAAAAA10b3RhbFdhdmVsZXRz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BQAAAAtjdXJ2ZVJlc3VsdAUAAAADbmlsBQAAAApuc2J0QW1vdW50CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAC2NhbmNlbE9yZGVyAAAAAQAAAAdvcmRlcklkBAAAAAVvd25lcgkBAAAADWdldE9yZGVyT3duZXIAAAABBQAAAAdvcmRlcklkBAAAAAZhbW91bnQJAABlAAAAAgkBAAAADWdldE9yZGVyVG90YWwAAAABBQAAAAdvcmRlcklkCQEAAAATZ2V0T3JkZXJGaWxsZWRUb3RhbAAAAAEFAAAAB29yZGVySWQEAAAABmNhbGxlcgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAACW5leHRPcmRlcgkBAAAADGdldE5leHRPcmRlcgAAAAEFAAAAB29yZGVySWQEAAAACXByZXZPcmRlcgkBAAAADGdldFByZXZPcmRlcgAAAAEFAAAAB29yZGVySWQDCQEAAAACIT0AAAACCQEAAAAOZ2V0T3JkZXJTdGF0dXMAAAABBQAAAAdvcmRlcklkBQAAAANORVcJAAACAAAAAQIAAAAUaW52YWxpZCBvcmRlciBzdGF0dXMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANRmlyc3RPcmRlcktleQMJAAAAAAAAAgUAAAAKZmlyc3RPcmRlcgUAAAAHb3JkZXJJZAUAAAAJbmV4dE9yZGVyBQAAAApmaXJzdE9yZGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9nZXROZXh0T3JkZXJLZXkAAAABBQAAAAlwcmV2T3JkZXIFAAAACW5leHRPcmRlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPZ2V0UHJldk9yZGVyS2V5AAAAAQUAAAAJbmV4dE9yZGVyBQAAAAlwcmV2T3JkZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEWdldE9yZGVyU3RhdHVzS2V5AAAAAQUAAAAHb3JkZXJJZAUAAAAIQ0FOQ0VMRUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAZhbW91bnQFAAAABHVuaXQFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAEHB1YktleUFkbWluc0xpc3QJAARMAAAAAgIAAAAsR0pkTFNhTGl2NUs3eHVlamFjOG1jUmNIb3lvM2RQckVTcnZrdEczYTZNQVIJAARMAAAAAgIAAAAsRldWZmZZcjJBTG1ITWVqWm0zV3FlTHo2U2R5bTNnTEZHdEpuNEtUd3lVNXgJAARMAAAAAgIAAAAsM1doMkxhV2NiNWdnN0sycFBjVzNFcDZFQXVSQnpZa0FncmRwdDQzalRERmEJAARMAAAAAgIAAAAsNVdSWEZTandjVGJOZktjSnM4WnFYbVNTV1lzU1ZKVXRNdk1xWmo1aEg0TmMFAAAAA25pbAQAAAAFY291bnQJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAkAAlkAAAABCQABkQAAAAIFAAAAEHB1YktleUFkbWluc0xpc3QAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQkAAlkAAAABCQABkQAAAAIFAAAAEHB1YktleUFkbWluc0xpc3QAAAAAAAAAAAEAAAAAAAAAAAEAAAAAAAAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgkAAlkAAAABCQABkQAAAAIFAAAAEHB1YktleUFkbWluc0xpc3QAAAAAAAAAAAIAAAAAAAAAAAEAAAAAAAAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAwkAAlkAAAABCQABkQAAAAIFAAAAEHB1YktleUFkbWluc0xpc3QAAAAAAAAAAAMAAAAAAAAAAAIAAAAAAAAAAAAJAABnAAAAAgUAAAAFY291bnQAAAAAAAAAAAMOYV5n", "chainId": 84, "height": 1946738, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EynJd6rAdz38SJwi4QU6EtxKNkxBgTzYos5XJFpDpE5W Next: none Diff:
OldNewDifferences
129129 func fromX16 (val,resultScaleMult) = toInt(fraction(val, toBigInt(resultScaleMult), BIGMULT16))
130130
131131
132-let neutrinoContract = Address(base58'3MqL3hQMRXBNPhp8MNFfzxiXm4bp45zEixU')
132+let neutrinoContract = Address(base58'3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo')
133133
134-let controlContract = Address(base58'3Mwk2jkuxWiUuKABJned21T3JNdGP9VJu73')
134+let controlContract = Address(base58'3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP')
135135
136-let liquidationContract = Address(base58'3MxKWfbh4a5ore8gcV2RAXZVyRbQL7T2Hch')
136+let liquidationContract = Address(base58'3P4PCxsJqMzQBALo8zANHtBDZRRquobHQp7')
137137
138138 let mathContract = getStringByKey(MathContractKey)
139139
140-let neutrinoAssetId = base58'5j9WJD1zS5JfUyXPStUuxnVWotrdRzgMg9a21HH7jEdL'
140+let neutrinoAssetId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
141141
142-let nsbtAssetId = base58'EHow6PBWoM2ioEkFQXfo9WhrZjThWiq8BJ5o8cktgTpL'
142+let nsbtAssetId = base58'6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g'
143143
144144 let isBlocked = getBoolByAddressAndKey(controlContract, "is_blocked")
145145
177177 func orderData (orderId,totalWavelets,filledWavelets,owner,status,roi,price,currentPrice) = [IntegerEntry(getOrderPriceKey(orderId), price), IntegerEntry(getOrderTotalKey(orderId), totalWavelets), IntegerEntry(getOrderFilledTotalKey(orderId), filledWavelets), StringEntry(getOrderOwnerKey(orderId), owner), IntegerEntry(getOrderHeightKey(orderId), height), StringEntry(getOrderStatusKey(orderId), status), IntegerEntry(("debug_order_currentPrice_" + orderId), currentPrice), IntegerEntry(getRoiByOrderIdKey(orderId), roi)]
178178
179179
180-func toStr (name,curveResult) = (((((((((((((((((((((((((((((((((((name + "[nsbtAmountRaw=") + toString(asInt(curveResult[1]))) + " usdnPayment=") + toString(asInt(curveResult[2]))) + " wRaw=") + toString(asInt(curveResult[3]))) + " uRaw=") + toString(asInt(curveResult[4]))) + " mRaw=") + toString(asInt(curveResult[5]))) + " sRaw=") + toString(asInt(curveResult[6]))) + " nsbtCurveParam_a=") + toString(asInt(curveResult[7]))) + " nsbtCurveParam_b=") + toString(asInt(curveResult[8]))) + " wReservesInUsdn=") + toString(asInt(curveResult[9]))) + " price=") + toString(asInt(curveResult[10]))) + " multBR=") + toString(asInt(curveResult[11]))) + " multPower=") + toString(asInt(curveResult[12]))) + " multExpInPower=") + toString(asInt(curveResult[13]))) + " multK=") + toString(asInt(curveResult[14]))) + " step1=") + asString(curveResult[15])) + " step2=") + asString(curveResult[16])) + " step3=") + asString(curveResult[17])) + "]")
180+func toStr (name,curveResult) = (((((((((((((((((((((((((((((((((((name + "[nsbtAmountRaw=") + toString(asInt(curveResult[0]))) + " usdnPayment=") + toString(asInt(curveResult[1]))) + " wRaw=") + toString(asInt(curveResult[2]))) + " uRaw=") + toString(asInt(curveResult[3]))) + " mRaw=") + toString(asInt(curveResult[4]))) + " sRaw=") + toString(asInt(curveResult[5]))) + " nsbtCurveParam_a=") + toString(asInt(curveResult[6]))) + " nsbtCurveParam_b=") + toString(asInt(curveResult[7]))) + " wReservesInUsdn=") + toString(asInt(curveResult[8]))) + " price=") + toString(asInt(curveResult[9]))) + " multBR=") + toString(asInt(curveResult[10]))) + " multPower=") + toString(asInt(curveResult[11]))) + " multExpInPower=") + toString(asInt(curveResult[12]))) + " multK=") + toString(asInt(curveResult[13]))) + " step1=") + asString(curveResult[14])) + " step2=") + asString(curveResult[15])) + " step3=") + asString(curveResult[16])) + "]")
181181
182182
183183 @Callable(i)
243243
244244 @Verifier(tx)
245245 func verify () = {
246- let pubKeyAdminsList = ["9MP9jBpNCpXXadVxpQUMS6jF4t9YJEut2Tm4pthGog6c", "BZpYcdVKT3hRTzAsAUYUTjeUCsBvRVaV6PZSmoYQTS6H", "5FxLdUsJGgTkHZWYAPrGaxiiEY5S78njcwW2PDZbSqpG", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
246+ let pubKeyAdminsList = ["GJdLSaLiv5K7xuejac8mcRcHoyo3dPrESrvktG3a6MAR", "FWVffYr2ALmHMejZm3WqeLz6Sdym3gLFGtJn4KTwyU5x", "3Wh2LaWcb5gg7K2pPcW3Ep6EAuRBzYkAgrdpt43jTDFa", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
247247 let count = ((((if (sigVerify(tx.bodyBytes, tx.proofs[0], fromBase58String(pubKeyAdminsList[0])))
248248 then 1
249249 else 0) + (if (sigVerify(tx.bodyBytes, tx.proofs[1], fromBase58String(pubKeyAdminsList[1])))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func getNumberByKey (key) = valueOrElse(getInteger(this, key), 0)
55
66
77 func getStringByKey (key) = valueOrElse(getString(this, key), "")
88
99
1010 func getBoolByAddressAndKey (address,key) = valueOrElse(getBoolean(address, key), false)
1111
1212
1313 func getStringByAddressAndKey (address,key) = valueOrElse(getString(address, key), "")
1414
1515
1616 func getNumberByAddressAndKey (address,key) = valueOrElse(getInteger(address, key), 0)
1717
1818
1919 func asAnyList (val) = match val {
2020 case valAnyLyst: List[Any] =>
2121 valAnyLyst
2222 case _ =>
2323 throw("fail to cast into List[Any]")
2424 }
2525
2626
2727 func asString (val) = match val {
2828 case valStr: String =>
2929 valStr
3030 case _ =>
3131 throw("fail to cast into String")
3232 }
3333
3434
3535 func asInt (val) = match val {
3636 case valInt: Int =>
3737 valInt
3838 case _ =>
3939 throw("fail to cast into Int")
4040 }
4141
4242
4343 let WAVELET = 100000000
4444
4545 let PAULI = 1000000
4646
4747 let BIGPAULI = toBigInt(1000000)
4848
4949 let PRICELET = 1000000
5050
5151 let MULT = 100000000
5252
5353 let BIGMULT16 = toBigInt(10000000000000000)
5454
5555 let SCALE8 = 8
5656
5757 let SCALE16 = 16
5858
5959 let MINORDERTOTAL = (10 * WAVELET)
6060
6161 let MAXROI = 95
6262
6363 let CANCELED = "canceled"
6464
6565 let NEW = "new"
6666
6767 let FILLED = "filled"
6868
6969 let PriceKey = "price"
7070
7171 let NsbtAssetIdKey = "bond_asset_id"
7272
7373 let NeutrinoAssetIdKey = "neutrino_asset_id"
7474
7575 let BalanceLockedkKey = "balance_lock_"
7676
7777 let WavesLockedBalanceKey = (BalanceLockedkKey + "waves")
7878
7979 let NeutrinoLockedBalanceKey = (BalanceLockedkKey + "neutrino")
8080
8181 let FirstOrderKey = "order_first"
8282
8383 let MathContractKey = "math_contract"
8484
8585 let MinWavesForNsbtBuyKey = "min_waves_nsbt_buy"
8686
8787 func getRoiByOrderIdKey (orderId) = ("debug_order_roi_" + orderId)
8888
8989
9090 func getOrderPriceKey (orderId) = ("order_price_" + orderId)
9191
9292
9393 func getOrderTotalKey (orderId) = ("order_total_" + orderId)
9494
9595
9696 func getOrderOwnerKey (orderId) = ("order_owner_" + orderId)
9797
9898
9999 func getOrderHeightKey (orderId) = ("order_height_" + orderId)
100100
101101
102102 func getOrderStatusKey (orderId) = ("order_status_" + orderId)
103103
104104
105105 func getOrderFilledTotalKey (orderId) = ("order_filled_total_" + orderId)
106106
107107
108108 func getPrevOrderKey (orderId) = ("order_prev_" + orderId)
109109
110110
111111 func getNextOrderKey (orderId) = ("order_next_" + orderId)
112112
113113
114114 func convertNeutrinoToWaves (amount,price) = fraction(fraction(amount, PRICELET, price), WAVELET, PAULI)
115115
116116
117117 func convertWavesToNeutrino (amount,price) = fraction(fraction(amount, price, PRICELET), PAULI, WAVELET)
118118
119119
120120 func convertWavesToBond (amount,price) = convertWavesToNeutrino(amount, price)
121121
122122
123123 func convertBondToWaves (amount,price) = convertNeutrinoToWaves(amount, price)
124124
125125
126126 func toX16 (origVal,origScaleMult) = fraction(toBigInt(origVal), BIGMULT16, toBigInt(origScaleMult))
127127
128128
129129 func fromX16 (val,resultScaleMult) = toInt(fraction(val, toBigInt(resultScaleMult), BIGMULT16))
130130
131131
132-let neutrinoContract = Address(base58'3MqL3hQMRXBNPhp8MNFfzxiXm4bp45zEixU')
132+let neutrinoContract = Address(base58'3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo')
133133
134-let controlContract = Address(base58'3Mwk2jkuxWiUuKABJned21T3JNdGP9VJu73')
134+let controlContract = Address(base58'3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP')
135135
136-let liquidationContract = Address(base58'3MxKWfbh4a5ore8gcV2RAXZVyRbQL7T2Hch')
136+let liquidationContract = Address(base58'3P4PCxsJqMzQBALo8zANHtBDZRRquobHQp7')
137137
138138 let mathContract = getStringByKey(MathContractKey)
139139
140-let neutrinoAssetId = base58'5j9WJD1zS5JfUyXPStUuxnVWotrdRzgMg9a21HH7jEdL'
140+let neutrinoAssetId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
141141
142-let nsbtAssetId = base58'EHow6PBWoM2ioEkFQXfo9WhrZjThWiq8BJ5o8cktgTpL'
142+let nsbtAssetId = base58'6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g'
143143
144144 let isBlocked = getBoolByAddressAndKey(controlContract, "is_blocked")
145145
146146 let minWavesAmountNsbtBuy = valueOrElse(getInteger(this, MinWavesForNsbtBuyKey), 10)
147147
148148 let firstOrder = getStringByKey(FirstOrderKey)
149149
150150 func getOrderPrice (id) = getNumberByKey(getOrderPriceKey(id))
151151
152152
153153 func getOrderTotal (id) = getNumberByKey(getOrderTotalKey(id))
154154
155155
156156 func getOrderOwner (id) = getStringByKey(getOrderOwnerKey(id))
157157
158158
159159 func getOrderStatus (id) = getStringByKey(getOrderStatusKey(id))
160160
161161
162162 func getOrderFilledTotal (id) = getNumberByKey(getOrderFilledTotalKey(id))
163163
164164
165165 func getPrevOrder (id) = getStringByKey(getPrevOrderKey(id))
166166
167167
168168 func getNextOrder (id) = getStringByKey(getNextOrderKey(id))
169169
170170
171171 func getReversePrice (price) = ((PRICELET * PRICELET) / price)
172172
173173
174174 func calcNsbt2WavesPriceRaw (spentWavesRaw,receivedNsbtRaw) = fraction(spentWavesRaw, (PAULI * PRICELET), receivedNsbtRaw)
175175
176176
177177 func orderData (orderId,totalWavelets,filledWavelets,owner,status,roi,price,currentPrice) = [IntegerEntry(getOrderPriceKey(orderId), price), IntegerEntry(getOrderTotalKey(orderId), totalWavelets), IntegerEntry(getOrderFilledTotalKey(orderId), filledWavelets), StringEntry(getOrderOwnerKey(orderId), owner), IntegerEntry(getOrderHeightKey(orderId), height), StringEntry(getOrderStatusKey(orderId), status), IntegerEntry(("debug_order_currentPrice_" + orderId), currentPrice), IntegerEntry(getRoiByOrderIdKey(orderId), roi)]
178178
179179
180-func toStr (name,curveResult) = (((((((((((((((((((((((((((((((((((name + "[nsbtAmountRaw=") + toString(asInt(curveResult[1]))) + " usdnPayment=") + toString(asInt(curveResult[2]))) + " wRaw=") + toString(asInt(curveResult[3]))) + " uRaw=") + toString(asInt(curveResult[4]))) + " mRaw=") + toString(asInt(curveResult[5]))) + " sRaw=") + toString(asInt(curveResult[6]))) + " nsbtCurveParam_a=") + toString(asInt(curveResult[7]))) + " nsbtCurveParam_b=") + toString(asInt(curveResult[8]))) + " wReservesInUsdn=") + toString(asInt(curveResult[9]))) + " price=") + toString(asInt(curveResult[10]))) + " multBR=") + toString(asInt(curveResult[11]))) + " multPower=") + toString(asInt(curveResult[12]))) + " multExpInPower=") + toString(asInt(curveResult[13]))) + " multK=") + toString(asInt(curveResult[14]))) + " step1=") + asString(curveResult[15])) + " step2=") + asString(curveResult[16])) + " step3=") + asString(curveResult[17])) + "]")
180+func toStr (name,curveResult) = (((((((((((((((((((((((((((((((((((name + "[nsbtAmountRaw=") + toString(asInt(curveResult[0]))) + " usdnPayment=") + toString(asInt(curveResult[1]))) + " wRaw=") + toString(asInt(curveResult[2]))) + " uRaw=") + toString(asInt(curveResult[3]))) + " mRaw=") + toString(asInt(curveResult[4]))) + " sRaw=") + toString(asInt(curveResult[5]))) + " nsbtCurveParam_a=") + toString(asInt(curveResult[6]))) + " nsbtCurveParam_b=") + toString(asInt(curveResult[7]))) + " wReservesInUsdn=") + toString(asInt(curveResult[8]))) + " price=") + toString(asInt(curveResult[9]))) + " multBR=") + toString(asInt(curveResult[10]))) + " multPower=") + toString(asInt(curveResult[11]))) + " multExpInPower=") + toString(asInt(curveResult[12]))) + " multK=") + toString(asInt(curveResult[13]))) + " step1=") + asString(curveResult[14])) + " step2=") + asString(curveResult[15])) + " step3=") + asString(curveResult[16])) + "]")
181181
182182
183183 @Callable(i)
184184 func buyNsbt () = {
185185 let pmt = value(i.payments[0])
186186 let pmtAmount = pmt.amount
187187 let wavesPay = pmtAmount
188188 if (isBlocked)
189189 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
190190 else if (isDefined(pmt.assetId))
191191 then throw("can use waves only")
192192 else if (((minWavesAmountNsbtBuy * WAVELET) > pmtAmount))
193193 then throw((("min " + toString(minWavesAmountNsbtBuy)) + " waves expected"))
194194 else {
195195 let ownerAddress = i.caller
196196 let neutrinoMetrics = asAnyList(invoke(addressFromStringValue(mathContract), "calcNeutinoMetricsMATH", nil, nil))
197197 if ((neutrinoMetrics == neutrinoMetrics))
198198 then {
199199 let currentPrice = asInt(neutrinoMetrics[0])
200200 let reserve = asInt(neutrinoMetrics[3])
201201 let neutrinoSupply = asInt(neutrinoMetrics[5])
202202 let nsbtSupply = asInt(neutrinoMetrics[9])
203203 let nsbtSupplyMAX = value(assetInfo(nsbtAssetId)).quantity
204204 let curveResult = asAnyList(invoke(addressFromStringValue(mathContract), "curveFunctionMATH", [reserve, neutrinoSupply, currentPrice, nsbtSupplyMAX, nsbtSupply, wavesPay], nil))
205205 if ((curveResult == curveResult))
206206 then {
207207 let nsbtAmount = asInt(curveResult[0])
208208 if ((0 >= nsbtAmount))
209209 then throw("nsbtAmount <= 0")
210210 else if ((wavesPay > (nsbtAmount * 9223372)))
211211 then throw(((("Nsbt2Waves price exceeds MAX_INT: " + toString(wavesPay)) + "/") + toString(nsbtAmount)))
212212 else {
213213 let nsbt2WavesPriceRaw = calcNsbt2WavesPriceRaw(wavesPay, nsbtAmount)
214214 let roi = 0
215215 let amountLeased = invoke(neutrinoContract, "acceptWaves", nil, i.payments)
216216 if ((amountLeased == amountLeased))
217217 then $Tuple2((orderData(toBase58String(i.transactionId), pmtAmount, pmtAmount, toString(ownerAddress), FILLED, roi, nsbt2WavesPriceRaw, currentPrice) ++ [ScriptTransfer(ownerAddress, nsbtAmount, nsbtAssetId), StringEntry("debug_curveResult", toStr("curveResult", curveResult))]), nsbtAmount)
218218 else throw("Strict value is not equal to itself.")
219219 }
220220 }
221221 else throw("Strict value is not equal to itself.")
222222 }
223223 else throw("Strict value is not equal to itself.")
224224 }
225225 }
226226
227227
228228
229229 @Callable(i)
230230 func cancelOrder (orderId) = {
231231 let owner = getOrderOwner(orderId)
232232 let amount = (getOrderTotal(orderId) - getOrderFilledTotal(orderId))
233233 let caller = toString(i.caller)
234234 let nextOrder = getNextOrder(orderId)
235235 let prevOrder = getPrevOrder(orderId)
236236 if ((getOrderStatus(orderId) != NEW))
237237 then throw("invalid order status")
238238 else [StringEntry(FirstOrderKey, if ((firstOrder == orderId))
239239 then nextOrder
240240 else firstOrder), StringEntry(getNextOrderKey(prevOrder), nextOrder), StringEntry(getPrevOrderKey(nextOrder), prevOrder), StringEntry(getOrderStatusKey(orderId), CANCELED), ScriptTransfer(i.caller, amount, unit)]
241241 }
242242
243243
244244 @Verifier(tx)
245245 func verify () = {
246- let pubKeyAdminsList = ["9MP9jBpNCpXXadVxpQUMS6jF4t9YJEut2Tm4pthGog6c", "BZpYcdVKT3hRTzAsAUYUTjeUCsBvRVaV6PZSmoYQTS6H", "5FxLdUsJGgTkHZWYAPrGaxiiEY5S78njcwW2PDZbSqpG", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
246+ let pubKeyAdminsList = ["GJdLSaLiv5K7xuejac8mcRcHoyo3dPrESrvktG3a6MAR", "FWVffYr2ALmHMejZm3WqeLz6Sdym3gLFGtJn4KTwyU5x", "3Wh2LaWcb5gg7K2pPcW3Ep6EAuRBzYkAgrdpt43jTDFa", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
247247 let count = ((((if (sigVerify(tx.bodyBytes, tx.proofs[0], fromBase58String(pubKeyAdminsList[0])))
248248 then 1
249249 else 0) + (if (sigVerify(tx.bodyBytes, tx.proofs[1], fromBase58String(pubKeyAdminsList[1])))
250250 then 1
251251 else 0)) + (if (sigVerify(tx.bodyBytes, tx.proofs[2], fromBase58String(pubKeyAdminsList[2])))
252252 then 1
253253 else 0)) + (if (sigVerify(tx.bodyBytes, tx.proofs[3], fromBase58String(pubKeyAdminsList[3])))
254254 then 2
255255 else 0))
256256 (count >= 3)
257257 }
258258

github/deemru/w8io/026f985 
62.02 ms