tx · Bp2RUyxTvUs2t7kYhHoumzKCRmqRtjTgh6qr6rNuZMMe

3PHmyHFaFTNh6Yh8vicJke9DnxcsUA56uWb:  -0.01400000 Waves

2021.10.22 15:24 [2822470] smart account 3PHmyHFaFTNh6Yh8vicJke9DnxcsUA56uWb > SELF 0.00000000 Waves

{ "type": 13, "id": "Bp2RUyxTvUs2t7kYhHoumzKCRmqRtjTgh6qr6rNuZMMe", "fee": 1400000, "feeAssetId": null, "timestamp": 1634905454291, "version": 1, "sender": "3PHmyHFaFTNh6Yh8vicJke9DnxcsUA56uWb", "senderPublicKey": "9Ps647vMbFkxBfwxidninuYHYNazJGxBssESpf6Pya34", "proofs": [ "5PpyTDLK9vGqU3NjnckzmFQgUCqwAvUNS4cmge4FTaesxCcxzLE4aR8TmoHkiXBLUgPEjsEAkzjedFbJbKWAw8z4" ], "script": "base64:AAIFAAAAAAAAAA4IAhIDCgEIEgASAwoBCAAAAB8AAAAAA1NFUAIAAAACX18AAAAABnNjYWxlOAAAAAAABfXhAAAAAAARcG9vbFN0YXRzUHJpY2VLZXkAAAAAAAAAAAQAAAAADmlkeFBvb2xBZGRyZXNzAAAAAAAAAAABAAAAAA1pZHhQb29sU3RhdHVzAAAAAAAAAAACAAAAABBpZHhQb29sTFBBc3NldElkAAAAAAAAAAADAAAAAA1pZHhBbXRBc3NldElkAAAAAAAAAAAEAAAAAA9pZHhQcmljZUFzc2V0SWQAAAAAAAAAAAUAAAAADmlkeEFtdEFzc2V0RGNtAAAAAAAAAAAGAAAAABBpZHhQcmljZUFzc2V0RGNtAAAAAAAAAAAHAAAAAA5pZHhJQW10QXNzZXRJZAAAAAAAAAAACAAAAAAQaWR4SVByaWNlQXNzZXRJZAAAAAAAAAAACQAAAAANaWR4TFBBc3NldERjbQAAAAAAAAAACgAAAAATaWR4TWF0Y2hlclB1YmxpY0tleQAAAAAAAAAACwEAAAAOa2V5UmVnaXN0ZXJQdXQAAAACAAAAC3Bvb2xBZGRyZXNzAAAABHR4SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACyVzJXMlc19fUF9fBQAAAAtwb29sQWRkcmVzcwIAAAACX18FAAAABHR4SWQBAAAAEWtleVJlZ2lzdGVySW52ZXN0AAAAAgAAAAtwb29sQWRkcmVzcwAAAAR0eElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABAlcyVzJXNfX2ludmVzdF9fBQAAAAtwb29sQWRkcmVzcwIAAAACX18FAAAABHR4SWQBAAAAFmtleVBvb2xUb3RhbEFtdEJ5QXNzZXQAAAACAAAAC3Bvb2xBZGRyZXNzAAAAB2Fzc2V0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADyVzJXMlc19fdG90YWxfXwUAAAALcG9vbEFkZHJlc3MCAAAAAl9fBQAAAAdhc3NldElkAQAAABJrZXlGYWN0b3J5Q29udHJhY3QAAAAAAgAAABMlc19fZmFjdG9yeUNvbnRyYWN0AQAAACBrZXlTbGlwcGFnZUFtdFBlckFzc2V0Q3VtdWxhdGl2ZQAAAAIAAAALcG9vbEFkZHJlc3MAAAAHYXNzZXRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAglcyVzJXNfXwUAAAALcG9vbEFkZHJlc3MCAAAAAl9fBQAAAAdhc3NldElkAgAAABRfX3NsaXBwYWdlQ3VtdWxhdGl2ZQEAAAAQa2V5RmFjdG9yeUNvbmZpZwAAAAACAAAAESVzX19mYWN0b3J5Q29uZmlnAQAAAClrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwAAAAEAAAATcG9vbENvbnRyYWN0QWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAACCVzJXMlc19fBQAAABNwb29sQ29udHJhY3RBZGRyZXNzAgAAACNfX21hcHBpbmdzX19wb29sQ29udHJhY3QyUG9vbEFzc2V0cwEAAAAfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZAAAAAEAAAARaW50ZXJuYWxCYXNlQXNzZXQJAAEsAAAAAgIAAAAoJXMlcyVkX19tYXBwaW5nc19faW50ZXJuYWwyYmFzZUFzc2V0SWRfXwkAAaQAAAABBQAAABFpbnRlcm5hbEJhc2VBc3NldAEAAAANa2V5UG9vbENvbmZpZwAAAAIAAAAJaUFtdEFzc2V0AAAAC2lQcmljZUFzc2V0CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACCVkJWQlc19fBQAAAAlpQW10QXNzZXQCAAAAAl9fBQAAAAtpUHJpY2VBc3NldAIAAAAIX19jb25maWcBAAAAE2tleUFsbFBvb2xzU2h1dGRvd24AAAAAAgAAAAwlc19fc2h1dGRvd24BAAAADWtleVBvb2xXZWlnaHQAAAABAAAAD2NvbnRyYWN0QWRkcmVzcwkAASwAAAACAgAAABIlcyVzX19wb29sV2VpZ2h0X18FAAAAD2NvbnRyYWN0QWRkcmVzcwAAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwkBAAAAEmtleUZhY3RvcnlDb250cmFjdAAAAAACAAAAFU5vIEZhY3RvcnkgQWNjIGZvdW5kLgEAAAAOY29udmVydEFzc2V0SWQAAAABAAAAB2Fzc2V0SWQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAAAdhc3NldElkAgAAAAVXQVZFUwUAAAAHYXNzZXRJZAEAAAARZGF0YVB1dEFjdGlvbkluZm8AAAAEAAAACWluQXNzZXRJZAAAAAppbkFzc2V0QW10AAAACHR4SGVpZ2h0AAAAC3R4VGltZXN0YW1wCQAEuQAAAAIJAARMAAAAAgIAAAAIJXMlZCVkJWQJAARMAAAAAgUAAAAJaW5Bc3NldElkCQAETAAAAAIJAAGkAAAAAQUAAAAKaW5Bc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAACHR4SGVpZ2h0CQAETAAAAAIJAAGkAAAAAQUAAAALdHhUaW1lc3RhbXAFAAAAA25pbAUAAAADU0VQAQAAABRkYXRhSW52ZXN0QWN0aW9uSW5mbwAAAAQAAAARb3V0QW1vdW50QXNzZXRBbXQAAAAQb3V0UHJpY2VBc3NldEFtdAAAAAh0eEhlaWdodAAAAAt0eFRpbWVzdGFtcAkABLkAAAACCQAETAAAAAICAAAACCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAARb3V0QW1vdW50QXNzZXRBbXQJAARMAAAAAgkAAaQAAAABBQAAABBvdXRQcmljZUFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAIdHhIZWlnaHQJAARMAAAAAgkAAaQAAAABBQAAAAt0eFRpbWVzdGFtcAUAAAADbmlsBQAAAANTRVABAAAACGFzU3RyaW5nAAAAAQAAAAN2YWwEAAAAByRtYXRjaDAFAAAAA3ZhbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAZ2YWxTdHIFAAAAByRtYXRjaDAFAAAABnZhbFN0cgkAAAIAAAABAgAAABhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBAAAAB3RvU2NhbGUAAAADAAAAA2FtdAAAAAhyZXNTY2FsZQAAAAhjdXJTY2FsZQkAAGsAAAADBQAAAANhbXQFAAAACHJlc1NjYWxlBQAAAAhjdXJTY2FsZQAAAAMAAAABaQEAAAALY29uc3RydWN0b3IAAAABAAAAD2ZhY3RvcnlDb250cmFjdAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAABJwZXJtaXNzaW9ucyBkZW5pZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleUZhY3RvcnlDb250cmFjdAAAAAAFAAAAD2ZhY3RvcnlDb250cmFjdAUAAAADbmlsAAAAAWkBAAAAA3B1dAAAAAAEAAAABHBvb2wJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAtwbXRBbXRBc3NldAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAKcG10QXNzZXRJZAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAtwbXRBbXRBc3NldAAAAAdhc3NldElkAgAAAAVXQVZFUwkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAALcG10QW10QXNzZXQAAAAHYXNzZXRJZAQAAAALcG10QXNzZXRBbXQIBQAAAAtwbXRBbXRBc3NldAAAAAZhbW91bnQEAAAACnBvb2xBc3NldHMJAAS1AAAAAgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAAAAAQUAAAAEcG9vbAIAAAAOSW52YWxpZCBjYWxsZXIFAAAAA1NFUAQAAAANYW1vdW50QXNzZXRJZAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACnBvb2xBc3NldHMAAAAAAAAAAAEEAAAADHByaWNlQXNzZXRJZAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACnBvb2xBc3NldHMAAAAAAAAAAAIEAAAAC2Ftb3VudEFzc2V0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZAAAAAEFAAAADWFtb3VudEFzc2V0SWQCAAAAEUNhbm5vdCBmaW5kIGFzc2V0BAAAAApwcmljZUFzc2V0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZAAAAAEFAAAADHByaWNlQXNzZXRJZAIAAAARQ2Fubm90IGZpbmQgYXNzZXQEAAAACHRvdGFsQW10CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAABZrZXlQb29sVG90YWxBbXRCeUFzc2V0AAAAAgUAAAAEcG9vbAUAAAAKcG10QXNzZXRJZAAAAAAAAAAAAAQAAAAVY3VtdWxhdGl2ZVNsaXBwYWdlQW10CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAACBrZXlTbGlwcGFnZUFtdFBlckFzc2V0Q3VtdWxhdGl2ZQAAAAIFAAAABHBvb2wFAAAACnBtdEFzc2V0SWQAAAAAAAAAAAAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADmtleVJlZ2lzdGVyUHV0AAAAAgUAAAAEcG9vbAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQEAAAARZGF0YVB1dEFjdGlvbkluZm8AAAAEBQAAAApwbXRBc3NldElkBQAAAAtwbXRBc3NldEFtdAUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFmtleVBvb2xUb3RhbEFtdEJ5QXNzZXQAAAACBQAAAARwb29sBQAAAApwbXRBc3NldElkCQAAZAAAAAIFAAAACHRvdGFsQW10BQAAAAtwbXRBc3NldEFtdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAIGtleVNsaXBwYWdlQW10UGVyQXNzZXRDdW11bGF0aXZlAAAAAgUAAAAEcG9vbAUAAAAKcG10QXNzZXRJZAkAAGQAAAACBQAAABVjdW11bGF0aXZlU2xpcHBhZ2VBbXQFAAAAC3BtdEFzc2V0QW10BQAAAANuaWwAAAABaQEAAAAGaW52ZXN0AAAAAQAAAA5wb29sQWRkcmVzc1N0cgQAAAALcG9vbEFkZHJlc3MJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABBQAAAA5wb29sQWRkcmVzc1N0cgIAAAAUaW52YWxpZCBwb29sIGFkZHJlc3MEAAAACnBvb2xBc3NldHMJAAS1AAAAAgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAAAAAQUAAAAOcG9vbEFkZHJlc3NTdHICAAAAFEludmFsaWQgcG9vbCBwYXNzZWQuBQAAAANTRVAEAAAABGFtSWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAB9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAAAAAQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACnBvb2xBc3NldHMAAAAAAAAAAAECAAAAFk5vIGFzc2V0IG1hcHBpbmcgZm91bmQEAAAABHBySWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAB9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAAAAAQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACnBvb2xBc3NldHMAAAAAAAAAAAICAAAAFk5vIGFzc2V0IG1hcHBpbmcgZm91bmQEAAAACWFtQmFsYW5jZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAWa2V5UG9vbFRvdGFsQW10QnlBc3NldAAAAAIFAAAADnBvb2xBZGRyZXNzU3RyBQAAAARhbUlkAAAAAAAAAAAABAAAAAlwckJhbGFuY2UJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAFmtleVBvb2xUb3RhbEFtdEJ5QXNzZXQAAAACBQAAAA5wb29sQWRkcmVzc1N0cgUAAAAEcHJJZAAAAAAAAAAAAAQAAAANZXN0QnlQclJlc3VsdAkAA/wAAAAEBQAAAAtwb29sQWRkcmVzcwIAAAAfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQkABEwAAAACBQAAAAlwckJhbGFuY2UFAAAAA25pbAUAAAADbmlsBAAAAA1lc3RCeUFtUmVzdWx0CQAD/AAAAAQFAAAAC3Bvb2xBZGRyZXNzAgAAACBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQkABEwAAAACBQAAAAlhbUJhbGFuY2UFAAAAA25pbAUAAAADbmlsBAAAAA5JZHhFc3RBbUFtb3VudAAAAAAAAAAABwQAAAAOSWR4RXN0UHJBbW91bnQAAAAAAAAAAAgEAAAACGVzdEFtQW10CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACCQAEtQAAAAIJAQAAAAhhc1N0cmluZwAAAAEFAAAADWVzdEJ5UHJSZXN1bHQFAAAAA1NFUAUAAAAOSWR4RXN0QW1BbW91bnQCAAAAJmZhaWwgdG8gcGFyc2UgZXN0aW1hdGVkIGFtQXNzZXQgYW1vdW50BAAAAAhlc3RQckFtdAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgkABLUAAAACCQEAAAAIYXNTdHJpbmcAAAABBQAAAA1lc3RCeUFtUmVzdWx0BQAAAANTRVAFAAAADklkeEVzdFByQW1vdW50AgAAACZmYWlsIHRvIHBhcnNlIGVzdGltYXRlZCBwckFzc2V0IGFtb3VudAQAAAALJHQwNjAzNDYxMzUDCQAAZwAAAAIFAAAACWFtQmFsYW5jZQUAAAAIZXN0QW1BbXQJAAUUAAAAAgUAAAAIZXN0QW1BbXQFAAAACXByQmFsYW5jZQkABRQAAAACBQAAAAlhbUJhbGFuY2UFAAAACGVzdFByQW10BAAAAAVhbUFtdAgFAAAACyR0MDYwMzQ2MTM1AAAAAl8xBAAAAAVwckFtdAgFAAAACyR0MDYwMzQ2MTM1AAAAAl8yBAAAAAlhbUFzc2V0SWQDCQAAAAAAAAIFAAAABGFtSWQCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAABGFtSWQEAAAACXByQXNzZXRJZAMJAAAAAAAAAgUAAAAEcHJJZAIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAAEcHJJZAQAAAAFbHBQdXQJAAP8AAAABAUAAAALcG9vbEFkZHJlc3MCAAAACnB1dEZvckZyZWUJAARMAAAAAgAAAAAAAAAD6AUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAlhbUFzc2V0SWQFAAAABWFtQW10CQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAlwckFzc2V0SWQFAAAABXByQW10BQAAAANuaWwDCQAAAAAAAAIFAAAABWxwUHV0BQAAAAVscFB1dAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARa2V5UmVnaXN0ZXJJbnZlc3QAAAACBQAAAA5wb29sQWRkcmVzc1N0cgkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQEAAAAUZGF0YUludmVzdEFjdGlvbkluZm8AAAAEBQAAAAVhbUFtdAUAAAAFcHJBbXQFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZrZXlQb29sVG90YWxBbXRCeUFzc2V0AAAAAgUAAAAOcG9vbEFkZHJlc3NTdHIFAAAABGFtSWQJAABlAAAAAgUAAAAJYW1CYWxhbmNlBQAAAAVhbUFtdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFmtleVBvb2xUb3RhbEFtdEJ5QXNzZXQAAAACBQAAAA5wb29sQWRkcmVzc1N0cgUAAAAEcHJJZAkAAGUAAAACBQAAAAlwckJhbGFuY2UFAAAABXByQW10BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXmvrONr", "chainId": 87, "height": 2822470, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5D7PVqAcYYB3qKEWBpWrp9t9B46BZ5xoNeGgerRX2juo Next: 39z1ientZBjTSRAaMoCnZw5LZbafnPsSTDp59bhY6Y3e Diff:
OldNewDifferences
114114
115115
116116 @Callable(i)
117-func invest (poolAddressStr) = if ((i.caller != this))
118- then throw("permissions denied")
119- else {
120- let poolAddress = valueOrErrorMessage(addressFromString(poolAddressStr), "invalid pool address")
121- let poolAssets = split(valueOrErrorMessage(getString(factoryContract, keyMappingPoolContractAddressToPoolAssets(poolAddressStr)), "Invalid pool passed."), SEP)
122- let amId = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(parseIntValue(poolAssets[1]))), "No asset mapping found")
123- let prId = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(parseIntValue(poolAssets[2]))), "No asset mapping found")
124- let amBalance = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(poolAddressStr, amId)), 0)
125- let prBalance = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(poolAddressStr, prId)), 0)
126- let estByPrResult = invoke(poolAddress, "evaluatePutByPriceAssetREADONLY", [prBalance], nil)
127- let estByAmResult = invoke(poolAddress, "evaluatePutByAmountAssetREADONLY", [amBalance], nil)
128- let IdxEstAmAmount = 7
129- let IdxEstPrAmount = 8
130- let estAmAmt = valueOrErrorMessage(parseIntValue(split(asString(estByPrResult), SEP)[IdxEstAmAmount]), "fail to parse estimated amAsset amount")
131- let estPrAmt = valueOrErrorMessage(parseIntValue(split(asString(estByAmResult), SEP)[IdxEstPrAmount]), "fail to parse estimated prAsset amount")
132- let $t060966197 = if ((amBalance >= estAmAmt))
133- then $Tuple2(estAmAmt, prBalance)
134- else $Tuple2(amBalance, estPrAmt)
135- let amAmt = $t060966197._1
136- let prAmt = $t060966197._2
137- let amAssetId = if ((amId == "WAVES"))
138- then unit
139- else fromBase58String(amId)
140- let prAssetId = if ((prId == "WAVES"))
141- then unit
142- else fromBase58String(prId)
143- let lpPut = invoke(poolAddress, "putForFree", [1000], [AttachedPayment(amAssetId, amAmt), AttachedPayment(prAssetId, prAmt)])
144- if ((lpPut == lpPut))
145- then [StringEntry(keyRegisterInvest(poolAddressStr, toBase58String(i.transactionId)), dataInvestActionInfo(amAmt, prAmt, height, lastBlock.timestamp)), IntegerEntry(keyPoolTotalAmtByAsset(poolAddressStr, amId), (amBalance - amAmt)), IntegerEntry(keyPoolTotalAmtByAsset(poolAddressStr, prId), (prBalance - prAmt))]
146- else throw("Strict value is not equal to itself.")
147- }
148-
149-
150-
151-@Callable(i)
152-func maintenance () = if ((i.caller != addressFromStringValue("3PHegHrsXUDd4brg4UXRKoWcz59aZBQ8tMi")))
153- then throw("permissions denied")
154- else {
155- let wavesUsdnPool = "3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g"
156- let usdtUsdnPool = "3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz"
157- let USDN = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
158- let USDT = "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
159- let WAVES = "WAVES"
160- let inPmt = value(i.payments[0])
161- let inAssetId = toBase58String(value(inPmt.assetId))
162- let inAmt = inPmt.amount
163- if ((size(i.payments) != 1))
164- then throw("exactly 1 payment is expected")
165- else if ((inAssetId != USDN))
166- then throw("Invalid asset in payment")
167- else if ((inAmt != 51710827))
168- then throw("Invalid amount in payment")
169- else {
170- let amBalanceWavesUsdn = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(wavesUsdnPool, WAVES)), 0)
171- let prBalanceWavesUsdn = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(wavesUsdnPool, USDN)), 0)
172- let amBalanceUsdtUsdn = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(usdtUsdnPool, USDT)), 0)
173- let prBalanceUsdtUsdn = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(usdtUsdnPool, USDN)), 0)
174-[IntegerEntry(keyPoolTotalAmtByAsset(wavesUsdnPool, WAVES), (amBalanceWavesUsdn - 353451352)), IntegerEntry(keyPoolTotalAmtByAsset(wavesUsdnPool, USDN), (prBalanceWavesUsdn - 51710827)), IntegerEntry(keyPoolTotalAmtByAsset(usdtUsdnPool, USDT), (amBalanceUsdtUsdn - 474741)), IntegerEntry(keyPoolTotalAmtByAsset(usdtUsdnPool, USDN), (prBalanceUsdtUsdn - 1334308))]
175- }
176- }
117+func invest (poolAddressStr) = {
118+ let poolAddress = valueOrErrorMessage(addressFromString(poolAddressStr), "invalid pool address")
119+ let poolAssets = split(valueOrErrorMessage(getString(factoryContract, keyMappingPoolContractAddressToPoolAssets(poolAddressStr)), "Invalid pool passed."), SEP)
120+ let amId = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(parseIntValue(poolAssets[1]))), "No asset mapping found")
121+ let prId = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(parseIntValue(poolAssets[2]))), "No asset mapping found")
122+ let amBalance = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(poolAddressStr, amId)), 0)
123+ let prBalance = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(poolAddressStr, prId)), 0)
124+ let estByPrResult = invoke(poolAddress, "evaluatePutByPriceAssetREADONLY", [prBalance], nil)
125+ let estByAmResult = invoke(poolAddress, "evaluatePutByAmountAssetREADONLY", [amBalance], nil)
126+ let IdxEstAmAmount = 7
127+ let IdxEstPrAmount = 8
128+ let estAmAmt = valueOrErrorMessage(parseIntValue(split(asString(estByPrResult), SEP)[IdxEstAmAmount]), "fail to parse estimated amAsset amount")
129+ let estPrAmt = valueOrErrorMessage(parseIntValue(split(asString(estByAmResult), SEP)[IdxEstPrAmount]), "fail to parse estimated prAsset amount")
130+ let $t060346135 = if ((amBalance >= estAmAmt))
131+ then $Tuple2(estAmAmt, prBalance)
132+ else $Tuple2(amBalance, estPrAmt)
133+ let amAmt = $t060346135._1
134+ let prAmt = $t060346135._2
135+ let amAssetId = if ((amId == "WAVES"))
136+ then unit
137+ else fromBase58String(amId)
138+ let prAssetId = if ((prId == "WAVES"))
139+ then unit
140+ else fromBase58String(prId)
141+ let lpPut = invoke(poolAddress, "putForFree", [1000], [AttachedPayment(amAssetId, amAmt), AttachedPayment(prAssetId, prAmt)])
142+ if ((lpPut == lpPut))
143+ then [StringEntry(keyRegisterInvest(poolAddressStr, toBase58String(i.transactionId)), dataInvestActionInfo(amAmt, prAmt, height, lastBlock.timestamp)), IntegerEntry(keyPoolTotalAmtByAsset(poolAddressStr, amId), (amBalance - amAmt)), IntegerEntry(keyPoolTotalAmtByAsset(poolAddressStr, prId), (prBalance - prAmt))]
144+ else throw("Strict value is not equal to itself.")
145+ }
177146
178147
179148 @Verifier(tx)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 let scale8 = 100000000
77
88 let poolStatsPriceKey = 4
99
1010 let idxPoolAddress = 1
1111
1212 let idxPoolStatus = 2
1313
1414 let idxPoolLPAssetId = 3
1515
1616 let idxAmtAssetId = 4
1717
1818 let idxPriceAssetId = 5
1919
2020 let idxAmtAssetDcm = 6
2121
2222 let idxPriceAssetDcm = 7
2323
2424 let idxIAmtAssetId = 8
2525
2626 let idxIPriceAssetId = 9
2727
2828 let idxLPAssetDcm = 10
2929
3030 let idxMatcherPublicKey = 11
3131
3232 func keyRegisterPut (poolAddress,txId) = ((("%s%s%s__P__" + poolAddress) + "__") + txId)
3333
3434
3535 func keyRegisterInvest (poolAddress,txId) = ((("%s%s%s__invest__" + poolAddress) + "__") + txId)
3636
3737
3838 func keyPoolTotalAmtByAsset (poolAddress,assetId) = ((("%s%s%s__total__" + poolAddress) + "__") + assetId)
3939
4040
4141 func keyFactoryContract () = "%s__factoryContract"
4242
4343
4444 func keySlippageAmtPerAssetCumulative (poolAddress,assetId) = (((("%s%s%s__" + poolAddress) + "__") + assetId) + "__slippageCumulative")
4545
4646
4747 func keyFactoryConfig () = "%s__factoryConfig"
4848
4949
5050 func keyMappingPoolContractAddressToPoolAssets (poolContractAddress) = (("%s%s%s__" + poolContractAddress) + "__mappings__poolContract2PoolAssets")
5151
5252
5353 func keyMappingsInternal2baseAssetId (internalBaseAsset) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(internalBaseAsset))
5454
5555
5656 func keyPoolConfig (iAmtAsset,iPriceAsset) = (((("%d%d%s__" + iAmtAsset) + "__") + iPriceAsset) + "__config")
5757
5858
5959 func keyAllPoolsShutdown () = "%s__shutdown"
6060
6161
6262 func keyPoolWeight (contractAddress) = ("%s%s__poolWeight__" + contractAddress)
6363
6464
6565 let factoryContract = addressFromStringValue(valueOrErrorMessage(getString(this, keyFactoryContract()), "No Factory Acc found."))
6666
6767 func convertAssetId (assetId) = if (!(isDefined(assetId)))
6868 then "WAVES"
6969 else assetId
7070
7171
7272 func dataPutActionInfo (inAssetId,inAssetAmt,txHeight,txTimestamp) = makeString(["%s%d%d%d", inAssetId, toString(inAssetAmt), toString(txHeight), toString(txTimestamp)], SEP)
7373
7474
7575 func dataInvestActionInfo (outAmountAssetAmt,outPriceAssetAmt,txHeight,txTimestamp) = makeString(["%d%d%d%d", toString(outAmountAssetAmt), toString(outPriceAssetAmt), toString(txHeight), toString(txTimestamp)], SEP)
7676
7777
7878 func asString (val) = match val {
7979 case valStr: String =>
8080 valStr
8181 case _ =>
8282 throw("fail to cast into String")
8383 }
8484
8585
8686 func toScale (amt,resScale,curScale) = fraction(amt, resScale, curScale)
8787
8888
8989 @Callable(i)
9090 func constructor (factoryContract) = if ((i.caller != this))
9191 then throw("permissions denied")
9292 else [StringEntry(keyFactoryContract(), factoryContract)]
9393
9494
9595
9696 @Callable(i)
9797 func put () = {
9898 let pool = toString(i.caller)
9999 let pmtAmtAsset = value(i.payments[0])
100100 let pmtAssetId = if (!(isDefined(pmtAmtAsset.assetId)))
101101 then "WAVES"
102102 else toBase58String(value(pmtAmtAsset.assetId))
103103 let pmtAssetAmt = pmtAmtAsset.amount
104104 let poolAssets = split(valueOrErrorMessage(getString(factoryContract, keyMappingPoolContractAddressToPoolAssets(pool)), "Invalid caller"), SEP)
105105 let amountAssetId = parseIntValue(poolAssets[1])
106106 let priceAssetId = parseIntValue(poolAssets[2])
107107 let amountAsset = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(amountAssetId)), "Cannot find asset")
108108 let priceAsset = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(priceAssetId)), "Cannot find asset")
109109 let totalAmt = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(pool, pmtAssetId)), 0)
110110 let cumulativeSlippageAmt = valueOrElse(getInteger(this, keySlippageAmtPerAssetCumulative(pool, pmtAssetId)), 0)
111111 [StringEntry(keyRegisterPut(pool, toBase58String(i.transactionId)), dataPutActionInfo(pmtAssetId, pmtAssetAmt, height, lastBlock.timestamp)), IntegerEntry(keyPoolTotalAmtByAsset(pool, pmtAssetId), (totalAmt + pmtAssetAmt)), IntegerEntry(keySlippageAmtPerAssetCumulative(pool, pmtAssetId), (cumulativeSlippageAmt + pmtAssetAmt))]
112112 }
113113
114114
115115
116116 @Callable(i)
117-func invest (poolAddressStr) = if ((i.caller != this))
118- then throw("permissions denied")
119- else {
120- let poolAddress = valueOrErrorMessage(addressFromString(poolAddressStr), "invalid pool address")
121- let poolAssets = split(valueOrErrorMessage(getString(factoryContract, keyMappingPoolContractAddressToPoolAssets(poolAddressStr)), "Invalid pool passed."), SEP)
122- let amId = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(parseIntValue(poolAssets[1]))), "No asset mapping found")
123- let prId = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(parseIntValue(poolAssets[2]))), "No asset mapping found")
124- let amBalance = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(poolAddressStr, amId)), 0)
125- let prBalance = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(poolAddressStr, prId)), 0)
126- let estByPrResult = invoke(poolAddress, "evaluatePutByPriceAssetREADONLY", [prBalance], nil)
127- let estByAmResult = invoke(poolAddress, "evaluatePutByAmountAssetREADONLY", [amBalance], nil)
128- let IdxEstAmAmount = 7
129- let IdxEstPrAmount = 8
130- let estAmAmt = valueOrErrorMessage(parseIntValue(split(asString(estByPrResult), SEP)[IdxEstAmAmount]), "fail to parse estimated amAsset amount")
131- let estPrAmt = valueOrErrorMessage(parseIntValue(split(asString(estByAmResult), SEP)[IdxEstPrAmount]), "fail to parse estimated prAsset amount")
132- let $t060966197 = if ((amBalance >= estAmAmt))
133- then $Tuple2(estAmAmt, prBalance)
134- else $Tuple2(amBalance, estPrAmt)
135- let amAmt = $t060966197._1
136- let prAmt = $t060966197._2
137- let amAssetId = if ((amId == "WAVES"))
138- then unit
139- else fromBase58String(amId)
140- let prAssetId = if ((prId == "WAVES"))
141- then unit
142- else fromBase58String(prId)
143- let lpPut = invoke(poolAddress, "putForFree", [1000], [AttachedPayment(amAssetId, amAmt), AttachedPayment(prAssetId, prAmt)])
144- if ((lpPut == lpPut))
145- then [StringEntry(keyRegisterInvest(poolAddressStr, toBase58String(i.transactionId)), dataInvestActionInfo(amAmt, prAmt, height, lastBlock.timestamp)), IntegerEntry(keyPoolTotalAmtByAsset(poolAddressStr, amId), (amBalance - amAmt)), IntegerEntry(keyPoolTotalAmtByAsset(poolAddressStr, prId), (prBalance - prAmt))]
146- else throw("Strict value is not equal to itself.")
147- }
148-
149-
150-
151-@Callable(i)
152-func maintenance () = if ((i.caller != addressFromStringValue("3PHegHrsXUDd4brg4UXRKoWcz59aZBQ8tMi")))
153- then throw("permissions denied")
154- else {
155- let wavesUsdnPool = "3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g"
156- let usdtUsdnPool = "3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz"
157- let USDN = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
158- let USDT = "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
159- let WAVES = "WAVES"
160- let inPmt = value(i.payments[0])
161- let inAssetId = toBase58String(value(inPmt.assetId))
162- let inAmt = inPmt.amount
163- if ((size(i.payments) != 1))
164- then throw("exactly 1 payment is expected")
165- else if ((inAssetId != USDN))
166- then throw("Invalid asset in payment")
167- else if ((inAmt != 51710827))
168- then throw("Invalid amount in payment")
169- else {
170- let amBalanceWavesUsdn = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(wavesUsdnPool, WAVES)), 0)
171- let prBalanceWavesUsdn = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(wavesUsdnPool, USDN)), 0)
172- let amBalanceUsdtUsdn = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(usdtUsdnPool, USDT)), 0)
173- let prBalanceUsdtUsdn = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(usdtUsdnPool, USDN)), 0)
174-[IntegerEntry(keyPoolTotalAmtByAsset(wavesUsdnPool, WAVES), (amBalanceWavesUsdn - 353451352)), IntegerEntry(keyPoolTotalAmtByAsset(wavesUsdnPool, USDN), (prBalanceWavesUsdn - 51710827)), IntegerEntry(keyPoolTotalAmtByAsset(usdtUsdnPool, USDT), (amBalanceUsdtUsdn - 474741)), IntegerEntry(keyPoolTotalAmtByAsset(usdtUsdnPool, USDN), (prBalanceUsdtUsdn - 1334308))]
175- }
176- }
117+func invest (poolAddressStr) = {
118+ let poolAddress = valueOrErrorMessage(addressFromString(poolAddressStr), "invalid pool address")
119+ let poolAssets = split(valueOrErrorMessage(getString(factoryContract, keyMappingPoolContractAddressToPoolAssets(poolAddressStr)), "Invalid pool passed."), SEP)
120+ let amId = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(parseIntValue(poolAssets[1]))), "No asset mapping found")
121+ let prId = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(parseIntValue(poolAssets[2]))), "No asset mapping found")
122+ let amBalance = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(poolAddressStr, amId)), 0)
123+ let prBalance = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(poolAddressStr, prId)), 0)
124+ let estByPrResult = invoke(poolAddress, "evaluatePutByPriceAssetREADONLY", [prBalance], nil)
125+ let estByAmResult = invoke(poolAddress, "evaluatePutByAmountAssetREADONLY", [amBalance], nil)
126+ let IdxEstAmAmount = 7
127+ let IdxEstPrAmount = 8
128+ let estAmAmt = valueOrErrorMessage(parseIntValue(split(asString(estByPrResult), SEP)[IdxEstAmAmount]), "fail to parse estimated amAsset amount")
129+ let estPrAmt = valueOrErrorMessage(parseIntValue(split(asString(estByAmResult), SEP)[IdxEstPrAmount]), "fail to parse estimated prAsset amount")
130+ let $t060346135 = if ((amBalance >= estAmAmt))
131+ then $Tuple2(estAmAmt, prBalance)
132+ else $Tuple2(amBalance, estPrAmt)
133+ let amAmt = $t060346135._1
134+ let prAmt = $t060346135._2
135+ let amAssetId = if ((amId == "WAVES"))
136+ then unit
137+ else fromBase58String(amId)
138+ let prAssetId = if ((prId == "WAVES"))
139+ then unit
140+ else fromBase58String(prId)
141+ let lpPut = invoke(poolAddress, "putForFree", [1000], [AttachedPayment(amAssetId, amAmt), AttachedPayment(prAssetId, prAmt)])
142+ if ((lpPut == lpPut))
143+ then [StringEntry(keyRegisterInvest(poolAddressStr, toBase58String(i.transactionId)), dataInvestActionInfo(amAmt, prAmt, height, lastBlock.timestamp)), IntegerEntry(keyPoolTotalAmtByAsset(poolAddressStr, amId), (amBalance - amAmt)), IntegerEntry(keyPoolTotalAmtByAsset(poolAddressStr, prId), (prBalance - prAmt))]
144+ else throw("Strict value is not equal to itself.")
145+ }
177146
178147
179148 @Verifier(tx)
180149 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
181150

github/deemru/w8io/6500d08 
40.23 ms