tx · 2xsfJgHDmL8p8ipMhrRJpHdQHedjeVJBnits357JDE1G

3N8kvmPeoj7z8PGPDMGmBZT5GvfjxzXP36E:  -0.01000000 Waves

2023.09.28 07:54 [2774809] smart account 3N8kvmPeoj7z8PGPDMGmBZT5GvfjxzXP36E > SELF 0.00000000 Waves

{ "type": 13, "id": "2xsfJgHDmL8p8ipMhrRJpHdQHedjeVJBnits357JDE1G", "fee": 1000000, "feeAssetId": null, "timestamp": 1695876930952, "version": 2, "chainId": 84, "sender": "3N8kvmPeoj7z8PGPDMGmBZT5GvfjxzXP36E", "senderPublicKey": "7o6RgieyGuTpujJ7p7Ms7XPWGVMWzinzLwbSpikKMWQE", "proofs": [ "44fKYswCEoE5KZx5cKzm1J6SGbKhv6o75LyrmMmwtSA92JPxam39TycV1LYdjpghnY51zz8ug41KAyuq1ZD9DWt4" ], "script": "base64:BgIYCAISBwoFCAgBCAgSABIDCgEBEgASABIADgAGTVVMVDEwAIDIr6AlAANTRVACAl9fABBpc0NvbnN0cnVjdGVkS2V5Ag5pc19jb25zdHJ1Y3RlZAAXd2l0aGRyYXdhbExvY2tQZXJpb2RLZXkCFndpdGhkcmF3YWxfbG9ja19wZXJpb2QAEHJld2FyZEFzc2V0SWRLZXkCD3Jld2FyZF9hc3NldF9pZAATcG9vbFN0YWtlQXNzZXRJZEtleQITcG9vbF9zdGFrZV9hc3NldF9pZAAWcm9vdENvbnRyYWN0QWRkcmVzc0tleQIVcm9vdF9jb250cmFjdF9hZGRyZXNzAA9hZG1pbkFkZHJlc3NLZXkCEWFkbWluX2FkZHJlc3Nfa2V5ABJ0b3RhbFBvb2xTdGFrZWRLZXkCEnRvdGFsX3Bvb2xfX3N0YWtlZAASdG90YWxQb29sRWFybmVkS2V5AhF0b3RhbF9wb29sX2Vhcm5lZAAVcG9vbEN1cnJlbnRDbGFpbUlkS2V5AhVwb29sX2N1cnJlbnRfY2xhaW1faWQAKHBvb2xDdXJyZW50VW5jbGFpbWVkQWRkaXRpb25hbFJld2FyZHNLZXkCKXBvb2xfY3VycmVudF91bmNsYWltZWRfYWRkaXRpb25hbF9yZXdhcmRzAQlhc1BheW1lbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIPQXR0YWNoZWRQYXltZW50BAFwBQckbWF0Y2gwBQFwCQACAQIhZmFpbCB0byBjYXN0IGludG8gQXR0YWNoZWRQYXltZW50ARppc1VzZXJIYXZlVW5jbGFpbWVkUmV3YXJkcwEHYWRkcmVzcwMJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQUHYWRkcmVzcwcEEmN1cnJlbnRQb29sQ2xhaW1JZAkBEUBleHRyTmF0aXZlKDEwNTUpAQUVcG9vbEN1cnJlbnRDbGFpbUlkS2V5BAh1c2VyRGF0YQkAtQkCCQERQGV4dHJOYXRpdmUoMTA1OCkBBQdhZGRyZXNzBQNTRVAEI3VzZXJMYXN0Q2xhaW1lZFJld2FyZHNBdFBvb2xDbGFpbUlkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIdXNlckRhdGEAAgkAZgIFEmN1cnJlbnRQb29sQ2xhaW1JZAUjdXNlckxhc3RDbGFpbWVkUmV3YXJkc0F0UG9vbENsYWltSWQGAWkBC2NvbnN0cnVjdG9yBQ1yZXdhcmRBc3NldElkEHBvb2xTdGFrZUFzc2V0SWQUd2l0aGRyYXdhbExvY2tQZXJpb2QMcm9vdENvbnRyYWN0DWFkbWluQ29udHJhY3QDCQEJaXNEZWZpbmVkAQkAoAgBBRBpc0NvbnN0cnVjdGVkS2V5CQACAQIiQ29uc3RydWN0b3IgY2FuIGJlIGNhbGxlZCBvbmUgdGltZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUQaXNDb25zdHJ1Y3RlZEtleQYJAMwIAgkBDEludGVnZXJFbnRyeQIFKHBvb2xDdXJyZW50VW5jbGFpbWVkQWRkaXRpb25hbFJld2FyZHNLZXkAAAkAzAgCCQELU3RyaW5nRW50cnkCBRByZXdhcmRBc3NldElkS2V5BQ1yZXdhcmRBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFE3Bvb2xTdGFrZUFzc2V0SWRLZXkFEHBvb2xTdGFrZUFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUWcm9vdENvbnRyYWN0QWRkcmVzc0tleQUMcm9vdENvbnRyYWN0CQDMCAIJAQtTdHJpbmdFbnRyeQIFD2FkbWluQWRkcmVzc0tleQUNYWRtaW5Db250cmFjdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSdG90YWxQb29sRWFybmVkS2V5AAAJAMwIAgkBDEludGVnZXJFbnRyeQIFFXBvb2xDdXJyZW50Q2xhaW1JZEtleQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJ0b3RhbFBvb2xTdGFrZWRLZXkAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUXd2l0aGRyYXdhbExvY2tQZXJpb2RLZXkFFHdpdGhkcmF3YWxMb2NrUGVyaW9kBQNuaWwBaQEFc3Rha2UAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIUT25lIFBheW1lbnQgZXhwZWN0ZWQEDWNhbGxlckFkZHJlc3MJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQHcGF5bWVudAkBCWFzUGF5bWVudAEJAJEDAggFAWkIcGF5bWVudHMAAAQQcG9vbFN0YWtlQXNzZXRJZAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1OCkBBRNwb29sU3Rha2VBc3NldElkS2V5AwMJAQIhPQIIBQdwYXltZW50B2Fzc2V0SWQFEHBvb2xTdGFrZUFzc2V0SWQGCQBnAgAACAUHcGF5bWVudAZhbW91bnQJAAIBAiFXcm9uZyBhc3NldCBpZCBvciBuZWdhdGl2ZSBhbW91bnQDCQEaaXNVc2VySGF2ZVVuY2xhaW1lZFJld2FyZHMBBQ1jYWxsZXJBZGRyZXNzCQACAQI4WW91IGhhdmUgdW5jbGFpbWVkIHJld2FyZHMgb24gY29udHJhY3QsIGNsYWltIHRoZW0gZmlyc3QEEmN1cnJlbnRQb29sQ2xhaW1JZAkBEUBleHRyTmF0aXZlKDEwNTUpAQUVcG9vbEN1cnJlbnRDbGFpbUlkS2V5BBZjdXJyZW50VG90YWxQb29sU3Rha2VkCQERQGV4dHJOYXRpdmUoMTA1NSkBBRJ0b3RhbFBvb2xTdGFrZWRLZXkELWN1cnJlbnRUb3RhbFBvb2xSZXdhcmRzRWFybmVkRm9yT25lU3Rha2VUb2tlbgkBEUBleHRyTmF0aXZlKDEwNTUpAQUSdG90YWxQb29sRWFybmVkS2V5BBNyb290Q29udHJhY3RBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA1OCkBBRZyb290Q29udHJhY3RBZGRyZXNzS2V5BAZyZXN1bHQDCQBmAgkAsQIBBRNyb290Q29udHJhY3RBZGRyZXNzAAAJAPwHBAkBB0FkZHJlc3MBCQDZBAEFE3Jvb3RDb250cmFjdEFkZHJlc3MCDHN0YWtlUG9vbExwcwUDbmlsCQDMCAIFB3BheW1lbnQFA25pbAUEdW5pdAMJAAACBQZyZXN1bHQFBnJlc3VsdAQLdXNlckRhdGFTdHIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUNY2FsbGVyQWRkcmVzcwIABAh1c2VyRGF0YQMJAGYCCQCxAgEFC3VzZXJEYXRhU3RyAAAECHVzZXJEYXRhCQC1CQIFC3VzZXJEYXRhU3RyBQNTRVAEFXVzZXJUb3RhbFN0YWtlZEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHVzZXJEYXRhAAAJALkJAgkAzAgCCQCkAwEJAGQCBRV1c2VyVG90YWxTdGFrZWRBbW91bnQIBQdwYXltZW50BmFtb3VudAkAzAgCCQCRAwIFCHVzZXJEYXRhAAEJAMwIAgkAkQMCBQh1c2VyRGF0YQACCQDMCAIJAJEDAgUIdXNlckRhdGEAAwkAzAgCCQCkAwEFBmhlaWdodAUDbmlsBQNTRVAJALkJAgkAzAgCCQCkAwEIBQdwYXltZW50BmFtb3VudAkAzAgCAgEwCQDMCAIJAKQDAQUSY3VycmVudFBvb2xDbGFpbUlkCQDMCAIJAKQDAQUtY3VycmVudFRvdGFsUG9vbFJld2FyZHNFYXJuZWRGb3JPbmVTdGFrZVRva2VuCQDMCAIJAKQDAQUGaGVpZ2h0BQNuaWwFA1NFUAkAzAgCCQELU3RyaW5nRW50cnkCBQ1jYWxsZXJBZGRyZXNzBQh1c2VyRGF0YQkAzAgCCQEMSW50ZWdlckVudHJ5AgUSdG90YWxQb29sU3Rha2VkS2V5CQBkAgUWY3VycmVudFRvdGFsUG9vbFN0YWtlZAgFB3BheW1lbnQGYW1vdW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEId2l0aGRyYXcBBmFtb3VudAMJAGcCAAAFBmFtb3VudAkAAgECF0Ftb3VudCBtdXN0IGJlIHBvc2l0aXZlBA1jYWxsZXJBZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMDCQEaaXNVc2VySGF2ZVVuY2xhaW1lZFJld2FyZHMBBQ1jYWxsZXJBZGRyZXNzCQACAQI4WW91IGhhdmUgdW5jbGFpbWVkIHJld2FyZHMgb24gY29udHJhY3QsIGNsYWltIHRoZW0gZmlyc3QECHVzZXJEYXRhCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBBQ1jYWxsZXJBZGRyZXNzAg5Vc2VyIG5vdCBmb3VuZAUDU0VQBBV1c2VyVG90YWxTdGFrZWRBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQh1c2VyRGF0YQAAAwkAZgIFBmFtb3VudAUVdXNlclRvdGFsU3Rha2VkQW1vdW50CQACAQISSW5zdWZmaWNpZW50IGZ1bmRzBBR3aXRoZHJhd2FsTG9ja1BlcmlvZAkBEUBleHRyTmF0aXZlKDEwNTUpAQUXd2l0aGRyYXdhbExvY2tQZXJpb2RLZXkEEnVzZXJMYXN0U3Rha2VCbG9jawkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHVzZXJEYXRhAAQDAwkAZgIFFHdpdGhkcmF3YWxMb2NrUGVyaW9kAAAJAGYCBRR3aXRoZHJhd2FsTG9ja1BlcmlvZAkAZQIFBmhlaWdodAUSdXNlckxhc3RTdGFrZUJsb2NrBwkAAgEJAKwCAgkArAICAi1UaGlzIHBvb2wgaGF2ZSBsb2NrIHBlcmlvZC4gWW91IG5lZWQgdG8gd2FpdCAJAKQDAQkAZQIFFHdpdGhkcmF3YWxMb2NrUGVyaW9kCQBlAgUGaGVpZ2h0BRJ1c2VyTGFzdFN0YWtlQmxvY2sCByBibG9ja3MEE3Jvb3RDb250cmFjdEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDU4KQEFFnJvb3RDb250cmFjdEFkZHJlc3NLZXkEFmN1cnJlbnRUb3RhbFBvb2xTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUSdG90YWxQb29sU3Rha2VkS2V5AAAEEHBvb2xTdGFrZUFzc2V0SWQJARFAZXh0ck5hdGl2ZSgxMDU4KQEFE3Bvb2xTdGFrZUFzc2V0SWRLZXkEBnJlc3VsdAMJAGYCCQCxAgEFE3Jvb3RDb250cmFjdEFkZHJlc3MAAAkA/AcECQEHQWRkcmVzcwEJANkEAQUTcm9vdENvbnRyYWN0QWRkcmVzcwIPd2l0aGRyYXdQb29sTHBzCQDMCAIFBmFtb3VudAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUGcmVzdWx0BQZyZXN1bHQEC25ld1VzZXJEYXRhCQDMCAIJAKQDAQkAZQIFFXVzZXJUb3RhbFN0YWtlZEFtb3VudAUGYW1vdW50CQDRCAIFCHVzZXJEYXRhAAAJAM0IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUSdG90YWxQb29sU3Rha2VkS2V5CQBlAgUWY3VycmVudFRvdGFsUG9vbFN0YWtlZAUGYW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQgIBQFpBmNhbGxlcgVieXRlcwUGYW1vdW50CQDZBAEFEHBvb2xTdGFrZUFzc2V0SWQFA25pbAMJAAACCQBlAgUVdXNlclRvdGFsU3Rha2VkQW1vdW50BQZhbW91bnQAAAkBC0RlbGV0ZUVudHJ5AQUNY2FsbGVyQWRkcmVzcwkBC1N0cmluZ0VudHJ5AgUNY2FsbGVyQWRkcmVzcwkAuQkCBQtuZXdVc2VyRGF0YQUDU0VQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDGNsYWltUmV3YXJkcwAEDWNhbGxlckFkZHJlc3MJANgEAQgIBQFpBmNhbGxlcgVieXRlcwMJAQEhAQkBGmlzVXNlckhhdmVVbmNsYWltZWRSZXdhcmRzAQUNY2FsbGVyQWRkcmVzcwkAAgECI05vdGhpbmcgdG8gY2xhaW0sIG9yIHVzZXIgbm90IGZvdW5kBBJwb29sQ3VycmVudENsYWltSWQJARFAZXh0ck5hdGl2ZSgxMDU1KQEFFXBvb2xDdXJyZW50Q2xhaW1JZEtleQQmdG90YWxQb29sRWFybmVkUmV3YXJkc0Zvck9uZVN0YWtlVG9rZW4JARFAZXh0ck5hdGl2ZSgxMDU1KQEFEnRvdGFsUG9vbEVhcm5lZEtleQQIdXNlckRhdGEJALUJAgkBEUBleHRyTmF0aXZlKDEwNTgpAQUNY2FsbGVyQWRkcmVzcwUDU0VQBA91c2VyVG90YWxTdGFrZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQh1c2VyRGF0YQAABBd1c2VyVG90YWxSZXdhcmRzQ2xhaW1lZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHVzZXJEYXRhAAEEGHVzZXJMYXN0Q2xhaW1Qb29sQ2xhaW1JZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHVzZXJEYXRhAAIEKXVzZXJBbHJlYWR5Q2xhaW1lZFJld2FyZHNGb3JPbmVTdGFrZVRva2VuCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIdXNlckRhdGEAAwQpdXNlclVuY2xhaW1lZFBvb2xFYXJuaW5nc0Zvck9uZVN0YWtlVG9rZW4JAGUCBSZ0b3RhbFBvb2xFYXJuZWRSZXdhcmRzRm9yT25lU3Rha2VUb2tlbgUpdXNlckFscmVhZHlDbGFpbWVkUmV3YXJkc0Zvck9uZVN0YWtlVG9rZW4ECXVzZXJDbGFpbQkAawMFKXVzZXJVbmNsYWltZWRQb29sRWFybmluZ3NGb3JPbmVTdGFrZVRva2VuBQ91c2VyVG90YWxTdGFrZWQFBk1VTFQxMAQLbmV3VXNlckRhdGEJALkJAgkAzAgCCQCRAwIFCHVzZXJEYXRhAAAJAMwIAgkApAMBCQBkAgUXdXNlclRvdGFsUmV3YXJkc0NsYWltZWQFCXVzZXJDbGFpbQkAzAgCCQCkAwEFEnBvb2xDdXJyZW50Q2xhaW1JZAkAzAgCCQCkAwEJAGQCBSl1c2VyQWxyZWFkeUNsYWltZWRSZXdhcmRzRm9yT25lU3Rha2VUb2tlbgUpdXNlclVuY2xhaW1lZFBvb2xFYXJuaW5nc0Zvck9uZVN0YWtlVG9rZW4JAMwIAgkAkQMCBQh1c2VyRGF0YQAEBQNuaWwFA1NFUAQNcmV3YXJkQXNzZXRJZAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1OCkBBRByZXdhcmRBc3NldElkS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIFDWNhbGxlckFkZHJlc3MFC25ld1VzZXJEYXRhCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJdXNlckNsYWltBQ1yZXdhcmRBc3NldElkBQNuaWwBaQEQY2xhaW1Qb29sUmV3YXJkcwADCQECIT0CCAgFAWkGY2FsbGVyBWJ5dGVzCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFD2FkbWluQWRkcmVzc0tleQkAAgECCkFkbWluIG9ubHkED3RvdGFsUG9vbFN0YWtlZAkBEUBleHRyTmF0aXZlKDEwNTUpAQUSdG90YWxQb29sU3Rha2VkS2V5BA90b3RhbFBvb2xFYXJuZWQJARFAZXh0ck5hdGl2ZSgxMDU1KQEFEnRvdGFsUG9vbEVhcm5lZEtleQQScG9vbEN1cnJlbnRDbGFpbUlkCQERQGV4dHJOYXRpdmUoMTA1NSkBBRVwb29sQ3VycmVudENsYWltSWRLZXkEDXJld2FyZEFzc2V0SWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTgpAQUQcmV3YXJkQXNzZXRJZEtleQQTcm9vdENvbnRyYWN0QWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNTgpAQUWcm9vdENvbnRyYWN0QWRkcmVzc0tleQQXY3VycmVudFJld2FyZE9uQ29udHJhY3QJAPAHAgUEdGhpcwUNcmV3YXJkQXNzZXRJZAMJAAACBRdjdXJyZW50UmV3YXJkT25Db250cmFjdAUXY3VycmVudFJld2FyZE9uQ29udHJhY3QEEXJvb3RDb250cmFjdENsYWltAwkAZgIJALECAQUTcm9vdENvbnRyYWN0QWRkcmVzcwAACQD8BwQJAQdBZGRyZXNzAQkA2QQBBRNyb290Q29udHJhY3RBZGRyZXNzAhBjbGFpbVBvb2xSZXdhcmRzBQNuaWwFA25pbAUEdW5pdAMJAAACBRFyb290Q29udHJhY3RDbGFpbQURcm9vdENvbnRyYWN0Q2xhaW0EE25ld1Jld2FyZE9uQ29udHJhY3QJAPAHAgUEdGhpcwUNcmV3YXJkQXNzZXRJZAQhY3VycmVudEFkZGl0aW9uYWxVbmNsYWltZWRSZXdhcmRzCQERQGV4dHJOYXRpdmUoMTA1NSkBBShwb29sQ3VycmVudFVuY2xhaW1lZEFkZGl0aW9uYWxSZXdhcmRzS2V5BBNjbGFpbWVkUmV3YXJkQW1vdW50CQBkAgkAZQIFE25ld1Jld2FyZE9uQ29udHJhY3QFF2N1cnJlbnRSZXdhcmRPbkNvbnRyYWN0BSFjdXJyZW50QWRkaXRpb25hbFVuY2xhaW1lZFJld2FyZHMDCQAAAgUTY2xhaW1lZFJld2FyZEFtb3VudAAABQNuaWwEJmN1cnJlbnRDbGFpbUlkRWFybmluZ3NGb3JPbmVTdGFrZVRva2VuCQBrAwUTY2xhaW1lZFJld2FyZEFtb3VudAUGTVVMVDEwBQ90b3RhbFBvb2xTdGFrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFFXBvb2xDdXJyZW50Q2xhaW1JZEtleQkAZAIFEnBvb2xDdXJyZW50Q2xhaW1JZAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJ0b3RhbFBvb2xFYXJuZWRLZXkJAGQCBQ90b3RhbFBvb2xFYXJuZWQFJmN1cnJlbnRDbGFpbUlkRWFybmluZ3NGb3JPbmVTdGFrZVRva2VuCQDMCAIJAQxJbnRlZ2VyRW50cnkCBShwb29sQ3VycmVudFVuY2xhaW1lZEFkZGl0aW9uYWxSZXdhcmRzS2V5AAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARdyZWNlaXZlQWRkaXRpb25hbFJld2FyZAADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhRPbmUgUGF5bWVudCBleHBlY3RlZAQHcGF5bWVudAkBCWFzUGF5bWVudAEJAJEDAggFAWkIcGF5bWVudHMAAAQNcmV3YXJkQXNzZXRJZAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1OCkBBRByZXdhcmRBc3NldElkS2V5AwMJAQIhPQIIBQdwYXltZW50B2Fzc2V0SWQFDXJld2FyZEFzc2V0SWQGCQBnAgAACAUHcGF5bWVudAZhbW91bnQJAAIBAihXcm9uZyByZXdhcmQgYXNzZXQgaWQgb3IgbmVnYXRpdmUgYW1vdW50BCFjdXJyZW50VW5jbGFpbWVkQWRkaXRpb25hbFJld2FyZHMJARFAZXh0ck5hdGl2ZSgxMDU1KQEFKHBvb2xDdXJyZW50VW5jbGFpbWVkQWRkaXRpb25hbFJld2FyZHNLZXkJAMwIAgkBDEludGVnZXJFbnRyeQIFKHBvb2xDdXJyZW50VW5jbGFpbWVkQWRkaXRpb25hbFJld2FyZHNLZXkJAGQCBSFjdXJyZW50VW5jbGFpbWVkQWRkaXRpb25hbFJld2FyZHMIBQdwYXltZW50BmFtb3VudAUDbmlsAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleVL+lcc=", "height": 2774809, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let a = 10000000000
5+
6+let b = "__"
7+
8+let c = "is_constructed"
9+
10+let d = "withdrawal_lock_period"
11+
12+let e = "reward_asset_id"
13+
14+let f = "pool_stake_asset_id"
15+
16+let g = "root_contract_address"
17+
18+let h = "admin_address_key"
19+
20+let i = "total_pool__staked"
21+
22+let j = "total_pool_earned"
23+
24+let k = "pool_current_claim_id"
25+
26+let l = "pool_current_unclaimed_additional_rewards"
27+
28+func m (n) = {
29+ let o = n
30+ if ($isInstanceOf(o, "AttachedPayment"))
31+ then {
32+ let p = o
33+ p
34+ }
35+ else throw("fail to cast into AttachedPayment")
36+ }
37+
38+
39+func q (r) = if (!(isDefined(getString(r))))
40+ then false
41+ else {
42+ let s = getIntegerValue(k)
43+ let t = split(getStringValue(r), b)
44+ let u = parseIntValue(t[2])
45+ (s > u)
46+ }
47+
48+
49+@Callable(v)
50+func constructor (w,x,y,z,A) = if (isDefined(getBoolean(c)))
51+ then throw("Constructor can be called one time")
52+ else [BooleanEntry(c, true), IntegerEntry(l, 0), StringEntry(e, w), StringEntry(f, x), StringEntry(g, z), StringEntry(h, A), IntegerEntry(j, 0), IntegerEntry(k, 0), IntegerEntry(i, 0), IntegerEntry(d, y)]
53+
54+
55+
56+@Callable(v)
57+func stake () = if ((size(v.payments) != 1))
58+ then throw("One Payment expected")
59+ else {
60+ let B = toBase58String(v.caller.bytes)
61+ let C = m(v.payments[0])
62+ let x = fromBase58String(getStringValue(f))
63+ if (if ((C.assetId != x))
64+ then true
65+ else (0 >= C.amount))
66+ then throw("Wrong asset id or negative amount")
67+ else if (q(B))
68+ then throw("You have unclaimed rewards on contract, claim them first")
69+ else {
70+ let s = getIntegerValue(k)
71+ let D = getIntegerValue(i)
72+ let E = getIntegerValue(j)
73+ let F = getStringValue(g)
74+ let G = if ((size(F) > 0))
75+ then invoke(Address(fromBase58String(F)), "stakePoolLps", nil, [C])
76+ else unit
77+ if ((G == G))
78+ then {
79+ let H = valueOrElse(getString(B), "")
80+ let t = if ((size(H) > 0))
81+ then {
82+ let t = split(H, b)
83+ let I = parseIntValue(t[0])
84+ makeString([toString((I + C.amount)), t[1], t[2], t[3], toString(height)], b)
85+ }
86+ else makeString([toString(C.amount), "0", toString(s), toString(E), toString(height)], b)
87+[StringEntry(B, t), IntegerEntry(i, (D + C.amount))]
88+ }
89+ else throw("Strict value is not equal to itself.")
90+ }
91+ }
92+
93+
94+
95+@Callable(v)
96+func withdraw (J) = if ((0 >= J))
97+ then throw("Amount must be positive")
98+ else {
99+ let B = toBase58String(v.caller.bytes)
100+ if (q(B))
101+ then throw("You have unclaimed rewards on contract, claim them first")
102+ else {
103+ let t = split(valueOrErrorMessage(getString(B), "User not found"), b)
104+ let I = parseIntValue(t[0])
105+ if ((J > I))
106+ then throw("Insufficient funds")
107+ else {
108+ let y = getIntegerValue(d)
109+ let K = parseIntValue(t[4])
110+ if (if ((y > 0))
111+ then (y > (height - K))
112+ else false)
113+ then throw((("This pool have lock period. You need to wait " + toString((y - (height - K)))) + " blocks"))
114+ else {
115+ let F = getStringValue(g)
116+ let D = valueOrElse(getInteger(i), 0)
117+ let x = getStringValue(f)
118+ let G = if ((size(F) > 0))
119+ then invoke(Address(fromBase58String(F)), "withdrawPoolLps", [J], nil)
120+ else unit
121+ if ((G == G))
122+ then {
123+ let L = [toString((I - J)), removeByIndex(t, 0)]
124+ ([IntegerEntry(i, (D - J)), ScriptTransfer(Address(v.caller.bytes), J, fromBase58String(x))] :+ (if (((I - J) == 0))
125+ then DeleteEntry(B)
126+ else StringEntry(B, makeString(L, b))))
127+ }
128+ else throw("Strict value is not equal to itself.")
129+ }
130+ }
131+ }
132+ }
133+
134+
135+
136+@Callable(v)
137+func claimRewards () = {
138+ let B = toBase58String(v.caller.bytes)
139+ if (!(q(B)))
140+ then throw("Nothing to claim, or user not found")
141+ else {
142+ let M = getIntegerValue(k)
143+ let N = getIntegerValue(j)
144+ let t = split(getStringValue(B), b)
145+ let O = parseIntValue(t[0])
146+ let P = parseIntValue(t[1])
147+ let Q = parseIntValue(t[2])
148+ let R = parseIntValue(t[3])
149+ let S = (N - R)
150+ let T = fraction(S, O, a)
151+ let L = makeString([t[0], toString((P + T)), toString(M), toString((R + S)), t[4]], b)
152+ let w = fromBase58String(getStringValue(e))
153+[StringEntry(B, L), ScriptTransfer(v.caller, T, w)]
154+ }
155+ }
156+
157+
158+
159+@Callable(v)
160+func claimPoolRewards () = if ((v.caller.bytes != fromBase58String(getStringValue(h))))
161+ then throw("Admin only")
162+ else {
163+ let U = getIntegerValue(i)
164+ let V = getIntegerValue(j)
165+ let M = getIntegerValue(k)
166+ let w = fromBase58String(getStringValue(e))
167+ let F = getStringValue(g)
168+ let W = assetBalance(this, w)
169+ if ((W == W))
170+ then {
171+ let X = if ((size(F) > 0))
172+ then invoke(Address(fromBase58String(F)), "claimPoolRewards", nil, nil)
173+ else unit
174+ if ((X == X))
175+ then {
176+ let Y = assetBalance(this, w)
177+ let Z = getIntegerValue(l)
178+ let aa = ((Y - W) + Z)
179+ if ((aa == 0))
180+ then nil
181+ else {
182+ let ab = fraction(aa, a, U)
183+[IntegerEntry(k, (M + 1)), IntegerEntry(j, (V + ab)), IntegerEntry(l, 0)]
184+ }
185+ }
186+ else throw("Strict value is not equal to itself.")
187+ }
188+ else throw("Strict value is not equal to itself.")
189+ }
190+
191+
192+
193+@Callable(v)
194+func receiveAdditionalReward () = if ((size(v.payments) != 1))
195+ then throw("One Payment expected")
196+ else {
197+ let C = m(v.payments[0])
198+ let w = fromBase58String(getStringValue(e))
199+ if (if ((C.assetId != w))
200+ then true
201+ else (0 >= C.amount))
202+ then throw("Wrong reward asset id or negative amount")
203+ else {
204+ let ac = getIntegerValue(l)
205+[IntegerEntry(l, (ac + C.amount))]
206+ }
207+ }
208+
209+
210+@Verifier(ad)
211+func ae () = sigVerify(ad.bodyBytes, ad.proofs[0], ad.senderPublicKey)
212+

github/deemru/w8io/026f985 
20.62 ms