tx · 9FYpy2B7nsY7H6teCKAmErrA7mCUDfnHDDJnmfDCE8pG

3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks:  -0.01400000 Waves

2022.06.09 12:16 [3154236] smart account 3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks > SELF 0.00000000 Waves

{ "type": 13, "id": "9FYpy2B7nsY7H6teCKAmErrA7mCUDfnHDDJnmfDCE8pG", "fee": 1400000, "feeAssetId": null, "timestamp": 1654766226285, "version": 2, "chainId": 87, "sender": "3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks", "senderPublicKey": "XrNmTusDFaLSz3wAjmdfcyC5h6uYyVbpdh18758UpFv", "proofs": [ "2vBHAXZhcmxkKqHPXQVqK2fHA8h2S78bocSvfcrPMrfrS9XVZeRgZch6xhsRo5CDka8nx5TTtU9ioDFe87qNJ9Dv" ], "script": "base64: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R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAXc3RhdGljX3RydXN0ZWRDb250cmFjdHMBAAAAEWdldFJlYmlydGhBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABVzdGF0aWNfcmViaXJ0aEFkZHJlc3MBAAAACGFzU3RyaW5nAAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAGc3RyaW5nBQAAAAckbWF0Y2gwBQAAAAZzdHJpbmcJAAACAAAAAQIAAAAcd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IFN0cmluZwEAAAAFYXNJbnQAAAABAAAABXZhbHVlBAAAAAckbWF0Y2gwBQAAAAV2YWx1ZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAANpbnQFAAAAByRtYXRjaDAFAAAAA2ludAkAAAIAAAABAgAAABl3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50AQAAAA5tYW5pcHVsYXRlTmFtZQAAAAMAAAAJYXNzZXROYW1lAAAACHBvc2l0aW9uAAAABGNoYXIJAAEsAAAAAgkAASwAAAACCQABLwAAAAIFAAAACWFzc2V0TmFtZQkAAGUAAAACBQAAAAhwb3NpdGlvbgAAAAAAAAAAAQUAAAAEY2hhcgkBAAAACXRha2VSaWdodAAAAAIFAAAACWFzc2V0TmFtZQkAAGUAAAACAAAAAAAAAAAQBQAAAAhwb3NpdGlvbgEAAAAQaXRlbUlzSW5Db29sRG93bgAAAAIAAAAMYXJ0ZWZhY3ROYW1lAAAACmFydGVmYWN0SWQEAAAAEXVuc3Rha2VIZWlnaHRMYXN0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAABBrZXlVbnN0YWtlSGVpZ2h0AAAAAgUAAAAMYXJ0ZWZhY3ROYW1lBQAAAAphcnRlZmFjdElkBAAAAA5jb29sZG93blBlcmlvZAAAAAAAAAAA8AMJAABmAAAAAgUAAAAGaGVpZ2h0CQAAZAAAAAIFAAAAEXVuc3Rha2VIZWlnaHRMYXN0BQAAAA5jb29sZG93blBlcmlvZAcGAAAADwAAAAFpAQAAAA9tYW5pcHVsYXRlQm9vc3QAAAACAAAABWJvb3N0AAAABmR1Y2tJZAQAAAAQYWxsb3dlZENvbnRyYWN0cwkBAAAAE2dldFRydXN0ZWRDb250cmFjdHMAAAAABAAAABRhbGxvd2VkQ29udHJhY3RzTGlzdAkABLUAAAACBQAAABBhbGxvd2VkQ29udHJhY3RzAgAAAAE7BAAAAApkYXBwVG9DYWxsCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgMJAAAAAAAAAgkABE8AAAACBQAAABRhbGxvd2VkQ29udHJhY3RzTGlzdAUAAAAKZGFwcFRvQ2FsbAUAAAAEdW5pdAkAAAIAAAABAgAAAC9UaGlzIHNtYXJ0IGNvbnRyYWN0IGNhbid0IG1hbmlwdWxhdGUgdGhlIGJvb3N0IQQAAAADa2V5CQEAAAAUa2V5RXh0ZXJuYWxCb29zdER1Y2sAAAABBQAAAAZkdWNrSWQEAAAAC2FjdGl2ZUJvb3N0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEFAAAAA2tleQQAAAAIbmV3Qm9vc3QJAABkAAAAAgUAAAALYWN0aXZlQm9vc3QFAAAABWJvb3N0AwkAAGYAAAACAAAAAAAAAAAABQAAAAhuZXdCb29zdAkAAAIAAAABAgAAADtTb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIGJvb3N0LCBwbGVhc2UgY29udGFjdCB0aGUgYWRtaW5zIQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAADa2V5BQAAAAhuZXdCb29zdAUAAAADbmlsAAAAAWkBAAAAFm1hbmlwdWxhdGVCb29zdEFjY291bnQAAAACAAAABWJvb3N0AAAAB2FkZHJlc3MEAAAAEGFsbG93ZWRDb250cmFjdHMJAQAAABNnZXRUcnVzdGVkQ29udHJhY3RzAAAAAAQAAAAUYWxsb3dlZENvbnRyYWN0c0xpc3QJAAS1AAAAAgUAAAAQYWxsb3dlZENvbnRyYWN0cwIAAAABOwQAAAAKZGFwcFRvQ2FsbAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIDCQAAAAAAAAIJAARPAAAAAgUAAAAUYWxsb3dlZENvbnRyYWN0c0xpc3QFAAAACmRhcHBUb0NhbGwFAAAABHVuaXQJAAACAAAAAQIAAAAvVGhpcyBzbWFydCBjb250cmFjdCBjYW4ndCBtYW5pcHVsYXRlIHRoZSBib29zdCEEAAAAA2tleQkBAAAAF2tleUV4dGVybmFsQm9vc3RBZGRyZXNzAAAAAQUAAAAHYWRkcmVzcwQAAAALYWN0aXZlQm9vc3QJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQUAAAADa2V5BAAAAAhuZXdCb29zdAkAAGQAAAACBQAAAAthY3RpdmVCb29zdAUAAAAFYm9vc3QDCQAAZgAAAAIAAAAAAAAAAAAFAAAACG5ld0Jvb3N0CQAAAgAAAAECAAAAO1NvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggYm9vc3QsIHBsZWFzZSBjb250YWN0IHRoZSBhZG1pbnMhCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAANrZXkFAAAACG5ld0Jvb3N0BQAAAANuaWwAAAABaQEAAAAUY2hlY2tBcnRlZmFjdERldGFpbHMAAAABAAAAB2Fzc2V0SWQEAAAABWFzc2V0CQEAAAAFdmFsdWUAAAABCQAD7AAAAAEJAAJZAAAAAQUAAAAHYXNzZXRJZAQAAAAJYXNzZXROYW1lCQEAAAAFdmFsdWUAAAABCAUAAAAFYXNzZXQAAAAEbmFtZQMDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAALYWxsQXJ0ZWZhY3QFAAAACWFzc2V0TmFtZQkAAAAAAAACCAUAAAAFYXNzZXQAAAAGaXNzdWVyBQAAAAR0aGlzBwkABRQAAAACBQAAAANuaWwFAAAACWFzc2V0TmFtZQkAAAIAAAABAgAAABBJbnZhbGlkIGFydGVmYWN0AAAAAWkBAAAAD2NvbmZpZ3VyZU9yYWNsZQAAAAEAAAAGb3JhY2xlAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAACmFkbWluIG9ubHkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAUc3RhdGljX29yYWNsZUFkZHJlc3MFAAAABm9yYWNsZQUAAAADbmlsAAAAAWkBAAAAGmNhbGN1bGF0ZUZhcm1pbmdQb3dlckJvb3N0AAAAAgAAAAZkdWNrSWQAAAAHYWRkcmVzcwQAAAARZXh0ZXJuYWxCb29zdER1Y2sJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAFGtleUV4dGVybmFsQm9vc3REdWNrAAAAAQUAAAAGZHVja0lkBAAAABRleHRlcm5hbEJvb3N0QWRkcmVzcwkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAAXa2V5RXh0ZXJuYWxCb29zdEFkZHJlc3MAAAABBQAAAAdhZGRyZXNzBAAAAAp0b3RhbEJvb3N0CQAAZAAAAAIFAAAAEWV4dGVybmFsQm9vc3REdWNrBQAAABRleHRlcm5hbEJvb3N0QWRkcmVzcwkABRQAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABmR1Y2tJZAIAAAALX2xhc3RfYm9vc3QFAAAACnRvdGFsQm9vc3QFAAAAA25pbAUAAAAKdG90YWxCb29zdAAAAAFpAQAAAAlmaXhlZEdlbmUAAAADAAAAB3R4SWRTdHIAAAAPcGFyZW50Rml4ZWRHZW5lAAAAEXBvc2l0aW9uRml4ZWRHZW5lBAAAAAxmaXJzdFBheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAADGZpcnN0QXNzZXRJZAkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQDCQEAAAACIT0AAAACCAUAAAAMZmlyc3RQYXltZW50AAAABmFtb3VudAAAAAAAAAAAAQkAAAIAAAABAgAAABNORlQgaXMgbm90IGF0dGFjaGVkBAAAAAhhcnRlZmFjdAkBAAAACGFzU3RyaW5nAAAAAQkAA/wAAAAEBQAAAAR0aGlzAgAAABRjaGVja0FydGVmYWN0RGV0YWlscwkABEwAAAACBQAAAAxmaXJzdEFzc2V0SWQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAhhcnRlZmFjdAUAAAAIYXJ0ZWZhY3QDCQEAAAACIT0AAAACBQAAAAhhcnRlZmFjdAIAAAALQVJULUZJWEdFTkUJAAACAAAAAQIAAAApWW91IG5lZWQgdG8gYXR0YWNoIGEgQVJULUZJWEdFTkUgYXJ0ZWZhY3QEAAAABHR4SWQJAAJZAAAAAQUAAAAHdHhJZFN0cgQAAAAPZmluaXNoSGVpZ2h0S2V5CQEAAAAZZ2V0UHJvY2Vzc0ZpbmlzaEhlaWdodEtleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBAAAABNwcm9jZXNzRmluaXNoSGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACCQEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAABQAAAA9maW5pc2hIZWlnaHRLZXkEAAAAD2R1Y2tHZW5lc1N0cmluZwkBAAAACGFzU3RyaW5nAAAAAQkAA/wAAAAECQEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAAAgAAAAxnZW5lcmF0ZUR1Y2sJAARMAAAAAgUAAAAEdHhJZAkABEwAAAACBQAAABNwcm9jZXNzRmluaXNoSGVpZ2h0CQAETAAAAAIFAAAAD3BhcmVudEZpeGVkR2VuZQkABEwAAAACBQAAABFwb3NpdGlvbkZpeGVkR2VuZQkABEwAAAACAgAAAAAJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAD2R1Y2tHZW5lc1N0cmluZwUAAAAPZHVja0dlbmVzU3RyaW5nBAAAAARjYWxsCQAD/AAAAAQJAQAAABFnZXRCcmVlZGVyQWRkcmVzcwAAAAACAAAAF2ZpbmlzaER1Y2tIYXRjaGluZ0l0ZW1zCQAETAAAAAIFAAAAB3R4SWRTdHIJAARMAAAAAgUAAAAPZHVja0dlbmVzU3RyaW5nBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAEY2FsbAUAAAAEY2FsbAkABEwAAAACCQEAAAAEQnVybgAAAAIJAQAAAAV2YWx1ZQAAAAEIBQAAAAxmaXJzdFBheW1lbnQAAAAHYXNzZXRJZAAAAAAAAAAAAQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACGZyZWVHZW5lAAAAAQAAAAd0eElkU3RyBAAAAAxmaXJzdFBheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAADGZpcnN0QXNzZXRJZAkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQDCQEAAAACIT0AAAACCAUAAAAMZmlyc3RQYXltZW50AAAABmFtb3VudAAAAAAAAAAAAQkAAAIAAAABAgAAABNORlQgaXMgbm90IGF0dGFjaGVkBAAAAAhhcnRlZmFjdAkBAAAACGFzU3RyaW5nAAAAAQkAA/wAAAAEBQAAAAR0aGlzAgAAABRjaGVja0FydGVmYWN0RGV0YWlscwkABEwAAAACBQAAAAxmaXJzdEFzc2V0SWQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAhhcnRlZmFjdAUAAAAIYXJ0ZWZhY3QDCQEAAAACIT0AAAACBQAAAAhhcnRlZmFjdAIAAAAMQVJULUZSRUVHRU5FCQAAAgAAAAECAAAAKllvdSBuZWVkIHRvIGF0dGFjaCBhIEFSVC1GUkVFR0VORSBhcnRlZmFjdAQAAAAEdHhJZAkAAlkAAAABBQAAAAd0eElkU3RyBAAAAA9maW5pc2hIZWlnaHRLZXkJAQAAABlnZXRQcm9jZXNzRmluaXNoSGVpZ2h0S2V5AAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAABHR4SWQEAAAAE3Byb2Nlc3NGaW5pc2hIZWlnaHQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAABFnZXRCcmVlZGVyQWRkcmVzcwAAAAAFAAAAD2ZpbmlzaEhlaWdodEtleQQAAAAMc2VsZWN0ZWRHZW5lCQEAAAAOZ2V0UmFuZG9tR2VuZXMAAAACBQAAAAR0eElkBQAAABNwcm9jZXNzRmluaXNoSGVpZ2h0BAAAAA5yYW5kb21Qb3NpdGlvbgkBAAAAD2dldFJhbmRvbU51bWJlcgAAAAQAAAAAAAAAAAcFAAAABHR4SWQFAAAAE3Byb2Nlc3NGaW5pc2hIZWlnaHQAAAAAAAAAAAMEAAAAD2R1Y2tHZW5lc1N0cmluZwkBAAAACGFzU3RyaW5nAAAAAQkAA/wAAAAECQEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAAAgAAAAxnZW5lcmF0ZUR1Y2sJAARMAAAAAgUAAAAEdHhJZAkABEwAAAACBQAAABNwcm9jZXNzRmluaXNoSGVpZ2h0CQAETAAAAAIAAAAAAAAAAAAJAARMAAAAAgAAAAAAAAAAAAkABEwAAAACBQAAAAxzZWxlY3RlZEdlbmUJAARMAAAAAgUAAAAOcmFuZG9tUG9zaXRpb24FAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAA9kdWNrR2VuZXNTdHJpbmcFAAAAD2R1Y2tHZW5lc1N0cmluZwQAAAAEY2FsbAkAA/wAAAAECQEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAAAgAAABdmaW5pc2hEdWNrSGF0Y2hpbmdJdGVtcwkABEwAAAACBQAAAAd0eElkU3RyCQAETAAAAAIFAAAAD2R1Y2tHZW5lc1N0cmluZwUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAABGNhbGwFAAAABGNhbGwJAARMAAAAAgkBAAAABEJ1cm4AAAACCQEAAAAFdmFsdWUAAAABCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQAAAAAAAAAAAEFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAhjb3B5RHVjawAAAAAEAAAADGZpcnN0UGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAANc2Vjb25kUGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQQAAAAMZmlyc3RBc3NldElkCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAxmaXJzdFBheW1lbnQAAAAHYXNzZXRJZAQAAAAIY2hpbGRyZW4JAQAAAAVhc0ludAAAAAEJAAP8AAAABAkBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAIAAAAWdmFsaWRhdGVBbmRHZXRDaGlsZHJlbgkABEwAAAACBQAAAAxmaXJzdEFzc2V0SWQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAhjaGlsZHJlbgUAAAAIY2hpbGRyZW4DAwkBAAAAAiE9AAAAAggFAAAADGZpcnN0UGF5bWVudAAAAAZhbW91bnQAAAAAAAAAAAEGCQEAAAACIT0AAAACCAUAAAANc2Vjb25kUGF5bWVudAAAAAZhbW91bnQAAAAAAAAAAAEJAAACAAAAAQIAAAATTkZUIGlzIG5vdCBhdHRhY2hlZAQAAAAIYXJ0ZWZhY3QJAQAAAAhhc1N0cmluZwAAAAEJAAP8AAAABAUAAAAEdGhpcwIAAAAUY2hlY2tBcnRlZmFjdERldGFpbHMJAARMAAAAAgkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAANc2Vjb25kUGF5bWVudAAAAAdhc3NldElkBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAIYXJ0ZWZhY3QFAAAACGFydGVmYWN0AwkBAAAAAiE9AAAAAgUAAAAIYXJ0ZWZhY3QCAAAACkFSVC1NSVJST1IJAAACAAAAAQIAAAAoWW91IG5lZWQgdG8gYXR0YWNoIGEgQVJULU1JUlJPUiBhcnRlZmFjdAQAAAAHbmZ0SW5mbwkBAAAABXZhbHVlAAAAAQkAA+wAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQEAAAACWFzc2V0MUdlbgkABLUAAAACCAUAAAAHbmZ0SW5mbwAAAARuYW1lAgAAAAADAwkAAAAAAAACCQABkQAAAAIFAAAACWFzc2V0MUdlbgAAAAAAAAAADgIAAAABRwYJAAAAAAAAAgkAAZEAAAACBQAAAAlhc3NldDFHZW4AAAAAAAAAAA4CAAAAAUoJAAACAAAAAQIAAAAaWW91IGNhbid0IG1pcnJvciB0aGlzIGR1Y2sEAAAAB2R1Y2tHZW4IBQAAAAduZnRJbmZvAAAABG5hbWUEAAAABGNhbGwJAAP8AAAABAkBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAIAAAAWY3JlYXRlRHVja1NwZWNpYWxHZW5lcwkABEwAAAACCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzCQAETAAAAAIFAAAAB2R1Y2tHZW4JAARMAAAAAgUAAAAIY2hpbGRyZW4FAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAARjYWxsBQAAAARjYWxsCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkCQAETAAAAAIJAQAAAARCdXJuAAAAAgkBAAAABXZhbHVlAAAAAQgFAAAADXNlY29uZFBheW1lbnQAAAAHYXNzZXRJZAAAAAAAAAAAAQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAEWFkZEFydGVGYWN0VG9EdWNrAAAAAAQAAAAMZmlyc3RQYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAA1zZWNvbmRQYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABBAAAAAxmaXJzdEFzc2V0SWQJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkAwMJAQAAAAIhPQAAAAIIBQAAAAxmaXJzdFBheW1lbnQAAAAGYW1vdW50AAAAAAAAAAABBgkBAAAAAiE9AAAAAggFAAAADXNlY29uZFBheW1lbnQAAAAGYW1vdW50AAAAAAAAAAABCQAAAgAAAAECAAAAE05GVCBpcyBub3QgYXR0YWNoZWQEAAAACGNoaWxkcmVuCQEAAAAFYXNJbnQAAAABCQAD/AAAAAQJAQAAABFnZXRCcmVlZGVyQWRkcmVzcwAAAAACAAAAFnZhbGlkYXRlQW5kR2V0Q2hpbGRyZW4JAARMAAAAAgUAAAAMZmlyc3RBc3NldElkBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAIY2hpbGRyZW4FAAAACGNoaWxkcmVuAwkAAAAAAAACBQAAAAhjaGlsZHJlbgAAAAAAAAAAAAkAAAIAAAABAgAAACRZb3UgY2FuIG9ubHkgcGljayBhIHN0ZXJpbGUgTkZULWR1Y2sEAAAACGFydGVmYWN0CQEAAAAIYXNTdHJpbmcAAAABCQAD/AAAAAQFAAAABHRoaXMCAAAAFGNoZWNrQXJ0ZWZhY3REZXRhaWxzCQAETAAAAAIJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAADXNlY29uZFBheW1lbnQAAAAHYXNzZXRJZAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAACGFydGVmYWN0BQAAAAhhcnRlZmFjdAMDCQEAAAACIT0AAAACBQAAAAhhcnRlZmFjdAIAAAAIQVJULVhIQVQJAQAAAAIhPQAAAAIFAAAACGFydGVmYWN0AgAAAAhBUlQtUE9NUAcJAAACAAAAAQIAAAAyWW91IG5lZWQgdG8gYXR0YWNoIGEgQVJULVhIQVQgb3IgQVJULVBPTVAgYXJ0ZWZhY3QEAAAAB25mdEluZm8JAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkBAAAAAlhc3NldDFHZW4JAAS1AAAAAggFAAAAB25mdEluZm8AAAAEbmFtZQIAAAAAAwMJAAAAAAAAAgkAAZEAAAACBQAAAAlhc3NldDFHZW4AAAAAAAAAAA4CAAAAAUcGCQAAAAAAAAIJAAGRAAAAAgUAAAAJYXNzZXQxR2VuAAAAAAAAAAAOAgAAAAFKCQAAAgAAAAECAAAAGllvdSBjYW4ndCBtaXJyb3IgdGhpcyBkdWNrAwMJAAAAAAAAAgkAAZEAAAACBQAAAAlhc3NldDFHZW4AAAAAAAAAAAUCAAAAAVMGCQAAAAAAAAIJAAGRAAAAAgUAAAAJYXNzZXQxR2VuAAAAAAAAAAAFAgAAAAFUCQAAAgAAAAECAAAAH3lvdSBhbHJlYWR5IGF0dGFjaGVkIGEgYXJ0ZWZhY3QEAAAABGNoYXIDCQAAAAAAAAIFAAAACGFydGVmYWN0AgAAAAhBUlQtWEhBVAIAAAABVAMJAAAAAAAAAgUAAAAIYXJ0ZWZhY3QCAAAACEFSVC1QT01QAgAAAAFTCQAAAgAAAAECAAAAD05vIGNoYXIgZGVmaW5lZAQAAAAKb2xkRHVja0dlbggFAAAAB25mdEluZm8AAAAEbmFtZQQAAAAKb2xkRmFybUdlbgkBAAAACGFzU3RyaW5nAAAAAQkAA/wAAAAECQEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAAAgAAAA5nZXRHZW5Gcm9tTmFtZQkABEwAAAACBQAAAApvbGREdWNrR2VuBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAKb2xkRmFybUdlbgUAAAAKb2xkRmFybUdlbgQAAAAHZHVja0dlbgkBAAAADm1hbmlwdWxhdGVOYW1lAAAAAwUAAAAKb2xkRHVja0dlbgAAAAAAAAAABgUAAAAEY2hhcgQAAAAEY2FsbAkAA/wAAAAECQEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAAAgAAABZjcmVhdGVEdWNrU3BlY2lhbEdlbmVzCQAETAAAAAIICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMJAARMAAAAAgUAAAAHZHVja0dlbgkABEwAAAACBQAAAAhjaGlsZHJlbgUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAABGNhbGwFAAAABGNhbGwEAAAACmNhbGxSZWR1Y2UJAAP8AAAABAkBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAIAAAAMcmVkdWNlUmFyaXR5CQAETAAAAAIFAAAADGZpcnN0QXNzZXRJZAkABEwAAAACBQAAAApvbGRGYXJtR2VuBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAKY2FsbFJlZHVjZQUAAAAKY2FsbFJlZHVjZQkABEwAAAACCQEAAAAEQnVybgAAAAIJAQAAAAV2YWx1ZQAAAAEIBQAAAAxmaXJzdFBheW1lbnQAAAAHYXNzZXRJZAAAAAAAAAAAAQkABEwAAAACCQEAAAAEQnVybgAAAAIJAQAAAAV2YWx1ZQAAAAEIBQAAAA1zZWNvbmRQYXltZW50AAAAB2Fzc2V0SWQAAAAAAAAAAAEFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAB3ByZUluaXQAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABxzdGF0aWNfQVJULUxBS0VfZmFybWluZ1Nsb3RzAAAAAAAAAADICQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABxzdGF0aWNfQVJULUxBS0VfZmFybWluZ0Jvb3N0AAAAAAAAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAB1zdGF0aWNfQVJULUhPVVNFX2Zhcm1pbmdTbG90cwAAAAAAAAAABAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAdc3RhdGljX0FSVC1IT1VTRV9mYXJtaW5nQm9vc3QAAAAAAAAAAB4JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAIHN0YXRpY19BUlQtQklHSE9VU0VfZmFybWluZ1Nsb3RzAAAAAAAAAAAKCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAACBzdGF0aWNfQVJULUJJR0hPVVNFX2Zhcm1pbmdCb29zdAAAAAAAAAAADwUAAAADbmlsAAAAAWkBAAAADWlzc3VlQXJ0ZWZhY3QAAAACAAAABHR5cGUAAAAIcmVjZWl2ZXIDAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIJAQAAABFnZXRSZWJpcnRoQWRkcmVzcwAAAAAHCQAAAgAAAAECAAAACmFkbWluIG9ubHkEAAAAB3R4SWRTdHIJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAAHYWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAACHJlY2VpdmVyBAAAAAhhcnRlZmFjdAkABEMAAAAHBQAAAAR0eXBlAgAAACpORlQgYXJ0ZWZhY3Qgb2YgV2F2ZXMgRHVja3MgZ2FtZS4gRHJvcCAjMi4AAAAAAAAAAAEAAAAAAAAAAAAHBQAAAAR1bml0AAAAAAAAAAAABAAAAAphcnRlZmFjdElkCQAEOAAAAAEFAAAACGFydGVmYWN0CQAETAAAAAIFAAAACGFydGVmYWN0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlhcnRlZmFjdF8JAAJYAAAAAQUAAAAKYXJ0ZWZhY3RJZAIAAAAFX3R5cGUFAAAABHR5cGUJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAHYWRkcmVzcwAAAAAAAAAAAQUAAAAKYXJ0ZWZhY3RJZAUAAAADbmlsAAAAAWkBAAAAB3NldExvY2sAAAABAAAAAW4DCQAAAAAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAANZ2xvYmFsX2xvY2tlZAUAAAABbgUAAAADbmlsCQAAAgAAAAECAAAACmFkbWluIG9ubHkAAAABaQEAAAALYnV5QXJ0ZWZhY3QAAAAAAwkAAGYAAAACCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAAAAAF9yENmAAkAAAIAAAABAgAAACFUaGVyZSBhcmUgbm8gYWN0aXZlIHNhbGVzIG5vdy4uLiADCQAAZgAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAANZ2xvYmFsX2xvY2tlZAAAAAAAAAAAAAkAAAIAAAABAgAAAB5jb250cmFjdCBpcyB0ZW1wb3JhcmlseSBsb2NrZWQDCQAAZwAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAAQZ2xvYmFsX2FydEFtb3VudAUAAAAOYXJ0ZWZhY3RzTGltaXQJAAACAAAAAQIAAAASU09MRE9VVCEhISBIdXJyYXkhAwMJAABmAAAAAgAAAAF9wBv/AAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgkBAAAAB0FkZHJlc3MAAAABBQAAAApkZXZBZGRyZXNzBwkAAAIAAAABAgAAAAxUb28gZWFybHkuLi4EAAAADGZpcnN0UGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAxmaXJzdFBheW1lbnQAAAAHYXNzZXRJZAkBAAAADWdldEVnZ0Fzc2V0SWQAAAAACQAAAgAAAAEJAAEsAAAAAgIAAAA8WW91IGNhbiBhdHRhY2ggb25seSBFR0cgdG9rZW5zIHdpdGggdGhlIGZvbGxvd2luZyBhc3NldCBpZDogCQACWAAAAAEJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAMJAABmAAAAAgUAAAAKZWdnc05lZWRlZAgFAAAADGZpcnN0UGF5bWVudAAAAAZhbW91bnQJAAACAAAAAQkAASwAAAACAgAAAERUbyBoYXRjaCBhIGR1Y2sgeW91IGN1cnJlbnRseSBuZWVkIHRoZSBmb2xsb3dpbmcgYW1vdW50IG9mIEVHR2xldHM6IAkAAaQAAAABBQAAAAplZ2dzTmVlZGVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAgAAAAFfCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQCAAAAB19zdGF0dXMCAAAAB3N0YXJ0ZWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAgAAAAFfCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQCAAAADV9maW5pc2hIZWlnaHQJAABkAAAAAgUAAAAGaGVpZ2h0AAAAAAAAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABBnbG9iYWxfYXJ0QW1vdW50CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAAQZ2xvYmFsX2FydEFtb3VudAAAAAAAAAAAAQUAAAADbmlsAAAAAWkBAAAAEnNldEdsb2JhbEFydEFtb3VudAAAAAEAAAAJbmV3QW1vdW50AwMJAAAAAAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzBgkAAAAAAAACCAUAAAABaQAAAAZjYWxsZXIJAQAAAAdBZGRyZXNzAAAAAQUAAAAKZGV2QWRkcmVzcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAQZ2xvYmFsX2FydEFtb3VudAUAAAAJbmV3QW1vdW50BQAAAANuaWwJAAACAAAAAQIAAAARUGVybWlzc2lvbiBkZW5pZWQAAAABaQEAAAANY2xhaW1BcnRlZmFjdAAAAAEAAAAIYm94SWRTdHIEAAAABHR4SWQJAAJZAAAAAQUAAAAIYm94SWRTdHIEAAAACXN0YXR1c0tleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXICAAAAAV8FAAAACGJveElkU3RyAgAAAAdfc3RhdHVzBAAAAAloZWlnaHRLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAgAAAAFfBQAAAAhib3hJZFN0cgIAAAANX2ZpbmlzaEhlaWdodAMJAQAAAAIhPQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDU4KQAAAAEFAAAACXN0YXR1c0tleQIAAAAHc3RhcnRlZAkAAAIAAAABAgAAAA9jbGFpbWVkIGFscmVhZHkDCQAAZgAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDU1KQAAAAEFAAAACWhlaWdodEtleQUAAAAGaGVpZ2h0CQAAAgAAAAECAAAAFHlvdSBjYW5ub3QgY2xhaW0geWV0BAAAAAdhcnRUeXBlCQEAAAARZ2V0UmFuZG9tQXJ0ZWZhY3QAAAACBQAAAAR0eElkCQEAAAARQGV4dHJOYXRpdmUoMTA1NSkAAAABBQAAAAloZWlnaHRLZXkEAAAABWFzc2V0CQAEQwAAAAcFAAAAB2FydFR5cGUCAAAAIkFydGVmYWN0IG9mIFdhdmVzIER1Y2tzIG1ldGF2ZXJzZS4AAAAAAAAAAAEAAAAAAAAAAAAHBQAAAAR1bml0CQEAAAARQGV4dHJOYXRpdmUoMTA1NSkAAAABBQAAAAloZWlnaHRLZXkEAAAAB2Fzc2V0SWQJAAQ4AAAAAQUAAAAFYXNzZXQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJc3RhdHVzS2V5BQAAAAdhcnRUeXBlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAgAAAAFfBQAAAAhib3hJZFN0cgIAAAALX2FydGVmYWN0SWQJAAJYAAAAAQUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAJYAAAAAQUAAAAHYXNzZXRJZAIAAAAFX3R5cGUFAAAAB2FydFR5cGUJAARMAAAAAgUAAAAFYXNzZXQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAAAABBQAAAAdhc3NldElkBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleVUjZns=", "height": 3154236, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: F7f21L9Kd2nro7dQU79Fj92PyUKaxiqvfFF4hs3iYgf Next: DEuauEjhp4kPo5mTLZ6aGLprAGQvEg8P56P3qRu8iNnd Diff:
OldNewDifferences
8383
8484
8585 func getTrustedContracts () = tryGetStringExternal(getOracle(), "static_trustedContracts")
86+
87+
88+func getRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_rebirthAddress")))
8689
8790
8891 func asString (value) = match value {
353356
354357
355358 @Callable(i)
356-func issueArtefact (type,receiver) = if ((i.caller == this))
357- then {
359+func issueArtefact (type,receiver) = if (if ((i.caller != this))
360+ then (i.caller != getRebirthAddress())
361+ else false)
362+ then throw("admin only")
363+ else {
358364 let txIdStr = toBase58String(i.transactionId)
359365 let address = Address(fromBase58String(receiver))
360366 let artefact = Issue(type, "NFT artefact of Waves Ducks game. Drop #2.", 1, 0, false, unit, 0)
361367 let artefactId = calculateAssetId(artefact)
362368 [artefact, StringEntry((("artefact_" + toBase58String(artefactId)) + "_type"), type), ScriptTransfer(address, 1, artefactId)]
363369 }
364- else throw("admin only")
365370
366371
367372
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func keyArtefactOwner (artefactName,owner) = (((artefactName + "_") + owner) + "_owner")
55
66
77 func keyUnstakeHeight (artefactName,artefactId) = (((artefactName + "_") + artefactId) + "_unstake_height")
88
99
1010 func keyExternalBoostDuck (duckId) = (duckId + "_duck_external_boost")
1111
1212
1313 func keyExternalBoostAddress (address) = (address + "_user_external_boost")
1414
1515
1616 func getProcessFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh")
1717
1818
1919 let devAddress = base58'3P44yqcpfhPF2iC1nptm2ZJCTaN7VYhz9og'
2020
2121 let eggsNeeded = (3 * 100000000)
2222
2323 let artefactsLimit = (301 + 600)
2424
2525 let freeGenes = ["A", "B", "C", "D", "E", "F"]
2626
2727 let oldArtefacts = ["ART-LAKE", "ART-HOUSE", "ART-BIGHOUSE", "ART-FIXGENE", "ART-FREEGENE", "ART-MIRROR", "ART-POMP", "ART-CAPE", "ART-HAT", "ART-CUSTOMDUCK"]
2828
2929 let artefacts = ["ART-XMISTL", "ART-XHAT", "ART-XSCARF", "ART-XSWEATER", "ART-XSOCK", "ART-XTREE"]
3030
3131 let allArtefact = (artefacts ++ oldArtefacts)
3232
3333 func tryGetString (key) = match getString(this, key) {
3434 case a: String =>
3535 a
3636 case _ =>
3737 ""
3838 }
3939
4040
4141 func tryGetInteger (key) = match getInteger(this, key) {
4242 case a: Int =>
4343 a
4444 case _ =>
4545 0
4646 }
4747
4848
4949 func getRandomNumber (variants,txId,finishHeight,offset) = {
5050 let randomSeedBlock = value(blockInfoByHeight((finishHeight - 1)))
5151 let randomHash = sha256(((base58'items' + txId) + value(randomSeedBlock.vrf)))
5252 (toInt(randomHash, offset) % variants)
5353 }
5454
5555
5656 func getRandomArtefact (boxId,h) = {
5757 let randomNumber = getRandomNumber(6, boxId, h, 1)
5858 artefacts[randomNumber]
5959 }
6060
6161
6262 func getRandomGenes (txId,h) = {
6363 let randomNumber = getRandomNumber(6, txId, h, 2)
6464 freeGenes[randomNumber]
6565 }
6666
6767
6868 func tryGetStringExternal (address,key) = match getString(address, key) {
6969 case a: String =>
7070 a
7171 case _ =>
7272 ""
7373 }
7474
7575
7676 func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
7777
7878
7979 func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_breederAddress")))
8080
8181
8282 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
8383
8484
8585 func getTrustedContracts () = tryGetStringExternal(getOracle(), "static_trustedContracts")
86+
87+
88+func getRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_rebirthAddress")))
8689
8790
8891 func asString (value) = match value {
8992 case string: String =>
9093 string
9194 case _ =>
9295 throw("wrong type, expected: String")
9396 }
9497
9598
9699 func asInt (value) = match value {
97100 case int: Int =>
98101 int
99102 case _ =>
100103 throw("wrong type, expected: Int")
101104 }
102105
103106
104107 func manipulateName (assetName,position,char) = ((take(assetName, (position - 1)) + char) + takeRight(assetName, (16 - position)))
105108
106109
107110 func itemIsInCoolDown (artefactName,artefactId) = {
108111 let unstakeHeightLast = tryGetInteger(keyUnstakeHeight(artefactName, artefactId))
109112 let cooldownPeriod = 240
110113 if ((height > (unstakeHeightLast + cooldownPeriod)))
111114 then false
112115 else true
113116 }
114117
115118
116119 @Callable(i)
117120 func manipulateBoost (boost,duckId) = {
118121 let allowedContracts = getTrustedContracts()
119122 let allowedContractsList = split(allowedContracts, ";")
120123 let dappToCall = toString(i.caller)
121124 if ((indexOf(allowedContractsList, dappToCall) == unit))
122125 then throw("This smart contract can't manipulate the boost!")
123126 else {
124127 let key = keyExternalBoostDuck(duckId)
125128 let activeBoost = tryGetInteger(key)
126129 let newBoost = (activeBoost + boost)
127130 if ((0 > newBoost))
128131 then throw("Something went wrong with boost, please contact the admins!")
129132 else [IntegerEntry(key, newBoost)]
130133 }
131134 }
132135
133136
134137
135138 @Callable(i)
136139 func manipulateBoostAccount (boost,address) = {
137140 let allowedContracts = getTrustedContracts()
138141 let allowedContractsList = split(allowedContracts, ";")
139142 let dappToCall = toString(i.caller)
140143 if ((indexOf(allowedContractsList, dappToCall) == unit))
141144 then throw("This smart contract can't manipulate the boost!")
142145 else {
143146 let key = keyExternalBoostAddress(address)
144147 let activeBoost = tryGetInteger(key)
145148 let newBoost = (activeBoost + boost)
146149 if ((0 > newBoost))
147150 then throw("Something went wrong with boost, please contact the admins!")
148151 else [IntegerEntry(key, newBoost)]
149152 }
150153 }
151154
152155
153156
154157 @Callable(i)
155158 func checkArtefactDetails (assetId) = {
156159 let asset = value(assetInfo(fromBase58String(assetId)))
157160 let assetName = value(asset.name)
158161 if (if (containsElement(allArtefact, assetName))
159162 then (asset.issuer == this)
160163 else false)
161164 then $Tuple2(nil, assetName)
162165 else throw("Invalid artefact")
163166 }
164167
165168
166169
167170 @Callable(i)
168171 func configureOracle (oracle) = if ((i.caller != this))
169172 then throw("admin only")
170173 else [StringEntry("static_oracleAddress", oracle)]
171174
172175
173176
174177 @Callable(i)
175178 func calculateFarmingPowerBoost (duckId,address) = {
176179 let externalBoostDuck = tryGetInteger(keyExternalBoostDuck(duckId))
177180 let externalBoostAddress = tryGetInteger(keyExternalBoostAddress(address))
178181 let totalBoost = (externalBoostDuck + externalBoostAddress)
179182 $Tuple2([IntegerEntry((duckId + "_last_boost"), totalBoost)], totalBoost)
180183 }
181184
182185
183186
184187 @Callable(i)
185188 func fixedGene (txIdStr,parentFixedGene,positionFixedGene) = {
186189 let firstPayment = value(i.payments[0])
187190 let firstAssetId = toBase58String(value(firstPayment.assetId))
188191 if ((firstPayment.amount != 1))
189192 then throw("NFT is not attached")
190193 else {
191194 let artefact = asString(invoke(this, "checkArtefactDetails", [firstAssetId], nil))
192195 if ((artefact == artefact))
193196 then if ((artefact != "ART-FIXGENE"))
194197 then throw("You need to attach a ART-FIXGENE artefact")
195198 else {
196199 let txId = fromBase58String(txIdStr)
197200 let finishHeightKey = getProcessFinishHeightKey(toString(i.caller), txId)
198201 let processFinishHeight = getIntegerValue(getBreederAddress(), finishHeightKey)
199202 let duckGenesString = asString(invoke(getBreederAddress(), "generateDuck", [txId, processFinishHeight, parentFixedGene, positionFixedGene, "", 0], nil))
200203 if ((duckGenesString == duckGenesString))
201204 then {
202205 let call = invoke(getBreederAddress(), "finishDuckHatchingItems", [txIdStr, duckGenesString], nil)
203206 if ((call == call))
204207 then [Burn(value(firstPayment.assetId), 1)]
205208 else throw("Strict value is not equal to itself.")
206209 }
207210 else throw("Strict value is not equal to itself.")
208211 }
209212 else throw("Strict value is not equal to itself.")
210213 }
211214 }
212215
213216
214217
215218 @Callable(i)
216219 func freeGene (txIdStr) = {
217220 let firstPayment = value(i.payments[0])
218221 let firstAssetId = toBase58String(value(firstPayment.assetId))
219222 if ((firstPayment.amount != 1))
220223 then throw("NFT is not attached")
221224 else {
222225 let artefact = asString(invoke(this, "checkArtefactDetails", [firstAssetId], nil))
223226 if ((artefact == artefact))
224227 then if ((artefact != "ART-FREEGENE"))
225228 then throw("You need to attach a ART-FREEGENE artefact")
226229 else {
227230 let txId = fromBase58String(txIdStr)
228231 let finishHeightKey = getProcessFinishHeightKey(toString(i.caller), txId)
229232 let processFinishHeight = getIntegerValue(getBreederAddress(), finishHeightKey)
230233 let selectedGene = getRandomGenes(txId, processFinishHeight)
231234 let randomPosition = getRandomNumber(7, txId, processFinishHeight, 3)
232235 let duckGenesString = asString(invoke(getBreederAddress(), "generateDuck", [txId, processFinishHeight, 0, 0, selectedGene, randomPosition], nil))
233236 if ((duckGenesString == duckGenesString))
234237 then {
235238 let call = invoke(getBreederAddress(), "finishDuckHatchingItems", [txIdStr, duckGenesString], nil)
236239 if ((call == call))
237240 then [Burn(value(firstPayment.assetId), 1)]
238241 else throw("Strict value is not equal to itself.")
239242 }
240243 else throw("Strict value is not equal to itself.")
241244 }
242245 else throw("Strict value is not equal to itself.")
243246 }
244247 }
245248
246249
247250
248251 @Callable(i)
249252 func copyDuck () = {
250253 let firstPayment = value(i.payments[0])
251254 let secondPayment = value(i.payments[1])
252255 let firstAssetId = toBase58String(value(firstPayment.assetId))
253256 let children = asInt(invoke(getBreederAddress(), "validateAndGetChildren", [firstAssetId], nil))
254257 if ((children == children))
255258 then if (if ((firstPayment.amount != 1))
256259 then true
257260 else (secondPayment.amount != 1))
258261 then throw("NFT is not attached")
259262 else {
260263 let artefact = asString(invoke(this, "checkArtefactDetails", [toBase58String(value(secondPayment.assetId))], nil))
261264 if ((artefact == artefact))
262265 then if ((artefact != "ART-MIRROR"))
263266 then throw("You need to attach a ART-MIRROR artefact")
264267 else {
265268 let nftInfo = value(assetInfo(value(firstPayment.assetId)))
266269 let asset1Gen = split(nftInfo.name, "")
267270 if (if ((asset1Gen[14] == "G"))
268271 then true
269272 else (asset1Gen[14] == "J"))
270273 then throw("You can't mirror this duck")
271274 else {
272275 let duckGen = nftInfo.name
273276 let call = invoke(getBreederAddress(), "createDuckSpecialGenes", [i.caller.bytes, duckGen, children], nil)
274277 if ((call == call))
275278 then [ScriptTransfer(i.caller, 1, firstPayment.assetId), Burn(value(secondPayment.assetId), 1)]
276279 else throw("Strict value is not equal to itself.")
277280 }
278281 }
279282 else throw("Strict value is not equal to itself.")
280283 }
281284 else throw("Strict value is not equal to itself.")
282285 }
283286
284287
285288
286289 @Callable(i)
287290 func addArteFactToDuck () = {
288291 let firstPayment = value(i.payments[0])
289292 let secondPayment = value(i.payments[1])
290293 let firstAssetId = toBase58String(value(firstPayment.assetId))
291294 if (if ((firstPayment.amount != 1))
292295 then true
293296 else (secondPayment.amount != 1))
294297 then throw("NFT is not attached")
295298 else {
296299 let children = asInt(invoke(getBreederAddress(), "validateAndGetChildren", [firstAssetId], nil))
297300 if ((children == children))
298301 then if ((children == 0))
299302 then throw("You can only pick a sterile NFT-duck")
300303 else {
301304 let artefact = asString(invoke(this, "checkArtefactDetails", [toBase58String(value(secondPayment.assetId))], nil))
302305 if ((artefact == artefact))
303306 then if (if ((artefact != "ART-XHAT"))
304307 then (artefact != "ART-POMP")
305308 else false)
306309 then throw("You need to attach a ART-XHAT or ART-POMP artefact")
307310 else {
308311 let nftInfo = value(assetInfo(value(firstPayment.assetId)))
309312 let asset1Gen = split(nftInfo.name, "")
310313 if (if ((asset1Gen[14] == "G"))
311314 then true
312315 else (asset1Gen[14] == "J"))
313316 then throw("You can't mirror this duck")
314317 else if (if ((asset1Gen[5] == "S"))
315318 then true
316319 else (asset1Gen[5] == "T"))
317320 then throw("you already attached a artefact")
318321 else {
319322 let char = if ((artefact == "ART-XHAT"))
320323 then "T"
321324 else if ((artefact == "ART-POMP"))
322325 then "S"
323326 else throw("No char defined")
324327 let oldDuckGen = nftInfo.name
325328 let oldFarmGen = asString(invoke(getBreederAddress(), "getGenFromName", [oldDuckGen], nil))
326329 if ((oldFarmGen == oldFarmGen))
327330 then {
328331 let duckGen = manipulateName(oldDuckGen, 6, char)
329332 let call = invoke(getBreederAddress(), "createDuckSpecialGenes", [i.caller.bytes, duckGen, children], nil)
330333 if ((call == call))
331334 then {
332335 let callReduce = invoke(getBreederAddress(), "reduceRarity", [firstAssetId, oldFarmGen], nil)
333336 if ((callReduce == callReduce))
334337 then [Burn(value(firstPayment.assetId), 1), Burn(value(secondPayment.assetId), 1)]
335338 else throw("Strict value is not equal to itself.")
336339 }
337340 else throw("Strict value is not equal to itself.")
338341 }
339342 else throw("Strict value is not equal to itself.")
340343 }
341344 }
342345 else throw("Strict value is not equal to itself.")
343346 }
344347 else throw("Strict value is not equal to itself.")
345348 }
346349 }
347350
348351
349352
350353 @Callable(i)
351354 func preInit () = [IntegerEntry("static_ART-LAKE_farmingSlots", 200), IntegerEntry("static_ART-LAKE_farmingBoost", 2), IntegerEntry("static_ART-HOUSE_farmingSlots", 4), IntegerEntry("static_ART-HOUSE_farmingBoost", 30), IntegerEntry("static_ART-BIGHOUSE_farmingSlots", 10), IntegerEntry("static_ART-BIGHOUSE_farmingBoost", 15)]
352355
353356
354357
355358 @Callable(i)
356-func issueArtefact (type,receiver) = if ((i.caller == this))
357- then {
359+func issueArtefact (type,receiver) = if (if ((i.caller != this))
360+ then (i.caller != getRebirthAddress())
361+ else false)
362+ then throw("admin only")
363+ else {
358364 let txIdStr = toBase58String(i.transactionId)
359365 let address = Address(fromBase58String(receiver))
360366 let artefact = Issue(type, "NFT artefact of Waves Ducks game. Drop #2.", 1, 0, false, unit, 0)
361367 let artefactId = calculateAssetId(artefact)
362368 [artefact, StringEntry((("artefact_" + toBase58String(artefactId)) + "_type"), type), ScriptTransfer(address, 1, artefactId)]
363369 }
364- else throw("admin only")
365370
366371
367372
368373 @Callable(i)
369374 func setLock (n) = if ((i.caller == this))
370375 then [IntegerEntry("global_locked", n)]
371376 else throw("admin only")
372377
373378
374379
375380 @Callable(i)
376381 func buyArtefact () = if ((lastBlock.timestamp > 1639742400000))
377382 then throw("There are no active sales now... ")
378383 else if ((tryGetInteger("global_locked") > 0))
379384 then throw("contract is temporarily locked")
380385 else if ((tryGetInteger("global_artAmount") >= artefactsLimit))
381386 then throw("SOLDOUT!!! Hurray!")
382387 else if (if ((1639605600000 > lastBlock.timestamp))
383388 then (i.caller != Address(devAddress))
384389 else false)
385390 then throw("Too early...")
386391 else {
387392 let firstPayment = value(i.payments[0])
388393 if ((firstPayment.assetId != getEggAssetId()))
389394 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
390395 else if ((eggsNeeded > firstPayment.amount))
391396 then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
392397 else [StringEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_status"), "started"), IntegerEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_finishHeight"), (height + 2)), IntegerEntry("global_artAmount", (tryGetInteger("global_artAmount") + 1))]
393398 }
394399
395400
396401
397402 @Callable(i)
398403 func setGlobalArtAmount (newAmount) = if (if ((i.caller == this))
399404 then true
400405 else (i.caller == Address(devAddress)))
401406 then [IntegerEntry("global_artAmount", newAmount)]
402407 else throw("Permission denied")
403408
404409
405410
406411 @Callable(i)
407412 func claimArtefact (boxIdStr) = {
408413 let txId = fromBase58String(boxIdStr)
409414 let statusKey = (((toString(i.caller) + "_") + boxIdStr) + "_status")
410415 let heightKey = (((toString(i.caller) + "_") + boxIdStr) + "_finishHeight")
411416 if ((getStringValue(statusKey) != "started"))
412417 then throw("claimed already")
413418 else if ((getIntegerValue(heightKey) > height))
414419 then throw("you cannot claim yet")
415420 else {
416421 let artType = getRandomArtefact(txId, getIntegerValue(heightKey))
417422 let asset = Issue(artType, "Artefact of Waves Ducks metaverse.", 1, 0, false, unit, getIntegerValue(heightKey))
418423 let assetId = calculateAssetId(asset)
419424 [StringEntry(statusKey, artType), StringEntry((((toString(i.caller) + "_") + boxIdStr) + "_artefactId"), toBase58String(assetId)), StringEntry((toBase58String(assetId) + "_type"), artType), asset, ScriptTransfer(i.caller, 1, assetId)]
420425 }
421426 }
422427
423428
424429 @Verifier(tx)
425430 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
426431

github/deemru/w8io/3ef1775 
78.10 ms