2022.06.16 22:26 [3164970] smart account 3PBTV3MEiBKkHN2o6ax6J5J9N6qVtKZkSLm > SELF 0.00000000 Waves

{ "type": 13, "id": "FZ4aFTCWApWuv5RS2SvMTQX5xhdTV4fLGuH38Y5s6mHC", "fee": 1500000, "feeAssetId": null, "timestamp": 1655407573787, "version": 2, "chainId": 87, "sender": "3PBTV3MEiBKkHN2o6ax6J5J9N6qVtKZkSLm", "senderPublicKey": "EcKCcsk5PAHBooJDcpRArc62SebSxF9AfbtqWpivK5SF", "proofs": [ "5hSK9gMCUcuKFNf8Tz6ERVnah1faQnDh6RTmTpugdtwcm9Avh21GPU43E7fjnMM7TqZymLkuvTrPmtwn368h8fzM" ], "script": "base64:AAIFAAAAAAAAAD4IAhIDCgEIEgMKAQESCAoGCAEEAQEBEgMKAQQSABIAEgASAwoBCBIGCgQICAEBEgMKAQgSAwoBCBIECgIICAAAACQAAAAAC2tleU1BY2NQS2V5AgAAAAltYXN0ZXJfcGsAAAAADWtleUJhY2t1cFBLZXkCAAAAB2JhY2tfcGsAAAAACHdhcnNQS2V5AgAAAAd3YXJzX3BrAQAAAAZnZXRTdHIAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgIAAAAAAAAAAA5tQWNjUEtleVN0cmluZwkBAAAABmdldFN0cgAAAAEFAAAAC2tleU1BY2NQS2V5AAAAABBiYWNrdXBQS2V5U3RyaW5nCQEAAAAGZ2V0U3RyAAAAAQUAAAANa2V5QmFja3VwUEtleQEAAAAMZ2V0QmFja3VwS2V5AAAAAAMJAAAAAAAAAgUAAAAQYmFja3VwUEtleVN0cmluZwIAAAAACAUAAAAEdGhpcwAAAAVieXRlcwkAAlkAAAABBQAAABBiYWNrdXBQS2V5U3RyaW5nAAAAAAhtQWNjUEtleQkAAlkAAAABBQAAAA5tQWNjUEtleVN0cmluZwAAAAAIbUFjY0FkZHIJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAACG1BY2NQS2V5AAAAAApmZWVQZXJjZW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAhtQWNjQWRkcgkAASwAAAACCQABLAAAAAICAAAAAmZfCQAEJQAAAAEFAAAABHRoaXMCAAAABF9mZWUAAAAADnN0YWtpbmdBZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAIbUFjY0FkZHIJAAEsAAAAAgkAASwAAAACAgAAAAJmXwkABCUAAAABBQAAAAR0aGlzAgAAAA5fc3Rha2VfYWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAAAmZfCQAEJQAAAAEFAAAABHRoaXMCAAAAGl9zdGFrZV9hZGRyZXNzIG5vdCBkZWZpbmVkAAAAAAh3QWNjUEtleQkAAlkAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAIbUFjY0FkZHIFAAAACHdhcnNQS2V5CQABLAAAAAIFAAAACHdhcnNQS2V5AgAAAAwgbm90IGRlZmluZWQAAAAAD2tUb3RhbExpcXVpZGl0eQIAAAAPdG90YWxfbGlxdWlkaXR5AAAAAAxrSW5pdGlhbGl6ZWQCAAAAC0lOSVRJQUxJWkVEAAAAABNrTGlxdWlkaXR5VGhyZXNob2xkAgAAABNMSVFVSURJVFlfVEhSRVNIT0xEAAAAABNrVG90YWxGYXJtaW5nUmV3YXJkAgAAABR0b3RhbF9mYXJtaW5nX3Jld2FyZAAAAAANa1NoYXJlQXNzZXRJZAIAAAAOU0hBUkVfQVNTRVRfSUQAAAAADmtJbmN1YmF0b3JEYXBwAgAAAA5JTkNVQkFUT1JfREFQUAAAAAAMa0JyZWVkZXJEYXBwAgAAAAxCUkVFREVSX0RBUFAAAAAADGtGYXJtaW5nRGFwcAIAAAAMRkFSTUlOR19EQVBQAAAAABBrTWFya2V0UHJveHlEYXBwAgAAABZNQVJLRVRQTEFDRV9QUk9YWV9EQVBQAAAAAAxrQXVjdGlvbkRhcHACAAAADEFVQ1RJT05fREFQUAAAAAAHa0xvY2tlZAIAAAAGTE9DS0VEAAAAABBrQ2VvQ29sbGVjdGVkRmVlAgAAABFjZW9fY29sbGVjdGVkX2ZlZQAAAAAXa0Nlb0NvbGxlY3RlZEZlZU92ZXJhbGwCAAAAD2Nlb19mZWVfb3ZlcmFsbAAAAAASa0xvY2tlZEludmVzdG1lbnRzAgAAABJsb2NrZWRfaW52ZXN0bWVudHMAAAAAEGtleVRvdGFsQ29tcG91bmQCAAAADnRvdGFsX2NvbXBvdW5kAAAAAA9rZXlHbG9iYWxTdGFrZWQCAAAADWdsb2JhbF9zdGFrZWQBAAAABmdldEludAAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAAAAAAAAAAAAAQAAAAdnZXRCb29sAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiBQAAAAR1bml0AQAAAAdnZXRTdHJBAAAAAgAAAAFhAAAAAWsEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAABYQUAAAABawMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAgAAAAABAAAAB2dldEludEEAAAACAAAAB2FkZHJlc3MAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAAAAAAAAAAAAAQAAABJnZXRNYXJrZXRQcm94eUFkZHIAAAAACQEAAAAHZ2V0U3RyQQAAAAIFAAAACG1BY2NBZGRyBQAAABBrTWFya2V0UHJveHlEYXBwAQAAAAhnZXRFZ2dJZAAAAAAJAAJZAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAIbUFjY0FkZHICAAAADEVHR19BU1NFVF9JRAEAAAAPZ2V0U2hhcmVBc3NldElkAAAAAAkAAlkAAAABCQEAAAAGZ2V0U3RyAAAAAQUAAAANa1NoYXJlQXNzZXRJZAEAAAAFYXNJbnQAAAABAAAABXZhbHVlBAAAAAckbWF0Y2gwBQAAAAV2YWx1ZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAANpbnQFAAAAByRtYXRjaDAFAAAAA2ludAkAAAIAAAABAgAAABl3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50AAAADAAAAAFpAQAAAA1pbml0TWFzdGVyS2V5AAAAAQAAAAlwdWJsaWNLZXkDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAZWW91IGNhbm5vdCBkbyB0aGlzIGFjdGlvbgMJAQAAAAIhPQAAAAIFAAAADm1BY2NQS2V5U3RyaW5nAgAAAAAJAAACAAAAAQIAAAAyTWFzdGVyIHB1YmxpYyBrZXkgYWxyZWFkeSBzZXQsIHlvdSBjYW4ndCBvdmVycmlkZSEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAALa2V5TUFjY1BLZXkFAAAACXB1YmxpY0tleQUAAAADbmlsAAAAAWkBAAAAHmNhbGN1bGF0ZUNvbXBvdW5kU2hhcmVBbmRJc3N1ZQAAAAEAAAAGYW1vdW50AwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAGVlvdSBjYW5ub3QgZG8gdGhpcyBhY3Rpb24DCQAAAAAAAAIJAQAAAAdnZXRCb29sAAAAAQUAAAASa0xvY2tlZEludmVzdG1lbnRzBgkABRQAAAACBQAAAANuaWwAAAAAAAAAAAAEAAAADHNoYXJlQXNzZXRJZAkBAAAAD2dldFNoYXJlQXNzZXRJZAAAAAAEAAAADXRvdGFsQ29tcG91bmQJAQAAAAdnZXRJbnRBAAAAAgUAAAAOc3Rha2luZ0FkZHJlc3MFAAAAEGtleVRvdGFsQ29tcG91bmQEAAAAC3RvdGFsU3Rha2VkCQEAAAAHZ2V0SW50QQAAAAIFAAAADnN0YWtpbmdBZGRyZXNzBQAAAA9rZXlHbG9iYWxTdGFrZWQEAAAAC3RvdGFsTG9ja2VkCQAAZAAAAAIFAAAAC3RvdGFsU3Rha2VkBQAAAA10b3RhbENvbXBvdW5kBAAAABFhbW91bnRGb3JDb21wb3VuZAkAAGsAAAADBQAAAAZhbW91bnQFAAAADXRvdGFsQ29tcG91bmQFAAAAC3RvdGFsTG9ja2VkCQAFFAAAAAIJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZUFzc2V0SWQFAAAAEWFtb3VudEZvckNvbXBvdW5kBgUAAAADbmlsBQAAABFhbW91bnRGb3JDb21wb3VuZAAAAAFpAQAAABJpbml0Q29sbGVjdGl2ZUZhcm0AAAAGAAAABG5hbWUAAAAQbWluaW11bVRocmVzaG9sZAAAAAltaWdyYXRpb24AAAASdG90YWxGYXJtaW5nUmV3YXJkAAAADnRvdGFsTGlxdWlkaXR5AAAADnRvdGFsRmFybVRva2VuAwkAAAAAAAACBQAAAA5tQWNjUEtleVN0cmluZwIAAAAACQAAAgAAAAECAAAAJEZpcnN0IGluaXRpYXRpZSBhIG1hc3RlciBwdWJsaWMga2V5IQMJAQAAAAIhPQAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAAIbUFjY1BLZXkJAAACAAAAAQIAAAACXzEDCQEAAAACIT0AAAACCQEAAAAHZ2V0Qm9vbAAAAAEFAAAADGtJbml0aWFsaXplZAUAAAAEdW5pdAkAAAIAAAABAgAAAAJfMgMDCQAAAAAAAAIFAAAACW1pZ3JhdGlvbgcDCQEAAAACIT0AAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQAAAAAAACYloAGCQEAAAACIT0AAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkCQEAAAAIZ2V0RWdnSWQAAAAABwkAAAIAAAABAgAAAANfMjAEAAAAC3NoYXJlVG9rZW5zAwUAAAAJbWlncmF0aW9uBQAAAA50b3RhbEZhcm1Ub2tlbgAAAAAAAJiWgAQAAAAKc2hhcmVUb2tlbgkABEIAAAAFBQAAAARuYW1lCQABLAAAAAIJAAEsAAAAAgIAAAAUVGVhbSB0b2tlbiBmb3IgdGhlICIFAAAABG5hbWUCAAAAESIgY29sbGVjdGl2ZSBmYXJtBQAAAAtzaGFyZVRva2VucwAAAAAAAAAACAYEAAAADHRvdExpcXVpZGl0eQMFAAAACW1pZ3JhdGlvbgUAAAAOdG90YWxMaXF1aWRpdHkAAAAAAACYloAEAAAAEHRvdEZhcm1pbmdSZXdhcmQDBQAAAAltaWdyYXRpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAE2tUb3RhbEZhcm1pbmdSZXdhcmQFAAAAEnRvdGFsRmFybWluZ1Jld2FyZAUAAAADbmlsBQAAAANuaWwJAAROAAAAAgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA1rU2hhcmVBc3NldElkCQACWAAAAAEJAAQ4AAAAAQUAAAAKc2hhcmVUb2tlbgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAMa0luaXRpYWxpemVkBgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAPa1RvdGFsTGlxdWlkaXR5BQAAAAx0b3RMaXF1aWRpdHkJAARMAAAAAgUAAAAKc2hhcmVUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAC3NoYXJlVG9rZW5zCQAEOAAAAAEFAAAACnNoYXJlVG9rZW4JAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAAB2tMb2NrZWQHCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABNrTGlxdWlkaXR5VGhyZXNob2xkBQAAABBtaW5pbXVtVGhyZXNob2xkBQAAAANuaWwFAAAAEHRvdEZhcm1pbmdSZXdhcmQAAAABaQEAAAAHc2V0TG9jawAAAAEAAAABcwMJAQAAAAIhPQAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAAIbUFjY1BLZXkJAAACAAAAAQIAAAADXzIxCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAdrTG9ja2VkBQAAAAFzBQAAAANuaWwAAAABaQEAAAAPbG9ja0ludmVzdG1lbnRzAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAAB1Zb3UgY2Fubm90IGxvY2sgdGhpcyBjb250cmFjdAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAASa0xvY2tlZEludmVzdG1lbnRzBgUAAAADbmlsAAAAAWkBAAAAEXVubG9ja0ludmVzdG1lbnRzAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAAB1Zb3UgY2Fubm90IGxvY2sgdGhpcyBjb250cmFjdAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAASa0xvY2tlZEludmVzdG1lbnRzBwUAAAADbmlsAAAAAWkBAAAAEHByb3ZpZGVMaXF1aWRpdHkAAAAABAAAAAplZ2dBc3NldElkCQEAAAAIZ2V0RWdnSWQAAAAAAwMDCQEAAAACIT0AAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAACHdBY2NQS2V5CQEAAAACIT0AAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAACG1BY2NQS2V5BwkAAAAAAAACCQEAAAAHZ2V0Qm9vbAAAAAEFAAAAEmtMb2NrZWRJbnZlc3RtZW50cwYHCQAAAgAAAAECAAAAWUNvbnRyYWN0IGlzIGxvY2tlZCBmb3IgaW52ZXN0bWVudHMgYnkgaXQncyBDRU8uIFBsZWFzZSBpbnZlc3QgaW4gYW5vdGhlciBjb2xsZWN0aXZlIGZhcm0uAwkAAAAAAAACCQEAAAAHZ2V0Qm9vbAAAAAEFAAAAB2tMb2NrZWQGCQAAAgAAAAECAAAAA18yMgMJAQAAAAIhPQAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQFAAAACmVnZ0Fzc2V0SWQJAAACAAAAAQIAAAACXzQDCQAAZgAAAAIAAAAAAAAPQkAICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAkAAAIAAAABAgAAACBNaW4gYW1vdW50IHRvIGludmVzdCBpcyAwLjAxIEVHRwQAAAAOdG90YWxMaXF1aWRpdHkJAQAAAAZnZXRJbnQAAAABBQAAAA9rVG90YWxMaXF1aWRpdHkEAAAAEXNoYXJlVG9rZW5zVG9HaXZlCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQEAAAADXNoYXJlVG9rZW5zSWQJAAJZAAAAAQkBAAAABmdldFN0cgAAAAEFAAAADWtTaGFyZUFzc2V0SWQEAAAAB3JlaXNzdWUJAQAAAAdSZWlzc3VlAAAAAwkBAAAAD2dldFNoYXJlQXNzZXRJZAAAAAAFAAAAEXNoYXJlVG9rZW5zVG9HaXZlBgQAAAANa1BhcnRpY2lwYXRlZAkAASwAAAACCQABLAAAAAICAAAACGFjY291bnRfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgIAAAANX3BhcnRpY2lwYXRlZAQAAAATYWxyZWFkeVBhcnRpY2lwYXRlZAkBAAAAB2dldEJvb2wAAAABBQAAAA1rUGFydGljaXBhdGVkCQAFFAAAAAIJAARMAAAAAgUAAAAHcmVpc3N1ZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAEXNoYXJlVG9rZW5zVG9HaXZlBQAAAA1zaGFyZVRva2Vuc0lkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rVG90YWxMaXF1aWRpdHkJAABkAAAAAgUAAAAOdG90YWxMaXF1aWRpdHkJAQAAAAV2YWx1ZQAAAAEICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAANa1BhcnRpY2lwYXRlZAYFAAAAA25pbAUAAAARc2hhcmVUb2tlbnNUb0dpdmUAAAABaQEAAAAXY2xhaW1GYXJtaW5nUmV3YXJkUHJveHkAAAABAAAAA2lkcwMJAQAAAAIhPQAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAAIbUFjY1BLZXkJAAACAAAAAQIAAAADXzIzBAAAAAplZ2dBc3NldElkCQEAAAAIZ2V0RWdnSWQAAAAABAAAAAxzaGFyZUFzc2V0SWQJAQAAAA9nZXRTaGFyZUFzc2V0SWQAAAAABAAAAAtmYXJtaW5nRGFwcAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAB2dldFN0ckEAAAACBQAAAAhtQWNjQWRkcgUAAAAMa0Zhcm1pbmdEYXBwCgEAAAALY2xhaW1SZXdhcmQAAAACAAAABWFjY3VtAAAABW5mdElkBAAAAAZpbnZSZXMJAAP8AAAABAUAAAALZmFybWluZ0RhcHACAAAAC2NsYWltUmV3YXJkCQAETAAAAAIFAAAABW5mdElkBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAGaW52UmVzBQAAAAZpbnZSZXMEAAAAByRtYXRjaDAFAAAABmludlJlcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAANpbnQFAAAAByRtYXRjaDAJAABkAAAAAgUAAAAFYWNjdW0FAAAAA2ludAkAAAIAAAABAgAAAAJfNQkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAAAABm5mdElkcwkABLUAAAACBQAAAANpZHMCAAAAATsEAAAACmZvbGRSZXN1bHQKAAAAAAIkbAUAAAAGbmZ0SWRzCgAAAAACJHMJAAGQAAAAAQUAAAACJGwKAAAAAAUkYWNjMAAAAAAAAAAAAAoBAAAABSRmMF8xAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkBAAAAC2NsYWltUmV3YXJkAAAAAgUAAAACJGEJAAGRAAAAAgUAAAACJGwFAAAAAiRpCgEAAAAFJGYwXzIAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQAAAgAAAAECAAAAFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEAAAAFJGYwXzIAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACBQAAAAUkYWNjMAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAACAAAAAAAAAAACQAAAAAAAAAACgQAAAANY2xhaW1lZFJld2FyZAQAAAAHJG1hdGNoMAUAAAAKZm9sZFJlc3VsdAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAANpbnQFAAAAByRtYXRjaDAFAAAAA2ludAkAAAIAAAABAgAAAAJfNgQAAAASdG90YWxGYXJtaW5nUmV3YXJkCQEAAAAGZ2V0SW50AAAAAQUAAAATa1RvdGFsRmFybWluZ1Jld2FyZAQAAAAOZmFybUNlb0ZlZVNpemUJAABrAAAAAwUAAAANY2xhaW1lZFJld2FyZAUAAAAKZmVlUGVyY2VudAAAAAAAAAAAZAQAAAANY3VycmVudENlb0ZlZQkBAAAABmdldEludAAAAAEFAAAAEGtDZW9Db2xsZWN0ZWRGZWUEAAAADWNlb0ZlZU92ZXJhbGwJAQAAAAZnZXRJbnQAAAABBQAAABdrQ2VvQ29sbGVjdGVkRmVlT3ZlcmFsbAQAAAALYW1vdW50VG9QYXkJAABlAAAAAgUAAAANY2xhaW1lZFJld2FyZAUAAAAOZmFybUNlb0ZlZVNpemUEAAAADmFtb3VudENvbXBvdW5kCQEAAAAFYXNJbnQAAAABCQAD/AAAAAQFAAAABHRoaXMCAAAAHmNhbGN1bGF0ZUNvbXBvdW5kU2hhcmVBbmRJc3N1ZQkABEwAAAACBQAAAAthbW91bnRUb1BheQUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAADmFtb3VudENvbXBvdW5kBQAAAA5hbW91bnRDb21wb3VuZAQAAAAFdG9wVXAJAAP8AAAABAUAAAAOc3Rha2luZ0FkZHJlc3MCAAAAC3RvcFVwUmV3YXJkBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAACmVnZ0Fzc2V0SWQJAABlAAAAAgUAAAALYW1vdW50VG9QYXkFAAAADmFtb3VudENvbXBvdW5kCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAxzaGFyZUFzc2V0SWQFAAAADmFtb3VudENvbXBvdW5kBQAAAANuaWwDCQAAAAAAAAIFAAAABXRvcFVwBQAAAAV0b3BVcAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa1RvdGFsRmFybWluZ1Jld2FyZAkAAGQAAAACBQAAABJ0b3RhbEZhcm1pbmdSZXdhcmQFAAAAC2Ftb3VudFRvUGF5CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABBrQ2VvQ29sbGVjdGVkRmVlCQAAZAAAAAIFAAAADWN1cnJlbnRDZW9GZWUFAAAADmZhcm1DZW9GZWVTaXplCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABdrQ2VvQ29sbGVjdGVkRmVlT3ZlcmFsbAkAAGQAAAACBQAAAA1jZW9GZWVPdmVyYWxsBQAAAA5mYXJtQ2VvRmVlU2l6ZQUAAAADbmlsCQAA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AAASZmFybWluZ0RhcHBBZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAHZ2V0U3RyQQAAAAIFAAAACG1BY2NBZGRyAgAAAAxGQVJNSU5HX0RBUFAEAAAADnVuc3Rha2VkUmV3YXJkCQAD/AAAAAQFAAAAEmZhcm1pbmdEYXBwQWRkcmVzcwUAAAAIZnVuY3Rpb24JAARMAAAAAgUAAAAHYXNzZXRJZAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAADnVuc3Rha2VkUmV3YXJkBQAAAA51bnN0YWtlZFJld2FyZAQAAAAGcmV3YXJkBAAAAAckbWF0Y2gwBQAAAA51bnN0YWtlZFJld2FyZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAANpbnQFAAAAByRtYXRjaDAFAAAAA2ludAkAAAIAAAABAgAAABZFcnJvciBkdXJpbmcgdW5zdGFraW5nBAAAAA1jdXJyZW50Q2VvRmVlCQEAAAAGZ2V0SW50AAAAAQUAAAAQa0Nlb0NvbGxlY3RlZEZlZQQAAAANY2VvRmVlT3ZlcmFsbAkBAAAABmdldEludAAAAAEFAAAAF2tDZW9Db2xsZWN0ZWRGZWVPdmVyYWxsBAAAAA5mYXJtQ2VvRmVlU2l6ZQkAAGsAAAADBQAAAAZyZXdhcmQFAAAACmZlZVBlcmNlbnQAAAAAAAAAAGQEAAAAC2Ftb3VudFRvUGF5CQAAZQAAAAIFAAAABnJld2FyZAUAAAAOZmFybUNlb0ZlZVNpemUEAAAAEWFtb3VudENvbXBvbnRDYWxsCQAD/AAAAAQFAAAABHRoaXMCAAAAHmNhbGN1bGF0ZUNvbXBvdW5kU2hhcmVBbmRJc3N1ZQkABEwAAAACBQAAAAthbW91bnRUb1BheQUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAEWFtb3VudENvbXBvbnRDYWxsBQAAABFhbW91bnRDb21wb250Q2FsbAQAAAAOYW1vdW50Q29tcG91bmQJAQAAAAVhc0ludAAAAAEJAAP8AAAABAUAAAAEdGhpcwIAAAAeY2FsY3VsYXRlQ29tcG91bmRTaGFyZUFuZElzc3VlCQAETAAAAAIFAAAAC2Ftb3VudFRvUGF5BQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAOYW1vdW50Q29tcG91bmQFAAAADmFtb3VudENvbXBvdW5kBAAAAAV0b3BVcAkAA/wAAAAEBQAAAA5zdGFraW5nQWRkcmVzcwIAAAALdG9wVXBSZXdhcmQFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAKZWdnQXNzZXRJZAkAAGUAAAACBQAAAAthbW91bnRUb1BheQUAAAAOYW1vdW50Q29tcG91bmQJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAADHNoYXJlQXNzZXRJZAUAAAAOYW1vdW50Q29tcG91bmQFAAAAA25pbAMJAAAAAAAAAgUAAAAFdG9wVXAFAAAABXRvcFVwCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABBrQ2VvQ29sbGVjdGVkRmVlCQAAZAAAAAIFAAAADWN1cnJlbnRDZW9GZWUFAAAADmZhcm1DZW9GZWVTaXplCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABdrQ2VvQ29sbGVjdGVkRmVlT3ZlcmFsbAkAAGQAAAACBQAAAA1jZW9GZWVPdmVyYWxsBQAAAA5mYXJtQ2VvRmVlU2l6ZQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAADGNoZWNrU3RhcnRlZAkAAGcAAAACCQEAAAAGZ2V0SW50AAAAAQUAAAAPa1RvdGFsTGlxdWlkaXR5CQEAAAAGZ2V0SW50AAAAAQUAAAATa0xpcXVpZGl0eVRocmVzaG9sZAQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAF0ludm9rZVNjcmlwdFRyYW5zYWN0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", "height": 3164970, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: EzjhkqNgt9xx8tMmoP2BqejkNn5RvcMWbyUcMdjKX8cs Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let keyMAccPKey = "master_pk"
5+
6+let keyBackupPKey = "back_pk"
7+
8+let warsPKey = "wars_pk"
9+
10+func getStr (key) = match getString(this, key) {
11+ case b: String =>
12+ b
13+ case _ =>
14+ ""
15+}
16+
17+
18+let mAccPKeyString = getStr(keyMAccPKey)
19+
20+let backupPKeyString = getStr(keyBackupPKey)
21+
22+func getBackupKey () = if ((backupPKeyString == ""))
23+ then this.bytes
24+ else fromBase58String(backupPKeyString)
25+
26+
27+let mAccPKey = fromBase58String(mAccPKeyString)
28+
29+let mAccAddr = addressFromPublicKey(mAccPKey)
30+
31+let feePercent = getIntegerValue(mAccAddr, (("f_" + toString(this)) + "_fee"))
32+
33+let stakingAddress = addressFromStringValue(valueOrErrorMessage(getString(mAccAddr, (("f_" + toString(this)) + "_stake_address")), (("f_" + toString(this)) + "_stake_address not defined")))
34+
35+let wAccPKey = fromBase58String(valueOrErrorMessage(getString(mAccAddr, warsPKey), (warsPKey + " not defined")))
36+
37+let kTotalLiquidity = "total_liquidity"
38+
39+let kInitialized = "INITIALIZED"
40+
41+let kLiquidityThreshold = "LIQUIDITY_THRESHOLD"
42+
43+let kTotalFarmingReward = "total_farming_reward"
44+
45+let kShareAssetId = "SHARE_ASSET_ID"
46+
47+let kIncubatorDapp = "INCUBATOR_DAPP"
48+
49+let kBreederDapp = "BREEDER_DAPP"
50+
51+let kFarmingDapp = "FARMING_DAPP"
52+
53+let kMarketProxyDapp = "MARKETPLACE_PROXY_DAPP"
54+
55+let kAuctionDapp = "AUCTION_DAPP"
56+
57+let kLocked = "LOCKED"
58+
59+let kCeoCollectedFee = "ceo_collected_fee"
60+
61+let kCeoCollectedFeeOverall = "ceo_fee_overall"
62+
63+let kLockedInvestments = "locked_investments"
64+
65+let keyTotalCompound = "total_compound"
66+
67+let keyGlobalStaked = "global_staked"
68+
69+func getInt (key) = match getInteger(this, key) {
70+ case b: Int =>
71+ b
72+ case _ =>
73+ 0
74+}
75+
76+
77+func getBool (key) = match getBoolean(this, key) {
78+ case b: Boolean =>
79+ b
80+ case _ =>
81+ unit
82+}
83+
84+
85+func getStrA (a,k) = match getString(a, k) {
86+ case b: String =>
87+ b
88+ case _ =>
89+ ""
90+}
91+
92+
93+func getIntA (address,key) = match getInteger(address, key) {
94+ case b: Int =>
95+ b
96+ case _ =>
97+ 0
98+}
99+
100+
101+func getMarketProxyAddr () = getStrA(mAccAddr, kMarketProxyDapp)
102+
103+
104+func getEggId () = fromBase58String(getStringValue(mAccAddr, "EGG_ASSET_ID"))
105+
106+
107+func getShareAssetId () = fromBase58String(getStr(kShareAssetId))
108+
109+
110+func asInt (value) = match value {
111+ case int: Int =>
112+ int
113+ case _ =>
114+ throw("wrong type, expected: Int")
115+}
116+
117+
118+@Callable(i)
119+func initMasterKey (publicKey) = if ((i.caller != this))
120+ then throw("You cannot do this action")
121+ else if ((mAccPKeyString != ""))
122+ then throw("Master public key already set, you can't override!")
123+ else [StringEntry(keyMAccPKey, publicKey)]
124+
125+
126+
127+@Callable(i)
128+func calculateCompoundShareAndIssue (amount) = if ((i.caller != this))
129+ then throw("You cannot do this action")
130+ else if ((getBool(kLockedInvestments) == true))
131+ then $Tuple2(nil, 0)
132+ else {
133+ let shareAssetId = getShareAssetId()
134+ let totalCompound = getIntA(stakingAddress, keyTotalCompound)
135+ let totalStaked = getIntA(stakingAddress, keyGlobalStaked)
136+ let totalLocked = (totalStaked + totalCompound)
137+ let amountForCompound = fraction(amount, totalCompound, totalLocked)
138+ $Tuple2([Reissue(shareAssetId, amountForCompound, true)], amountForCompound)
139+ }
140+
141+
142+
143+@Callable(i)
144+func initCollectiveFarm (name,minimumThreshold,migration,totalFarmingReward,totalLiquidity,totalFarmToken) = if ((mAccPKeyString == ""))
145+ then throw("First initiatie a master public key!")
146+ else if ((i.callerPublicKey != mAccPKey))
147+ then throw("_1")
148+ else if ((getBool(kInitialized) != unit))
149+ then throw("_2")
150+ else if (if ((migration == false))
151+ then if ((i.payments[0].amount != 10000000))
152+ then true
153+ else (i.payments[0].assetId != getEggId())
154+ else false)
155+ then throw("_20")
156+ else {
157+ let shareTokens = if (migration)
158+ then totalFarmToken
159+ else 10000000
160+ let shareToken = Issue(name, (("Team token for the \"" + name) + "\" collective farm"), shareTokens, 8, true)
161+ let totLiquidity = if (migration)
162+ then totalLiquidity
163+ else 10000000
164+ let totFarmingReward = if (migration)
165+ then [IntegerEntry(kTotalFarmingReward, totalFarmingReward)]
166+ else nil
167+ ([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)
168+ }
169+
170+
171+
172+@Callable(i)
173+func setLock (s) = if ((i.callerPublicKey != mAccPKey))
174+ then throw("_21")
175+ else [BooleanEntry(kLocked, s)]
176+
177+
178+
179+@Callable(i)
180+func lockInvestments () = if ((i.caller != this))
181+ then throw("You cannot lock this contract")
182+ else [BooleanEntry(kLockedInvestments, true)]
183+
184+
185+
186+@Callable(i)
187+func unlockInvestments () = if ((i.caller != this))
188+ then throw("You cannot lock this contract")
189+ else [BooleanEntry(kLockedInvestments, false)]
190+
191+
192+
193+@Callable(i)
194+func provideLiquidity () = {
195+ let eggAssetId = getEggId()
196+ if (if (if ((i.callerPublicKey != wAccPKey))
197+ then (i.callerPublicKey != mAccPKey)
198+ else false)
199+ then (getBool(kLockedInvestments) == true)
200+ else false)
201+ then throw("Contract is locked for investments by it's CEO. Please invest in another collective farm.")
202+ else if ((getBool(kLocked) == true))
203+ then throw("_22")
204+ else if ((i.payments[0].assetId != eggAssetId))
205+ then throw("_4")
206+ else if ((1000000 > i.payments[0].amount))
207+ then throw("Min amount to invest is 0.01 EGG")
208+ else {
209+ let totalLiquidity = getInt(kTotalLiquidity)
210+ let shareTokensToGive = i.payments[0].amount
211+ let shareTokensId = fromBase58String(getStr(kShareAssetId))
212+ let reissue = Reissue(getShareAssetId(), shareTokensToGive, true)
213+ let kParticipated = (("account_" + toString(i.caller)) + "_participated")
214+ let alreadyParticipated = getBool(kParticipated)
215+ $Tuple2([reissue, ScriptTransfer(i.caller, shareTokensToGive, shareTokensId), IntegerEntry(kTotalLiquidity, (totalLiquidity + value(i.payments[0].amount))), BooleanEntry(kParticipated, true)], shareTokensToGive)
216+ }
217+ }
218+
219+
220+
221+@Callable(i)
222+func claimFarmingRewardProxy (ids) = if ((i.callerPublicKey != mAccPKey))
223+ then throw("_23")
224+ else {
225+ let eggAssetId = getEggId()
226+ let shareAssetId = getShareAssetId()
227+ let farmingDapp = addressFromStringValue(getStrA(mAccAddr, kFarmingDapp))
228+ func claimReward (accum,nftId) = {
229+ let invRes = invoke(farmingDapp, "claimReward", [nftId], nil)
230+ if ((invRes == invRes))
231+ then match invRes {
232+ case int: Int =>
233+ (accum + int)
234+ case _ =>
235+ throw("_5")
236+ }
237+ else throw("Strict value is not equal to itself.")
238+ }
239+
240+ let nftIds = split(ids, ";")
241+ let foldResult = {
242+ let $l = nftIds
243+ let $s = size($l)
244+ let $acc0 = 0
245+ func $f0_1 ($a,$i) = if (($i >= $s))
246+ then $a
247+ else claimReward($a, $l[$i])
248+
249+ func $f0_2 ($a,$i) = if (($i >= $s))
250+ then $a
251+ else throw("List size exceeds 10")
252+
253+ $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)
254+ }
255+ let claimedReward = match foldResult {
256+ case int: Int =>
257+ int
258+ case _ =>
259+ throw("_6")
260+ }
261+ let totalFarmingReward = getInt(kTotalFarmingReward)
262+ let farmCeoFeeSize = fraction(claimedReward, feePercent, 100)
263+ let currentCeoFee = getInt(kCeoCollectedFee)
264+ let ceoFeeOverall = getInt(kCeoCollectedFeeOverall)
265+ let amountToPay = (claimedReward - farmCeoFeeSize)
266+ let amountCompound = asInt(invoke(this, "calculateCompoundShareAndIssue", [amountToPay], nil))
267+ if ((amountCompound == amountCompound))
268+ then {
269+ let topUp = invoke(stakingAddress, "topUpReward", nil, [AttachedPayment(eggAssetId, (amountToPay - amountCompound)), AttachedPayment(shareAssetId, amountCompound)])
270+ if ((topUp == topUp))
271+ then [IntegerEntry(kTotalFarmingReward, (totalFarmingReward + amountToPay)), IntegerEntry(kCeoCollectedFee, (currentCeoFee + farmCeoFeeSize)), IntegerEntry(kCeoCollectedFeeOverall, (ceoFeeOverall + farmCeoFeeSize))]
272+ else throw("Strict value is not equal to itself.")
273+ }
274+ else throw("Strict value is not equal to itself.")
275+ }
276+
277+
278+
279+@Callable(i)
280+func claimCeoFee (address1,address2,address1Share,address2Share) = if ((0 > address1Share))
281+ then throw("Share 1 can't be negative")
282+ else if ((0 > address2Share))
283+ then throw("Share 2 can't be negative")
284+ else if (((address1Share + address2Share) != 100))
285+ then throw("Sum of shares should be 100")
286+ else if ((getBool(kLocked) == true))
287+ then throw("_22")
288+ else if ((i.caller == this))
289+ then {
290+ let currentCeoCollectedFee = getInt(kCeoCollectedFee)
291+ let address1Reward = if ((address2 == ""))
292+ then currentCeoCollectedFee
293+ else fraction(currentCeoCollectedFee, address1Share, 100)
294+ let address2Reward = if ((address2 == ""))
295+ then 0
296+ else fraction(currentCeoCollectedFee, address2Share, 100)
297+ let scriptTransferAddress2 = if ((address2 == ""))
298+ then nil
299+ else [ScriptTransfer(addressFromStringValue(address2), address2Reward, getEggId())]
300+ (scriptTransferAddress2 ++ [ScriptTransfer(addressFromStringValue(address1), address1Reward, getEggId()), IntegerEntry(kCeoCollectedFee, 0)])
301+ }
302+ else throw("Only manager can call the contract")
303+
304+
305+
306+@Callable(i)
307+func startLiquidation (auctionId) = throw("_7")
308+
309+
310+
311+@Callable(i)
312+func voteForLiquidation (auctionId) = throw("_7")
313+
314+
315+
316+@Callable(i)
317+func callUnstakeProxy (function,assetId) = if ((getBool(kLocked) == true))
318+ then throw("Contract is locked now")
319+ else if (if ((function != "unstakeNFT"))
320+ then (function != "unstakeJackpot")
321+ else false)
322+ then throw("Bad function name")
323+ else if ((i.caller != this))
324+ then throw("Can be called only by the account")
325+ else {
326+ let eggAssetId = getEggId()
327+ let shareAssetId = getShareAssetId()
328+ let farmingDappAddress = addressFromStringValue(getStrA(mAccAddr, "FARMING_DAPP"))
329+ let unstakedReward = invoke(farmingDappAddress, function, [assetId], nil)
330+ if ((unstakedReward == unstakedReward))
331+ then {
332+ let reward = match unstakedReward {
333+ case int: Int =>
334+ int
335+ case _ =>
336+ throw("Error during unstaking")
337+ }
338+ let currentCeoFee = getInt(kCeoCollectedFee)
339+ let ceoFeeOverall = getInt(kCeoCollectedFeeOverall)
340+ let farmCeoFeeSize = fraction(reward, feePercent, 100)
341+ let amountToPay = (reward - farmCeoFeeSize)
342+ let amountCompontCall = invoke(this, "calculateCompoundShareAndIssue", [amountToPay], nil)
343+ if ((amountCompontCall == amountCompontCall))
344+ then {
345+ let amountCompound = asInt(invoke(this, "calculateCompoundShareAndIssue", [amountToPay], nil))
346+ if ((amountCompound == amountCompound))
347+ then {
348+ let topUp = invoke(stakingAddress, "topUpReward", nil, [AttachedPayment(eggAssetId, (amountToPay - amountCompound)), AttachedPayment(shareAssetId, amountCompound)])
349+ if ((topUp == topUp))
350+ then [IntegerEntry(kCeoCollectedFee, (currentCeoFee + farmCeoFeeSize)), IntegerEntry(kCeoCollectedFeeOverall, (ceoFeeOverall + farmCeoFeeSize))]
351+ else throw("Strict value is not equal to itself.")
352+ }
353+ else throw("Strict value is not equal to itself.")
354+ }
355+ else throw("Strict value is not equal to itself.")
356+ }
357+ else throw("Strict value is not equal to itself.")
358+ }
359+
360+
361+@Verifier(tx)
362+func verify () = {
363+ let checkStarted = (getInt(kTotalLiquidity) >= getInt(kLiquidityThreshold))
364+ match tx {
365+ case inv: InvokeScriptTransaction =>
366+ let acceptedCallsStaking = ["stakeFarmTokens", "claimReward", "withdrawFarmTokens"]
367+ let acceptedCallsThis = ["callUnstakeProxy", "claimCeoFee", "lockInvestments", "unlockInvestments"]
368+ if (if ((inv.function == "unstakeNFT"))
369+ then true
370+ else (inv.function == "unstakeJackpot"))
371+ then throw("You cannot call these functions directly")
372+ else if (if (if ((addressFromRecipient(inv.dApp) == this))
373+ then (inv.function == "initMasterKey")
374+ else false)
375+ then (mAccPKeyString == "")
376+ else false)
377+ then if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
378+ then true
379+ else sigVerify(tx.bodyBytes, tx.proofs[0], getBackupKey())
380+ else if (if ((sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) == false))
381+ then true
382+ else sigVerify(tx.bodyBytes, tx.proofs[0], getBackupKey()))
383+ then throw("_100")
384+ else if ((checkStarted == false))
385+ then throw("_14")
386+ else if ((getBool(kLocked) == true))
387+ then throw("_22")
388+ else if (if ((inv.fee > 900000))
389+ then true
390+ else (inv.feeAssetId != unit))
391+ then throw("_15")
392+ else if ((size(inv.payments) > 2))
393+ then throw("_17")
394+ else if (if ((addressFromRecipient(inv.dApp) == this))
395+ then containsElement(acceptedCallsThis, inv.function)
396+ else false)
397+ then if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
398+ then true
399+ else sigVerify(tx.bodyBytes, tx.proofs[0], getBackupKey())
400+ else if (if ((addressFromRecipient(inv.dApp) == addressFromStringValue(getMarketProxyAddr())))
401+ then (inv.function == "callMarketplaceProxy")
402+ else false)
403+ then if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
404+ then true
405+ else sigVerify(tx.bodyBytes, tx.proofs[0], getBackupKey())
406+ else if (if ((addressFromRecipient(inv.dApp) == stakingAddress))
407+ then containsElement(acceptedCallsStaking, inv.function)
408+ else false)
409+ then if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
410+ then true
411+ else sigVerify(tx.bodyBytes, tx.proofs[0], getBackupKey())
412+ else {
413+ let allowedContracts = getStrA(mAccAddr, "allowed_contracts")
414+ let allowedContractsList = split(allowedContracts, ";")
415+ let dappToCall = toString(addressFromRecipient(inv.dApp))
416+ (indexOf(allowedContractsList, dappToCall) != unit)
417+ }
418+ case ss: SetScriptTransaction =>
419+ sigVerify(tx.bodyBytes, tx.proofs[0], mAccPKey)
420+ case mt: MassTransferTransaction =>
421+ sigVerify(tx.bodyBytes, tx.proofs[0], mAccPKey)
422+ case _ =>
423+ false
424+ }
425+ }
426+

github/deemru/w8io/786bc32 
26.26 ms