2023.12.27 10:40 [3970740] smart account 3PCMKXu9r2ZNSxuLgnwoPXsWYhq6nMDADNo > SELF 0.00000000 Waves

{ "type": 13, "id": "ADZjjKV8Hr8KmirxkEkmonv52T3c6JTdo1Qw3A3owH6X", "fee": 1500000, "feeAssetId": null, "timestamp": 1703662965406, "version": 2, "chainId": 87, "sender": "3PCMKXu9r2ZNSxuLgnwoPXsWYhq6nMDADNo", "senderPublicKey": "DPPK9tZRpiixkYUiW8mPfqsJ1H7X467xygxYUrY8Hjqu", "proofs": [ "2GoDL1SvN7vxg8VvKGEbnumJmEUy1xcKh56nGyEjty8BC2kjaLuREuQd2dVnKLKAvUMgbXN2QTBJDywPjePWpuaG" ], "script": "base64:BgIyCAISAwoBCBIDCgEIEggKBggBBAEBARIDCgEEEgASABIDCgEIEgYKBAgIAQESBAoCCAgoAAtrZXlNQWNjUEtleQIJbWFzdGVyX3BrAA1rZXlCYWNrdXBQS2V5AgdiYWNrX3BrAAh3YXJzUEtleQIHd2Fyc19wawEGZ2V0U3RyAQNrZXkEByRtYXRjaDAJAJ0IAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYgUHJG1hdGNoMAUBYgIAAA5tQWNjUEtleVN0cmluZwkBBmdldFN0cgEFC2tleU1BY2NQS2V5ABBiYWNrdXBQS2V5U3RyaW5nCQEGZ2V0U3RyAQUNa2V5QmFja3VwUEtleQEMZ2V0QmFja3VwS2V5AAMJAAACBRBiYWNrdXBQS2V5U3RyaW5nAgAIBQR0aGlzBWJ5dGVzCQDZBAEFEGJhY2t1cFBLZXlTdHJpbmcACG1BY2NQS2V5CQDZBAEFDm1BY2NQS2V5U3RyaW5nAAhtQWNjQWRkcgkApwgBBQhtQWNjUEtleQAKZmVlUGVyY2VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUIbUFjY0FkZHIJAKwCAgkArAICAgJmXwkApQgBBQR0aGlzAgRfZmVlAA5zdGFraW5nQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCG1BY2NBZGRyCQCsAgIJAKwCAgICZl8JAKUIAQUEdGhpcwIOX3N0YWtlX2FkZHJlc3MJAKwCAgkArAICAgJmXwkApQgBBQR0aGlzAhpfc3Rha2VfYWRkcmVzcyBub3QgZGVmaW5lZAAId0FjY1BLZXkJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCG1BY2NBZGRyBQh3YXJzUEtleQkArAICBQh3YXJzUEtleQIMIG5vdCBkZWZpbmVkAA9rVG90YWxMaXF1aWRpdHkCD3RvdGFsX2xpcXVpZGl0eQAMa0luaXRpYWxpemVkAgtJTklUSUFMSVpFRAATa0xpcXVpZGl0eVRocmVzaG9sZAITTElRVUlESVRZX1RIUkVTSE9MRAATa1RvdGFsRmFybWluZ1Jld2FyZAIUdG90YWxfZmFybWluZ19yZXdhcmQADWtTaGFyZUFzc2V0SWQCDlNIQVJFX0FTU0VUX0lEAA5rSW5jdWJhdG9yRGFwcAIOSU5DVUJBVE9SX0RBUFAADGtCcmVlZGVyRGFwcAIMQlJFRURFUl9EQVBQAAxrRmFybWluZ0RhcHACDEZBUk1JTkdfREFQUAAQa01hcmtldFByb3h5RGFwcAIWTUFSS0VUUExBQ0VfUFJPWFlfREFQUAAMa0F1Y3Rpb25EYXBwAgxBVUNUSU9OX0RBUFAAB2tMb2NrZWQCBkxPQ0tFRAAQa0Nlb0NvbGxlY3RlZEZlZQIRY2VvX2NvbGxlY3RlZF9mZWUAF2tDZW9Db2xsZWN0ZWRGZWVPdmVyYWxsAg9jZW9fZmVlX292ZXJhbGwAEmtMb2NrZWRJbnZlc3RtZW50cwISbG9ja2VkX2ludmVzdG1lbnRzABBrZXlUb3RhbENvbXBvdW5kAg50b3RhbF9jb21wb3VuZAAPa2V5R2xvYmFsU3Rha2VkAg1nbG9iYWxfc3Rha2VkAQZnZXRJbnQBA2tleQQHJG1hdGNoMAkAmggCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAABB2dldEJvb2wBA2tleQQHJG1hdGNoMAkAmwgCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYgUHJG1hdGNoMAUBYgUEdW5pdAEHZ2V0U3RyQQIBYQFrBAckbWF0Y2gwCQCdCAIFAWEFAWsDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFiBQckbWF0Y2gwBQFiAgABDXRyeUdldEJvb2xlYW4CAWEDa2V5BAckbWF0Y2gwCQCbCAIFAWEFA2tleQMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFiBQckbWF0Y2gwBQFiBwEHZ2V0SW50QQIHYWRkcmVzcwNrZXkEByRtYXRjaDAJAJoIAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAAARBnZXRWb3RlSGVpZ2h0S2V5AAIRVk9URV9IRUlHSFRfU1RBUlQBDXJlc3VsdFZvdGVLZXkBBmhlaWdodAkArAICAgtMSVFVSURBVEVEXwUGaGVpZ2h0AQxpc0xpcXVpZGF0ZWQABAp2b3RlSGVpZ2h0CQEHZ2V0SW50QQIFDnN0YWtpbmdBZGRyZXNzCQEQZ2V0Vm90ZUhlaWdodEtleQADCQAAAgUKdm90ZUhlaWdodAAABwkBDXRyeUdldEJvb2xlYW4CBQ5zdGFraW5nQWRkcmVzcwkBDXJlc3VsdFZvdGVLZXkBCQCkAwEFCnZvdGVIZWlnaHQBEmdldE1hcmtldFByb3h5QWRkcgAJAQdnZXRTdHJBAgUIbUFjY0FkZHIFEGtNYXJrZXRQcm94eURhcHABCGdldEVnZ0lkAAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCBQhtQWNjQWRkcgIMRUdHX0FTU0VUX0lEAQ9nZXRTaGFyZUFzc2V0SWQACQDZBAEJAQZnZXRTdHIBBQ1rU2hhcmVBc3NldElkAQVhc0ludAEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACA0ludAQDaW50BQckbWF0Y2gwBQNpbnQJAAIBAhl3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50CQFpAQ1pbml0TWFzdGVyS2V5AQlwdWJsaWNLZXkDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uAwkBAiE9AgUObUFjY1BLZXlTdHJpbmcCAAkAAgECMk1hc3RlciBwdWJsaWMga2V5IGFscmVhZHkgc2V0LCB5b3UgY2FuJ3Qgb3ZlcnJpZGUhCQDMCAIJAQtTdHJpbmdFbnRyeQIFC2tleU1BY2NQS2V5BQlwdWJsaWNLZXkFA25pbAFpAQ1pbml0QmFja3VwS2V5AQlwdWJsaWNLZXkDCQECIT0CCAUBaQZjYWxsZXIJAKcIAQUIbUFjY1BLZXkJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtleUJhY2t1cFBLZXkFCXB1YmxpY0tleQUDbmlsAWkBEmluaXRDb2xsZWN0aXZlRmFybQYEbmFtZRBtaW5pbXVtVGhyZXNob2xkCW1pZ3JhdGlvbhJ0b3RhbEZhcm1pbmdSZXdhcmQOdG90YWxMaXF1aWRpdHkOdG90YWxGYXJtVG9rZW4DCQAAAgUObUFjY1BLZXlTdHJpbmcCAAkAAgECJEZpcnN0IGluaXRpYXRpZSBhIG1hc3RlciBwdWJsaWMga2V5IQMJAQIhPQIIBQFpD2NhbGxlclB1YmxpY0tleQUIbUFjY1BLZXkJAAIBAgJfMQMJAQIhPQIJAQdnZXRCb29sAQUMa0luaXRpYWxpemVkBQR1bml0CQACAQICXzIDAwkAAAIFCW1pZ3JhdGlvbgcDCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudACAreIEBgkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQEIZ2V0RWdnSWQABwkAAgECA18yMAQLc2hhcmVUb2tlbnMDBQltaWdyYXRpb24FDnRvdGFsRmFybVRva2VuAICt4gQECnNoYXJlVG9rZW4JAMIIBQUEbmFtZQkArAICCQCsAgICFFRlYW0gdG9rZW4gZm9yIHRoZSAiBQRuYW1lAhEiIGNvbGxlY3RpdmUgZmFybQULc2hhcmVUb2tlbnMACAYEDHRvdExpcXVpZGl0eQMFCW1pZ3JhdGlvbgUOdG90YWxMaXF1aWRpdHkAgK3iBAQQdG90RmFybWluZ1Jld2FyZAMFCW1pZ3JhdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa1RvdGFsRmFybWluZ1Jld2FyZAUSdG90YWxGYXJtaW5nUmV3YXJkBQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtTaGFyZUFzc2V0SWQJANgEAQkAuAgBBQpzaGFyZVRva2VuCQDMCAIJAQxCb29sZWFuRW50cnkCBQxrSW5pdGlhbGl6ZWQGCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rVG90YWxMaXF1aWRpdHkFDHRvdExpcXVpZGl0eQkAzAgCBQpzaGFyZVRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgULc2hhcmVUb2tlbnMJALgIAQUKc2hhcmVUb2tlbgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0xvY2tlZAcJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tMaXF1aWRpdHlUaHJlc2hvbGQFEG1pbmltdW1UaHJlc2hvbGQFA25pbAUQdG90RmFybWluZ1Jld2FyZAFpAQdzZXRMb2NrAQFzAwkBAiE9AggFAWkPY2FsbGVyUHVibGljS2V5BQhtQWNjUEtleQkAAgECA18yMQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0xvY2tlZAUBcwUDbmlsAWkBD2xvY2tJbnZlc3RtZW50cwADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAh1Zb3UgY2Fubm90IGxvY2sgdGhpcyBjb250cmFjdAkAzAgCCQEMQm9vbGVhbkVudHJ5AgUSa0xvY2tlZEludmVzdG1lbnRzBgUDbmlsAWkBEHByb3ZpZGVMaXF1aWRpdHkAAwkBDGlzTGlxdWlkYXRlZAAJAAIBAhZDUEw6IENGIGlzIGxpcXVpZGF0ZWQhBAplZ2dBc3NldElkCQEIZ2V0RWdnSWQAAwMDCQECIT0CCAUBaQ9jYWxsZXJQdWJsaWNLZXkFCHdBY2NQS2V5CQECIT0CCAUBaQ9jYWxsZXJQdWJsaWNLZXkFCG1BY2NQS2V5BwkAAAIJAQdnZXRCb29sAQUSa0xvY2tlZEludmVzdG1lbnRzBgcJAAIBAllDb250cmFjdCBpcyBsb2NrZWQgZm9yIGludmVzdG1lbnRzIGJ5IGl0J3MgQ0VPLiBQbGVhc2UgaW52ZXN0IGluIGFub3RoZXIgY29sbGVjdGl2ZSBmYXJtLgMJAAACCQEHZ2V0Qm9vbAEFB2tMb2NrZWQGCQACAQIDXzIyAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQplZ2dBc3NldElkCQACAQICXzQDCQBmAgDAhD0ICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQACAQIgTWluIGFtb3VudCB0byBpbnZlc3QgaXMgMC4wMSBFR0cEDnRvdGFsTGlxdWlkaXR5CQEGZ2V0SW50AQUPa1RvdGFsTGlxdWlkaXR5BBFzaGFyZVRva2Vuc1RvR2l2ZQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEDXNoYXJlVG9rZW5zSWQJANkEAQkBBmdldFN0cgEFDWtTaGFyZUFzc2V0SWQEB3JlaXNzdWUJAQdSZWlzc3VlAwkBD2dldFNoYXJlQXNzZXRJZAAFEXNoYXJlVG9rZW5zVG9HaXZlBgQNa1BhcnRpY2lwYXRlZAkArAICCQCsAgICCGFjY291bnRfCQClCAEIBQFpBmNhbGxlcgINX3BhcnRpY2lwYXRlZAQTYWxyZWFkeVBhcnRpY2lwYXRlZAkBB2dldEJvb2wBBQ1rUGFydGljaXBhdGVkCQCUCgIJAMwIAgUHcmVpc3N1ZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFEXNoYXJlVG9rZW5zVG9HaXZlBQ1zaGFyZVRva2Vuc0lkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rVG90YWxMaXF1aWRpdHkJAGQCBQ50b3RhbExpcXVpZGl0eQkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDWtQYXJ0aWNpcGF0ZWQGBQNuaWwFEXNoYXJlVG9rZW5zVG9HaXZlAWkBF2NsYWltRmFybWluZ1Jld2FyZFByb3h5AQNpZHMDCQEMaXNMaXF1aWRhdGVkAAkAAgECGENDRlJQOiBDRiBpcyBsaXF1aWRhdGVkIQMJAQIhPQIIBQFpD2NhbGxlclB1YmxpY0tleQUIbUFjY1BLZXkJAAIBAgNfMjMECmVnZ0Fzc2V0SWQJAQhnZXRFZ2dJZAAEDHNoYXJlQXNzZXRJZAkBD2dldFNoYXJlQXNzZXRJZAAEC2Zhcm1pbmdEYXBwCQERQGV4dHJOYXRpdmUoMTA2MikBCQEHZ2V0U3RyQQIFCG1BY2NBZGRyBQxrRmFybWluZ0RhcHAKAQtjbGFpbVJld2FyZAIFYWNjdW0FbmZ0SWQEBmludlJlcwkA/AcEBQtmYXJtaW5nRGFwcAILY2xhaW1SZXdhcmQJAMwIAgUFbmZ0SWQFA25pbAUDbmlsAwkAAAIFBmludlJlcwUGaW52UmVzBAckbWF0Y2gwBQZpbnZSZXMDCQABAgUHJG1hdGNoMAIDSW50BANpbnQFByRtYXRjaDAJAGQCBQVhY2N1bQUDaW50CQACAQICXzUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EBm5mdElkcwkAtQkCBQNpZHMCATsECmZvbGRSZXN1bHQKAAIkbAUGbmZ0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQtjbGFpbVJld2FyZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQNY2xhaW1lZFJld2FyZAQHJG1hdGNoMAUKZm9sZFJlc3VsdAMJAAECBQckbWF0Y2gwAgNJbnQEA2ludAUHJG1hdGNoMAUDaW50CQACAQICXzYEEnRvdGFsRmFybWluZ1Jld2FyZAkBBmdldEludAEFE2tUb3RhbEZhcm1pbmdSZXdhcmQEDmZhcm1DZW9GZWVTaXplCQBrAwUNY2xhaW1lZFJld2FyZAUKZmVlUGVyY2VudABkBA1jdXJyZW50Q2VvRmVlCQEGZ2V0SW50AQUQa0Nlb0NvbGxlY3RlZEZlZQQNY2VvRmVlT3ZlcmFsbAkBBmdldEludAEFF2tDZW9Db2xsZWN0ZWRGZWVPdmVyYWxsBAthbW91bnRUb1BheQkAZQIFDWNsYWltZWRSZXdhcmQFDmZhcm1DZW9GZWVTaXplBAV0b3BVcAkA/AcEBQ5zdGFraW5nQWRkcmVzcwILdG9wVXBSZXdhcmQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKZWdnQXNzZXRJZAULYW1vdW50VG9QYXkFA25pbAMJAAACBQV0b3BVcAUFdG9wVXAJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tUb3RhbEZhcm1pbmdSZXdhcmQJAGQCBRJ0b3RhbEZhcm1pbmdSZXdhcmQFC2Ftb3VudFRvUGF5CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrQ2VvQ29sbGVjdGVkRmVlCQBkAgUNY3VycmVudENlb0ZlZQUOZmFybUNlb0ZlZVNpemUJAMwIAgkBDEludGVnZXJFbnRyeQIFF2tDZW9Db2xsZWN0ZWRGZWVPdmVyYWxsCQBkAgUNY2VvRmVlT3ZlcmFsbAUOZmFybUNlb0ZlZVNpemUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtjbGFpbUNlb0ZlZQQIYWRkcmVzczEIYWRkcmVzczINYWRkcmVzczFTaGFyZQ1hZGRyZXNzMlNoYXJlAwkBDGlzTGlxdWlkYXRlZAAJAAIBAhdDQ0NGOiBDRiBpcyBsaXF1aWRhdGVkIQMJAGYCAAAFDWFkZHJlc3MxU2hhcmUJAAIBAhlTaGFyZSAxIGNhbid0IGJlIG5lZ2F0aXZlAwkAZgIAAAUNYWRkcmVzczJTaGFyZQkAAgECGVNoYXJlIDIgY2FuJ3QgYmUgbmVnYXRpdmUDCQECIT0CCQBkAgUNYWRkcmVzczFTaGFyZQUNYWRkcmVzczJTaGFyZQBkCQACAQIbU3VtIG9mIHNoYXJlcyBzaG91bGQgYmUgMTAwAwkAAAIJAQdnZXRCb29sAQUHa0xvY2tlZAYJAAIBAgNfMjIDCQAAAggFAWkGY2FsbGVyBQR0aGlzBBZjdXJyZW50Q2VvQ29sbGVjdGVkRmVlCQEGZ2V0SW50AQUQa0Nlb0NvbGxlY3RlZEZlZQQOYWRkcmVzczFSZXdhcmQDCQAAAgUIYWRkcmVzczICAAUWY3VycmVudENlb0NvbGxlY3RlZEZlZQkAawMFFmN1cnJlbnRDZW9Db2xsZWN0ZWRGZWUFDWFkZHJlc3MxU2hhcmUAZAQOYWRkcmVzczJSZXdhcmQDCQAAAgUIYWRkcmVzczICAAAACQBrAwUWY3VycmVudENlb0NvbGxlY3RlZEZlZQUNYWRkcmVzczJTaGFyZQBkBBZzY3JpcHRUcmFuc2ZlckFkZHJlc3MyAwkAAAIFCGFkZHJlc3MyAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQhhZGRyZXNzMgUOYWRkcmVzczJSZXdhcmQJAQhnZXRFZ2dJZAAFA25pbAkAzggCBRZzY3JpcHRUcmFuc2ZlckFkZHJlc3MyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCGFkZHJlc3MxBQ5hZGRyZXNzMVJld2FyZAkBCGdldEVnZ0lkAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa0Nlb0NvbGxlY3RlZEZlZQAABQNuaWwJAAIBAiJPbmx5IG1hbmFnZXIgY2FuIGNhbGwgdGhlIGNvbnRyYWN0AWkBEGNhbGxVbnN0YWtlUHJveHkCCGZ1bmN0aW9uB2Fzc2V0SWQDCQEMaXNMaXF1aWRhdGVkAAkAAgECF0NDVVA6IENGIGlzIGxpcXVpZGF0ZWQhAwkAAAIJAQdnZXRCb29sAQUHa0xvY2tlZAYJAAIBAhZDb250cmFjdCBpcyBsb2NrZWQgbm93AwMJAQIhPQIFCGZ1bmN0aW9uAgp1bnN0YWtlTkZUCQECIT0CBQhmdW5jdGlvbgIOdW5zdGFrZUphY2twb3QHCQACAQIRQmFkIGZ1bmN0aW9uIG5hbWUDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAiFDYW4gYmUgY2FsbGVkIG9ubHkgYnkgdGhlIGFjY291bnQECmVnZ0Fzc2V0SWQJAQhnZXRFZ2dJZAAEDHNoYXJlQXNzZXRJZAkBD2dldFNoYXJlQXNzZXRJZAAEEmZhcm1pbmdEYXBwQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBB2dldFN0ckECBQhtQWNjQWRkcgIMRkFSTUlOR19EQVBQBA51bnN0YWtlZFJld2FyZAkA/AcEBRJmYXJtaW5nRGFwcEFkZHJlc3MFCGZ1bmN0aW9uCQDMCAIFB2Fzc2V0SWQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdADAhD0FA25pbAMJAAACBQ51bnN0YWtlZFJld2FyZAUOdW5zdGFrZWRSZXdhcmQEBnJld2FyZAQHJG1hdGNoMAUOdW5zdGFrZWRSZXdhcmQDCQABAgUHJG1hdGNoMAIDSW50BANpbnQFByRtYXRjaDAFA2ludAkAAgECFkVycm9yIGR1cmluZyB1bnN0YWtpbmcEDWN1cnJlbnRDZW9GZWUJAQZnZXRJbnQBBRBrQ2VvQ29sbGVjdGVkRmVlBA1jZW9GZWVPdmVyYWxsCQEGZ2V0SW50AQUXa0Nlb0NvbGxlY3RlZEZlZU92ZXJhbGwEDmZhcm1DZW9GZWVTaXplCQBrAwUGcmV3YXJkBQpmZWVQZXJjZW50AGQEC2Ftb3VudFRvUGF5CQBlAgUGcmV3YXJkBQ5mYXJtQ2VvRmVlU2l6ZQQFdG9wVXAJAPwHBAUOc3Rha2luZ0FkZHJlc3MCC3RvcFVwUmV3YXJkBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCmVnZ0Fzc2V0SWQFC2Ftb3VudFRvUGF5BQNuaWwDCQAAAgUFdG9wVXAFBXRvcFVwCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrQ2VvQ29sbGVjdGVkRmVlCQBkAgUNY3VycmVudENlb0ZlZQUOZmFybUNlb0ZlZVNpemUJAMwIAgkBDEludGVnZXJFbnRyeQIFF2tDZW9Db2xsZWN0ZWRGZWVPdmVyYWxsCQBkAgUNY2VvRmVlT3ZlcmFsbAUOZmFybUNlb0ZlZVNpemUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAEDGNoZWNrU3RhcnRlZAkAZwIJAQZnZXRJbnQBBQ9rVG90YWxMaXF1aWRpdHkJAQZnZXRJbnQBBRNrTGlxdWlkaXR5VGhyZXNob2xkBAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAhdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgQDaW52BQckbWF0Y2gwBBRhY2NlcHRlZENhbGxzU3Rha2luZwkAzAgCAg9zdGFrZUZhcm1Ub2tlbnMJAMwIAgILY2xhaW1SZXdhcmQJAMwIAgISd2l0aGRyYXdGYXJtVG9rZW5zCQDMCAICD3ZvdGVUb0xpcXVpZGF0ZQUDbmlsBBFhY2NlcHRlZENhbGxzVGhpcwkAzAgCAhBjYWxsVW5zdGFrZVByb3h5CQDMCAICC2NsYWltQ2VvRmVlCQDMCAICD2xvY2tJbnZlc3RtZW50cwkAzAgCAhF1bmxvY2tJbnZlc3RtZW50cwUDbmlsAwMDCQAAAggFA2ludghmdW5jdGlvbgIKdW5zdGFrZU5GVAYJAAACCAUDaW52CGZ1bmN0aW9uAg51bnN0YWtlSmFja3BvdAkAAAIJAKQIAQgFA2ludgRkQXBwCQERQGV4dHJOYXRpdmUoMTA2MikBCQEHZ2V0U3RyQQIFCG1BY2NBZGRyAgxGQVJNSU5HX0RBUFAHCQACAQIoWW91IGNhbm5vdCBjYWxsIHRoZXNlIGZ1bmN0aW9ucyBkaXJlY3RseQMDAwkAAAIJAKQIAQgFA2ludgRkQXBwBQR0aGlzCQAAAggFA2ludghmdW5jdGlvbgINaW5pdE1hc3RlcktleQcJAAACBQ5tQWNjUEtleVN0cmluZwIABwMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkGCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQEMZ2V0QmFja3VwS2V5AAMDCQAAAgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQcJAAACCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQEMZ2V0QmFja3VwS2V5AAcHCQACAQIEXzEwMAMJAAACBQxjaGVja1N0YXJ0ZWQHCQACAQIDXzE0AwkAAAIJAQdnZXRCb29sAQUHa0xvY2tlZAYJAAIBAgNfMjIDAwkAZgIIBQNpbnYDZmVlAKD3NgYJAQIhPQIIBQNpbnYKZmVlQXNzZXRJZAUEdW5pdAkAAgECEF8xNTogdG8gbXVjaCBmZWUDCQBmAgkAkAMBCAUDaW52CHBheW1lbnRzAAQJAAIBAhhfMTc6IHRvIGJpZyBwYXltZW50IHNpemUDAwkAAAIJAKQIAQgFA2ludgRkQXBwBQR0aGlzCQEPY29udGFpbnNFbGVtZW50AgURYWNjZXB0ZWRDYWxsc1RoaXMIBQNpbnYIZnVuY3Rpb24HAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQYJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJAQxnZXRCYWNrdXBLZXkAAwMJAAACCQCkCAEIBQNpbnYEZEFwcAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEmdldE1hcmtldFByb3h5QWRkcgAJAAACCAUDaW52CGZ1bmN0aW9uAhRjYWxsTWFya2V0cGxhY2VQcm94eQcDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5BgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkBDGdldEJhY2t1cEtleQADAwkAAAIJAKQIAQgFA2ludgRkQXBwBQ5zdGFraW5nQWRkcmVzcwkBD2NvbnRhaW5zRWxlbWVudAIFFGFjY2VwdGVkQ2FsbHNTdGFraW5nCAUDaW52CGZ1bmN0aW9uBwMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkGCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQEMZ2V0QmFja3VwS2V5AAQKZGFwcFRvQ2FsbAkApQgBCQCkCAEIBQNpbnYEZEFwcAQPYWxsb3dlZENvbnRyYWN0CQEHZ2V0U3RyQQIFCG1BY2NBZGRyCQCsAgICEWFsbG93ZWRfY29udHJhY3RfBQpkYXBwVG9DYWxsAwMJAAACBQ9hbGxvd2VkQ29udHJhY3QCB0ZBUk1JTkcJAAACCAUDaW52CGZ1bmN0aW9uAgtjbGFpbVJld2FyZAcHCQECIT0CBQ9hbGxvd2VkQ29udHJhY3QCAAMJAAECBQckbWF0Y2gwAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCc3MFByRtYXRjaDAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFCG1BY2NQS2V5AwkAAQIFByRtYXRjaDACF01hc3NUcmFuc2ZlclRyYW5zYWN0aW9uBAJtdAUHJG1hdGNoMAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUIbUFjY1BLZXkHKTy0jQ==", "height": 3970740, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3Z11nNvJBV7Nk6iUa8yhcBJy6QLXDLjBF77nCqQxNfx2 Next: none Diff:
OldNewDifferences
193193 func lockInvestments () = if ((i.caller != this))
194194 then throw("You cannot lock this contract")
195195 else [BooleanEntry(kLockedInvestments, true)]
196-
197-
198-
199-@Callable(i)
200-func unlockInvestments () = if ((i.caller != this))
201- then throw("You cannot lock this contract")
202- else [BooleanEntry(kLockedInvestments, false)]
203196
204197
205198
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let keyMAccPKey = "master_pk"
55
66 let keyBackupPKey = "back_pk"
77
88 let warsPKey = "wars_pk"
99
1010 func getStr (key) = match getString(this, key) {
1111 case b: String =>
1212 b
1313 case _ =>
1414 ""
1515 }
1616
1717
1818 let mAccPKeyString = getStr(keyMAccPKey)
1919
2020 let backupPKeyString = getStr(keyBackupPKey)
2121
2222 func getBackupKey () = if ((backupPKeyString == ""))
2323 then this.bytes
2424 else fromBase58String(backupPKeyString)
2525
2626
2727 let mAccPKey = fromBase58String(mAccPKeyString)
2828
2929 let mAccAddr = addressFromPublicKey(mAccPKey)
3030
3131 let feePercent = getIntegerValue(mAccAddr, (("f_" + toString(this)) + "_fee"))
3232
3333 let stakingAddress = addressFromStringValue(valueOrErrorMessage(getString(mAccAddr, (("f_" + toString(this)) + "_stake_address")), (("f_" + toString(this)) + "_stake_address not defined")))
3434
3535 let wAccPKey = fromBase58String(valueOrErrorMessage(getString(mAccAddr, warsPKey), (warsPKey + " not defined")))
3636
3737 let kTotalLiquidity = "total_liquidity"
3838
3939 let kInitialized = "INITIALIZED"
4040
4141 let kLiquidityThreshold = "LIQUIDITY_THRESHOLD"
4242
4343 let kTotalFarmingReward = "total_farming_reward"
4444
4545 let kShareAssetId = "SHARE_ASSET_ID"
4646
4747 let kIncubatorDapp = "INCUBATOR_DAPP"
4848
4949 let kBreederDapp = "BREEDER_DAPP"
5050
5151 let kFarmingDapp = "FARMING_DAPP"
5252
5353 let kMarketProxyDapp = "MARKETPLACE_PROXY_DAPP"
5454
5555 let kAuctionDapp = "AUCTION_DAPP"
5656
5757 let kLocked = "LOCKED"
5858
5959 let kCeoCollectedFee = "ceo_collected_fee"
6060
6161 let kCeoCollectedFeeOverall = "ceo_fee_overall"
6262
6363 let kLockedInvestments = "locked_investments"
6464
6565 let keyTotalCompound = "total_compound"
6666
6767 let keyGlobalStaked = "global_staked"
6868
6969 func getInt (key) = match getInteger(this, key) {
7070 case b: Int =>
7171 b
7272 case _ =>
7373 0
7474 }
7575
7676
7777 func getBool (key) = match getBoolean(this, key) {
7878 case b: Boolean =>
7979 b
8080 case _ =>
8181 unit
8282 }
8383
8484
8585 func getStrA (a,k) = match getString(a, k) {
8686 case b: String =>
8787 b
8888 case _ =>
8989 ""
9090 }
9191
9292
9393 func tryGetBoolean (a,key) = match getBoolean(a, key) {
9494 case b: Boolean =>
9595 b
9696 case _ =>
9797 false
9898 }
9999
100100
101101 func getIntA (address,key) = match getInteger(address, key) {
102102 case b: Int =>
103103 b
104104 case _ =>
105105 0
106106 }
107107
108108
109109 func getVoteHeightKey () = "VOTE_HEIGHT_START"
110110
111111
112112 func resultVoteKey (height) = ("LIQUIDATED_" + height)
113113
114114
115115 func isLiquidated () = {
116116 let voteHeight = getIntA(stakingAddress, getVoteHeightKey())
117117 if ((voteHeight == 0))
118118 then false
119119 else tryGetBoolean(stakingAddress, resultVoteKey(toString(voteHeight)))
120120 }
121121
122122
123123 func getMarketProxyAddr () = getStrA(mAccAddr, kMarketProxyDapp)
124124
125125
126126 func getEggId () = fromBase58String(getStringValue(mAccAddr, "EGG_ASSET_ID"))
127127
128128
129129 func getShareAssetId () = fromBase58String(getStr(kShareAssetId))
130130
131131
132132 func asInt (value) = match value {
133133 case int: Int =>
134134 int
135135 case _ =>
136136 throw("wrong type, expected: Int")
137137 }
138138
139139
140140 @Callable(i)
141141 func initMasterKey (publicKey) = if ((i.caller != this))
142142 then throw("You cannot do this action")
143143 else if ((mAccPKeyString != ""))
144144 then throw("Master public key already set, you can't override!")
145145 else [StringEntry(keyMAccPKey, publicKey)]
146146
147147
148148
149149 @Callable(i)
150150 func initBackupKey (publicKey) = if ((i.caller != addressFromPublicKey(mAccPKey)))
151151 then throw("You cannot do this action")
152152 else [StringEntry(keyBackupPKey, publicKey)]
153153
154154
155155
156156 @Callable(i)
157157 func initCollectiveFarm (name,minimumThreshold,migration,totalFarmingReward,totalLiquidity,totalFarmToken) = if ((mAccPKeyString == ""))
158158 then throw("First initiatie a master public key!")
159159 else if ((i.callerPublicKey != mAccPKey))
160160 then throw("_1")
161161 else if ((getBool(kInitialized) != unit))
162162 then throw("_2")
163163 else if (if ((migration == false))
164164 then if ((i.payments[0].amount != 10000000))
165165 then true
166166 else (i.payments[0].assetId != getEggId())
167167 else false)
168168 then throw("_20")
169169 else {
170170 let shareTokens = if (migration)
171171 then totalFarmToken
172172 else 10000000
173173 let shareToken = Issue(name, (("Team token for the \"" + name) + "\" collective farm"), shareTokens, 8, true)
174174 let totLiquidity = if (migration)
175175 then totalLiquidity
176176 else 10000000
177177 let totFarmingReward = if (migration)
178178 then [IntegerEntry(kTotalFarmingReward, totalFarmingReward)]
179179 else nil
180180 ([StringEntry(kShareAssetId, toBase58String(calculateAssetId(shareToken))), BooleanEntry(kInitialized, true), IntegerEntry(kTotalLiquidity, totLiquidity), shareToken, ScriptTransfer(i.caller, shareTokens, calculateAssetId(shareToken)), BooleanEntry(kLocked, false), IntegerEntry(kLiquidityThreshold, minimumThreshold)] ++ totFarmingReward)
181181 }
182182
183183
184184
185185 @Callable(i)
186186 func setLock (s) = if ((i.callerPublicKey != mAccPKey))
187187 then throw("_21")
188188 else [BooleanEntry(kLocked, s)]
189189
190190
191191
192192 @Callable(i)
193193 func lockInvestments () = if ((i.caller != this))
194194 then throw("You cannot lock this contract")
195195 else [BooleanEntry(kLockedInvestments, true)]
196-
197-
198-
199-@Callable(i)
200-func unlockInvestments () = if ((i.caller != this))
201- then throw("You cannot lock this contract")
202- else [BooleanEntry(kLockedInvestments, false)]
203196
204197
205198
206199 @Callable(i)
207200 func provideLiquidity () = if (isLiquidated())
208201 then throw("CPL: CF is liquidated!")
209202 else {
210203 let eggAssetId = getEggId()
211204 if (if (if ((i.callerPublicKey != wAccPKey))
212205 then (i.callerPublicKey != mAccPKey)
213206 else false)
214207 then (getBool(kLockedInvestments) == true)
215208 else false)
216209 then throw("Contract is locked for investments by it's CEO. Please invest in another collective farm.")
217210 else if ((getBool(kLocked) == true))
218211 then throw("_22")
219212 else if ((i.payments[0].assetId != eggAssetId))
220213 then throw("_4")
221214 else if ((1000000 > i.payments[0].amount))
222215 then throw("Min amount to invest is 0.01 EGG")
223216 else {
224217 let totalLiquidity = getInt(kTotalLiquidity)
225218 let shareTokensToGive = i.payments[0].amount
226219 let shareTokensId = fromBase58String(getStr(kShareAssetId))
227220 let reissue = Reissue(getShareAssetId(), shareTokensToGive, true)
228221 let kParticipated = (("account_" + toString(i.caller)) + "_participated")
229222 let alreadyParticipated = getBool(kParticipated)
230223 $Tuple2([reissue, ScriptTransfer(i.caller, shareTokensToGive, shareTokensId), IntegerEntry(kTotalLiquidity, (totalLiquidity + value(i.payments[0].amount))), BooleanEntry(kParticipated, true)], shareTokensToGive)
231224 }
232225 }
233226
234227
235228
236229 @Callable(i)
237230 func claimFarmingRewardProxy (ids) = if (isLiquidated())
238231 then throw("CCFRP: CF is liquidated!")
239232 else if ((i.callerPublicKey != mAccPKey))
240233 then throw("_23")
241234 else {
242235 let eggAssetId = getEggId()
243236 let shareAssetId = getShareAssetId()
244237 let farmingDapp = addressFromStringValue(getStrA(mAccAddr, kFarmingDapp))
245238 func claimReward (accum,nftId) = {
246239 let invRes = invoke(farmingDapp, "claimReward", [nftId], nil)
247240 if ((invRes == invRes))
248241 then match invRes {
249242 case int: Int =>
250243 (accum + int)
251244 case _ =>
252245 throw("_5")
253246 }
254247 else throw("Strict value is not equal to itself.")
255248 }
256249
257250 let nftIds = split(ids, ";")
258251 let foldResult = {
259252 let $l = nftIds
260253 let $s = size($l)
261254 let $acc0 = 0
262255 func $f0_1 ($a,$i) = if (($i >= $s))
263256 then $a
264257 else claimReward($a, $l[$i])
265258
266259 func $f0_2 ($a,$i) = if (($i >= $s))
267260 then $a
268261 else throw("List size exceeds 10")
269262
270263 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
271264 }
272265 let claimedReward = match foldResult {
273266 case int: Int =>
274267 int
275268 case _ =>
276269 throw("_6")
277270 }
278271 let totalFarmingReward = getInt(kTotalFarmingReward)
279272 let farmCeoFeeSize = fraction(claimedReward, feePercent, 100)
280273 let currentCeoFee = getInt(kCeoCollectedFee)
281274 let ceoFeeOverall = getInt(kCeoCollectedFeeOverall)
282275 let amountToPay = (claimedReward - farmCeoFeeSize)
283276 let topUp = invoke(stakingAddress, "topUpReward", nil, [AttachedPayment(eggAssetId, amountToPay)])
284277 if ((topUp == topUp))
285278 then [IntegerEntry(kTotalFarmingReward, (totalFarmingReward + amountToPay)), IntegerEntry(kCeoCollectedFee, (currentCeoFee + farmCeoFeeSize)), IntegerEntry(kCeoCollectedFeeOverall, (ceoFeeOverall + farmCeoFeeSize))]
286279 else throw("Strict value is not equal to itself.")
287280 }
288281
289282
290283
291284 @Callable(i)
292285 func claimCeoFee (address1,address2,address1Share,address2Share) = if (isLiquidated())
293286 then throw("CCCF: CF is liquidated!")
294287 else if ((0 > address1Share))
295288 then throw("Share 1 can't be negative")
296289 else if ((0 > address2Share))
297290 then throw("Share 2 can't be negative")
298291 else if (((address1Share + address2Share) != 100))
299292 then throw("Sum of shares should be 100")
300293 else if ((getBool(kLocked) == true))
301294 then throw("_22")
302295 else if ((i.caller == this))
303296 then {
304297 let currentCeoCollectedFee = getInt(kCeoCollectedFee)
305298 let address1Reward = if ((address2 == ""))
306299 then currentCeoCollectedFee
307300 else fraction(currentCeoCollectedFee, address1Share, 100)
308301 let address2Reward = if ((address2 == ""))
309302 then 0
310303 else fraction(currentCeoCollectedFee, address2Share, 100)
311304 let scriptTransferAddress2 = if ((address2 == ""))
312305 then nil
313306 else [ScriptTransfer(addressFromStringValue(address2), address2Reward, getEggId())]
314307 (scriptTransferAddress2 ++ [ScriptTransfer(addressFromStringValue(address1), address1Reward, getEggId()), IntegerEntry(kCeoCollectedFee, 0)])
315308 }
316309 else throw("Only manager can call the contract")
317310
318311
319312
320313 @Callable(i)
321314 func callUnstakeProxy (function,assetId) = if (isLiquidated())
322315 then throw("CCUP: CF is liquidated!")
323316 else if ((getBool(kLocked) == true))
324317 then throw("Contract is locked now")
325318 else if (if ((function != "unstakeNFT"))
326319 then (function != "unstakeJackpot")
327320 else false)
328321 then throw("Bad function name")
329322 else if ((i.caller != this))
330323 then throw("Can be called only by the account")
331324 else {
332325 let eggAssetId = getEggId()
333326 let shareAssetId = getShareAssetId()
334327 let farmingDappAddress = addressFromStringValue(getStrA(mAccAddr, "FARMING_DAPP"))
335328 let unstakedReward = invoke(farmingDappAddress, function, [assetId], [AttachedPayment(unit, 1000000)])
336329 if ((unstakedReward == unstakedReward))
337330 then {
338331 let reward = match unstakedReward {
339332 case int: Int =>
340333 int
341334 case _ =>
342335 throw("Error during unstaking")
343336 }
344337 let currentCeoFee = getInt(kCeoCollectedFee)
345338 let ceoFeeOverall = getInt(kCeoCollectedFeeOverall)
346339 let farmCeoFeeSize = fraction(reward, feePercent, 100)
347340 let amountToPay = (reward - farmCeoFeeSize)
348341 let topUp = invoke(stakingAddress, "topUpReward", nil, [AttachedPayment(eggAssetId, amountToPay)])
349342 if ((topUp == topUp))
350343 then [IntegerEntry(kCeoCollectedFee, (currentCeoFee + farmCeoFeeSize)), IntegerEntry(kCeoCollectedFeeOverall, (ceoFeeOverall + farmCeoFeeSize))]
351344 else throw("Strict value is not equal to itself.")
352345 }
353346 else throw("Strict value is not equal to itself.")
354347 }
355348
356349
357350 @Verifier(tx)
358351 func verify () = {
359352 let checkStarted = (getInt(kTotalLiquidity) >= getInt(kLiquidityThreshold))
360353 match tx {
361354 case inv: InvokeScriptTransaction =>
362355 let acceptedCallsStaking = ["stakeFarmTokens", "claimReward", "withdrawFarmTokens", "voteToLiquidate"]
363356 let acceptedCallsThis = ["callUnstakeProxy", "claimCeoFee", "lockInvestments", "unlockInvestments"]
364357 if (if (if ((inv.function == "unstakeNFT"))
365358 then true
366359 else (inv.function == "unstakeJackpot"))
367360 then (addressFromRecipient(inv.dApp) == addressFromStringValue(getStrA(mAccAddr, "FARMING_DAPP")))
368361 else false)
369362 then throw("You cannot call these functions directly")
370363 else if (if (if ((addressFromRecipient(inv.dApp) == this))
371364 then (inv.function == "initMasterKey")
372365 else false)
373366 then (mAccPKeyString == "")
374367 else false)
375368 then if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
376369 then true
377370 else sigVerify(tx.bodyBytes, tx.proofs[0], getBackupKey())
378371 else if (if ((sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) == false))
379372 then (sigVerify(tx.bodyBytes, tx.proofs[0], getBackupKey()) == false)
380373 else false)
381374 then throw("_100")
382375 else if ((checkStarted == false))
383376 then throw("_14")
384377 else if ((getBool(kLocked) == true))
385378 then throw("_22")
386379 else if (if ((inv.fee > 900000))
387380 then true
388381 else (inv.feeAssetId != unit))
389382 then throw("_15: to much fee")
390383 else if ((size(inv.payments) > 4))
391384 then throw("_17: to big payment size")
392385 else if (if ((addressFromRecipient(inv.dApp) == this))
393386 then containsElement(acceptedCallsThis, inv.function)
394387 else false)
395388 then if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
396389 then true
397390 else sigVerify(tx.bodyBytes, tx.proofs[0], getBackupKey())
398391 else if (if ((addressFromRecipient(inv.dApp) == addressFromStringValue(getMarketProxyAddr())))
399392 then (inv.function == "callMarketplaceProxy")
400393 else false)
401394 then if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
402395 then true
403396 else sigVerify(tx.bodyBytes, tx.proofs[0], getBackupKey())
404397 else if (if ((addressFromRecipient(inv.dApp) == stakingAddress))
405398 then containsElement(acceptedCallsStaking, inv.function)
406399 else false)
407400 then if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
408401 then true
409402 else sigVerify(tx.bodyBytes, tx.proofs[0], getBackupKey())
410403 else {
411404 let dappToCall = toString(addressFromRecipient(inv.dApp))
412405 let allowedContract = getStrA(mAccAddr, ("allowed_contract_" + dappToCall))
413406 if (if ((allowedContract == "FARMING"))
414407 then (inv.function == "claimReward")
415408 else false)
416409 then false
417410 else (allowedContract != "")
418411 }
419412 case ss: SetScriptTransaction =>
420413 sigVerify(tx.bodyBytes, tx.proofs[0], mAccPKey)
421414 case mt: MassTransferTransaction =>
422415 sigVerify(tx.bodyBytes, tx.proofs[0], mAccPKey)
423416 case _ =>
424417 false
425418 }
426419 }
427420

github/deemru/w8io/786bc32 
40.15 ms