tx · 2vEt6ShmPrHdpMYcndhbUHtAKLch7hXdam5nVxhBpZ9z 3N4r7DNT8t9WqaQWr8or1Hakm4AJfVDk6mS: -0.01000000 Waves 2023.11.10 15:56 [2837276] smart account 3N4r7DNT8t9WqaQWr8or1Hakm4AJfVDk6mS > SELF 0.00000000 Waves
{ "type": 13, "id": "2vEt6ShmPrHdpMYcndhbUHtAKLch7hXdam5nVxhBpZ9z", "fee": 1000000, "feeAssetId": null, "timestamp": 1699621012311, "version": 2, "chainId": 84, "sender": "3N4r7DNT8t9WqaQWr8or1Hakm4AJfVDk6mS", "senderPublicKey": "CMMtdSwXAf6tvNvyJDrdC5VGmRkcXU5CqmsapxKNPhLu", "proofs": [ "3aZjAfSe4cU5nah6CGU1LtgKvY5UAt4RroamMTr76BET4iHddCbjgzzfFfRPeWaKe1LLYZZ3TzcovQWTpDfbWYD7" ], "script": "base64:BgI0CAISBgoECAgBARIAEgASBAoCCAgSAwoBCBIDCgEIEgMKAQESAwoBARIAEgMKAQESAwoBCBkAA1NFUAICX18AB2ZlZVJhbmsAkE4ACXd4QXNzZXRJZAEgem0CwypAHTesH/u7a8MttNFWRQzQ3dvWhSiS4BwdmuMACnNidEFzc2V0SWQBIO2+dVxOfGjKfZY/biORRp55f/QR5jvt+01UQdyJuXLZAA13YXZlc0V4Y2hhbmdlARoBVPw7LnORaTcVsJi6fmMlYfqveDpM6HfAHwAVY2xhaW1XeFJld2FyZENvbnRyYWN0ARoBVPw7LnORaTcVsJi6fmMlYfqveDpM6HfAHwAQaXNDb25zdHJ1Y3RlZEtleQIOaXNfY29uc3RydWN0ZWQAD2FkbWluQWRkcmVzc0tleQINYWRtaW5fYWRkcmVzcwAOc2JXeEFzc2V0SWRLZXkCDnNiX3d4X2Fzc2V0X2lkAApscFBvb2xzS2V5AghscF9wb29scwAXYWRkaXRpb25hbFJld2FyZFBvb2xLZXkCFmFkZGl0aW9uYWxfcmV3YXJkX3Bvb2wAGmFkZGl0aW9uYWxSZXdhcmRQb29sRmVlS2V5AhphZGRpdGlvbmFsX3Jld2FyZF9wb29sX2ZlZQAPc2J0U3Rha2VQb29sS2V5Ag5zYnRfc3Rha2VfcG9vbAASc2J0U3Rha2VQb29sRmVlS2V5AhJzYnRfc3Rha2VfcG9vbF9mZWUAG3NidFN0YWtlUG9vbFRvdGFsQ2xhaW1lZEtleQIcc2J0X3N0YWtlX3Bvb2xfdG90YWxfY2xhaW1lZAAQdG90YWxXWExvY2tlZEtleQIPdG90YWxfd3hfbG9ja2VkABlpbml0aWFsU0JUVG9rZW5zQW1vdW50S2V5Ahlpbml0aWFsX1NCVF90b2tlbnNfYW1vdW50ACZiYXNlU0JUVG9rZW5BbW91bnRGb3JPbmVSZXdhcmRUb2tlbktleQIqYmFzZV9TQlRfdG9rZW5fYW1vdW50X2Zvcl9vbmVfcmV3YXJkX3Rva2VuAQlhc1BheW1lbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIPQXR0YWNoZWRQYXltZW50BAFwBQckbWF0Y2gwBQFwCQACAQIhZmFpbCB0byBjYXN0IGludG8gQXR0YWNoZWRQYXltZW50AQxhc0J5dGVWZWN0b3IBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBcAUHJG1hdGNoMAUBcAkAAgECHGZhaWwgdG8gY2FzdCBpbnRvIEJ5dGVWZWN0b3IBBWFzSW50AQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgNJbnQEBnZhbEludAUHJG1hdGNoMAUGdmFsSW50CQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQ9hc0FkZHJlc3NTdHJpbmcBB2FkZHJlc3MEByRtYXRjaDAJAKYIAQUHYWRkcmVzcwMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAFhBQckbWF0Y2gwCQClCAEFAWEJAAIBAiBmYWlsIHRvIGNhc3QgaW50byBBZGRyZXNzIFN0cmluZwEfY2FsY3VsYXRlQ3VycmVudFJld2FyZFNCVEFtb3VudAEQcmV3YXJkVG9rZW5Db3VudAQjYmFzZVNCVFRva2VuQW1vdW50Rm9yT25lUmV3YXJkVG9rZW4JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFJmJhc2VTQlRUb2tlbkFtb3VudEZvck9uZVJld2FyZFRva2VuS2V5BBZpbml0aWFsU0JUVG9rZW5zQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBRlpbml0aWFsU0JUVG9rZW5zQW1vdW50S2V5BBdjdXJyZW50U0JUVG9rZW5zQmFsYW5jZQkA8AcCBQR0aGlzBQpzYnRBc3NldElkAwkAAAIFF2N1cnJlbnRTQlRUb2tlbnNCYWxhbmNlAAAAAAQmY3VycmVudFNCVFRva2VuQW1vdW50Rm9yT25lUmV3YXJkVG9rZW4JAGsDBSNiYXNlU0JUVG9rZW5BbW91bnRGb3JPbmVSZXdhcmRUb2tlbgUXY3VycmVudFNCVFRva2Vuc0JhbGFuY2UFFmluaXRpYWxTQlRUb2tlbnNBbW91bnQECWFtb3VudFNCVAkAaAIFEHJld2FyZFRva2VuQ291bnQFJmN1cnJlbnRTQlRUb2tlbkFtb3VudEZvck9uZVJld2FyZFRva2VuAwkAZgIFCWFtb3VudFNCVAUXY3VycmVudFNCVFRva2Vuc0JhbGFuY2UFF2N1cnJlbnRTQlRUb2tlbnNCYWxhbmNlBQlhbW91bnRTQlQBEGlzQXV0aG9yaXplZFBvb2wBBHBvb2wEC2NoZWNrZWRQb29sCQEPYXNBZGRyZXNzU3RyaW5nAQUEcG9vbAQHbHBQb29scwkBEUBleHRyTmF0aXZlKDEwNTgpAQUKbHBQb29sc0tleQkBCGNvbnRhaW5zAgUHbHBQb29scwULY2hlY2tlZFBvb2wBC2dldFBvb2xEYXRhAQRwb29sAwkBASEBCQEQaXNBdXRob3JpemVkUG9vbAEFBHBvb2wJAAIBAhNOb3QgYXV0aG9yaXplZCBwb29sBAtwb29sTHBUb2tlbgkBEUBleHRyTmF0aXZlKDEwNTMpAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAIFdG9rZW4EGHdhdmVzRXhjaGFuZ2VQb29sQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQUEcG9vbAkAlAoCBQtwb29sTHBUb2tlbgUYd2F2ZXNFeGNoYW5nZVBvb2xBZGRyZXNzCwFpAQtjb25zdHJ1Y3RvcgQMYWRtaW5BZGRyZXNzDHNidFN0YWtlUG9vbBZpbml0aWFsU0JUVG9rZW5zQW1vdW50GnNidFRva2Vuc0Zvck9uZVJld2FyZFRva2VuAwkBCWlzRGVmaW5lZAEJAKAIAQUQaXNDb25zdHJ1Y3RlZEtleQkAAgECIkNvbnN0cnVjdG9yIGNhbiBiZSBjYWxsZWQgb25lIHRpbWUEBHNiV3gJAMMIBwIIdGVzdFNiV1gCAAAAAAgGBQR1bml0AAAEB2Fzc2V0SWQJALgIAQUEc2JXeAkAzAgCBQRzYld4CQDMCAIJAQtTdHJpbmdFbnRyeQIFDnNiV3hBc3NldElkS2V5CQDYBAEFB2Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUPYWRtaW5BZGRyZXNzS2V5CQEPYXNBZGRyZXNzU3RyaW5nAQUMYWRtaW5BZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIFD3NidFN0YWtlUG9vbEtleQkBD2FzQWRkcmVzc1N0cmluZwEFDHNidFN0YWtlUG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSc2J0U3Rha2VQb29sRmVlS2V5APgKCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRtzYnRTdGFrZVBvb2xUb3RhbENsYWltZWRLZXkAAAkAzAgCCQELU3RyaW5nRW50cnkCBQpscFBvb2xzS2V5AgAJAMwIAgkBC1N0cmluZ0VudHJ5AgUXYWRkaXRpb25hbFJld2FyZFBvb2xLZXkCAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUaYWRkaXRpb25hbFJld2FyZFBvb2xGZWVLZXkA2AQJAMwIAgkBDEJvb2xlYW5FbnRyeQIFEGlzQ29uc3RydWN0ZWRLZXkGCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRB0b3RhbFdYTG9ja2VkS2V5AAAJAMwIAgkBDEludGVnZXJFbnRyeQIFGWluaXRpYWxTQlRUb2tlbnNBbW91bnRLZXkFFmluaXRpYWxTQlRUb2tlbnNBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFJmJhc2VTQlRUb2tlbkFtb3VudEZvck9uZVJld2FyZFRva2VuS2V5BRpzYnRUb2tlbnNGb3JPbmVSZXdhcmRUb2tlbgUDbmlsAWkBCG1pbnRTYld4AAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECFE9uZSBQYXltZW50IGV4cGVjdGVkBAdwYXltZW50CQEJYXNQYXltZW50AQkAkQMCCAUBaQhwYXltZW50cwAABAZhbW91bnQIBQdwYXltZW50BmFtb3VudAMDCQECIT0CCAUHcGF5bWVudAdhc3NldElkBQl3eEFzc2V0SWQGCQBnAgAABQZhbW91bnQJAAIBAhhXcm9uZyBBc3NldCBpZCBvciBhbW91bnQEDXRvdGFsV1hMb2NrZWQJARFAZXh0ck5hdGl2ZSgxMDU1KQEFEHRvdGFsV1hMb2NrZWRLZXkEC3NiV3hBc3NldElkCQERQGV4dHJOYXRpdmUoMTA1OCkBBQ5zYld4QXNzZXRJZEtleQQRd2F2ZXNFeGNoYW5nZUluZm8JAPwHBAkBB0FkZHJlc3MBBQ13YXZlc0V4Y2hhbmdlAhd1c2VyTWF4RHVyYXRpb25SRUFET05MWQUDbmlsBQNuaWwDCQAAAgURd2F2ZXNFeGNoYW5nZUluZm8FEXdhdmVzRXhjaGFuZ2VJbmZvBAckbWF0Y2gwBRF3YXZlc0V4Y2hhbmdlSW5mbwMJAAECBQckbWF0Y2gwAg0oU3RyaW5nLCBJbnQpBAV0dXBsZQUHJG1hdGNoMAQMZnVuY3Rpb25OYW1lCAUFdHVwbGUCXzEED21heExvY2tEdXJhdGlvbggFBXR1cGxlAl8yBAZyZXN1bHQJAPwHBAkBB0FkZHJlc3MBBQ13YXZlc0V4Y2hhbmdlBQxmdW5jdGlvbk5hbWUJAMwIAgUPbWF4TG9ja0R1cmF0aW9uBQNuaWwJAMwIAgUHcGF5bWVudAUDbmlsAwkAAAIFBnJlc3VsdAUGcmVzdWx0BARzYld4CQDZBAEFC3NiV3hBc3NldElkCQDMCAIJAQdSZWlzc3VlAwUEc2JXeAUGYW1vdW50BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMFBmFtb3VudAUEc2JXeAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQdG90YWxXWExvY2tlZEtleQkAZAIFDXRvdGFsV1hMb2NrZWQFBmFtb3VudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIYRkFUQUw6IEluY29uc2lzdGVudCBkYXRhCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFWNsYWltV3hTdGFraW5nUmV3YXJkcwAEE2N1cnJlbnRXeE9uQ29udHJhY3QJAPAHAgUEdGhpcwUJd3hBc3NldElkAwkAAAIFE2N1cnJlbnRXeE9uQ29udHJhY3QFE2N1cnJlbnRXeE9uQ29udHJhY3QEC2NsYWltUmVzdWx0CQD8BwQJAQdBZGRyZXNzAQUVY2xhaW1XeFJld2FyZENvbnRyYWN0AgtjbGFpbVJld2FyZAUDbmlsBQNuaWwDCQAAAgULY2xhaW1SZXN1bHQFC2NsYWltUmVzdWx0BA9uZXdXeE9uQ29udHJhY3QJAPAHAgUEdGhpcwUJd3hBc3NldElkBAdjbGFpbWVkCQBlAgUPbmV3V3hPbkNvbnRyYWN0BRNjdXJyZW50V3hPbkNvbnRyYWN0AwkAAAIFB2NsYWltZWQAAAkAAgECEE5vdGhpbmcgdG8gY2xhaW0EGHNidFN0YWtlUG9vbFRvdGFsQ2xhaW1lZAkBEUBleHRyTmF0aXZlKDEwNTUpAQUbc2J0U3Rha2VQb29sVG90YWxDbGFpbWVkS2V5CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRtzYnRTdGFrZVBvb2xUb3RhbENsYWltZWRLZXkJAGQCBRhzYnRTdGFrZVBvb2xUb3RhbENsYWltZWQFB2NsYWltZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQUPc2J0U3Rha2VQb29sS2V5BQdjbGFpbWVkBQl3eEFzc2V0SWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQdhZGRQb29sAgdhZGRyZXNzGHdhdmVzRXhjaGFuZ2VQb29sQWRkcmVzcwMJAQIhPQIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkBEUBleHRyTmF0aXZlKDEwNTgpAQUPYWRtaW5BZGRyZXNzS2V5CQACAQIhT25seSBBZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uBAdscFBvb2xzCQERQGV4dHJOYXRpdmUoMTA1OCkBBQpscFBvb2xzS2V5AwkBEGlzQXV0aG9yaXplZFBvb2wBBQdhZGRyZXNzCQACAQISUG9vbCBhbHJlYWR5IGFkZGVkBAhuZXdQb29scwMJAAACCQCxAgEFB2xwUG9vbHMAAAUHYWRkcmVzcwkArAICCQCsAgIFB2xwUG9vbHMFA1NFUAUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCBQpscFBvb2xzS2V5BQhuZXdQb29scwkAzAgCCQELU3RyaW5nRW50cnkCCQEPYXNBZGRyZXNzU3RyaW5nAQUHYWRkcmVzcwkBD2FzQWRkcmVzc1N0cmluZwEFGHdhdmVzRXhjaGFuZ2VQb29sQWRkcmVzcwUDbmlsAWkBCnJlbW92ZVBvb2wBB2FkZHJlc3MDCQECIT0CCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJARFAZXh0ck5hdGl2ZSgxMDU4KQEFD2FkbWluQWRkcmVzc0tleQkAAgECIU9ubHkgQWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgQHbHBQb29scwkBEUBleHRyTmF0aXZlKDEwNTgpAQUKbHBQb29sc0tleQMJAQEhAQkBEGlzQXV0aG9yaXplZFBvb2wBBQdhZGRyZXNzCQACAQIOUG9vbCBub3QgZm91bmQECnBvb2xzQXJyYXkJALwJAgUHbHBQb29scwUDU0VQBAlwb29sSW5kZXgJAQVhc0ludAEJAM8IAgUKcG9vbHNBcnJheQUHYWRkcmVzcwQIbmV3UG9vbHMJALoJAgkA0QgCBQpwb29sc0FycmF5BQlwb29sSW5kZXgFA1NFUAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFCmxwUG9vbHNLZXkFCG5ld1Bvb2xzCQDMCAIJAQtEZWxldGVFbnRyeQEFB2FkZHJlc3MFA25pbAMJAAACCQERQGV4dHJOYXRpdmUoMTA1OCkBBRdhZGRpdGlvbmFsUmV3YXJkUG9vbEtleQUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCBRdhZGRpdGlvbmFsUmV3YXJkUG9vbEtleQIABQNuaWwFA25pbAFpARhzZXRBZGRpdGlvbmFsUmV3YXJkc1Bvb2wBB2FkZHJlc3MDCQECIT0CCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJARFAZXh0ck5hdGl2ZSgxMDU4KQEFD2FkbWluQWRkcmVzc0tleQkAAgECIU9ubHkgQWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAQEhAQkBEGlzQXV0aG9yaXplZFBvb2wBBQdhZGRyZXNzCQACAQI7T25seSBhdXRob3JpemVkIHBvb2wgY2FuIGJlIGFkZGVkIGFzIGFkZGl0aW9uYWwgcmV3YXJkIHBvb2wJAMwIAgkBC1N0cmluZ0VudHJ5AgUXYWRkaXRpb25hbFJld2FyZFBvb2xLZXkFB2FkZHJlc3MFA25pbAFpARtzZXRBZGRpdGlvbmFsUmV3YXJkc1Bvb2xGZWUBA2ZlZQMJAQIhPQIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkBEUBleHRyTmF0aXZlKDEwNTgpAQUPYWRtaW5BZGRyZXNzS2V5CQACAQIhT25seSBBZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAwkAZgIFA2ZlZQDQDwkAAgECHEZlZSBjYW4ndCBiZSBiaWdnZXIgdGhhbiAyMCUDCQBmAgAABQNmZWUJAAIBAhVGZWUgY2FuJ3QgYmUgbmVnYXRpdmUJAMwIAgkBDEludGVnZXJFbnRyeQIFGmFkZGl0aW9uYWxSZXdhcmRQb29sRmVlS2V5BQNmZWUFA25pbAFpAQ1zZXRTYnRQb29sRmVlAQNmZWUDCQECIT0CCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJARFAZXh0ck5hdGl2ZSgxMDU4KQEFD2FkbWluQWRkcmVzc0tleQkAAgECIU9ubHkgQWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAGYCBQNmZWUA0A8JAAIBAhxGZWUgY2FuJ3QgYmUgYmlnZ2VyIHRoYW4gMjAlAwkAZgIAAAUDZmVlCQACAQIVRmVlIGNhbid0IGJlIG5lZ2F0aXZlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJzYnRTdGFrZVBvb2xGZWVLZXkFA2ZlZQUDbmlsAWkBDHN0YWtlUG9vbExwcwADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhRPbmUgUGF5bWVudCBleHBlY3RlZAQIcG9vbERhdGEJAQtnZXRQb29sRGF0YQEJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQLcG9vbExwVG9rZW4IBQhwb29sRGF0YQJfMQQYd2F2ZXNFeGNoYW5nZVBvb2xBZGRyZXNzCAUIcG9vbERhdGECXzIEB3BheW1lbnQJAQlhc1BheW1lbnQBCQCRAwIIBQFpCHBheW1lbnRzAAADAwkBAiE9AggFB3BheW1lbnQHYXNzZXRJZAkA2QQBBQtwb29sTHBUb2tlbgYJAGcCAAAIBQdwYXltZW50BmFtb3VudAkAAgECG1dyb25nIExQIEFzc2V0IGlkIG9yIGFtb3VudAQGcmVzdWx0CQD8BwQFGHdhdmVzRXhjaGFuZ2VQb29sQWRkcmVzcwIFc3Rha2UFA25pbAkAzAgCBQdwYXltZW50BQNuaWwDCQAAAgUGcmVzdWx0BQZyZXN1bHQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ93aXRoZHJhd1Bvb2xMcHMBBmFtb3VudAQIcG9vbERhdGEJAQtnZXRQb29sRGF0YQEJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQLcG9vbExwVG9rZW4IBQhwb29sRGF0YQJfMQQYd2F2ZXNFeGNoYW5nZVBvb2xBZGRyZXNzCAUIcG9vbERhdGECXzIEBnJlc3VsdAkA/AcEBRh3YXZlc0V4Y2hhbmdlUG9vbEFkZHJlc3MCB3Vuc3Rha2UJAMwIAgULcG9vbExwVG9rZW4JAMwIAgUGYW1vdW50BQNuaWwFA25pbAMJAAACBQZyZXN1bHQFBnJlc3VsdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMFBmFtb3VudAkA2QQBBQtwb29sTHBUb2tlbgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEGNsYWltUG9vbFJld2FyZHMBBHBvb2wEC3Bvb2xBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sBAhwb29sRGF0YQkBC2dldFBvb2xEYXRhAQUEcG9vbAQLcG9vbExwVG9rZW4IBQhwb29sRGF0YQJfMQQYd2F2ZXNFeGNoYW5nZVBvb2xBZGRyZXNzCAUIcG9vbERhdGECXzIEE2N1cnJlbnRXWE9uQ29udHJhY3QJAPAHAgUEdGhpcwUJd3hBc3NldElkAwkAAAIFE2N1cnJlbnRXWE9uQ29udHJhY3QFE2N1cnJlbnRXWE9uQ29udHJhY3QEC2NsYWltUmVzdWx0CQD8BwQFGHdhdmVzRXhjaGFuZ2VQb29sQWRkcmVzcwIHY2xhaW1XWAkAzAgCBQtwb29sTHBUb2tlbgUDbmlsBQNuaWwDCQAAAgULY2xhaW1SZXN1bHQFC2NsYWltUmVzdWx0BA9uZXdXWE9uQ29udHJhY3QJAPAHAgUEdGhpcwUJd3hBc3NldElkBAdjbGFpbWVkCQBlAgUPbmV3V1hPbkNvbnRyYWN0BRNjdXJyZW50V1hPbkNvbnRyYWN0AwkAAAIFB2NsYWltZWQAAAkAAgECEE5vdGhpbmcgdG8gY2xhaW0ED3NidFJld2FyZEFtb3VudAkBH2NhbGN1bGF0ZUN1cnJlbnRSZXdhcmRTQlRBbW91bnQBBQdjbGFpbWVkBBBzYnRSZXdhcmRBY3Rpb25zAwkAAAIFD3NidFJld2FyZEFtb3VudAAABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULcG9vbEFkZHJlc3MFD3NidFJld2FyZEFtb3VudAUKc2J0QXNzZXRJZAUDbmlsBAxzYnRTdGFrZVBvb2wJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFD3NidFN0YWtlUG9vbEtleQQPc2J0U3Rha2VQb29sRmVlCQERQGV4dHJOYXRpdmUoMTA1NSkBBRJzYnRTdGFrZVBvb2xGZWVLZXkEGHNidFN0YWtlUG9vbFRvdGFsQ2xhaW1lZAkBEUBleHRyTmF0aXZlKDEwNTUpAQUbc2J0U3Rha2VQb29sVG90YWxDbGFpbWVkS2V5BBJzYnRTdGFrZVBvb2xBbW91bnQJAG4EBQdjbGFpbWVkBQ9zYnRTdGFrZVBvb2xGZWUFB2ZlZVJhbmsFBkhBTEZVUAQTc2J0U3Rha2VQb29sQWN0aW9ucwMJAAACBRJzYnRTdGFrZVBvb2xBbW91bnQAAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDHNidFN0YWtlUG9vbAUSc2J0U3Rha2VQb29sQW1vdW50BQl3eEFzc2V0SWQFA25pbAQUYWRkaXRpb25hbFJld2FyZFBvb2wJARFAZXh0ck5hdGl2ZSgxMDU4KQEFF2FkZGl0aW9uYWxSZXdhcmRQb29sS2V5BBhhZGRpdGlvbmFsUmV3YXJkUG9vbEZyZWUJARFAZXh0ck5hdGl2ZSgxMDU1KQEFGmFkZGl0aW9uYWxSZXdhcmRQb29sRmVlS2V5BBphZGRpdGlvbmFsUmV3YXJkUG9vbEFtb3VudAMJAAACCQCxAgEFFGFkZGl0aW9uYWxSZXdhcmRQb29sAAAAAAMJAQIhPQIFFGFkZGl0aW9uYWxSZXdhcmRQb29sBQRwb29sCQBuBAUHY2xhaW1lZAUYYWRkaXRpb25hbFJld2FyZFBvb2xGcmVlBQdmZWVSYW5rBQZIQUxGVVAAAAQcYWRkaXRpb25hbFJld2FyZHNQb29sQWN0aW9ucwMJAAACBRphZGRpdGlvbmFsUmV3YXJkUG9vbEFtb3VudAAABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUUYWRkaXRpb25hbFJld2FyZFBvb2wFGmFkZGl0aW9uYWxSZXdhcmRQb29sQW1vdW50BQl3eEFzc2V0SWQFA25pbAQLcG9vbENsYWltZWQJAGUCCQBlAgUHY2xhaW1lZAUSc2J0U3Rha2VQb29sQW1vdW50BRphZGRpdGlvbmFsUmV3YXJkUG9vbEFtb3VudAkAzggCCQDOCAIJAM4IAgUQc2J0UmV3YXJkQWN0aW9ucwUTc2J0U3Rha2VQb29sQWN0aW9ucwUcYWRkaXRpb25hbFJld2FyZHNQb29sQWN0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgUbc2J0U3Rha2VQb29sVG90YWxDbGFpbWVkS2V5CQBkAgUYc2J0U3Rha2VQb29sVG90YWxDbGFpbWVkBRJzYnRTdGFrZVBvb2xBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULcG9vbEFkZHJlc3MFC3Bvb2xDbGFpbWVkBQl3eEFzc2V0SWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgA8170M", "height": 2837276, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Bzvnm4nKsAVRrZoVedajFDmDqyc7h9zTRweYdJe4CrK4 Next: CmtxmCYWtcJeupfrW2k3w5DFiMHnF2u77qdv9DoTLM5a Diff:
Old | New | Differences | |
---|---|---|---|
11 | 11 | ||
12 | 12 | let e = base58'3NCukxG6cc7pqKoEwTZsr1CRrHMHfvGM7ok' | |
13 | 13 | ||
14 | - | let f = base58' | |
14 | + | let f = base58'3NCukxG6cc7pqKoEwTZsr1CRrHMHfvGM7ok' | |
15 | 15 | ||
16 | 16 | let g = "is_constructed" | |
17 | 17 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | 6 | let b = 10000 | |
7 | 7 | ||
8 | 8 | let c = base58'9Eu9de5GPPgLzY16bevCaxF4rFr4jA9wqyTfqcjksU82' | |
9 | 9 | ||
10 | 10 | let d = base58'H144sePa8bNCDFTzZNkUnk6QMz387T2ruKPMQ5DJ3DyS' | |
11 | 11 | ||
12 | 12 | let e = base58'3NCukxG6cc7pqKoEwTZsr1CRrHMHfvGM7ok' | |
13 | 13 | ||
14 | - | let f = base58' | |
14 | + | let f = base58'3NCukxG6cc7pqKoEwTZsr1CRrHMHfvGM7ok' | |
15 | 15 | ||
16 | 16 | let g = "is_constructed" | |
17 | 17 | ||
18 | 18 | let h = "admin_address" | |
19 | 19 | ||
20 | 20 | let i = "sb_wx_asset_id" | |
21 | 21 | ||
22 | 22 | let j = "lp_pools" | |
23 | 23 | ||
24 | 24 | let k = "additional_reward_pool" | |
25 | 25 | ||
26 | 26 | let l = "additional_reward_pool_fee" | |
27 | 27 | ||
28 | 28 | let m = "sbt_stake_pool" | |
29 | 29 | ||
30 | 30 | let n = "sbt_stake_pool_fee" | |
31 | 31 | ||
32 | 32 | let o = "sbt_stake_pool_total_claimed" | |
33 | 33 | ||
34 | 34 | let p = "total_wx_locked" | |
35 | 35 | ||
36 | 36 | let q = "initial_SBT_tokens_amount" | |
37 | 37 | ||
38 | 38 | let r = "base_SBT_token_amount_for_one_reward_token" | |
39 | 39 | ||
40 | 40 | func s (t) = { | |
41 | 41 | let u = t | |
42 | 42 | if ($isInstanceOf(u, "AttachedPayment")) | |
43 | 43 | then { | |
44 | 44 | let v = u | |
45 | 45 | v | |
46 | 46 | } | |
47 | 47 | else throw("fail to cast into AttachedPayment") | |
48 | 48 | } | |
49 | 49 | ||
50 | 50 | ||
51 | 51 | func w (t) = { | |
52 | 52 | let u = t | |
53 | 53 | if ($isInstanceOf(u, "ByteVector")) | |
54 | 54 | then { | |
55 | 55 | let v = u | |
56 | 56 | v | |
57 | 57 | } | |
58 | 58 | else throw("fail to cast into ByteVector") | |
59 | 59 | } | |
60 | 60 | ||
61 | 61 | ||
62 | 62 | func x (y) = { | |
63 | 63 | let u = y | |
64 | 64 | if ($isInstanceOf(u, "Int")) | |
65 | 65 | then { | |
66 | 66 | let z = u | |
67 | 67 | z | |
68 | 68 | } | |
69 | 69 | else throw("fail to cast into Int") | |
70 | 70 | } | |
71 | 71 | ||
72 | 72 | ||
73 | 73 | func A (B) = { | |
74 | 74 | let u = addressFromString(B) | |
75 | 75 | if ($isInstanceOf(u, "Address")) | |
76 | 76 | then { | |
77 | 77 | let C = u | |
78 | 78 | toString(C) | |
79 | 79 | } | |
80 | 80 | else throw("fail to cast into Address String") | |
81 | 81 | } | |
82 | 82 | ||
83 | 83 | ||
84 | 84 | func D (E) = { | |
85 | 85 | let F = getIntegerValue(this, r) | |
86 | 86 | let G = getIntegerValue(this, q) | |
87 | 87 | let H = assetBalance(this, d) | |
88 | 88 | if ((H == 0)) | |
89 | 89 | then 0 | |
90 | 90 | else { | |
91 | 91 | let I = fraction(F, H, G) | |
92 | 92 | let J = (E * I) | |
93 | 93 | if ((J > H)) | |
94 | 94 | then H | |
95 | 95 | else J | |
96 | 96 | } | |
97 | 97 | } | |
98 | 98 | ||
99 | 99 | ||
100 | 100 | func K (L) = { | |
101 | 101 | let M = A(L) | |
102 | 102 | let N = getStringValue(j) | |
103 | 103 | contains(N, M) | |
104 | 104 | } | |
105 | 105 | ||
106 | 106 | ||
107 | 107 | func O (L) = if (!(K(L))) | |
108 | 108 | then throw("Not authorized pool") | |
109 | 109 | else { | |
110 | 110 | let P = getStringValue(addressFromStringValue(L), "token") | |
111 | 111 | let Q = addressFromStringValue(getStringValue(L)) | |
112 | 112 | $Tuple2(P, Q) | |
113 | 113 | } | |
114 | 114 | ||
115 | 115 | ||
116 | 116 | @Callable(R) | |
117 | 117 | func constructor (S,T,G,U) = if (isDefined(getBoolean(g))) | |
118 | 118 | then throw("Constructor can be called one time") | |
119 | 119 | else { | |
120 | 120 | let V = Issue("testSbWX", "", 0, 8, true, unit, 0) | |
121 | 121 | let W = calculateAssetId(V) | |
122 | 122 | [V, StringEntry(i, toBase58String(W)), StringEntry(h, A(S)), StringEntry(m, A(T)), IntegerEntry(n, 1400), IntegerEntry(o, 0), StringEntry(j, ""), StringEntry(k, ""), IntegerEntry(l, 600), BooleanEntry(g, true), IntegerEntry(p, 0), IntegerEntry(q, G), IntegerEntry(r, U)] | |
123 | 123 | } | |
124 | 124 | ||
125 | 125 | ||
126 | 126 | ||
127 | 127 | @Callable(R) | |
128 | 128 | func mintSbWx () = if ((size(R.payments) != 1)) | |
129 | 129 | then throw("One Payment expected") | |
130 | 130 | else { | |
131 | 131 | let X = s(R.payments[0]) | |
132 | 132 | let Y = X.amount | |
133 | 133 | if (if ((X.assetId != c)) | |
134 | 134 | then true | |
135 | 135 | else (0 >= Y)) | |
136 | 136 | then throw("Wrong Asset id or amount") | |
137 | 137 | else { | |
138 | 138 | let Z = getIntegerValue(p) | |
139 | 139 | let aa = getStringValue(i) | |
140 | 140 | let ab = invoke(Address(e), "userMaxDurationREADONLY", nil, nil) | |
141 | 141 | if ((ab == ab)) | |
142 | 142 | then { | |
143 | 143 | let u = ab | |
144 | 144 | if ($isInstanceOf(u, "(String, Int)")) | |
145 | 145 | then { | |
146 | 146 | let ac = u | |
147 | 147 | let ad = ac._1 | |
148 | 148 | let ae = ac._2 | |
149 | 149 | let af = invoke(Address(e), ad, [ae], [X]) | |
150 | 150 | if ((af == af)) | |
151 | 151 | then { | |
152 | 152 | let V = fromBase58String(aa) | |
153 | 153 | [Reissue(V, Y, true), ScriptTransfer(Address(R.caller.bytes), Y, V), IntegerEntry(p, (Z + Y))] | |
154 | 154 | } | |
155 | 155 | else throw("Strict value is not equal to itself.") | |
156 | 156 | } | |
157 | 157 | else throw("FATAL: Inconsistent data") | |
158 | 158 | } | |
159 | 159 | else throw("Strict value is not equal to itself.") | |
160 | 160 | } | |
161 | 161 | } | |
162 | 162 | ||
163 | 163 | ||
164 | 164 | ||
165 | 165 | @Callable(R) | |
166 | 166 | func claimWxStakingRewards () = { | |
167 | 167 | let ag = assetBalance(this, c) | |
168 | 168 | if ((ag == ag)) | |
169 | 169 | then { | |
170 | 170 | let ah = invoke(Address(f), "claimReward", nil, nil) | |
171 | 171 | if ((ah == ah)) | |
172 | 172 | then { | |
173 | 173 | let ai = assetBalance(this, c) | |
174 | 174 | let aj = (ai - ag) | |
175 | 175 | if ((aj == 0)) | |
176 | 176 | then throw("Nothing to claim") | |
177 | 177 | else { | |
178 | 178 | let ak = getIntegerValue(o) | |
179 | 179 | [IntegerEntry(o, (ak + aj)), ScriptTransfer(addressFromStringValue(getStringValue(m)), aj, c)] | |
180 | 180 | } | |
181 | 181 | } | |
182 | 182 | else throw("Strict value is not equal to itself.") | |
183 | 183 | } | |
184 | 184 | else throw("Strict value is not equal to itself.") | |
185 | 185 | } | |
186 | 186 | ||
187 | 187 | ||
188 | 188 | ||
189 | 189 | @Callable(R) | |
190 | 190 | func addPool (B,Q) = if ((toBase58String(R.caller.bytes) != getStringValue(h))) | |
191 | 191 | then throw("Only Admin can call this function") | |
192 | 192 | else { | |
193 | 193 | let N = getStringValue(j) | |
194 | 194 | if (K(B)) | |
195 | 195 | then throw("Pool already added") | |
196 | 196 | else { | |
197 | 197 | let al = if ((size(N) == 0)) | |
198 | 198 | then B | |
199 | 199 | else ((N + a) + B) | |
200 | 200 | [StringEntry(j, al), StringEntry(A(B), A(Q))] | |
201 | 201 | } | |
202 | 202 | } | |
203 | 203 | ||
204 | 204 | ||
205 | 205 | ||
206 | 206 | @Callable(R) | |
207 | 207 | func removePool (B) = if ((toBase58String(R.caller.bytes) != getStringValue(h))) | |
208 | 208 | then throw("Only Admin can call this function") | |
209 | 209 | else { | |
210 | 210 | let N = getStringValue(j) | |
211 | 211 | if (!(K(B))) | |
212 | 212 | then throw("Pool not found") | |
213 | 213 | else { | |
214 | 214 | let am = split_4C(N, a) | |
215 | 215 | let an = x(indexOf(am, B)) | |
216 | 216 | let al = makeString_2C(removeByIndex(am, an), a) | |
217 | 217 | ([StringEntry(j, al), DeleteEntry(B)] ++ (if ((getStringValue(k) == B)) | |
218 | 218 | then [StringEntry(k, "")] | |
219 | 219 | else nil)) | |
220 | 220 | } | |
221 | 221 | } | |
222 | 222 | ||
223 | 223 | ||
224 | 224 | ||
225 | 225 | @Callable(R) | |
226 | 226 | func setAdditionalRewardsPool (B) = if ((toBase58String(R.caller.bytes) != getStringValue(h))) | |
227 | 227 | then throw("Only Admin can call this function") | |
228 | 228 | else if (!(K(B))) | |
229 | 229 | then throw("Only authorized pool can be added as additional reward pool") | |
230 | 230 | else [StringEntry(k, B)] | |
231 | 231 | ||
232 | 232 | ||
233 | 233 | ||
234 | 234 | @Callable(R) | |
235 | 235 | func setAdditionalRewardsPoolFee (ao) = if ((toBase58String(R.caller.bytes) != getStringValue(h))) | |
236 | 236 | then throw("Only Admin can call this function") | |
237 | 237 | else if ((ao > 2000)) | |
238 | 238 | then throw("Fee can't be bigger than 20%") | |
239 | 239 | else if ((0 > ao)) | |
240 | 240 | then throw("Fee can't be negative") | |
241 | 241 | else [IntegerEntry(l, ao)] | |
242 | 242 | ||
243 | 243 | ||
244 | 244 | ||
245 | 245 | @Callable(R) | |
246 | 246 | func setSbtPoolFee (ao) = if ((toBase58String(R.caller.bytes) != getStringValue(h))) | |
247 | 247 | then throw("Only Admin can call this function") | |
248 | 248 | else if ((ao > 2000)) | |
249 | 249 | then throw("Fee can't be bigger than 20%") | |
250 | 250 | else if ((0 > ao)) | |
251 | 251 | then throw("Fee can't be negative") | |
252 | 252 | else [IntegerEntry(n, ao)] | |
253 | 253 | ||
254 | 254 | ||
255 | 255 | ||
256 | 256 | @Callable(R) | |
257 | 257 | func stakePoolLps () = if ((size(R.payments) != 1)) | |
258 | 258 | then throw("One Payment expected") | |
259 | 259 | else { | |
260 | 260 | let ap = O(toBase58String(R.caller.bytes)) | |
261 | 261 | let P = ap._1 | |
262 | 262 | let Q = ap._2 | |
263 | 263 | let X = s(R.payments[0]) | |
264 | 264 | if (if ((X.assetId != fromBase58String(P))) | |
265 | 265 | then true | |
266 | 266 | else (0 >= X.amount)) | |
267 | 267 | then throw("Wrong LP Asset id or amount") | |
268 | 268 | else { | |
269 | 269 | let af = invoke(Q, "stake", nil, [X]) | |
270 | 270 | if ((af == af)) | |
271 | 271 | then nil | |
272 | 272 | else throw("Strict value is not equal to itself.") | |
273 | 273 | } | |
274 | 274 | } | |
275 | 275 | ||
276 | 276 | ||
277 | 277 | ||
278 | 278 | @Callable(R) | |
279 | 279 | func withdrawPoolLps (Y) = { | |
280 | 280 | let ap = O(toBase58String(R.caller.bytes)) | |
281 | 281 | let P = ap._1 | |
282 | 282 | let Q = ap._2 | |
283 | 283 | let af = invoke(Q, "unstake", [P, Y], nil) | |
284 | 284 | if ((af == af)) | |
285 | 285 | then [ScriptTransfer(Address(R.caller.bytes), Y, fromBase58String(P))] | |
286 | 286 | else throw("Strict value is not equal to itself.") | |
287 | 287 | } | |
288 | 288 | ||
289 | 289 | ||
290 | 290 | ||
291 | 291 | @Callable(R) | |
292 | 292 | func claimPoolRewards (L) = { | |
293 | 293 | let aq = addressFromStringValue(L) | |
294 | 294 | let ap = O(L) | |
295 | 295 | let P = ap._1 | |
296 | 296 | let Q = ap._2 | |
297 | 297 | let ar = assetBalance(this, c) | |
298 | 298 | if ((ar == ar)) | |
299 | 299 | then { | |
300 | 300 | let ah = invoke(Q, "claimWX", [P], nil) | |
301 | 301 | if ((ah == ah)) | |
302 | 302 | then { | |
303 | 303 | let as = assetBalance(this, c) | |
304 | 304 | let aj = (as - ar) | |
305 | 305 | if ((aj == 0)) | |
306 | 306 | then throw("Nothing to claim") | |
307 | 307 | else { | |
308 | 308 | let at = D(aj) | |
309 | 309 | let au = if ((at == 0)) | |
310 | 310 | then nil | |
311 | 311 | else [ScriptTransfer(aq, at, d)] | |
312 | 312 | let T = addressFromStringValue(getStringValue(m)) | |
313 | 313 | let av = getIntegerValue(n) | |
314 | 314 | let ak = getIntegerValue(o) | |
315 | 315 | let aw = fraction(aj, av, b, HALFUP) | |
316 | 316 | let ax = if ((aw == 0)) | |
317 | 317 | then nil | |
318 | 318 | else [ScriptTransfer(T, aw, c)] | |
319 | 319 | let ay = getStringValue(k) | |
320 | 320 | let az = getIntegerValue(l) | |
321 | 321 | let aA = if ((size(ay) == 0)) | |
322 | 322 | then 0 | |
323 | 323 | else if ((ay != L)) | |
324 | 324 | then fraction(aj, az, b, HALFUP) | |
325 | 325 | else 0 | |
326 | 326 | let aB = if ((aA == 0)) | |
327 | 327 | then nil | |
328 | 328 | else [ScriptTransfer(addressFromStringValue(ay), aA, c)] | |
329 | 329 | let aC = ((aj - aw) - aA) | |
330 | 330 | (((au ++ ax) ++ aB) ++ [IntegerEntry(o, (ak + aw)), ScriptTransfer(aq, aC, c)]) | |
331 | 331 | } | |
332 | 332 | } | |
333 | 333 | else throw("Strict value is not equal to itself.") | |
334 | 334 | } | |
335 | 335 | else throw("Strict value is not equal to itself.") | |
336 | 336 | } | |
337 | 337 | ||
338 | 338 |
github/deemru/w8io/169f3d6 47.96 ms ◑