tx · 8nHt1e6wLaFg4xBwUUANrzfbmZ8vH68P9GXY85AYpnRB

3PCxF4JryswYYp9mpUtE725wjTgvpBmp3M9:  -0.01000000 Waves

2024.03.26 14:46 [4100892] smart account 3PCxF4JryswYYp9mpUtE725wjTgvpBmp3M9 > SELF 0.00000000 Waves

{ "type": 13, "id": "8nHt1e6wLaFg4xBwUUANrzfbmZ8vH68P9GXY85AYpnRB", "fee": 1000000, "feeAssetId": null, "timestamp": 1711453623771, "version": 2, "chainId": 87, "sender": "3PCxF4JryswYYp9mpUtE725wjTgvpBmp3M9", "senderPublicKey": "ABaPDrNzForWeg3KKG9KFKPWxuihEJxK9fjZ9nDfvE26", "proofs": [ "2HHE14pZ7PAspJtkjTvZpMsmPD2HvJ2FGz8L3mrkC5HRDumsnRSCNjz8PgSpcNSyUj9DtVKivUcb4S78K9QvqyqR" ], "script": "base64:BgIbCAISAwoBBBIDCgEEEgMKAQESBAoCCAESABIAGwAHaW52b2tlcgkBB0FkZHJlc3MBARoBVxiJGyRtL+JEpbK5LtBkI1AuKd9yMNoyWQAIVVNEVGRhcHAJAQdBZGRyZXNzAQEaAVf71JwncFfMM9/6I0kiQLjvSbBsjAn0RXkACFVTRENkYXBwCQEHQWRkcmVzcwEBGgFXz6aN3s2+zY3dv+vX54lGQL255gN5PxhyAAp6ZXJvQmlnSW50CQC2AgEAAAAEYmlnMAkAtgIBAAAABGJpZzEJALYCAQABAARiaWcyCQC2AgEAAgAEYmlnMwkAtgIBAAMABGJpZzQJALYCAQAEAAt3YXZlc1N0cmluZwIFV0FWRVMABUFtdWx0AgMxMDAAFWtleVNlbGVjdG9ySXNTaHV0ZG93bgIUc2VsZWN0b3JfaXNfc2h1dGRvd24ABGFtSWQCLDNheUgzUGhXTWtoRnN5U3NVVmNDOEJ2RmYxUXl4R0I1Qlp1VFB5VnRtUDR2AARwcklkAixHNVdXV3p6VnNXUnl6R2YzMnhvamJuZnA3Z1hiV3JncUpUOFJjVldFZkxtQwABQQIEMjAwMAAQa2V5VHJhZGluZ1ZvbHVtZQIddG90YWwgdHJhZGluZyB2b2x1bWUgY2VudGxldHMAA2ZlZQABAAhmZWVTY2FsZQCQTgACZDYAwIQ9AQ10cnlHZXRJbnRlZ2VyAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAmggCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAABD2Fzc2V0SWRUb1N0cmluZwEFaW5wdXQDCQAAAgUFaW5wdXQFBHVuaXQFC3dhdmVzU3RyaW5nCQDYBAEJAQV2YWx1ZQEFBWlucHV0AQlhYnNCaWdJbnQBA3ZhbAMJAL8CAgUKemVyb0JpZ0ludAUDdmFsCQC+AgEFA3ZhbAUDdmFsAQ1nZXRBY2NCYWxhbmNlAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQFBGFtSWQJAGQCCQDwBwIFBHRoaXMJANkEAQUHYXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTApAgUIVVNEQ2RhcHAJAKwCAgIJVVNFUl9MUF9fCQClCAEFBHRoaXMJAGQCCQDwBwIFBHRoaXMJANkEAQUHYXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTApAgUIVVNEVGRhcHAJAKwCAgIJVVNFUl9MUF9fCQClCAEFBHRoaXMBDHBhcnNlQXNzZXRJZAEFaW5wdXQDCQAAAgUFaW5wdXQFC3dhdmVzU3RyaW5nBQR1bml0CQDZBAEFBWlucHV0AQRnZXREAQJ4cAQDeHAwCQCRAwIFAnhwAAAEA3hwMQkAkQMCBQJ4cAABBAFzCQC3AgIFA3hwMAUDeHAxAwkAAAIFAXMFBGJpZzAFBGJpZzAEAWEJAQ1wYXJzZUludFZhbHVlAQUBQQQDYW5uCQBoAgUBYQACBAFwCQC8AgMFA3hwMAUDeHAxBQRiaWcxBAt4cDBfeHAxX25fbgkAvAIDBQFwBQRiaWc0BQRiaWcxBAVhbm5fcwkAvAIDCQC2AgEFA2FubgUBcwUEYmlnMQQFYW5uXzEJALYCAQkAZQIFA2FubgABCgEJY2FsY0ROZXh0AQFkBAJkZAkAvAIDBQFkBQFkBQRiaWcxBANkZGQJALwCAwUCZGQFAWQFBGJpZzEEAmRwCQC8AgMFA2RkZAUEYmlnMQULeHAwX3hwMV9uX24JALwCAwkAtwICBQVhbm5fcwkAvAIDBQJkcAUEYmlnMgUEYmlnMQUBZAkAtwICCQC8AgMFBWFubl8xBQFkBQRiaWcxCQC8AgMFBGJpZzMFAmRwBQRiaWcxCgEEY2FsYwIDYWNjAWkDCAUDYWNjAl8yBQNhY2MEAWQIBQNhY2MCXzEEBWROZXh0CQEJY2FsY0ROZXh0AQUBZAQIZERpZmZSYXcJALgCAgUFZE5leHQJAQV2YWx1ZQEFAWQEBWREaWZmAwkAvwICBQRiaWcwBQhkRGlmZlJhdwkAvgIBBQhkRGlmZlJhdwUIZERpZmZSYXcDCQDAAgIFBGJpZzEFBWREaWZmCQCUCgIFBWROZXh0BgkAlAoCBQVkTmV4dAcEA2FycgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgkAzAgCAA8JAMwIAgAQBQNuaWwECyR0MDI3NTcyODA1CgACJGwFA2FycgoAAiRzCQCQAwEF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BQckbWF0Y2gwAgdCb29sZWFuBAF4BQckbWF0Y2gwBQF4BwYBaQEIc2h1dGRvd24BCHNodXRkb3duAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgILaXNfc2h1dGRvd24FCHNodXRkb3duBQNuaWwJAAIBAgphZG1pbiBvbmx5AWkBEHNodXRkb3duU2VsZWN0b3IBCHNodXRkb3duAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUVa2V5U2VsZWN0b3JJc1NodXRkb3duBQhzaHV0ZG93bgUDbmlsCQACAQIKYWRtaW4gb25seQFpAQRzd2FwAQxhbW91bnRPdXRNaW4DAwkAAAIJAQppc1NodXRkb3duAAYJAQIhPQIIBQFpBmNhbGxlcgkBB0FkZHJlc3MBARoBV44d5lHKOCPOw5HDxFaL1YPTb4hW/zbdCwcJAAIBAhRjb250cmFjdCBpcyBzaHV0ZG93bgQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECGFtb3VudEluAwkAZgIJAGkCBQJkNgAKCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAAgECC21pbmltdW0gMC4xCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQNZmVlUG9vbEFtb3VudAkAawMFCGFtb3VudEluBQNmZWUFCGZlZVNjYWxlBA1jbGVhbkFtb3VudEluCQBlAgUIYW1vdW50SW4FDWZlZVBvb2xBbW91bnQEB2Fzc2V0SW4DAwkAAAIJAQ9hc3NldElkVG9TdHJpbmcBCAUDcG10B2Fzc2V0SWQFBGFtSWQGCQAAAgkBD2Fzc2V0SWRUb1N0cmluZwEIBQNwbXQHYXNzZXRJZAUEcHJJZAkBD2Fzc2V0SWRUb1N0cmluZwEIBQNwbXQHYXNzZXRJZAkAAgECDndyb25nIGFzc2V0IGlkBAlpc1JldmVyc2UDCQAAAgUHYXNzZXRJbgUEYW1JZAcGBAhBc3NldE91dAMJAAACBQdhc3NldEluBQRhbUlkBQRwcklkBQRhbUlkBAskdDA2MDU2NjQzNgMJAAACBQlpc1JldmVyc2UHBAhhc3NldE91dAUEcHJJZAQTcG9vbEFtb3VudEluQmFsYW5jZQkAtwICCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAkAtgIBBQ1jbGVhbkFtb3VudEluCQCUCgIFCGFzc2V0T3V0BRNwb29sQW1vdW50SW5CYWxhbmNlBAhhc3NldE91dAUEYW1JZAQTcG9vbEFtb3VudEluQmFsYW5jZQkAtwICCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAkAtgIBBQ1jbGVhbkFtb3VudEluCQCUCgIFCGFzc2V0T3V0BRNwb29sQW1vdW50SW5CYWxhbmNlBAhhc3NldE91dAgFCyR0MDYwNTY2NDM2Al8xBBNwb29sQW1vdW50SW5CYWxhbmNlCAULJHQwNjA1NjY0MzYCXzIEAnhwAwkAAAIFCWlzUmV2ZXJzZQcJAMwIAgkAuAICCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAzAgCCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAUDbmlsCQDMCAIJALYCAQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkCQDMCAIJALgCAgkAtgIBCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQJALYCAQgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFA25pbAQBRAkBBGdldEQBBQJ4cAQBeQkBBGdldFkDBQlpc1JldmVyc2UFAUQJALYCAQAABAJkeQkAuAICCQC4AgIJALYCAQkBDWdldEFjY0JhbGFuY2UBBQhBc3NldE91dAUBeQkAtgIBAAEEC3RvdGFsR2V0UmF3CQCWAwEJAMwIAgAACQDMCAIJAKADAQUCZHkFA25pbAQIY2hlY2tNaW4DCQBnAgULdG90YWxHZXRSYXcFDGFtb3VudE91dE1pbgYJAAIBAixFeGNoYW5nZSByZXN1bHQgaXMgZmV3ZXIgY29pbnMgdGhhbiBleHBlY3RlZAMJAAACBQhjaGVja01pbgUIY2hlY2tNaW4EBW5ld1hwAwkAAAIFCWlzUmV2ZXJzZQcJAMwIAgkAtwICCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAkAtgIBBQ1mZWVQb29sQW1vdW50CQDMCAIJALgCAgkAtgIBCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQFAmR5BQNuaWwJAMwIAgkAuAICCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAUCZHkJAMwIAgkAtwICCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAkAtgIBBQ1mZWVQb29sQW1vdW50BQNuaWwEBG5ld0QJAQRnZXREAQUFbmV3WHAEBmNoZWNrRAMJAMACAgUEbmV3RAUBRAYJAAIBAhRuZXcgRCBpcyBmZXdlciBlcnJvcgMJAAACBQZjaGVja0QFBmNoZWNrRAQHdW5zdGFrZQMJAAACBQhBc3NldE91dAUEYW1JZAMJAGYCBQt0b3RhbEdldFJhdwkA8AcCBQR0aGlzASAmayw0f5EMiLgWXB633gaEsrOhJTNLbYg6Ch9lNW5viwkA/AcEBQhVU0RDZGFwcAIHdW5zdGFrZQkAzAgCCQBlAgULdG90YWxHZXRSYXcJAPAHAgUEdGhpcwEgJmssNH+RDIi4Flwet94GhLKzoSUzS22IOgofZTVub4sFA25pbAUDbmlsBQR1bml0AwkAZgIFC3RvdGFsR2V0UmF3CQDwBwIFBHRoaXMBIOAG/jNgURmsDaH0/Lr83+C6nyVqY4hD5jTlJpTwnV8PCQD8BwQFCFVTRFRkYXBwAgd1bnN0YWtlCQDMCAIJAGUCBQt0b3RhbEdldFJhdwkA8AcCBQR0aGlzASDgBv4zYFEZrA2h9Py6/N/gup8lamOIQ+Y05SaU8J1fDwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQFc3Rha2UDCQAAAgUIQXNzZXRPdXQFBGFtSWQJAPwHBAUIVVNEVGRhcHACBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEcHJJZAkA8AcCBQR0aGlzCQDZBAEFBHBySWQFA25pbAkA/AcEBQhVU0RDZGFwcAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRhbUlkCQDwBwIFBHRoaXMJANkEAQUEYW1JZAUDbmlsAwkAAAIFBXN0YWtlBQVzdGFrZQQIc2VsZWN0b3IDCQAAAgkAmwgCBQR0aGlzBRVrZXlTZWxlY3RvcklzU2h1dGRvd24GBQR1bml0CQD8BwQFB2ludm9rZXICCHNlbGVjdG9yBQNuaWwFA25pbAMJAAACBQhzZWxlY3RvcgUIc2VsZWN0b3IJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQt0b3RhbEdldFJhdwkBDHBhcnNlQXNzZXRJZAEFCGFzc2V0T3V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlUcmFkaW5nVm9sdW1lCQBkAgUIYW1vdW50SW4JAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUQa2V5VHJhZGluZ1ZvbHVtZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHJlYWRTd2FwAgdBc3NldEluCEFtb3VudEluAwMJAAACCQEKaXNTaHV0ZG93bgAGCQECIT0CCAUBaQZjYWxsZXIJAQdBZGRyZXNzAQEaAVeOHeZRyjgjzsORw8RWi9WD02+IVv823QsHCQACAQIUY29udHJhY3QgaXMgc2h1dGRvd24EA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAhhbW91bnRJbgMJAGYCCQBpAgUCZDYACgkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAAIBAgttaW5pbXVtIDAuMQkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEDWZlZVBvb2xBbW91bnQJAGsDBQhhbW91bnRJbgUDZmVlBQhmZWVTY2FsZQQNY2xlYW5BbW91bnRJbgkAZQIFCGFtb3VudEluBQ1mZWVQb29sQW1vdW50BAdhc3NldEluAwMJAAACCQEPYXNzZXRJZFRvU3RyaW5nAQgFA3BtdAdhc3NldElkBQRhbUlkBgkAAAIJAQ9hc3NldElkVG9TdHJpbmcBCAUDcG10B2Fzc2V0SWQFBHBySWQJAQ9hc3NldElkVG9TdHJpbmcBCAUDcG10B2Fzc2V0SWQJAAIBAg53cm9uZyBhc3NldCBpZAQJaXNSZXZlcnNlAwkAAAIFB2Fzc2V0SW4FBGFtSWQHBgQIQXNzZXRPdXQDCQAAAgUHYXNzZXRJbgUEYW1JZAUEcHJJZAUEYW1JZAQLJHQwOTE4Nzk1NjcDCQAAAgUJaXNSZXZlcnNlBwQIYXNzZXRPdXQFBHBySWQEE3Bvb2xBbW91bnRJbkJhbGFuY2UJALcCAgkAtgIBCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQJALYCAQUNY2xlYW5BbW91bnRJbgkAlAoCBQhhc3NldE91dAUTcG9vbEFtb3VudEluQmFsYW5jZQQIYXNzZXRPdXQFBGFtSWQEE3Bvb2xBbW91bnRJbkJhbGFuY2UJALcCAgkAtgIBCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQJALYCAQUNY2xlYW5BbW91bnRJbgkAlAoCBQhhc3NldE91dAUTcG9vbEFtb3VudEluQmFsYW5jZQQIYXNzZXRPdXQIBQskdDA5MTg3OTU2NwJfMQQTcG9vbEFtb3VudEluQmFsYW5jZQgFCyR0MDkxODc5NTY3Al8yBAJ4cAMJAAACBQlpc1JldmVyc2UHCQDMCAIJALgCAgkAtgIBCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQJALYCAQgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAMwIAgkAtgIBCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQFA25pbAkAzAgCCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAkAzAgCCQC4AgIJALYCAQkBDWdldEFjY0JhbGFuY2UBBQRwcklkCQC2AgEICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQNuaWwEAUQJAQRnZXREAQUCeHAEAXkJAQRnZXRZAwUJaXNSZXZlcnNlBQFECQC2AgEAAAQCZHkJALgCAgkAuAICCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUIQXNzZXRPdXQFAXkJALYCAQABBAt0b3RhbEdldFJhdwkAlgMBCQDMCAIAAAkAzAgCCQCgAwEFAmR5BQNuaWwEBW5ld1hwAwkAAAIFCWlzUmV2ZXJzZQcJAMwIAgkAtwICCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAkAtgIBBQ1mZWVQb29sQW1vdW50CQDMCAIJALgCAgkAtgIBCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQFAmR5BQNuaWwJAMwIAgkAuAICCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAUCZHkJAMwIAgkAtwICCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAkAtgIBBQ1mZWVQb29sQW1vdW50BQNuaWwEBG5ld0QJAQRnZXREAQUFbmV3WHAEBmNoZWNrRAMJAMACAgUEbmV3RAUBRAYJAAIBAhRuZXcgRCBpcyBmZXdlciBlcnJvcgMJAAACBQZjaGVja0QFBmNoZWNrRAkAzAgCCQELU3RyaW5nRW50cnkCAhBhc3NldCBpZCBwYXltZW50BQdBc3NldEluCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgthbW91bnQgcGFpZAUIQW1vdW50SW4JAMwIAgkBDEludGVnZXJFbnRyeQICJGFtb3VudCBwYWlkIHJvdW5kZWQgd2l0aG91dCBkZWNpbWFscwkAaQIFCEFtb3VudEluBQJkNgkAzAgCCQELU3RyaW5nRW50cnkCAhNhc3NldCBpZCB0byByZWNlaXZlBQhBc3NldE91dAkAzAgCCQEMSW50ZWdlckVudHJ5AgIRYW1vdW50IHRvIHJlY2VpdmUFC3RvdGFsR2V0UmF3CQDMCAIJAQxJbnRlZ2VyRW50cnkCAiphbW91bnQgdG8gcmVjZWl2ZSByb3VuZGVkIHdpdGhvdXQgZGVjaW1hbHMJAGkCBQt0b3RhbEdldFJhdwUCZDYJAMwIAgkBDEludGVnZXJFbnRyeQICBXByaWNlCQBrAwUCZDYFCEFtb3VudEluBQt0b3RhbEdldFJhdwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDGJhbGFuY2VfaW5mbwAJAMwIAgkBDEludGVnZXJFbnRyeQICBFVTREMJAGkCCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQFAmQ2CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgRVU0RUCQBpAgkBDWdldEFjY0JhbGFuY2UBBQRwcklkBQJkNgkAzAgCCQEMSW50ZWdlckVudHJ5AgIJVVNEIHRvdGFsCQBpAgkAZAIJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAkBDWdldEFjY0JhbGFuY2UBBQRwcklkBQJkNgUDbmlsAWkBFHJlc2V0X3RyYWRpbmdfdm9sdW1lAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleVRyYWRpbmdWb2x1bWUAAAUDbmlsALdkqOY=", "height": 4100892, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3F1cahotfKCPgpGfgNUhBEmz2guPbCQm4e5XUJhLkw3J Next: EiCCoqeM1em1NnsWVDN9GPPKNxUEabcAQqpWyaKLhwqL Diff:
OldNewDifferences
3131
3232 let o = "2000"
3333
34-let p = 1
34+let p = "total trading volume centlets"
3535
36-let q = 10000
36+let q = 1
3737
38-let r = 1000000
38+let r = 10000
3939
40-func s (t) = if ((t == unit))
41- then j
42- else toBase58String(value(t))
40+let s = 1000000
41+
42+func t (u,v) = {
43+ let w = getInteger(u, v)
44+ if ($isInstanceOf(w, "Int"))
45+ then {
46+ let x = w
47+ x
48+ }
49+ else 0
50+ }
4351
4452
45-func u (v) = if ((d > v))
46- then -(v)
47- else v
53+func y (z) = if ((z == unit))
54+ then j
55+ else toBase58String(value(z))
4856
4957
50-func w (x) = if ((x == m))
51- then (assetBalance(this, fromBase58String(x)) + getIntegerValue(c, ("USER_LP__" + toString(this))))
52- else (assetBalance(this, fromBase58String(x)) + getIntegerValue(b, ("USER_LP__" + toString(this))))
58+func A (B) = if ((d > B))
59+ then -(B)
60+ else B
5361
5462
55-func y (t) = if ((t == j))
56- then unit
57- else fromBase58String(t)
63+func C (D) = if ((D == m))
64+ then (assetBalance(this, fromBase58String(D)) + getIntegerValue(c, ("USER_LP__" + toString(this))))
65+ else (assetBalance(this, fromBase58String(D)) + getIntegerValue(b, ("USER_LP__" + toString(this))))
5866
5967
60-func z (A) = {
61- let B = A[0]
62- let C = A[1]
63- let D = (B + C)
64- if ((D == e))
68+func E (z) = if ((z == j))
69+ then unit
70+ else fromBase58String(z)
71+
72+
73+func F (G) = {
74+ let H = G[0]
75+ let I = G[1]
76+ let J = (H + I)
77+ if ((J == e))
6578 then e
6679 else {
67- let E = parseIntValue(o)
68- let F = (E * 2)
69- let G = fraction(B, C, f)
70- let H = fraction(G, i, f)
71- let I = fraction(toBigInt(F), D, f)
72- let J = toBigInt((F - 1))
73- func K (L) = {
74- let M = fraction(L, L, f)
75- let N = fraction(M, L, f)
76- let O = fraction(N, f, H)
77- fraction((I + fraction(O, g, f)), L, (fraction(J, L, f) + fraction(h, O, f)))
80+ let K = parseIntValue(o)
81+ let L = (K * 2)
82+ let M = fraction(H, I, f)
83+ let N = fraction(M, i, f)
84+ let O = fraction(toBigInt(L), J, f)
85+ let P = toBigInt((L - 1))
86+ func Q (R) = {
87+ let S = fraction(R, R, f)
88+ let T = fraction(S, R, f)
89+ let U = fraction(T, f, N)
90+ fraction((O + fraction(U, g, f)), R, (fraction(P, R, f) + fraction(h, U, f)))
7891 }
7992
80- func P (Q,R) = if (Q._2)
81- then Q
93+ func V (W,X) = if (W._2)
94+ then W
8295 else {
83- let L = Q._1
84- let S = K(L)
85- let T = (S - value(L))
86- let U = if ((e > T))
87- then -(T)
88- else T
89- if ((f >= U))
90- then $Tuple2(S, true)
91- else $Tuple2(S, false)
96+ let R = W._1
97+ let Y = Q(R)
98+ let Z = (Y - value(R))
99+ let aa = if ((e > Z))
100+ then -(Z)
101+ else Z
102+ if ((f >= aa))
103+ then $Tuple2(Y, true)
104+ else $Tuple2(Y, false)
92105 }
93106
94- let V = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
95- let W = {
96- let X = V
97- let Y = size(X)
98- let Z = $Tuple2(D, false)
99- func aa (ab,ac) = if ((ac >= Y))
100- then ab
101- else P(ab, X[ac])
107+ let ab = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
108+ let ac = {
109+ let ad = ab
110+ let ae = size(ad)
111+ let af = $Tuple2(J, false)
112+ func ag (ah,ai) = if ((ai >= ae))
113+ then ah
114+ else V(ah, ad[ai])
102115
103- func ad (ab,ac) = if ((ac >= Y))
104- then ab
116+ func aj (ah,ai) = if ((ai >= ae))
117+ then ah
105118 else throw("List size exceeds 17")
106119
107- ad(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(Z, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
120+ aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
108121 }
109- let L = W._1
110- let ae = W._2
111- if (ae)
112- then L
113- else throw(("D calculation error, D = " + toString(L)))
122+ let R = ac._1
123+ let ak = ac._2
124+ if (ak)
125+ then R
126+ else throw(("D calculation error, D = " + toString(R)))
114127 }
115128 }
116129
117130
118-func af (ag,ah,ai) = {
119- let aj = g
120- let ak = parseBigIntValue(k)
121- let E = (parseBigIntValue(o) * ak)
122- let A = if ((ag == false))
123- then [(toBigInt(w(m)) + ai), toBigInt(w(n))]
124- else [(toBigInt(w(n)) + ai), toBigInt(w(m))]
125- let al = A[0]
126- let D = al
127- let F = (E * aj)
128- let am = (((((ah * ah) / (al * aj)) * ah) * ak) / (F * aj))
129- let an = ((D + ((ah * ak) / F)) - ah)
130- func P (Q,ao) = {
131- let ap = Q
132- let aq = ap._1
133- let ae = ap._2
134- if ((ae != unit))
135- then Q
131+func al (am,an,ao) = {
132+ let ap = g
133+ let aq = parseBigIntValue(k)
134+ let K = (parseBigIntValue(o) * aq)
135+ let G = if ((am == false))
136+ then [(toBigInt(C(m)) + ao), toBigInt(C(n))]
137+ else [(toBigInt(C(n)) + ao), toBigInt(C(m))]
138+ let ar = G[0]
139+ let J = ar
140+ let L = (K * ap)
141+ let as = (((((an * an) / (ar * ap)) * an) * aq) / (L * ap))
142+ let x = ((J + ((an * aq) / L)) - an)
143+ func V (W,at) = {
144+ let au = W
145+ let av = au._1
146+ let ak = au._2
147+ if ((ak != unit))
148+ then W
136149 else {
137- let ar = (((aq * aq) + am) / ((g * aq) + an))
138- let as = u((ar - value(aq)))
139- if ((f >= as))
140- then $Tuple2(ar, ao)
141- else $Tuple2(ar, unit)
150+ let aw = (((av * av) + as) / ((g * av) + x))
151+ let ax = A((aw - value(av)))
152+ if ((f >= ax))
153+ then $Tuple2(aw, at)
154+ else $Tuple2(aw, unit)
142155 }
143156 }
144157
145- let V = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
146- let at = {
147- let X = V
148- let Y = size(X)
149- let Z = $Tuple2(ah, unit)
150- func aa (ab,ac) = if ((ac >= Y))
151- then ab
152- else P(ab, X[ac])
158+ let ab = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
159+ let ay = {
160+ let ad = ab
161+ let ae = size(ad)
162+ let af = $Tuple2(an, unit)
163+ func ag (ah,ai) = if ((ai >= ae))
164+ then ah
165+ else V(ah, ad[ai])
153166
154- func ad (ab,ac) = if ((ac >= Y))
155- then ab
167+ func aj (ah,ai) = if ((ai >= ae))
168+ then ah
156169 else throw("List size exceeds 15")
157170
158- ad(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(Z, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
171+ aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
159172 }
160- let aq = at._1
161- let ae = at._2
162- if ((ae != unit))
163- then aq
164- else throw(("Y calculation error, Y = " + toString(aq)))
173+ let av = ay._1
174+ let ak = ay._2
175+ if ((ak != unit))
176+ then av
177+ else throw(("Y calculation error, Y = " + toString(av)))
165178 }
166179
167180
168-func au () = {
169- let av = getBoolean(this, "is_shutdown")
170- if ($isInstanceOf(av, "Boolean"))
181+func az () = {
182+ let w = getBoolean(this, "is_shutdown")
183+ if ($isInstanceOf(w, "Boolean"))
171184 then {
172- let al = av
173- al
185+ let ar = w
186+ ar
174187 }
175188 else false
176189 }
177190
178191
179-@Callable(R)
180-func shutdown (aw) = if ((R.caller == this))
181- then [BooleanEntry("is_shutdown", aw)]
192+@Callable(X)
193+func shutdown (aA) = if ((X.caller == this))
194+ then [BooleanEntry("is_shutdown", aA)]
182195 else throw("admin only")
183196
184197
185198
186-@Callable(R)
187-func shutdownSelector (aw) = if ((R.caller == this))
188- then [BooleanEntry(l, aw)]
199+@Callable(X)
200+func shutdownSelector (aA) = if ((X.caller == this))
201+ then [BooleanEntry(l, aA)]
189202 else throw("admin only")
190203
191204
192205
193-@Callable(R)
194-func swap (ax) = if (if ((au() == true))
195- then (R.caller != Address(base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk'))
206+@Callable(X)
207+func swap (aB) = if (if ((az() == true))
208+ then (X.caller != Address(base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk'))
196209 else false)
197210 then throw("contract is shutdown")
198211 else {
199- let ay = value(R.payments[0])
200- let az = if (((r / 10) > value(R.payments[0].amount)))
212+ let aC = value(X.payments[0])
213+ let aD = if (((s / 10) > value(X.payments[0].amount)))
201214 then throw("minimum 0.1")
202- else value(R.payments[0].amount)
203- let aA = fraction(az, p, q)
204- let aB = (az - aA)
205- let aC = if (if ((s(ay.assetId) == m))
215+ else value(X.payments[0].amount)
216+ let aE = fraction(aD, q, r)
217+ let aF = (aD - aE)
218+ let aG = if (if ((y(aC.assetId) == m))
206219 then true
207- else (s(ay.assetId) == n))
208- then s(ay.assetId)
220+ else (y(aC.assetId) == n))
221+ then y(aC.assetId)
209222 else throw("wrong asset id")
210- let ag = if ((aC == m))
223+ let am = if ((aG == m))
211224 then false
212225 else true
213- let aD = if ((aC == m))
226+ let aH = if ((aG == m))
214227 then n
215228 else m
216- let aE = if ((ag == false))
229+ let aI = if ((am == false))
217230 then {
218- let aF = n
219- let ai = (toBigInt(w(m)) + toBigInt(aB))
220- $Tuple2(aF, ai)
231+ let aJ = n
232+ let ao = (toBigInt(C(m)) + toBigInt(aF))
233+ $Tuple2(aJ, ao)
221234 }
222235 else {
223- let aF = m
224- let ai = (toBigInt(w(n)) + toBigInt(aB))
225- $Tuple2(aF, ai)
236+ let aJ = m
237+ let ao = (toBigInt(C(n)) + toBigInt(aF))
238+ $Tuple2(aJ, ao)
226239 }
227- let aF = aE._1
228- let ai = aE._2
229- let A = if ((ag == false))
230- then [(toBigInt(w(m)) - toBigInt(value(R.payments[0]).amount)), toBigInt(w(n))]
231- else [toBigInt(w(m)), (toBigInt(w(n)) - toBigInt(value(R.payments[0]).amount))]
232- let ah = z(A)
233- let aq = af(ag, ah, toBigInt(0))
234- let aG = ((toBigInt(w(aD)) - aq) - toBigInt(1))
235- let aH = max([0, toInt(aG)])
236- let aI = if ((aH >= ax))
240+ let aJ = aI._1
241+ let ao = aI._2
242+ let G = if ((am == false))
243+ then [(toBigInt(C(m)) - toBigInt(value(X.payments[0]).amount)), toBigInt(C(n))]
244+ else [toBigInt(C(m)), (toBigInt(C(n)) - toBigInt(value(X.payments[0]).amount))]
245+ let an = F(G)
246+ let av = al(am, an, toBigInt(0))
247+ let aK = ((toBigInt(C(aH)) - av) - toBigInt(1))
248+ let aL = max([0, toInt(aK)])
249+ let aM = if ((aL >= aB))
237250 then true
238251 else throw("Exchange result is fewer coins than expected")
239- if ((aI == aI))
252+ if ((aM == aM))
240253 then {
241- let aJ = if ((ag == false))
242- then [(toBigInt(w(m)) + toBigInt(aA)), (toBigInt(w(n)) - aG)]
243- else [(toBigInt(w(m)) - aG), (toBigInt(w(n)) + toBigInt(aA))]
244- let aK = z(aJ)
245- let aL = if ((aK >= ah))
254+ let aN = if ((am == false))
255+ then [(toBigInt(C(m)) + toBigInt(aE)), (toBigInt(C(n)) - aK)]
256+ else [(toBigInt(C(m)) - aK), (toBigInt(C(n)) + toBigInt(aE))]
257+ let aO = F(aN)
258+ let aP = if ((aO >= an))
246259 then true
247260 else throw("new D is fewer error")
248- if ((aL == aL))
261+ if ((aP == aP))
249262 then {
250- let aM = if ((aD == m))
251- then if ((aH > assetBalance(this, base58'3ayH3PhWMkhFsySsUVcC8BvFf1QyxGB5BZuTPyVtmP4v')))
252- then invoke(c, "unstake", [(aH - assetBalance(this, base58'3ayH3PhWMkhFsySsUVcC8BvFf1QyxGB5BZuTPyVtmP4v'))], nil)
263+ let aQ = if ((aH == m))
264+ then if ((aL > assetBalance(this, base58'3ayH3PhWMkhFsySsUVcC8BvFf1QyxGB5BZuTPyVtmP4v')))
265+ then invoke(c, "unstake", [(aL - assetBalance(this, base58'3ayH3PhWMkhFsySsUVcC8BvFf1QyxGB5BZuTPyVtmP4v'))], nil)
253266 else unit
254- else if ((aH > assetBalance(this, base58'G5WWWzzVsWRyzGf32xojbnfp7gXbWrgqJT8RcVWEfLmC')))
255- then invoke(b, "unstake", [(aH - assetBalance(this, base58'G5WWWzzVsWRyzGf32xojbnfp7gXbWrgqJT8RcVWEfLmC'))], nil)
267+ else if ((aL > assetBalance(this, base58'G5WWWzzVsWRyzGf32xojbnfp7gXbWrgqJT8RcVWEfLmC')))
268+ then invoke(b, "unstake", [(aL - assetBalance(this, base58'G5WWWzzVsWRyzGf32xojbnfp7gXbWrgqJT8RcVWEfLmC'))], nil)
256269 else unit
257- if ((aM == aM))
270+ if ((aQ == aQ))
258271 then {
259- let aN = if ((aD == m))
272+ let aR = if ((aH == m))
260273 then invoke(b, "stake", nil, [AttachedPayment(fromBase58String(n), assetBalance(this, fromBase58String(n)))])
261274 else invoke(c, "stake", nil, [AttachedPayment(fromBase58String(m), assetBalance(this, fromBase58String(m)))])
262- if ((aN == aN))
275+ if ((aR == aR))
263276 then {
264- let aO = if ((getBoolean(this, l) == true))
277+ let aS = if ((getBoolean(this, l) == true))
265278 then unit
266279 else invoke(a, "selector", nil, nil)
267- if ((aO == aO))
268- then [ScriptTransfer(R.caller, aH, y(aF))]
280+ if ((aS == aS))
281+ then [ScriptTransfer(X.caller, aL, E(aJ)), IntegerEntry(p, (aD + t(this, p)))]
269282 else throw("Strict value is not equal to itself.")
270283 }
271284 else throw("Strict value is not equal to itself.")
279292
280293
281294
282-@Callable(R)
283-func readSwap (aP,aQ,aD) = if (if ((au() == true))
284- then (R.caller != Address(base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk'))
295+@Callable(X)
296+func readSwap (aT,aU) = if (if ((az() == true))
297+ then (X.caller != Address(base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk'))
285298 else false)
286299 then throw("contract is shutdown")
287300 else {
288- let az = aQ
289- let aA = fraction(az, p, q)
290- let aB = (az - aA)
291- let aC = aP
292- let ag = if ((aC == m))
301+ let aC = value(X.payments[0])
302+ let aD = if (((s / 10) > value(X.payments[0].amount)))
303+ then throw("minimum 0.1")
304+ else value(X.payments[0].amount)
305+ let aE = fraction(aD, q, r)
306+ let aF = (aD - aE)
307+ let aG = if (if ((y(aC.assetId) == m))
308+ then true
309+ else (y(aC.assetId) == n))
310+ then y(aC.assetId)
311+ else throw("wrong asset id")
312+ let am = if ((aG == m))
293313 then false
294314 else true
295- let aR = if ((ag == false))
315+ let aH = if ((aG == m))
316+ then n
317+ else m
318+ let aV = if ((am == false))
296319 then {
297- let aF = n
298- let ai = (toBigInt(w(m)) + toBigInt(aB))
299- $Tuple2(aF, ai)
320+ let aJ = n
321+ let ao = (toBigInt(C(m)) + toBigInt(aF))
322+ $Tuple2(aJ, ao)
300323 }
301324 else {
302- let aF = m
303- let ai = (toBigInt(w(n)) + toBigInt(aB))
304- $Tuple2(aF, ai)
325+ let aJ = m
326+ let ao = (toBigInt(C(n)) + toBigInt(aF))
327+ $Tuple2(aJ, ao)
305328 }
306- let aF = aR._1
307- let ai = aR._2
308- let A = if ((ag == false))
309- then [(toBigInt(w(m)) - toBigInt(value(R.payments[0]).amount)), toBigInt(w(n))]
310- else [toBigInt(w(m)), (toBigInt(w(n)) - toBigInt(value(R.payments[0]).amount))]
311- let ah = z(A)
312- let aq = af(ag, ah, toBigInt(0))
313- let aG = ((toBigInt(w(aD)) - aq) - toBigInt(1))
314- let aH = max([0, toInt(aG)])
315- let aJ = if ((ag == false))
316- then [(toBigInt(w(m)) + toBigInt(aA)), (toBigInt(w(n)) - aG)]
317- else [(toBigInt(w(m)) - aG), (toBigInt(w(n)) + toBigInt(aA))]
318- let aK = z(aJ)
319- let aL = if ((aK >= ah))
329+ let aJ = aV._1
330+ let ao = aV._2
331+ let G = if ((am == false))
332+ then [(toBigInt(C(m)) - toBigInt(value(X.payments[0]).amount)), toBigInt(C(n))]
333+ else [toBigInt(C(m)), (toBigInt(C(n)) - toBigInt(value(X.payments[0]).amount))]
334+ let an = F(G)
335+ let av = al(am, an, toBigInt(0))
336+ let aK = ((toBigInt(C(aH)) - av) - toBigInt(1))
337+ let aL = max([0, toInt(aK)])
338+ let aN = if ((am == false))
339+ then [(toBigInt(C(m)) + toBigInt(aE)), (toBigInt(C(n)) - aK)]
340+ else [(toBigInt(C(m)) - aK), (toBigInt(C(n)) + toBigInt(aE))]
341+ let aO = F(aN)
342+ let aP = if ((aO >= an))
320343 then true
321344 else throw("new D is fewer error")
322- if ((aL == aL))
323- then [StringEntry("asset id payment", aP), IntegerEntry("amount paid", aQ), IntegerEntry("amount paid rounded without decimals", (aQ / r)), StringEntry("asset id to receive", aD), IntegerEntry("amount to receive", aH), IntegerEntry("amount to receive rounded without decimals", (aH / r)), IntegerEntry("price", fraction(r, aQ, aH))]
345+ if ((aP == aP))
346+ then [StringEntry("asset id payment", aT), IntegerEntry("amount paid", aU), IntegerEntry("amount paid rounded without decimals", (aU / s)), StringEntry("asset id to receive", aH), IntegerEntry("amount to receive", aL), IntegerEntry("amount to receive rounded without decimals", (aL / s)), IntegerEntry("price", fraction(s, aU, aL))]
324347 else throw("Strict value is not equal to itself.")
325348 }
326349
327350
328351
329-@Callable(R)
330-func balance_info () = [IntegerEntry("USDC", (w(m) / r)), IntegerEntry("USDT", (w(n) / r)), IntegerEntry("USD total", ((w(m) + w(n)) / r))]
352+@Callable(X)
353+func balance_info () = [IntegerEntry("USDC", (C(m) / s)), IntegerEntry("USDT", (C(n) / s)), IntegerEntry("USD total", ((C(m) + C(n)) / s))]
354+
355+
356+
357+@Callable(X)
358+func reset_trading_volume () = if ((X.caller != this))
359+ then throw("access only by project owner")
360+ else [IntegerEntry(p, 0)]
331361
332362
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = Address(base58'3P4AdC9J6MzTEi2LL9xgQN8EimMnbk4d6Nt')
55
66 let b = Address(base58'3PQtT2o7g8HmcZLGodx4L7YDe7ngb26wjYk')
77
88 let c = Address(base58'3PLrr8LpfYjUadnEQ1ov61uMWHdMopUCNAm')
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt(3)
1919
2020 let i = toBigInt(4)
2121
2222 let j = "WAVES"
2323
2424 let k = "100"
2525
2626 let l = "selector_is_shutdown"
2727
2828 let m = "3ayH3PhWMkhFsySsUVcC8BvFf1QyxGB5BZuTPyVtmP4v"
2929
3030 let n = "G5WWWzzVsWRyzGf32xojbnfp7gXbWrgqJT8RcVWEfLmC"
3131
3232 let o = "2000"
3333
34-let p = 1
34+let p = "total trading volume centlets"
3535
36-let q = 10000
36+let q = 1
3737
38-let r = 1000000
38+let r = 10000
3939
40-func s (t) = if ((t == unit))
41- then j
42- else toBase58String(value(t))
40+let s = 1000000
41+
42+func t (u,v) = {
43+ let w = getInteger(u, v)
44+ if ($isInstanceOf(w, "Int"))
45+ then {
46+ let x = w
47+ x
48+ }
49+ else 0
50+ }
4351
4452
45-func u (v) = if ((d > v))
46- then -(v)
47- else v
53+func y (z) = if ((z == unit))
54+ then j
55+ else toBase58String(value(z))
4856
4957
50-func w (x) = if ((x == m))
51- then (assetBalance(this, fromBase58String(x)) + getIntegerValue(c, ("USER_LP__" + toString(this))))
52- else (assetBalance(this, fromBase58String(x)) + getIntegerValue(b, ("USER_LP__" + toString(this))))
58+func A (B) = if ((d > B))
59+ then -(B)
60+ else B
5361
5462
55-func y (t) = if ((t == j))
56- then unit
57- else fromBase58String(t)
63+func C (D) = if ((D == m))
64+ then (assetBalance(this, fromBase58String(D)) + getIntegerValue(c, ("USER_LP__" + toString(this))))
65+ else (assetBalance(this, fromBase58String(D)) + getIntegerValue(b, ("USER_LP__" + toString(this))))
5866
5967
60-func z (A) = {
61- let B = A[0]
62- let C = A[1]
63- let D = (B + C)
64- if ((D == e))
68+func E (z) = if ((z == j))
69+ then unit
70+ else fromBase58String(z)
71+
72+
73+func F (G) = {
74+ let H = G[0]
75+ let I = G[1]
76+ let J = (H + I)
77+ if ((J == e))
6578 then e
6679 else {
67- let E = parseIntValue(o)
68- let F = (E * 2)
69- let G = fraction(B, C, f)
70- let H = fraction(G, i, f)
71- let I = fraction(toBigInt(F), D, f)
72- let J = toBigInt((F - 1))
73- func K (L) = {
74- let M = fraction(L, L, f)
75- let N = fraction(M, L, f)
76- let O = fraction(N, f, H)
77- fraction((I + fraction(O, g, f)), L, (fraction(J, L, f) + fraction(h, O, f)))
80+ let K = parseIntValue(o)
81+ let L = (K * 2)
82+ let M = fraction(H, I, f)
83+ let N = fraction(M, i, f)
84+ let O = fraction(toBigInt(L), J, f)
85+ let P = toBigInt((L - 1))
86+ func Q (R) = {
87+ let S = fraction(R, R, f)
88+ let T = fraction(S, R, f)
89+ let U = fraction(T, f, N)
90+ fraction((O + fraction(U, g, f)), R, (fraction(P, R, f) + fraction(h, U, f)))
7891 }
7992
80- func P (Q,R) = if (Q._2)
81- then Q
93+ func V (W,X) = if (W._2)
94+ then W
8295 else {
83- let L = Q._1
84- let S = K(L)
85- let T = (S - value(L))
86- let U = if ((e > T))
87- then -(T)
88- else T
89- if ((f >= U))
90- then $Tuple2(S, true)
91- else $Tuple2(S, false)
96+ let R = W._1
97+ let Y = Q(R)
98+ let Z = (Y - value(R))
99+ let aa = if ((e > Z))
100+ then -(Z)
101+ else Z
102+ if ((f >= aa))
103+ then $Tuple2(Y, true)
104+ else $Tuple2(Y, false)
92105 }
93106
94- let V = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
95- let W = {
96- let X = V
97- let Y = size(X)
98- let Z = $Tuple2(D, false)
99- func aa (ab,ac) = if ((ac >= Y))
100- then ab
101- else P(ab, X[ac])
107+ let ab = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
108+ let ac = {
109+ let ad = ab
110+ let ae = size(ad)
111+ let af = $Tuple2(J, false)
112+ func ag (ah,ai) = if ((ai >= ae))
113+ then ah
114+ else V(ah, ad[ai])
102115
103- func ad (ab,ac) = if ((ac >= Y))
104- then ab
116+ func aj (ah,ai) = if ((ai >= ae))
117+ then ah
105118 else throw("List size exceeds 17")
106119
107- ad(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(Z, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
120+ aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
108121 }
109- let L = W._1
110- let ae = W._2
111- if (ae)
112- then L
113- else throw(("D calculation error, D = " + toString(L)))
122+ let R = ac._1
123+ let ak = ac._2
124+ if (ak)
125+ then R
126+ else throw(("D calculation error, D = " + toString(R)))
114127 }
115128 }
116129
117130
118-func af (ag,ah,ai) = {
119- let aj = g
120- let ak = parseBigIntValue(k)
121- let E = (parseBigIntValue(o) * ak)
122- let A = if ((ag == false))
123- then [(toBigInt(w(m)) + ai), toBigInt(w(n))]
124- else [(toBigInt(w(n)) + ai), toBigInt(w(m))]
125- let al = A[0]
126- let D = al
127- let F = (E * aj)
128- let am = (((((ah * ah) / (al * aj)) * ah) * ak) / (F * aj))
129- let an = ((D + ((ah * ak) / F)) - ah)
130- func P (Q,ao) = {
131- let ap = Q
132- let aq = ap._1
133- let ae = ap._2
134- if ((ae != unit))
135- then Q
131+func al (am,an,ao) = {
132+ let ap = g
133+ let aq = parseBigIntValue(k)
134+ let K = (parseBigIntValue(o) * aq)
135+ let G = if ((am == false))
136+ then [(toBigInt(C(m)) + ao), toBigInt(C(n))]
137+ else [(toBigInt(C(n)) + ao), toBigInt(C(m))]
138+ let ar = G[0]
139+ let J = ar
140+ let L = (K * ap)
141+ let as = (((((an * an) / (ar * ap)) * an) * aq) / (L * ap))
142+ let x = ((J + ((an * aq) / L)) - an)
143+ func V (W,at) = {
144+ let au = W
145+ let av = au._1
146+ let ak = au._2
147+ if ((ak != unit))
148+ then W
136149 else {
137- let ar = (((aq * aq) + am) / ((g * aq) + an))
138- let as = u((ar - value(aq)))
139- if ((f >= as))
140- then $Tuple2(ar, ao)
141- else $Tuple2(ar, unit)
150+ let aw = (((av * av) + as) / ((g * av) + x))
151+ let ax = A((aw - value(av)))
152+ if ((f >= ax))
153+ then $Tuple2(aw, at)
154+ else $Tuple2(aw, unit)
142155 }
143156 }
144157
145- let V = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
146- let at = {
147- let X = V
148- let Y = size(X)
149- let Z = $Tuple2(ah, unit)
150- func aa (ab,ac) = if ((ac >= Y))
151- then ab
152- else P(ab, X[ac])
158+ let ab = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
159+ let ay = {
160+ let ad = ab
161+ let ae = size(ad)
162+ let af = $Tuple2(an, unit)
163+ func ag (ah,ai) = if ((ai >= ae))
164+ then ah
165+ else V(ah, ad[ai])
153166
154- func ad (ab,ac) = if ((ac >= Y))
155- then ab
167+ func aj (ah,ai) = if ((ai >= ae))
168+ then ah
156169 else throw("List size exceeds 15")
157170
158- ad(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(Z, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
171+ aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
159172 }
160- let aq = at._1
161- let ae = at._2
162- if ((ae != unit))
163- then aq
164- else throw(("Y calculation error, Y = " + toString(aq)))
173+ let av = ay._1
174+ let ak = ay._2
175+ if ((ak != unit))
176+ then av
177+ else throw(("Y calculation error, Y = " + toString(av)))
165178 }
166179
167180
168-func au () = {
169- let av = getBoolean(this, "is_shutdown")
170- if ($isInstanceOf(av, "Boolean"))
181+func az () = {
182+ let w = getBoolean(this, "is_shutdown")
183+ if ($isInstanceOf(w, "Boolean"))
171184 then {
172- let al = av
173- al
185+ let ar = w
186+ ar
174187 }
175188 else false
176189 }
177190
178191
179-@Callable(R)
180-func shutdown (aw) = if ((R.caller == this))
181- then [BooleanEntry("is_shutdown", aw)]
192+@Callable(X)
193+func shutdown (aA) = if ((X.caller == this))
194+ then [BooleanEntry("is_shutdown", aA)]
182195 else throw("admin only")
183196
184197
185198
186-@Callable(R)
187-func shutdownSelector (aw) = if ((R.caller == this))
188- then [BooleanEntry(l, aw)]
199+@Callable(X)
200+func shutdownSelector (aA) = if ((X.caller == this))
201+ then [BooleanEntry(l, aA)]
189202 else throw("admin only")
190203
191204
192205
193-@Callable(R)
194-func swap (ax) = if (if ((au() == true))
195- then (R.caller != Address(base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk'))
206+@Callable(X)
207+func swap (aB) = if (if ((az() == true))
208+ then (X.caller != Address(base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk'))
196209 else false)
197210 then throw("contract is shutdown")
198211 else {
199- let ay = value(R.payments[0])
200- let az = if (((r / 10) > value(R.payments[0].amount)))
212+ let aC = value(X.payments[0])
213+ let aD = if (((s / 10) > value(X.payments[0].amount)))
201214 then throw("minimum 0.1")
202- else value(R.payments[0].amount)
203- let aA = fraction(az, p, q)
204- let aB = (az - aA)
205- let aC = if (if ((s(ay.assetId) == m))
215+ else value(X.payments[0].amount)
216+ let aE = fraction(aD, q, r)
217+ let aF = (aD - aE)
218+ let aG = if (if ((y(aC.assetId) == m))
206219 then true
207- else (s(ay.assetId) == n))
208- then s(ay.assetId)
220+ else (y(aC.assetId) == n))
221+ then y(aC.assetId)
209222 else throw("wrong asset id")
210- let ag = if ((aC == m))
223+ let am = if ((aG == m))
211224 then false
212225 else true
213- let aD = if ((aC == m))
226+ let aH = if ((aG == m))
214227 then n
215228 else m
216- let aE = if ((ag == false))
229+ let aI = if ((am == false))
217230 then {
218- let aF = n
219- let ai = (toBigInt(w(m)) + toBigInt(aB))
220- $Tuple2(aF, ai)
231+ let aJ = n
232+ let ao = (toBigInt(C(m)) + toBigInt(aF))
233+ $Tuple2(aJ, ao)
221234 }
222235 else {
223- let aF = m
224- let ai = (toBigInt(w(n)) + toBigInt(aB))
225- $Tuple2(aF, ai)
236+ let aJ = m
237+ let ao = (toBigInt(C(n)) + toBigInt(aF))
238+ $Tuple2(aJ, ao)
226239 }
227- let aF = aE._1
228- let ai = aE._2
229- let A = if ((ag == false))
230- then [(toBigInt(w(m)) - toBigInt(value(R.payments[0]).amount)), toBigInt(w(n))]
231- else [toBigInt(w(m)), (toBigInt(w(n)) - toBigInt(value(R.payments[0]).amount))]
232- let ah = z(A)
233- let aq = af(ag, ah, toBigInt(0))
234- let aG = ((toBigInt(w(aD)) - aq) - toBigInt(1))
235- let aH = max([0, toInt(aG)])
236- let aI = if ((aH >= ax))
240+ let aJ = aI._1
241+ let ao = aI._2
242+ let G = if ((am == false))
243+ then [(toBigInt(C(m)) - toBigInt(value(X.payments[0]).amount)), toBigInt(C(n))]
244+ else [toBigInt(C(m)), (toBigInt(C(n)) - toBigInt(value(X.payments[0]).amount))]
245+ let an = F(G)
246+ let av = al(am, an, toBigInt(0))
247+ let aK = ((toBigInt(C(aH)) - av) - toBigInt(1))
248+ let aL = max([0, toInt(aK)])
249+ let aM = if ((aL >= aB))
237250 then true
238251 else throw("Exchange result is fewer coins than expected")
239- if ((aI == aI))
252+ if ((aM == aM))
240253 then {
241- let aJ = if ((ag == false))
242- then [(toBigInt(w(m)) + toBigInt(aA)), (toBigInt(w(n)) - aG)]
243- else [(toBigInt(w(m)) - aG), (toBigInt(w(n)) + toBigInt(aA))]
244- let aK = z(aJ)
245- let aL = if ((aK >= ah))
254+ let aN = if ((am == false))
255+ then [(toBigInt(C(m)) + toBigInt(aE)), (toBigInt(C(n)) - aK)]
256+ else [(toBigInt(C(m)) - aK), (toBigInt(C(n)) + toBigInt(aE))]
257+ let aO = F(aN)
258+ let aP = if ((aO >= an))
246259 then true
247260 else throw("new D is fewer error")
248- if ((aL == aL))
261+ if ((aP == aP))
249262 then {
250- let aM = if ((aD == m))
251- then if ((aH > assetBalance(this, base58'3ayH3PhWMkhFsySsUVcC8BvFf1QyxGB5BZuTPyVtmP4v')))
252- then invoke(c, "unstake", [(aH - assetBalance(this, base58'3ayH3PhWMkhFsySsUVcC8BvFf1QyxGB5BZuTPyVtmP4v'))], nil)
263+ let aQ = if ((aH == m))
264+ then if ((aL > assetBalance(this, base58'3ayH3PhWMkhFsySsUVcC8BvFf1QyxGB5BZuTPyVtmP4v')))
265+ then invoke(c, "unstake", [(aL - assetBalance(this, base58'3ayH3PhWMkhFsySsUVcC8BvFf1QyxGB5BZuTPyVtmP4v'))], nil)
253266 else unit
254- else if ((aH > assetBalance(this, base58'G5WWWzzVsWRyzGf32xojbnfp7gXbWrgqJT8RcVWEfLmC')))
255- then invoke(b, "unstake", [(aH - assetBalance(this, base58'G5WWWzzVsWRyzGf32xojbnfp7gXbWrgqJT8RcVWEfLmC'))], nil)
267+ else if ((aL > assetBalance(this, base58'G5WWWzzVsWRyzGf32xojbnfp7gXbWrgqJT8RcVWEfLmC')))
268+ then invoke(b, "unstake", [(aL - assetBalance(this, base58'G5WWWzzVsWRyzGf32xojbnfp7gXbWrgqJT8RcVWEfLmC'))], nil)
256269 else unit
257- if ((aM == aM))
270+ if ((aQ == aQ))
258271 then {
259- let aN = if ((aD == m))
272+ let aR = if ((aH == m))
260273 then invoke(b, "stake", nil, [AttachedPayment(fromBase58String(n), assetBalance(this, fromBase58String(n)))])
261274 else invoke(c, "stake", nil, [AttachedPayment(fromBase58String(m), assetBalance(this, fromBase58String(m)))])
262- if ((aN == aN))
275+ if ((aR == aR))
263276 then {
264- let aO = if ((getBoolean(this, l) == true))
277+ let aS = if ((getBoolean(this, l) == true))
265278 then unit
266279 else invoke(a, "selector", nil, nil)
267- if ((aO == aO))
268- then [ScriptTransfer(R.caller, aH, y(aF))]
280+ if ((aS == aS))
281+ then [ScriptTransfer(X.caller, aL, E(aJ)), IntegerEntry(p, (aD + t(this, p)))]
269282 else throw("Strict value is not equal to itself.")
270283 }
271284 else throw("Strict value is not equal to itself.")
272285 }
273286 else throw("Strict value is not equal to itself.")
274287 }
275288 else throw("Strict value is not equal to itself.")
276289 }
277290 else throw("Strict value is not equal to itself.")
278291 }
279292
280293
281294
282-@Callable(R)
283-func readSwap (aP,aQ,aD) = if (if ((au() == true))
284- then (R.caller != Address(base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk'))
295+@Callable(X)
296+func readSwap (aT,aU) = if (if ((az() == true))
297+ then (X.caller != Address(base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk'))
285298 else false)
286299 then throw("contract is shutdown")
287300 else {
288- let az = aQ
289- let aA = fraction(az, p, q)
290- let aB = (az - aA)
291- let aC = aP
292- let ag = if ((aC == m))
301+ let aC = value(X.payments[0])
302+ let aD = if (((s / 10) > value(X.payments[0].amount)))
303+ then throw("minimum 0.1")
304+ else value(X.payments[0].amount)
305+ let aE = fraction(aD, q, r)
306+ let aF = (aD - aE)
307+ let aG = if (if ((y(aC.assetId) == m))
308+ then true
309+ else (y(aC.assetId) == n))
310+ then y(aC.assetId)
311+ else throw("wrong asset id")
312+ let am = if ((aG == m))
293313 then false
294314 else true
295- let aR = if ((ag == false))
315+ let aH = if ((aG == m))
316+ then n
317+ else m
318+ let aV = if ((am == false))
296319 then {
297- let aF = n
298- let ai = (toBigInt(w(m)) + toBigInt(aB))
299- $Tuple2(aF, ai)
320+ let aJ = n
321+ let ao = (toBigInt(C(m)) + toBigInt(aF))
322+ $Tuple2(aJ, ao)
300323 }
301324 else {
302- let aF = m
303- let ai = (toBigInt(w(n)) + toBigInt(aB))
304- $Tuple2(aF, ai)
325+ let aJ = m
326+ let ao = (toBigInt(C(n)) + toBigInt(aF))
327+ $Tuple2(aJ, ao)
305328 }
306- let aF = aR._1
307- let ai = aR._2
308- let A = if ((ag == false))
309- then [(toBigInt(w(m)) - toBigInt(value(R.payments[0]).amount)), toBigInt(w(n))]
310- else [toBigInt(w(m)), (toBigInt(w(n)) - toBigInt(value(R.payments[0]).amount))]
311- let ah = z(A)
312- let aq = af(ag, ah, toBigInt(0))
313- let aG = ((toBigInt(w(aD)) - aq) - toBigInt(1))
314- let aH = max([0, toInt(aG)])
315- let aJ = if ((ag == false))
316- then [(toBigInt(w(m)) + toBigInt(aA)), (toBigInt(w(n)) - aG)]
317- else [(toBigInt(w(m)) - aG), (toBigInt(w(n)) + toBigInt(aA))]
318- let aK = z(aJ)
319- let aL = if ((aK >= ah))
329+ let aJ = aV._1
330+ let ao = aV._2
331+ let G = if ((am == false))
332+ then [(toBigInt(C(m)) - toBigInt(value(X.payments[0]).amount)), toBigInt(C(n))]
333+ else [toBigInt(C(m)), (toBigInt(C(n)) - toBigInt(value(X.payments[0]).amount))]
334+ let an = F(G)
335+ let av = al(am, an, toBigInt(0))
336+ let aK = ((toBigInt(C(aH)) - av) - toBigInt(1))
337+ let aL = max([0, toInt(aK)])
338+ let aN = if ((am == false))
339+ then [(toBigInt(C(m)) + toBigInt(aE)), (toBigInt(C(n)) - aK)]
340+ else [(toBigInt(C(m)) - aK), (toBigInt(C(n)) + toBigInt(aE))]
341+ let aO = F(aN)
342+ let aP = if ((aO >= an))
320343 then true
321344 else throw("new D is fewer error")
322- if ((aL == aL))
323- then [StringEntry("asset id payment", aP), IntegerEntry("amount paid", aQ), IntegerEntry("amount paid rounded without decimals", (aQ / r)), StringEntry("asset id to receive", aD), IntegerEntry("amount to receive", aH), IntegerEntry("amount to receive rounded without decimals", (aH / r)), IntegerEntry("price", fraction(r, aQ, aH))]
345+ if ((aP == aP))
346+ then [StringEntry("asset id payment", aT), IntegerEntry("amount paid", aU), IntegerEntry("amount paid rounded without decimals", (aU / s)), StringEntry("asset id to receive", aH), IntegerEntry("amount to receive", aL), IntegerEntry("amount to receive rounded without decimals", (aL / s)), IntegerEntry("price", fraction(s, aU, aL))]
324347 else throw("Strict value is not equal to itself.")
325348 }
326349
327350
328351
329-@Callable(R)
330-func balance_info () = [IntegerEntry("USDC", (w(m) / r)), IntegerEntry("USDT", (w(n) / r)), IntegerEntry("USD total", ((w(m) + w(n)) / r))]
352+@Callable(X)
353+func balance_info () = [IntegerEntry("USDC", (C(m) / s)), IntegerEntry("USDT", (C(n) / s)), IntegerEntry("USD total", ((C(m) + C(n)) / s))]
354+
355+
356+
357+@Callable(X)
358+func reset_trading_volume () = if ((X.caller != this))
359+ then throw("access only by project owner")
360+ else [IntegerEntry(p, 0)]
331361
332362

github/deemru/w8io/0e76f2f 
116.21 ms