tx · B9W9ThMbYNqL39NZatUHoFeP96qGgTviJJZTa82JsPJK

3P8G747fnB1DTQ4d5uD114vjAaeezCW4FaM:  -0.01000000 Waves

2021.10.12 16:46 [2808116] smart account 3P8G747fnB1DTQ4d5uD114vjAaeezCW4FaM > SELF 0.00000000 Waves

{ "type": 13, "id": "B9W9ThMbYNqL39NZatUHoFeP96qGgTviJJZTa82JsPJK", "fee": 1000000, "feeAssetId": null, "timestamp": 1634046224786, "version": 1, "sender": "3P8G747fnB1DTQ4d5uD114vjAaeezCW4FaM", "senderPublicKey": "F32r3gzurskiGjEbE7c4LKWy9mC5bHvikFifoGSi2TMv", "proofs": [ "2z6GtQxLAUaUqvjdpadFcpwUkiyDHzg1WhFwSaieKMv9nKrYC1H9uuRs2iX4Kja5ASvKKRZNVYJf72FoFCoM2GcH" ], "script": "base64:AAIFAAAAAAAAAIYIAhIDCgEIEgQKAggIEgASAwoBCBIAEgASAwoBARIAEggKBggICAgIARIDCgEIEgMKAQgSAwoBCBIDCgEIEgMKAQESAwoBCBIECgIIBBIECgIIARIDCgEIEgQKAggBEgQKAggBEgASBQoDCAgBEgUKAwgIARIDCgEIEgASAwoBCBIECgIIAQAAAFgBAAAABGdldEkAAAABAAAAA2tleQkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkBAAAABGdldFMAAAABAAAAA2tleQkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkBAAAABWdldFNWAAAAAQAAAANrZXkJAQAAAAV2YWx1ZQAAAAEJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AQAAAAd0aHJvd0lmAAAAAgAAAAljb25kaXRpb24AAAAFZXJyb3IDBQAAAAljb25kaXRpb24JAAACAAAAAQUAAAAFZXJyb3IGAQAAAAh3cml0ZUludAAAAAIAAAADa2V5AAAABXZhbHVlAwkAAGYAAAACAAAAAAAAAAAABQAAAAV2YWx1ZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABd3cml0aW5nIG5lZ2F0aXZlIHZhbHVlIAkAAaQAAAABBQAAAAV2YWx1ZQIAAAAJIGZvciBrZXkgBQAAAANrZXkJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAANrZXkFAAAABXZhbHVlAQAAAAhjaGFuZ2VCeQAAAAIAAAADa2V5AAAABXZhbHVlCQEAAAAId3JpdGVJbnQAAAACBQAAAANrZXkJAABkAAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkBAAAABGdldEkAAAABBQAAAANrZXkAAAAAAAAAAAAFAAAABXZhbHVlAQAAAAt3cml0ZVN0cmluZwAAAAIAAAADa2V5AAAABXZhbHVlCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAANrZXkFAAAABXZhbHVlAQAAAAxmcmFjdGlvbkNlaWwAAAADAAAABXZhbHVlAAAACW51bWVyYXRvcgAAAAtkZW5vbWluYXRvcgQAAAAEY2FuZAkAAGsAAAADBQAAAAV2YWx1ZQUAAAAJbnVtZXJhdG9yBQAAAAtkZW5vbWluYXRvcgQAAAABRAAAAAAAtQTzMwQAAAAFZXhhY3QJAAAAAAAAAgkAAGoAAAACCQAAaAAAAAIJAABqAAAAAgUAAAAEY2FuZAUAAAABRAkAAGoAAAACBQAAAAtkZW5vbWluYXRvcgUAAAABRAUAAAABRAkAAGoAAAACCQAAaAAAAAIJAABqAAAAAgUAAAAFdmFsdWUFAAAAAUQJAABqAAAAAgUAAAAJbnVtZXJhdG9yBQAAAAFEBQAAAAFEAwUAAAAFZXhhY3QFAAAABGNhbmQJAABkAAAAAgUAAAAEY2FuZAAAAAAAAAAAAQAAAAANQmxvY2tzUGVyWWVhcgAAAAAAAAgFIAAAAAAFUkJhc2UAACOG8m/BAAAAAAAAC2ZhY3RvcnNCYXNlAAAAAAAAAAPoAAAAAAxhc3NldElkU3RvcmUCAAAAB2Fzc2V0SWQAAAAACW1haW5TdG9yZQIAAAAEbWFpbgAAAAAScmVzZXJ2ZUZhY3RvclN0b3JlCQABLAAAAAIJAQAAAAVnZXRTVgAAAAEFAAAADGFzc2V0SWRTdG9yZQIAAAAOX1Jlc2VydmVGYWN0b3IAAAAAFWNvbGxhdGVyYWxGYWN0b3JTdG9yZQkAASwAAAACCQEAAAAFZ2V0U1YAAAABBQAAAAxhc3NldElkU3RvcmUCAAAAEV9Db2xsYXRlcmFsRmFjdG9yAAAAABlsaXF1aWRhdGlvblRocmVzaG9sZFN0b3JlCQABLAAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDU4KQAAAAEFAAAADGFzc2V0SWRTdG9yZQIAAAAVX0xpcXVpZGF0aW9uVGhyZXNob2xkAAAAABJvdmVybGFwQ2hhcmdlU3RvcmUCAAAAFmFjY291bnRfaGVhbHRoX292ZXJsYXAAAAAAF2xpcXVpZGF0aW9uUGVuYWx0eVN0b3JlCQABLAAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDU4KQAAAAEFAAAADGFzc2V0SWRTdG9yZQIAAAATX0xpcXVpZGF0aW9uUGVuYWx0eQAAAAASY29uZmlnQWRkcmVzc1N0b3JlAgAAAA1jb25maWdBZGRyZXNzAAAAAAtvcmFjbGVTdG9yZQIAAAANb3JhY2xlQWRkcmVzcwAAAAANYVRva2VuSWRTdG9yZQIAAAAIYVRva2VuSWQAAAAAD2FUb2tlbk5hbWVTdG9yZQIAAAAKYVRva2VuTmFtZQAAAAAWYVRva2VuQ2lyY3VsYXRpb25TdG9yZQIAAAARYVRva2VuQ2lyY3VsYXRpb24AAAAAFWxhc3RVcGRhdGVIZWlnaHRTdG9yZQIAAAAQbGFzdFVwZGF0ZUhlaWdodAAAAAAOdG90YWxEZWJ0U3RvcmUCAAAAC3RvdGFsQm9ycm93AAAAABF0b3RhbERlcG9zaXRTdG9yZQIAAAAMdG90YWxEZXBvc2l0AAAAABF0b3RhbFJlc2VydmVTdG9yZQIAAAAMdG90YWxSZXNlcnZlAAAAAAppbmRleFN0b3JlAgAAAAtzdG9yZWRJbmRleAAAAAATYVRva2VuRGVjaW1hbHNTdG9yZQIAAAAOYVRva2VuRGVjaW1hbHMBAAAAEmFUb2tlbkJhbGFuY2VTdG9yZQAAAAEAAAALdXNlckFkZHJlc3MJAAEsAAAAAgUAAAALdXNlckFkZHJlc3MCAAAADl9hVG9rZW5CYWxhbmNlAQAAAAlkZWJ0U3RvcmUAAAABAAAAC3VzZXJBZGRyZXNzCQABLAAAAAIFAAAAC3VzZXJBZGRyZXNzAgAAAAVfZGVidAEAAAAOZGVidEluZGV4U3RvcmUAAAABAAAAC3VzZXJBZGRyZXNzCQABLAAAAAIFAAAAC3VzZXJBZGRyZXNzAgAAAAZfaW5kZXgBAAAAFHVzZUFzQ29sbGF0ZXJhbFN0b3JlAAAAAQAAAAt1c2VyQWRkcmVzcwkAASwAAAACBQAAAAt1c2VyQWRkcmVzcwIAAAAQX3VzZUFzQ29sbGF0ZXJhbAAAAAAHYXNzZXRJZAQAAAACaWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkBAAAABGdldFMAAAABBQAAAAxhc3NldElkU3RvcmUCAAAACm5vIGFzc2V0SWQDCQAAAAAAAAIFAAAAAmlkAgAAAAVXQVZFUwUAAAAEdW5pdAkAAlkAAAABBQAAAAJpZAAAAAAKYXNzZXRJZFN0cgQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACYnYFAAAAByRtYXRjaDAJAAJYAAAAAQUAAAACYnYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAAAXUFAAAAByRtYXRjaDACAAAABVdBVkVTCQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAApnZXRCYWxhbmNlAAAAAgAAAA5hZGRyZXNzT3JBbGlhcwAAAAdhc3NldElkBAAAAAckbWF0Y2gwBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJidgUAAAAHJG1hdGNoMAkAA/AAAAACBQAAAA5hZGRyZXNzT3JBbGlhcwUAAAACYnYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAAAXUFAAAAByRtYXRjaDAICQAD7wAAAAEFAAAADmFkZHJlc3NPckFsaWFzAAAACWF2YWlsYWJsZQkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgAAAAANYXNzZXREZWNpbWFscwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQEAAAAEZ2V0SQAAAAEFAAAAE2FUb2tlbkRlY2ltYWxzU3RvcmUCAAAAEG5vIGFzc2V0RGVjaW1hbHMAAAAADWNvbmZpZ0FkZHJlc3MJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAQAAAARnZXRTAAAAAQUAAAASY29uZmlnQWRkcmVzc1N0b3JlAgAAABBubyBjb25maWdBZGRyZXNzAgAAABZpbnZhbGlkIGNvbmZpZyBhZGRyZXNzAQAAAAlvcEFsbG93ZWQAAAABAAAAAm9wBAAAAANhaWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkBAAAABGdldFMAAAABBQAAAAxhc3NldElkU3RvcmUCAAAACm5vIGFzc2V0SWQEAAAAByRtYXRjaDAJAAP8AAAABAUAAAANY29uZmlnQWRkcmVzcwIAAAAJb3BBbGxvd2VkCQAETAAAAAIFAAAAA2FpZAkABEwAAAACBQAAAAJvcAUAAAADbmlsBQAAAANuaWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAWIFAAAAByRtYXRjaDADBQAAAAFiBgkAAAIAAAABAgAAAAtub3QgYWxsb3dlZAkAAAIAAAABAgAAACFvcEFsbG93ZWQ6IHVuZXhwZWN0ZWQgcmVzdWx0IHR5cGUBAAAACG1haW5Pbmx5AAAAAQAAAAFpAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAADWNvbmZpZ0FkZHJlc3MFAAAACW1haW5TdG9yZQIAAAARbm8gbWFpbiBpbiBjb25maWcCAAAAFGludmFsaWQgbWFpbiBhZGRyZXNzCQAAAgAAAAECAAAAEG9ubHkgbWFpbiBjYW4gZG8GAQAAABBpc0Fzc2V0SWRPcldhdmVzAAAAAQAAAAV2YWx1ZQMDCQEAAAACIT0AAAACBQAAAAV2YWx1ZQIAAAAFV0FWRVMJAAAAAAAAAgkAAlkAAAABBQAAAAV2YWx1ZQkAAlkAAAABAgAAAAAHCQAAAgAAAAECAAAAD2ludmFsaWQgYXNzZXRJZAYAAAAADm5vdEluaXRpYWxpemVkCQEAAAAHdGhyb3dJZgAAAAIJAQAAAAlpc0RlZmluZWQAAAABCQEAAAAEZ2V0UwAAAAEFAAAADGFzc2V0SWRTdG9yZQIAAAATYWxyZWFkeSBpbml0aWFsaXplZAAAAAASbWF5YmVPcmFjbGVBZGRyZXNzBAAAAAckbWF0Y2gwCQEAAAAEZ2V0UwAAAAEFAAAAC29yYWNsZVN0b3JlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAJAAQmAAAAAQUAAAABcwUAAAAEdW5pdAAAAAALb3JhY2xlUHJpY2UEAAAAByRtYXRjaDAJAAP8AAAABAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACBQAAABJtYXliZU9yYWNsZUFkZHJlc3MCAAAACW5vIG9yYWNsZQIAAAAFcHJpY2UJAARMAAAAAgkBAAAABWdldFNWAAAAAQUAAAAMYXNzZXRJZFN0b3JlBQAAAANuaWwFAAAAA25pbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFpBQAAAAckbWF0Y2gwBQAAAAFpCQAAAgAAAAECAAAAD2JhZCBvcmFjbGUgZGF0YQAAAAAGSEVJR0hUBQAAAAZoZWlnaHQAAAAAEGxhc3RVcGRhdGVIZWlnaHQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkBAAAABGdldEkAAAABBQAAABVsYXN0VXBkYXRlSGVpZ2h0U3RvcmUCAAAAE25vIGxhc3RVcGRhdGVIZWlnaHQAAAAACGFUb2tlbklkCQACWQAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkBAAAABGdldFMAAAABBQAAAA1hVG9rZW5JZFN0b3JlAgAAAAtubyBhVG9rZW5JZAAAAAARYVRva2VuQ2lyY3VsYXRpb24JAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAAARnZXRJAAAAAQUAAAAWYVRva2VuQ2lyY3VsYXRpb25TdG9yZQAAAAAAAAAAAAAAAAAEQUJDRAQAAAACaWQJAQAAAAVnZXRTVgAAAAEFAAAADGFzc2V0SWRTdG9yZQkABRYAAAAECQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAA1jb25maWdBZGRyZXNzCQABLAAAAAIFAAAAAmlkAgAAAAdfQVBvaW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAA1jb25maWdBZGRyZXNzCQABLAAAAAIFAAAAAmlkAgAAAAdfQlBvaW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAA1jb25maWdBZGRyZXNzCQABLAAAAAIFAAAAAmlkAgAAAAdfQ1BvaW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAA1jb25maWdBZGRyZXNzCQABLAAAAAIFAAAAAmlkAgAAAAdfRFBvaW50AAAAAA1yZXNlcnZlRmFjdG9yCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANY29uZmlnQWRkcmVzcwUAAAAScmVzZXJ2ZUZhY3RvclN0b3JlAgAAABBubyByZXNlcnZlRmFjdG9yAAAAABBjb2xsYXRlcmFsRmFjdG9yCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANY29uZmlnQWRkcmVzcwUAAAAVY29sbGF0ZXJhbEZhY3RvclN0b3JlAgAAABNubyBjb2xsYXRlcmFsRmFjdG9yAAAAABRsaXF1aWRhdGlvblRocmVzaG9sZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAADWNvbmZpZ0FkZHJlc3MFAAAAGWxpcXVpZGF0aW9uVGhyZXNob2xkU3RvcmUCAAAAF25vIGxpcXVpZGF0aW9uVGhyZXNob2xkAAAAABRhY2NvdW50SGVhbHRoT3ZlcmxhcAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAADWNvbmZpZ0FkZHJlc3MFAAAAEm92ZXJsYXBDaGFyZ2VTdG9yZQIAAAAQbm8gb3ZlcmxhcENoYXJnZQAAAAASbGlxdWlkYXRpb25QZW5hbHR5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANY29uZmlnQWRkcmVzcwUAAAAXbGlxdWlkYXRpb25QZW5hbHR5U3RvcmUCAAAAFW5vIGxpcXVpZGF0aW9uUGVuYWx0eQAAAAASc3RvcmVkVG90YWxEZXBvc2l0CQEAAAALdmFsdWVPckVsc2UAAAACCQEAAAAEZ2V0SQAAAAEFAAAAEXRvdGFsRGVwb3NpdFN0b3JlAAAAAAAAAAAAAAAAABJzdG9yZWRUb3RhbFJlc2VydmUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAAARnZXRJAAAAAQUAAAARdG90YWxSZXNlcnZlU3RvcmUAAAAAAAAAAAAAAAAAD3N0b3JlZFRvdGFsRGVidAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkBAAAABGdldEkAAAABBQAAAA50b3RhbERlYnRTdG9yZQAAAAAAAAAAAAAAAAALc3RvcmVkSW5kZXgJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAAARnZXRJAAAAAQUAAAAKaW5kZXhTdG9yZQUAAAAFUkJhc2UAAAAAC3V0aWxpemF0aW9uAwkAAGYAAAACBQAAABJzdG9yZWRUb3RhbERlcG9zaXQAAAAAAAAAAAAJAABrAAAAAwUAAAAPc3RvcmVkVG90YWxEZWJ0BQAAAAtmYWN0b3JzQmFzZQUAAAASc3RvcmVkVG90YWxEZXBvc2l0AAAAAAAAAAAAAAAAAANhcHIEAAAACyR0MDU1MzI1NTUyBQAAAARBQkNEBAAAAAFhCAUAAAALJHQwNTUzMjU1NTIAAAACXzEEAAAAAWIIBQAAAAskdDA1NTMyNTU1MgAAAAJfMgQAAAABYwgFAAAACyR0MDU1MzI1NTUyAAAAAl8zBAAAAAFkCAUAAAALJHQwNTUzMjU1NTIAAAACXzQEAAAABmxpbmVBQwkAAGQAAAACCQAAawAAAAMJAABlAAAAAgUAAAABYQUAAAABYwUAAAALdXRpbGl6YXRpb24JAQAAAAEtAAAAAQUAAAABYgUAAAABYQQAAAAGbGluZUNECQAAZAAAAAIJAABrAAAAAwkAAGUAAAACBQAAAAFjBQAAAAFkCQAAZQAAAAIFAAAAC3V0aWxpemF0aW9uBQAAAAFiCQAAZQAAAAIFAAAAAWIFAAAAC2ZhY3RvcnNCYXNlBQAAAAFjAwkAAAAAAAACBQAAAAt1dGlsaXphdGlvbgAAAAAAAAAAAAUAAAABYQMJAAAAAAAAAgUAAAALdXRpbGl6YXRpb24FAAAAAWIFAAAAAWMDAwkAAGYAAAACBQAAAAFiBQAAAAt1dGlsaXphdGlvbgYJAAAAAAAAAgUAAAABYgUAAAALZmFjdG9yc0Jhc2UFAAAABmxpbmVBQwUAAAAGbGluZUNEAAAAAANhcHkDCQAAAAAAAAIFAAAAEnN0b3JlZFRvdGFsRGVwb3NpdAAAAAAAAAAAAAAAAAAAAAAAAAkAAGsAAAADCQAAawAAAAMFAAAAD3N0b3JlZFRvdGFsRGVidAUAAAADYXByBQAAABJzdG9yZWRUb3RhbERlcG9zaXQJAABlAAAAAgUAAAALZmFjdG9yc0Jhc2UFAAAADXJlc2VydmVGYWN0b3IFAAAAC2ZhY3RvcnNCYXNlAAAAAAxjdXJyZW50SW5kZXgDCQAAAAAAAAIFAAAABkhFSUdIVAUAAAAQbGFzdFVwZGF0ZUhlaWdodAUAAAALc3RvcmVkSW5kZXgEAAAAA2JwcgkBAAAADGZyYWN0aW9uQ2VpbAAAAAMFAAAAA2FwcgUAAAAFUkJhc2UJAABoAAAAAgUAAAANQmxvY2tzUGVyWWVhcgUAAAALZmFjdG9yc0Jhc2UJAQAAAAxmcmFjdGlvbkNlaWwAAAADBQAAAAtzdG9yZWRJbmRleAkAAGQAAAACBQAAAAVSQmFzZQkAAGgAAAACBQAAAANicHIJAABlAAAAAgUAAAAGSEVJR0hUBQAAABBsYXN0VXBkYXRlSGVpZ2h0BQAAAAVSQmFzZQEAAAAObGlxdWlkaXR5Q2hlY2sAAAADAAAABmFtb3VudAAAAANtYXgAAAADZXJyAwkAAGYAAAACBQAAAAZhbW91bnQFAAAAA21heAkAAAIAAAABCQABLAAAAAICAAAAFm5vdCBlbm91Z2ggbGlxdWlkaXR5OiAFAAAAA2VycgYBAAAADnN0b3JlZFVzZXJEZWJ0AAAAAQAAAAt1c2VyQWRkcmVzcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkBAAAABGdldEkAAAABCQEAAAAJZGVidFN0b3JlAAAAAQUAAAALdXNlckFkZHJlc3MAAAAAAAAAAAABAAAAD2N1cnJlbnRVc2VyRGVidAAAAAEAAAALdXNlckFkZHJlc3MEAAAAAXYJAQAAAA5zdG9yZWRVc2VyRGVidAAAAAEFAAAAC3VzZXJBZGRyZXNzAwkAAAAAAAACBQAAAAF2AAAAAAAAAAAAAAAAAAAAAAAABAAAAA9zdG9yZWRVc2VySW5kZXgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkBAAAABGdldEkAAAABCQEAAAAOZGVidEluZGV4U3RvcmUAAAABBQAAAAt1c2VyQWRkcmVzcwIAAAAgaGFzIGRlYnQgYnV0IGRvZXMgbm90IGhhdmUgaW5kZXgJAABrAAAAAwUAAAABdgUAAAAMY3VycmVudEluZGV4BQAAAA9zdG9yZWRVc2VySW5kZXgAAAAAEGN1cnJlbnRUb3RhbERlYnQJAABrAAAAAwUAAAAPc3RvcmVkVG90YWxEZWJ0BQAAAAxjdXJyZW50SW5kZXgFAAAAC3N0b3JlZEluZGV4AAAAAAlhZGRlZERlYnQJAABlAAAAAgUAAAAQY3VycmVudFRvdGFsRGVidAUAAAAPc3RvcmVkVG90YWxEZWJ0AAAAAAxhZGRlZERlcG9zaXQJAABrAAAAAwUAAAAJYWRkZWREZWJ0CQAAZQAAAAIFAAAAC2ZhY3RvcnNCYXNlBQAAAA1yZXNlcnZlRmFjdG9yBQAAAAtmYWN0b3JzQmFzZQAAAAATY3VycmVudFRvdGFsRGVwb3NpdAkAAGQAAAACBQAAABJzdG9yZWRUb3RhbERlcG9zaXQFAAAADGFkZGVkRGVwb3NpdAAAAAATY3VycmVudFRvdGFsUmVzZXJ2ZQkAAGUAAAACCQAAZAAAAAIFAAAAEnN0b3JlZFRvdGFsUmVzZXJ2ZQUAAAAJYWRkZWREZWJ0BQAAAAxhZGRlZERlcG9zaXQBAAAADXBheW1lbnRBbW91bnQAAAACAAAAAWkAAAAHYXNzZXRJZAQAAAABcAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50AwkAAGcAAAACAAAAAAAAAAAABQAAAAFwCQAAAgAAAAECAAAAJ1BheW1lbnQgaXMgbGVzcyB0aGFuIG1pbiBhbGxvd2VkIGFtb3VudAMJAQAAAAIhPQAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQFAAAAB2Fzc2V0SWQJAAACAAAAAQkAASwAAAACAgAAAB1iYWQgYXNzZXQgYXR0YWNoZWQ6IHJlcXVpcmVkIAUAAAAKYXNzZXRJZFN0cgUAAAABcAEAAAAKc3luY1RvdGFscwAAAAQAAAARYWRkaXRpb25hbERlcG9zaXQAAAAOYWRkaXRpb25hbERlYnQAAAARYWRkaXRpb25hbFJlc2VydmUAAAANa2VlcEF0QmFsYW5jZQQAAAANYWN0dWFsQmFsYW5jZQQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAADYWlkBQAAAAckbWF0Y2gwCQAD8AAAAAIFAAAABHRoaXMFAAAAA2FpZAgJAAPvAAAAAQUAAAAEdGhpcwAAAAlhdmFpbGFibGUEAAAADXN0YWtpbmdBY3Rpb24DCQAAAAAAAAIFAAAADWFjdHVhbEJhbGFuY2UFAAAADWtlZXBBdEJhbGFuY2UFAAAABHVuaXQEAAAADnN0YWtpbmdFbmFibGVkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAADWNvbmZpZ0FkZHJlc3MJAAEsAAAAAgIAAAAQc3Rha2luZ19lbmFibGVkXwUAAAAKYXNzZXRJZFN0cgcDCQEAAAABIQAAAAEFAAAADnN0YWtpbmdFbmFibGVkBQAAAAR1bml0BAAAAA5zdGFraW5nQWRkcmVzcwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAA1jb25maWdBZGRyZXNzCQABLAAAAAICAAAAD3N0YWtpbmdfY29uZmlnXwUAAAAKYXNzZXRJZFN0cgkAASwAAAACAgAAABdubyBzdGFraW5nIGFkZHJlc3MgZm9yIAUAAAAKYXNzZXRJZFN0cgkAASwAAAACAgAAABhiYWQgc3Rha2luZyBhZGRyZXNzIGZvciAFAAAACmFzc2V0SWRTdHIDCQAAZgAAAAIFAAAADWFjdHVhbEJhbGFuY2UFAAAADWtlZXBBdEJhbGFuY2UJAAP8AAAABAUAAAAOc3Rha2luZ0FkZHJlc3MCAAAAA3B1dAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAdhc3NldElkCQAAZQAAAAIFAAAADWFjdHVhbEJhbGFuY2UFAAAADWtlZXBBdEJhbGFuY2UFAAAAA25pbAkAA/wAAAAEBQAAAA5zdGFraW5nQWRkcmVzcwIAAAADZ2V0CQAETAAAAAIJAABlAAAAAgUAAAANa2VlcEF0QmFsYW5jZQUAAAANYWN0dWFsQmFsYW5jZQUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAADXN0YWtpbmdBY3Rpb24FAAAADXN0YWtpbmdBY3Rpb24JAARMAAAAAgkBAAAACHdyaXRlSW50AAAAAgUAAAAKaW5kZXhTdG9yZQUAAAAMY3VycmVudEluZGV4CQAETAAAAAIJAQAAAAh3cml0ZUludAAAAAIFAAAAFWxhc3RVcGRhdGVIZWlnaHRTdG9yZQUAAAAGSEVJR0hUCQAETAAAAAIJAQAAAAh3cml0ZUludAAAAAIFAAAAEXRvdGFsRGVwb3NpdFN0b3JlCQAAZAAAAAIFAAAAE2N1cnJlbnRUb3RhbERlcG9zaXQFAAAAEWFkZGl0aW9uYWxEZXBvc2l0CQAETAAAAAIJAQAAAAh3cml0ZUludAAAAAIFAAAADnRvdGFsRGVidFN0b3JlCQAAZAAAAAIFAAAAEGN1cnJlbnRUb3RhbERlYnQFAAAADmFkZGl0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dmVBZGRyZXNzOiAJAAQlAAAAAQUAAAAEdGhpcwIAAAACLCAJAQAAAAlnZXRDb25maWcAAAAAAgAAAAIsIAkBAAAACGdldFN0YXRlAAAAAAAAAAFpAQAAAAphZHZpc2VVc2VyAAAAAQAAAAR1c2VyBAAAAA5jdXJyZW50RGVidFVzZAkBAAAACmFzc2V0VG9Vc2QAAAABBQAAABBjdXJyZW50VG90YWxEZWJ0BAAAABFjdXJyZW50RGVwb3NpdFVzZAkBAAAACmFzc2V0VG9Vc2QAAAABBQAAABNjdXJyZW50VG90YWxEZXBvc2l0BAAAAAxhc0NvbGxhdGVyYWwJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAEdGhpcwkBAAAAFHVzZUFzQ29sbGF0ZXJhbFN0b3JlAAAAAQUAAAAEdXNlcgYEAAAAE2VmZmVjdGl2ZURlcG9zaXRVc2QDBQAAAAxhc0NvbGxhdGVyYWwFAAAAEWN1cnJlbnREZXBvc2l0VXNkAAAAAAAAAAAABAAAAApvdmVybGFwVXNkCQABlwAAAAEJAARMAAAAAgUAAAAOY3VycmVudERlYnRVc2QJAARMAAAAAgUAAAATZWZmZWN0aXZlRGVwb3NpdFVzZAUAAAADbmlsBAAAAA1vdmVybGFwQ2hhcmdlCQEAAAAMZnJhY3Rpb25DZWlsAAAAAwUAAAAKb3ZlcmxhcFVzZAUAAAAUYWNjb3VudEhlYWx0aE92ZXJsYXAFAAAAC2ZhY3RvcnNCYXNlBAAAAAJicAMJAABmAAAAAgUAAAAOY3VycmVudERlYnRVc2QFAAAAE2VmZmVjdGl2ZURlcG9zaXRVc2QAAAAAAAAAAAAJAABrAAAAAwkAAGUAAAACBQAAABNlZmZlY3RpdmVEZXBvc2l0VXNkBQAAAA5jdXJyZW50RGVidFVzZAUAAAAQY29sbGF0ZXJhbEZhY3RvcgUAAAALZmFjdG9yc0Jhc2UEAAAAA2JwdQMJAABmAAAAAgUAAAAOY3VycmVudERlYnRVc2QFAAAAE2VmZmVjdGl2ZURlcG9zaXRVc2QJAABkAAAAAgkAAGsAAAADCQAAZQAAAAIFAAAADmN1cnJlbnREZWJ0VXNkBQAAABNlZmZlY3RpdmVEZXBvc2l0VXNkBQAAAAtmYWN0b3JzQmFzZQUA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Y2ltYWxzBgkABEwAAAACBQAAAAZhVG9rZW4JAARMAAAAAgkBAAAAC3dyaXRlU3RyaW5nAAAAAgUAAAALb3JhY2xlU3RvcmUFAAAACm9yYWNsZUFkZHIJAARMAAAAAgkBAAAACHdyaXRlSW50AAAAAgUAAAATYVRva2VuRGVjaW1hbHNTdG9yZQUAAAAOYVRva2VuRGVjaW1hbHMJAARMAAAAAgkBAAAAC3dyaXRlU3RyaW5nAAAAAgUAAAAPYVRva2VuTmFtZVN0b3JlBQAAAAphVG9rZW5OYW1lCQAETAAAAAIJAQAAAAt3cml0ZVN0cmluZwAAAAIFAAAADGFzc2V0SWRTdG9yZQUAAAAOYXNzZXRJZE9yV2F2ZXMJAARMAAAAAgkBAAAAC3dyaXRlU3RyaW5nAAAAAgUAAAASY29uZmlnQWRkcmVzc1N0b3JlBQAAAApjZmdBZGRyZXNzCQAETAAAAAIJAQAAAAt3cml0ZVN0cmluZwAAAAIFAAAADWFUb2tlbklkU3RvcmUJAAJYAAAAAQkABDgAAAABBQAAAAZhVG9rZW4JAARMAAAAAgkBAAAACHdyaXRlSW50AAAAAgUAAAAVbGFzdFVwZGF0ZUhlaWdodFN0b3JlBQAAAAZIRUlHSFQFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAOdXNlckRlcG9zaXRVU0QAAAABAAAAB2FkZHJlc3MJAAUUAAAAAgUAAAADbmlsCQEAAAAKYXNzZXRUb1VzZAAAAAEJAQAAAA1hVG9rZW5Ub0Fzc2V0AAAAAQkBAAAADWFUb2tlbkJhbGFuY2UAAAABBQAAAAdhZGRyZXNzAAAAAWkBAAAAC3VzZXJEZWJ0VVNEAAAAAQAAAAdhZGRyZXNzCQAFFAAAAAIFAAAAA25pbAkBAAAACmFzc2V0VG9Vc2QAAAABCQEAAAAPY3VycmVudFVzZXJEZWJ0AAAAAQUAAAAHYWRkcmVzcwAAAAFpAQAAAAt1c2VyQmFsYW5jZQAAAAEAAAAHYWRkcmVzcwQAAAAHYXRva2VucwkBAAAADWFUb2tlbkJhbGFuY2UAAAABBQAAAAdhZGRyZXNzBAAAAAVhc3NldAkBAAAADWFUb2tlblRvQXNzZXQAAAABBQAAAAdhdG9rZW5zBAAAAARkZWJ0CQEAAAAPY3VycmVudFVzZXJEZWJ0AAAAAQUAAAAHYWRkcmVzcwkABRQAAAACBQAAAANuaWwJAAUYAAAABgUAAAAHYXRva2VucwUAAAAFYXNzZXQJAQAAAAphc3NldFRvVXNkAAAAAQUAAAAFYXNzZXQFAAAABGRlYnQJAQAAAAphc3NldFRvVXNkAAAAAQUAAAAEZGVidAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACBQAAAAR0aGlzCQEAAAAUdXNlQXNDb2xsYXRlcmFsU3RvcmUAAAABBQAAAAdhZGRyZXNzBgAAAAFpAQAAAAh1c2VyRGVidAAAAAEAAAAHYWRkcmVzcwQAAAAEZGVidAkBAAAAD2N1cnJlbnRVc2VyRGVidAAAAAEFAAAAB2FkZHJlc3MEAAAAB2RlYnRVc2QJAQAAAAphc3NldFRvVXNkAAAAAQUAAAAEZGVidAkABRQAAAACBQAAAANuaWwJAAUUAAAAAgUAAAAEZGVidAUAAAAHZGVidFVzZAAAAAFpAQAAAA1hc3NldFVzZFZhbHVlAAAAAQAAAAthc3NldEFtb3VudAkABRQAAAACBQAAAANuaWwJAQAAAAphc3NldFRvVXNkAAAAAQUAAAALYXNzZXRBbW91bnQAAAABaQEAAAAIcmVwYXlGb3IAAAABAAAAC3VzZXJBZGRyZXNzBAAAAAZjaGVja3MJAQAAAAhtYWluT25seQAAAAEFAAAAAWkDCQAAAAAAAAIFAAAABmNoZWNrcwUAAAAGY2hlY2tzCQEAAAAJcmVwYXlVc2VyAAAAAgUAAAALdXNlckFkZHJlc3MJAQAAAA1wYXltZW50QW1vdW50AAAAAgUAAAABaQUAAAAHYXNzZXRJZAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAKZGVwb3NpdEZvcgAAAAIAAAAJZGVwb3NpdG9yAAAAD3VzZUFzQ29sbGF0ZXJhbAQAAAAGY2hlY2tzAwkBAAAACG1haW5Pbmx5AAAAAQUAAAABaQkBAAAACW9wQWxsb3dlZAAAAAECAAAAB2RlcG9zaXQHAwkAAAAAAAACBQAAAAZjaGVja3MFAAAABmNoZWNrcwMDCQAAZgAAAAIJAQAAAA9jdXJyZW50VXNlckRlYnQAAAABBQAAAAlkZXBvc2l0b3IAAAAAAAAAAAAJAQAAAAEhAAAAAQUAAAAPdXNlQXNDb2xsYXRlcmFsBwkAAAIAAAABAgAAADhjYW4ndCBkaXNhYmxlIHVzZSBhcyBjb2xsYXRlcmFsIGZvciBhc3NldCB3aXRoIG9wZW4gZGVidAQAAAAGYW1vdW50CQEAAAANcGF5bWVudEFtb3VudAAAAAIFAAAAAWkFAAAAB2Fzc2V0SWQEAAAADGFUb2tlbkFtb3VudAkBAAAADWFzc2V0VG9BVG9rZW4AAAABBQAAAAZhbW91bnQJAAROAAAAAgkBAAAACnN5bmNUb3RhbHMAAAAEBQAAAAZhbW91bnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAARMAAAAAgkBAAAACGNoYW5nZUJ5AAAAAgUAAAAWYVRva2VuQ2lyY3VsYXRpb25TdG9yZQUAAAAMYVRva2VuQW1vdW50CQAETAAAAAIJAQAAAAhjaGFuZ2VCeQAAAAIJAQAAABJhVG9rZW5CYWxhbmNlU3RvcmUAAAABBQAAAAlkZXBvc2l0b3IFAAAADGFUb2tlbkFtb3VudAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAFHVzZUFzQ29sbGF0ZXJhbFN0b3JlAAAAAQUAAAAJZGVwb3NpdG9yBQAAAA91c2VBc0NvbGxhdGVyYWwFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAALd2l0aGRyYXdGb3IAAAACAAAAB2FkZHJlc3MAAAAGYW1vdW50BAAAAAttYXhXaXRoZHJhdwkAAGUAAAACCQAAZAAAAAIFAAAAEnN0b3JlZFRvdGFsRGVwb3NpdAUAAAASc3RvcmVkVG90YWxSZXNlcnZlBQAAAA9zdG9yZWRUb3RhbERlYnQEAAAABmNoZWNrcwMDAwkBAAAACG1haW5Pbmx5AAAAAQUAAAABaQkBAAAADmxpcXVpZGl0eUNoZWNrAAAAAwUAAAAGYW1vdW50BQAAAAttYXhXaXRoZHJhdwIAAAAMZnVuZHMgaW4gdXNlBwkBAAAAB3Rocm93SWYAAAAC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", "chainId": 87, "height": 2808116, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Hvpg6pziEiFZ5PwQ8wYDRMfsJWzFbVNFCGhF1xUoByST Next: 4WjtAqoSRfCWyEM5XtdET7Scso65NwaqQU49KfizE3py Diff:
OldNewDifferences
238238 then 0
239239 else fraction(fraction(ay, aB, aw), (t - ar), t)
240240
241-let aJ = {
242- let aK = l(aB, s, (r * t))
243- l(az, (s + (aK * (am - an))), s)
244- }
241+let aJ = if ((am == an))
242+ then az
243+ else {
244+ let aK = l(aB, s, (r * t))
245+ l(az, (s + (aK * (am - an))), s)
246+ }
245247
246248 func aL (aM,aN,aO) = if ((aM > aN))
247249 then throw(("not enough liquidity: " + aO))
422424 func bS () = ((((((((((((((((((((((("storedTotalDeposit: " + toString(aw)) + ", storedTotalDebt: ") + toString(ay)) + ", storedTotalReserve: ") + toString(ax)) + ", storedIndex: ") + toString(az)) + ", lastUpdateHeight: ") + toString(an)) + ", currentTotalDeposit: ") + toString(aW)) + ", currentTotalDebt: ") + toString(aT)) + ", currentTotalReserve: ") + toString(aX)) + ", currentIndex: ") + toString(aJ)) + ", currentHeight: ") + toString(am)) + ", aTokenCirculation: ") + toString(ap)) + ", aTokenPrice: ") + toString(bn(pow(10, 0, Z, 0, 0, FLOOR))))
423425
424426
427+func bT (bv) = {
428+ let bU = bs(bv)
429+ let bV = bn(bU)
430+ let by = aQ(bv)
431+ if ((am == an))
432+ then $Tuple4(aw, ay, bV, by)
433+ else $Tuple4(aW, aT, bV, by)
434+ }
435+
436+
425437 @Callable(ag)
426-func getCurrentTotals () = $Tuple2(nil, $Tuple2(aW, aT))
438+func getCurrentTotals (bv) = $Tuple2(nil, bT(bv))
439+
440+
441+
442+@Callable(ag)
443+func getCurrentTotals2 (bW,bX) = {
444+ let bY = bT(bW)
445+ let bZ = bY._1
446+ let ca = bY._2
447+ let cb = bY._3
448+ let cc = bY._4
449+ let cd = bT(bX)
450+ let ce = cd._1
451+ let cf = cd._2
452+ let cg = cd._3
453+ let ch = cd._4
454+ $Tuple2(nil, $Tuple6(bZ, ca, cb, cc, cg, ch))
455+ }
427456
428457
429458
434463
435464 @Callable(ag)
436465 func adviseUser (bv) = {
437- let bT = bl(aT)
438- let bU = bl(aW)
439- let bV = valueOrElse(getBoolean(this, Q(bv)), true)
440- let bW = if (bV)
441- then bU
466+ let ci = bl(aT)
467+ let cj = bl(aW)
468+ let ck = valueOrElse(getBoolean(this, Q(bv)), true)
469+ let cl = if (ck)
470+ then cj
442471 else 0
443- let bX = min([bT, bW])
444- let bY = l(bX, au, t)
445- let bZ = if ((bT > bW))
472+ let cm = min([ci, cl])
473+ let cn = l(cm, au, t)
474+ let co = if ((ci > cl))
446475 then 0
447- else fraction((bW - bT), as, t)
448- let ca = if ((bT > bW))
449- then (fraction((bT - bW), t, at) + bY)
450- else bY
451- let cb = ((((((((("reserveAddress: " + toString(this)) + ", currentDebtUsd: ") + toString(bT)) + ", currentDepositUsd: ") + toString(bU)) + ", bp: ") + toString(bZ)) + ", bpu: ") + toString(ca))
452- $Tuple2(nil, ((cb + ", ") + bP(bv)))
476+ else fraction((cl - ci), as, t)
477+ let cp = if ((ci > cl))
478+ then (fraction((ci - cl), t, at) + cn)
479+ else cn
480+ let cq = ((((((((("reserveAddress: " + toString(this)) + ", currentDebtUsd: ") + toString(ci)) + ", currentDepositUsd: ") + toString(cj)) + ", bp: ") + toString(co)) + ", bpu: ") + toString(cp))
481+ $Tuple2(nil, ((cq + ", ") + bP(bv)))
453482 }
454483
455484
470499
471500 @Callable(ag)
472501 func withdrawFromReserve (bB) = {
473- let cc = getStringValue(aa, "admin")
474- if ((toString(ag.caller) != cc))
502+ let cr = getStringValue(aa, "admin")
503+ if ((toString(ag.caller) != cr))
475504 then throw("only admin can do")
476- else (ba(0, 0, -(bB), bB) ++ [ScriptTransfer(addressFromStringValue(cc), bB, R)])
505+ else (ba(0, 0, -(bB), bB) ++ [ScriptTransfer(addressFromStringValue(cr), bB, R)])
477506 }
478507
479508
480509
481510 @Callable(ag)
482511 func forceUpdate () = {
483- let cc = getStringValue(aa, "admin")
484- if ((toString(ag.caller) != cc))
512+ let cr = getStringValue(aa, "admin")
513+ if ((toString(ag.caller) != cr))
485514 then throw("only admin can do")
486515 else ba(0, 0, 0, 0)
487516 }
489518
490519
491520 @Callable(ag)
492-func initialize (cd,ce,cf,cg,ch,ci) = {
521+func initialize (cs,ct,cu,cv,cw,cx) = {
493522 let bE = if (ai)
494- then ah(cf)
523+ then ah(cu)
495524 else false
496525 if ((bE == bE))
497526 then {
498- let cj = Issue(cg, ch, 0, ci, true)
499-[cj, k(C, ce), h(L, ci), k(E, cg), k(u, cf), k(B, cd), k(D, toBase58String(calculateAssetId(cj))), h(G, am)]
527+ let cy = Issue(cv, cw, 0, cx, true)
528+[cy, k(C, ct), h(L, cx), k(E, cv), k(u, cu), k(B, cs), k(D, toBase58String(calculateAssetId(cy))), h(G, am)]
500529 }
501530 else throw("Strict value is not equal to itself.")
502531 }
515544
516545 @Callable(ag)
517546 func userBalance (bt) = {
518- let ck = bs(bt)
519- let cl = bn(ck)
547+ let bU = bs(bt)
548+ let bV = bn(bU)
520549 let by = aQ(bt)
521- $Tuple2(nil, $Tuple6(ck, cl, bl(cl), by, bl(by), valueOrElse(getBoolean(this, Q(bt)), true)))
550+ $Tuple2(nil, $Tuple6(bU, bV, bl(bV), by, bl(by), valueOrElse(getBoolean(this, Q(bt)), true)))
522551 }
523552
524553
526555 @Callable(ag)
527556 func userDebt (bt) = {
528557 let by = aQ(bt)
529- let cm = bl(by)
530- $Tuple2(nil, $Tuple2(by, cm))
558+ let cz = bl(by)
559+ $Tuple2(nil, $Tuple2(by, cz))
531560 }
532561
533562
548577
549578
550579 @Callable(ag)
551-func repay () = bD(toString(ag.caller), aY(ag, R))
552-
553-
554-
555-@Callable(ag)
556-func depositFor (cn,co) = {
580+func depositFor (cA,cB) = {
557581 let bE = if (af(ag))
558582 then ab("deposit")
559583 else false
560584 if ((bE == bE))
561- then if (if ((aQ(cn) > 0))
562- then !(co)
585+ then if (if ((aQ(cA) > 0))
586+ then !(cB)
563587 else false)
564588 then throw("can't disable use as collateral for asset with open debt")
565589 else {
566590 let aM = aY(ag, R)
567591 let bo = bp(aM)
568- (ba(aM, 0, 0, 0) ++ [j(F, bo), j(M(cn), bo), BooleanEntry(Q(cn), co)])
592+ (ba(aM, 0, 0, 0) ++ [j(F, bo), j(M(cA), bo), BooleanEntry(Q(cA), cB)])
569593 }
570594 else throw("Strict value is not equal to itself.")
571595 }
574598
575599 @Callable(ag)
576600 func withdrawFor (bt,aM) = {
577- let cp = ((aw + ax) - ay)
601+ let cC = ((aw + ax) - ay)
578602 let bE = if (if (if (af(ag))
579- then aL(aM, cp, "funds in use")
603+ then aL(aM, cC, "funds in use")
580604 else false)
581605 then e((-1 > aM), "invalid amount")
582606 else false)
584608 else false
585609 if ((bE == bE))
586610 then {
587- let cq = if ((aM == -1))
611+ let cD = if ((aM == -1))
588612 then {
589- let ck = bs(bt)
590- $Tuple2(ck, bn(ck))
613+ let bU = bs(bt)
614+ $Tuple2(bU, bn(bU))
591615 }
592616 else $Tuple2(br(aM), aM)
593- let bC = cq._1
594- let cr = cq._2
595- $Tuple2((ba(-(cr), 0, 0, cr) ++ [ScriptTransfer(addressFromStringValue(bt), cr, R), j(M(bt), -(bC)), j(F, -(bC))]), cr)
617+ let bC = cD._1
618+ let cE = cD._2
619+ $Tuple2((ba(-(cE), 0, 0, cE) ++ [ScriptTransfer(addressFromStringValue(bt), cE, R), j(M(bt), -(bC)), j(F, -(bC))]), cE)
596620 }
597621 else throw("Strict value is not equal to itself.")
598622 }
615639
616640
617641 @Callable(ag)
618-func borrowFor (bt,cs) = {
642+func borrowFor (bt,cF) = {
619643 let bE = if (if (af(ag))
620- then aL(cs, (aw - ay), "too much borrow requested")
644+ then aL(cF, (aw - ay), "too much borrow requested")
621645 else false)
622646 then ab("borrow")
623647 else false
624648 if ((bE == bE))
625649 then {
626650 let bF = aQ(bt)
627- let bH = (bF + cs)
628- (ba(0, cs, 0, cs) ++ [h(O(bt), bH), bu(bt), h(P(bt), aJ), ScriptTransfer(addressFromStringValue(bt), cs, R)])
651+ let bH = (bF + cF)
652+ (ba(0, cF, 0, cF) ++ [h(O(bt), bH), bu(bt), h(P(bt), aJ), ScriptTransfer(addressFromStringValue(bt), cF, R)])
629653 }
630654 else throw("Strict value is not equal to itself.")
631655 }
633657
634658
635659 @Callable(ag)
636-func mintAtokenFor (bt,ct) = {
637- let cu = bs(bt)
638- let aM = if ((ct == -1))
639- then cu
640- else ct
660+func mintAtokenFor (bt,cG) = {
661+ let cH = bs(bt)
662+ let aM = if ((cG == -1))
663+ then cH
664+ else cG
641665 let bE = if (if (if (af(ag))
642666 then ab("atokens")
643667 else false)
644- then e((-1 > ct), "invalid amountToMint")
668+ then e((-1 > cG), "invalid amountToMint")
645669 else false)
646- then e((aM > cu), ("Trying to mint more than available, max: " + toString(cu)))
670+ then e((aM > cH), ("Trying to mint more than available, max: " + toString(cH)))
647671 else false
648672 if ((bE == bE))
649673 then $Tuple2((ba(0, 0, 0, 0) ++ [j(M(bt), -(aM)), Reissue(ao, aM, true), ScriptTransfer(addressFromStringValue(bt), aM, ao)]), bn(aM))
658682 if ((bE == bE))
659683 then {
660684 let bo = aY(ag, ao)
661- let cv = bn(bo)
662- (ba(-(cv), 0, 0, cv) ++ [ScriptTransfer(ag.caller, cv, R), j(F, -(bo)), Burn(ao, bo)])
685+ let cI = bn(bo)
686+ (ba(-(cI), 0, 0, cI) ++ [ScriptTransfer(ag.caller, cI, R), j(F, -(bo)), Burn(ao, bo)])
663687 }
664688 else throw("Strict value is not equal to itself.")
665689 }
667691
668692
669693 @Callable(ag)
670-func transferATokensFor (cw,cx,cy) = {
694+func transferATokensFor (cJ,cK,cL) = {
671695 let bE = if (af(ag))
672696 then ab("transfer_debt")
673697 else false
674698 if ((bE == bE))
675699 then {
676- let cz = bm(cy)
677- let ck = bp(cz)
678- let cA = bs(cw)
679- if ((ck > cA))
680- then throw((((((((((("transferAtokensFor error:" + " transfer.valueUsd: ") + toString(cy)) + " transfer.assets: ") + toString(cz)) + " transfer.atokens: ") + toString(ck)) + " from.atokens: ") + toString(cA)) + " at ") + toString(this)))
681- else $Tuple2(((ba(0, 0, 0, 0) ++ [j(M(cw), -(ck)), j(M(cx), ck)]) ++ bw(cx)), bn(ck))
700+ let cM = bm(cL)
701+ let bU = bp(cM)
702+ let cN = bs(cJ)
703+ if ((bU > cN))
704+ then throw((((((((((("transferAtokensFor error:" + " transfer.valueUsd: ") + toString(cL)) + " transfer.assets: ") + toString(cM)) + " transfer.atokens: ") + toString(bU)) + " from.atokens: ") + toString(cN)) + " at ") + toString(this)))
705+ else $Tuple2(((ba(0, 0, 0, 0) ++ [j(M(cJ), -(bU)), j(M(cK), bU)]) ++ bw(cK)), bn(bU))
682706 }
683707 else throw("Strict value is not equal to itself.")
684708 }
686710
687711
688712 @Callable(ag)
689-func transferDebtFor (cw,cx,aM) = {
713+func transferDebtFor (cJ,cK,aM) = {
690714 let bE = if (af(ag))
691715 then ab("transfer_debt")
692716 else false
693717 if ((bE == bE))
694- then $Tuple2((ba(0, 0, 0, 0) ++ [h(O(cw), (aQ(cw) - aM)), h(O(cx), (aQ(cx) + aM)), h(P(cw), aJ), h(P(cx), aJ), bu(cx)]), aM)
718+ then $Tuple2((ba(0, 0, 0, 0) ++ [h(O(cJ), (aQ(cJ) - aM)), h(O(cK), (aQ(cK) + aM)), h(P(cJ), aJ), h(P(cK), aJ), bu(cK)]), aM)
695719 else throw("Strict value is not equal to itself.")
696720 }
697721
744768 }
745769
746770
747-
748-@Callable(ag)
749-func collapseDebt (aM) = {
750- let bE = ab("collapse")
751- if ((bE == bE))
752- then bx(toString(ag.caller), aM)
753- else throw("Strict value is not equal to itself.")
754- }
755-
756-
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = getInteger(this, b)
55
66
77 func c (b) = getString(this, b)
88
99
1010 func d (b) = value(getString(this, b))
1111
1212
1313 func e (f,g) = if (f)
1414 then throw(g)
1515 else true
1616
1717
1818 func h (b,i) = if ((0 > i))
1919 then throw(((("writing negative value " + toString(i)) + " for key ") + b))
2020 else IntegerEntry(b, i)
2121
2222
2323 func j (b,i) = h(b, (valueOrElse(a(b), 0) + i))
2424
2525
2626 func k (b,i) = StringEntry(b, i)
2727
2828
2929 func l (i,m,n) = {
3030 let o = fraction(i, m, n)
3131 let p = 3037000499
3232 let q = ((((o % p) * (n % p)) % p) == (((i % p) * (m % p)) % p))
3333 if (q)
3434 then o
3535 else (o + 1)
3636 }
3737
3838
3939 let r = 525600
4040
4141 let s = 10000000000000000
4242
4343 let t = 1000
4444
4545 let u = "assetId"
4646
4747 let v = "main"
4848
4949 let w = (d(u) + "_ReserveFactor")
5050
5151 let x = (d(u) + "_CollateralFactor")
5252
5353 let y = (getStringValue(u) + "_LiquidationThreshold")
5454
5555 let z = "account_health_overlap"
5656
5757 let A = (getStringValue(u) + "_LiquidationPenalty")
5858
5959 let B = "configAddress"
6060
6161 let C = "oracleAddress"
6262
6363 let D = "aTokenId"
6464
6565 let E = "aTokenName"
6666
6767 let F = "aTokenCirculation"
6868
6969 let G = "lastUpdateHeight"
7070
7171 let H = "totalBorrow"
7272
7373 let I = "totalDeposit"
7474
7575 let J = "totalReserve"
7676
7777 let K = "storedIndex"
7878
7979 let L = "aTokenDecimals"
8080
8181 func M (N) = (N + "_aTokenBalance")
8282
8383
8484 func O (N) = (N + "_debt")
8585
8686
8787 func P (N) = (N + "_index")
8888
8989
9090 func Q (N) = (N + "_useAsCollateral")
9191
9292
9393 let R = {
9494 let S = valueOrErrorMessage(c(u), "no assetId")
9595 if ((S == "WAVES"))
9696 then unit
9797 else fromBase58String(S)
9898 }
9999
100100 let T = {
101101 let U = R
102102 if ($isInstanceOf(U, "ByteVector"))
103103 then {
104104 let V = U
105105 toBase58String(V)
106106 }
107107 else if ($isInstanceOf(U, "Unit"))
108108 then {
109109 let W = U
110110 "WAVES"
111111 }
112112 else throw("Match error")
113113 }
114114
115115 func X (Y,R) = {
116116 let U = R
117117 if ($isInstanceOf(U, "ByteVector"))
118118 then {
119119 let V = U
120120 assetBalance(Y, V)
121121 }
122122 else if ($isInstanceOf(U, "Unit"))
123123 then {
124124 let W = U
125125 wavesBalance(Y).available
126126 }
127127 else throw("Match error")
128128 }
129129
130130
131131 let Z = valueOrErrorMessage(a(L), "no assetDecimals")
132132
133133 let aa = valueOrErrorMessage(addressFromString(valueOrErrorMessage(c(B), "no configAddress")), "invalid config address")
134134
135135 func ab (ac) = {
136136 let ad = valueOrErrorMessage(c(u), "no assetId")
137137 let U = invoke(aa, "opAllowed", [ad, ac], nil)
138138 if ($isInstanceOf(U, "Boolean"))
139139 then {
140140 let ae = U
141141 if (ae)
142142 then true
143143 else throw("not allowed")
144144 }
145145 else throw("opAllowed: unexpected result type")
146146 }
147147
148148
149149 func af (ag) = if ((ag.caller != valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa, v), "no main in config")), "invalid main address")))
150150 then throw("only main can do")
151151 else true
152152
153153
154154 func ah (i) = if (if ((i != "WAVES"))
155155 then (fromBase58String(i) == fromBase58String(""))
156156 else false)
157157 then throw("invalid assetId")
158158 else true
159159
160160
161161 let ai = e(isDefined(c(u)), "already initialized")
162162
163163 let aj = {
164164 let U = c(C)
165165 if ($isInstanceOf(U, "String"))
166166 then {
167167 let ak = U
168168 addressFromString(ak)
169169 }
170170 else unit
171171 }
172172
173173 let al = {
174174 let U = invoke(valueOrErrorMessage(aj, "no oracle"), "price", [d(u)], nil)
175175 if ($isInstanceOf(U, "Int"))
176176 then {
177177 let ag = U
178178 ag
179179 }
180180 else throw("bad oracle data")
181181 }
182182
183183 let am = height
184184
185185 let an = valueOrErrorMessage(a(G), "no lastUpdateHeight")
186186
187187 let ao = fromBase58String(valueOrErrorMessage(c(D), "no aTokenId"))
188188
189189 let ap = valueOrElse(a(F), 0)
190190
191191 let aq = {
192192 let S = d(u)
193193 $Tuple4(getIntegerValue(aa, (S + "_APoint")), getIntegerValue(aa, (S + "_BPoint")), getIntegerValue(aa, (S + "_CPoint")), getIntegerValue(aa, (S + "_DPoint")))
194194 }
195195
196196 let ar = valueOrErrorMessage(getInteger(aa, w), "no reserveFactor")
197197
198198 let as = valueOrErrorMessage(getInteger(aa, x), "no collateralFactor")
199199
200200 let at = valueOrErrorMessage(getInteger(aa, y), "no liquidationThreshold")
201201
202202 let au = valueOrErrorMessage(getInteger(aa, z), "no overlapCharge")
203203
204204 let av = valueOrErrorMessage(getInteger(aa, A), "no liquidationPenalty")
205205
206206 let aw = valueOrElse(a(I), 0)
207207
208208 let ax = valueOrElse(a(J), 0)
209209
210210 let ay = valueOrElse(a(H), 0)
211211
212212 let az = valueOrElse(a(K), s)
213213
214214 let aA = if ((aw > 0))
215215 then fraction(ay, t, aw)
216216 else 0
217217
218218 let aB = {
219219 let aC = aq
220220 let aD = aC._1
221221 let ae = aC._2
222222 let aE = aC._3
223223 let aF = aC._4
224224 let aG = (fraction((aD - aE), aA, -(ae)) + aD)
225225 let aH = (fraction((aE - aF), (aA - ae), (ae - t)) + aE)
226226 if ((aA == 0))
227227 then aD
228228 else if ((aA == ae))
229229 then aE
230230 else if (if ((ae > aA))
231231 then true
232232 else (ae == t))
233233 then aG
234234 else aH
235235 }
236236
237237 let aI = if ((aw == 0))
238238 then 0
239239 else fraction(fraction(ay, aB, aw), (t - ar), t)
240240
241-let aJ = {
242- let aK = l(aB, s, (r * t))
243- l(az, (s + (aK * (am - an))), s)
244- }
241+let aJ = if ((am == an))
242+ then az
243+ else {
244+ let aK = l(aB, s, (r * t))
245+ l(az, (s + (aK * (am - an))), s)
246+ }
245247
246248 func aL (aM,aN,aO) = if ((aM > aN))
247249 then throw(("not enough liquidity: " + aO))
248250 else true
249251
250252
251253 func aP (N) = valueOrElse(a(O(N)), 0)
252254
253255
254256 func aQ (N) = {
255257 let aR = aP(N)
256258 if ((aR == 0))
257259 then 0
258260 else {
259261 let aS = valueOrErrorMessage(a(P(N)), "has debt but does not have index")
260262 fraction(aR, aJ, aS)
261263 }
262264 }
263265
264266
265267 let aT = fraction(ay, aJ, az)
266268
267269 let aU = (aT - ay)
268270
269271 let aV = fraction(aU, (t - ar), t)
270272
271273 let aW = (aw + aV)
272274
273275 let aX = ((ax + aU) - aV)
274276
275277 func aY (ag,R) = {
276278 let aZ = ag.payments[0].amount
277279 if ((0 >= aZ))
278280 then throw("Payment is less than min allowed amount")
279281 else if ((ag.payments[0].assetId != R))
280282 then throw(("bad asset attached: required " + T))
281283 else aZ
282284 }
283285
284286
285287 func ba (bb,bc,bd,be) = {
286288 let bf = {
287289 let U = R
288290 if ($isInstanceOf(U, "ByteVector"))
289291 then {
290292 let ad = U
291293 assetBalance(this, ad)
292294 }
293295 else wavesBalance(this).available
294296 }
295297 let bg = if ((bf == be))
296298 then unit
297299 else {
298300 let bh = valueOrElse(getBoolean(aa, ("staking_enabled_" + T)), false)
299301 if (!(bh))
300302 then unit
301303 else {
302304 let bi = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa, ("staking_config_" + T)), ("no staking address for " + T))), ("bad staking address for " + T))
303305 if ((bf > be))
304306 then invoke(bi, "put", nil, [AttachedPayment(R, (bf - be))])
305307 else invoke(bi, "get", [(be - bf)], nil)
306308 }
307309 }
308310 if ((bg == bg))
309311 then [h(K, aJ), h(G, am), h(I, (aW + bb)), h(H, (aT + bc)), h(J, (aX + bd))]
310312 else throw("Strict value is not equal to itself.")
311313 }
312314
313315
314316 func bj (bk) = if ((bk == 6))
315317 then 1000000
316318 else if ((bk == 8))
317319 then 100000000
318320 else throw(("bad decimals: " + toString(bk)))
319321
320322
321323 func bl (aM) = fraction(aM, al, bj(Z))
322324
323325
324326 func bm (aM) = fraction(aM, bj(Z), al)
325327
326328
327329 func bn (bo) = if ((bo == 0))
328330 then 0
329331 else if ((ap > 0))
330332 then fraction(bo, aW, ap)
331333 else bo
332334
333335
334336 func bp (bq) = if ((bq == 0))
335337 then 0
336338 else if ((ap > 0))
337339 then fraction(bq, ap, aW)
338340 else bq
339341
340342
341343 func br (bq) = if ((bq == 0))
342344 then 0
343345 else if ((ap > 0))
344346 then l(bq, ap, aW)
345347 else bq
346348
347349
348350 func bs (bt) = valueOrElse(a(M(bt)), 0)
349351
350352
351353 func bu (bv) = BooleanEntry(Q(bv), true)
352354
353355
354356 func bw (bv) = if ((aQ(bv) > 0))
355357 then [bu(bv)]
356358 else nil
357359
358360
359361 func bx (bt,aM) = {
360362 let by = aQ(bt)
361363 let bz = bn(bs(bt))
362364 let bA = min([by, bz])
363365 let bB = if ((-1 > aM))
364366 then throw("invalid collapse amount")
365367 else if (if ((bA == 0))
366368 then true
367369 else (aM == 0))
368370 then throw("nothing to collapse")
369371 else if (if ((aM == -1))
370372 then true
371373 else (aM > bA))
372374 then bA
373375 else aM
374376 let bC = br(bB)
375377 $Tuple2((ba(-(bB), -(bB), 0, 0) ++ [j(M(bt), -(bC)), j(F, -(bC)), h(O(bt), (by - bB)), h(P(bt), aJ)]), bB)
376378 }
377379
378380
379381 func bD (N,aM) = {
380382 let bE = ab("repay")
381383 if ((bE == bE))
382384 then {
383385 let bF = aQ(N)
384386 if ((bF == bF))
385387 then {
386388 let bG = if ((aM > bF))
387389 then $Tuple4(0, -(bF), (aM - bF), [ScriptTransfer(addressFromStringValue(N), (aM - bF), R)])
388390 else $Tuple4((bF - aM), -(aM), 0, nil)
389391 let bH = bG._1
390392 let bI = bG._2
391393 let bJ = bG._3
392394 let bK = bG._4
393395 let bL = (aM - bJ)
394396 $Tuple2(((ba(0, bI, 0, bJ) ++ bK) ++ [h(O(N), bH), h(P(N), aJ)]), bL)
395397 }
396398 else throw("Strict value is not equal to itself.")
397399 }
398400 else throw("Strict value is not equal to itself.")
399401 }
400402
401403
402404 func bM () = {
403405 let bN = aq
404406 let aD = bN._1
405407 let ae = bN._2
406408 let aE = bN._3
407409 let aF = bN._4
408410 ((((((((((((((("ABCD: " + toString(aD)) + ";") + toString(ae)) + ";") + toString(aE)) + ";") + toString(aF)) + ", reserveFactor: ") + toString(ar)) + ", collateralFactor: ") + toString(as)) + ", liquidationThreshold: ") + toString(at)) + ", liquidationPenalty: ") + toString(av))
409411 }
410412
411413
412414 func bO () = ((((((((((((((((((((((((((("currentTotalDeposit: " + toString(aW)) + ", storedTotalDeposit: ") + toString(aw)) + ", currentTotalDebt: ") + toString(aT)) + ", storedTotalDebt: ") + toString(ay)) + ", currentTotalReserve: ") + toString(aX)) + ", storedTotalReserve: ") + toString(ax)) + ", currentIndex:") + toString(aJ)) + ", storedIndex: ") + toString(az)) + ", lastUpdateHeight: ") + toString(an)) + ", utilization: ") + toString(aA)) + ", aTokenCirculation: ") + toString(ap)) + ", aTokenPrice: ") + toString(bn(pow(10, 0, Z, 0, 0, FLOOR)))) + ", APR: ") + toString(aB)) + ", APY: ") + toString(aI))
413415
414416
415417 func bP (bv) = {
416418 let bQ = bs(bv)
417419 let bR = X(addressFromStringValue(bv), ao)
418420 ((((((((((((((((("currentDebt: " + toString(aQ(bv))) + ", storedDebt: ") + toString(valueOrElse(a(O(bv)), 0))) + ", currentDeposit: ") + toString(bn(bQ))) + ", aTokenContractBalance: ") + toString(bQ)) + ", aTokenWalletBalance: ") + toString(bR)) + ", walletStake: ") + toString(bn(bR))) + ", assetWalletBalance: ") + toString(X(addressFromStringValue(bv), R))) + ", useAsCollateral: ") + toString(valueOrElse(getBoolean(this, Q(bv)), true))) + ", storedIndex: ") + toString(valueOrElse(a(P(bv)), 0)))
419421 }
420422
421423
422424 func bS () = ((((((((((((((((((((((("storedTotalDeposit: " + toString(aw)) + ", storedTotalDebt: ") + toString(ay)) + ", storedTotalReserve: ") + toString(ax)) + ", storedIndex: ") + toString(az)) + ", lastUpdateHeight: ") + toString(an)) + ", currentTotalDeposit: ") + toString(aW)) + ", currentTotalDebt: ") + toString(aT)) + ", currentTotalReserve: ") + toString(aX)) + ", currentIndex: ") + toString(aJ)) + ", currentHeight: ") + toString(am)) + ", aTokenCirculation: ") + toString(ap)) + ", aTokenPrice: ") + toString(bn(pow(10, 0, Z, 0, 0, FLOOR))))
423425
424426
427+func bT (bv) = {
428+ let bU = bs(bv)
429+ let bV = bn(bU)
430+ let by = aQ(bv)
431+ if ((am == an))
432+ then $Tuple4(aw, ay, bV, by)
433+ else $Tuple4(aW, aT, bV, by)
434+ }
435+
436+
425437 @Callable(ag)
426-func getCurrentTotals () = $Tuple2(nil, $Tuple2(aW, aT))
438+func getCurrentTotals (bv) = $Tuple2(nil, bT(bv))
439+
440+
441+
442+@Callable(ag)
443+func getCurrentTotals2 (bW,bX) = {
444+ let bY = bT(bW)
445+ let bZ = bY._1
446+ let ca = bY._2
447+ let cb = bY._3
448+ let cc = bY._4
449+ let cd = bT(bX)
450+ let ce = cd._1
451+ let cf = cd._2
452+ let cg = cd._3
453+ let ch = cd._4
454+ $Tuple2(nil, $Tuple6(bZ, ca, cb, cc, cg, ch))
455+ }
427456
428457
429458
430459 @Callable(ag)
431460 func advise () = $Tuple2(nil, ((((("reserveAddress: " + toString(this)) + ", ") + bM()) + ", ") + bO()))
432461
433462
434463
435464 @Callable(ag)
436465 func adviseUser (bv) = {
437- let bT = bl(aT)
438- let bU = bl(aW)
439- let bV = valueOrElse(getBoolean(this, Q(bv)), true)
440- let bW = if (bV)
441- then bU
466+ let ci = bl(aT)
467+ let cj = bl(aW)
468+ let ck = valueOrElse(getBoolean(this, Q(bv)), true)
469+ let cl = if (ck)
470+ then cj
442471 else 0
443- let bX = min([bT, bW])
444- let bY = l(bX, au, t)
445- let bZ = if ((bT > bW))
472+ let cm = min([ci, cl])
473+ let cn = l(cm, au, t)
474+ let co = if ((ci > cl))
446475 then 0
447- else fraction((bW - bT), as, t)
448- let ca = if ((bT > bW))
449- then (fraction((bT - bW), t, at) + bY)
450- else bY
451- let cb = ((((((((("reserveAddress: " + toString(this)) + ", currentDebtUsd: ") + toString(bT)) + ", currentDepositUsd: ") + toString(bU)) + ", bp: ") + toString(bZ)) + ", bpu: ") + toString(ca))
452- $Tuple2(nil, ((cb + ", ") + bP(bv)))
476+ else fraction((cl - ci), as, t)
477+ let cp = if ((ci > cl))
478+ then (fraction((ci - cl), t, at) + cn)
479+ else cn
480+ let cq = ((((((((("reserveAddress: " + toString(this)) + ", currentDebtUsd: ") + toString(ci)) + ", currentDepositUsd: ") + toString(cj)) + ", bp: ") + toString(co)) + ", bpu: ") + toString(cp))
481+ $Tuple2(nil, ((cq + ", ") + bP(bv)))
453482 }
454483
455484
456485
457486 @Callable(ag)
458487 func addInterest () = if ((ag.payments[0].assetId != R))
459488 then throw("can't add interest with unrelated token")
460489 else ba(ag.payments[0].amount, 0, 0, 0)
461490
462491
463492
464493 @Callable(ag)
465494 func addToReserve () = if ((ag.payments[0].assetId != R))
466495 then throw("can't add interest with unrelated token")
467496 else ba(0, 0, ag.payments[0].amount, 0)
468497
469498
470499
471500 @Callable(ag)
472501 func withdrawFromReserve (bB) = {
473- let cc = getStringValue(aa, "admin")
474- if ((toString(ag.caller) != cc))
502+ let cr = getStringValue(aa, "admin")
503+ if ((toString(ag.caller) != cr))
475504 then throw("only admin can do")
476- else (ba(0, 0, -(bB), bB) ++ [ScriptTransfer(addressFromStringValue(cc), bB, R)])
505+ else (ba(0, 0, -(bB), bB) ++ [ScriptTransfer(addressFromStringValue(cr), bB, R)])
477506 }
478507
479508
480509
481510 @Callable(ag)
482511 func forceUpdate () = {
483- let cc = getStringValue(aa, "admin")
484- if ((toString(ag.caller) != cc))
512+ let cr = getStringValue(aa, "admin")
513+ if ((toString(ag.caller) != cr))
485514 then throw("only admin can do")
486515 else ba(0, 0, 0, 0)
487516 }
488517
489518
490519
491520 @Callable(ag)
492-func initialize (cd,ce,cf,cg,ch,ci) = {
521+func initialize (cs,ct,cu,cv,cw,cx) = {
493522 let bE = if (ai)
494- then ah(cf)
523+ then ah(cu)
495524 else false
496525 if ((bE == bE))
497526 then {
498- let cj = Issue(cg, ch, 0, ci, true)
499-[cj, k(C, ce), h(L, ci), k(E, cg), k(u, cf), k(B, cd), k(D, toBase58String(calculateAssetId(cj))), h(G, am)]
527+ let cy = Issue(cv, cw, 0, cx, true)
528+[cy, k(C, ct), h(L, cx), k(E, cv), k(u, cu), k(B, cs), k(D, toBase58String(calculateAssetId(cy))), h(G, am)]
500529 }
501530 else throw("Strict value is not equal to itself.")
502531 }
503532
504533
505534
506535 @Callable(ag)
507536 func userDepositUSD (bt) = $Tuple2(nil, bl(bn(bs(bt))))
508537
509538
510539
511540 @Callable(ag)
512541 func userDebtUSD (bt) = $Tuple2(nil, bl(aQ(bt)))
513542
514543
515544
516545 @Callable(ag)
517546 func userBalance (bt) = {
518- let ck = bs(bt)
519- let cl = bn(ck)
547+ let bU = bs(bt)
548+ let bV = bn(bU)
520549 let by = aQ(bt)
521- $Tuple2(nil, $Tuple6(ck, cl, bl(cl), by, bl(by), valueOrElse(getBoolean(this, Q(bt)), true)))
550+ $Tuple2(nil, $Tuple6(bU, bV, bl(bV), by, bl(by), valueOrElse(getBoolean(this, Q(bt)), true)))
522551 }
523552
524553
525554
526555 @Callable(ag)
527556 func userDebt (bt) = {
528557 let by = aQ(bt)
529- let cm = bl(by)
530- $Tuple2(nil, $Tuple2(by, cm))
558+ let cz = bl(by)
559+ $Tuple2(nil, $Tuple2(by, cz))
531560 }
532561
533562
534563
535564 @Callable(ag)
536565 func assetUsdValue (bq) = $Tuple2(nil, bl(bq))
537566
538567
539568
540569 @Callable(ag)
541570 func repayFor (N) = {
542571 let bE = af(ag)
543572 if ((bE == bE))
544573 then bD(N, aY(ag, R))
545574 else throw("Strict value is not equal to itself.")
546575 }
547576
548577
549578
550579 @Callable(ag)
551-func repay () = bD(toString(ag.caller), aY(ag, R))
552-
553-
554-
555-@Callable(ag)
556-func depositFor (cn,co) = {
580+func depositFor (cA,cB) = {
557581 let bE = if (af(ag))
558582 then ab("deposit")
559583 else false
560584 if ((bE == bE))
561- then if (if ((aQ(cn) > 0))
562- then !(co)
585+ then if (if ((aQ(cA) > 0))
586+ then !(cB)
563587 else false)
564588 then throw("can't disable use as collateral for asset with open debt")
565589 else {
566590 let aM = aY(ag, R)
567591 let bo = bp(aM)
568- (ba(aM, 0, 0, 0) ++ [j(F, bo), j(M(cn), bo), BooleanEntry(Q(cn), co)])
592+ (ba(aM, 0, 0, 0) ++ [j(F, bo), j(M(cA), bo), BooleanEntry(Q(cA), cB)])
569593 }
570594 else throw("Strict value is not equal to itself.")
571595 }
572596
573597
574598
575599 @Callable(ag)
576600 func withdrawFor (bt,aM) = {
577- let cp = ((aw + ax) - ay)
601+ let cC = ((aw + ax) - ay)
578602 let bE = if (if (if (af(ag))
579- then aL(aM, cp, "funds in use")
603+ then aL(aM, cC, "funds in use")
580604 else false)
581605 then e((-1 > aM), "invalid amount")
582606 else false)
583607 then ab("withdraw")
584608 else false
585609 if ((bE == bE))
586610 then {
587- let cq = if ((aM == -1))
611+ let cD = if ((aM == -1))
588612 then {
589- let ck = bs(bt)
590- $Tuple2(ck, bn(ck))
613+ let bU = bs(bt)
614+ $Tuple2(bU, bn(bU))
591615 }
592616 else $Tuple2(br(aM), aM)
593- let bC = cq._1
594- let cr = cq._2
595- $Tuple2((ba(-(cr), 0, 0, cr) ++ [ScriptTransfer(addressFromStringValue(bt), cr, R), j(M(bt), -(bC)), j(F, -(bC))]), cr)
617+ let bC = cD._1
618+ let cE = cD._2
619+ $Tuple2((ba(-(cE), 0, 0, cE) ++ [ScriptTransfer(addressFromStringValue(bt), cE, R), j(M(bt), -(bC)), j(F, -(bC))]), cE)
596620 }
597621 else throw("Strict value is not equal to itself.")
598622 }
599623
600624
601625
602626 @Callable(ag)
603627 func replenishWithAtokenFor (bv) = {
604628 let bE = if (af(ag))
605629 then ab("atokens")
606630 else false
607631 if ((bE == bE))
608632 then {
609633 let bo = aY(ag, ao)
610634 $Tuple2(((ba(0, 0, 0, 0) ++ [j(M(bv), bo), Burn(ao, bo)]) ++ bw(bv)), bn(bo))
611635 }
612636 else throw("Strict value is not equal to itself.")
613637 }
614638
615639
616640
617641 @Callable(ag)
618-func borrowFor (bt,cs) = {
642+func borrowFor (bt,cF) = {
619643 let bE = if (if (af(ag))
620- then aL(cs, (aw - ay), "too much borrow requested")
644+ then aL(cF, (aw - ay), "too much borrow requested")
621645 else false)
622646 then ab("borrow")
623647 else false
624648 if ((bE == bE))
625649 then {
626650 let bF = aQ(bt)
627- let bH = (bF + cs)
628- (ba(0, cs, 0, cs) ++ [h(O(bt), bH), bu(bt), h(P(bt), aJ), ScriptTransfer(addressFromStringValue(bt), cs, R)])
651+ let bH = (bF + cF)
652+ (ba(0, cF, 0, cF) ++ [h(O(bt), bH), bu(bt), h(P(bt), aJ), ScriptTransfer(addressFromStringValue(bt), cF, R)])
629653 }
630654 else throw("Strict value is not equal to itself.")
631655 }
632656
633657
634658
635659 @Callable(ag)
636-func mintAtokenFor (bt,ct) = {
637- let cu = bs(bt)
638- let aM = if ((ct == -1))
639- then cu
640- else ct
660+func mintAtokenFor (bt,cG) = {
661+ let cH = bs(bt)
662+ let aM = if ((cG == -1))
663+ then cH
664+ else cG
641665 let bE = if (if (if (af(ag))
642666 then ab("atokens")
643667 else false)
644- then e((-1 > ct), "invalid amountToMint")
668+ then e((-1 > cG), "invalid amountToMint")
645669 else false)
646- then e((aM > cu), ("Trying to mint more than available, max: " + toString(cu)))
670+ then e((aM > cH), ("Trying to mint more than available, max: " + toString(cH)))
647671 else false
648672 if ((bE == bE))
649673 then $Tuple2((ba(0, 0, 0, 0) ++ [j(M(bt), -(aM)), Reissue(ao, aM, true), ScriptTransfer(addressFromStringValue(bt), aM, ao)]), bn(aM))
650674 else throw("Strict value is not equal to itself.")
651675 }
652676
653677
654678
655679 @Callable(ag)
656680 func redeemAtokens () = {
657681 let bE = ab("atokens")
658682 if ((bE == bE))
659683 then {
660684 let bo = aY(ag, ao)
661- let cv = bn(bo)
662- (ba(-(cv), 0, 0, cv) ++ [ScriptTransfer(ag.caller, cv, R), j(F, -(bo)), Burn(ao, bo)])
685+ let cI = bn(bo)
686+ (ba(-(cI), 0, 0, cI) ++ [ScriptTransfer(ag.caller, cI, R), j(F, -(bo)), Burn(ao, bo)])
663687 }
664688 else throw("Strict value is not equal to itself.")
665689 }
666690
667691
668692
669693 @Callable(ag)
670-func transferATokensFor (cw,cx,cy) = {
694+func transferATokensFor (cJ,cK,cL) = {
671695 let bE = if (af(ag))
672696 then ab("transfer_debt")
673697 else false
674698 if ((bE == bE))
675699 then {
676- let cz = bm(cy)
677- let ck = bp(cz)
678- let cA = bs(cw)
679- if ((ck > cA))
680- then throw((((((((((("transferAtokensFor error:" + " transfer.valueUsd: ") + toString(cy)) + " transfer.assets: ") + toString(cz)) + " transfer.atokens: ") + toString(ck)) + " from.atokens: ") + toString(cA)) + " at ") + toString(this)))
681- else $Tuple2(((ba(0, 0, 0, 0) ++ [j(M(cw), -(ck)), j(M(cx), ck)]) ++ bw(cx)), bn(ck))
700+ let cM = bm(cL)
701+ let bU = bp(cM)
702+ let cN = bs(cJ)
703+ if ((bU > cN))
704+ then throw((((((((((("transferAtokensFor error:" + " transfer.valueUsd: ") + toString(cL)) + " transfer.assets: ") + toString(cM)) + " transfer.atokens: ") + toString(bU)) + " from.atokens: ") + toString(cN)) + " at ") + toString(this)))
705+ else $Tuple2(((ba(0, 0, 0, 0) ++ [j(M(cJ), -(bU)), j(M(cK), bU)]) ++ bw(cK)), bn(bU))
682706 }
683707 else throw("Strict value is not equal to itself.")
684708 }
685709
686710
687711
688712 @Callable(ag)
689-func transferDebtFor (cw,cx,aM) = {
713+func transferDebtFor (cJ,cK,aM) = {
690714 let bE = if (af(ag))
691715 then ab("transfer_debt")
692716 else false
693717 if ((bE == bE))
694- then $Tuple2((ba(0, 0, 0, 0) ++ [h(O(cw), (aQ(cw) - aM)), h(O(cx), (aQ(cx) + aM)), h(P(cw), aJ), h(P(cx), aJ), bu(cx)]), aM)
718+ then $Tuple2((ba(0, 0, 0, 0) ++ [h(O(cJ), (aQ(cJ) - aM)), h(O(cK), (aQ(cK) + aM)), h(P(cJ), aJ), h(P(cK), aJ), bu(cK)]), aM)
695719 else throw("Strict value is not equal to itself.")
696720 }
697721
698722
699723
700724 @Callable(ag)
701725 func disableUseAsCollateralFor (bt) = {
702726 let bE = if (af(ag))
703727 then ab("use_as_col")
704728 else false
705729 if ((bE == bE))
706730 then if ((aQ(bt) > 0))
707731 then throw("can't disable collateral for asset with open debt")
708732 else (ba(0, 0, 0, 0) ++ [BooleanEntry(Q(bt), false)])
709733 else throw("Strict value is not equal to itself.")
710734 }
711735
712736
713737
714738 @Callable(ag)
715739 func enableUseAsCollateral () = {
716740 let bE = ab("use_as_col")
717741 if ((bE == bE))
718742 then (ba(0, 0, 0, 0) ++ [bu(toString(ag.caller))])
719743 else throw("Strict value is not equal to itself.")
720744 }
721745
722746
723747
724748 @Callable(ag)
725749 func collapseFor (bv) = {
726750 let bE = if (af(ag))
727751 then ab("force_collapse")
728752 else false
729753 if ((bE == bE))
730754 then bx(bv, -1)
731755 else throw("Strict value is not equal to itself.")
732756 }
733757
734758
735759
736760 @Callable(ag)
737761 func collapseForAmount (bv,aM) = {
738762 let bE = if (af(ag))
739763 then ab("collapse")
740764 else false
741765 if ((bE == bE))
742766 then bx(bv, aM)
743767 else throw("Strict value is not equal to itself.")
744768 }
745769
746770
747-
748-@Callable(ag)
749-func collapseDebt (aM) = {
750- let bE = ab("collapse")
751- if ((bE == bE))
752- then bx(toString(ag.caller), aM)
753- else throw("Strict value is not equal to itself.")
754- }
755-
756-

github/deemru/w8io/873ac7e 
138.85 ms