tx · C3wwimAiH4FDwpKSrAdK8hLK9Q5wdwNjPw3jTuht68Yw

3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB:  -0.01000000 Waves

2023.01.28 07:32 [2424339] smart account 3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB > SELF 0.00000000 Waves

{ "type": 13, "id": "C3wwimAiH4FDwpKSrAdK8hLK9Q5wdwNjPw3jTuht68Yw", "fee": 1000000, "feeAssetId": null, "timestamp": 1674880315316, "version": 2, "chainId": 84, "sender": "3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB", "senderPublicKey": "Gd5NihbWQoWuTnSvq25TuV2BYZG4U1e9KDqZn9zBPix7", "proofs": [ "3y87L6GU7Wqb57d4BHLieN3pmLydanG4ZeqXZ5AXWU5QwXKQwiFiWdQRSAtydeLfzVNPHKZ1op4Tt3yJ3QBuHVUx" ], "script": "base64:BgIgCAISBAoCCAgSBwoFCAgICAgSBAoCCAgSABIFCgMIAQQVAAdWRVJTSU9OAgUxLjEuOQEOZ2V0U3RyaW5nQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQNrZXkCAAAPc3RvcmFnZVZlcmlmaWVyCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECE2NvbmZfb3JhY2xlX2FkZHJlc3MABGJhbmsJAQ5nZXRTdHJpbmdCeUtleQECGWNvbmZfZmVlX3JlY2VpdmVyX2FkZHJlc3MADWFjY2VwdGVkVG9rZW4JAQ5nZXRTdHJpbmdCeUtleQECFmNvbmZfYWNjZXB0ZWRfdG9rZW5faWQABnVzZG5JRAkBDmdldFN0cmluZ0J5S2V5AQIMY29uZl91c2RuX2lkAAVjaHJpcwkBDmdldFN0cmluZ0J5S2V5AQISY29uZl9hZG1pbl9hZGRyZXNzABNzaWduX2FydF91c2Vyc19kYXBwCQEOZ2V0U3RyaW5nQnlLZXkBAiBjb25mX3NpZ25fYXJ0X3VzZXJzX2RhcHBfYWRkcmVzcwAUc3RvcmFnZUZlZU11bHRpcGxpZXIAAQEKY2hlY2tFbnRyeQIGcHJlZml4BHV1aWQEByRtYXRjaDAJAJ0IAgUEdGhpcwkArAICBQZwcmVmaXgFBHV1aWQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgROT05FAQ9jaGVja0VudHJ5RW1haWwCBHV1aWQGZG9tYWluBAckbWF0Y2gwCQCdCAIFBHRoaXMJAKwCAgkArAICBQR1dWlkAgFABQZkb21haW4DCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgROT05FAQljaGVja1VVSUQBBHV1aWQEByRtYXRjaDAJAJ0IAgUEdGhpcwUEdXVpZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECBE5PTkUBEmNoZWNrSWZXaGl0ZUxpc3RlZAENY2FsbGVyQWRkcmVzcwQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgICEWFkZHJfV0hJVEVMSVNURURfBQ1jYWxsZXJBZGRyZXNzAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAAAQhpc0FkcmVzcwEEYWRkcgMDAwkAAAIJALECAQUEYWRkcgAjCQAAAgkArwICBQRhZGRyAAICAjNQBwYJAAACCQCvAgIFBGFkZHIAAgICM04GCQAAAgkArwICBQRhZGRyAAICAjNNAQxjb3VudFBhcnRpZXMCC2FjY3VtdWxhdG9yBGFkZHIDCQBmAgkAsQIBBQRhZGRyAAAJAGQCBQthY2N1bXVsYXRvcgABCQBkAgULYWNjdW11bGF0b3IAAAEUY2hlY2tJZlBlbmRpbmdUb1NpZ24BA2tleQQHJG1hdGNoMAkAnQgCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwAwkAAAIFAWECB1BFTkRJTkcGBwcBDmdldFZhbHVlU3RyaW5nAQRqc29uCQCvAgIJALACAgUEanNvbgABCQEFdmFsdWUBCQCzCQIJALACAgUEanNvbgABAgEiAQhnZXRWYWx1ZQIEanNvbgNrZXkECGtleUluZGV4CQEFdmFsdWUBCQCzCQIFBGpzb24JAKwCAgkArAICAgEiBQNrZXkCAiI6BARkYXRhCQCwAgIFBGpzb24JAGQCCQBkAgUIa2V5SW5kZXgJALECAQUDa2V5AAMECWpzb25WYWx1ZQkBDmdldFZhbHVlU3RyaW5nAQUEZGF0YQUJanNvblZhbHVlARJnZXRKc29uQmVmb3JlVmFsdWUCBGpzb24Da2V5BAhrZXlJbmRleAkBBXZhbHVlAQkAswkCBQRqc29uCQCsAgIJAKwCAgIBIgUDa2V5AgIiOgQEZGF0YQkArwICBQRqc29uCQBkAgkAZAIFCGtleUluZGV4CQCxAgEFA2tleQADBQRkYXRhARFnZXRKc29uQWZ0ZXJWYWx1ZQIEanNvbgNrZXkECGtleUluZGV4CQEFdmFsdWUBCQCzCQIFBGpzb24JAKwCAgkArAICAgEiBQNrZXkCAiI6BARkYXRhCQCyAgIFBGpzb24JAGUCCQCxAgEFBGpzb24JAGQCCQBkAgkAZAIJAGQCBQhrZXlJbmRleAkAsQIBBQNrZXkAAwAAAAIFBGRhdGEBCGFzU3RyaW5nAQJidgQHJG1hdGNoMAUCYnYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBANidjAFByRtYXRjaDAFA2J2MAkAAgECJFNwb25zb3JlZCBQdWJsaWMgS2V5IFN0cmluZyBleHBlY3RlZAUGaW52b2tlAQdzZXRDb25mAgNrZXkDdmFsBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyAwkBCGNvbnRhaW5zAgUDa2V5AgVjb25mXwkAzAgCCQELU3RyaW5nRW50cnkCBQNrZXkFA3ZhbAUDbmlsCQACAQIgRW50cmllcyBzdGFydGluZyB3aXRoIGNvbmZfIG9ubHkJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzBmludm9rZQERZmlsZUNlcnRpZmljYXRpb24FBGhhc2gFdGl0bGUEdXVpZARpcGZzDHNpZ25lclB1YktleQQCaWQJAQV2YWx1ZQEIBQZpbnZva2UNdHJhbnNhY3Rpb25JZAQKZW50cnlFeGlzdAkBCmNoZWNrRW50cnkCBQRoYXNoBQR1dWlkBAl1dWlkRXhpc3QJAQljaGVja1VVSUQBBQR1dWlkBAxjYWxsZXJJc0RhcHAJAAACBQR0aGlzCAUGaW52b2tlBmNhbGxlcgQNY2FsbGVyQWRkcmVzcwMFDGNhbGxlcklzRGFwcAkApQgBCQCnCAEJANkEAQUMc2lnbmVyUHViS2V5CQDYBAEICAUGaW52b2tlBmNhbGxlcgVieXRlcwQWY2FsbGVySXNXaGl0ZUxpc3RlZE51bQkBEmNoZWNrSWZXaGl0ZUxpc3RlZAEFDWNhbGxlckFkZHJlc3MDCQECIT0CBQplbnRyeUV4aXN0AgROT05FCQACAQIYVGhpcyBlbnRyeSBhbHJlYWR5IGV4aXN0AwkBAiE9AgUJdXVpZEV4aXN0AgROT05FCQACAQIXVGhpcyB1dWlkIGFscmVhZHkgZXhpc3QDCQECIT0CCQCxAgEFBHV1aWQAJAkAAgECHVV1aWQgc2hvdWxkIGJlIDM2IGNoYXJhY3RlcnMuAwkBAiE9AgkAsQIBBQRoYXNoAEAJAAIBAh1IYXNoIHNob3VsZCBiZSA2NCBjaGFyYWN0ZXJzLgMJAGYCCQCxAgEFBXRpdGxlAGQJAAIBAiZUaXRsZSBpcyB0b28gbG9uZywgMTAwIGNoYXJhY3RlcnMgbWF4LgMDAwkBCGNvbnRhaW5zAgUEaGFzaAIBIgYJAQhjb250YWlucwIFBXRpdGxlAgEiBgkBCGNvbnRhaW5zAgUEaXBmcwIBIgkAAgECDE5vICIgYWxsb3dlZAQEZGF0YQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCXsiaGFzaCI6IgUEaGFzaAIOIiwidGltZXN0YW1wIjoJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXACCiwidGl0bGUiOiIFBXRpdGxlAgoiLCJpcGZzIjoiBQRpcGZzAgIifQMJAGYCBRZjYWxsZXJJc1doaXRlTGlzdGVkTnVtAAAECmNyZWRpdENvc3QDCQECIT0CCQCxAgEFBGlwZnMAAAkAZAIAAQUUc3RvcmFnZUZlZU11bHRpcGxpZXIAAQMJAGYCAAAJAGUCBRZjYWxsZXJJc1doaXRlTGlzdGVkTnVtBQpjcmVkaXRDb3N0CQACAQIRTm90IGVub3VnaCBjcmVkaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgUEdXVpZAkA2AQBBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBGhhc2gFBHV1aWQJANgEAQUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQV0aXRsZQUEdXVpZAkA2AQBBQJpZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhFhZGRyX1dISVRFTElTVEVEXwUNY2FsbGVyQWRkcmVzcwkAZQIFFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0FCmNyZWRpdENvc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgIIZGF0YV9mY18JANgEAQUCaWQCAV8FDWNhbGxlckFkZHJlc3MFBGRhdGEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUNY2FsbGVyQWRkcmVzcwAACQDZBAEFDWFjY2VwdGVkVG9rZW4FA25pbAMJAQEhAQUMY2FsbGVySXNEYXBwBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQZpbnZva2UIcGF5bWVudHMAAAQGYW1vdW50CQEFdmFsdWUBCAUHcGF5bWVudAZhbW91bnQEDnBheW1lbnRBc3NldElkAwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAiBXYXZlcyBpcyBub3QgYWNjZXB0ZWQgYXMgcGF5bWVudAQMY3VycmVudFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9zdG9yYWdlVmVyaWZpZXIJAKwCAgISY2VydGlmaWNhdGlvbl9mZWVfCQDYBAEJAQV2YWx1ZQEFDnBheW1lbnRBc3NldElkBAdmZWVDb3N0AwkBAiE9AgkAsQIBBQRpcGZzAAAJAGQCBQxjdXJyZW50UHJpY2UJAGgCBRRzdG9yYWdlRmVlTXVsdGlwbGllcgUMY3VycmVudFByaWNlBQxjdXJyZW50UHJpY2UDCQECIT0CCQDZBAEFDWFjY2VwdGVkVG9rZW4FDnBheW1lbnRBc3NldElkCQACAQIoVGhpcyB0b2tlbiBpcyBub3QgYWNjZXB0ZWQgYXQgdGhlIG1vbWVudAMDCQECIT0CBQZhbW91bnQFB2ZlZUNvc3QJAGcCAAAFFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0HCQACAQISVGhlIHByaWNlIGlzIHdyb25nCQDMCAIJAQtTdHJpbmdFbnRyeQIFBHV1aWQJANgEAQUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQRoYXNoBQR1dWlkCQDYBAEFAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUFdGl0bGUFBHV1aWQJANgEAQUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgIIZGF0YV9mY18JANgEAQUCaWQCAV8FDWNhbGxlckFkZHJlc3MFBGRhdGEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYmFuawUHZmVlQ29zdAgFB3BheW1lbnQHYXNzZXRJZAUDbmlsCQACAQIeWW91IGFyZSBub3QgYWxsb3dlZCB0byBkbyB0aGF0Bmludm9rZQETcmV2b2tlQ2VydGlmaWNhdGlvbgIPY2VydGlmaWNhdGlvbklkDHNpZ25lclB1YktleQQCaWQJAQV2YWx1ZQEIBQZpbnZva2UNdHJhbnNhY3Rpb25JZAQMY2FsbGVySXNEYXBwCQAAAgUEdGhpcwgFBmludm9rZQZjYWxsZXIEDWNhbGxlckFkZHJlc3MDBQxjYWxsZXJJc0RhcHAJAKUIAQkApwgBCQDZBAEFDHNpZ25lclB1YktleQkA2AQBCAgFBmludm9rZQZjYWxsZXIFYnl0ZXMECmVudHJ5RXhpc3QEByRtYXRjaDAJAJ0IAgUEdGhpcwkArAICCQCsAgIJAKwCAgIIZGF0YV9mY18FD2NlcnRpZmljYXRpb25JZAIBXwUNY2FsbGVyQWRkcmVzcwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECBE5PTkUECWlzUmV2b2tlZAQHJG1hdGNoMAkAnQgCBQR0aGlzCQCsAgICClNUQVRVU19GQ18FD2NlcnRpZmljYXRpb25JZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECBE5PTkUEFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0JARJjaGVja0lmV2hpdGVMaXN0ZWQBBQ1jYWxsZXJBZGRyZXNzBAduZXdKc29uCQCsAgIJAKwCAgkArAICCQCzAgIFCmVudHJ5RXhpc3QAAQITLCJzdGF0dXMiOiJSRVZPS0VEXwkA2AQBBQJpZAICIn0DCQECIT0CBQlpc1Jldm9rZWQCBE5PTkUJAAIBAi1UaGlzIGNlcnRpZmljYXRpb24gaGF2ZSBhbHJlYWR5IGJlZW4gcmV2b2tlZC4DCQAAAgUKZW50cnlFeGlzdAIETk9ORQkAAgECM1lvdSBjYW5ub3QgY2hhbmdlIHRoZSBzdGF0dXMgb2YgdGhpcyBjZXJ0aWZpY2F0aW9uLgMJAGYCBRZjYWxsZXJJc1doaXRlTGlzdGVkTnVtAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIRYWRkcl9XSElURUxJU1RFRF8FDWNhbGxlckFkZHJlc3MJAGUCBRZjYWxsZXJJc1doaXRlTGlzdGVkTnVtAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAgpTVEFUVVNfRkNfBQ9jZXJ0aWZpY2F0aW9uSWQJAKwCAgIIUkVWT0tFRF8JANgEAQUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgIIZGF0YV9mY18FD2NlcnRpZmljYXRpb25JZAIBXwUNY2FsbGVyQWRkcmVzcwUHbmV3SnNvbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQ1jYWxsZXJBZGRyZXNzAAAJANkEAQUNYWNjZXB0ZWRUb2tlbgUDbmlsAwkBASEBBQxjYWxsZXJJc0RhcHAEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFBmludm9rZQhwYXltZW50cwAABAZhbW91bnQJAQV2YWx1ZQEIBQdwYXltZW50BmFtb3VudAQOcGF5bWVudEFzc2V0SWQDCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAkAAgECIFdhdmVzIGlzIG5vdCBhY2NlcHRlZCBhcyBwYXltZW50BAxjdXJyZW50UHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFD3N0b3JhZ2VWZXJpZmllcgkArAICAhJjZXJ0aWZpY2F0aW9uX2ZlZV8JANgEAQkBBXZhbHVlAQUOcGF5bWVudEFzc2V0SWQDCQECIT0CCQDZBAEFDWFjY2VwdGVkVG9rZW4FDnBheW1lbnRBc3NldElkCQACAQIoVGhpcyB0b2tlbiBpcyBub3QgYWNjZXB0ZWQgYXQgdGhlIG1vbWVudAMDCQECIT0CBQZhbW91bnQFDGN1cnJlbnRQcmljZQkAZwIAAAUWY2FsbGVySXNXaGl0ZUxpc3RlZE51bQcJAAIBAhJUaGUgcHJpY2UgaXMgd3JvbmcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAgpTVEFUVVNfRkNfBQ9jZXJ0aWZpY2F0aW9uSWQJAKwCAgIIUkVWT0tFRF8JANgEAQUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgIIZGF0YV9mY18FD2NlcnRpZmljYXRpb25JZAIBXwUNY2FsbGVyQWRkcmVzcwUHbmV3SnNvbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRiYW5rBQZhbW91bnQIBQdwYXltZW50B2Fzc2V0SWQFA25pbAkAAgECHllvdSBhcmUgbm90IGFsbG93ZWQgdG8gZG8gdGhhdAZpbnZva2UBD3VzZG5TaWduQ3JlZGl0cwAEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFBmludm9rZQhwYXltZW50cwAABA1jYWxsZXJBZGRyZXNzCQDYBAEICAUGaW52b2tlBmNhbGxlcgVieXRlcwQHdG9rZW5JZAkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAQGYW1vdW50CQEFdmFsdWUBCAUHcGF5bWVudAZhbW91bnQED251bWJlck9mQ3JlZGl0cwkAaQIJAGgCBQZhbW91bnQAAgDAhD0EFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0JARJjaGVja0lmV2hpdGVMaXN0ZWQBBQ1jYWxsZXJBZGRyZXNzAwkBAiE9AgkA2AQBBQd0b2tlbklkBQZ1c2RuSUQJAAIBAhpPbmx5IFVTRE4gY2FuIGJlIGV4Y2hhbmdlZAMDCQECIT0CCQBqAgUGYW1vdW50AMCEPQAACQECIT0CCQBqAgUGYW1vdW50AMCEPQCgwh4HCQACAQkArAICCQCsAgIJAKwCAgIwWW91IGNhbiBvbmx5IGV4Y2hhbmdlIG11bHRpcGxlIG9mIDAuNSwgeW91IHNlbnQ6CQCzAgIJAKQDAQUGYW1vdW50AAYCAS4JALICAgkApAMBBQZhbW91bnQABgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhFhZGRyX1dISVRFTElTVEVEXwUNY2FsbGVyQWRkcmVzcwkAZAIFFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0FD251bWJlck9mQ3JlZGl0cwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRiYW5rBQZhbW91bnQFB3Rva2VuSWQFA25pbAFpARt3aGl0ZWxpc3RGcmVlQ2VydGlmaWNhdGlvbnMDB2FkZHJlc3MGYW1vdW50EmFkZFRvQ3VycmVudEFtb3VudAQGY2FsbGVyCQClCAEJAKcIAQgFAWkPY2FsbGVyUHVibGljS2V5BAJpZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgUTc2lnbl9hcnRfdXNlcnNfZGFwcAUDbmlsBQZjYWxsZXIEDWN1cnJlbnRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICAhFhZGRyX1dISVRFTElTVEVEXwUHYWRkcmVzcwAABAluZXdBbW91bnQDBRJhZGRUb0N1cnJlbnRBbW91bnQJAGQCBQ1jdXJyZW50QW1vdW50BQZhbW91bnQFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhFhZGRyX1dISVRFTElTVEVEXwUHYWRkcmVzcwUJbmV3QW1vdW50BQNuaWwJAAIBAidZb3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIHdoaXRlbGlzdCB0eHMBAnR4AQh2ZXJpZmllcgAEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBANpbnYFByRtYXRjaDADAwMDCQAAAggFA2ludghmdW5jdGlvbgIRZmlsZUNlcnRpZmljYXRpb24JAAACCAUDaW52BGRBcHAFBHRoaXMHCQAAAggFA2ludgNmZWUAoMIeBwkAAAIIBQNpbnYKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJANkEAQkBCGFzU3RyaW5nAQkAkQMCCAUDaW52BGFyZ3MABAMDAwMJAAACCAUDaW52CGZ1bmN0aW9uAhNyZXZva2VDZXJ0aWZpY2F0aW9uCQAAAggFA2ludgRkQXBwBQR0aGlzBwkAAAIIBQNpbnYDZmVlAKDCHgcJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQhhc1N0cmluZwEJAJEDAggFA2ludgRhcmdzAAEJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXml82NV", "height": 2424339, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BL7MExiVzrNT1qQJr7noKatPqpJjgeC4nKpyK5DPh7Mr Next: DSwxhVbBnNBu8WsXLtzNjuJzbN4YvW9dX3AgPVEgMr68 Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-func a (b) = valueOrElse(getString(this, b), "")
4+let a = "1.1.9"
5+
6+func b (c) = valueOrElse(getString(this, c), "")
57
68
7-let c = value(addressFromString(a("conf_oracle_address")))
9+let d = value(addressFromString(b("conf_oracle_address")))
810
9-let d = a("conf_fee_receiver_address")
11+let e = b("conf_fee_receiver_address")
1012
11-let e = a("conf_accepted_token_id")
13+let f = b("conf_accepted_token_id")
1214
13-let f = a("conf_usdn_id")
15+let g = b("conf_usdn_id")
1416
15-let g = a("conf_admin_address")
17+let h = b("conf_admin_address")
1618
17-let h = "1.1.9"
19+let i = b("conf_sign_art_users_dapp_address")
1820
19-let i = 1
21+let j = 1
2022
21-func j (k,l) = {
22- let m = getString(this, (k + l))
23- if ($isInstanceOf(m, "String"))
23+func k (l,m) = {
24+ let n = getString(this, (l + m))
25+ if ($isInstanceOf(n, "String"))
2426 then {
25- let n = m
26- n
27+ let o = n
28+ o
2729 }
2830 else "NONE"
2931 }
3032
3133
32-func o (l,p) = {
33- let m = getString(this, ((l + "@") + p))
34- if ($isInstanceOf(m, "String"))
34+func p (m,q) = {
35+ let n = getString(this, ((m + "@") + q))
36+ if ($isInstanceOf(n, "String"))
3537 then {
36- let n = m
37- n
38+ let o = n
39+ o
3840 }
3941 else "NONE"
4042 }
4143
4244
43-func q (l) = {
44- let m = getString(this, l)
45- if ($isInstanceOf(m, "String"))
45+func r (m) = {
46+ let n = getString(this, m)
47+ if ($isInstanceOf(n, "String"))
4648 then {
47- let n = m
48- n
49+ let o = n
50+ o
4951 }
5052 else "NONE"
5153 }
5254
5355
54-func r (s) = {
55- let m = getInteger(this, ("addr_WHITELISTED_" + s))
56- if ($isInstanceOf(m, "Int"))
56+func s (t) = {
57+ let n = getInteger(this, ("addr_WHITELISTED_" + t))
58+ if ($isInstanceOf(n, "Int"))
5759 then {
58- let n = m
59- n
60+ let o = n
61+ o
6062 }
6163 else 0
6264 }
6365
6466
65-func t (u) = if (if (if ((size(u) == 35))
66- then (take(u, 2) == "3P")
67+func u (v) = if (if (if ((size(v) == 35))
68+ then (take(v, 2) == "3P")
6769 else false)
6870 then true
69- else (take(u, 2) == "3N"))
71+ else (take(v, 2) == "3N"))
7072 then true
71- else (take(u, 2) == "3M")
73+ else (take(v, 2) == "3M")
7274
7375
74-func v (w,u) = if ((size(u) > 0))
75- then (w + 1)
76- else (w + 0)
76+func w (x,v) = if ((size(v) > 0))
77+ then (x + 1)
78+ else (x + 0)
7779
7880
79-func x (b) = {
80- let m = getString(this, b)
81- if ($isInstanceOf(m, "String"))
81+func y (c) = {
82+ let n = getString(this, c)
83+ if ($isInstanceOf(n, "String"))
8284 then {
83- let n = m
84- if ((n == "PENDING"))
85+ let o = n
86+ if ((o == "PENDING"))
8587 then true
8688 else false
8789 }
8991 }
9092
9193
92-func y (z) = take(drop(z, 1), value(indexOf(drop(z, 1), "\"")))
94+func z (A) = take(drop(A, 1), value(indexOf(drop(A, 1), "\"")))
9395
9496
95-func A (z,b) = {
96- let B = value(indexOf(z, (("\"" + b) + "\":")))
97- let C = drop(z, ((B + size(b)) + 3))
98- let D = y(C)
97+func B (A,c) = {
98+ let C = value(indexOf(A, (("\"" + c) + "\":")))
99+ let D = drop(A, ((C + size(c)) + 3))
100+ let E = z(D)
101+ E
102+ }
103+
104+
105+func F (A,c) = {
106+ let C = value(indexOf(A, (("\"" + c) + "\":")))
107+ let D = take(A, ((C + size(c)) + 3))
99108 D
100109 }
101110
102111
103-func E (z,b) = {
104- let B = value(indexOf(z, (("\"" + b) + "\":")))
105- let C = take(z, ((B + size(b)) + 3))
106- C
112+func G (A,c) = {
113+ let C = value(indexOf(A, (("\"" + c) + "\":")))
114+ let D = takeRight(A, (size(A) - ((((C + size(c)) + 3) + 0) + 2)))
115+ D
107116 }
108117
109118
110-func F (z,b) = {
111- let B = value(indexOf(z, (("\"" + b) + "\":")))
112- let C = takeRight(z, (size(z) - ((((B + size(b)) + 3) + 0) + 2)))
113- C
114- }
115-
116-
117-func G (H) = {
118- let m = H
119- if ($isInstanceOf(m, "String"))
119+func H (I) = {
120+ let n = I
121+ if ($isInstanceOf(n, "String"))
120122 then {
121- let I = m
122- I
123+ let J = n
124+ J
123125 }
124126 else throw("Sponsored Public Key String expected")
125127 }
126128
127129
128-@Callable(J)
129-func setConf (b,K) = {
130- let L = toString(J.caller)
131- if (containsElement([g, toString(this)], L))
132- then if (contains(b, "conf_"))
133- then [StringEntry(b, K)]
130+@Callable(K)
131+func setConf (c,L) = {
132+ let M = toString(K.caller)
133+ if (containsElement([h, toString(this)], M))
134+ then if (contains(c, "conf_"))
135+ then [StringEntry(c, L)]
134136 else throw("Entries starting with conf_ only")
135137 else throw("You are not allowed to change this")
136138 }
137139
138140
139141
140-@Callable(J)
141-func fileCertification (M,N,l,O,P) = {
142- let Q = value(J.transactionId)
143- let R = j(M, l)
144- let S = q(l)
145- let T = (this == J.caller)
146- let s = if (T)
147- then toString(addressFromPublicKey(fromBase58String(P)))
148- else toBase58String(J.caller.bytes)
149- let U = r(s)
150- if ((R != "NONE"))
142+@Callable(K)
143+func fileCertification (N,O,m,P,Q) = {
144+ let R = value(K.transactionId)
145+ let S = k(N, m)
146+ let T = r(m)
147+ let U = (this == K.caller)
148+ let t = if (U)
149+ then toString(addressFromPublicKey(fromBase58String(Q)))
150+ else toBase58String(K.caller.bytes)
151+ let V = s(t)
152+ if ((S != "NONE"))
151153 then throw("This entry already exist")
152- else if ((S != "NONE"))
154+ else if ((T != "NONE"))
153155 then throw("This uuid already exist")
154- else if ((size(l) != 36))
156+ else if ((size(m) != 36))
155157 then throw("Uuid should be 36 characters.")
156- else if ((size(M) != 64))
158+ else if ((size(N) != 64))
157159 then throw("Hash should be 64 characters.")
158- else if ((size(N) > 100))
160+ else if ((size(O) > 100))
159161 then throw("Title is too long, 100 characters max.")
160- else if (if (if (contains(M, "\""))
161- then true
162- else contains(N, "\""))
162+ else if (if (if (contains(N, "\""))
163163 then true
164164 else contains(O, "\""))
165+ then true
166+ else contains(P, "\""))
165167 then throw("No \" allowed")
166168 else {
167- let C = (((((((("{\"hash\":\"" + M) + "\",\"timestamp\":") + toString(lastBlock.timestamp)) + ",\"title\":\"") + N) + "\",\"ipfs\":\"") + O) + "\"}")
168- if ((U > 0))
169+ let D = (((((((("{\"hash\":\"" + N) + "\",\"timestamp\":") + toString(lastBlock.timestamp)) + ",\"title\":\"") + O) + "\",\"ipfs\":\"") + P) + "\"}")
170+ if ((V > 0))
169171 then {
170- let V = if ((size(O) != 0))
171- then (1 + i)
172+ let W = if ((size(P) != 0))
173+ then (1 + j)
172174 else 1
173- if ((0 > (U - V)))
175+ if ((0 > (V - W)))
174176 then throw("Not enough credit")
175- else [StringEntry(l, toBase58String(Q)), StringEntry((M + l), toBase58String(Q)), StringEntry((N + l), toBase58String(Q)), IntegerEntry(("addr_WHITELISTED_" + s), (U - V)), StringEntry(((("data_fc_" + toBase58String(Q)) + "_") + s), C), ScriptTransfer(addressFromStringValue(s), 0, fromBase58String(e))]
177+ else [StringEntry(m, toBase58String(R)), StringEntry((N + m), toBase58String(R)), StringEntry((O + m), toBase58String(R)), IntegerEntry(("addr_WHITELISTED_" + t), (V - W)), StringEntry(((("data_fc_" + toBase58String(R)) + "_") + t), D), ScriptTransfer(addressFromStringValue(t), 0, fromBase58String(f))]
176178 }
177- else if (!(T))
179+ else if (!(U))
178180 then {
179- let W = value(J.payments[0])
180- let X = value(W.amount)
181- let Y = if (isDefined(W.assetId))
182- then value(W.assetId)
181+ let X = value(K.payments[0])
182+ let Y = value(X.amount)
183+ let Z = if (isDefined(X.assetId))
184+ then value(X.assetId)
183185 else throw("Waves is not accepted as payment")
184- let Z = getIntegerValue(c, ("certification_fee_" + toBase58String(value(Y))))
185- let aa = if ((size(O) != 0))
186- then (Z + (i * Z))
187- else Z
188- if ((fromBase58String(e) != Y))
186+ let aa = getIntegerValue(d, ("certification_fee_" + toBase58String(value(Z))))
187+ let ab = if ((size(P) != 0))
188+ then (aa + (j * aa))
189+ else aa
190+ if ((fromBase58String(f) != Z))
189191 then throw("This token is not accepted at the moment")
190- else if (if ((X != aa))
191- then (0 >= U)
192+ else if (if ((Y != ab))
193+ then (0 >= V)
192194 else false)
193195 then throw("The price is wrong")
194- else [StringEntry(l, toBase58String(Q)), StringEntry((M + l), toBase58String(Q)), StringEntry((N + l), toBase58String(Q)), StringEntry(((("data_fc_" + toBase58String(Q)) + "_") + s), C), ScriptTransfer(addressFromStringValue(d), aa, W.assetId)]
196+ else [StringEntry(m, toBase58String(R)), StringEntry((N + m), toBase58String(R)), StringEntry((O + m), toBase58String(R)), StringEntry(((("data_fc_" + toBase58String(R)) + "_") + t), D), ScriptTransfer(addressFromStringValue(e), ab, X.assetId)]
195197 }
196198 else throw("You are not allowed to do that")
197199 }
199201
200202
201203
202-@Callable(J)
203-func revokeCertification (ab,P) = {
204- let Q = value(J.transactionId)
205- let T = (this == J.caller)
206- let s = if (T)
207- then toString(addressFromPublicKey(fromBase58String(P)))
208- else toBase58String(J.caller.bytes)
209- let R = {
210- let m = getString(this, ((("data_fc_" + ab) + "_") + s))
211- if ($isInstanceOf(m, "String"))
204+@Callable(K)
205+func revokeCertification (ac,Q) = {
206+ let R = value(K.transactionId)
207+ let U = (this == K.caller)
208+ let t = if (U)
209+ then toString(addressFromPublicKey(fromBase58String(Q)))
210+ else toBase58String(K.caller.bytes)
211+ let S = {
212+ let n = getString(this, ((("data_fc_" + ac) + "_") + t))
213+ if ($isInstanceOf(n, "String"))
212214 then {
213- let n = m
214- n
215+ let o = n
216+ o
215217 }
216218 else "NONE"
217219 }
218- let ac = {
219- let m = getString(this, ("STATUS_FC_" + ab))
220- if ($isInstanceOf(m, "String"))
220+ let ad = {
221+ let n = getString(this, ("STATUS_FC_" + ac))
222+ if ($isInstanceOf(n, "String"))
221223 then {
222- let n = m
223- n
224+ let o = n
225+ o
224226 }
225227 else "NONE"
226228 }
227- let U = r(s)
228- let ad = (((dropRight(R, 1) + ",\"status\":\"REVOKED_") + toBase58String(Q)) + "\"}")
229- if ((ac != "NONE"))
229+ let V = s(t)
230+ let ae = (((dropRight(S, 1) + ",\"status\":\"REVOKED_") + toBase58String(R)) + "\"}")
231+ if ((ad != "NONE"))
230232 then throw("This certification have already been revoked.")
231- else if ((R == "NONE"))
233+ else if ((S == "NONE"))
232234 then throw("You cannot change the status of this certification.")
233- else if ((U > 0))
234- then [IntegerEntry(("addr_WHITELISTED_" + s), (U - 1)), StringEntry(("STATUS_FC_" + ab), ("REVOKED_" + toBase58String(Q))), StringEntry(((("data_fc_" + ab) + "_") + s), ad), ScriptTransfer(addressFromStringValue(s), 0, fromBase58String(e))]
235- else if (!(T))
235+ else if ((V > 0))
236+ then [IntegerEntry(("addr_WHITELISTED_" + t), (V - 1)), StringEntry(("STATUS_FC_" + ac), ("REVOKED_" + toBase58String(R))), StringEntry(((("data_fc_" + ac) + "_") + t), ae), ScriptTransfer(addressFromStringValue(t), 0, fromBase58String(f))]
237+ else if (!(U))
236238 then {
237- let W = value(J.payments[0])
238- let X = value(W.amount)
239- let Y = if (isDefined(W.assetId))
240- then value(W.assetId)
239+ let X = value(K.payments[0])
240+ let Y = value(X.amount)
241+ let Z = if (isDefined(X.assetId))
242+ then value(X.assetId)
241243 else throw("Waves is not accepted as payment")
242- let Z = getIntegerValue(c, ("certification_fee_" + toBase58String(value(Y))))
243- if ((fromBase58String(e) != Y))
244+ let aa = getIntegerValue(d, ("certification_fee_" + toBase58String(value(Z))))
245+ if ((fromBase58String(f) != Z))
244246 then throw("This token is not accepted at the moment")
245- else if (if ((X != Z))
246- then (0 >= U)
247+ else if (if ((Y != aa))
248+ then (0 >= V)
247249 else false)
248250 then throw("The price is wrong")
249- else [StringEntry(("STATUS_FC_" + ab), ("REVOKED_" + toBase58String(Q))), StringEntry(((("data_fc_" + ab) + "_") + s), ad), ScriptTransfer(addressFromStringValue(d), X, W.assetId)]
251+ else [StringEntry(("STATUS_FC_" + ac), ("REVOKED_" + toBase58String(R))), StringEntry(((("data_fc_" + ac) + "_") + t), ae), ScriptTransfer(addressFromStringValue(e), Y, X.assetId)]
250252 }
251253 else throw("You are not allowed to do that")
252254 }
253255
254256
255257
256-@Callable(J)
258+@Callable(K)
257259 func usdnSignCredits () = {
258- let W = value(J.payments[0])
259- let s = toBase58String(J.caller.bytes)
260- let ae = value(W.assetId)
261- let X = value(W.amount)
262- let af = ((X * 2) / 1000000)
263- let U = r(s)
264- if ((toBase58String(ae) != f))
260+ let X = value(K.payments[0])
261+ let t = toBase58String(K.caller.bytes)
262+ let af = value(X.assetId)
263+ let Y = value(X.amount)
264+ let ag = ((Y * 2) / 1000000)
265+ let V = s(t)
266+ if ((toBase58String(af) != g))
265267 then throw("Only USDN can be exchanged")
266- else if (if (((X % 1000000) != 0))
267- then ((X % 1000000) != 500000)
268+ else if (if (((Y % 1000000) != 0))
269+ then ((Y % 1000000) != 500000)
268270 else false)
269- then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(X), 6)) + ".") + takeRight(toString(X), 6)))
270- else [IntegerEntry(("addr_WHITELISTED_" + s), (U + af)), ScriptTransfer(addressFromStringValue(d), X, ae)]
271+ then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(Y), 6)) + ".") + takeRight(toString(Y), 6)))
272+ else [IntegerEntry(("addr_WHITELISTED_" + t), (V + ag)), ScriptTransfer(addressFromStringValue(e), Y, af)]
271273 }
272274
273275
274276
275-@Callable(ag)
276-func whitelistFreeCertifications (ah,X,ai) = {
277- let L = toString(addressFromPublicKey(ag.callerPublicKey))
278- let Q = toBase58String(ag.transactionId)
279- if (containsElement([g], L))
277+@Callable(ah)
278+func whitelistFreeCertifications (ai,Y,aj) = {
279+ let M = toString(addressFromPublicKey(ah.callerPublicKey))
280+ let R = toBase58String(ah.transactionId)
281+ if (containsElement([h, i], M))
280282 then {
281- let aj = valueOrElse(getInteger(this, ("addr_WHITELISTED_" + ah)), 0)
282- let ak = if (ai)
283- then (aj + X)
284- else X
285-[IntegerEntry(("addr_WHITELISTED_" + ah), ak)]
283+ let ak = valueOrElse(getInteger(this, ("addr_WHITELISTED_" + ai)), 0)
284+ let al = if (aj)
285+ then (ak + Y)
286+ else Y
287+[IntegerEntry(("addr_WHITELISTED_" + ai), al)]
286288 }
287289 else throw("You are not authorized to whitelist txs")
288290 }
289291
290292
291-@Verifier(al)
292-func am () = {
293- let m = al
294- if ($isInstanceOf(m, "InvokeScriptTransaction"))
293+@Verifier(am)
294+func an () = {
295+ let n = am
296+ if ($isInstanceOf(n, "InvokeScriptTransaction"))
295297 then {
296- let an = m
297- if (if (if (if ((an.function == "fileCertification"))
298- then (an.dApp == this)
298+ let ao = n
299+ if (if (if (if ((ao.function == "fileCertification"))
300+ then (ao.dApp == this)
299301 else false)
300- then (an.fee == 500000)
302+ then (ao.fee == 500000)
301303 else false)
302- then (an.feeAssetId == unit)
304+ then (ao.feeAssetId == unit)
303305 else false)
304- then sigVerify(al.bodyBytes, al.proofs[0], fromBase58String(G(an.args[4])))
305- else if (if (if (if ((an.function == "revokeCertification"))
306- then (an.dApp == this)
306+ then sigVerify(am.bodyBytes, am.proofs[0], fromBase58String(H(ao.args[4])))
307+ else if (if (if (if ((ao.function == "revokeCertification"))
308+ then (ao.dApp == this)
307309 else false)
308- then (an.fee == 500000)
310+ then (ao.fee == 500000)
309311 else false)
310- then (an.feeAssetId == unit)
312+ then (ao.feeAssetId == unit)
311313 else false)
312- then sigVerify(al.bodyBytes, al.proofs[0], fromBase58String(G(an.args[1])))
313- else sigVerify(al.bodyBytes, al.proofs[0], al.senderPublicKey)
314+ then sigVerify(am.bodyBytes, am.proofs[0], fromBase58String(H(ao.args[1])))
315+ else sigVerify(am.bodyBytes, am.proofs[0], am.senderPublicKey)
314316 }
315- else sigVerify(al.bodyBytes, al.proofs[0], al.senderPublicKey)
317+ else sigVerify(am.bodyBytes, am.proofs[0], am.senderPublicKey)
316318 }
317319
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-func a (b) = valueOrElse(getString(this, b), "")
4+let a = "1.1.9"
5+
6+func b (c) = valueOrElse(getString(this, c), "")
57
68
7-let c = value(addressFromString(a("conf_oracle_address")))
9+let d = value(addressFromString(b("conf_oracle_address")))
810
9-let d = a("conf_fee_receiver_address")
11+let e = b("conf_fee_receiver_address")
1012
11-let e = a("conf_accepted_token_id")
13+let f = b("conf_accepted_token_id")
1214
13-let f = a("conf_usdn_id")
15+let g = b("conf_usdn_id")
1416
15-let g = a("conf_admin_address")
17+let h = b("conf_admin_address")
1618
17-let h = "1.1.9"
19+let i = b("conf_sign_art_users_dapp_address")
1820
19-let i = 1
21+let j = 1
2022
21-func j (k,l) = {
22- let m = getString(this, (k + l))
23- if ($isInstanceOf(m, "String"))
23+func k (l,m) = {
24+ let n = getString(this, (l + m))
25+ if ($isInstanceOf(n, "String"))
2426 then {
25- let n = m
26- n
27+ let o = n
28+ o
2729 }
2830 else "NONE"
2931 }
3032
3133
32-func o (l,p) = {
33- let m = getString(this, ((l + "@") + p))
34- if ($isInstanceOf(m, "String"))
34+func p (m,q) = {
35+ let n = getString(this, ((m + "@") + q))
36+ if ($isInstanceOf(n, "String"))
3537 then {
36- let n = m
37- n
38+ let o = n
39+ o
3840 }
3941 else "NONE"
4042 }
4143
4244
43-func q (l) = {
44- let m = getString(this, l)
45- if ($isInstanceOf(m, "String"))
45+func r (m) = {
46+ let n = getString(this, m)
47+ if ($isInstanceOf(n, "String"))
4648 then {
47- let n = m
48- n
49+ let o = n
50+ o
4951 }
5052 else "NONE"
5153 }
5254
5355
54-func r (s) = {
55- let m = getInteger(this, ("addr_WHITELISTED_" + s))
56- if ($isInstanceOf(m, "Int"))
56+func s (t) = {
57+ let n = getInteger(this, ("addr_WHITELISTED_" + t))
58+ if ($isInstanceOf(n, "Int"))
5759 then {
58- let n = m
59- n
60+ let o = n
61+ o
6062 }
6163 else 0
6264 }
6365
6466
65-func t (u) = if (if (if ((size(u) == 35))
66- then (take(u, 2) == "3P")
67+func u (v) = if (if (if ((size(v) == 35))
68+ then (take(v, 2) == "3P")
6769 else false)
6870 then true
69- else (take(u, 2) == "3N"))
71+ else (take(v, 2) == "3N"))
7072 then true
71- else (take(u, 2) == "3M")
73+ else (take(v, 2) == "3M")
7274
7375
74-func v (w,u) = if ((size(u) > 0))
75- then (w + 1)
76- else (w + 0)
76+func w (x,v) = if ((size(v) > 0))
77+ then (x + 1)
78+ else (x + 0)
7779
7880
79-func x (b) = {
80- let m = getString(this, b)
81- if ($isInstanceOf(m, "String"))
81+func y (c) = {
82+ let n = getString(this, c)
83+ if ($isInstanceOf(n, "String"))
8284 then {
83- let n = m
84- if ((n == "PENDING"))
85+ let o = n
86+ if ((o == "PENDING"))
8587 then true
8688 else false
8789 }
8890 else false
8991 }
9092
9193
92-func y (z) = take(drop(z, 1), value(indexOf(drop(z, 1), "\"")))
94+func z (A) = take(drop(A, 1), value(indexOf(drop(A, 1), "\"")))
9395
9496
95-func A (z,b) = {
96- let B = value(indexOf(z, (("\"" + b) + "\":")))
97- let C = drop(z, ((B + size(b)) + 3))
98- let D = y(C)
97+func B (A,c) = {
98+ let C = value(indexOf(A, (("\"" + c) + "\":")))
99+ let D = drop(A, ((C + size(c)) + 3))
100+ let E = z(D)
101+ E
102+ }
103+
104+
105+func F (A,c) = {
106+ let C = value(indexOf(A, (("\"" + c) + "\":")))
107+ let D = take(A, ((C + size(c)) + 3))
99108 D
100109 }
101110
102111
103-func E (z,b) = {
104- let B = value(indexOf(z, (("\"" + b) + "\":")))
105- let C = take(z, ((B + size(b)) + 3))
106- C
112+func G (A,c) = {
113+ let C = value(indexOf(A, (("\"" + c) + "\":")))
114+ let D = takeRight(A, (size(A) - ((((C + size(c)) + 3) + 0) + 2)))
115+ D
107116 }
108117
109118
110-func F (z,b) = {
111- let B = value(indexOf(z, (("\"" + b) + "\":")))
112- let C = takeRight(z, (size(z) - ((((B + size(b)) + 3) + 0) + 2)))
113- C
114- }
115-
116-
117-func G (H) = {
118- let m = H
119- if ($isInstanceOf(m, "String"))
119+func H (I) = {
120+ let n = I
121+ if ($isInstanceOf(n, "String"))
120122 then {
121- let I = m
122- I
123+ let J = n
124+ J
123125 }
124126 else throw("Sponsored Public Key String expected")
125127 }
126128
127129
128-@Callable(J)
129-func setConf (b,K) = {
130- let L = toString(J.caller)
131- if (containsElement([g, toString(this)], L))
132- then if (contains(b, "conf_"))
133- then [StringEntry(b, K)]
130+@Callable(K)
131+func setConf (c,L) = {
132+ let M = toString(K.caller)
133+ if (containsElement([h, toString(this)], M))
134+ then if (contains(c, "conf_"))
135+ then [StringEntry(c, L)]
134136 else throw("Entries starting with conf_ only")
135137 else throw("You are not allowed to change this")
136138 }
137139
138140
139141
140-@Callable(J)
141-func fileCertification (M,N,l,O,P) = {
142- let Q = value(J.transactionId)
143- let R = j(M, l)
144- let S = q(l)
145- let T = (this == J.caller)
146- let s = if (T)
147- then toString(addressFromPublicKey(fromBase58String(P)))
148- else toBase58String(J.caller.bytes)
149- let U = r(s)
150- if ((R != "NONE"))
142+@Callable(K)
143+func fileCertification (N,O,m,P,Q) = {
144+ let R = value(K.transactionId)
145+ let S = k(N, m)
146+ let T = r(m)
147+ let U = (this == K.caller)
148+ let t = if (U)
149+ then toString(addressFromPublicKey(fromBase58String(Q)))
150+ else toBase58String(K.caller.bytes)
151+ let V = s(t)
152+ if ((S != "NONE"))
151153 then throw("This entry already exist")
152- else if ((S != "NONE"))
154+ else if ((T != "NONE"))
153155 then throw("This uuid already exist")
154- else if ((size(l) != 36))
156+ else if ((size(m) != 36))
155157 then throw("Uuid should be 36 characters.")
156- else if ((size(M) != 64))
158+ else if ((size(N) != 64))
157159 then throw("Hash should be 64 characters.")
158- else if ((size(N) > 100))
160+ else if ((size(O) > 100))
159161 then throw("Title is too long, 100 characters max.")
160- else if (if (if (contains(M, "\""))
161- then true
162- else contains(N, "\""))
162+ else if (if (if (contains(N, "\""))
163163 then true
164164 else contains(O, "\""))
165+ then true
166+ else contains(P, "\""))
165167 then throw("No \" allowed")
166168 else {
167- let C = (((((((("{\"hash\":\"" + M) + "\",\"timestamp\":") + toString(lastBlock.timestamp)) + ",\"title\":\"") + N) + "\",\"ipfs\":\"") + O) + "\"}")
168- if ((U > 0))
169+ let D = (((((((("{\"hash\":\"" + N) + "\",\"timestamp\":") + toString(lastBlock.timestamp)) + ",\"title\":\"") + O) + "\",\"ipfs\":\"") + P) + "\"}")
170+ if ((V > 0))
169171 then {
170- let V = if ((size(O) != 0))
171- then (1 + i)
172+ let W = if ((size(P) != 0))
173+ then (1 + j)
172174 else 1
173- if ((0 > (U - V)))
175+ if ((0 > (V - W)))
174176 then throw("Not enough credit")
175- else [StringEntry(l, toBase58String(Q)), StringEntry((M + l), toBase58String(Q)), StringEntry((N + l), toBase58String(Q)), IntegerEntry(("addr_WHITELISTED_" + s), (U - V)), StringEntry(((("data_fc_" + toBase58String(Q)) + "_") + s), C), ScriptTransfer(addressFromStringValue(s), 0, fromBase58String(e))]
177+ else [StringEntry(m, toBase58String(R)), StringEntry((N + m), toBase58String(R)), StringEntry((O + m), toBase58String(R)), IntegerEntry(("addr_WHITELISTED_" + t), (V - W)), StringEntry(((("data_fc_" + toBase58String(R)) + "_") + t), D), ScriptTransfer(addressFromStringValue(t), 0, fromBase58String(f))]
176178 }
177- else if (!(T))
179+ else if (!(U))
178180 then {
179- let W = value(J.payments[0])
180- let X = value(W.amount)
181- let Y = if (isDefined(W.assetId))
182- then value(W.assetId)
181+ let X = value(K.payments[0])
182+ let Y = value(X.amount)
183+ let Z = if (isDefined(X.assetId))
184+ then value(X.assetId)
183185 else throw("Waves is not accepted as payment")
184- let Z = getIntegerValue(c, ("certification_fee_" + toBase58String(value(Y))))
185- let aa = if ((size(O) != 0))
186- then (Z + (i * Z))
187- else Z
188- if ((fromBase58String(e) != Y))
186+ let aa = getIntegerValue(d, ("certification_fee_" + toBase58String(value(Z))))
187+ let ab = if ((size(P) != 0))
188+ then (aa + (j * aa))
189+ else aa
190+ if ((fromBase58String(f) != Z))
189191 then throw("This token is not accepted at the moment")
190- else if (if ((X != aa))
191- then (0 >= U)
192+ else if (if ((Y != ab))
193+ then (0 >= V)
192194 else false)
193195 then throw("The price is wrong")
194- else [StringEntry(l, toBase58String(Q)), StringEntry((M + l), toBase58String(Q)), StringEntry((N + l), toBase58String(Q)), StringEntry(((("data_fc_" + toBase58String(Q)) + "_") + s), C), ScriptTransfer(addressFromStringValue(d), aa, W.assetId)]
196+ else [StringEntry(m, toBase58String(R)), StringEntry((N + m), toBase58String(R)), StringEntry((O + m), toBase58String(R)), StringEntry(((("data_fc_" + toBase58String(R)) + "_") + t), D), ScriptTransfer(addressFromStringValue(e), ab, X.assetId)]
195197 }
196198 else throw("You are not allowed to do that")
197199 }
198200 }
199201
200202
201203
202-@Callable(J)
203-func revokeCertification (ab,P) = {
204- let Q = value(J.transactionId)
205- let T = (this == J.caller)
206- let s = if (T)
207- then toString(addressFromPublicKey(fromBase58String(P)))
208- else toBase58String(J.caller.bytes)
209- let R = {
210- let m = getString(this, ((("data_fc_" + ab) + "_") + s))
211- if ($isInstanceOf(m, "String"))
204+@Callable(K)
205+func revokeCertification (ac,Q) = {
206+ let R = value(K.transactionId)
207+ let U = (this == K.caller)
208+ let t = if (U)
209+ then toString(addressFromPublicKey(fromBase58String(Q)))
210+ else toBase58String(K.caller.bytes)
211+ let S = {
212+ let n = getString(this, ((("data_fc_" + ac) + "_") + t))
213+ if ($isInstanceOf(n, "String"))
212214 then {
213- let n = m
214- n
215+ let o = n
216+ o
215217 }
216218 else "NONE"
217219 }
218- let ac = {
219- let m = getString(this, ("STATUS_FC_" + ab))
220- if ($isInstanceOf(m, "String"))
220+ let ad = {
221+ let n = getString(this, ("STATUS_FC_" + ac))
222+ if ($isInstanceOf(n, "String"))
221223 then {
222- let n = m
223- n
224+ let o = n
225+ o
224226 }
225227 else "NONE"
226228 }
227- let U = r(s)
228- let ad = (((dropRight(R, 1) + ",\"status\":\"REVOKED_") + toBase58String(Q)) + "\"}")
229- if ((ac != "NONE"))
229+ let V = s(t)
230+ let ae = (((dropRight(S, 1) + ",\"status\":\"REVOKED_") + toBase58String(R)) + "\"}")
231+ if ((ad != "NONE"))
230232 then throw("This certification have already been revoked.")
231- else if ((R == "NONE"))
233+ else if ((S == "NONE"))
232234 then throw("You cannot change the status of this certification.")
233- else if ((U > 0))
234- then [IntegerEntry(("addr_WHITELISTED_" + s), (U - 1)), StringEntry(("STATUS_FC_" + ab), ("REVOKED_" + toBase58String(Q))), StringEntry(((("data_fc_" + ab) + "_") + s), ad), ScriptTransfer(addressFromStringValue(s), 0, fromBase58String(e))]
235- else if (!(T))
235+ else if ((V > 0))
236+ then [IntegerEntry(("addr_WHITELISTED_" + t), (V - 1)), StringEntry(("STATUS_FC_" + ac), ("REVOKED_" + toBase58String(R))), StringEntry(((("data_fc_" + ac) + "_") + t), ae), ScriptTransfer(addressFromStringValue(t), 0, fromBase58String(f))]
237+ else if (!(U))
236238 then {
237- let W = value(J.payments[0])
238- let X = value(W.amount)
239- let Y = if (isDefined(W.assetId))
240- then value(W.assetId)
239+ let X = value(K.payments[0])
240+ let Y = value(X.amount)
241+ let Z = if (isDefined(X.assetId))
242+ then value(X.assetId)
241243 else throw("Waves is not accepted as payment")
242- let Z = getIntegerValue(c, ("certification_fee_" + toBase58String(value(Y))))
243- if ((fromBase58String(e) != Y))
244+ let aa = getIntegerValue(d, ("certification_fee_" + toBase58String(value(Z))))
245+ if ((fromBase58String(f) != Z))
244246 then throw("This token is not accepted at the moment")
245- else if (if ((X != Z))
246- then (0 >= U)
247+ else if (if ((Y != aa))
248+ then (0 >= V)
247249 else false)
248250 then throw("The price is wrong")
249- else [StringEntry(("STATUS_FC_" + ab), ("REVOKED_" + toBase58String(Q))), StringEntry(((("data_fc_" + ab) + "_") + s), ad), ScriptTransfer(addressFromStringValue(d), X, W.assetId)]
251+ else [StringEntry(("STATUS_FC_" + ac), ("REVOKED_" + toBase58String(R))), StringEntry(((("data_fc_" + ac) + "_") + t), ae), ScriptTransfer(addressFromStringValue(e), Y, X.assetId)]
250252 }
251253 else throw("You are not allowed to do that")
252254 }
253255
254256
255257
256-@Callable(J)
258+@Callable(K)
257259 func usdnSignCredits () = {
258- let W = value(J.payments[0])
259- let s = toBase58String(J.caller.bytes)
260- let ae = value(W.assetId)
261- let X = value(W.amount)
262- let af = ((X * 2) / 1000000)
263- let U = r(s)
264- if ((toBase58String(ae) != f))
260+ let X = value(K.payments[0])
261+ let t = toBase58String(K.caller.bytes)
262+ let af = value(X.assetId)
263+ let Y = value(X.amount)
264+ let ag = ((Y * 2) / 1000000)
265+ let V = s(t)
266+ if ((toBase58String(af) != g))
265267 then throw("Only USDN can be exchanged")
266- else if (if (((X % 1000000) != 0))
267- then ((X % 1000000) != 500000)
268+ else if (if (((Y % 1000000) != 0))
269+ then ((Y % 1000000) != 500000)
268270 else false)
269- then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(X), 6)) + ".") + takeRight(toString(X), 6)))
270- else [IntegerEntry(("addr_WHITELISTED_" + s), (U + af)), ScriptTransfer(addressFromStringValue(d), X, ae)]
271+ then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(Y), 6)) + ".") + takeRight(toString(Y), 6)))
272+ else [IntegerEntry(("addr_WHITELISTED_" + t), (V + ag)), ScriptTransfer(addressFromStringValue(e), Y, af)]
271273 }
272274
273275
274276
275-@Callable(ag)
276-func whitelistFreeCertifications (ah,X,ai) = {
277- let L = toString(addressFromPublicKey(ag.callerPublicKey))
278- let Q = toBase58String(ag.transactionId)
279- if (containsElement([g], L))
277+@Callable(ah)
278+func whitelistFreeCertifications (ai,Y,aj) = {
279+ let M = toString(addressFromPublicKey(ah.callerPublicKey))
280+ let R = toBase58String(ah.transactionId)
281+ if (containsElement([h, i], M))
280282 then {
281- let aj = valueOrElse(getInteger(this, ("addr_WHITELISTED_" + ah)), 0)
282- let ak = if (ai)
283- then (aj + X)
284- else X
285-[IntegerEntry(("addr_WHITELISTED_" + ah), ak)]
283+ let ak = valueOrElse(getInteger(this, ("addr_WHITELISTED_" + ai)), 0)
284+ let al = if (aj)
285+ then (ak + Y)
286+ else Y
287+[IntegerEntry(("addr_WHITELISTED_" + ai), al)]
286288 }
287289 else throw("You are not authorized to whitelist txs")
288290 }
289291
290292
291-@Verifier(al)
292-func am () = {
293- let m = al
294- if ($isInstanceOf(m, "InvokeScriptTransaction"))
293+@Verifier(am)
294+func an () = {
295+ let n = am
296+ if ($isInstanceOf(n, "InvokeScriptTransaction"))
295297 then {
296- let an = m
297- if (if (if (if ((an.function == "fileCertification"))
298- then (an.dApp == this)
298+ let ao = n
299+ if (if (if (if ((ao.function == "fileCertification"))
300+ then (ao.dApp == this)
299301 else false)
300- then (an.fee == 500000)
302+ then (ao.fee == 500000)
301303 else false)
302- then (an.feeAssetId == unit)
304+ then (ao.feeAssetId == unit)
303305 else false)
304- then sigVerify(al.bodyBytes, al.proofs[0], fromBase58String(G(an.args[4])))
305- else if (if (if (if ((an.function == "revokeCertification"))
306- then (an.dApp == this)
306+ then sigVerify(am.bodyBytes, am.proofs[0], fromBase58String(H(ao.args[4])))
307+ else if (if (if (if ((ao.function == "revokeCertification"))
308+ then (ao.dApp == this)
307309 else false)
308- then (an.fee == 500000)
310+ then (ao.fee == 500000)
309311 else false)
310- then (an.feeAssetId == unit)
312+ then (ao.feeAssetId == unit)
311313 else false)
312- then sigVerify(al.bodyBytes, al.proofs[0], fromBase58String(G(an.args[1])))
313- else sigVerify(al.bodyBytes, al.proofs[0], al.senderPublicKey)
314+ then sigVerify(am.bodyBytes, am.proofs[0], fromBase58String(H(ao.args[1])))
315+ else sigVerify(am.bodyBytes, am.proofs[0], am.senderPublicKey)
314316 }
315- else sigVerify(al.bodyBytes, al.proofs[0], al.senderPublicKey)
317+ else sigVerify(am.bodyBytes, am.proofs[0], am.senderPublicKey)
316318 }
317319

github/deemru/w8io/3ef1775 
424.58 ms