tx · ALhs6MjQxcdWaSK8iveawBhpZ3HmQDL6k5gyBmiw5Y1m 3NAvjS6xYnU4xqwpd35nJ3NGD4BVmzF11Vs: -0.05000000 Waves 2023.10.06 14:50 [2786722] smart account 3NAvjS6xYnU4xqwpd35nJ3NGD4BVmzF11Vs > SELF 0.00000000 Waves
{ "type": 13, "id": "ALhs6MjQxcdWaSK8iveawBhpZ3HmQDL6k5gyBmiw5Y1m", "fee": 5000000, "feeAssetId": null, "timestamp": 1696593015311, "version": 1, "sender": "3NAvjS6xYnU4xqwpd35nJ3NGD4BVmzF11Vs", "senderPublicKey": "Becugxe2jG1XKufPVS6q5NhLiEZLxRPfnYjhcvtbAbQk", "proofs": [ "2JjpULcmgHWbSGFcTbw9yXzoDaBFFDRq77ypoybUpPs23MrQD9tpqVLgQ9o9CXNqkEmFeEmmsgfb5b6YPTm8EiHp" ], "script": "base64:BgJjCAISDAoKCAEBAQEBAQgICBIECgIIARIECgIICBIECgIICBIDCgEIEgMKAQgSBQoDCAEBEgMKAQgSBAoCCAESAwoBCBIDCgEIEgMKAQgSBAoCCAgSBAoCCAgSAwoBCBIDCgEIMwEQd3JpdGVDb25zdFN0cmluZwIDa2V5BXZhbHVlAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQNrZXkJAQtTdHJpbmdFbnRyeQIFA2tleQUFdmFsdWUJAAIBCQCsAgICFWFscmVhZHkgaW5pdGlhbGl6ZWQ6IAUDa2V5AQh3cml0ZUludAIDa2V5BXZhbHVlAwkAZgIAAAUFdmFsdWUJAAIBCQCsAgIJAKwCAgkArAICAhd3cml0aW5nIG5lZ2F0aXZlIHZhbHVlIAkApAMBBQV2YWx1ZQIJIGZvciBrZXkgBQNrZXkJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBXZhbHVlAQhjaGFuZ2VCeQIDa2V5BXZhbHVlCQEId3JpdGVJbnQCBQNrZXkJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAABQV2YWx1ZQEFYXNJbnQBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgNJbnQEA2ludAUHJG1hdGNoMAUDaW50CQACAQIZd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAEHYXNzZXRJZAEDc3RyAwkAAAIFA3N0cgIFV0FWRVMFBHVuaXQJANkEAQUDc3RyABJjb25maWdBZGRyZXNzU3RvcmUCBmNvbmZpZwANY29uZmlnQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBRJjb25maWdBZGRyZXNzU3RvcmUCImNoaWxkcmVuOiBjb25maWcgYWRkcmVzcyBub3QgZm91bmQCFmludmFsaWQgY29uZmlnIGFkZHJlc3MBB2FsbG93ZWQBAm9wCQD8BwQFDWNvbmZpZ0FkZHJlc3MCCW9wQWxsb3dlZAkAzAgCBQJvcAUDbmlsBQNuaWwABkhFSUdIVAUGaGVpZ2h0AApwd3JBc3NldElkCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ1jb25maWdBZGRyZXNzAgxwb3dlckFzc2V0SWQCFnB3ciBhc3NldCBpZCBub3QgZm91bmQACHNsYXNoZXJzCQELdmFsdWVPckVsc2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MJAKwCAgkApQgBBQR0aGlzAglfc2xhc2hlcnMCAAANbWFpbkFkZHJlc3NlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ1jb25maWdBZGRyZXNzAg5tYWluX2FkZHJlc3NlcwIAAQtwZXJpb2RTdG9yZQEFY2hpbGQJAKwCAgIHcGVyaW9kXwUFY2hpbGQBBnBlcmlvZAEFY2hpbGQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBC3BlcmlvZFN0b3JlAQUFY2hpbGQAAAEKb3duZXJTdG9yZQEFY2hpbGQJAKwCAgIGb3duZXJfBQVjaGlsZAENdHJlYXN1cnlTdG9yZQEFY2hpbGQJAKwCAgIJdHJlYXN1cnlfBQVjaGlsZAENbG9ja1RpbWVTdG9yZQEFY2hpbGQJAKwCAgIJbG9ja1RpbWVfBQVjaGlsZAETcGVyaW9kTG9ja1RpbWVTdG9yZQIFY2hpbGQGcGVyaW9kCQCsAgIJAKwCAgkArAICAgdwZXJpb2RfCQCkAwEFBnBlcmlvZAIKX2xvY2tUaW1lXwUFY2hpbGQBEXNraW5SZXF1aXJlZFN0b3JlAQVjaGlsZAkArAICAg5za2luX3JlcXVpcmVkXwUFY2hpbGQBDHNraW5NYXhTdG9yZQEFY2hpbGQJAKwCAgIJc2tpbl9tYXhfBQVjaGlsZAETaW52ZXN0bWVudHNNYXhTdG9yZQEFY2hpbGQJAKwCAgIQaW52ZXN0bWVudHNfbWF4XwUFY2hpbGQBEm1pbkNvbW1pdG1lbnRTdG9yZQEFY2hpbGQJAKwCAgIObWluX2NvbW1pdG1lbnQFBWNoaWxkAQ5za2luVG90YWxTdG9yZQEFY2hpbGQJAKwCAgILc2tpbl90b3RhbF8FBWNoaWxkAA1wd3JUb3RhbFN0b3JlAglwd3JfdG90YWwBGGludmVzdG1lbnRzUmVxdWlyZWRTdG9yZQEFY2hpbGQJAKwCAgIVaW52ZXN0bWVudHNfcmVxdWlyZWRfBQVjaGlsZAEVaW52ZXN0bWVudHNUb3RhbFN0b3JlAQVjaGlsZAkArAICAhJpbnZlc3RtZW50c190b3RhbF8FBWNoaWxkARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBWNoaWxkCQCsAgIJAKwCAgkArAICAgdwZXJpb2RfCQCkAwEJAQZwZXJpb2QBBQVjaGlsZAITX2ludmVzdG1lbnRzX3RvdGFsXwUFY2hpbGQBFWludmVzdG1lbnRzVG9rZW5TdG9yZQEFY2hpbGQJAKwCAgISaW52ZXN0bWVudHNfdG9rZW5fBQVjaGlsZAEQY29tbWl0bWVudHNTdG9yZQEFY2hpbGQJAKwCAgIMY29tbWl0bWVudHNfBQVjaGlsZAERY3JlYXRlSGVpZ2h0U3RvcmUBBWNoaWxkCQCsAgICDmNyZWF0ZV9oZWlnaHRfBQVjaGlsZAEQc3RhcnRIZWlnaHRTdG9yZQEFY2hpbGQJAKwCAgINc3RhcnRfaGVpZ2h0XwUFY2hpbGQBFnN0YXJ0UGVyaW9kSGVpZ2h0U3RvcmUCBWNoaWxkBnBlcmlvZAkArAICCQCsAgIJAKwCAgIHcGVyaW9kXwkApAMBBQZwZXJpb2QCDl9zdGFydF9oZWlnaHRfBQVjaGlsZAEbc3RhcnRQZXJpb2RBZnRlckhlaWdodFN0b3JlAgVjaGlsZAZwZXJpb2QJAKwCAgkArAICCQCsAgICB3BlcmlvZF8JAKQDAQUGcGVyaW9kAhRfc3RhcnRfYWZ0ZXJfaGVpZ2h0XwUFY2hpbGQBHXN0YXJ0Q3VycmVudFBlcmlvZEhlaWdodFN0b3JlAQVjaGlsZAkBFnN0YXJ0UGVyaW9kSGVpZ2h0U3RvcmUCBQVjaGlsZAkBBnBlcmlvZAEFBWNoaWxkARFjYW5jZWxIZWlnaHRTdG9yZQEFY2hpbGQJAKwCAgIOY2FuY2VsX2hlaWdodF8FBWNoaWxkARBpbnZlc3RtZW50c1Rva2VuAQVjaGlsZAkBB2Fzc2V0SWQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWludmVzdG1lbnRzVG9rZW5TdG9yZQEFBWNoaWxkAh5pbnZlc3RtZW50cyBhc3NldCBpZCBub3QgZm91bmQBDXVzZXJTa2luU3RvcmUCBWNoaWxkBHVzZXIJAKwCAgkArAICCQCsAgICBXNraW5fBQVjaGlsZAIBXwUEdXNlcgEUdXNlclNraW5IaXN0b3J5U3RvcmUCBWNoaWxkBHVzZXIJAKwCAgkBDXVzZXJTa2luU3RvcmUCBQVjaGlsZAUEdXNlcgIIX2hpc3RvcnkBDWludmVzdG9yU3RvcmUCBWNoaWxkCGludmVzdG9yCQCsAgIJAKwCAgkArAICAglpbnZlc3Rvcl8FBWNoaWxkAgFfBQhpbnZlc3RvcgEQYXNzZXJ0Tm90U3RhcnRlZAEFY2hpbGQDCQEJaXNEZWZpbmVkAQkAnwgBCQEQc3RhcnRIZWlnaHRTdG9yZQEFBWNoaWxkCQACAQIPYWxyZWFkeSBzdGFydGVkBwESYXNzZXJ0Tm90Q2FuY2VsbGVkAQVjaGlsZAMJAQlpc0RlZmluZWQBCQCfCAEJARFjYW5jZWxIZWlnaHRTdG9yZQEFBWNoaWxkCQACAQIQYWxyZWFkeSBjYW5jZWxlZAcBFmFzc2VydE5vdFN0YXJ0ZWRQZXJpb2QBBWNoaWxkAwkAAAIJAQZwZXJpb2QBBQVjaGlsZAAACQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkAwkBCWlzRGVmaW5lZAEJAJ8IAQkBHXN0YXJ0Q3VycmVudFBlcmlvZEhlaWdodFN0b3JlAQUFY2hpbGQJAAIBAhZwZXJpb2QgYWxyZWFkeSBzdGFydGVkBwEOdXNlckNvbW1pdG1lbnQCBWNoaWxkBHVzZXIJAJ8IAQkBDXVzZXJTa2luU3RvcmUCBQVjaGlsZAUEdXNlcgEPY3VycmVudFVzZXJTa2luAgVjaGlsZAR1c2VyCQELdmFsdWVPckVsc2UCCQEOdXNlckNvbW1pdG1lbnQCBQVjaGlsZAUEdXNlcgAAAQhsb2NrVGltZQIFY2hpbGQGcGVyaW9kCQELdmFsdWVPckVsc2UCCQCfCAEJARNwZXJpb2RMb2NrVGltZVN0b3JlAgUFY2hpbGQFBnBlcmlvZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEJAQ1sb2NrVGltZVN0b3JlAQUFY2hpbGQCEW5vIGNoaWxkIGxvY2tUaW1lAQx1bmxvY2tIZWlnaHQBBWNoaWxkBAFwCQEGcGVyaW9kAQUFY2hpbGQEC3BlcmlvZFN0YXJ0CQCfCAEJARZzdGFydFBlcmlvZEhlaWdodFN0b3JlAgUFY2hpbGQFAXADCQEJaXNEZWZpbmVkAQULcGVyaW9kU3RhcnQJAGQCCQEFdmFsdWUBBQtwZXJpb2RTdGFydAkBCGxvY2tUaW1lAgUFY2hpbGQFAXAECnByZXZQZXJpb2QJAGUCBQFwAAEECmNoaWxkU3RhcnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQEQc3RhcnRIZWlnaHRTdG9yZQEFBWNoaWxkAhVubyBjaGlsZCBzdGFydCBoZWlnaHQJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEJARZzdGFydFBlcmlvZEhlaWdodFN0b3JlAgUFY2hpbGQFCnByZXZQZXJpb2QFCmNoaWxkU3RhcnQJAQhsb2NrVGltZQIFBWNoaWxkBQpwcmV2UGVyaW9kAQh0cmVhc3VyeQEFY2hpbGQJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBDXRyZWFzdXJ5U3RvcmUBBQVjaGlsZAUFY2hpbGQBA2ludAEDa2V5CQCkAwEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUDa2V5AAABA3N0cgEDa2V5CQELdmFsdWVPckVsc2UCCQCiCAEFA2tleQIAAQ1hZHZpc2VQcm9qZWN0AQVjaGlsZAQBcAkBBnBlcmlvZAEFBWNoaWxkBAlwZXJpb2RTdHIJAKQDAQUBcAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIIaGVpZ2h0OiAJAKQDAQUGSEVJR0hUAgssIHByb2plY3Q6IAUFY2hpbGQCCSwgb3duZXI6IAkBA3N0cgEJAQpvd25lclN0b3JlAQUFY2hpbGQCDCwgdHJlYXN1cnk6IAkBCHRyZWFzdXJ5AQUFY2hpbGQCDSwgbG9ja190aW1lOiAJAQNpbnQBCQENbG9ja1RpbWVTdG9yZQEFBWNoaWxkAhEsIHNraW5fcmVxdWlyZWQ6IAkBA2ludAEJARFza2luUmVxdWlyZWRTdG9yZQEFBWNoaWxkAgwsIHNraW5fbWF4OiAJAQNpbnQBCQEMc2tpbk1heFN0b3JlAQUFY2hpbGQCEiwgbWluX2NvbW1pdG1lbnQ6IAkBA2ludAEJARJtaW5Db21taXRtZW50U3RvcmUBBQVjaGlsZAIOLCBza2luX3RvdGFsOiAJAQNpbnQBCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAIYLCBpbnZlc3RtZW50c19yZXF1aXJlZDogCQEDaW50AQkBGGludmVzdG1lbnRzUmVxdWlyZWRTdG9yZQEFBWNoaWxkAhMsIGludmVzdG1lbnRzX21heDogCQEDaW50AQkBE2ludmVzdG1lbnRzTWF4U3RvcmUBBQVjaGlsZAIVLCBpbnZlc3RtZW50c190b3RhbDogCQEDaW50AQkBFWludmVzdG1lbnRzVG90YWxTdG9yZQEFBWNoaWxkAhUsIGludmVzdG1lbnRzX3Rva2VuOiAJAQNzdHIBCQEVaW52ZXN0bWVudHNUb2tlblN0b3JlAQUFY2hpbGQCDywgY29tbWl0bWVudHM6IAkBA3N0cgEJARBjb21taXRtZW50c1N0b3JlAQUFY2hpbGQCESwgY3JlYXRlX2hlaWdodDogCQEDaW50AQkBEWNyZWF0ZUhlaWdodFN0b3JlAQUFY2hpbGQCECwgc3RhcnRfaGVpZ2h0OiAJAKQDAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEQc3RhcnRIZWlnaHRTdG9yZQEFBWNoaWxkAP///////////wECESwgY2FuY2VsX2hlaWdodDogCQCkAwEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEWNhbmNlbEhlaWdodFN0b3JlAQUFY2hpbGQA////////////AQIKLCBwZXJpb2Q6IAUJcGVyaW9kU3RyAgksIHBlcmlvZF8FCXBlcmlvZFN0cgIVX3N0YXJ0X2FmdGVyX2hlaWdodDogCQCkAwEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBG3N0YXJ0UGVyaW9kQWZ0ZXJIZWlnaHRTdG9yZQIFBWNoaWxkBQFwAP///////////wECCSwgcGVyaW9kXwUJcGVyaW9kU3RyAg9fc3RhcnRfaGVpZ2h0OiAJAKQDAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEdc3RhcnRDdXJyZW50UGVyaW9kSGVpZ2h0U3RvcmUBBQVjaGlsZAD///////////8BAgksIHBlcmlvZF8FCXBlcmlvZFN0cgIMX2xvY2tfdGltZTogCQCkAwEJAQhsb2NrVGltZQIFBWNoaWxkBQFwAhEsIHVubG9ja19oZWlnaHQ6IAkApAMBCQEMdW5sb2NrSGVpZ2h0AQUFY2hpbGQCHCwgcGVyaW9kX2ludmVzdG1lbnRzX3RvdGFsOiAJAQNpbnQBCQEbaW52ZXN0bWVudHNQZXJpb2RUb3RhbFN0b3JlAQUFY2hpbGQBEWFkdmlzZVVzZXJQcm9qZWN0AgVjaGlsZAR1c2VyCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAghoZWlnaHQ6IAkApAMBBQZIRUlHSFQCCywgcHJvamVjdDogBQVjaGlsZAIHLCBza2luOgkApAMBCQEPY3VycmVudFVzZXJTa2luAgUFY2hpbGQFBHVzZXICCCwgcG93ZXI6CQCkAwEJAQt2YWx1ZU9yRWxzZQIJAQ51c2VyQ29tbWl0bWVudAIFBWNoaWxkBQR1c2VyAAACDywgaW52ZXN0bWVudHM6IAkBA2ludAEJAQ1pbnZlc3RvclN0b3JlAgUFY2hpbGQFBHVzZXIQAWkBCnByb2plY3RGb3IKBW93bmVyBHNraW4HbWF4U2tpbg1taW5Db21taXRtZW50CGxvY2tUaW1lC2ludmVzdG1lbnRzDm1heEludmVzdG1lbnRzEGludmVzdG1lbnRzVG9rZW4LY29tbWl0bWVudHMFY2hpbGQEAWEJAQdhbGxvd2VkAQIKcHJvamVjdEZvcgMJAAACBQFhBQFhAwkBASEBCQEIY29udGFpbnMCBQ1tYWluQWRkcmVzc2VzCQClCAEIBQFpBmNhbGxlcgkAAgECBmRlbmllZAQBdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFBWNoaWxkAhhpbnZhbGlkIHRyZWFzdXJ5IGFkZHJlc3MDCQAAAgUBdAUBdAQFdG9rZW4JAQdhc3NldElkAQUQaW52ZXN0bWVudHNUb2tlbgMJAAACBQV0b2tlbgUFdG9rZW4DAwkAZgIFB21heFNraW4AAAkAZgIFBHNraW4FB21heFNraW4HCQACAQIPaW52YWxpZCBtYXhTa2luAwMJAGYCBQ5tYXhJbnZlc3RtZW50cwAACQBmAgULaW52ZXN0bWVudHMFDm1heEludmVzdG1lbnRzBwkAAgECFmludmFsaWQgbWF4SW52ZXN0bWVudHMJAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCCQEKb3duZXJTdG9yZQEFBWNoaWxkBQVvd25lcgkAzAgCCQEId3JpdGVJbnQCCQERY3JlYXRlSGVpZ2h0U3RvcmUBBQVjaGlsZAUGSEVJR0hUCQDMCAIJAQh3cml0ZUludAIJARFza2luUmVxdWlyZWRTdG9yZQEFBWNoaWxkBQRza2luCQDMCAIJAQh3cml0ZUludAIJAQxza2luTWF4U3RvcmUBBQVjaGlsZAUHbWF4U2tpbgkAzAgCCQEId3JpdGVJbnQCCQESbWluQ29tbWl0bWVudFN0b3JlAQUFY2hpbGQFDW1pbkNvbW1pdG1lbnQJAMwIAgkBCHdyaXRlSW50AgkBDWxvY2tUaW1lU3RvcmUBBQVjaGlsZAUIbG9ja1RpbWUJAMwIAgkBCHdyaXRlSW50AgkBGGludmVzdG1lbnRzUmVxdWlyZWRTdG9yZQEFBWNoaWxkBQtpbnZlc3RtZW50cwkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwIJARVpbnZlc3RtZW50c1Rva2VuU3RvcmUBBQVjaGlsZAUQaW52ZXN0bWVudHNUb2tlbgkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwIJARBjb21taXRtZW50c1N0b3JlAQUFY2hpbGQFC2NvbW1pdG1lbnRzCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgkBDXRyZWFzdXJ5U3RvcmUBBQVjaGlsZAUFY2hpbGQJAMwIAgkBCHdyaXRlSW50AgkBE2ludmVzdG1lbnRzTWF4U3RvcmUBBQVjaGlsZAUObWF4SW52ZXN0bWVudHMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1pbmNyZXJhc2VTa2luAgVjaGlsZA1za2luSW5jcmVtZW50BAFhCQEHYWxsb3dlZAECDWluY3JlcmFzZVNraW4DCQAAAgUBYQUBYQQBcwMJARBhc3NlcnROb3RTdGFydGVkAQUFY2hpbGQJARJhc3NlcnROb3RDYW5jZWxsZWQBBQVjaGlsZAcDCQAAAgUBcwUBcwMJAGcCAAAFDXNraW5JbmNyZW1lbnQJAAIBAjJpbnZhbGlkIGFyZ3VtZW50OiBza2luSW5jcmVtZW50IHNob3VsZCBiZSBwb3NpdGl2ZQQFb3duZXIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAQpvd25lclN0b3JlAQUFY2hpbGQDCQECIT0CCQClCAEIBQFpBmNhbGxlcgUFb3duZXIJAAIBAgZkZW5pZWQJAMwIAgkBCGNoYW5nZUJ5AgkBEXNraW5SZXF1aXJlZFN0b3JlAQUFY2hpbGQFDXNraW5JbmNyZW1lbnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQljb21taXRGb3ICBWNoaWxkB2FkZHJlc3MEAWEJAQdhbGxvd2VkAQIJY29tbWl0Rm9yAwkAAAIFAWEFAWEEAXMJARZhc3NlcnROb3RTdGFydGVkUGVyaW9kAQUFY2hpbGQDCQAAAgUBcwUBcwQBcAkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFAXAHYXNzZXRJZAUKcHdyQXNzZXRJZAkAAgECL2ludmFsaWQgYXR0YWNoZWQgcGF5bWVudDogJHBvd2VyIHRva2VuIGV4cGVjdGVkBApjb21taXRtZW50CAUBcAZhbW91bnQEDW1pbkNvbW1pdG1lbnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQESbWluQ29tbWl0bWVudFN0b3JlAQUFY2hpbGQCE0NoaWxkIERBTyBub3QgZm91bmQDCQBmAgUNbWluQ29tbWl0bWVudAUKY29tbWl0bWVudAkAAgEJAKwCAgITTWluLiBjb21taXRtZW50IGlzIAkApAMBBQ1taW5Db21taXRtZW50BA9za2luVG90YWxTdG9yZTEJAQ5za2luVG90YWxTdG9yZQEFBWNoaWxkBAxuZXdTa2luVG90YWwJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFD3NraW5Ub3RhbFN0b3JlMQAABQpjb21taXRtZW50BAdza2luTWF4CQELdmFsdWVPckVsc2UCCQCfCAEJAQxza2luTWF4U3RvcmUBBQVjaGlsZAAAAwMJAGYCBQdza2luTWF4AAAJAGYCBQxuZXdTa2luVG90YWwFB3NraW5NYXgHCQACAQkArAICAhxUb3RhbCBtYXguIHNraW4gaXMgcmVhY2hlZDogCQCkAwEFB3NraW5NYXgJAMwIAgkBCGNoYW5nZUJ5AgkBDXVzZXJTa2luU3RvcmUCBQVjaGlsZAUHYWRkcmVzcwUKY29tbWl0bWVudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUPc2tpblRvdGFsU3RvcmUxBQxuZXdTa2luVG90YWwJAMwIAgkBCGNoYW5nZUJ5AgUNcHdyVG90YWxTdG9yZQUKY29tbWl0bWVudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNvbW1pdEZvck1pbmVyAgVjaGlsZAdhZGRyZXNzBAFhCQEHYWxsb3dlZAECDmNvbW1pdEZvck1pbmVyAwkAAAIFAWEFAWEDCQEBIQEJAQhjb250YWlucwIFDW1haW5BZGRyZXNzZXMJAKUIAQgFAWkGY2FsbGVyCQACAQIGZGVuaWVkBAFwCQCRAwIIBQFpCHBheW1lbnRzAAADAwkBAiE9AggFAXAHYXNzZXRJZAUKcHdyQXNzZXRJZAYJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECLGludmFsaWQgcGF5bWVudHM6IG9ubHkgJHBvd2VyIHRva2VuIGV4cGVjdGVkBApjb21taXRtZW50CAUBcAZhbW91bnQJAMwIAgkBCGNoYW5nZUJ5AgkBDXVzZXJTa2luU3RvcmUCBQVjaGlsZAUHYWRkcmVzcwUKY29tbWl0bWVudAkAzAgCCQEIY2hhbmdlQnkCCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAUKY29tbWl0bWVudAkAzAgCCQEIY2hhbmdlQnkCBQ1wd3JUb3RhbFN0b3JlBQpjb21taXRtZW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEGaW52ZXN0AQVjaGlsZAQBYQkBB2FsbG93ZWQBAgZpbnZlc3QDCQAAAgUBYQUBYQQBcwkBFmFzc2VydE5vdFN0YXJ0ZWRQZXJpb2QBBQVjaGlsZAMJAAACBQFzBQFzBAV0b2tlbgkBEGludmVzdG1lbnRzVG9rZW4BBQVjaGlsZAMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUFdG9rZW4JAAIBAhxpbnZhbGlkIGludmVzdG1lbnRzIGFzc2V0IGlkBAZhbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAdtYXhpbXVtCQELdmFsdWVPckVsc2UCCQCfCAEJARNpbnZlc3RtZW50c01heFN0b3JlAQUFY2hpbGQAAAoBBWRhdGFzAQFhCQDMCAIJAQhjaGFuZ2VCeQIJAQ1pbnZlc3RvclN0b3JlAgUFY2hpbGQJAKUIAQgFAWkGY2FsbGVyBQFhCQDMCAIJAQhjaGFuZ2VCeQIJARVpbnZlc3RtZW50c1RvdGFsU3RvcmUBBQVjaGlsZAUBYQkAzAgCCQEIY2hhbmdlQnkCCQEbaW52ZXN0bWVudHNQZXJpb2RUb3RhbFN0b3JlAQUFY2hpbGQFAWEFA25pbAMJAGYCBQdtYXhpbXVtAAAECnRvdGFsU3RvcmUJARVpbnZlc3RtZW50c1RvdGFsU3RvcmUBBQVjaGlsZAQFdG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUKdG90YWxTdG9yZQAABAppbnZlc3RtZW5zCQCXAwEJAMwIAgUGYW1vdW50CQDMCAIJAGUCBQdtYXhpbXVtBQV0b3RhbAUDbmlsAwkAZwIAAAUKaW52ZXN0bWVucwkAAgEJAKwCAgIjVG90YWwgbWF4LiBpbnZlc3RtZW50cyBpcyByZWFjaGVkOiAJAKQDAQUHbWF4aW11bQQKY2hhcmdlQmFjawkAZQIFBmFtb3VudAUKaW52ZXN0bWVucwMJAGYCBQpjaGFyZ2VCYWNrAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQpjaGFyZ2VCYWNrBQV0b2tlbgkBBWRhdGFzAQUKaW52ZXN0bWVucwkBBWRhdGFzAQUKaW52ZXN0bWVucwkBBWRhdGFzAQUGYW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBXN0YXJ0AQVjaGlsZAQGcGF1c2VkCQEHYWxsb3dlZAECBXN0YXJ0AwkAAAIFBnBhdXNlZAUGcGF1c2VkBAFzAwkBEGFzc2VydE5vdFN0YXJ0ZWQBBQVjaGlsZAkBEmFzc2VydE5vdENhbmNlbGxlZAEFBWNoaWxkBwMJAAACBQFzBQFzBAl0b3RhbFNraW4JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDnNraW5Ub3RhbFN0b3JlAQUFY2hpbGQAAAQMc2tpblJlcXVpcmVkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBEXNraW5SZXF1aXJlZFN0b3JlAQUFY2hpbGQCFGNoaWxkIG5vdCByZWdpc3RlcmVkAwkAZgIFDHNraW5SZXF1aXJlZAUJdG90YWxTa2luCQACAQIbbm90IGVub3VnaCBza2luIGluIHRoZSBnYW1lBBB0b3RhbEludmVzdG1lbnRzCQELdmFsdWVPckVsc2UCCQCfCAEJARVpbnZlc3RtZW50c1RvdGFsU3RvcmUBBQVjaGlsZAAAAwkAZgIJARFAZXh0ck5hdGl2ZSgxMDU1KQEJARhpbnZlc3RtZW50c1JlcXVpcmVkU3RvcmUBBQVjaGlsZAUQdG90YWxJbnZlc3RtZW50cwkAAgECFm5vdCBlbm91Z2ggaW52ZXN0bWVudHMJAMwIAgkBDEludGVnZXJFbnRyeQIJARBzdGFydEhlaWdodFN0b3JlAQUFY2hpbGQFBkhFSUdIVAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEIdHJlYXN1cnkBBQVjaGlsZAUQdG90YWxJbnZlc3RtZW50cwkBEGludmVzdG1lbnRzVG9rZW4BBQVjaGlsZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmluaXROZXh0UGVyaW9kAwVjaGlsZBNibG9ja0JldHdlZW5QZXJpb2RzCGxvY2tUaW1lBAZwYXVzZWQJAQdhbGxvd2VkAQIOaW5pdE5leHRQZXJpb2QDCQAAAgUGcGF1c2VkBQZwYXVzZWQDAwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAQpvd25lclN0b3JlAQUFY2hpbGQJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwcJAAIBAgZkZW5pZWQDCQBmAgAABRNibG9ja0JldHdlZW5QZXJpb2RzCQACAQIuYmxvY2tCZXR3ZWVuUGVyaW9kcyBzaG91bGQgYmUgcG9zaXRpdmUgb3IgemVybwMJAGYCAAEFCGxvY2tUaW1lCQACAQIbbG9ja1RpbWUgc2hvdWxkIGJlIHBvc2l0aXZlBA11bmxvY2tIZWlnaHRfCQEMdW5sb2NrSGVpZ2h0AQUFY2hpbGQDCQBmAgUNdW5sb2NrSGVpZ2h0XwUGSEVJR0hUCQACAQIeY3VycmVudCBwZXJpb2QgaXMgc3RpbGwgYWN0aXZlBAFwCQEGcGVyaW9kAQUFY2hpbGQDAwkAZgIFAXAAAAkBASEBCQEJaXNEZWZpbmVkAQkBFnN0YXJ0UGVyaW9kSGVpZ2h0U3RvcmUCBQVjaGlsZAUBcAcJAAIBAh9uZXh0IHBlcmlvZCBhbHJlYWR5IGluaXRpYWxpemVkBAluZXdQZXJpb2QJAGQCBQFwAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQtwZXJpb2RTdG9yZQEFBWNoaWxkBQluZXdQZXJpb2QJAMwIAgkBDEludGVnZXJFbnRyeQIJARtzdGFydFBlcmlvZEFmdGVySGVpZ2h0U3RvcmUCBQVjaGlsZAUJbmV3UGVyaW9kCQBkAgUNdW5sb2NrSGVpZ2h0XwUTYmxvY2tCZXR3ZWVuUGVyaW9kcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE3BlcmlvZExvY2tUaW1lU3RvcmUCBQVjaGlsZAUJbmV3UGVyaW9kBQhsb2NrVGltZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC3N0YXJ0UGVyaW9kAQVjaGlsZAQGcGF1c2VkCQEHYWxsb3dlZAECC3N0YXJ0UGVyaW9kAwkAAAIFBnBhdXNlZAUGcGF1c2VkBAFzCQEWYXNzZXJ0Tm90U3RhcnRlZFBlcmlvZAEFBWNoaWxkAwkAAAIFAXMFAXMEB3BlcmlvZF8JAQZwZXJpb2QBBQVjaGlsZAQPc3RhcnRBZnRlclN0b3JlCQEbc3RhcnRQZXJpb2RBZnRlckhlaWdodFN0b3JlAgUFY2hpbGQFB3BlcmlvZF8ECnN0YXJ0QWZ0ZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQ9zdGFydEFmdGVyU3RvcmUJAKwCAgIPa2V5IG5vdCBmb3VuZDogBQ9zdGFydEFmdGVyU3RvcmUDCQBmAgUKc3RhcnRBZnRlcgUGSEVJR0hUCQACAQIJdG9vIGVhcmx5BAl0b3RhbFNraW4JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDnNraW5Ub3RhbFN0b3JlAQUFY2hpbGQAAAQMc2tpblJlcXVpcmVkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBEXNraW5SZXF1aXJlZFN0b3JlAQUFY2hpbGQCFGNoaWxkIG5vdCByZWdpc3RlcmVkAwkAZgIFDHNraW5SZXF1aXJlZAUJdG90YWxTa2luCQACAQIbbm90IGVub3VnaCBza2luIGluIHRoZSBnYW1lBBFwZXJpb2RJbnZlc3RtZW50cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEbaW52ZXN0bWVudHNQZXJpb2RUb3RhbFN0b3JlAQUFY2hpbGQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHXN0YXJ0Q3VycmVudFBlcmlvZEhlaWdodFN0b3JlAQUFY2hpbGQFBkhFSUdIVAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQVjaGlsZAURcGVyaW9kSW52ZXN0bWVudHMJARBpbnZlc3RtZW50c1Rva2VuAQUFY2hpbGQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVzbGFzaAIFY2hpbGQGYW1vdW50BAZwYXVzZWQJAQdhbGxvd2VkAQIBLwMJAAACBQZwYXVzZWQFBnBhdXNlZAMJAQEhAQkBCGNvbnRhaW5zAgUIc2xhc2hlcnMJAKUIAQgFAWkGY2FsbGVyCQACAQIGZGVuaWVkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBCQEQc3RhcnRIZWlnaHRTdG9yZQEFBWNoaWxkCQACAQILbm90IHN0YXJ0ZWQJAMwIAgkBCGNoYW5nZUJ5AgkBDnNraW5Ub3RhbFN0b3JlAQUFY2hpbGQJAQEtAQUGYW1vdW50CQDMCAIJAQRCdXJuAgUKcHdyQXNzZXRJZAUGYW1vdW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIY29tcGxldGUBBWNoaWxkBAZwYXVzZWQJAQdhbGxvd2VkAQIIY29tcGxldGUDCQAAAgUGcGF1c2VkBQZwYXVzZWQEDXVubG9ja0hlaWdodF8JAQx1bmxvY2tIZWlnaHQBBQVjaGlsZAMJAGYCBQ11bmxvY2tIZWlnaHRfBQZIRUlHSFQJAAIBAgxzdGlsbCBsb2NrZWQEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBARza2luCQEPY3VycmVudFVzZXJTa2luAgUFY2hpbGQFBHVzZXIDCQAAAgUEc2tpbgAACQACAQIbeW91IGhhZCBubyBza2luIGluIHRoZSBnYW1lBAV0b3RhbAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDnNraW5Ub3RhbFN0b3JlAQUFY2hpbGQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQRza2luBQpwd3JBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ11c2VyU2tpblN0b3JlAgUFY2hpbGQFBHVzZXIJAMwIAgkBCGNoYW5nZUJ5AgkBDnNraW5Ub3RhbFN0b3JlAQUFY2hpbGQJAQEtAQUEc2tpbgkAzAgCCQEIY2hhbmdlQnkCBQ1wd3JUb3RhbFN0b3JlCQEBLQEFBHNraW4JAMwIAgkBDEludGVnZXJFbnRyeQIJARR1c2VyU2tpbkhpc3RvcnlTdG9yZQIFBWNoaWxkBQR1c2VyBQRza2luBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEGY2FuY2VsAQVjaGlsZAQGcGF1c2VkCQEHYWxsb3dlZAECBmNhbmNlbAMJAAACBQZwYXVzZWQFBnBhdXNlZAQBcwMJARBhc3NlcnROb3RTdGFydGVkAQUFY2hpbGQGCQESYXNzZXJ0Tm90Q2FuY2VsbGVkAQUFY2hpbGQDCQAAAgUBcwUBcwMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEKb3duZXJTdG9yZQEFBWNoaWxkCQACAQIUZGVuaWVkLiBub3QgYW4gb3duZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJARFjYW5jZWxIZWlnaHRTdG9yZQEFBWNoaWxkBQZIRUlHSFQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQp1bmRvSW52ZXN0AQVjaGlsZAQGcGF1c2VkCQEHYWxsb3dlZAECCnVuZG9JbnZlc3QDCQAAAgUGcGF1c2VkBQZwYXVzZWQEAXMJARBhc3NlcnROb3RTdGFydGVkAQUFY2hpbGQDCQAAAgUBcwUBcwQRaW52ZXN0bWVudHNTdG9yZTEJAQ1pbnZlc3RvclN0b3JlAgUFY2hpbGQJAKUIAQgFAWkGY2FsbGVyBAtpbnZlc3RtZW50cwkBC3ZhbHVlT3JFbHNlAgkAnwgBBRFpbnZlc3RtZW50c1N0b3JlMQAAAwkAAAIFC2ludmVzdG1lbnRzAAAJAAIBAg5ubyBpbnZlc3RtZW50cwkAzAgCCQELRGVsZXRlRW50cnkBBRFpbnZlc3RtZW50c1N0b3JlMQkAzAgCCQEIY2hhbmdlQnkCCQEVaW52ZXN0bWVudHNUb3RhbFN0b3JlAQUFY2hpbGQJAQEtAQULaW52ZXN0bWVudHMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQtpbnZlc3RtZW50cwkBEGludmVzdG1lbnRzVG9rZW4BBQVjaGlsZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDXVuZG9Db21taXRGb3ICBWNoaWxkB2FkZHJlc3MEBnBhdXNlZAkBB2FsbG93ZWQBAg11bmRvQ29tbWl0Rm9yAwkAAAIFBnBhdXNlZAUGcGF1c2VkAwkBASEBCQEIY29udGFpbnMCBQ1tYWluQWRkcmVzc2VzCQClCAEIBQFpBmNhbGxlcgkAAgECBmRlbmllZAQBcwkBEGFzc2VydE5vdFN0YXJ0ZWQBBQVjaGlsZAMJAAACBQFzBQFzBA51c2VyU2tpblN0b3JlMQkBDXVzZXJTa2luU3RvcmUCBQVjaGlsZAUHYWRkcmVzcwQEc2tpbgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ51c2VyU2tpblN0b3JlMQAAAwkAAAIFBHNraW4AAAkAAgECB25vIHNraW4JAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBBQ51c2VyU2tpblN0b3JlMQkAzAgCCQEIY2hhbmdlQnkCCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAkBAS0BBQRza2luCQDMCAIJAQhjaGFuZ2VCeQIFDXB3clRvdGFsU3RvcmUJAQEtAQUEc2tpbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBHNraW4FCnB3ckFzc2V0SWQFA25pbAUEc2tpbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQl1c2VyUG93ZXICBWNoaWxkBHVzZXIJAJQKAgUDbmlsCQELdmFsdWVPckVsc2UCCQEOdXNlckNvbW1pdG1lbnQCBQVjaGlsZAUEdXNlcgAAAWkBCnRvdGFsUG93ZXIBBWNoaWxkCQCUCgIFA25pbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEJAQ5za2luVG90YWxTdG9yZQEFBWNoaWxkAht0b3RhbFBvd2VyOiBjaGlsZCBub3QgZm91bmQBaQEEaW5pdAEEY29uZgkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwIFEmNvbmZpZ0FkZHJlc3NTdG9yZQUEY29uZgUDbmlsAHKlyJo=", "chainId": 84, "height": 2786722, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 6 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | func a (b,c) = if (!(isDefined(getString(this, b)))) | |
5 | + | then StringEntry(b, c) | |
6 | + | else throw(("already initialized: " + b)) | |
7 | + | ||
8 | + | ||
9 | + | func d (b,c) = if ((0 > c)) | |
10 | + | then throw(((("writing negative value " + toString(c)) + " for key ") + b)) | |
11 | + | else IntegerEntry(b, c) | |
12 | + | ||
13 | + | ||
14 | + | func e (b,c) = d(b, (valueOrElse(getInteger(this, b), 0) + c)) | |
15 | + | ||
16 | + | ||
17 | + | func f (c) = { | |
18 | + | let g = c | |
19 | + | if ($isInstanceOf(g, "Int")) | |
20 | + | then { | |
21 | + | let h = g | |
22 | + | h | |
23 | + | } | |
24 | + | else throw("wrong type, expected: Int") | |
25 | + | } | |
26 | + | ||
27 | + | ||
28 | + | func i (j) = if ((j == "WAVES")) | |
29 | + | then unit | |
30 | + | else fromBase58String(j) | |
31 | + | ||
32 | + | ||
33 | + | let k = "config" | |
34 | + | ||
35 | + | let l = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, k), "children: config address not found")), "invalid config address") | |
36 | + | ||
37 | + | func m (n) = invoke(l, "opAllowed", [n], nil) | |
38 | + | ||
39 | + | ||
40 | + | let o = height | |
41 | + | ||
42 | + | let p = fromBase58String(valueOrErrorMessage(getString(l, "powerAssetId"), "pwr asset id not found")) | |
43 | + | ||
44 | + | let q = valueOrElse(getString(l, (toString(this) + "_slashers")), "") | |
45 | + | ||
46 | + | let r = valueOrElse(getString(l, "main_addresses"), "") | |
47 | + | ||
48 | + | func s (t) = ("period_" + t) | |
49 | + | ||
50 | + | ||
51 | + | func u (t) = valueOrElse(getInteger(s(t)), 0) | |
52 | + | ||
53 | + | ||
54 | + | func v (t) = ("owner_" + t) | |
55 | + | ||
56 | + | ||
57 | + | func w (t) = ("treasury_" + t) | |
58 | + | ||
59 | + | ||
60 | + | func x (t) = ("lockTime_" + t) | |
61 | + | ||
62 | + | ||
63 | + | func y (t,u) = ((("period_" + toString(u)) + "_lockTime_") + t) | |
64 | + | ||
65 | + | ||
66 | + | func z (t) = ("skin_required_" + t) | |
67 | + | ||
68 | + | ||
69 | + | func A (t) = ("skin_max_" + t) | |
70 | + | ||
71 | + | ||
72 | + | func B (t) = ("investments_max_" + t) | |
73 | + | ||
74 | + | ||
75 | + | func C (t) = ("min_commitment" + t) | |
76 | + | ||
77 | + | ||
78 | + | func D (t) = ("skin_total_" + t) | |
79 | + | ||
80 | + | ||
81 | + | let E = "pwr_total" | |
82 | + | ||
83 | + | func F (t) = ("investments_required_" + t) | |
84 | + | ||
85 | + | ||
86 | + | func G (t) = ("investments_total_" + t) | |
87 | + | ||
88 | + | ||
89 | + | func H (t) = ((("period_" + toString(u(t))) + "_investments_total_") + t) | |
90 | + | ||
91 | + | ||
92 | + | func I (t) = ("investments_token_" + t) | |
93 | + | ||
94 | + | ||
95 | + | func J (t) = ("commitments_" + t) | |
96 | + | ||
97 | + | ||
98 | + | func K (t) = ("create_height_" + t) | |
99 | + | ||
100 | + | ||
101 | + | func L (t) = ("start_height_" + t) | |
102 | + | ||
103 | + | ||
104 | + | func M (t,u) = ((("period_" + toString(u)) + "_start_height_") + t) | |
105 | + | ||
106 | + | ||
107 | + | func N (t,u) = ((("period_" + toString(u)) + "_start_after_height_") + t) | |
108 | + | ||
109 | + | ||
110 | + | func O (t) = M(t, u(t)) | |
111 | + | ||
112 | + | ||
113 | + | func P (t) = ("cancel_height_" + t) | |
114 | + | ||
115 | + | ||
116 | + | func Q (t) = i(valueOrErrorMessage(getString(I(t)), "investments asset id not found")) | |
117 | + | ||
118 | + | ||
119 | + | func R (t,S) = ((("skin_" + t) + "_") + S) | |
120 | + | ||
121 | + | ||
122 | + | func T (t,S) = (R(t, S) + "_history") | |
123 | + | ||
124 | + | ||
125 | + | func U (t,V) = ((("investor_" + t) + "_") + V) | |
126 | + | ||
127 | + | ||
128 | + | func W (t) = if (isDefined(getInteger(L(t)))) | |
129 | + | then throw("already started") | |
130 | + | else false | |
131 | + | ||
132 | + | ||
133 | + | func X (t) = if (isDefined(getInteger(P(t)))) | |
134 | + | then throw("already canceled") | |
135 | + | else false | |
136 | + | ||
137 | + | ||
138 | + | func Y (t) = if ((u(t) == 0)) | |
139 | + | then W(t) | |
140 | + | else if (isDefined(getInteger(O(t)))) | |
141 | + | then throw("period already started") | |
142 | + | else false | |
143 | + | ||
144 | + | ||
145 | + | func Z (t,S) = getInteger(R(t, S)) | |
146 | + | ||
147 | + | ||
148 | + | func aa (t,S) = valueOrElse(Z(t, S), 0) | |
149 | + | ||
150 | + | ||
151 | + | func ab (t,u) = valueOrElse(getInteger(y(t, u)), valueOrErrorMessage(getInteger(x(t)), "no child lockTime")) | |
152 | + | ||
153 | + | ||
154 | + | func ac (t) = { | |
155 | + | let ad = u(t) | |
156 | + | let ae = getInteger(M(t, ad)) | |
157 | + | if (isDefined(ae)) | |
158 | + | then (value(ae) + ab(t, ad)) | |
159 | + | else { | |
160 | + | let af = (ad - 1) | |
161 | + | let ag = valueOrErrorMessage(getInteger(L(t)), "no child start height") | |
162 | + | (valueOrElse(getInteger(M(t, af)), ag) + ab(t, af)) | |
163 | + | } | |
164 | + | } | |
165 | + | ||
166 | + | ||
167 | + | func ah (t) = valueOrElse(getString(w(t)), t) | |
168 | + | ||
169 | + | ||
170 | + | func h (b) = toString(valueOrElse(getInteger(b), 0)) | |
171 | + | ||
172 | + | ||
173 | + | func j (b) = valueOrElse(getString(b), "") | |
174 | + | ||
175 | + | ||
176 | + | func ai (t) = { | |
177 | + | let ad = u(t) | |
178 | + | let aj = toString(ad) | |
179 | + | ((((((((((((((((((((((((((((((((((((((((((((((((((("height: " + toString(o)) + ", project: ") + t) + ", owner: ") + j(v(t))) + ", treasury: ") + ah(t)) + ", lock_time: ") + h(x(t))) + ", skin_required: ") + h(z(t))) + ", skin_max: ") + h(A(t))) + ", min_commitment: ") + h(C(t))) + ", skin_total: ") + h(D(t))) + ", investments_required: ") + h(F(t))) + ", investments_max: ") + h(B(t))) + ", investments_total: ") + h(G(t))) + ", investments_token: ") + j(I(t))) + ", commitments: ") + j(J(t))) + ", create_height: ") + h(K(t))) + ", start_height: ") + toString(valueOrElse(getInteger(L(t)), -1))) + ", cancel_height: ") + toString(valueOrElse(getInteger(P(t)), -1))) + ", period: ") + aj) + ", period_") + aj) + "_start_after_height: ") + toString(valueOrElse(getInteger(N(t, ad)), -1))) + ", period_") + aj) + "_start_height: ") + toString(valueOrElse(getInteger(O(t)), -1))) + ", period_") + aj) + "_lock_time: ") + toString(ab(t, ad))) + ", unlock_height: ") + toString(ac(t))) + ", period_investments_total: ") + h(H(t))) | |
180 | + | } | |
181 | + | ||
182 | + | ||
183 | + | func ak (t,S) = ((((((((("height: " + toString(o)) + ", project: ") + t) + ", skin:") + toString(aa(t, S))) + ", power:") + toString(valueOrElse(Z(t, S), 0))) + ", investments: ") + h(U(t, S))) | |
184 | + | ||
185 | + | ||
186 | + | @Callable(al) | |
187 | + | func projectFor (am,an,ao,ap,ab,aq,ar,Q,as,t) = { | |
188 | + | let at = m("projectFor") | |
189 | + | if ((at == at)) | |
190 | + | then if (!(contains(r, toString(al.caller)))) | |
191 | + | then throw("denied") | |
192 | + | else { | |
193 | + | let au = valueOrErrorMessage(addressFromString(t), "invalid treasury address") | |
194 | + | if ((au == au)) | |
195 | + | then { | |
196 | + | let av = i(Q) | |
197 | + | if ((av == av)) | |
198 | + | then if (if ((ao > 0)) | |
199 | + | then (an > ao) | |
200 | + | else false) | |
201 | + | then throw("invalid maxSkin") | |
202 | + | else if (if ((ar > 0)) | |
203 | + | then (aq > ar) | |
204 | + | else false) | |
205 | + | then throw("invalid maxInvestments") | |
206 | + | else [a(v(t), am), d(K(t), o), d(z(t), an), d(A(t), ao), d(C(t), ap), d(x(t), ab), d(F(t), aq), a(I(t), Q), a(J(t), as), a(w(t), t), d(B(t), ar)] | |
207 | + | else throw("Strict value is not equal to itself.") | |
208 | + | } | |
209 | + | else throw("Strict value is not equal to itself.") | |
210 | + | } | |
211 | + | else throw("Strict value is not equal to itself.") | |
212 | + | } | |
213 | + | ||
214 | + | ||
215 | + | ||
216 | + | @Callable(al) | |
217 | + | func increraseSkin (t,aw) = { | |
218 | + | let at = m("increraseSkin") | |
219 | + | if ((at == at)) | |
220 | + | then { | |
221 | + | let ax = if (W(t)) | |
222 | + | then X(t) | |
223 | + | else false | |
224 | + | if ((ax == ax)) | |
225 | + | then if ((0 >= aw)) | |
226 | + | then throw("invalid argument: skinIncrement should be positive") | |
227 | + | else { | |
228 | + | let am = getStringValue(v(t)) | |
229 | + | if ((toString(al.caller) != am)) | |
230 | + | then throw("denied") | |
231 | + | else [e(z(t), aw)] | |
232 | + | } | |
233 | + | else throw("Strict value is not equal to itself.") | |
234 | + | } | |
235 | + | else throw("Strict value is not equal to itself.") | |
236 | + | } | |
237 | + | ||
238 | + | ||
239 | + | ||
240 | + | @Callable(al) | |
241 | + | func commitFor (t,ay) = { | |
242 | + | let at = m("commitFor") | |
243 | + | if ((at == at)) | |
244 | + | then { | |
245 | + | let ax = Y(t) | |
246 | + | if ((ax == ax)) | |
247 | + | then { | |
248 | + | let ad = al.payments[0] | |
249 | + | if ((ad.assetId != p)) | |
250 | + | then throw("invalid attached payment: $power token expected") | |
251 | + | else { | |
252 | + | let az = ad.amount | |
253 | + | let ap = valueOrErrorMessage(getInteger(C(t)), "Child DAO not found") | |
254 | + | if ((ap > az)) | |
255 | + | then throw(("Min. commitment is " + toString(ap))) | |
256 | + | else { | |
257 | + | let aA = D(t) | |
258 | + | let aB = (valueOrElse(getInteger(aA), 0) + az) | |
259 | + | let aC = valueOrElse(getInteger(A(t)), 0) | |
260 | + | if (if ((aC > 0)) | |
261 | + | then (aB > aC) | |
262 | + | else false) | |
263 | + | then throw(("Total max. skin is reached: " + toString(aC))) | |
264 | + | else [e(R(t, ay), az), IntegerEntry(aA, aB), e(E, az)] | |
265 | + | } | |
266 | + | } | |
267 | + | } | |
268 | + | else throw("Strict value is not equal to itself.") | |
269 | + | } | |
270 | + | else throw("Strict value is not equal to itself.") | |
271 | + | } | |
272 | + | ||
273 | + | ||
274 | + | ||
275 | + | @Callable(al) | |
276 | + | func commitForMiner (t,ay) = { | |
277 | + | let at = m("commitForMiner") | |
278 | + | if ((at == at)) | |
279 | + | then if (!(contains(r, toString(al.caller)))) | |
280 | + | then throw("denied") | |
281 | + | else { | |
282 | + | let ad = al.payments[0] | |
283 | + | if (if ((ad.assetId != p)) | |
284 | + | then true | |
285 | + | else (size(al.payments) != 1)) | |
286 | + | then throw("invalid payments: only $power token expected") | |
287 | + | else { | |
288 | + | let az = ad.amount | |
289 | + | [e(R(t, ay), az), e(D(t), az), e(E, az)] | |
290 | + | } | |
291 | + | } | |
292 | + | else throw("Strict value is not equal to itself.") | |
293 | + | } | |
294 | + | ||
295 | + | ||
296 | + | ||
297 | + | @Callable(al) | |
298 | + | func invest (t) = { | |
299 | + | let at = m("invest") | |
300 | + | if ((at == at)) | |
301 | + | then { | |
302 | + | let ax = Y(t) | |
303 | + | if ((ax == ax)) | |
304 | + | then { | |
305 | + | let av = Q(t) | |
306 | + | if ((al.payments[0].assetId != av)) | |
307 | + | then throw("invalid investments asset id") | |
308 | + | else { | |
309 | + | let aD = al.payments[0].amount | |
310 | + | let aE = valueOrElse(getInteger(B(t)), 0) | |
311 | + | func aF (at) = [e(U(t, toString(al.caller)), at), e(G(t), at), e(H(t), at)] | |
312 | + | ||
313 | + | if ((aE > 0)) | |
314 | + | then { | |
315 | + | let aG = G(t) | |
316 | + | let aH = valueOrElse(getInteger(aG), 0) | |
317 | + | let aI = min([aD, (aE - aH)]) | |
318 | + | if ((0 >= aI)) | |
319 | + | then throw(("Total max. investments is reached: " + toString(aE))) | |
320 | + | else { | |
321 | + | let aJ = (aD - aI) | |
322 | + | if ((aJ > 0)) | |
323 | + | then [ScriptTransfer(al.caller, aJ, av), aF(aI)] | |
324 | + | else aF(aI) | |
325 | + | } | |
326 | + | } | |
327 | + | else aF(aD) | |
328 | + | } | |
329 | + | } | |
330 | + | else throw("Strict value is not equal to itself.") | |
331 | + | } | |
332 | + | else throw("Strict value is not equal to itself.") | |
333 | + | } | |
334 | + | ||
335 | + | ||
336 | + | ||
337 | + | @Callable(al) | |
338 | + | func start (t) = { | |
339 | + | let aK = m("start") | |
340 | + | if ((aK == aK)) | |
341 | + | then { | |
342 | + | let ax = if (W(t)) | |
343 | + | then X(t) | |
344 | + | else false | |
345 | + | if ((ax == ax)) | |
346 | + | then { | |
347 | + | let aL = valueOrElse(getInteger(D(t)), 0) | |
348 | + | let aM = valueOrErrorMessage(getInteger(z(t)), "child not registered") | |
349 | + | if ((aM > aL)) | |
350 | + | then throw("not enough skin in the game") | |
351 | + | else { | |
352 | + | let aN = valueOrElse(getInteger(G(t)), 0) | |
353 | + | if ((getIntegerValue(F(t)) > aN)) | |
354 | + | then throw("not enough investments") | |
355 | + | else [IntegerEntry(L(t), o), ScriptTransfer(addressFromStringValue(ah(t)), aN, Q(t))] | |
356 | + | } | |
357 | + | } | |
358 | + | else throw("Strict value is not equal to itself.") | |
359 | + | } | |
360 | + | else throw("Strict value is not equal to itself.") | |
361 | + | } | |
362 | + | ||
363 | + | ||
364 | + | ||
365 | + | @Callable(al) | |
366 | + | func initNextPeriod (t,aO,ab) = { | |
367 | + | let aK = m("initNextPeriod") | |
368 | + | if ((aK == aK)) | |
369 | + | then if (if ((toString(al.caller) != getStringValue(v(t)))) | |
370 | + | then (al.caller != this) | |
371 | + | else false) | |
372 | + | then throw("denied") | |
373 | + | else if ((0 > aO)) | |
374 | + | then throw("blockBetweenPeriods should be positive or zero") | |
375 | + | else if ((1 > ab)) | |
376 | + | then throw("lockTime should be positive") | |
377 | + | else { | |
378 | + | let aP = ac(t) | |
379 | + | if ((aP > o)) | |
380 | + | then throw("current period is still active") | |
381 | + | else { | |
382 | + | let ad = u(t) | |
383 | + | if (if ((ad > 0)) | |
384 | + | then !(isDefined(M(t, ad))) | |
385 | + | else false) | |
386 | + | then throw("next period already initialized") | |
387 | + | else { | |
388 | + | let aQ = (ad + 1) | |
389 | + | [IntegerEntry(s(t), aQ), IntegerEntry(N(t, aQ), (aP + aO)), IntegerEntry(y(t, aQ), ab)] | |
390 | + | } | |
391 | + | } | |
392 | + | } | |
393 | + | else throw("Strict value is not equal to itself.") | |
394 | + | } | |
395 | + | ||
396 | + | ||
397 | + | ||
398 | + | @Callable(al) | |
399 | + | func startPeriod (t) = { | |
400 | + | let aK = m("startPeriod") | |
401 | + | if ((aK == aK)) | |
402 | + | then { | |
403 | + | let ax = Y(t) | |
404 | + | if ((ax == ax)) | |
405 | + | then { | |
406 | + | let aR = u(t) | |
407 | + | let aS = N(t, aR) | |
408 | + | let aT = valueOrErrorMessage(getInteger(aS), ("key not found: " + aS)) | |
409 | + | if ((aT > o)) | |
410 | + | then throw("too early") | |
411 | + | else { | |
412 | + | let aL = valueOrElse(getInteger(D(t)), 0) | |
413 | + | let aM = valueOrErrorMessage(getInteger(z(t)), "child not registered") | |
414 | + | if ((aM > aL)) | |
415 | + | then throw("not enough skin in the game") | |
416 | + | else { | |
417 | + | let aU = valueOrElse(getInteger(H(t)), 0) | |
418 | + | [IntegerEntry(O(t), o), ScriptTransfer(addressFromStringValue(t), aU, Q(t))] | |
419 | + | } | |
420 | + | } | |
421 | + | } | |
422 | + | else throw("Strict value is not equal to itself.") | |
423 | + | } | |
424 | + | else throw("Strict value is not equal to itself.") | |
425 | + | } | |
426 | + | ||
427 | + | ||
428 | + | ||
429 | + | @Callable(al) | |
430 | + | func slash (t,aD) = { | |
431 | + | let aK = m("/") | |
432 | + | if ((aK == aK)) | |
433 | + | then if (!(contains(q, toString(al.caller)))) | |
434 | + | then throw("denied") | |
435 | + | else if (!(isDefined(getInteger(L(t))))) | |
436 | + | then throw("not started") | |
437 | + | else [e(D(t), -(aD)), Burn(p, aD)] | |
438 | + | else throw("Strict value is not equal to itself.") | |
439 | + | } | |
440 | + | ||
441 | + | ||
442 | + | ||
443 | + | @Callable(al) | |
444 | + | func complete (t) = { | |
445 | + | let aK = m("complete") | |
446 | + | if ((aK == aK)) | |
447 | + | then { | |
448 | + | let aP = ac(t) | |
449 | + | if ((aP > o)) | |
450 | + | then throw("still locked") | |
451 | + | else { | |
452 | + | let S = toString(al.caller) | |
453 | + | let an = aa(t, S) | |
454 | + | if ((an == 0)) | |
455 | + | then throw("you had no skin in the game") | |
456 | + | else { | |
457 | + | let aH = getIntegerValue(D(t)) | |
458 | + | [ScriptTransfer(al.caller, an, p), DeleteEntry(R(t, S)), e(D(t), -(an)), e(E, -(an)), IntegerEntry(T(t, S), an)] | |
459 | + | } | |
460 | + | } | |
461 | + | } | |
462 | + | else throw("Strict value is not equal to itself.") | |
463 | + | } | |
464 | + | ||
465 | + | ||
466 | + | ||
467 | + | @Callable(al) | |
468 | + | func cancel (t) = { | |
469 | + | let aK = m("cancel") | |
470 | + | if ((aK == aK)) | |
471 | + | then { | |
472 | + | let ax = if (W(t)) | |
473 | + | then true | |
474 | + | else X(t) | |
475 | + | if ((ax == ax)) | |
476 | + | then if ((toString(al.caller) != getStringValue(v(t)))) | |
477 | + | then throw("denied. not an owner") | |
478 | + | else [IntegerEntry(P(t), o)] | |
479 | + | else throw("Strict value is not equal to itself.") | |
480 | + | } | |
481 | + | else throw("Strict value is not equal to itself.") | |
482 | + | } | |
483 | + | ||
484 | + | ||
485 | + | ||
486 | + | @Callable(al) | |
487 | + | func undoInvest (t) = { | |
488 | + | let aK = m("undoInvest") | |
489 | + | if ((aK == aK)) | |
490 | + | then { | |
491 | + | let ax = W(t) | |
492 | + | if ((ax == ax)) | |
493 | + | then { | |
494 | + | let aV = U(t, toString(al.caller)) | |
495 | + | let aq = valueOrElse(getInteger(aV), 0) | |
496 | + | if ((aq == 0)) | |
497 | + | then throw("no investments") | |
498 | + | else [DeleteEntry(aV), e(G(t), -(aq)), ScriptTransfer(al.caller, aq, Q(t))] | |
499 | + | } | |
500 | + | else throw("Strict value is not equal to itself.") | |
501 | + | } | |
502 | + | else throw("Strict value is not equal to itself.") | |
503 | + | } | |
504 | + | ||
505 | + | ||
506 | + | ||
507 | + | @Callable(al) | |
508 | + | func undoCommitFor (t,ay) = { | |
509 | + | let aK = m("undoCommitFor") | |
510 | + | if ((aK == aK)) | |
511 | + | then if (!(contains(r, toString(al.caller)))) | |
512 | + | then throw("denied") | |
513 | + | else { | |
514 | + | let ax = W(t) | |
515 | + | if ((ax == ax)) | |
516 | + | then { | |
517 | + | let aW = R(t, ay) | |
518 | + | let an = valueOrElse(getInteger(aW), 0) | |
519 | + | if ((an == 0)) | |
520 | + | then throw("no skin") | |
521 | + | else $Tuple2([DeleteEntry(aW), e(D(t), -(an)), e(E, -(an)), ScriptTransfer(al.caller, an, p)], an) | |
522 | + | } | |
523 | + | else throw("Strict value is not equal to itself.") | |
524 | + | } | |
525 | + | else throw("Strict value is not equal to itself.") | |
526 | + | } | |
527 | + | ||
528 | + | ||
529 | + | ||
530 | + | @Callable(al) | |
531 | + | func userPower (t,S) = $Tuple2(nil, valueOrElse(Z(t, S), 0)) | |
532 | + | ||
533 | + | ||
534 | + | ||
535 | + | @Callable(al) | |
536 | + | func totalPower (t) = $Tuple2(nil, valueOrErrorMessage(getInteger(D(t)), "totalPower: child not found")) | |
537 | + | ||
538 | + | ||
539 | + | ||
540 | + | @Callable(al) | |
541 | + | func init (aX) = [a(k, aX)] | |
542 | + | ||
543 | + |
github/deemru/w8io/026f985 47.07 ms ◑