tx · Abf4tzorDKciVSpFWfGaqGMC239B5iNsKUhHGnRSNo7X 3MpABcPJLQiG9Yxzk3ZV8e2nEbRe1gZHbZe: -0.02000000 Waves 2020.06.17 15:56 [1047564] smart account 3MpABcPJLQiG9Yxzk3ZV8e2nEbRe1gZHbZe > SELF 0.00000000 Waves
{ "type": 13, "id": "Abf4tzorDKciVSpFWfGaqGMC239B5iNsKUhHGnRSNo7X", "fee": 2000000, "feeAssetId": null, "timestamp": 1592398639438, "version": 1, "sender": "3MpABcPJLQiG9Yxzk3ZV8e2nEbRe1gZHbZe", "senderPublicKey": "AixLFScfYY3rkC6MkFBBW8xXM1a6q3i79CUrcgykP4V3", "proofs": [ "WF1YnSvbzfc6Khw4kw7kChN6LkDKpyg8UXMecqVq4ezht6E98B1xDm74HApJoPRN4R82pZuj5MZ3MaTtMn5wopY", "3JT6KG6V8YSMGxPWZ69zVorJH2K5AACJtsiC63snMdXDvwNaSayAfFAUGveqNbYG1SUWh1qp9yJWNzr16e9p5fQm", "5gHF7N1wfrAvw1SNUhGztDvdL5bCuUA4wkW7RsRG5RmuZrTSm5BuGAfEM22sAqzPYuRvtJ9sZG2ZBkvPWFrAVYhG" ], "script": "base64:AAIDAAAAAAAAABYIARIDCgEBEgQKAgEIEgMKAQgSABIAAAAAOQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAABZnZXRCb29sQnlBZGRyZXNzQW5kS2V5AAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABBsAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEHAQAAABhnZXRTdHJpbmdCeUFkZHJlc3NBbmRLZXkAAAACAAAAB2FkZHJlc3MAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAABAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAAAAAAB1dBVkVMRVQAAAAAAAX14QAAAAAABVBBVUxJAAAAAAAAD0JAAAAAAA1NSU5PUkRFUlRPVEFMCQAAaAAAAAIAAAAAAAAAAAoFAAAAB1dBVkVMRVQAAAAABk1BWFJPSQAAAAAAAAAAXwAAAAAIQ0FOQ0VMRUQCAAAACGNhbmNlbGVkAAAAAANORVcCAAAAA25ldwAAAAAGRklMTEVEAgAAAAZmaWxsZWQAAAAAE05ldXRyaW5vQ29udHJhY3RLZXkCAAAAEW5ldXRyaW5vX2NvbnRyYWN0AAAAAAhQcmljZUtleQIAAAAFcHJpY2UAAAAADkJvbmRBc3NldElkS2V5AgAAAA1ib25kX2Fzc2V0X2lkAAAAABJOZXV0cmlub0Fzc2V0SWRLZXkCAAAAEW5ldXRyaW5vX2Fzc2V0X2lkAAAAABJDb250cm9sQ29udHJhY3RLZXkCAAAAEGNvbnRyb2xfY29udHJhY3QAAAAAEUJhbGFuY2VMb2NrZWRrS2V5AgAAAA1iYWxhbmNlX2xvY2tfAAAAABVXYXZlc0xvY2tlZEJhbGFuY2VLZXkJAAEsAAAAAgUAAAARQmFsYW5jZUxvY2tlZGtLZXkCAAAABXdhdmVzAAAAABhOZXV0cmlub0xvY2tlZEJhbGFuY2VLZXkJAAEsAAAAAgUAAAARQmFsYW5jZUxvY2tlZGtLZXkCAAAACG5ldXRyaW5vAAAAABZMaXF1aWRhdGlvbkNvbnRyYWN0S2V5AgAAABRsaXF1aWRhdGlvbl9jb250cmFjdAAAAAANRmlyc3RPcmRlcktleQIAAAALb3JkZXJfZmlyc3QBAAAAEmdldFJvaUJ5T3JkZXJJZEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAABBkZWJ1Z19vcmRlcl9yb2lfBQAAAAdvcmRlcklkAQAAABBnZXRPcmRlclByaWNlS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAADG9yZGVyX3ByaWNlXwUAAAAHb3JkZXJJZAEAAAAQZ2V0T3JkZXJUb3RhbEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAxvcmRlcl90b3RhbF8FAAAAB29yZGVySWQBAAAAEGdldE9yZGVyT3duZXJLZXkAAAABAAAAB29yZGVySWQJAAEsAAAAAgIAAAAMb3JkZXJfb3duZXJfBQAAAAdvcmRlcklkAQAAABFnZXRPcmRlckhlaWdodEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAA1vcmRlcl9oZWlnaHRfBQAAAAdvcmRlcklkAQAAABFnZXRPcmRlclN0YXR1c0tleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAA1vcmRlcl9zdGF0dXNfBQAAAAdvcmRlcklkAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAE29yZGVyX2ZpbGxlZF90b3RhbF8FAAAAB29yZGVySWQBAAAAD2dldFByZXZPcmRlcktleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAtvcmRlcl9wcmV2XwUAAAAHb3JkZXJJZAEAAAAPZ2V0TmV4dE9yZGVyS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAC29yZGVyX25leHRfBQAAAAdvcmRlcklkAQAAABZjb252ZXJ0TmV1dHJpbm9Ub1dhdmVzAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAABrAAAAAwkAAGsAAAADBQAAAAZhbW91bnQAAAAAAAAAAGQFAAAABXByaWNlBQAAAAdXQVZFTEVUBQAAAAVQQVVMSQEAAAAWY29udmVydFdhdmVzVG9OZXV0cmlubwAAAAIAAAAGYW1vdW50AAAABXByaWNlCQAAawAAAAMJAABrAAAAAwUAAAAGYW1vdW50BQAAAAVwcmljZQAAAAAAAAAAZAUAAAAFUEFVTEkFAAAAB1dBVkVMRVQBAAAAEmNvbnZlcnRXYXZlc1RvQm9uZAAAAAIAAAAGYW1vdW50AAAABXByaWNlCQEAAAAWY29udmVydFdhdmVzVG9OZXV0cmlubwAAAAIFAAAABmFtb3VudAUAAAAFcHJpY2UBAAAAEmNvbnZlcnRCb25kVG9XYXZlcwAAAAIAAAAGYW1vdW50AAAABXByaWNlCQEAAAAWY29udmVydE5ldXRyaW5vVG9XYXZlcwAAAAIFAAAABmFtb3VudAUAAAAFcHJpY2UAAAAAEG5ldXRyaW5vQ29udHJhY3QJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVRd6WgnuKiTD3MvecPQSqmMoFYH4YxA2UwAAAAAD2NvbnRyb2xDb250cmFjdAkBAAAAB0FkZHJlc3MAAAABAQAAABoBVHd8mw1x96/NH/LB3/xPiuie+mNXAtxD+AAAAAATbGlxdWlkYXRpb25Db250cmFjdAkBAAAAB0FkZHJlc3MAAAABAQAAABoBVH5rmjazLNShujK2rL9hgVnGxXROJ9RIkgAAAAAPbmV1dHJpbm9Bc3NldElkAQAAACDFV34hsakKgqH6Rs6hDFMTPGwGAdO1UWh8YxHIFkjp3wAAAAALYm9uZEFzc2V0SWQBAAAAIHb4XnbUP1bzlE4BgaOenn6BgBTQ/WsLMlDY68c8F5hNAAAAAAlpc0Jsb2NrZWQJAQAAABZnZXRCb29sQnlBZGRyZXNzQW5kS2V5AAAAAgUAAAAPY29udHJvbENvbnRyYWN0AgAAAAppc19ibG9ja2VkAAAAAAxjdXJyZW50UHJpY2UJAQAAABhnZXROdW1iZXJCeUFkZHJlc3NBbmRLZXkAAAACBQAAAA9jb250cm9sQ29udHJhY3QFAAAACFByaWNlS2V5AAAAABVuZXV0cmlub0xvY2tlZEJhbGFuY2UJAQAAABhnZXROdW1iZXJCeUFkZHJlc3NBbmRLZXkAAAACBQAAABBuZXV0cmlub0NvbnRyYWN0BQAAABhOZXV0cmlub0xvY2tlZEJhbGFuY2VLZXkAAAAAB3Jlc2VydmUJAABlAAAAAgkBAAAADHdhdmVzQmFsYW5jZQAAAAEFAAAAEG5ldXRyaW5vQ29udHJhY3QJAQAAABhnZXROdW1iZXJCeUFkZHJlc3NBbmRLZXkAAAACBQAAABBuZXV0cmlub0NvbnRyYWN0BQAAABVXYXZlc0xvY2tlZEJhbGFuY2VLZXkAAAAADm5ldXRyaW5vU3VwcGx5CQAAZQAAAAIJAABlAAAAAgkAAGQAAAACBQAAABVuZXV0cmlub0xvY2tlZEJhbGFuY2UICQEAAAAHZXh0cmFjdAAAAAEJAAPsAAAAAQUAAAAPbmV1dHJpbm9Bc3NldElkAAAACHF1YW50aXR5CQAD6wAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAD25ldXRyaW5vQXNzZXRJZAkAA+sAAAACBQAAABNsaXF1aWRhdGlvbkNvbnRyYWN0BQAAAA9uZXV0cmlub0Fzc2V0SWQAAAAAB2RlZmljaXQJAABlAAAAAgUAAAAObmV1dHJpbm9TdXBwbHkJAQAAABZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAAAAAgUAAAAHcmVzZXJ2ZQUAAAAMY3VycmVudFByaWNlAAAAAApmaXJzdE9yZGVyCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAAA1GaXJzdE9yZGVyS2V5AQAAAA1nZXRPcmRlclByaWNlAAAAAQAAAAJpZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEGdldE9yZGVyUHJpY2VLZXkAAAABBQAAAAJpZAEAAAANZ2V0T3JkZXJUb3RhbAAAAAEAAAACaWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABBnZXRPcmRlclRvdGFsS2V5AAAAAQUAAAACaWQBAAAADWdldE9yZGVyT3duZXIAAAABAAAAAmlkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAQZ2V0T3JkZXJPd25lcktleQAAAAEFAAAAAmlkAQAAAA5nZXRPcmRlclN0YXR1cwAAAAEAAAACaWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABFnZXRPcmRlclN0YXR1c0tleQAAAAEFAAAAAmlkAQAAABNnZXRPcmRlckZpbGxlZFRvdGFsAAAAAQAAAAJpZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFmdldE9yZGVyRmlsbGVkVG90YWxLZXkAAAABBQAAAAJpZAEAAAAMZ2V0UHJldk9yZGVyAAAAAQAAAAJpZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAD2dldFByZXZPcmRlcktleQAAAAEFAAAAAmlkAQAAAAxnZXROZXh0T3JkZXIAAAABAAAAAmlkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAPZ2V0TmV4dE9yZGVyS2V5AAAAAQUAAAACaWQBAAAACW9yZGVyRGF0YQAAAAYAAAAHb3JkZXJJZAAAAA10b3RhbFdhdmVsZXRzAAAABW93bmVyAAAABnN0YXR1cwAAAANyb2kAAAAFcHJpY2UJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABBnZXRPcmRlclByaWNlS2V5AAAAAQUAAAAHb3JkZXJJZAUAAAAFcHJpY2UJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABBnZXRPcmRlclRvdGFsS2V5AAAAAQUAAAAHb3JkZXJJZAUAAAANdG90YWxXYXZlbGV0cwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEGdldE9yZGVyT3duZXJLZXkAAAABBQAAAAdvcmRlcklkBQAAAAVvd25lcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEWdldE9yZGVySGVpZ2h0S2V5AAAAAQUAAAAHb3JkZXJJZAUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAARZ2V0T3JkZXJTdGF0dXNLZXkAAAABBQAAAAdvcmRlcklkBQAAAAZzdGF0dXMJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgIAAAAZZGVidWdfb3JkZXJfY3VycmVudFByaWNlXwUAAAAHb3JkZXJJZAUAAAAMY3VycmVudFByaWNlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAASZ2V0Um9pQnlPcmRlcklkS2V5AAAAAQUAAAAHb3JkZXJJZAUAAAADcm9pBQAAAANuaWwBAAAAEGludGVybmFsU2VsbEJvbmQAAAAIAAAAC3BGaXJzdE9yZGVyAAAACnBOZXh0T3JkZXIAAAAMcEZpbGxlZFRvdGFsAAAABHBSb2kAAAAGcFByaWNlAAAAEHBQYXltZW50V2F2ZWxldHMAAAARb3JkZXJPd25lckFkZHJlc3MAAAAMaW5zdGFudE9yZGVyBAAAABVwcmljZVdhdmVzQnlCb25kQ2VudHMJAABrAAAAAwkAAGQAAAACAAAAAAAAAABkBQAAAARwUm9pBQAAAAxjdXJyZW50UHJpY2UAAAAAAAAAAGQEAAAADXJlbWFpbmVkVG90YWwJAABlAAAAAgUAAAAQcFBheW1lbnRXYXZlbGV0cwUAAAAMcEZpbGxlZFRvdGFsBAAAABNmaWxsYWJsZU9yZGVyQW1vdW50CQEAAAASY29udmVydFdhdmVzVG9Cb25kAAAAAgUAAAANcmVtYWluZWRUb3RhbAUAAAAVcHJpY2VXYXZlc0J5Qm9uZENlbnRzBAAAABt0b3RhbE9yZGVyV2F2ZWxldGVzUmVxdWlyZWQJAQAAABJjb252ZXJ0Qm9uZFRvV2F2ZXMAAAACBQAAABNmaWxsYWJsZU9yZGVyQW1vdW50BQAAABVwcmljZVdhdmVzQnlCb25kQ2VudHMEAAAAFW5iVG9rZW5zU2VsbENvbmRpdGlvbgkAAGcAAAACCQAAawAAAAMFAAAAB2RlZmljaXQAAAAAAAAAAGQFAAAADm5ldXRyaW5vU3VwcGx5BQAAAARwUm9pAwkBAAAAASEAAAABBQAAABVuYlRva2Vuc1NlbGxDb25kaXRpb24JAAACAAAAAQkAASwAAAACAgAAABNpbm5hcHJvcHJpYXRlIHJvaTogCQABpAAAAAEFAAAABHBSb2kDCQAAAAAAAAIFAAAAG3RvdGFsT3JkZXJXYXZlbGV0ZXNSZXF1aXJlZAAAAAAAAAAAAAkAAAIAAAABAgAAAB9jYW5ub3QgZmlsbCBvcmRlciBhdCB0aGUgbW9tZW50BAAAAA5jaGFuZ2VXYXZlbGV0cwkAAGUAAAACBQAAAA1yZW1haW5lZFRvdGFsBQAAABt0b3RhbE9yZGVyV2F2ZWxldGVzUmVxdWlyZWQEAAAADHdyaXRlU2V0RGF0YQMFAAAADGluc3RhbnRPcmRlcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEGdldE9yZGVyUHJpY2VLZXkAAAABBQAAAAtwRmlyc3RPcmRlcgUAAAAGcFByaWNlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAQZ2V0T3JkZXJUb3RhbEtleQAAAAEFAAAAC3BGaXJzdE9yZGVyBQAAABBwUGF5bWVudFdhdmVsZXRzCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAQZ2V0T3JkZXJPd25lcktleQAAAAEFAAAAC3BGaXJzdE9yZGVyCQACWAAAAAEIBQAAABFvcmRlck93bmVyQWRkcmVzcwAAAAVieXRlcwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEWdldE9yZGVySGVpZ2h0S2V5AAAAAQUAAAALcEZpcnN0T3JkZXIFAAAABmhlaWdodAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEWdldE9yZGVyU3RhdHVzS2V5AAAAAQUAAAALcEZpcnN0T3JkZXIFAAAABkZJTExFRAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAABlkZWJ1Z19vcmRlcl9jdXJyZW50UHJpY2VfBQAAAAtwRmlyc3RPcmRlcgUAAAAMY3VycmVudFByaWNlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAASZ2V0Um9pQnlPcmRlcklkS2V5AAAAAQUAAAALcEZpcnN0T3JkZXIFAAAABHBSb2kFAAAAA25pbAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFmdldE9yZGVyRmlsbGVkVG90YWxLZXkAAAABBQAAAAtwRmlyc3RPcmRlcgkAAGQAAAACBQAAAAxwRmlsbGVkVG90YWwFAAAAG3RvdGFsT3JkZXJXYXZlbGV0ZXNSZXF1aXJlZAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEWdldE9yZGVyU3RhdHVzS2V5AAAAAQUAAAALcEZpcnN0T3JkZXIFAAAABkZJTExFRAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEGdldE9yZGVyVG90YWxLZXkAAAABBQAAAAtwRmlyc3RPcmRlcgUAAAAQcFBheW1lbnRXYXZlbGV0cwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAD2dldFByZXZPcmRlcktleQAAAAEFAAAACnBOZXh0T3JkZXICAAAAAAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAANRmlyc3RPcmRlcktleQUAAAAKcE5leHRPcmRlcgUAAAADbmlsCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQUAAAAMd3JpdGVTZXREYXRhCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEW9yZGVyT3duZXJBZGRyZXNzBQAAABNmaWxsYWJsZU9yZGVyQW1vdW50BQAAAAtib25kQXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABBuZXV0cmlub0NvbnRyYWN0BQAAABt0b3RhbE9yZGVyV2F2ZWxldGVzUmVxdWlyZWQFAAAABHVuaXQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAARb3JkZXJPd25lckFkZHJlc3MFAAAADmNoYW5nZVdhdmVsZXRzBQAAAAR1bml0BQAAAANuaWwBAAAAF2ludGVybmFsQWRkQnV5Qm9uZE9yZGVyAAAABQAAAANyb2kAAAAFcHJpY2UAAAAJcHJldk9yZGVyAAAAA2ludgAAAAxpbnN0YW50T3JkZXIEAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAADaW52AAAAB3BheW1lbnQEAAAACm5ld09yZGVySWQJAAJYAAAAAQgFAAAAA2ludgAAAA10cmFuc2FjdGlvbklkAwUAAAAJaXNCbG9ja2VkCQAAAgAAAAECAAAAWWNvbnRyYWN0IGlzIGJsb2NrZWQgYnkgRU1FUkdFTkNZIFNIVVRET1dOIGFjdGlvbnMgdW50aWwgcmVhY3RpdmF0aW9uIGJ5IGVtZXJnZW5jeSBvcmFjbGVzAwkAAGYAAAACBQAAAA1NSU5PUkRFUlRPVEFMCAUAAAADcG10AAAABmFtb3VudAkAAAIAAAABCQABLAAAAAICAAAAF21pbiBvcmRlciB0b3RhbCBlcXVhbHMgCQABpAAAAAEFAAAADU1JTk9SREVSVE9UQUwDCQAAZgAAAAIFAAAAA3JvaQUAAAAGTUFYUk9JCQAAAgAAAAECAAAAF21heCBzZXRPcmRlciBST0kgaXMgOTUlAwMJAABmAAAAAgUAAAAHZGVmaWNpdAAAAAAAAAAAAAkAAGYAAAACAAAAAAAAAAAABQAAAANyb2kHCQAAAgAAAAECAAAAMmNhbid0IHBsYWNlIG9yZGVyIHdpdGggbmVnYXRpdmUgcm9pIGR1cmluZyBkZWZpY2l0AwkAAGYAAAACCQEAAAABLQAAAAEFAAAABk1BWFJPSQUAAAADcm9pCQAAAgAAAAECAAAAGG1pbiBzZXRPcmRlciBST0kgaXMgLTk1JQMJAAAAAAAAAgUAAAADcm9pAAAAAAAAAAAACQAAAgAAAAECAAAAHHJvaSBzaG91bGQgbm90IGJlIGVxdWFsIHRvIDADCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAECAAAAEmNhbiB1c2Ugd2F2ZXMgb25seQMJAQAAAAIhPQAAAAIJAQAAAA1nZXRPcmRlck93bmVyAAAAAQUAAAAKbmV3T3JkZXJJZAIAAAAACQAAAgAAAAECAAAADG9yZGVyIGV4aXN0cwMDCQEAAAACIT0AAAACBQAAAAlwcmV2T3JkZXICAAAAAAkBAAAAAiE9AAAAAgkBAAAADmdldE9yZGVyU3RhdHVzAAAAAQUAAAAJcHJldk9yZGVyBQAAAANORVcHCQAAAgAAAAECAAAAHHByZXYgb3JkZXIgc3RhdHVzIGlzIG5vdCBuZXcEAAAAGWlzTmV3T3JkZXJBdEZpcnN0UG9zaXRpb24JAAAAAAAAAgUAAAAJcHJldk9yZGVyAgAAAAAEAAAABW93bmVyCQAEJQAAAAEIBQAAAANpbnYAAAAGY2FsbGVyBAAAAAluZXh0T3JkZXIDBQAAABlpc05ld09yZGVyQXRGaXJzdFBvc2l0aW9uBQAAAApmaXJzdE9yZGVyCQEAAAAMZ2V0TmV4dE9yZGVyAAAAAQUAAAAJcHJldk9yZGVyBAAAAAxuZXh0T3JkZXJSb2kJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRSb2lCeU9yZGVySWRLZXkAAAABBQAAAAluZXh0T3JkZXIEAAAAEGlzTmV4dE9yZGVyRXJyb3IDAwkBAAAAAiE9AAAAAgUAAAAJbmV4dE9yZGVyAgAAAAAJAABnAAAAAgUAAAADcm9pBQAAAAxuZXh0T3JkZXJSb2kHBgcEAAAADHByZXZPcmRlclJvaQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEmdldFJvaUJ5T3JkZXJJZEtleQAAAAEFAAAACXByZXZPcmRlcgQAAAAQaXNQcmV2T3JkZXJFcnJvcgMDCQEAAAACIT0AAAACBQAAAAlwcmV2T3JkZXICAAAAAAkAAGYAAAACBQAAAAxwcmV2T3JkZXJSb2kFAAAAA3JvaQcGBwMDBQAAABBpc05leHRPcmRlckVycm9yBgUAAAAQaXNQcmV2T3JkZXJFcnJvcgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAB9pbnZhbGlkIG9yZGVyIGlzUHJldk9yZGVyRXJyb3I6CQABpQAAAAEFAAAAEGlzUHJldk9yZGVyRXJyb3ICAAAAEiBpc05leHRPcmRlckVycm9yOgkAAaUAAAABBQAAABBpc05leHRPcmRlckVycm9yAwMFAAAAGWlzTmV3T3JkZXJBdEZpcnN0UG9zaXRpb24FAAAADGluc3RhbnRPcmRlcgcJAQAAABBpbnRlcm5hbFNlbGxC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AAEFAAAAB29yZGVySWQDBQAAAAlpc0Jsb2NrZWQJAAACAAAAAQIAAABZY29udHJhY3QgaXMgYmxvY2tlZCBieSBFTUVSR0VOQ1kgU0hVVERPV04gYWN0aW9ucyB1bnRpbCByZWFjdGl2YXRpb24gYnkgZW1lcmdlbmN5IG9yYWNsZXMDCQEAAAACIT0AAAACBQAAAAVvd25lcgUAAAAGY2FsbGVyCQAAAgAAAAECAAAAEXBlcm1pc3Npb24gZGVuaWVkAwkBAAAAAiE9AAAAAgkBAAAADmdldE9yZGVyU3RhdHVzAAAAAQUAAAAHb3JkZXJJZAUAAAADTkVXCQAAAgAAAAECAAAAFGludmFsaWQgb3JkZXIgc3RhdHVzCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAANRmlyc3RPcmRlcktleQMJAAAAAAAAAgUAAAAKZmlyc3RPcmRlcgUAAAAHb3JkZXJJZAUAAAAJbmV4dE9yZGVyBQAAAApmaXJzdE9yZGVyCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAPZ2V0TmV4dE9yZGVyS2V5AAAAAQUAAAAJcHJldk9yZGVyBQAAAAluZXh0T3JkZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA9nZXRQcmV2T3JkZXJLZXkAAAABBQAAAAluZXh0T3JkZXIFAAAACXByZXZPcmRlcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEWdldE9yZGVyU3RhdHVzS2V5AAAAAQUAAAAHb3JkZXJJZAUAAAAIQ0FOQ0VMRUQFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAABmFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAACHNlbGxCb25kAAAAAAMFAAAACWlzQmxvY2tlZAkAAAIAAAABAgAAAFljb250cmFjdCBpcyBibG9ja2VkIGJ5IEVNRVJHRU5DWSBTSFVURE9XTiBhY3Rpb25zIHVudGlsIHJlYWN0aXZhdGlvbiBieSBlbWVyZ2VuY3kgb3JhY2xlcwMJAAAAAAAAAgUAAAAKZmlyc3RPcmRlcgIAAAAACQAAAgAAAAECAAAAD2VtcHR5IG9yZGVyYm9vawQAAAAJbmV4dE9yZGVyCQEAAAAMZ2V0TmV4dE9yZGVyAAAAAQUAAAAKZmlyc3RPcmRlcgQAAAALZmlsbGVkVG90YWwJAQAAABNnZXRPcmRlckZpbGxlZFRvdGFsAAAAAQUAAAAKZmlyc3RPcmRlcgQAAAAKb3JkZXJQcmljZQkBAAAADWdldE9yZGVyUHJpY2UAAAABBQAAAApmaXJzdE9yZGVyBAAAAANyb2kJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRSb2lCeU9yZGVySWRLZXkAAAABBQAAAApmaXJzdE9yZGVyBAAAAA9wYXltZW50V2F2ZWxldHMJAQAAAA1nZXRPcmRlclRvdGFsAAAAAQUAAAAKZmlyc3RPcmRlcgQAAAARb3JkZXJPd25lckFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAANZ2V0T3JkZXJPd25lcgAAAAEFAAAACmZpcnN0T3JkZXIJAQAAABBpbnRlcm5hbFNlbGxCb25kAAAACAUAAAAKZmlyc3RPcmRlcgUAAAAJbmV4dE9yZGVyBQAAAAtmaWxsZWRUb3RhbAUAAAADcm9pBQAAAApvcmRlclByaWNlBQAAAA9wYXltZW50V2F2ZWxldHMFAAAAEW9yZGVyT3duZXJBZGRyZXNzBwAAAAFpAQAAAB91cGRhdGVSZXNlcnZlc0FuZE5ldXRyaW5vU3VwcGx5AAAAAAoBAAAAFmdldE51bWJlckJ5S2V5SW50ZXJuYWwAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAADaWR4CQEAAAAWZ2V0TnVtYmVyQnlLZXlJbnRlcm5hbAAAAAECAAAAInVwZGF0ZVJlc2VydmVzQW5kTmV1dHJpbm9TdXBwbHlJZHgEAAAABm5ld0lkeAkAAGQAAAACBQAAAANpZHgAAAAAAAAAAAEJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAInVwZGF0ZVJlc2VydmVzQW5kTmV1dHJpbm9TdXBwbHlJZHgFAAAABm5ld0lkeAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAHcmVzZXJ2ZQUAAAAHcmVzZXJ2ZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAObmV1dHJpbm9TdXBwbHkFAAAADm5ldXRyaW5vU3VwcGx5CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAAdkZWZpY2l0BQAAAAdkZWZpY2l0BQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAABBwdWJLZXlBZG1pbnNMaXN0CQAETAAAAAICAAAALEQ5NlQ1VW9MN0UyRkVSYUV3b3Y5RnJ4OFhGVlBOR3FaNFR5RGlXdm4xdXJKCQAETAAAAAICAAAALEZrMnpnYnJSQThLeXRUVk1WeTZEZjVpNHRURXNLYXFnNnliaDZ4NkhlaGpqCQAETAAAAAICAAAALDM3ZjF5RTU0RnlNS3dFa2c0MTNwZXE1R2J6ZTlzQmF2QVNWZVRZYlFMVHZKCQAETAAAAAICAAAALDVXUlhGU2p3Y1RiTmZLY0pzOFpxWG1TU1dZc1NWSlV0TXZNcVpqNWhINE5jBQAAAANuaWwEAAAABWNvdW50CQAAZAAAAAIJAABkAAAAAgkAAGQAAAACAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAEJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAABAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAIJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAACAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAMJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAADAAAAAAAAAAACAAAAAAAAAAAACQAAZwAAAAIFAAAABWNvdW50AAAAAAAAAAADYUxMwg==", "chainId": 84, "height": 1047564, "spentComplexity": 0 } View: original | compacted Prev: Uh641H7qtkadpTT3Ndz6joFF2dREj6YaHsr4afqdBaK Next: BcDQHzgX3H46jVsu4qEZaxa9oWqHHEtndqNh3LiXG8MH Diff:
Old | New | Differences | |
---|---|---|---|
60 | 60 | ||
61 | 61 | let k = 1000000 | |
62 | 62 | ||
63 | - | let l = | |
63 | + | let l = (10 * j) | |
64 | 64 | ||
65 | - | let m = | |
65 | + | let m = 95 | |
66 | 66 | ||
67 | - | let n = | |
67 | + | let n = "canceled" | |
68 | 68 | ||
69 | - | let o = " | |
69 | + | let o = "new" | |
70 | 70 | ||
71 | - | let p = " | |
71 | + | let p = "filled" | |
72 | 72 | ||
73 | - | let q = " | |
73 | + | let q = "neutrino_contract" | |
74 | 74 | ||
75 | - | let r = " | |
75 | + | let r = "price" | |
76 | 76 | ||
77 | - | let s = " | |
77 | + | let s = "bond_asset_id" | |
78 | 78 | ||
79 | - | let t = " | |
79 | + | let t = "neutrino_asset_id" | |
80 | 80 | ||
81 | - | let u = " | |
81 | + | let u = "control_contract" | |
82 | 82 | ||
83 | - | let v = " | |
83 | + | let v = "balance_lock_" | |
84 | 84 | ||
85 | - | let w = " | |
85 | + | let w = (v + "waves") | |
86 | 86 | ||
87 | - | let x = ( | |
87 | + | let x = (v + "neutrino") | |
88 | 88 | ||
89 | - | let y = | |
89 | + | let y = "liquidation_contract" | |
90 | 90 | ||
91 | - | let z = " | |
91 | + | let z = "order_first" | |
92 | 92 | ||
93 | - | let A = "order_first" | |
94 | - | ||
95 | - | func B (C) = ("debug_order_roi_" + C) | |
93 | + | func A (B) = ("debug_order_roi_" + B) | |
96 | 94 | ||
97 | 95 | ||
98 | - | func | |
96 | + | func C (B) = ("order_price_" + B) | |
99 | 97 | ||
100 | 98 | ||
101 | - | func | |
99 | + | func D (B) = ("order_total_" + B) | |
102 | 100 | ||
103 | 101 | ||
104 | - | func | |
102 | + | func E (B) = ("order_owner_" + B) | |
105 | 103 | ||
106 | 104 | ||
107 | - | func | |
105 | + | func F (B) = ("order_height_" + B) | |
108 | 106 | ||
109 | 107 | ||
110 | - | func | |
108 | + | func G (B) = ("order_status_" + B) | |
111 | 109 | ||
112 | 110 | ||
113 | - | func | |
111 | + | func H (B) = ("order_filled_total_" + B) | |
114 | 112 | ||
115 | 113 | ||
116 | - | func | |
114 | + | func I (B) = ("order_prev_" + B) | |
117 | 115 | ||
118 | 116 | ||
119 | - | func | |
117 | + | func J (B) = ("order_next_" + B) | |
120 | 118 | ||
121 | 119 | ||
122 | - | func | |
120 | + | func K (L,M) = fraction(fraction(L, 100, M), j, k) | |
123 | 121 | ||
124 | 122 | ||
125 | - | func | |
123 | + | func N (L,M) = fraction(fraction(L, M, 100), k, j) | |
126 | 124 | ||
127 | 125 | ||
128 | - | func | |
126 | + | func O (L,M) = N(L, M) | |
129 | 127 | ||
130 | 128 | ||
131 | - | func | |
129 | + | func P (L,M) = K(L, M) | |
132 | 130 | ||
133 | 131 | ||
134 | - | let | |
132 | + | let Q = Address(base58'3MxUeE9rS9G3ap3kSrw67vkjYyTL3QLJnk3') | |
135 | 133 | ||
136 | - | let | |
134 | + | let R = Address(base58'3MzosTW6DBBjpRwTZUWFhZo6UFW1yrmfdtB') | |
137 | 135 | ||
138 | - | let | |
136 | + | let S = Address(base58'3N1SXpSHeCeqSewbXS79otbnmP89uKUkWyf') | |
139 | 137 | ||
140 | - | let | |
138 | + | let T = base58'EHLhLVDUufqQytiAjBHzPhsPZgqsX6XfSCrVdxYeC4QN' | |
141 | 139 | ||
142 | - | let | |
140 | + | let U = base58'91QmVf3hZQJeUX11nurBX76Quf94kQgVMDesqALsjQFN' | |
143 | 141 | ||
144 | - | let | |
142 | + | let V = f(R, "is_blocked") | |
145 | 143 | ||
146 | - | let | |
144 | + | let W = i(R, r) | |
147 | 145 | ||
148 | - | let | |
146 | + | let X = i(Q, x) | |
149 | 147 | ||
150 | - | let | |
148 | + | let Y = (wavesBalance(Q) - i(Q, w)) | |
151 | 149 | ||
152 | - | let | |
150 | + | let Z = (((X + extract(assetInfo(T)).quantity) - assetBalance(Q, T)) - assetBalance(S, T)) | |
153 | 151 | ||
154 | - | let | |
152 | + | let aa = (Z - N(Y, W)) | |
155 | 153 | ||
156 | - | let | |
154 | + | let ab = e(z) | |
157 | 155 | ||
158 | - | func | |
156 | + | func ac (ad) = a(C(ad)) | |
159 | 157 | ||
160 | 158 | ||
161 | - | func | |
159 | + | func ae (ad) = a(D(ad)) | |
162 | 160 | ||
163 | 161 | ||
164 | - | func | |
162 | + | func af (ad) = e(E(ad)) | |
165 | 163 | ||
166 | 164 | ||
167 | - | func | |
165 | + | func ag (ad) = e(G(ad)) | |
168 | 166 | ||
169 | 167 | ||
170 | - | func | |
168 | + | func ah (ad) = a(H(ad)) | |
171 | 169 | ||
172 | 170 | ||
173 | - | func | |
171 | + | func ai (ad) = e(I(ad)) | |
174 | 172 | ||
175 | 173 | ||
176 | - | func | |
174 | + | func aj (ad) = e(J(ad)) | |
177 | 175 | ||
178 | 176 | ||
179 | - | func | |
177 | + | func ak (B,al,am,an,ao,M) = [DataEntry(C(B), M), DataEntry(D(B), al), DataEntry(E(B), am), DataEntry(F(B), height), DataEntry(G(B), an), DataEntry(("debug_order_currentPrice_" + B), W), DataEntry(A(B), ao)] | |
180 | 178 | ||
181 | 179 | ||
182 | - | func | |
183 | - | let | |
184 | - | let | |
185 | - | let | |
186 | - | let | |
187 | - | let | |
188 | - | if (!( | |
189 | - | then throw(("innapropriate roi: " + toString( | |
190 | - | else if (( | |
180 | + | func ap (aq,ar,as,at,au,av,aw,ax) = { | |
181 | + | let ay = fraction((100 + at), W, 100) | |
182 | + | let az = (av - as) | |
183 | + | let aA = O(az, ay) | |
184 | + | let aB = P(aA, ay) | |
185 | + | let aC = (fraction(aa, 100, Z) >= at) | |
186 | + | if (!(aC)) | |
187 | + | then throw(("innapropriate roi: " + toString(at))) | |
188 | + | else if ((aB == 0)) | |
191 | 189 | then throw("cannot fill order at the moment") | |
192 | 190 | else { | |
193 | - | let | |
194 | - | let | |
195 | - | then [DataEntry(D( | |
196 | - | else [DataEntry( | |
197 | - | ScriptResult(WriteSet( | |
191 | + | let aD = (az - aB) | |
192 | + | let aE = if (ax) | |
193 | + | then [DataEntry(C(aq), au), DataEntry(D(aq), av), DataEntry(E(aq), toBase58String(aw.bytes)), DataEntry(F(aq), height), DataEntry(G(aq), p), DataEntry(("debug_order_currentPrice_" + aq), W), DataEntry(A(aq), at)] | |
194 | + | else [DataEntry(H(aq), (as + aB)), DataEntry(G(aq), p), DataEntry(D(aq), av), DataEntry(I(ar), ""), DataEntry(z, ar)] | |
195 | + | ScriptResult(WriteSet(aE), TransferSet([ScriptTransfer(aw, aA, U), ScriptTransfer(Q, aB, unit), ScriptTransfer(aw, aD, unit)])) | |
198 | 196 | } | |
199 | 197 | } | |
200 | 198 | ||
201 | 199 | ||
202 | - | func | |
203 | - | let | |
204 | - | let | |
205 | - | if ( | |
200 | + | func aF (ao,M,aG,aH,ax) = { | |
201 | + | let aI = extract(aH.payment) | |
202 | + | let aJ = toBase58String(aH.transactionId) | |
203 | + | if (V) | |
206 | 204 | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
207 | - | else if (( | |
208 | - | then throw(("min order total equals " + toString( | |
209 | - | else if (( | |
205 | + | else if ((l > aI.amount)) | |
206 | + | then throw(("min order total equals " + toString(l))) | |
207 | + | else if ((ao > m)) | |
210 | 208 | then throw("max setOrder ROI is 95%") | |
211 | - | else if (if (( | |
212 | - | then (0 > | |
209 | + | else if (if ((aa > 0)) | |
210 | + | then (0 > ao) | |
213 | 211 | else false) | |
214 | 212 | then throw("can't place order with negative roi during deficit") | |
215 | - | else if ((-( | |
213 | + | else if ((-(m) > ao)) | |
216 | 214 | then throw("min setOrder ROI is -95%") | |
217 | - | else if (( | |
215 | + | else if ((ao == 0)) | |
218 | 216 | then throw("roi should not be equal to 0") | |
219 | - | else if (isDefined( | |
217 | + | else if (isDefined(aI.assetId)) | |
220 | 218 | then throw("can use waves only") | |
221 | - | else if (( | |
219 | + | else if ((af(aJ) != "")) | |
222 | 220 | then throw("order exists") | |
223 | - | else if (if (( | |
224 | - | then ( | |
221 | + | else if (if ((aG != "")) | |
222 | + | then (ag(aG) != o) | |
225 | 223 | else false) | |
226 | 224 | then throw("prev order status is not new") | |
227 | 225 | else { | |
228 | - | let | |
229 | - | let | |
230 | - | let | |
231 | - | then | |
232 | - | else | |
233 | - | let | |
234 | - | let | |
235 | - | then ( | |
226 | + | let aK = (aG == "") | |
227 | + | let am = toString(aH.caller) | |
228 | + | let aL = if (aK) | |
229 | + | then ab | |
230 | + | else aj(aG) | |
231 | + | let aM = a(A(aL)) | |
232 | + | let aN = if (if ((aL != "")) | |
233 | + | then (ao >= aM) | |
236 | 234 | else false) | |
237 | 235 | then true | |
238 | 236 | else false | |
239 | - | let | |
240 | - | let | |
241 | - | then ( | |
237 | + | let aO = a(A(aG)) | |
238 | + | let aP = if (if ((aG != "")) | |
239 | + | then (aO > ao) | |
242 | 240 | else false) | |
243 | 241 | then true | |
244 | 242 | else false | |
245 | - | if (if ( | |
243 | + | if (if (aN) | |
246 | 244 | then true | |
247 | - | else | |
248 | - | then throw(((("invalid order isPrevOrderError:" + toString( | |
249 | - | else if (if ( | |
250 | - | then | |
245 | + | else aP) | |
246 | + | then throw(((("invalid order isPrevOrderError:" + toString(aP)) + " isNextOrderError:") + toString(aN))) | |
247 | + | else if (if (aK) | |
248 | + | then ax | |
251 | 249 | else false) | |
252 | - | then | |
253 | - | else if ( | |
250 | + | then ap(aJ, aL, 0, ao, M, aI.amount, aH.caller, true) | |
251 | + | else if (ax) | |
254 | 252 | then throw("Instant order couldn't be added into waiting queue") | |
255 | - | else WriteSet([DataEntry( | |
253 | + | else WriteSet([DataEntry(I(aJ), aG), DataEntry(J(aJ), aL), DataEntry(J(aG), if ((aG == "")) | |
256 | 254 | then "" | |
257 | - | else | |
255 | + | else aJ), DataEntry(I(aL), if ((aL == "")) | |
258 | 256 | then "" | |
259 | - | else | |
257 | + | else aJ), DataEntry(z, if (if ((ab == "")) | |
260 | 258 | then true | |
261 | - | else ( | |
262 | - | then | |
263 | - | else | |
259 | + | else (ab == aL)) | |
260 | + | then aJ | |
261 | + | else ab), ak(aJ, aI.amount, am, o, ao, M)]) | |
264 | 262 | } | |
265 | 263 | } | |
266 | 264 | ||
267 | 265 | ||
268 | - | @Callable( | |
269 | - | func instantBuyNsbtOrFail ( | |
270 | - | let | |
271 | - | let | |
272 | - | let | |
273 | - | | |
266 | + | @Callable(aQ) | |
267 | + | func instantBuyNsbtOrFail (ao) = { | |
268 | + | let aI = extract(aQ.payment) | |
269 | + | let ay = fraction((100 + ao), W, 100) | |
270 | + | let M = ((100 * 100) / ay) | |
271 | + | aF(ao, M, "", aQ, true) | |
274 | 272 | } | |
275 | 273 | ||
276 | 274 | ||
277 | 275 | ||
278 | - | @Callable( | |
279 | - | func addBuyBondOrder ( | |
280 | - | let | |
281 | - | let | |
282 | - | let | |
283 | - | if ((0 >= | |
276 | + | @Callable(aQ) | |
277 | + | func addBuyBondOrder (M,aG) = { | |
278 | + | let aI = extract(aQ.payment) | |
279 | + | let ay = fraction(100, 100, M) | |
280 | + | let ao = fraction((ay - W), 100, W) | |
281 | + | if ((0 >= M)) | |
284 | 282 | then throw("price less zero") | |
285 | - | else | |
283 | + | else aF(ao, M, aG, aQ, false) | |
286 | 284 | } | |
287 | 285 | ||
288 | 286 | ||
289 | 287 | ||
290 | - | @Callable( | |
291 | - | func cancelOrder ( | |
292 | - | let | |
293 | - | let | |
294 | - | let | |
295 | - | let | |
296 | - | let | |
297 | - | if ( | |
288 | + | @Callable(aQ) | |
289 | + | func cancelOrder (B) = { | |
290 | + | let am = af(B) | |
291 | + | let L = (ae(B) - ah(B)) | |
292 | + | let aR = toString(aQ.caller) | |
293 | + | let aL = aj(B) | |
294 | + | let aG = ai(B) | |
295 | + | if (V) | |
298 | 296 | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
299 | - | else if (( | |
297 | + | else if ((am != aR)) | |
300 | 298 | then throw("permission denied") | |
301 | - | else if (( | |
299 | + | else if ((ag(B) != o)) | |
302 | 300 | then throw("invalid order status") | |
303 | - | else ScriptResult(WriteSet([DataEntry( | |
304 | - | then | |
305 | - | else | |
301 | + | else ScriptResult(WriteSet([DataEntry(z, if ((ab == B)) | |
302 | + | then aL | |
303 | + | else ab), DataEntry(J(aG), aL), DataEntry(I(aL), aG), DataEntry(G(B), n)]), TransferSet([ScriptTransfer(aQ.caller, L, unit)])) | |
306 | 304 | } | |
307 | 305 | ||
308 | 306 | ||
309 | 307 | ||
310 | - | @Callable( | |
311 | - | func sellBond () = if ( | |
308 | + | @Callable(aQ) | |
309 | + | func sellBond () = if (V) | |
312 | 310 | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
313 | - | else if (( | |
311 | + | else if ((ab == "")) | |
314 | 312 | then throw("empty orderbook") | |
315 | 313 | else { | |
316 | - | let | |
317 | - | let | |
318 | - | let | |
319 | - | let | |
320 | - | let | |
321 | - | let | |
322 | - | | |
314 | + | let aL = aj(ab) | |
315 | + | let aS = ah(ab) | |
316 | + | let aT = ac(ab) | |
317 | + | let ao = a(A(ab)) | |
318 | + | let aU = ae(ab) | |
319 | + | let aw = Address(fromBase58String(af(ab))) | |
320 | + | ap(ab, aL, aS, ao, aT, aU, aw, false) | |
323 | 321 | } | |
324 | 322 | ||
325 | 323 | ||
326 | 324 | ||
327 | - | @Callable( | |
325 | + | @Callable(aQ) | |
328 | 326 | func updateReservesAndNeutrinoSupply () = { | |
329 | - | func | |
327 | + | func aV (b) = { | |
330 | 328 | let c = getInteger(this, b) | |
331 | 329 | if ($isInstanceOf(c, "Int")) | |
332 | 330 | then { | |
336 | 334 | else 0 | |
337 | 335 | } | |
338 | 336 | ||
339 | - | let | |
340 | - | let | |
341 | - | WriteSet([DataEntry("updateReservesAndNeutrinoSupplyIdx", | |
337 | + | let aW = aV("updateReservesAndNeutrinoSupplyIdx") | |
338 | + | let aX = (aW + 1) | |
339 | + | WriteSet([DataEntry("updateReservesAndNeutrinoSupplyIdx", aX), DataEntry("reserve", Y), DataEntry("neutrinoSupply", Z), DataEntry("deficit", aa)]) | |
342 | 340 | } | |
343 | 341 | ||
344 | 342 | ||
345 | - | @Verifier( | |
346 | - | func | |
347 | - | let | |
348 | - | let | |
343 | + | @Verifier(aY) | |
344 | + | func aZ () = { | |
345 | + | let ba = ["D96T5UoL7E2FERaEwov9Frx8XFVPNGqZ4TyDiWvn1urJ", "Fk2zgbrRA8KytTVMVy6Df5i4tTEsKaqg6ybh6x6Hehjj", "37f1yE54FyMKwEkg413peq5Gbze9sBavASVeTYbQLTvJ", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"] | |
346 | + | let bb = ((((if (sigVerify(aY.bodyBytes, aY.proofs[0], fromBase58String(ba[0]))) | |
349 | 347 | then 1 | |
350 | - | else 0) + (if (sigVerify( | |
348 | + | else 0) + (if (sigVerify(aY.bodyBytes, aY.proofs[1], fromBase58String(ba[1]))) | |
351 | 349 | then 1 | |
352 | - | else 0)) + (if (sigVerify( | |
350 | + | else 0)) + (if (sigVerify(aY.bodyBytes, aY.proofs[2], fromBase58String(ba[2]))) | |
353 | 351 | then 1 | |
354 | - | else 0)) + (if (sigVerify( | |
352 | + | else 0)) + (if (sigVerify(aY.bodyBytes, aY.proofs[3], fromBase58String(ba[3]))) | |
355 | 353 | then 2 | |
356 | 354 | else 0)) | |
357 | - | ( | |
355 | + | (bb >= 3) | |
358 | 356 | } | |
359 | 357 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func a (b) = { | |
5 | 5 | let c = getInteger(this, b) | |
6 | 6 | if ($isInstanceOf(c, "Int")) | |
7 | 7 | then { | |
8 | 8 | let d = c | |
9 | 9 | d | |
10 | 10 | } | |
11 | 11 | else 0 | |
12 | 12 | } | |
13 | 13 | ||
14 | 14 | ||
15 | 15 | func e (b) = { | |
16 | 16 | let c = getString(this, b) | |
17 | 17 | if ($isInstanceOf(c, "String")) | |
18 | 18 | then { | |
19 | 19 | let d = c | |
20 | 20 | d | |
21 | 21 | } | |
22 | 22 | else "" | |
23 | 23 | } | |
24 | 24 | ||
25 | 25 | ||
26 | 26 | func f (g,b) = { | |
27 | 27 | let c = getBoolean(g, b) | |
28 | 28 | if ($isInstanceOf(c, "Boolean")) | |
29 | 29 | then { | |
30 | 30 | let d = c | |
31 | 31 | d | |
32 | 32 | } | |
33 | 33 | else false | |
34 | 34 | } | |
35 | 35 | ||
36 | 36 | ||
37 | 37 | func h (g,b) = { | |
38 | 38 | let c = getString(g, b) | |
39 | 39 | if ($isInstanceOf(c, "String")) | |
40 | 40 | then { | |
41 | 41 | let d = c | |
42 | 42 | d | |
43 | 43 | } | |
44 | 44 | else "" | |
45 | 45 | } | |
46 | 46 | ||
47 | 47 | ||
48 | 48 | func i (g,b) = { | |
49 | 49 | let c = getInteger(g, b) | |
50 | 50 | if ($isInstanceOf(c, "Int")) | |
51 | 51 | then { | |
52 | 52 | let d = c | |
53 | 53 | d | |
54 | 54 | } | |
55 | 55 | else 0 | |
56 | 56 | } | |
57 | 57 | ||
58 | 58 | ||
59 | 59 | let j = 100000000 | |
60 | 60 | ||
61 | 61 | let k = 1000000 | |
62 | 62 | ||
63 | - | let l = | |
63 | + | let l = (10 * j) | |
64 | 64 | ||
65 | - | let m = | |
65 | + | let m = 95 | |
66 | 66 | ||
67 | - | let n = | |
67 | + | let n = "canceled" | |
68 | 68 | ||
69 | - | let o = " | |
69 | + | let o = "new" | |
70 | 70 | ||
71 | - | let p = " | |
71 | + | let p = "filled" | |
72 | 72 | ||
73 | - | let q = " | |
73 | + | let q = "neutrino_contract" | |
74 | 74 | ||
75 | - | let r = " | |
75 | + | let r = "price" | |
76 | 76 | ||
77 | - | let s = " | |
77 | + | let s = "bond_asset_id" | |
78 | 78 | ||
79 | - | let t = " | |
79 | + | let t = "neutrino_asset_id" | |
80 | 80 | ||
81 | - | let u = " | |
81 | + | let u = "control_contract" | |
82 | 82 | ||
83 | - | let v = " | |
83 | + | let v = "balance_lock_" | |
84 | 84 | ||
85 | - | let w = " | |
85 | + | let w = (v + "waves") | |
86 | 86 | ||
87 | - | let x = ( | |
87 | + | let x = (v + "neutrino") | |
88 | 88 | ||
89 | - | let y = | |
89 | + | let y = "liquidation_contract" | |
90 | 90 | ||
91 | - | let z = " | |
91 | + | let z = "order_first" | |
92 | 92 | ||
93 | - | let A = "order_first" | |
94 | - | ||
95 | - | func B (C) = ("debug_order_roi_" + C) | |
93 | + | func A (B) = ("debug_order_roi_" + B) | |
96 | 94 | ||
97 | 95 | ||
98 | - | func | |
96 | + | func C (B) = ("order_price_" + B) | |
99 | 97 | ||
100 | 98 | ||
101 | - | func | |
99 | + | func D (B) = ("order_total_" + B) | |
102 | 100 | ||
103 | 101 | ||
104 | - | func | |
102 | + | func E (B) = ("order_owner_" + B) | |
105 | 103 | ||
106 | 104 | ||
107 | - | func | |
105 | + | func F (B) = ("order_height_" + B) | |
108 | 106 | ||
109 | 107 | ||
110 | - | func | |
108 | + | func G (B) = ("order_status_" + B) | |
111 | 109 | ||
112 | 110 | ||
113 | - | func | |
111 | + | func H (B) = ("order_filled_total_" + B) | |
114 | 112 | ||
115 | 113 | ||
116 | - | func | |
114 | + | func I (B) = ("order_prev_" + B) | |
117 | 115 | ||
118 | 116 | ||
119 | - | func | |
117 | + | func J (B) = ("order_next_" + B) | |
120 | 118 | ||
121 | 119 | ||
122 | - | func | |
120 | + | func K (L,M) = fraction(fraction(L, 100, M), j, k) | |
123 | 121 | ||
124 | 122 | ||
125 | - | func | |
123 | + | func N (L,M) = fraction(fraction(L, M, 100), k, j) | |
126 | 124 | ||
127 | 125 | ||
128 | - | func | |
126 | + | func O (L,M) = N(L, M) | |
129 | 127 | ||
130 | 128 | ||
131 | - | func | |
129 | + | func P (L,M) = K(L, M) | |
132 | 130 | ||
133 | 131 | ||
134 | - | let | |
132 | + | let Q = Address(base58'3MxUeE9rS9G3ap3kSrw67vkjYyTL3QLJnk3') | |
135 | 133 | ||
136 | - | let | |
134 | + | let R = Address(base58'3MzosTW6DBBjpRwTZUWFhZo6UFW1yrmfdtB') | |
137 | 135 | ||
138 | - | let | |
136 | + | let S = Address(base58'3N1SXpSHeCeqSewbXS79otbnmP89uKUkWyf') | |
139 | 137 | ||
140 | - | let | |
138 | + | let T = base58'EHLhLVDUufqQytiAjBHzPhsPZgqsX6XfSCrVdxYeC4QN' | |
141 | 139 | ||
142 | - | let | |
140 | + | let U = base58'91QmVf3hZQJeUX11nurBX76Quf94kQgVMDesqALsjQFN' | |
143 | 141 | ||
144 | - | let | |
142 | + | let V = f(R, "is_blocked") | |
145 | 143 | ||
146 | - | let | |
144 | + | let W = i(R, r) | |
147 | 145 | ||
148 | - | let | |
146 | + | let X = i(Q, x) | |
149 | 147 | ||
150 | - | let | |
148 | + | let Y = (wavesBalance(Q) - i(Q, w)) | |
151 | 149 | ||
152 | - | let | |
150 | + | let Z = (((X + extract(assetInfo(T)).quantity) - assetBalance(Q, T)) - assetBalance(S, T)) | |
153 | 151 | ||
154 | - | let | |
152 | + | let aa = (Z - N(Y, W)) | |
155 | 153 | ||
156 | - | let | |
154 | + | let ab = e(z) | |
157 | 155 | ||
158 | - | func | |
156 | + | func ac (ad) = a(C(ad)) | |
159 | 157 | ||
160 | 158 | ||
161 | - | func | |
159 | + | func ae (ad) = a(D(ad)) | |
162 | 160 | ||
163 | 161 | ||
164 | - | func | |
162 | + | func af (ad) = e(E(ad)) | |
165 | 163 | ||
166 | 164 | ||
167 | - | func | |
165 | + | func ag (ad) = e(G(ad)) | |
168 | 166 | ||
169 | 167 | ||
170 | - | func | |
168 | + | func ah (ad) = a(H(ad)) | |
171 | 169 | ||
172 | 170 | ||
173 | - | func | |
171 | + | func ai (ad) = e(I(ad)) | |
174 | 172 | ||
175 | 173 | ||
176 | - | func | |
174 | + | func aj (ad) = e(J(ad)) | |
177 | 175 | ||
178 | 176 | ||
179 | - | func | |
177 | + | func ak (B,al,am,an,ao,M) = [DataEntry(C(B), M), DataEntry(D(B), al), DataEntry(E(B), am), DataEntry(F(B), height), DataEntry(G(B), an), DataEntry(("debug_order_currentPrice_" + B), W), DataEntry(A(B), ao)] | |
180 | 178 | ||
181 | 179 | ||
182 | - | func | |
183 | - | let | |
184 | - | let | |
185 | - | let | |
186 | - | let | |
187 | - | let | |
188 | - | if (!( | |
189 | - | then throw(("innapropriate roi: " + toString( | |
190 | - | else if (( | |
180 | + | func ap (aq,ar,as,at,au,av,aw,ax) = { | |
181 | + | let ay = fraction((100 + at), W, 100) | |
182 | + | let az = (av - as) | |
183 | + | let aA = O(az, ay) | |
184 | + | let aB = P(aA, ay) | |
185 | + | let aC = (fraction(aa, 100, Z) >= at) | |
186 | + | if (!(aC)) | |
187 | + | then throw(("innapropriate roi: " + toString(at))) | |
188 | + | else if ((aB == 0)) | |
191 | 189 | then throw("cannot fill order at the moment") | |
192 | 190 | else { | |
193 | - | let | |
194 | - | let | |
195 | - | then [DataEntry(D( | |
196 | - | else [DataEntry( | |
197 | - | ScriptResult(WriteSet( | |
191 | + | let aD = (az - aB) | |
192 | + | let aE = if (ax) | |
193 | + | then [DataEntry(C(aq), au), DataEntry(D(aq), av), DataEntry(E(aq), toBase58String(aw.bytes)), DataEntry(F(aq), height), DataEntry(G(aq), p), DataEntry(("debug_order_currentPrice_" + aq), W), DataEntry(A(aq), at)] | |
194 | + | else [DataEntry(H(aq), (as + aB)), DataEntry(G(aq), p), DataEntry(D(aq), av), DataEntry(I(ar), ""), DataEntry(z, ar)] | |
195 | + | ScriptResult(WriteSet(aE), TransferSet([ScriptTransfer(aw, aA, U), ScriptTransfer(Q, aB, unit), ScriptTransfer(aw, aD, unit)])) | |
198 | 196 | } | |
199 | 197 | } | |
200 | 198 | ||
201 | 199 | ||
202 | - | func | |
203 | - | let | |
204 | - | let | |
205 | - | if ( | |
200 | + | func aF (ao,M,aG,aH,ax) = { | |
201 | + | let aI = extract(aH.payment) | |
202 | + | let aJ = toBase58String(aH.transactionId) | |
203 | + | if (V) | |
206 | 204 | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
207 | - | else if (( | |
208 | - | then throw(("min order total equals " + toString( | |
209 | - | else if (( | |
205 | + | else if ((l > aI.amount)) | |
206 | + | then throw(("min order total equals " + toString(l))) | |
207 | + | else if ((ao > m)) | |
210 | 208 | then throw("max setOrder ROI is 95%") | |
211 | - | else if (if (( | |
212 | - | then (0 > | |
209 | + | else if (if ((aa > 0)) | |
210 | + | then (0 > ao) | |
213 | 211 | else false) | |
214 | 212 | then throw("can't place order with negative roi during deficit") | |
215 | - | else if ((-( | |
213 | + | else if ((-(m) > ao)) | |
216 | 214 | then throw("min setOrder ROI is -95%") | |
217 | - | else if (( | |
215 | + | else if ((ao == 0)) | |
218 | 216 | then throw("roi should not be equal to 0") | |
219 | - | else if (isDefined( | |
217 | + | else if (isDefined(aI.assetId)) | |
220 | 218 | then throw("can use waves only") | |
221 | - | else if (( | |
219 | + | else if ((af(aJ) != "")) | |
222 | 220 | then throw("order exists") | |
223 | - | else if (if (( | |
224 | - | then ( | |
221 | + | else if (if ((aG != "")) | |
222 | + | then (ag(aG) != o) | |
225 | 223 | else false) | |
226 | 224 | then throw("prev order status is not new") | |
227 | 225 | else { | |
228 | - | let | |
229 | - | let | |
230 | - | let | |
231 | - | then | |
232 | - | else | |
233 | - | let | |
234 | - | let | |
235 | - | then ( | |
226 | + | let aK = (aG == "") | |
227 | + | let am = toString(aH.caller) | |
228 | + | let aL = if (aK) | |
229 | + | then ab | |
230 | + | else aj(aG) | |
231 | + | let aM = a(A(aL)) | |
232 | + | let aN = if (if ((aL != "")) | |
233 | + | then (ao >= aM) | |
236 | 234 | else false) | |
237 | 235 | then true | |
238 | 236 | else false | |
239 | - | let | |
240 | - | let | |
241 | - | then ( | |
237 | + | let aO = a(A(aG)) | |
238 | + | let aP = if (if ((aG != "")) | |
239 | + | then (aO > ao) | |
242 | 240 | else false) | |
243 | 241 | then true | |
244 | 242 | else false | |
245 | - | if (if ( | |
243 | + | if (if (aN) | |
246 | 244 | then true | |
247 | - | else | |
248 | - | then throw(((("invalid order isPrevOrderError:" + toString( | |
249 | - | else if (if ( | |
250 | - | then | |
245 | + | else aP) | |
246 | + | then throw(((("invalid order isPrevOrderError:" + toString(aP)) + " isNextOrderError:") + toString(aN))) | |
247 | + | else if (if (aK) | |
248 | + | then ax | |
251 | 249 | else false) | |
252 | - | then | |
253 | - | else if ( | |
250 | + | then ap(aJ, aL, 0, ao, M, aI.amount, aH.caller, true) | |
251 | + | else if (ax) | |
254 | 252 | then throw("Instant order couldn't be added into waiting queue") | |
255 | - | else WriteSet([DataEntry( | |
253 | + | else WriteSet([DataEntry(I(aJ), aG), DataEntry(J(aJ), aL), DataEntry(J(aG), if ((aG == "")) | |
256 | 254 | then "" | |
257 | - | else | |
255 | + | else aJ), DataEntry(I(aL), if ((aL == "")) | |
258 | 256 | then "" | |
259 | - | else | |
257 | + | else aJ), DataEntry(z, if (if ((ab == "")) | |
260 | 258 | then true | |
261 | - | else ( | |
262 | - | then | |
263 | - | else | |
259 | + | else (ab == aL)) | |
260 | + | then aJ | |
261 | + | else ab), ak(aJ, aI.amount, am, o, ao, M)]) | |
264 | 262 | } | |
265 | 263 | } | |
266 | 264 | ||
267 | 265 | ||
268 | - | @Callable( | |
269 | - | func instantBuyNsbtOrFail ( | |
270 | - | let | |
271 | - | let | |
272 | - | let | |
273 | - | | |
266 | + | @Callable(aQ) | |
267 | + | func instantBuyNsbtOrFail (ao) = { | |
268 | + | let aI = extract(aQ.payment) | |
269 | + | let ay = fraction((100 + ao), W, 100) | |
270 | + | let M = ((100 * 100) / ay) | |
271 | + | aF(ao, M, "", aQ, true) | |
274 | 272 | } | |
275 | 273 | ||
276 | 274 | ||
277 | 275 | ||
278 | - | @Callable( | |
279 | - | func addBuyBondOrder ( | |
280 | - | let | |
281 | - | let | |
282 | - | let | |
283 | - | if ((0 >= | |
276 | + | @Callable(aQ) | |
277 | + | func addBuyBondOrder (M,aG) = { | |
278 | + | let aI = extract(aQ.payment) | |
279 | + | let ay = fraction(100, 100, M) | |
280 | + | let ao = fraction((ay - W), 100, W) | |
281 | + | if ((0 >= M)) | |
284 | 282 | then throw("price less zero") | |
285 | - | else | |
283 | + | else aF(ao, M, aG, aQ, false) | |
286 | 284 | } | |
287 | 285 | ||
288 | 286 | ||
289 | 287 | ||
290 | - | @Callable( | |
291 | - | func cancelOrder ( | |
292 | - | let | |
293 | - | let | |
294 | - | let | |
295 | - | let | |
296 | - | let | |
297 | - | if ( | |
288 | + | @Callable(aQ) | |
289 | + | func cancelOrder (B) = { | |
290 | + | let am = af(B) | |
291 | + | let L = (ae(B) - ah(B)) | |
292 | + | let aR = toString(aQ.caller) | |
293 | + | let aL = aj(B) | |
294 | + | let aG = ai(B) | |
295 | + | if (V) | |
298 | 296 | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
299 | - | else if (( | |
297 | + | else if ((am != aR)) | |
300 | 298 | then throw("permission denied") | |
301 | - | else if (( | |
299 | + | else if ((ag(B) != o)) | |
302 | 300 | then throw("invalid order status") | |
303 | - | else ScriptResult(WriteSet([DataEntry( | |
304 | - | then | |
305 | - | else | |
301 | + | else ScriptResult(WriteSet([DataEntry(z, if ((ab == B)) | |
302 | + | then aL | |
303 | + | else ab), DataEntry(J(aG), aL), DataEntry(I(aL), aG), DataEntry(G(B), n)]), TransferSet([ScriptTransfer(aQ.caller, L, unit)])) | |
306 | 304 | } | |
307 | 305 | ||
308 | 306 | ||
309 | 307 | ||
310 | - | @Callable( | |
311 | - | func sellBond () = if ( | |
308 | + | @Callable(aQ) | |
309 | + | func sellBond () = if (V) | |
312 | 310 | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
313 | - | else if (( | |
311 | + | else if ((ab == "")) | |
314 | 312 | then throw("empty orderbook") | |
315 | 313 | else { | |
316 | - | let | |
317 | - | let | |
318 | - | let | |
319 | - | let | |
320 | - | let | |
321 | - | let | |
322 | - | | |
314 | + | let aL = aj(ab) | |
315 | + | let aS = ah(ab) | |
316 | + | let aT = ac(ab) | |
317 | + | let ao = a(A(ab)) | |
318 | + | let aU = ae(ab) | |
319 | + | let aw = Address(fromBase58String(af(ab))) | |
320 | + | ap(ab, aL, aS, ao, aT, aU, aw, false) | |
323 | 321 | } | |
324 | 322 | ||
325 | 323 | ||
326 | 324 | ||
327 | - | @Callable( | |
325 | + | @Callable(aQ) | |
328 | 326 | func updateReservesAndNeutrinoSupply () = { | |
329 | - | func | |
327 | + | func aV (b) = { | |
330 | 328 | let c = getInteger(this, b) | |
331 | 329 | if ($isInstanceOf(c, "Int")) | |
332 | 330 | then { | |
333 | 331 | let d = c | |
334 | 332 | d | |
335 | 333 | } | |
336 | 334 | else 0 | |
337 | 335 | } | |
338 | 336 | ||
339 | - | let | |
340 | - | let | |
341 | - | WriteSet([DataEntry("updateReservesAndNeutrinoSupplyIdx", | |
337 | + | let aW = aV("updateReservesAndNeutrinoSupplyIdx") | |
338 | + | let aX = (aW + 1) | |
339 | + | WriteSet([DataEntry("updateReservesAndNeutrinoSupplyIdx", aX), DataEntry("reserve", Y), DataEntry("neutrinoSupply", Z), DataEntry("deficit", aa)]) | |
342 | 340 | } | |
343 | 341 | ||
344 | 342 | ||
345 | - | @Verifier( | |
346 | - | func | |
347 | - | let | |
348 | - | let | |
343 | + | @Verifier(aY) | |
344 | + | func aZ () = { | |
345 | + | let ba = ["D96T5UoL7E2FERaEwov9Frx8XFVPNGqZ4TyDiWvn1urJ", "Fk2zgbrRA8KytTVMVy6Df5i4tTEsKaqg6ybh6x6Hehjj", "37f1yE54FyMKwEkg413peq5Gbze9sBavASVeTYbQLTvJ", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"] | |
346 | + | let bb = ((((if (sigVerify(aY.bodyBytes, aY.proofs[0], fromBase58String(ba[0]))) | |
349 | 347 | then 1 | |
350 | - | else 0) + (if (sigVerify( | |
348 | + | else 0) + (if (sigVerify(aY.bodyBytes, aY.proofs[1], fromBase58String(ba[1]))) | |
351 | 349 | then 1 | |
352 | - | else 0)) + (if (sigVerify( | |
350 | + | else 0)) + (if (sigVerify(aY.bodyBytes, aY.proofs[2], fromBase58String(ba[2]))) | |
353 | 351 | then 1 | |
354 | - | else 0)) + (if (sigVerify( | |
352 | + | else 0)) + (if (sigVerify(aY.bodyBytes, aY.proofs[3], fromBase58String(ba[3]))) | |
355 | 353 | then 2 | |
356 | 354 | else 0)) | |
357 | - | ( | |
355 | + | (bb >= 3) | |
358 | 356 | } | |
359 | 357 |
github/deemru/w8io/026f985 136.40 ms ◑