tx · HkRWRRA3J6VXvk4mUhMTittmJDGpunjzkAWbwnTRXdxG

3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx:  -0.01600000 Waves

2023.03.01 16:44 [2471076] smart account 3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx > SELF 0.00000000 Waves

{ "type": 13, "id": "HkRWRRA3J6VXvk4mUhMTittmJDGpunjzkAWbwnTRXdxG", "fee": 1600000, "feeAssetId": null, "timestamp": 1677678246100, "version": 2, "chainId": 84, "sender": "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx", "senderPublicKey": "NaY7sqttWGpnVrcb6uE8xPp2VnMjT7fhv3q1TKGL9ar", "proofs": [ "5XbrHaw7ayC7s7sGKBq9612nD9Q1xieuJ4PJxtnoc5qhCBQ5LXZS3VKtWHPkhoU4mE9faDWobp64QFna1NgKxx5H", "4t2koyLKyypDXNU4cTCLxyZMFNEboM9G2tdE29aTmAJ8fvke1osAjS6Ba7zD5t8qGubSFuPCLzigpCJyoub8nQA9", "61u8myKPpjEaxYxpZSgQ2wvRaFnnf9Mb2Z1qEJbL36sgRfPoGh8i15boao5ZKVFLhpTZiLQwBTt8F9FNSF6jaMkE" ], "script": "base64:BgInCAISEAoOCAgICAgICAgICAgICAgSAwoBCBIMCgoBAgECAQIBAgECKwADU0VQAgJfXwAZSWR4Q29udHJvbENmZ05ldXRyaW5vRGFwcAABABhJZHhDb250cm9sQ2ZnQXVjdGlvbkRhcHAAAgAUSWR4Q29udHJvbENmZ1JwZERhcHAAAwAVSWR4Q29udHJvbENmZ01hdGhEYXBwAAQAHElkeENvbnRyb2xDZmdMaXF1aWRhdGlvbkRhcHAABQAVSWR4Q29udHJvbENmZ1Jlc3REYXBwAAYAHUlkeENvbnRyb2xDZmdOb2RlUmVnaXN0cnlEYXBwAAcAHElkeENvbnRyb2xDZmdOc2J0U3Rha2luZ0RhcHAACAAZSWR4Q29udHJvbENmZ01lZGlhdG9yRGFwcAAJABxJZHhDb250cm9sQ2ZnU3VyZlN0YWtpbmdEYXBwAAoAIElkeENvbnRyb2xDZmdHbnNidENvbnRyb2xsZXJEYXBwAAsAF0lkeENvbnRyb2xDZmdSZXN0VjJEYXBwAAwAG0lkeENvbnRyb2xDZmdHb3Zlcm5hbmNlRGFwcAANABxJZHhDb250cm9sQ2ZnUGVnUHJvdmlkZXJEYXBwAA4BEGtleUNvbnRyb2xDb25maWcAAhElc19fY29udHJvbENvbmZpZwEOZGF0YUNvbnRyb2xDZmcOEG5ldXRyaW5vQ29udHJhY3QPYXVjdGlvbkNvbnRyYWN0C3JwZENvbnRyYWN0DG1hdGhDb250cmFjdBNsaXF1aWRhdGlvbkNvbnRyYWN0DHJlc3RDb250cmFjdBRub2RlUmVnaXN0cnlDb250cmFjdBNuc2J0U3Rha2luZ0NvbnRyYWN0EG1lZGlhdG9yQ29udHJhY3QTc3VyZlN0YWtpbmdDb250cmFjdBdnbnNidENvbnRyb2xsZXJDb250cmFjdA5yZXN0VjJDb250cmFjdBJnb3Zlcm5hbmNlQ29udHJhY3QMZG9yYUNvbnRyYWN0CQC5CQIJAMwIAgIcJXMlcyVzJXMlcyVzJXMlcyVzJXMlcyVzJXMlcwkAzAgCBRBuZXV0cmlub0NvbnRyYWN0CQDMCAIFD2F1Y3Rpb25Db250cmFjdAkAzAgCBQtycGRDb250cmFjdAkAzAgCBQxtYXRoQ29udHJhY3QJAMwIAgUTbGlxdWlkYXRpb25Db250cmFjdAkAzAgCBQxyZXN0Q29udHJhY3QJAMwIAgUUbm9kZVJlZ2lzdHJ5Q29udHJhY3QJAMwIAgUTbnNidFN0YWtpbmdDb250cmFjdAkAzAgCBRBtZWRpYXRvckNvbnRyYWN0CQDMCAIFE3N1cmZTdGFraW5nQ29udHJhY3QJAMwIAgUXZ25zYnRDb250cm9sbGVyQ29udHJhY3QJAMwIAgUOcmVzdFYyQ29udHJhY3QJAMwIAgUSZ292ZXJuYW5jZUNvbnRyYWN0CQDMCAIFDGRvcmFDb250cmFjdAUDbmlsBQNTRVABFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8CBmFtb3VudAVwcmljZQkAawMJAGsDBQZhbW91bnQFBXByaWNlAMCEPQDAhD0AgMLXLwEYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AgdhZGRyZXNzA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhZGRyZXNzBQNrZXkAAAEYZ2V0U3RyaW5nQnlBZGRyZXNzQW5kS2V5AgdhZGRyZXNzA2tleQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQdhZGRyZXNzBQNrZXkCAAEWY29udmVydEpzb25BcnJheVRvTGlzdAEJanNvbkFycmF5CQC1CQIFCWpzb25BcnJheQIBLAAFcHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwIFcHJpY2UAAAAKcHJpY2VJbmRleAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzAgtwcmljZV9pbmRleAAAAAlpc0Jsb2NrZWQJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwIKaXNfYmxvY2tlZAcAEnBlcmNlbnRQcmljZU9mZnNldADoBwANcHViS2V5T3JhY2xlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzAgdvcmFjbGVzAgAAEXB1YktleU9yYWNsZXNMaXN0CQEWY29udmVydEpzb25BcnJheVRvTGlzdAEFDXB1YktleU9yYWNsZXMAD25ldXRyaW5vQWRkcmVzcwkBB0FkZHJlc3MBARoBVNflidhiIusxbJ+7yuaSiccNzSDicK1r3gASbGlxdWlkYXRpb25BZGRyZXNzCQEHQWRkcmVzcwEBGgFUhTvjHxcU6v6bh4bE1yasZWYGeJqLciC5AA1uZXV0cmlub0Fzc2V0ASD3dur394PKZdtuE+4CO89YKZWpwdGN8kvabNgdYoDI3gAPY29udHJvbENvbnRyYWN0BQR0aGlzAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgpjb250cm9sQ2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUKY29udHJvbENmZwUDaWR4CQCsAgICLUNvbnRyb2wgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgACmNvbnRyb2xDZmcJALUJAgkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJARBrZXlDb250cm9sQ29uZmlnAAUDU0VQABJnb3Zlcm5hbmNlQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRtJZHhDb250cm9sQ2ZnR292ZXJuYW5jZURhcHAAFW5ldXRyaW5vTG9ja2VkQmFsYW5jZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9uZXV0cmlub0FkZHJlc3MCFWJhbGFuY2VfbG9ja19uZXV0cmlubwAAABJ3YXZlc0xvY2tlZEJhbGFuY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPbmV1dHJpbm9BZGRyZXNzAhJiYWxhbmNlX2xvY2tfd2F2ZXMAAAAHcmVzZXJ2ZQkAZQIICQDvBwEFD25ldXRyaW5vQWRkcmVzcwdyZWd1bGFyBRJ3YXZlc0xvY2tlZEJhbGFuY2UADm5ldXRyaW5vU3VwcGx5CQBlAgkAZQIJAGQCBRVuZXV0cmlub0xvY2tlZEJhbGFuY2UICQEFdmFsdWUBCQDsBwEFDW5ldXRyaW5vQXNzZXQIcXVhbnRpdHkJAPAHAgUPbmV1dHJpbm9BZGRyZXNzBQ1uZXV0cmlub0Fzc2V0CQDwBwIFEmxpcXVpZGF0aW9uQWRkcmVzcwUNbmV1dHJpbm9Bc3NldAAHZGVmaWNpdAkAZQIFDm5ldXRyaW5vU3VwcGx5CQEWY29udmVydFdhdmVzVG9OZXV0cmlubwIFB3Jlc2VydmUFBXByaWNlARFmaW5kUHJpY2VzSW5SYW5nZQEGcHJpY2VzBA9taW5QZXJjZW50Qm91bmQAWgQPbWF4UGVyY2VudEJvdW5kAG4EAnAwCQCRAwIFBnByaWNlcwAABAZjaGVjazADCQBnAgAACQCRAwIFBnByaWNlcwAACQDMCAIAAAUDbmlsBANwMDEJAGkCCQBoAgkAkQMCBQZwcmljZXMAAQBkBQJwMAQDcDAyCQBpAgkAaAIJAJEDAgUGcHJpY2VzAAIAZAUCcDAEA3AwMwkAaQIJAGgCCQCRAwIFBnByaWNlcwADAGQFAnAwBANwMDQJAGkCCQBoAgkAkQMCBQZwcmljZXMABABkBQJwMAQGYXJyYXkxAwMJAGYCBQ9tYXhQZXJjZW50Qm91bmQFA3AwMQkAZgIFA3AwMQUPbWluUGVyY2VudEJvdW5kBwkAzAgCAAEJAMwIAgAABQNuaWwJAMwIAgAABQNuaWwEBmFycmF5MgMDCQBmAgUPbWF4UGVyY2VudEJvdW5kBQNwMDIJAGYCBQNwMDIFD21pblBlcmNlbnRCb3VuZAcJAMwIAgACBQZhcnJheTEFBmFycmF5MQQGYXJyYXkzAwMJAGYCBQ9tYXhQZXJjZW50Qm91bmQFA3AwMwkAZgIFA3AwMwUPbWluUGVyY2VudEJvdW5kBwkAzAgCAAMFBmFycmF5MgUGYXJyYXkyAwMJAGYCBQ9tYXhQZXJjZW50Qm91bmQFA3AwNAkAZgIFA3AwNAUPbWluUGVyY2VudEJvdW5kBwkAzAgCAAQFBmFycmF5MwUGYXJyYXkzBAZjaGVjazEDCQBnAgkAkAMBBQZjaGVjazAAAwUGY2hlY2swBAJwMQkAkQMCBQZwcmljZXMAAQMJAGcCAAAFAnAxCQDMCAIAAQUDbmlsBANwMTAJAGkCCQBoAgkAkQMCBQZwcmljZXMAAABkBQJwMQQDcDEyCQBpAgkAaAIJAJEDAgUGcHJpY2VzAAIAZAUCcDEEA3AxMwkAaQIJAGgCCQCRAwIFBnByaWNlcwADAGQFAnAxBANwMTQJAGkCCQBoAgkAkQMCBQZwcmljZXMABABkBQJwMQQGYXJyYXkxAwMJAGYCBQ9tYXhQZXJjZW50Qm91bmQFA3AxMAkAZgIFA3AxMAUPbWluUGVyY2VudEJvdW5kBwkAzAgCAAAJAMwIAgABBQNuaWwJAMwIAgABBQNuaWwEBmFycmF5MgMDCQBmAgUPbWF4UGVyY2VudEJvdW5kBQNwMTIJAGYCBQNwMTIFD21pblBlcmNlbnRCb3VuZAcJAMwIAgACBQZhcnJheTEFBmFycmF5MQQGYXJyYXkzAwMJAGYCBQ9tYXhQZXJjZW50Qm91bmQFA3AxMwkAZgIFA3AxMwUPbWluUGVyY2VudEJvdW5kBwkAzAgCAAMFBmFycmF5MgUGYXJyYXkyAwMJAGYCBQ9tYXhQZXJjZW50Qm91bmQFA3AxNAkAZgIFA3AxNAUPbWluUGVyY2VudEJvdW5kBwkAzAgCAAQFBmFycmF5MwUGYXJyYXkzBAZjaGVjazIDCQBnAgkAkAMBBQZjaGVjazEAAwUGY2hlY2sxBAJwMgkAkQMCBQZwcmljZXMAAgMJAGcCAAAFAnAyCQDMCAIAAgUDbmlsBANwMjAJAGkCCQBoAgkAkQMCBQZwcmljZXMAAABkBQJwMgQDcDIxCQBpAgkAaAIJAJEDAgUGcHJpY2VzAAEAZAUCcDIEA3AyMwkAaQIJAGgCCQCRAwIFBnByaWNlcwADAGQFAnAyBANwMjQJAGkCCQBoAgkAkQMCBQZwcmljZXMABABkBQJwMgQGYXJyYXkxAwMJAGYCBQ9tYXhQZXJjZW50Qm91bmQFA3AyMAkAZgIFA3AyMAUPbWluUGVyY2VudEJvdW5kBwkAzAgCAAAJAMwIAgACBQNuaWwJAMwIAgACBQNuaWwEBmFycmF5MgMDCQBmAgUPbWF4UGVyY2VudEJvdW5kBQNwMjEJAGYCBQNwMjEFD21pblBlcmNlbnRCb3VuZAcJAMwIAgABBQZhcnJheTEFBmFycmF5MQQGYXJyYXkzAwMJAGYCBQ9tYXhQZXJjZW50Qm91bmQFA3AyMwkAZgIFA3AyMwUPbWluUGVyY2VudEJvdW5kBwkAzAgCAAMFBmFycmF5MgUGYXJyYXkyAwMJAGYCBQ9tYXhQZXJjZW50Qm91bmQFA3AyNAkAZgIFA3AyNAUPbWluUGVyY2VudEJvdW5kBwkAzAgCAAQFBmFycmF5MwUGYXJyYXkzBAZjaGVjazMDCQBnAgkAkAMBBQZjaGVjazIAAwUGY2hlY2syBAJwMwkAkQMCBQZwcmljZXMAAwMJAGcCAAAFAnAzCQDMCAIAAwUDbmlsBANwMzAJAGkCCQBoAgkAkQMCBQZwcmljZXMAAABkBQJwMwQDcDMxCQBpAgkAaAIJAJEDAgUGcHJpY2VzAAEAZAUCcDMEA3AzMgkAaQIJAGgCCQCRAwIFBnByaWNlcwACAGQFAnAzBANwMzQJAGkCCQBoAgkAkQMCBQZwcmljZXMABABkBQJwMwQGYXJyYXkxAwMJAGYCBQ9tYXhQZXJjZW50Qm91bmQFA3AzMAkAZgIFA3AzMAUPbWluUGVyY2VudEJvdW5kBwkAzAgCAAAJAMwIAgADBQNuaWwJAMwIAgADBQNuaWwEBmFycmF5MgMDCQBmAgUPbWF4UGVyY2VudEJvdW5kBQNwMzEJAGYCBQNwMzEFD21pblBlcmNlbnRCb3VuZAcJAMwIAgABBQZhcnJheTEFBmFycmF5MQQGYXJyYXkzAwMJAGYCBQ9tYXhQZXJjZW50Qm91bmQFA3AzMgkAZgIFA3AzMgUPbWluUGVyY2VudEJvdW5kBwkAzAgCAAIFBmFycmF5MgUGYXJyYXkyAwMJAGYCBQ9tYXhQZXJjZW50Qm91bmQFA3AzNAkAZgIFA3AzNAUPbWluUGVyY2VudEJvdW5kBwkAzAgCAAQFBmFycmF5MwUGYXJyYXkzAwkAZwIJAJADAQUGY2hlY2szAAMFBmNoZWNrMwQCcDQJAJEDAgUGcHJpY2VzAAQDCQBnAgAABQJwNAkAzAgCAAQFA25pbAQDcDQwCQBpAgkAaAIJAJEDAgUGcHJpY2VzAAAAZAUCcDQEA3A0MQkAaQIJAGgCCQCRAwIFBnByaWNlcwABAGQFAnA0BANwNDIJAGkCCQBoAgkAkQMCBQZwcmljZXMAAgBkBQJwNAQDcDQzCQBpAgkAaAIJAJEDAgUGcHJpY2VzAAMAZAUCcDQEBmFycmF5MQMDCQBmAgUPbWF4UGVyY2VudEJvdW5kBQNwNDAJAGYCBQNwNDAFD21pblBlcmNlbnRCb3VuZAcJAMwIAgAACQDMCAIABAUDbmlsCQDMCAIABAUDbmlsBAZhcnJheTIDAwkAZgIFD21heFBlcmNlbnRCb3VuZAUDcDQxCQBmAgUDcDQxBQ9taW5QZXJjZW50Qm91bmQHCQDMCAIAAQUGYXJyYXkxBQZhcnJheTEEBmFycmF5MwMDCQBmAgUPbWF4UGVyY2VudEJvdW5kBQNwNDIJAGYCBQNwNDIFD21pblBlcmNlbnRCb3VuZAcJAMwIAgACBQZhcnJheTIFBmFycmF5MgMDCQBmAgUPbWF4UGVyY2VudEJvdW5kBQNwNDMJAGYCBQNwNDMFD21pblBlcmNlbnRCb3VuZAcJAMwIAgADBQZhcnJheTMFBmFycmF5MwESZm9ybWF0dGluZ1ByaWNlTXNnAQVwcmljZQkAmwMBCQCsAgIJAKwCAgkArAICCQCsAgICE1dBVkVTTkVVVFJJTk9QUkVGSVgCAV8JAKQDAQUGaGVpZ2h0AgFfCQCkAwEFBXByaWNlAQpQcmljZUVudHJ5AwhuZXdQcmljZQphc3NldElkU3RyDW5ld1ByaWNlSW5kZXgECWhlaWdodFN0cgkApAMBBQZoZWlnaHQEEG5ld1ByaWNlSW5kZXhTdHIJAKQDAQUNbmV3UHJpY2VJbmRleAQPcHJpY2VCeUFzc2V0S0VZCQC5CQIJAMwIAgIcJXMlcyVzX19jb21tb25fX3ByaWNlQnlBc3NldAkAzAgCBQphc3NldElkU3RyBQNuaWwFA1NFUAQQcHJpY2VCeUhlaWdodEtFWQkAuQkCCQDMCAICHyVzJXMlcyVkX19jb21tb25fX3ByaWNlQnlIZWlnaHQJAMwIAgUKYXNzZXRJZFN0cgkAzAgCBQloZWlnaHRTdHIFA25pbAUDU0VQBA9wcmljZUJ5SW5kZXhLRVkJALkJAgkAzAgCAh4lcyVzJXMlZF9fY29tbW9uX19wcmljZUJ5SW5kZXgJAMwIAgUKYXNzZXRJZFN0cgkAzAgCBRBuZXdQcmljZUluZGV4U3RyBQNuaWwFA1NFUAkAzAgCCQEMSW50ZWdlckVudHJ5AgUPcHJpY2VCeUFzc2V0S0VZBQhuZXdQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUPcHJpY2VCeUluZGV4S0VZBQhuZXdQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUQcHJpY2VCeUhlaWdodEtFWQUIbmV3UHJpY2UFA25pbAMBaQENY29uc3RydWN0b3JWMQ4QbmV1dHJpbm9Db250cmFjdA9hdWN0aW9uQ29udHJhY3QLcnBkQ29udHJhY3QMbWF0aENvbnRyYWN0E2xpcXVpZGF0aW9uQ29udHJhY3QMcmVzdENvbnRyYWN0FG5vZGVSZWdpc3RyeUNvbnRyYWN0E25zYnRTdGFraW5nQ29udHJhY3QQbWVkaWF0b3JDb250cmFjdBNzdXJmU3Rha2luZ0NvbnRyYWN0F2duc2J0Q29udHJvbGxlckNvbnRyYWN0DnJlc3RWMkNvbnRyYWN0EmdvdmVybmFuY2VDb250cmFjdAxkb3JhQ29udHJhY3QDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUNvbnRyb2xDb25maWcACQEOZGF0YUNvbnRyb2xDZmcOBRBuZXV0cmlub0NvbnRyYWN0BQ9hdWN0aW9uQ29udHJhY3QFC3JwZENvbnRyYWN0BQxtYXRoQ29udHJhY3QFE2xpcXVpZGF0aW9uQ29udHJhY3QFDHJlc3RDb250cmFjdAUUbm9kZVJlZ2lzdHJ5Q29udHJhY3QFE25zYnRTdGFraW5nQ29udHJhY3QFEG1lZGlhdG9yQ29udHJhY3QFE3N1cmZTdGFraW5nQ29udHJhY3QFF2duc2J0Q29udHJvbGxlckNvbnRyYWN0BQ5yZXN0VjJDb250cmFjdAUSZ292ZXJuYW5jZUNvbnRyYWN0BQxkb3JhQ29udHJhY3QFA25pbAFpARVjYWxsRW1lcmdlbmN5U2h1dGRvd24BBnJlYXNvbgQaQXV0b0VtZXJnZW5jeU9yYWNsZUFkZHJlc3MCIzNNendSQXExTXNmNnRXQTlXU283SEd0TFRCR2piaVRWQXlkBA1jYWxsZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMDCQECIT0CBRpBdXRvRW1lcmdlbmN5T3JhY2xlQWRkcmVzcwUNY2FsbGVyQWRkcmVzcwkBAiE9AgkApQgBBRJnb3Zlcm5hbmNlQ29udHJhY3QFDWNhbGxlckFkZHJlc3MHCQACAQI9Y2FsbGVyIG11c3QgYmUgb25lIGFuIGVtZXJnZW5jeSBvcmFjbGUgb3IgR292ZXJuYW5jZSBjb250cmFjdAkAzAgCCQEMQm9vbGVhbkVudHJ5AgIKaXNfYmxvY2tlZAYJAMwIAgkBC1N0cmluZ0VudHJ5AgIRaXNfYmxvY2tlZF9jYWxsZXIFDWNhbGxlckFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgIRaXNfYmxvY2tlZF9yZWFzb24FBnJlYXNvbgUDbmlsAWkBFGZpbmFsaXplQ3VycmVudFByaWNlCgZwcmljZTEFc2lnbjEGcHJpY2UyBXNpZ24yBnByaWNlMwVzaWduMwZwcmljZTQFc2lnbjQGcHJpY2U1BXNpZ241AwUJaXNCbG9ja2VkCQACAQJaY29udHJhY3QgaXMgYmxvY2tlZCBieSBFTUVSR0VOQ1kgU0hVVERPV04gYWN0aW9ucyB1bnRpbGwgcmVhY3RpdmF0aW9uIGJ5IGVtZXJnZW5jeSBvcmFjbGVzAwkBAiE9AgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgICBnByaWNlXwkApAMBBQZoZWlnaHQAAAAACQACAQIPd2FpdCBuZXh0IGJsb2NrAwkBAiE9AgkAkQMCBRFwdWJLZXlPcmFjbGVzTGlzdAkAagIFBmhlaWdodAAFCQDYBAEIBQFpD2NhbGxlclB1YmxpY0tleQkAAgEJAKwCAgkArAICCQCsAgICGk91dCBvZiB0dXJuIGZpbmFsaXphdGlvbjogCQCkAwEFBmhlaWdodAIdIGJsb2NrIHNob3VsZCBiZSBmaW5hbGl6ZSBieSAJAJEDAgURcHViS2V5T3JhY2xlc0xpc3QJAGoCBQZoZWlnaHQABQQGcHJpY2VzCQDMCAIDCQDEEwMJARJmb3JtYXR0aW5nUHJpY2VNc2cBBQZwcmljZTEFBXNpZ24xCQDZBAEJAJEDAgURcHViS2V5T3JhY2xlc0xpc3QAAAUGcHJpY2UxAAAJAMwIAgMJAMQTAwkBEmZvcm1hdHRpbmdQcmljZU1zZwEFBnByaWNlMgUFc2lnbjIJANkEAQkAkQMCBRFwdWJLZXlPcmFjbGVzTGlzdAABBQZwcmljZTIAAAkAzAgCAwkAxBMDCQESZm9ybWF0dGluZ1ByaWNlTXNnAQUGcHJpY2UzBQVzaWduMwkA2QQBCQCRAwIFEXB1YktleU9yYWNsZXNMaXN0AAIFBnByaWNlMwAACQDMCAIDCQDEEwMJARJmb3JtYXR0aW5nUHJpY2VNc2cBBQZwcmljZTQFBXNpZ240CQDZBAEJAJEDAgURcHViS2V5T3JhY2xlc0xpc3QAAwUGcHJpY2U0AAAJAMwIAgMJAMQTAwkBEmZvcm1hdHRpbmdQcmljZU1zZwEFBnByaWNlNQUFc2lnbjUJANkEAQkAkQMCBRFwdWJLZXlPcmFjbGVzTGlzdAAEBQZwcmljZTUAAAUDbmlsBA56ZXJvUHJpY2VDb3VudAMJAAACCQCRAwIFBnByaWNlcwAAAAAAAQkAZAIAAAMJAAACCQCRAwIFBnByaWNlcwABAAAAAQkAZAIAAAMJAAACCQCRAwIFBnByaWNlcwACAAAAAQkAZAIAAAMJAAACCQCRAwIFBnByaWNlcwADAAAAAQkAZAIAAAMJAAACCQCRAwIFBnByaWNlcwAEAAAAAQAAAwkAZwIFDnplcm9QcmljZUNvdW50AAMJAAIBAiAzIHByaWNlcyBvciBtb3JlIGFyZSBlcXVhbHMgdG8gMAQNcHJpY2VzSW5SYW5nZQkBEWZpbmRQcmljZXNJblJhbmdlAQUGcHJpY2VzBBNwcmljZVByb3ZpZGluZ0NvdW50CQCQAwEFDXByaWNlc0luUmFuZ2UDCQBmAgADBRNwcmljZVByb3ZpZGluZ0NvdW50CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgI6Q291bGQgbm90IGZpbmFsaXplIHByaWNlIGJlY2F1c2Ugb2YgYmlnIHZhcmlhdGlvbjogaGVpZ2h0PQkApAMBBQZoZWlnaHQCAQoJAJEDAgURcHViS2V5T3JhY2xlc0xpc3QAAAIBPQkApAMBCQCRAwIFBnByaWNlcwAAAgEKCQCRAwIFEXB1YktleU9yYWNsZXNMaXN0AAECAT0JAKQDAQkAkQMCBQZwcmljZXMAAQIBCgkAkQMCBRFwdWJLZXlPcmFjbGVzTGlzdAACAgE9CQCkAwEJAJEDAgUGcHJpY2VzAAICAQoJAJEDAgURcHViS2V5T3JhY2xlc0xpc3QAAwIBPQkApAMBCQCRAwIFBnByaWNlcwADAgEKCQCRAwIFEXB1YktleU9yYWNsZXNMaXN0AAQCAT0JAKQDAQkAkQMCBQZwcmljZXMABAQEc3VtMQkAZAIJAGQCCQCRAwIFBnByaWNlcwkAkQMCBQ1wcmljZXNJblJhbmdlAAAJAJEDAgUGcHJpY2VzCQCRAwIFDXByaWNlc0luUmFuZ2UAAQkAkQMCBQZwcmljZXMJAJEDAgUNcHJpY2VzSW5SYW5nZQACBARzdW0yAwkAZwIFE3ByaWNlUHJvdmlkaW5nQ291bnQABAkAZAIFBHN1bTEJAJEDAgUGcHJpY2VzCQCRAwIFDXByaWNlc0luUmFuZ2UAAwUEc3VtMQQIcHJpY2VTdW0DCQBnAgUTcHJpY2VQcm92aWRpbmdDb3VudAAFCQBkAgUEc3VtMgkAkQMCBQZwcmljZXMJAJEDAgUNcHJpY2VzSW5SYW5nZQAEBQRzdW0yAwkAZwIFE3ByaWNlUHJvdmlkaW5nQ291bnQABgkAAgECHkludmFsaWQgcHJpY2VzSW5SYW5nZSBjcmVhdGlvbgQIbmV3UHJpY2UJAGkCBQhwcmljZVN1bQUTcHJpY2VQcm92aWRpbmdDb3VudAQKbmV3V3hQcmljZQCBsQQECXd4QXNzZXRJZAIsRU1BTUx4RG52M3hpejhSWGc4QnRqMzNqY0V3M3dMY3pMM0pLWVltdXVicGMDAwkAZwIFCG5ld1ByaWNlCQBkAgUFcHJpY2UJAGkCCQBoAgUFcHJpY2UFEnBlcmNlbnRQcmljZU9mZnNldABkBgkAZwIJAGUCBQVwcmljZQkAaQIJAGgCBQVwcmljZQUScGVyY2VudFByaWNlT2Zmc2V0AGQFCG5ld1ByaWNlBAZyZWFzb24CP2F1dG9tYXRpYyBlbWVyZ2VuY3kgc2h1dGRvd24gYmVjYXVzZSBvZiBsYXJnZSBwcmljZSB2YXJpYWJpbGl0eQkAzAgCCQEMQm9vbGVhbkVudHJ5AgIKaXNfYmxvY2tlZAYJAMwIAgkBC1N0cmluZ0VudHJ5AgIRaXNfYmxvY2tlZF9jYWxsZXIJAKUIAQUEdGhpcwkAzAgCCQELU3RyaW5nRW50cnkCAhFpc19ibG9ja2VkX3JlYXNvbgUGcmVhc29uCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIRYmxhY2tfc3dhcm1fcHJpY2UCAV8JAKQDAQUGaGVpZ2h0BQhuZXdQcmljZQUDbmlsBA1uZXdQcmljZUluZGV4CQBkAgUKcHJpY2VJbmRleAABCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgIFcHJpY2UFCG5ld1ByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICBnByaWNlXwkApAMBBQZoZWlnaHQFCG5ld1ByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICDHByaWNlX2luZGV4XwkApAMBBQ1uZXdQcmljZUluZGV4BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQICC3ByaWNlX2luZGV4BQ1uZXdQcmljZUluZGV4CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICDmluZGV4QnlIZWlnaHRfCQCkAwEFBmhlaWdodAUNbmV3UHJpY2VJbmRleAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAg1wcmljZUJ5SW5kZXhfCQCkAwEFDW5ld1ByaWNlSW5kZXgFCG5ld1ByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICCGRlZmljaXRfCQCkAwEFBmhlaWdodAUHZGVmaWNpdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAg9uZXV0cmlub1N1cHBseV8JAKQDAQUGaGVpZ2h0BQ5uZXV0cmlub1N1cHBseQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhBkZWZpY2l0X3BlcmNlbnRfCQCkAwEFBmhlaWdodAMJAQIhPQIFDm5ldXRyaW5vU3VwcGx5AAAJAGkCCQBoAgUHZGVmaWNpdABkBQ5uZXV0cmlub1N1cHBseQAABQNuaWwJAQpQcmljZUVudHJ5AwUIbmV3UHJpY2UCBVdBVkVTBQ1uZXdQcmljZUluZGV4CQEKUHJpY2VFbnRyeQMFCm5ld1d4UHJpY2UFCXd4QXNzZXRJZAUNbmV3UHJpY2VJbmRleAECdHgBBnZlcmlmeQAEE3B1YktleUFkbWluc0xpc3RTdHIJALkJAgkAzAgCAixFeHRFRUsxOW5tS2o5bUNwbld5dkVFSkZZQVRMTWNWRU12b2hoVUhreUhObQkAzAgCAixFdjVweTVGZkJRWDljWnBZS25mUXJUQjQ5QnlmOFFtcFpXZURWUmltNHlWNwkAzAgCAixEVXV1TGpYdTk4bkJ3WmM3ZnF3Q1RqdEEzbm5Sd2dUYmtNU3I1U1UyTm1EUgkAzAgCAixEVXV1TGpYdTk4bkJ3WmM3ZnF3Q1RqdEEzbm5Sd2dUYmtNU3I1U1UyTm1EUgUDbmlsBQNTRVAEEHB1YktleUFkbWluc0xpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9jb250cm9sQ29udHJhY3QCDCVzX19tdWx0aXNpZwUTcHViS2V5QWRtaW5zTGlzdFN0cgUDU0VQBAVjb3VudAkAZAIJAGQCCQBkAgMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJANkEAQkAkQMCBRBwdWJLZXlBZG1pbnNMaXN0AAAAAQAAAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAQkA2QQBCQCRAwIFEHB1YktleUFkbWluc0xpc3QAAQABAAADCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwACCQDZBAEJAJEDAgUQcHViS2V5QWRtaW5zTGlzdAACAAEAAAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAMJANkEAQkAkQMCBRBwdWJLZXlBZG1pbnNMaXN0AAMAAgAACQBnAgUFY291bnQAAx/Wp7I=", "height": 2471076, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GYbWdEekRCGbPh7ZiYTkigKdpq7LdxvRXPMjXmrMp6zF Next: 9Tx1kaq6wosGXnTuSWsr3DqNnSu3qcKk1rXreTN7L5Jf Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
259259 func aQ (H) = toBytes((((("WAVESNEUTRINOPREFIX" + "_") + toString(height)) + "_") + toString(H)))
260260
261261
262-@Callable(aR)
263-func constructorV1 (r,s,t,u,v,w,x,y,z,A,B,C,D,E) = if ((aR.caller != this))
262+func aR (aS,aT,aU) = {
263+ let aV = toString(height)
264+ let aW = toString(aU)
265+ let aX = makeString(["%s%s%s__common__priceByAsset", aT], a)
266+ let aY = makeString(["%s%s%s%d__common__priceByHeight", aT, aV], a)
267+ let aZ = makeString(["%s%s%s%d__common__priceByIndex", aT, aW], a)
268+[IntegerEntry(aX, aS), IntegerEntry(aZ, aS), IntegerEntry(aY, aS)]
269+ }
270+
271+
272+@Callable(ba)
273+func constructorV1 (r,s,t,u,v,w,x,y,z,A,B,C,D,E) = if ((ba.caller != this))
264274 then throw("permissions denied")
265275 else [StringEntry(p(), q(r, s, t, u, v, w, x, y, z, A, B, C, D, E))]
266276
267277
268278
269-@Callable(aR)
270-func callEmergencyShutdown (aS) = {
271- let aT = "3MwGSjMPHqX1DhEomE3bzp5tjN1GJZSNY5n"
272- let aU = toString(aR.caller)
273- if (if ((aT != aU))
274- then (toString(D) != aU)
279+@Callable(ba)
280+func callEmergencyShutdown (bb) = {
281+ let bc = "3MzwRAq1Msf6tWA9WSo7HGtLTBGjbiTVAyd"
282+ let bd = toString(ba.caller)
283+ if (if ((bc != bd))
284+ then (toString(D) != bd)
275285 else false)
276286 then throw("caller must be one an emergency oracle or Governance contract")
277- else [BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", aU), StringEntry("is_blocked_reason", aS)]
287+ else [BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", bd), StringEntry("is_blocked_reason", bb)]
278288 }
279289
280290
281291
282-@Callable(aR)
283-func finalizeCurrentPrice (aV,aW,aX,aY,aZ,ba,bb,bc,bd,be) = if (P)
292+@Callable(ba)
293+func finalizeCurrentPrice (be,bf,bg,bh,bi,bj,bk,bl,bm,bn) = if (P)
284294 then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles")
285295 else if ((valueOrElse(getInteger(this, ("price_" + toString(height))), 0) != 0))
286296 then throw("wait next block")
287- else if ((S[(height % 5)] != toBase58String(aR.callerPublicKey)))
297+ else if ((S[(height % 5)] != toBase58String(ba.callerPublicKey)))
288298 then throw(((("Out of turn finalization: " + toString(height)) + " block should be finalize by ") + S[(height % 5)]))
289299 else {
290- let ah = [if (sigVerify_8Kb(aQ(aV), aW, fromBase58String(S[0])))
291- then aV
292- else 0, if (sigVerify_8Kb(aQ(aX), aY, fromBase58String(S[1])))
293- then aX
294- else 0, if (sigVerify_8Kb(aQ(aZ), ba, fromBase58String(S[2])))
295- then aZ
296- else 0, if (sigVerify_8Kb(aQ(bb), bc, fromBase58String(S[3])))
297- then bb
298- else 0, if (sigVerify_8Kb(aQ(bd), be, fromBase58String(S[4])))
299- then bd
300+ let ah = [if (sigVerify_8Kb(aQ(be), bf, fromBase58String(S[0])))
301+ then be
302+ else 0, if (sigVerify_8Kb(aQ(bg), bh, fromBase58String(S[1])))
303+ then bg
304+ else 0, if (sigVerify_8Kb(aQ(bi), bj, fromBase58String(S[2])))
305+ then bi
306+ else 0, if (sigVerify_8Kb(aQ(bk), bl, fromBase58String(S[3])))
307+ then bk
308+ else 0, if (sigVerify_8Kb(aQ(bm), bn, fromBase58String(S[4])))
309+ then bm
300310 else 0]
301- let bf = if ((ah[0] == 0))
311+ let bo = if ((ah[0] == 0))
302312 then 1
303313 else (0 + (if ((ah[1] == 0))
304314 then 1
309319 else (0 + (if ((ah[4] == 0))
310320 then 1
311321 else 0))))))))
312- if ((bf >= 3))
322+ if ((bo >= 3))
313323 then throw("3 prices or more are equals to 0")
314324 else {
315- let bg = ag(ah)
316- let bh = size(bg)
317- if ((3 > bh))
325+ let bp = ag(ah)
326+ let bq = size(bp)
327+ if ((3 > bq))
318328 then throw(((((((((((((((((((((("Could not finalize price because of big variation: height=" + toString(height)) + "
319329 ") + S[0]) + "=") + toString(ah[0])) + "
320330 ") + S[1]) + "=") + toString(ah[1])) + "
322332 ") + S[3]) + "=") + toString(ah[3])) + "
323333 ") + S[4]) + "=") + toString(ah[4])))
324334 else {
325- let bi = ((ah[bg[0]] + ah[bg[1]]) + ah[bg[2]])
326- let bj = if ((bh >= 4))
327- then (bi + ah[bg[3]])
328- else bi
329- let bk = if ((bh >= 5))
330- then (bj + ah[bg[4]])
331- else bj
332- if ((bh >= 6))
335+ let br = ((ah[bp[0]] + ah[bp[1]]) + ah[bp[2]])
336+ let bs = if ((bq >= 4))
337+ then (br + ah[bp[3]])
338+ else br
339+ let bt = if ((bq >= 5))
340+ then (bs + ah[bp[4]])
341+ else bs
342+ if ((bq >= 6))
333343 then throw("Invalid pricesInRange creation")
334344 else {
335- let bl = (bk / bh)
336- if (if ((bl >= (H + ((H * Q) / 100))))
345+ let aS = (bt / bq)
346+ let bu = 71809
347+ let bv = "EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc"
348+ if (if ((aS >= (H + ((H * Q) / 100))))
337349 then true
338- else ((H - ((H * Q) / 100)) >= bl))
350+ else ((H - ((H * Q) / 100)) >= aS))
339351 then {
340- let aS = "automatic emergency shutdown because of large price variability"
341-[BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", toString(this)), StringEntry("is_blocked_reason", aS), IntegerEntry((("black_swarm_price" + "_") + toString(height)), bl)]
352+ let bb = "automatic emergency shutdown because of large price variability"
353+[BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", toString(this)), StringEntry("is_blocked_reason", bb), IntegerEntry((("black_swarm_price" + "_") + toString(height)), aS)]
342354 }
343355 else {
344- let bm = (O + 1)
345-[IntegerEntry("price", bl), IntegerEntry(("price_" + toString(height)), bl), IntegerEntry("price_index", bm), IntegerEntry(("price_index_" + toString(bm)), height), IntegerEntry(("deficit_" + toString(height)), af), IntegerEntry(("neutrinoSupply_" + toString(height)), ae), IntegerEntry(("deficit_percent_" + toString(height)), if ((ae != 0))
356+ let aU = (O + 1)
357+ (([IntegerEntry("price", aS), IntegerEntry(("price_" + toString(height)), aS), IntegerEntry(("price_index_" + toString(aU)), height), IntegerEntry("price_index", aU), IntegerEntry(("indexByHeight_" + toString(height)), aU), IntegerEntry(("priceByIndex_" + toString(aU)), aS), IntegerEntry(("deficit_" + toString(height)), af), IntegerEntry(("neutrinoSupply_" + toString(height)), ae), IntegerEntry(("deficit_percent_" + toString(height)), if ((ae != 0))
346358 then ((af * 100) / ae)
347- else 0)]
359+ else 0)] ++ aR(aS, "WAVES", aU)) ++ aR(bu, bv, aU))
348360 }
349361 }
350362 }
352364 }
353365
354366
355-@Verifier(bn)
356-func bo () = {
357- let bp = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], a)
358- let bq = split(valueOrElse(getString(W, "%s__multisig"), bp), a)
359- let br = ((((if (sigVerify(bn.bodyBytes, bn.proofs[0], fromBase58String(bq[0])))
367+@Verifier(bw)
368+func bx () = {
369+ let by = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], a)
370+ let bz = split(valueOrElse(getString(W, "%s__multisig"), by), a)
371+ let bA = ((((if (sigVerify(bw.bodyBytes, bw.proofs[0], fromBase58String(bz[0])))
360372 then 1
361- else 0) + (if (sigVerify(bn.bodyBytes, bn.proofs[1], fromBase58String(bq[1])))
373+ else 0) + (if (sigVerify(bw.bodyBytes, bw.proofs[1], fromBase58String(bz[1])))
362374 then 1
363- else 0)) + (if (sigVerify(bn.bodyBytes, bn.proofs[2], fromBase58String(bq[2])))
375+ else 0)) + (if (sigVerify(bw.bodyBytes, bw.proofs[2], fromBase58String(bz[2])))
364376 then 1
365- else 0)) + (if (sigVerify(bn.bodyBytes, bn.proofs[3], fromBase58String(bq[3])))
377+ else 0)) + (if (sigVerify(bw.bodyBytes, bw.proofs[3], fromBase58String(bz[3])))
366378 then 2
367379 else 0))
368- (br >= 3)
380+ (bA >= 3)
369381 }
370382
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 1
77
88 let c = 2
99
1010 let d = 3
1111
1212 let e = 4
1313
1414 let f = 5
1515
1616 let g = 6
1717
1818 let h = 7
1919
2020 let i = 8
2121
2222 let j = 9
2323
2424 let k = 10
2525
2626 let l = 11
2727
2828 let m = 12
2929
3030 let n = 13
3131
3232 let o = 14
3333
3434 func p () = "%s__controlConfig"
3535
3636
3737 func q (r,s,t,u,v,w,x,y,z,A,B,C,D,E) = makeString(["%s%s%s%s%s%s%s%s%s%s%s%s%s%s", r, s, t, u, v, w, x, y, z, A, B, C, D, E], a)
3838
3939
4040 func F (G,H) = fraction(fraction(G, H, 1000000), 1000000, 100000000)
4141
4242
4343 func I (J,K) = valueOrElse(getInteger(addressFromStringValue(J), K), 0)
4444
4545
4646 func L (J,K) = valueOrElse(getString(J, K), "")
4747
4848
4949 func M (N) = split(N, ",")
5050
5151
5252 let H = valueOrElse(getInteger(this, "price"), 0)
5353
5454 let O = valueOrElse(getInteger(this, "price_index"), 0)
5555
5656 let P = valueOrElse(getBoolean(this, "is_blocked"), false)
5757
5858 let Q = 1000
5959
6060 let R = valueOrElse(getString(this, "oracles"), "")
6161
6262 let S = M(R)
6363
6464 let T = Address(base58'3N9be2mwrA52WJho6DiesZkk4351GvpnWuj')
6565
6666 let U = Address(base58'3N24ZPUAMhFm76N3vbNiiDtFqfUnmBHTc5N')
6767
6868 let V = base58'HezsdQuRDtzksAYUy97gfhKy7Z1NW2uXYSHA3bgqenNZ'
6969
7070 let W = this
7171
7272 func X (J,K) = valueOrErrorMessage(getString(J, K), makeString(["mandatory ", toString(J), ".", K, " is not defined"], ""))
7373
7474
7575 func Y (Z,aa) = valueOrErrorMessage(addressFromString(Z[aa]), ("Control cfg doesn't contain address at index " + toString(aa)))
7676
7777
7878 let Z = split(X(this, p()), a)
7979
8080 let D = Y(Z, n)
8181
8282 let ab = valueOrElse(getInteger(T, "balance_lock_neutrino"), 0)
8383
8484 let ac = valueOrElse(getInteger(T, "balance_lock_waves"), 0)
8585
8686 let ad = (wavesBalance(T).regular - ac)
8787
8888 let ae = (((ab + value(assetInfo(V)).quantity) - assetBalance(T, V)) - assetBalance(U, V))
8989
9090 let af = (ae - F(ad, H))
9191
9292 func ag (ah) = {
9393 let ai = 90
9494 let aj = 110
9595 let ak = ah[0]
9696 let al = if ((0 >= ah[0]))
9797 then [0]
9898 else {
9999 let am = ((ah[1] * 100) / ak)
100100 let an = ((ah[2] * 100) / ak)
101101 let ao = ((ah[3] * 100) / ak)
102102 let ap = ((ah[4] * 100) / ak)
103103 let aq = if (if ((aj > am))
104104 then (am > ai)
105105 else false)
106106 then [1, 0]
107107 else [0]
108108 let ar = if (if ((aj > an))
109109 then (an > ai)
110110 else false)
111111 then 2 :: aq
112112 else aq
113113 let as = if (if ((aj > ao))
114114 then (ao > ai)
115115 else false)
116116 then 3 :: ar
117117 else ar
118118 if (if ((aj > ap))
119119 then (ap > ai)
120120 else false)
121121 then 4 :: as
122122 else as
123123 }
124124 let at = if ((size(al) >= 3))
125125 then al
126126 else {
127127 let au = ah[1]
128128 if ((0 >= au))
129129 then [1]
130130 else {
131131 let av = ((ah[0] * 100) / au)
132132 let aw = ((ah[2] * 100) / au)
133133 let ax = ((ah[3] * 100) / au)
134134 let ay = ((ah[4] * 100) / au)
135135 let aq = if (if ((aj > av))
136136 then (av > ai)
137137 else false)
138138 then [0, 1]
139139 else [1]
140140 let ar = if (if ((aj > aw))
141141 then (aw > ai)
142142 else false)
143143 then 2 :: aq
144144 else aq
145145 let as = if (if ((aj > ax))
146146 then (ax > ai)
147147 else false)
148148 then 3 :: ar
149149 else ar
150150 if (if ((aj > ay))
151151 then (ay > ai)
152152 else false)
153153 then 4 :: as
154154 else as
155155 }
156156 }
157157 let az = if ((size(at) >= 3))
158158 then at
159159 else {
160160 let aA = ah[2]
161161 if ((0 >= aA))
162162 then [2]
163163 else {
164164 let aB = ((ah[0] * 100) / aA)
165165 let aC = ((ah[1] * 100) / aA)
166166 let aD = ((ah[3] * 100) / aA)
167167 let aE = ((ah[4] * 100) / aA)
168168 let aq = if (if ((aj > aB))
169169 then (aB > ai)
170170 else false)
171171 then [0, 2]
172172 else [2]
173173 let ar = if (if ((aj > aC))
174174 then (aC > ai)
175175 else false)
176176 then 1 :: aq
177177 else aq
178178 let as = if (if ((aj > aD))
179179 then (aD > ai)
180180 else false)
181181 then 3 :: ar
182182 else ar
183183 if (if ((aj > aE))
184184 then (aE > ai)
185185 else false)
186186 then 4 :: as
187187 else as
188188 }
189189 }
190190 let aF = if ((size(az) >= 3))
191191 then az
192192 else {
193193 let aG = ah[3]
194194 if ((0 >= aG))
195195 then [3]
196196 else {
197197 let aH = ((ah[0] * 100) / aG)
198198 let aI = ((ah[1] * 100) / aG)
199199 let aJ = ((ah[2] * 100) / aG)
200200 let aK = ((ah[4] * 100) / aG)
201201 let aq = if (if ((aj > aH))
202202 then (aH > ai)
203203 else false)
204204 then [0, 3]
205205 else [3]
206206 let ar = if (if ((aj > aI))
207207 then (aI > ai)
208208 else false)
209209 then 1 :: aq
210210 else aq
211211 let as = if (if ((aj > aJ))
212212 then (aJ > ai)
213213 else false)
214214 then 2 :: ar
215215 else ar
216216 if (if ((aj > aK))
217217 then (aK > ai)
218218 else false)
219219 then 4 :: as
220220 else as
221221 }
222222 }
223223 if ((size(aF) >= 3))
224224 then aF
225225 else {
226226 let aL = ah[4]
227227 if ((0 >= aL))
228228 then [4]
229229 else {
230230 let aM = ((ah[0] * 100) / aL)
231231 let aN = ((ah[1] * 100) / aL)
232232 let aO = ((ah[2] * 100) / aL)
233233 let aP = ((ah[3] * 100) / aL)
234234 let aq = if (if ((aj > aM))
235235 then (aM > ai)
236236 else false)
237237 then [0, 4]
238238 else [4]
239239 let ar = if (if ((aj > aN))
240240 then (aN > ai)
241241 else false)
242242 then 1 :: aq
243243 else aq
244244 let as = if (if ((aj > aO))
245245 then (aO > ai)
246246 else false)
247247 then 2 :: ar
248248 else ar
249249 if (if ((aj > aP))
250250 then (aP > ai)
251251 else false)
252252 then 3 :: as
253253 else as
254254 }
255255 }
256256 }
257257
258258
259259 func aQ (H) = toBytes((((("WAVESNEUTRINOPREFIX" + "_") + toString(height)) + "_") + toString(H)))
260260
261261
262-@Callable(aR)
263-func constructorV1 (r,s,t,u,v,w,x,y,z,A,B,C,D,E) = if ((aR.caller != this))
262+func aR (aS,aT,aU) = {
263+ let aV = toString(height)
264+ let aW = toString(aU)
265+ let aX = makeString(["%s%s%s__common__priceByAsset", aT], a)
266+ let aY = makeString(["%s%s%s%d__common__priceByHeight", aT, aV], a)
267+ let aZ = makeString(["%s%s%s%d__common__priceByIndex", aT, aW], a)
268+[IntegerEntry(aX, aS), IntegerEntry(aZ, aS), IntegerEntry(aY, aS)]
269+ }
270+
271+
272+@Callable(ba)
273+func constructorV1 (r,s,t,u,v,w,x,y,z,A,B,C,D,E) = if ((ba.caller != this))
264274 then throw("permissions denied")
265275 else [StringEntry(p(), q(r, s, t, u, v, w, x, y, z, A, B, C, D, E))]
266276
267277
268278
269-@Callable(aR)
270-func callEmergencyShutdown (aS) = {
271- let aT = "3MwGSjMPHqX1DhEomE3bzp5tjN1GJZSNY5n"
272- let aU = toString(aR.caller)
273- if (if ((aT != aU))
274- then (toString(D) != aU)
279+@Callable(ba)
280+func callEmergencyShutdown (bb) = {
281+ let bc = "3MzwRAq1Msf6tWA9WSo7HGtLTBGjbiTVAyd"
282+ let bd = toString(ba.caller)
283+ if (if ((bc != bd))
284+ then (toString(D) != bd)
275285 else false)
276286 then throw("caller must be one an emergency oracle or Governance contract")
277- else [BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", aU), StringEntry("is_blocked_reason", aS)]
287+ else [BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", bd), StringEntry("is_blocked_reason", bb)]
278288 }
279289
280290
281291
282-@Callable(aR)
283-func finalizeCurrentPrice (aV,aW,aX,aY,aZ,ba,bb,bc,bd,be) = if (P)
292+@Callable(ba)
293+func finalizeCurrentPrice (be,bf,bg,bh,bi,bj,bk,bl,bm,bn) = if (P)
284294 then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles")
285295 else if ((valueOrElse(getInteger(this, ("price_" + toString(height))), 0) != 0))
286296 then throw("wait next block")
287- else if ((S[(height % 5)] != toBase58String(aR.callerPublicKey)))
297+ else if ((S[(height % 5)] != toBase58String(ba.callerPublicKey)))
288298 then throw(((("Out of turn finalization: " + toString(height)) + " block should be finalize by ") + S[(height % 5)]))
289299 else {
290- let ah = [if (sigVerify_8Kb(aQ(aV), aW, fromBase58String(S[0])))
291- then aV
292- else 0, if (sigVerify_8Kb(aQ(aX), aY, fromBase58String(S[1])))
293- then aX
294- else 0, if (sigVerify_8Kb(aQ(aZ), ba, fromBase58String(S[2])))
295- then aZ
296- else 0, if (sigVerify_8Kb(aQ(bb), bc, fromBase58String(S[3])))
297- then bb
298- else 0, if (sigVerify_8Kb(aQ(bd), be, fromBase58String(S[4])))
299- then bd
300+ let ah = [if (sigVerify_8Kb(aQ(be), bf, fromBase58String(S[0])))
301+ then be
302+ else 0, if (sigVerify_8Kb(aQ(bg), bh, fromBase58String(S[1])))
303+ then bg
304+ else 0, if (sigVerify_8Kb(aQ(bi), bj, fromBase58String(S[2])))
305+ then bi
306+ else 0, if (sigVerify_8Kb(aQ(bk), bl, fromBase58String(S[3])))
307+ then bk
308+ else 0, if (sigVerify_8Kb(aQ(bm), bn, fromBase58String(S[4])))
309+ then bm
300310 else 0]
301- let bf = if ((ah[0] == 0))
311+ let bo = if ((ah[0] == 0))
302312 then 1
303313 else (0 + (if ((ah[1] == 0))
304314 then 1
305315 else (0 + (if ((ah[2] == 0))
306316 then 1
307317 else (0 + (if ((ah[3] == 0))
308318 then 1
309319 else (0 + (if ((ah[4] == 0))
310320 then 1
311321 else 0))))))))
312- if ((bf >= 3))
322+ if ((bo >= 3))
313323 then throw("3 prices or more are equals to 0")
314324 else {
315- let bg = ag(ah)
316- let bh = size(bg)
317- if ((3 > bh))
325+ let bp = ag(ah)
326+ let bq = size(bp)
327+ if ((3 > bq))
318328 then throw(((((((((((((((((((((("Could not finalize price because of big variation: height=" + toString(height)) + "
319329 ") + S[0]) + "=") + toString(ah[0])) + "
320330 ") + S[1]) + "=") + toString(ah[1])) + "
321331 ") + S[2]) + "=") + toString(ah[2])) + "
322332 ") + S[3]) + "=") + toString(ah[3])) + "
323333 ") + S[4]) + "=") + toString(ah[4])))
324334 else {
325- let bi = ((ah[bg[0]] + ah[bg[1]]) + ah[bg[2]])
326- let bj = if ((bh >= 4))
327- then (bi + ah[bg[3]])
328- else bi
329- let bk = if ((bh >= 5))
330- then (bj + ah[bg[4]])
331- else bj
332- if ((bh >= 6))
335+ let br = ((ah[bp[0]] + ah[bp[1]]) + ah[bp[2]])
336+ let bs = if ((bq >= 4))
337+ then (br + ah[bp[3]])
338+ else br
339+ let bt = if ((bq >= 5))
340+ then (bs + ah[bp[4]])
341+ else bs
342+ if ((bq >= 6))
333343 then throw("Invalid pricesInRange creation")
334344 else {
335- let bl = (bk / bh)
336- if (if ((bl >= (H + ((H * Q) / 100))))
345+ let aS = (bt / bq)
346+ let bu = 71809
347+ let bv = "EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc"
348+ if (if ((aS >= (H + ((H * Q) / 100))))
337349 then true
338- else ((H - ((H * Q) / 100)) >= bl))
350+ else ((H - ((H * Q) / 100)) >= aS))
339351 then {
340- let aS = "automatic emergency shutdown because of large price variability"
341-[BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", toString(this)), StringEntry("is_blocked_reason", aS), IntegerEntry((("black_swarm_price" + "_") + toString(height)), bl)]
352+ let bb = "automatic emergency shutdown because of large price variability"
353+[BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", toString(this)), StringEntry("is_blocked_reason", bb), IntegerEntry((("black_swarm_price" + "_") + toString(height)), aS)]
342354 }
343355 else {
344- let bm = (O + 1)
345-[IntegerEntry("price", bl), IntegerEntry(("price_" + toString(height)), bl), IntegerEntry("price_index", bm), IntegerEntry(("price_index_" + toString(bm)), height), IntegerEntry(("deficit_" + toString(height)), af), IntegerEntry(("neutrinoSupply_" + toString(height)), ae), IntegerEntry(("deficit_percent_" + toString(height)), if ((ae != 0))
356+ let aU = (O + 1)
357+ (([IntegerEntry("price", aS), IntegerEntry(("price_" + toString(height)), aS), IntegerEntry(("price_index_" + toString(aU)), height), IntegerEntry("price_index", aU), IntegerEntry(("indexByHeight_" + toString(height)), aU), IntegerEntry(("priceByIndex_" + toString(aU)), aS), IntegerEntry(("deficit_" + toString(height)), af), IntegerEntry(("neutrinoSupply_" + toString(height)), ae), IntegerEntry(("deficit_percent_" + toString(height)), if ((ae != 0))
346358 then ((af * 100) / ae)
347- else 0)]
359+ else 0)] ++ aR(aS, "WAVES", aU)) ++ aR(bu, bv, aU))
348360 }
349361 }
350362 }
351363 }
352364 }
353365
354366
355-@Verifier(bn)
356-func bo () = {
357- let bp = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], a)
358- let bq = split(valueOrElse(getString(W, "%s__multisig"), bp), a)
359- let br = ((((if (sigVerify(bn.bodyBytes, bn.proofs[0], fromBase58String(bq[0])))
367+@Verifier(bw)
368+func bx () = {
369+ let by = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], a)
370+ let bz = split(valueOrElse(getString(W, "%s__multisig"), by), a)
371+ let bA = ((((if (sigVerify(bw.bodyBytes, bw.proofs[0], fromBase58String(bz[0])))
360372 then 1
361- else 0) + (if (sigVerify(bn.bodyBytes, bn.proofs[1], fromBase58String(bq[1])))
373+ else 0) + (if (sigVerify(bw.bodyBytes, bw.proofs[1], fromBase58String(bz[1])))
362374 then 1
363- else 0)) + (if (sigVerify(bn.bodyBytes, bn.proofs[2], fromBase58String(bq[2])))
375+ else 0)) + (if (sigVerify(bw.bodyBytes, bw.proofs[2], fromBase58String(bz[2])))
364376 then 1
365- else 0)) + (if (sigVerify(bn.bodyBytes, bn.proofs[3], fromBase58String(bq[3])))
377+ else 0)) + (if (sigVerify(bw.bodyBytes, bw.proofs[3], fromBase58String(bz[3])))
366378 then 2
367379 else 0))
368- (br >= 3)
380+ (bA >= 3)
369381 }
370382

github/deemru/w8io/026f985 
72.19 ms