tx · SRWJqk9tnKqcWx2TPiY1iw9iKaryp35g1SSdTfWHJea

3PDEbskwA7AXaWN9Nyh1PQxJyNxDjXFPubY:  -0.01000000 Waves

2024.04.18 21:47 [4134564] smart account 3PDEbskwA7AXaWN9Nyh1PQxJyNxDjXFPubY > SELF 0.00000000 Waves

{ "type": 13, "id": "SRWJqk9tnKqcWx2TPiY1iw9iKaryp35g1SSdTfWHJea", "fee": 1000000, "feeAssetId": null, "timestamp": 1713466147322, "version": 2, "chainId": 87, "sender": "3PDEbskwA7AXaWN9Nyh1PQxJyNxDjXFPubY", "senderPublicKey": "2Qo5MvC1sJShPBhVCDmL2Epb4VYSsNg2edeEYQnku56k", "proofs": [ "2dqRSiTWTPJHJy9nvw38fAN2N7hWrezfahHeX2zdQLFkLTU6qeMYJWb9UHeSpjXd4F7bKgXEdEz4vy44cjjXUYfs" ], "script": "base64:AAIFAAAAAAAAAB8IAhIECgIICBIAEgMKAQgSBAoCCAgSAwoBCBIDCgEIAAAAHwEAAAAIa2V5T3duZXIAAAABAAAAC2R1Y2tIb3VzZUlkCQABLAAAAAIFAAAAC2R1Y2tIb3VzZUlkAgAAAAZfb3duZXIBAAAADGtleUR1Y2tIb3VzZQAAAAEAAAAGZHVja0lkCQABLAAAAAIFAAAABmR1Y2tJZAIAAAALX2R1Y2tfaG91c2UBAAAAF29jY3VwaWVkU3BvdHNEdWNrc0hvdXNlAAAAAQAAAAtkdWNrSG91c2VJZAkAASwAAAACBQAAAAtkdWNrSG91c2VJZAIAAAANX2ZpbGxlZF9zcG90cwEAAAANdHJ5R2V0Qm9vbGVhbgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEIAAAAAEFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgcBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgUAAAAEdGhpcwUAAAADa2V5AQAAAA10cnlHZXRJbnRlZ2VyAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIAAAAAAAAAAAABAAAACGFzU3RyaW5nAAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAGc3RyaW5nBQAAAAckbWF0Y2gwBQAAAAZzdHJpbmcJAAACAAAAAQIAAAAcd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IFN0cmluZwEAAAAFYXNJbnQAAAABAAAABXZhbHVlBAAAAAckbWF0Y2gwBQAAAAV2YWx1ZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAANpbnQFAAAAByRtYXRjaDAFAAAAA2ludAkAAAIAAAABAgAAABl3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50AQAAABdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwAAAAACAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzAQAAABZzdGF0aWNLZXlfaXRlbXNBZGRyZXNzAAAAAAIAAAATc3RhdGljX2l0ZW1zQWRkcmVzcwEAAAASc3RhdGljS2V5X2V4dHJhRmVlAAAAAAIAAAAPc3RhdGljX2V4dHJhRmVlAQAAABdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgAAAAACAAAAFHN0YXRpY19mZWVBZ2dyZWdhdG9yAQAAABRzdGF0aWNLZXlfZWdnQXNzZXRJZAAAAAACAAAAEXN0YXRpY19lZ2dBc3NldElkAQAAABhzdGF0aWNLZXlfZmFybWluZ0FkZHJlc3MAAAAAAgAAABhzdGF0aWNfZmFybWluZ0FkZHJlc3NOZXcBAAAAEnN0YXRpY0tleV9tYXhEdWNrcwAAAAACAAAAD3N0YXRpY19tYXhEdWNrcwEAAAAQc3RhdGljX3N0YWtlQ2FsbAAAAAACAAAACHN0YWtlTkZUAQAAABtzdGF0aWNLZXlfc3Rha2VXaXRob3V0UGVyY2gAAAAAAgAAABRzdGF0aWNfd2l0aG91dF9wZXJjaAEAAAAOc3RhdGljS2V5X3R5cGUAAAAAAgAAAAtzdGF0aWNfdHlwZQEAAAAPc3RhdGljS2V5X2Jvb3N0AAAAAAIAAAAMc3RhdGljX2Jvb3N0AQAAAAlnZXRPcmFjbGUAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAADHRyeUdldFN0cmluZwAAAAEJAQAAABdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwAAAAABAAAAD2dldEl0ZW1zQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAFnN0YXRpY0tleV9pdGVtc0FkZHJlc3MAAAAAAQAAABFnZXRGYXJtaW5nQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAGHN0YXRpY0tleV9mYXJtaW5nQWRkcmVzcwAAAAABAAAADWdldEVnZ0Fzc2V0SWQAAAAACQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAUc3RhdGljS2V5X2VnZ0Fzc2V0SWQAAAAAAQAAABBnZXRGZWVBZ2dyZWdhdG9yAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAAAAAQAAAAhtYXhEdWNrcwAAAAAJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAEnN0YXRpY0tleV9tYXhEdWNrcwAAAAABAAAABHR5cGUAAAAACQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAADnN0YXRpY0tleV90eXBlAAAAAAEAAAAFYm9vc3QAAAAACQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAAA9zdGF0aWNLZXlfYm9vc3QAAAAAAQAAAAlpc0phY2twb3QAAAABAAAAB2Fzc2V0SWQJAAAAAAAAAgkBAAAACXRha2VSaWdodAAAAAIJAQAAAAV2YWx1ZQAAAAEICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAB2Fzc2V0SWQAAAAEbmFtZQAAAAAAAAAAAQIAAAABVQEAAAAWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAAAAAEAAAAHcGF5bWVudAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAgAAAAECAAAAGVdDQVA6IFBsZWFzZSBhdHRhY2ggd2F2ZXMEAAAACWZlZUFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABJzdGF0aWNLZXlfZXh0cmFGZWUAAAAAAwkBAAAAAiE9AAAAAggFAAAAB3BheW1lbnQAAAAGYW1vdW50BQAAAAlmZWVBbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAHFdDQVA6IFBsZWFzZSBhdHRhY2ggZXhhY3RseSAJAAGkAAAAAQUAAAAJZmVlQW1vdW50AgAAABMgYW1vdW50IG9mIHdhdmVsZXRzCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABBnZXRGZWVBZ2dyZWdhdG9yAAAAAAUAAAAJZmVlQW1vdW50BQAAAAR1bml0BQAAAANuaWwBAAAAGHZhbGlkYXRlT3duZXJBbmRHZXRIb3VzZQAAAAIAAAAFYXNzZXQAAAABaQQAAAALZHVja0hvdXNlSWQJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAMa2V5RHVja0hvdXNlAAAAAQUAAAAFYXNzZXQEAAAABW93bmVyCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAACGtleU93bmVyAAAAAQUAAAALZHVja0hvdXNlSWQEAAAAB2FkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAwkBAAAAAiE9AAAAAgUAAAAFb3duZXIFAAAAB2FkZHJlc3MJAAACAAAAAQIAAAAgRG9uJ3QgdHJ5IHRvIHN0ZWFsIHNvbWVvbmUgZHVjayEFAAAAC2R1Y2tIb3VzZUlkAAAABgAAAAFpAQAAAA9jb25maWd1cmVPcmFjbGUAAAACAAAABm9yYWNsZQAAAAR0eXBlAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAACmFkbWluIG9ubHkEAAAABXNldHVwAwkAAAAAAAACBQAAAAR0eXBlAgAAAAxBUlQtQklHSE9VU0UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9zdGF0aWNLZXlfYm9vc3QAAAAAAAAAAAAAAAAPCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAASc3RhdGljS2V5X21heER1Y2tzAAAAAAAAAAAAAAAACgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAG3N0YXRpY0tleV9zdGFrZVdpdGhvdXRQZXJjaAAAAAAGBQAAAANuaWwDCQAAAAAAAAIFAAAABHR5cGUCAAAACUFSVC1IT1VTRQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD3N0YXRpY0tleV9ib29zdAAAAAAAAAAAAAAAAB4JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABJzdGF0aWNLZXlfbWF4RHVja3MAAAAAAAAAAAAAAAAECQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQEAAAAbc3RhdGljS2V5X3N0YWtlV2l0aG91dFBlcmNoAAAAAAcFAAAAA25pbAMJAAAAAAAAAgUAAAAEdHlwZQIAAAAOQVJULVhNQVNfU1RCTEUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9zdGF0aWNLZXlfYm9vc3QAAAAAAAAAAAAAAAAFCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAASc3RhdGljS2V5X21heER1Y2tzAAAAAAAAAAAAAAAABgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAG3N0YXRpY0tleV9zdGFrZVdpdGhvdXRQZXJjaAAAAAAHBQAAAANuaWwJAAACAAAAAQIAAAANVW5rbm93biB0eXBlIQkABE4AAAACCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwAAAAAFAAAABm9yYWNsZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAOc3RhdGljS2V5X3R5cGUAAAAABQAAAAR0eXBlBQAAAANuaWwFAAAABXNldHVwAAAAAWkBAAAADnN0YWtlRHVja0hvdXNlAAAAAAQAAAAFb3duZXIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA9hcnRlZmFjdFBheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAADHZhbGlkUGF5bWVudAkBAAAAFmNoZWNrQWRkaXRpb25hbFBheW1lbnQAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABBAAAAA9hcnRlZmFjdEFzc2V0SWQJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAD2FydGVmYWN0UGF5bWVudAAAAAdhc3NldElkAwkBAAAAAiE9AAAAAggFAAAAD2FydGVmYWN0UGF5bWVudAAAAAZhbW91bnQAAAAAAAAAAAEJAAACAAAAAQIAAAATTkZUIGlzIG5vdCBhdHRhY2hlZAQAAAAMYXJ0ZWZhY3ROYW1lCQEAAAAIYXNTdHJpbmcAAAABCQAD/AAAAAQJAQAAAA9nZXRJdGVtc0FkZHJlc3MAAAAAAgAAABRjaGVja0FydGVmYWN0RGV0YWlscwkABEwAAAACBQAAAA9hcnRlZmFjdEFzc2V0SWQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAxhcnRlZmFjdE5hbWUFAAAADGFydGVmYWN0TmFtZQMJAQAAAAIhPQAAAAIFAAAADGFydGVmYWN0TmFtZQkBAAAABHR5cGUAAAAACQAAAgAAAAECAAAADldyb25nIGFydGVmYWN0CQAETgAAAAIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACGtleU93bmVyAAAAAQUAAAAPYXJ0ZWZhY3RBc3NldElkBQAAAAVvd25lcgUAAAADbmlsBQAAAAx2YWxpZFBheW1lbnQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAEHVuc3Rha2VEdWNrSG91c2UAAAABAAAAC2R1Y2tIb3VzZUlkBAAAAAZjYWxsZXIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA5kdWNrSG91c2VPd25lcgkBAAAADHRyeUdldFN0cmluZwAAAAEJAQAAAAhrZXlPd25lcgAAAAEFAAAAC2R1Y2tIb3VzZUlkBAAAAAx2YWxpZFBheW1lbnQJAQAAABZjaGVja0FkZGl0aW9uYWxQYXltZW50AAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAMJAAAAAAAAAgUAAAAOZHVja0hvdXNlT3duZXICAAAAAAkAAAIAAAABAgAAAB1UaGlzIGR1Y2tob3VzZSBpcyBub3Qgc3Rha2VkIQMJAQAAAAIhPQAAAAIFAAAADmR1Y2tIb3VzZU93bmVyBQAAAAZjYWxsZXIJAAACAAAAAQIAAAAcVGhpcyBkdWNraG91c2UgaXMgbm90IHlvdXJzIQMJAQAAAAIhPQAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAF29jY3VwaWVkU3BvdHNEdWNrc0hvdXNlAAAAAQUAAAALZHVja0hvdXNlSWQAAAAAAAAAAAAJAAACAAAAAQIAAAAxUGxlYXNlIGZpcnN0IHJlbW92ZSB5b3VyIGR1Y2tzIGZyb20gdGhlIGR1Y2tob3VzZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQkAAlkAAAABBQAAAAtkdWNrSG91c2VJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAIa2V5T3duZXIAAAABBQAAAAtkdWNrSG91c2VJZAUAAAADbmlsBQAAAAx2YWxpZFBheW1lbnQAAAABaQEAAAAJc3Rha2VEdWNrAAAAAgAAAAtkdWNrSG91c2VJZAAAAAZKQ29sb3IEAAAAB2Fzc2V0SWQJAQAAAAV2YWx1ZQAAAAEICQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAAB2FkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA5kdWNrSG91c2VPd25lcgkBAAAADHRyeUdldFN0cmluZwAAAAEJAQAAAAhrZXlPd25lcgAAAAEFAAAAC2R1Y2tIb3VzZUlkAwkAAAAAAAACBQAAAA5kdWNrSG91c2VPd25lcgIAAAAACQAAAgAAAAECAAAAHVRoaXMgZHVja2hvdXNlIGlzIG5vdCBzdGFrZWQhAwkBAAAAAiE9AAAAAgUAAAAOZHVja0hvdXNlT3duZXIFAAAAB2FkZHJlc3MJAAACAAAAAQIAAAAcVGhpcyBkdWNraG91c2UgaXMgbm90IHlvdXJzIQQAAAALZmlsbGVkU3BvdHMJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAF29jY3VwaWVkU3BvdHNEdWNrc0hvdXNlAAAAAQUAAAALZHVja0hvdXNlSWQDCQAAAAAAAAIFAAAAC2ZpbGxlZFNwb3RzCQEAAAAIbWF4RHVja3MAAAAACQAAAgAAAAECAAAAHE5vIHNwYWNlIGluIGR1Y2sgaG91c2UgbGVmdCEEAAAACWJvb3N0RHVjawkAA/wAAAAECQEAAAAPZ2V0SXRlbXNBZGRyZXNzAAAAAAIAAAAPbWFuaXB1bGF0ZUJvb3N0CQAETAAAAAIJAQAAAAVib29zdAAAAAAJAARMAAAAAgkAAlgAAAABBQAAAAdhc3NldElkBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAJYm9vc3REdWNrBQAAAAlib29zdER1Y2sEAAAACXN0YWtlRHVjawkAA/wAAAAECQEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAACQEAAAAQc3RhdGljX3N0YWtlQ2FsbAAAAAAJAARMAAAAAgUAAAAGSkNvbG9yCQAETAAAAAIGCQAETAAAAAIJAQAAAAEhAAAAAQkBAAAADXRyeUdldEJvb2xlYW4AAAABCQEAAAAbc3RhdGljS2V5X3N0YWtlV2l0aG91dFBlcmNoAAAAAAUAAAADbmlsCAUAAAABaQAAAAhwYXltZW50cwMJAAAAAAAAAgUAAAAJc3Rha2VEdWNrBQAAAAlzdGFrZUR1Y2sJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABdvY2N1cGllZFNwb3RzRHVja3NIb3VzZQAAAAEFAAAAC2R1Y2tIb3VzZUlkCQAAZAAAAAIFAAAAC2ZpbGxlZFNwb3RzAAAAAAAAAAABCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxrZXlEdWNrSG91c2UAAAABCQACWAAAAAEFAAAAB2Fzc2V0SWQFAAAAC2R1Y2tIb3VzZUlkBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAt1bnN0YWtlRHVjawAAAAEAAAAFYXNzZXQEAAAAC2R1Y2tIb3VzZUlkCQEAAAAYdmFsaWRhdGVPd25lckFuZEdldEhvdXNlAAAAAgUAAAAFYXNzZXQFAAAAAWkDCQAAAAAAAAIFAAAAC2R1Y2tIb3VzZUlkBQAAAAtkdWNrSG91c2VJZAQAAAARdW5zdGFrZUR1Y2tSZXdhcmQJAQAAAAVhc0ludAAAAAEJAAP8AAAABAkBAAAAEWdldEZhcm1pbmdBZGRyZXNzAAAAAAIAAAAKdW5zdGFrZU5GVAkABEwAAAACBQAAAAVhc3NldAUAAAADbmlsCAUAAAABaQAAAAhwYXltZW50cwMJAAAAAAAAAgUAAAARdW5zdGFrZUR1Y2tSZXdhcmQFAAAAEXVuc3Rha2VEdWNrUmV3YXJkBAAAAAtmaWxsZWRTcG90cwkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAAXb2NjdXBpZWRTcG90c0R1Y2tzSG91c2UAAAABBQAAAAtkdWNrSG91c2VJZAMJAAAAAAAAAgUAAAALZmlsbGVkU3BvdHMAAAAAAAAAAAAJAAACAAAAAQIAAAAdWW91IGFyZW4ndCBzdGFraW5nIGFueSBkdWNrcyEEAAAAC3VuYm9vc3REdWNrCQAD/AAAAAQJAQAAAA9nZXRJdGVtc0FkZHJlc3MAAAAAAgAAAA9tYW5pcHVsYXRlQm9vc3QJAARMAAAAAgkBAAAAAS0AAAABCQEAAAAFYm9vc3QAAAAACQAETAAAAAIFAAAABWFzc2V0BQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAALdW5ib29zdER1Y2sFAAAAC3VuYm9vc3REdWNrCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAARdW5zdGFrZUR1Y2tSZXdhcmQJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEJAAJZAAAAAQUAAAAFYXNzZXQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAADGtleUR1Y2tIb3VzZQAAAAEFAAAABWFzc2V0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAXb2NjdXBpZWRTcG90c0R1Y2tzSG91c2UAAAABBQAAAAtkdWNrSG91c2VJZAkAAGUAAAACBQAAAAtmaWxsZWRTcG90cwAAAAAAAAAAAQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAEGNsYWltRHVja1Jld2FyZHMAAAABAAAABWFzc2V0BAAAAAVvd25lcgkBAAAAGHZhbGlkYXRlT3duZXJBbmRHZXRIb3VzZQAAAAIFAAAABWFzc2V0BQAAAAFpAwkAAAAAAAACBQAAAAVvd25lcgUAAAAFb3duZXIEAAAADGNsYWltUmV3YXJkcwkBAAAABWFzSW50AAAAAQkAA/wAAAAECQEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAAAgAAAAtjbGFpbVJld2FyZAkABEwAAAACBQAAAAVhc3NldAUAAAADbmlsCAUAAAABaQAAAAhwYXltZW50cwMJAAAAAAAAAgUAAAAMY2xhaW1SZXdhcmRzBQAAAAxjbGFpbVJld2FyZHMJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAxjbGFpbVJld2FyZHMJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAAA8hzB8g==", "height": 4134564, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: Eg7DsRmgoGbgChdHzZycDfWij1hC5dUpkq3ATo7XWdzW Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func keyOwner (duckHouseId) = (duckHouseId + "_owner")
5+
6+
7+func keyDuckHouse (duckId) = (duckId + "_duck_house")
8+
9+
10+func occupiedSpotsDucksHouse (duckHouseId) = (duckHouseId + "_filled_spots")
11+
12+
13+func tryGetBoolean (key) = match getBoolean(key) {
14+ case b: Boolean =>
15+ b
16+ case _ =>
17+ false
18+}
19+
20+
21+func tryGetStringExternal (address,key) = match getString(address, key) {
22+ case a: String =>
23+ a
24+ case _ =>
25+ ""
26+}
27+
28+
29+func tryGetString (key) = tryGetStringExternal(this, key)
30+
31+
32+func tryGetInteger (key) = match getInteger(this, key) {
33+ case b: Int =>
34+ b
35+ case _ =>
36+ 0
37+}
38+
39+
40+func asString (value) = match value {
41+ case string: String =>
42+ string
43+ case _ =>
44+ throw("wrong type, expected: String")
45+}
46+
47+
48+func asInt (value) = match value {
49+ case int: Int =>
50+ int
51+ case _ =>
52+ throw("wrong type, expected: Int")
53+}
54+
55+
56+func staticKey_oracleAddress () = "static_oracleAddress"
57+
58+
59+func staticKey_itemsAddress () = "static_itemsAddress"
60+
61+
62+func staticKey_extraFee () = "static_extraFee"
63+
64+
65+func staticKey_feeAggregator () = "static_feeAggregator"
66+
67+
68+func staticKey_eggAssetId () = "static_eggAssetId"
69+
70+
71+func staticKey_farmingAddress () = "static_farmingAddressNew"
72+
73+
74+func staticKey_maxDucks () = "static_maxDucks"
75+
76+
77+func static_stakeCall () = "stakeNFT"
78+
79+
80+func staticKey_stakeWithoutPerch () = "static_without_perch"
81+
82+
83+func staticKey_type () = "static_type"
84+
85+
86+func staticKey_boost () = "static_boost"
87+
88+
89+func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
90+
91+
92+func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_itemsAddress())))
93+
94+
95+func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_farmingAddress())))
96+
97+
98+func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId()))
99+
100+
101+func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
102+
103+
104+func maxDucks () = tryGetInteger(staticKey_maxDucks())
105+
106+
107+func type () = tryGetString(staticKey_type())
108+
109+
110+func boost () = tryGetInteger(staticKey_boost())
111+
112+
113+func isJackpot (assetId) = (takeRight(value(value(assetInfo(assetId)).name), 1) == "U")
114+
115+
116+func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
117+ then throw("WCAP: Please attach waves")
118+ else {
119+ let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
120+ if ((payment.amount != feeAmount))
121+ then throw((("WCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
122+ else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
123+ }
124+
125+
126+func validateOwnerAndGetHouse (asset,i) = {
127+ let duckHouseId = tryGetString(keyDuckHouse(asset))
128+ let owner = tryGetString(keyOwner(duckHouseId))
129+ let address = toString(i.caller)
130+ if ((owner != address))
131+ then throw("Don't try to steal someone duck!")
132+ else duckHouseId
133+ }
134+
135+
136+@Callable(i)
137+func configureOracle (oracle,type) = if ((i.caller != this))
138+ then throw("admin only")
139+ else {
140+ let setup = if ((type == "ART-BIGHOUSE"))
141+ then [IntegerEntry(staticKey_boost(), 15), IntegerEntry(staticKey_maxDucks(), 10), BooleanEntry(staticKey_stakeWithoutPerch(), true)]
142+ else if ((type == "ART-HOUSE"))
143+ then [IntegerEntry(staticKey_boost(), 30), IntegerEntry(staticKey_maxDucks(), 4), BooleanEntry(staticKey_stakeWithoutPerch(), false)]
144+ else if ((type == "ART-XMAS_STBLE"))
145+ then [IntegerEntry(staticKey_boost(), 5), IntegerEntry(staticKey_maxDucks(), 6), BooleanEntry(staticKey_stakeWithoutPerch(), false)]
146+ else throw("Unknown type!")
147+ ([StringEntry(staticKey_oracleAddress(), oracle), StringEntry(staticKey_type(), type)] ++ setup)
148+ }
149+
150+
151+
152+@Callable(i)
153+func stakeDuckHouse () = {
154+ let owner = toString(i.caller)
155+ let artefactPayment = value(i.payments[0])
156+ let validPayment = checkAdditionalPayment(i.payments[1])
157+ let artefactAssetId = toBase58String(value(artefactPayment.assetId))
158+ if ((artefactPayment.amount != 1))
159+ then throw("NFT is not attached")
160+ else {
161+ let artefactName = asString(invoke(getItemsAddress(), "checkArtefactDetails", [artefactAssetId], nil))
162+ if ((artefactName == artefactName))
163+ then if ((artefactName != type()))
164+ then throw("Wrong artefact")
165+ else ([StringEntry(keyOwner(artefactAssetId), owner)] ++ validPayment)
166+ else throw("Strict value is not equal to itself.")
167+ }
168+ }
169+
170+
171+
172+@Callable(i)
173+func unstakeDuckHouse (duckHouseId) = {
174+ let caller = toString(i.caller)
175+ let duckHouseOwner = tryGetString(keyOwner(duckHouseId))
176+ let validPayment = checkAdditionalPayment(i.payments[0])
177+ if ((duckHouseOwner == ""))
178+ then throw("This duckhouse is not staked!")
179+ else if ((duckHouseOwner != caller))
180+ then throw("This duckhouse is not yours!")
181+ else if ((tryGetInteger(occupiedSpotsDucksHouse(duckHouseId)) != 0))
182+ then throw("Please first remove your ducks from the duckhouse")
183+ else ([ScriptTransfer(i.caller, 1, fromBase58String(duckHouseId)), DeleteEntry(keyOwner(duckHouseId))] ++ validPayment)
184+ }
185+
186+
187+
188+@Callable(i)
189+func stakeDuck (duckHouseId,JColor) = {
190+ let assetId = value(value(i.payments[0]).assetId)
191+ let address = toString(i.caller)
192+ let duckHouseOwner = tryGetString(keyOwner(duckHouseId))
193+ if ((duckHouseOwner == ""))
194+ then throw("This duckhouse is not staked!")
195+ else if ((duckHouseOwner != address))
196+ then throw("This duckhouse is not yours!")
197+ else {
198+ let filledSpots = tryGetInteger(occupiedSpotsDucksHouse(duckHouseId))
199+ if ((filledSpots == maxDucks()))
200+ then throw("No space in duck house left!")
201+ else {
202+ let boostDuck = invoke(getItemsAddress(), "manipulateBoost", [boost(), toBase58String(assetId)], nil)
203+ if ((boostDuck == boostDuck))
204+ then {
205+ let stakeDuck = invoke(getFarmingAddress(), static_stakeCall(), [JColor, true, !(tryGetBoolean(staticKey_stakeWithoutPerch()))], i.payments)
206+ if ((stakeDuck == stakeDuck))
207+ then [IntegerEntry(occupiedSpotsDucksHouse(duckHouseId), (filledSpots + 1)), StringEntry(keyDuckHouse(toBase58String(assetId)), duckHouseId)]
208+ else throw("Strict value is not equal to itself.")
209+ }
210+ else throw("Strict value is not equal to itself.")
211+ }
212+ }
213+ }
214+
215+
216+
217+@Callable(i)
218+func unstakeDuck (asset) = {
219+ let duckHouseId = validateOwnerAndGetHouse(asset, i)
220+ if ((duckHouseId == duckHouseId))
221+ then {
222+ let unstakeDuckReward = asInt(invoke(getFarmingAddress(), "unstakeNFT", [asset], i.payments))
223+ if ((unstakeDuckReward == unstakeDuckReward))
224+ then {
225+ let filledSpots = tryGetInteger(occupiedSpotsDucksHouse(duckHouseId))
226+ if ((filledSpots == 0))
227+ then throw("You aren't staking any ducks!")
228+ else {
229+ let unboostDuck = invoke(getItemsAddress(), "manipulateBoost", [-(boost()), asset], nil)
230+ if ((unboostDuck == unboostDuck))
231+ then [ScriptTransfer(i.caller, unstakeDuckReward, getEggAssetId()), ScriptTransfer(i.caller, 1, fromBase58String(asset)), DeleteEntry(keyDuckHouse(asset)), IntegerEntry(occupiedSpotsDucksHouse(duckHouseId), (filledSpots - 1))]
232+ else throw("Strict value is not equal to itself.")
233+ }
234+ }
235+ else throw("Strict value is not equal to itself.")
236+ }
237+ else throw("Strict value is not equal to itself.")
238+ }
239+
240+
241+
242+@Callable(i)
243+func claimDuckRewards (asset) = {
244+ let owner = validateOwnerAndGetHouse(asset, i)
245+ if ((owner == owner))
246+ then {
247+ let claimRewards = asInt(invoke(getFarmingAddress(), "claimReward", [asset], i.payments))
248+ if ((claimRewards == claimRewards))
249+ then [ScriptTransfer(i.caller, claimRewards, getEggAssetId())]
250+ else throw("Strict value is not equal to itself.")
251+ }
252+ else throw("Strict value is not equal to itself.")
253+ }
254+
255+

github/deemru/w8io/6500d08 
18.13 ms