tx · GYN1GajNpvneZUSXAdahNSGVj4t8P6UPuL5obEYb6r9

3N1oZwpYE3p4x63jWiKpszmfLU3Lk3KtSWe:  -0.01500000 Waves

2025.03.26 09:15 [3560673] smart account 3N1oZwpYE3p4x63jWiKpszmfLU3Lk3KtSWe > SELF 0.00000000 Waves

{ "type": 13, "id": "GYN1GajNpvneZUSXAdahNSGVj4t8P6UPuL5obEYb6r9", "fee": 1500000, "feeAssetId": null, "timestamp": 1742969748211, "version": 2, "chainId": 84, "sender": "3N1oZwpYE3p4x63jWiKpszmfLU3Lk3KtSWe", "senderPublicKey": "CqqNd9FdJdY64okp1oAAQ8z3kyrEcd6UKxtboqZgrSaP", "proofs": [ "2QJvgtUVHfEKAz3ct35MDBnQtTaeni92rDcpK31WZur6o3z2vLNVqniMNhL6cRFNhr7K8xTtbgqjnnpdRNwzBd4n" ], "script": "base64:BgIUCAISAwoBCBIAEgQKAgQIEgMKAQgoAQdnZXRCb29sAQNrZXkEByRtYXRjaDAJAJsIAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWIFByRtYXRjaDAFAWIHAQlpc1Rlc3RFbnYACQEHZ2V0Qm9vbAECB1RFU1RFTlYBF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAIUc3RhdGljX29yYWNsZUFkZHJlc3MBGHN0YXRpY0tleV9icmVlZGVyQWRkcmVzcwACFXN0YXRpY19icmVlZGVyQWRkcmVzcwEWc3RhdGljS2V5X2l0ZW1zQWRkcmVzcwACE3N0YXRpY19pdGVtc0FkZHJlc3MBEnN0YXRpY0tleV9leHRyYUZlZQACD3N0YXRpY19leHRyYUZlZQEYc3RhdGljS2V5X2V4dHJhRmVlUmVtb3ZlAAIVc3RhdGljX2V4dHJhRmVlUmVtb3ZlARdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgACFHN0YXRpY19mZWVBZ2dyZWdhdG9yARVzdGF0aWNfY291cG9uc0FkZHJlc3MAAhVzdGF0aWNfY291cG9uc0FkZHJlc3MACXdlYXJhYmxlcwkAzAgCAghBUlQtQ0FQRQkAzAgCAgdBUlQtSEFUCQDMCAICCkFSVC1YU0NBUkYJAMwIAgIMQVJULVhTV0VBVEVSBQNuaWwAEXNwZWNpYWxTZXRTdGFydGVyAglBUlQtRUFTVF8BD2tleUFydGVmYWN0RHVjawIGZHVja0lkCHdlYXJhYmxlCQCsAgIJAKwCAgUGZHVja0lkAgFfBQh3ZWFyYWJsZQEMa2V5VHlwZXNEdWNrAgZkdWNrSWQEdHlwZQkArAICCQCsAgIFBmR1Y2tJZAIBXwUEdHlwZQESYW1vdW50UGFydHNTcGVjaWFsAQZkdWNrSWQJAKwCAgkArAICBQZkdWNrSWQCAV8FEXNwZWNpYWxTZXRTdGFydGVyARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIHYWRkcmVzcwNrZXkEByRtYXRjaDAJAJ0IAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAUBYQIAAQ10cnlHZXRJbnRlZ2VyAQNrZXkEByRtYXRjaDAJAJoIAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAAAQx0cnlHZXRTdHJpbmcBA2tleQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgUEdGhpcwUDa2V5AQVhc0ludAEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACA0ludAQDaW50BQckbWF0Y2gwBQNpbnQJAAIBAhl3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50AQhhc1N0cmluZwEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACBlN0cmluZwQGc3RyaW5nBQckbWF0Y2gwBQZzdHJpbmcJAAIBAhx3cm9uZyB0eXBlLCBleHBlY3RlZDogU3RyaW5nAQlnZXRPcmFjbGUACQEHQWRkcmVzcwEJANkEAQkBDHRyeUdldFN0cmluZwEJARdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwABEWdldEJyZWVkZXJBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEYc3RhdGljS2V5X2JyZWVkZXJBZGRyZXNzAAEPZ2V0SXRlbXNBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEWc3RhdGljS2V5X2l0ZW1zQWRkcmVzcwABEGdldEZlZUFnZ3JlZ2F0b3IACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgABGWdldFR1cnRsZUluY3ViYXRvckFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQACHXN0YXRpY190dXJ0bGVJbmN1YmF0b3JBZGRyZXNzARdnZXRUdXJ0bGVCcmVlZGVyQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIbc3RhdGljX3R1cnRsZUJyZWVkZXJBZGRyZXNzARNnZXRJbmN1YmF0b3JBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUAAhdzdGF0aWNfaW5jdWJhdG9yQWRkcmVzcwEZZ2V0Q2FuaW5lSW5jdWJhdG9yQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIdc3RhdGljX2NhbmluZUluY3ViYXRvckFkZHJlc3MBF2dldENhbmluZUJyZWVkZXJBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUAAhtzdGF0aWNfY2FuaW5lQnJlZWRlckFkZHJlc3MBGWdldEZlbGluZUluY3ViYXRvckFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQACHXN0YXRpY19mZWxpbmVJbmN1YmF0b3JBZGRyZXNzARdnZXRGZWxpbmVCcmVlZGVyQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIbc3RhdGljX2ZlbGluZUJyZWVkZXJBZGRyZXNzARdnZXRNdXRhbnRCcmVlZGVyQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIdc3RhdGljX211dGFudEluY3ViYXRvckFkZHJlc3MBGGdldEVhZ2xlSW5jdWJhdG9yQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIcc3RhdGljX2VhZ2xlSW5jdWJhdG9yQWRkcmVzcwEWZ2V0RWFnbGVCcmVlZGVyQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIac3RhdGljX2VhZ2xlQnJlZWRlckFkZHJlc3MBEWdldENvdXBvbnNBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEVc3RhdGljX2NvdXBvbnNBZGRyZXNzAAEWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAIHcGF5bWVudA5hbW91bnRPdmVycmlkZQMJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkCQACAQIZV0NBUDogUGxlYXNlIGF0dGFjaCB3YXZlcwQJZmVlQW1vdW50AwkBAiE9AgUOYW1vdW50T3ZlcnJpZGUAAAUOYW1vdW50T3ZlcnJpZGUJARFAZXh0ck5hdGl2ZSgxMDUwKQIJAQlnZXRPcmFjbGUACQESc3RhdGljS2V5X2V4dHJhRmVlAAMJAQIhPQIIBQdwYXltZW50BmFtb3VudAUJZmVlQW1vdW50CQACAQkArAICCQCsAgICHFdDQVA6IFBsZWFzZSBhdHRhY2ggZXhhY3RseSAJAKQDAQUJZmVlQW1vdW50AhMgYW1vdW50IG9mIHdhdmVsZXRzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARBnZXRGZWVBZ2dyZWdhdG9yAAUJZmVlQW1vdW50BQR1bml0BQNuaWwBEnRyeUdldENvc21ldGljSXRlbQEEaXRlbQQDa2V5CQCsAgICEGRpcmVjdF9jb3NtZXRpY18FBGl0ZW0EByRtYXRjaDAJAJoIAgkBD2dldEl0ZW1zQWRkcmVzcwAFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEFBHVuaXQBCnRyeUdldFR5cGUBCHdlYXJhYmxlCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEPZ2V0SXRlbXNBZGRyZXNzAAkArAICAg50eXBlX2Nvc21ldGljXwUId2VhcmFibGUBCHdlYXJJdGVtAw9hc3NldElkV2VhckFibGUGZHVja0lkCGFsbFR5cGVzBAxhcnRlZmFjdE5hbWUJAQhhc1N0cmluZwEJAPwHBAkBD2dldEl0ZW1zQWRkcmVzcwACFGNoZWNrQXJ0ZWZhY3REZXRhaWxzCQDMCAIFD2Fzc2V0SWRXZWFyQWJsZQUDbmlsBQNuaWwDCQAAAgUMYXJ0ZWZhY3ROYW1lBQxhcnRlZmFjdE5hbWUDAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUJd2VhcmFibGVzBQxhcnRlZmFjdE5hbWUJAQEhAQkBCWlzRGVmaW5lZAEJARJ0cnlHZXRDb3NtZXRpY0l0ZW0BBQxhcnRlZmFjdE5hbWUHCQACAQIbV1JJVEQ6IFVuc3VwcG9ydGVkIHdlYXJhYmxlBAphcnRlZmFjdElkCQEMdHJ5R2V0U3RyaW5nAQkBD2tleUFydGVmYWN0RHVjawIFBmR1Y2tJZAUMYXJ0ZWZhY3ROYW1lBAlib29zdER1Y2sDCQAAAgUMYXJ0ZWZhY3ROYW1lAgpBUlQtWFNDQVJGCQD8BwQJAQ9nZXRJdGVtc0FkZHJlc3MAAg9tYW5pcHVsYXRlQm9vc3QJAMwIAgBFCQDMCAIFBmR1Y2tJZAUDbmlsBQNuaWwFA25pbAMJAAACBQlib29zdER1Y2sFCWJvb3N0RHVjawMJAQIhPQIFCmFydGVmYWN0SWQCAAkAAgEJAKwCAgIaRHVjayBpcyBhbHJlYWR5IHdlYXJpbmcgYSAFDGFydGVmYWN0TmFtZQQEdHlwZQkBCnRyeUdldFR5cGUBBQxhcnRlZmFjdE5hbWUDAwkBASEBBQhhbGxUeXBlcwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAgNQRVQJAMwIAgIEQkFDSwkAzAgCAgRUQUlMCQDMCAICCUFDQ0VTU09SWQkAzAgCAgRIRUFEBQNuaWwFBHR5cGUHCQACAQkArAICAjRZb3UgY2FuJ3QgYXR0YWNoIHRoaXMgaXRlbSB0byB5b3VyIE5GVCEgd3JvbmcgdHlwZTogBQR0eXBlBAp0eXBlT25EdWNrAwkBAiE9AgUEdHlwZQIACQECIT0CCQEMdHJ5R2V0U3RyaW5nAQkBDGtleVR5cGVzRHVjawIFBmR1Y2tJZAUEdHlwZQIACQACAQkArAICAiZUeXBlIHVuZGVmaW5lZCwgcGxlYXNlIGNvbnRhY3QgYWRtaW5zIAUMYXJ0ZWZhY3ROYW1lAwUKdHlwZU9uRHVjawkAAgECMllvdSBjYW4gb25seSBhdHRhY2ggMSBmcm9tIGVhY2ggdHlwZSB0byB5b3VyIGR1Y2shBAp0eXBlUmVzdWx0AwkBAiE9AgUEdHlwZQIACQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlUeXBlc0R1Y2sCBQZkdWNrSWQFBHR5cGUFD2Fzc2V0SWRXZWFyQWJsZQUDbmlsBQNuaWwEB2NvdW50ZXIDCQEIY29udGFpbnMCBQxhcnRlZmFjdE5hbWUFEXNwZWNpYWxTZXRTdGFydGVyBAthbW91bnRQYXJ0cwkBDXRyeUdldEludGVnZXIBCQESYW1vdW50UGFydHNTcGVjaWFsAQUGZHVja0lkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESYW1vdW50UGFydHNTcGVjaWFsAQUGZHVja0lkCQBkAgULYW1vdW50UGFydHMAAQUDbmlsBQNuaWwDCQAAAgUHY291bnRlcgUHY291bnRlcgkAzggCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUFydGVmYWN0RHVjawIFBmR1Y2tJZAUMYXJ0ZWZhY3ROYW1lBQ9hc3NldElkV2VhckFibGUFA25pbAUKdHlwZVJlc3VsdAUHY291bnRlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEVdHJ5R2V0Qm9vbGVhbkV4dGVybmFsAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAmwgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYgUHJG1hdGNoMAUBYgcBFGdldElmQWxsVHlwZXNBbGxvd2VkAQdhc3NldElkBAZpc3N1ZXIICQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQGaXNzdWVyBAtibGFja2xpc3RlZAkBFXRyeUdldEJvb2xlYW5FeHRlcm5hbAIFBmlzc3VlcgkArAICCQDYBAEFB2Fzc2V0SWQCDF9ibGFja2xpc3RlZAMFC2JsYWNrbGlzdGVkCQACAQIQR08gRlVDSyBZT1VSU0VMRgQEbmFtZQgJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZARuYW1lAwMJAAACBQZpc3N1ZXIJARNnZXRJbmN1YmF0b3JBZGRyZXNzAAYJAAACBQZpc3N1ZXIJARFnZXRCcmVlZGVyQWRkcmVzcwAGAwMJAAACBQZpc3N1ZXIJARlnZXRUdXJ0bGVJbmN1YmF0b3JBZGRyZXNzAAYJAAACBQZpc3N1ZXIJARdnZXRUdXJ0bGVCcmVlZGVyQWRkcmVzcwAHAwMJAAACBQZpc3N1ZXIJARlnZXRDYW5pbmVJbmN1YmF0b3JBZGRyZXNzAAYJAAACBQZpc3N1ZXIJARdnZXRDYW5pbmVCcmVlZGVyQWRkcmVzcwAHAwMJAAACBQZpc3N1ZXIJARlnZXRGZWxpbmVJbmN1YmF0b3JBZGRyZXNzAAYJAAACBQZpc3N1ZXIJARdnZXRGZWxpbmVCcmVlZGVyQWRkcmVzcwAHAwkAAAIFBmlzc3VlcgkBF2dldE11dGFudEJyZWVkZXJBZGRyZXNzAAcDAwkAAAIFBmlzc3VlcgkBGGdldEVhZ2xlSW5jdWJhdG9yQWRkcmVzcwAGCQAAAgUGaXNzdWVyCQEWZ2V0RWFnbGVCcmVlZGVyQWRkcmVzcwAHCQACAQIbTUFHOiBBc3NldCBpcyBub3Qgc3VwcG9ydGVkBAFpAQ9jb25maWd1cmVPcmFjbGUBBm9yYWNsZQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECCmFkbWluIG9ubHkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAUGb3JhY2xlBQNuaWwBaQEOd2Vhckl0ZW1Ub0R1Y2sABAxmaXJzdFBheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQNc2Vjb25kUGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwABBAx2YWxpZFBheW1lbnQJARZjaGVja0FkZGl0aW9uYWxQYXltZW50AgkAkQMCCAUBaQhwYXltZW50cwACAAAEBmR1Y2tJZAkA2AQBCQEFdmFsdWUBCAUMZmlyc3RQYXltZW50B2Fzc2V0SWQEDXNlY29uZEFzc2V0SWQJANgEAQkBBXZhbHVlAQgFDXNlY29uZFBheW1lbnQHYXNzZXRJZAMDCQECIT0CCAUMZmlyc3RQYXltZW50BmFtb3VudAABBgkBAiE9AggFDXNlY29uZFBheW1lbnQGYW1vdW50AAEJAAIBAhpXUklURDogTkZUIGlzIG5vdCBhdHRhY2hlZAQIYWxsVHlwZXMJARRnZXRJZkFsbFR5cGVzQWxsb3dlZAEJAQV2YWx1ZQEIBQxmaXJzdFBheW1lbnQHYXNzZXRJZAQMcmVjb3JkQWN0aW9uCQD8BwQJARFnZXRDb3Vwb25zQWRkcmVzcwACDHJlY29yZEFjdGlvbgkAzAgCAghXRUFSSVRFTQUDbmlsBQNuaWwDCQAAAgUMcmVjb3JkQWN0aW9uBQxyZWNvcmRBY3Rpb24JAM4IAgkAzggCCQEId2Vhckl0ZW0DBQ1zZWNvbmRBc3NldElkBQZkdWNrSWQFCGFsbFR5cGVzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCAUMZmlyc3RQYXltZW50B2Fzc2V0SWQFA25pbAUMdmFsaWRQYXltZW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEnJlbW92ZUl0ZW1Gcm9tRHVjawIIYnVybkl0ZW0MYXJ0ZWZhY3ROYW1lBAh3YXZlc0ZlZQMFCGJ1cm5JdGVtAAAJARFAZXh0ck5hdGl2ZSgxMDUwKQIJAQlnZXRPcmFjbGUACQEYc3RhdGljS2V5X2V4dHJhRmVlUmVtb3ZlAAQLZHVja1BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQPcm9ib0R1Y2tQYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAEEDHZhbGlkUGF5bWVudAkBFmNoZWNrQWRkaXRpb25hbFBheW1lbnQCCQCRAwIIBQFpCHBheW1lbnRzAAIFCHdhdmVzRmVlBAZkdWNrSWQJANgEAQkBBXZhbHVlAQgFC2R1Y2tQYXltZW50B2Fzc2V0SWQECnJvYm9EdWNrSWQJANgEAQkBBXZhbHVlAQgFD3JvYm9EdWNrUGF5bWVudAdhc3NldElkAwMJAQIhPQIIBQtkdWNrUGF5bWVudAZhbW91bnQAAQYJAQIhPQIIBQ9yb2JvRHVja1BheW1lbnQGYW1vdW50AAEJAAIBAhpXUklURDogTkZUIGlzIG5vdCBhdHRhY2hlZAQUYXJ0ZWZhY3ROYW1lUm9ib2R1Y2sJAQhhc1N0cmluZwEJAPwHBAkBD2dldEl0ZW1zQWRkcmVzcwACFGNoZWNrQXJ0ZWZhY3REZXRhaWxzCQDMCAIFCnJvYm9EdWNrSWQFA25pbAUDbmlsAwkAAAIFFGFydGVmYWN0TmFtZVJvYm9kdWNrBRRhcnRlZmFjdE5hbWVSb2JvZHVjawMJAQIhPQIFFGFydGVmYWN0TmFtZVJvYm9kdWNrAgxBUlQtUk9CT0RVQ0sJAAIBAh9Pbmx5IHJvZG9kdWNrIGNhbiByZW1vdmUgaXRlbXMhAwMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFCXdlYXJhYmxlcwUMYXJ0ZWZhY3ROYW1lCQEBIQEJAQlpc0RlZmluZWQBCQESdHJ5R2V0Q29zbWV0aWNJdGVtAQUMYXJ0ZWZhY3ROYW1lBwkAAgECG1dSSVREOiBVbnN1cHBvcnRlZCB3ZWFyYWJsZQQKYXJ0ZWZhY3RJZAkBDHRyeUdldFN0cmluZwEJAQ9rZXlBcnRlZmFjdER1Y2sCBQZkdWNrSWQFDGFydGVmYWN0TmFtZQQJYm9vc3REdWNrAwkAAAIFDGFydGVmYWN0TmFtZQIKQVJULVhTQ0FSRgkA/AcECQEPZ2V0SXRlbXNBZGRyZXNzAAIPbWFuaXB1bGF0ZUJvb3N0CQDMCAIARQkAzAgCBQZkdWNrSWQFA25pbAUDbmlsBQNuaWwDCQAAAgUJYm9vc3REdWNrBQlib29zdER1Y2sDCQAAAgUKYXJ0ZWZhY3RJZAIACQACAQkArAICAhNEdWNrIG5vdCB3ZWFyaW5nIGEgBQxhcnRlZmFjdE5hbWUEBHR5cGUJAQp0cnlHZXRUeXBlAQUMYXJ0ZWZhY3ROYW1lBAp0eXBlUmVzdWx0AwkBAiE9AgUEdHlwZQIACQDMCAIJAQtEZWxldGVFbnRyeQEJAQxrZXlUeXBlc0R1Y2sCBQZkdWNrSWQFBHR5cGUFA25pbAUDbmlsBARidXJuAwUIYnVybkl0ZW0JAMwIAgkBBEJ1cm4CCQDZBAEFCmFydGVmYWN0SWQAAQUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFCmFydGVmYWN0SWQFA25pbAQHY291bnRlcgMJAQhjb250YWlucwIFDGFydGVmYWN0TmFtZQURc3BlY2lhbFNldFN0YXJ0ZXIEC2Ftb3VudFBhcnRzCQENdHJ5R2V0SW50ZWdlcgEJARJhbW91bnRQYXJ0c1NwZWNpYWwBBQZkdWNrSWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARJhbW91bnRQYXJ0c1NwZWNpYWwBBQZkdWNrSWQJAGUCBQthbW91bnRQYXJ0cwABBQNuaWwFA25pbAMJAAACBQdjb3VudGVyBQdjb3VudGVyCQDOCAIJAM4IAgkAzggCCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBD2tleUFydGVmYWN0RHVjawIFBmR1Y2tJZAUMYXJ0ZWZhY3ROYW1lCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCAULZHVja1BheW1lbnQHYXNzZXRJZAkAzAgCCQEEQnVybgIJANkEAQUKcm9ib0R1Y2tJZAABBQNuaWwFBGJ1cm4FDHZhbGlkUGF5bWVudAUKdHlwZVJlc3VsdAUHY291bnRlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARZjYWxjdWxhdGVXZWFyYmxlc0Jvb3N0AQZkdWNrSWQEBGJhY2sJAQx0cnlHZXRTdHJpbmcBCQEMa2V5VHlwZXNEdWNrAgUGZHVja0lkAgRCQUNLBARoZWFkCQEMdHJ5R2V0U3RyaW5nAQkBDGtleVR5cGVzRHVjawIFBmR1Y2tJZAIESEVBRAQJbGVmdF93aW5nCQEMdHJ5R2V0U3RyaW5nAQkBDGtleVR5cGVzRHVjawIFBmR1Y2tJZAIJTEVGVF9XSU5HBApyaWdodF93aW5nCQEMdHJ5R2V0U3RyaW5nAQkBDGtleVR5cGVzRHVjawIFBmR1Y2tJZAIKUklHSFRfV0lORwQDdG9wCQEMdHJ5R2V0U3RyaW5nAQkBDGtleVR5cGVzRHVjawIFBmR1Y2tJZAIDVE9QBANwZXQJAQx0cnlHZXRTdHJpbmcBCQEMa2V5VHlwZXNEdWNrAgUGZHVja0lkAgNQRVQEBHRhaWwJAQx0cnlHZXRTdHJpbmcBCQEMa2V5VHlwZXNEdWNrAgUGZHVja0lkAgRUQUlMBAlhY2Nlc3NvcnkJAQx0cnlHZXRTdHJpbmcBCQEMa2V5VHlwZXNEdWNrAgUGZHVja0lkAglBQ0NFU1NPUlkEDGFzc2V0SWRBcnJheQkAzAgCBQRiYWNrCQDMCAIFBGhlYWQJAMwIAgUJbGVmdF93aW5nCQDMCAIFCnJpZ2h0X3dpbmcJAMwIAgUDdG9wCQDMCAIFA3BldAkAzAgCBQR0YWlsCQDMCAIFCWFjY2Vzc29yeQUDbmlsCgEPY291bnRUb3RhbEJvb3N0AgNhY2MHYXNzZXRJZAMJAQIhPQIFB2Fzc2V0SWQCAAQMYXJ0ZWZhY3ROYW1lCQEIYXNTdHJpbmcBCQD8BwQJAQ9nZXRJdGVtc0FkZHJlc3MAAhRjaGVja0FydGVmYWN0RGV0YWlscwkAzAgCBQdhc3NldElkBQNuaWwFA25pbAMJAAACBQxhcnRlZmFjdE5hbWUFDGFydGVmYWN0TmFtZQQFYm9vc3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQCsAgICBmJvb3N0XwUMYXJ0ZWZhY3ROYW1lCQCsAgICE05vIGJvb3N0IGZvdW5kIGZvciAFDGFydGVmYWN0TmFtZQkAZAIFA2FjYwUFYm9vc3QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA2FjYwQKdG90YWxCb29zdAoAAiRsBQxhc3NldElkQXJyYXkKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBD2NvdW50VG90YWxCb29zdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgOAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgEDHNwZWNpYWxCb29zdAkBDXRyeUdldEludGVnZXIBCQEPa2V5QXJ0ZWZhY3REdWNrAgUGZHVja0lkBRFzcGVjaWFsU2V0U3RhcnRlcgQNY29tYmluZWRCb29zdAMJAAACBQxzcGVjaWFsQm9vc3QABQkAZAIFCnRvdGFsQm9vc3QFDHNwZWNpYWxCb29zdAUKdG90YWxCb29zdAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBmR1Y2tJZAILX3RvdGFsQm9vc3QFCnRvdGFsQm9vc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUGZHVja0lkAg1fc3BlY2lhbEJvb3N0BQxzcGVjaWFsQm9vc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUGZHVja0lkAgpfbGFzdEJvb3N0BQ1jb21iaW5lZEJvb3N0BQNuaWwFCnRvdGFsQm9vc3QBAnR4AQZ2ZXJpZnkAAwkBCWlzVGVzdEVudgAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkECWZpcnN0VXNlcgEgURzk/Wb/EmnS8VoUnzuy4vQ7f8HLaCeiNF5sONdX3W0ECnNlY29uZFVzZXIBIFxyDkuu8SFPZuYZRfpqorHtsTYpWV8ZzMyw4U1BiGp9BAl0aGlyZFVzZXIBIKCvkeUteUNhYTISrY65+hhZUZ0tU0k2w9Cj96hgGTtOBA9maXJzdFVzZXJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQlmaXJzdFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCWZpcnN0VXNlcgABAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUJZmlyc3RVc2VyAAEAAAQQc2Vjb25kVXNlclNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFCnNlY29uZFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCnNlY29uZFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFCnNlY29uZFVzZXIAAQAABA90aGlyZFVzZXJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQl0aGlyZFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCXRoaXJkVXNlcgABAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUJdGhpcmRVc2VyAAEAAAQPc2lnbmF0dXJlc0NvdW50CQBkAgkAZAIFD2ZpcnN0VXNlclNpZ25lZAUQc2Vjb25kVXNlclNpZ25lZAUPdGhpcmRVc2VyU2lnbmVkBAckbWF0Y2gwBQJ0eAkAZwIFD3NpZ25hdHVyZXNDb3VudAAB89lIsg==", "height": 3560673, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: B99b3GqDGNJFSM93xc9DXDxxWF3YBoJaXVviqMhdsntP Next: DG8ZmKopzh9hf3uBKM6GmMG3LLPPAGgZPu9CQmAaXDDJ Diff:
OldNewDifferences
367367 $f0_2($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)
368368 }
369369 let specialBoost = tryGetInteger(keyArtefactDuck(duckId, specialSetStarter))
370- let combinedBoost = if ((specialBoost == 100))
370+ let combinedBoost = if ((specialBoost == 5))
371371 then (totalBoost + specialBoost)
372372 else totalBoost
373373 $Tuple2([IntegerEntry((duckId + "_totalBoost"), totalBoost), IntegerEntry((duckId + "_specialBoost"), specialBoost), IntegerEntry((duckId + "_lastBoost"), combinedBoost)], totalBoost)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func getBool (key) = match getBoolean(this, key) {
55 case b: Boolean =>
66 b
77 case _ =>
88 false
99 }
1010
1111
1212 func isTestEnv () = getBool("TESTENV")
1313
1414
1515 func staticKey_oracleAddress () = "static_oracleAddress"
1616
1717
1818 func staticKey_breederAddress () = "static_breederAddress"
1919
2020
2121 func staticKey_itemsAddress () = "static_itemsAddress"
2222
2323
2424 func staticKey_extraFee () = "static_extraFee"
2525
2626
2727 func staticKey_extraFeeRemove () = "static_extraFeeRemove"
2828
2929
3030 func staticKey_feeAggregator () = "static_feeAggregator"
3131
3232
3333 func static_couponsAddress () = "static_couponsAddress"
3434
3535
3636 let wearables = ["ART-CAPE", "ART-HAT", "ART-XSCARF", "ART-XSWEATER"]
3737
3838 let specialSetStarter = "ART-EAST_"
3939
4040 func keyArtefactDuck (duckId,wearable) = ((duckId + "_") + wearable)
4141
4242
4343 func keyTypesDuck (duckId,type) = ((duckId + "_") + type)
4444
4545
4646 func amountPartsSpecial (duckId) = ((duckId + "_") + specialSetStarter)
4747
4848
4949 func tryGetStringExternal (address,key) = match getString(address, key) {
5050 case a: String =>
5151 a
5252 case _ =>
5353 ""
5454 }
5555
5656
5757 func tryGetInteger (key) = match getInteger(this, key) {
5858 case b: Int =>
5959 b
6060 case _ =>
6161 0
6262 }
6363
6464
6565 func tryGetString (key) = tryGetStringExternal(this, key)
6666
6767
6868 func asInt (value) = match value {
6969 case int: Int =>
7070 int
7171 case _ =>
7272 throw("wrong type, expected: Int")
7373 }
7474
7575
7676 func asString (value) = match value {
7777 case string: String =>
7878 string
7979 case _ =>
8080 throw("wrong type, expected: String")
8181 }
8282
8383
8484 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
8585
8686
8787 func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_breederAddress())))
8888
8989
9090 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_itemsAddress())))
9191
9292
9393 func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
9494
9595
9696 func getTurtleIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_turtleIncubatorAddress")))
9797
9898
9999 func getTurtleBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_turtleBreederAddress")))
100100
101101
102102 func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_incubatorAddress")))
103103
104104
105105 func getCanineIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_canineIncubatorAddress")))
106106
107107
108108 func getCanineBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_canineBreederAddress")))
109109
110110
111111 func getFelineIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_felineIncubatorAddress")))
112112
113113
114114 func getFelineBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_felineBreederAddress")))
115115
116116
117117 func getMutantBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_mutantIncubatorAddress")))
118118
119119
120120 func getEagleIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_eagleIncubatorAddress")))
121121
122122
123123 func getEagleBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_eagleBreederAddress")))
124124
125125
126126 func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), static_couponsAddress())))
127127
128128
129129 func checkAdditionalPayment (payment,amountOverride) = if (isDefined(payment.assetId))
130130 then throw("WCAP: Please attach waves")
131131 else {
132132 let feeAmount = if ((amountOverride != 0))
133133 then amountOverride
134134 else getIntegerValue(getOracle(), staticKey_extraFee())
135135 if ((payment.amount != feeAmount))
136136 then throw((("WCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
137137 else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
138138 }
139139
140140
141141 func tryGetCosmeticItem (item) = {
142142 let key = ("direct_cosmetic_" + item)
143143 match getInteger(getItemsAddress(), key) {
144144 case a: Int =>
145145 a
146146 case _ =>
147147 unit
148148 }
149149 }
150150
151151
152152 func tryGetType (wearable) = tryGetStringExternal(getItemsAddress(), ("type_cosmetic_" + wearable))
153153
154154
155155 func wearItem (assetIdWearAble,duckId,allTypes) = {
156156 let artefactName = asString(invoke(getItemsAddress(), "checkArtefactDetails", [assetIdWearAble], nil))
157157 if ((artefactName == artefactName))
158158 then if (if (!(containsElement(wearables, artefactName)))
159159 then !(isDefined(tryGetCosmeticItem(artefactName)))
160160 else false)
161161 then throw("WRITD: Unsupported wearable")
162162 else {
163163 let artefactId = tryGetString(keyArtefactDuck(duckId, artefactName))
164164 let boostDuck = if ((artefactName == "ART-XSCARF"))
165165 then invoke(getItemsAddress(), "manipulateBoost", [69, duckId], nil)
166166 else nil
167167 if ((boostDuck == boostDuck))
168168 then if ((artefactId != ""))
169169 then throw(("Duck is already wearing a " + artefactName))
170170 else {
171171 let type = tryGetType(artefactName)
172172 if (if (!(allTypes))
173173 then !(containsElement(["PET", "BACK", "TAIL", "ACCESSORY", "HEAD"], type))
174174 else false)
175175 then throw(("You can't attach this item to your NFT! wrong type: " + type))
176176 else {
177177 let typeOnDuck = if ((type != ""))
178178 then (tryGetString(keyTypesDuck(duckId, type)) != "")
179179 else throw(("Type undefined, please contact admins " + artefactName))
180180 if (typeOnDuck)
181181 then throw("You can only attach 1 from each type to your duck!")
182182 else {
183183 let typeResult = if ((type != ""))
184184 then [StringEntry(keyTypesDuck(duckId, type), assetIdWearAble)]
185185 else nil
186186 let counter = if (contains(artefactName, specialSetStarter))
187187 then {
188188 let amountParts = tryGetInteger(amountPartsSpecial(duckId))
189189 [IntegerEntry(amountPartsSpecial(duckId), (amountParts + 1))]
190190 }
191191 else nil
192192 if ((counter == counter))
193193 then (([StringEntry(keyArtefactDuck(duckId, artefactName), assetIdWearAble)] ++ typeResult) ++ counter)
194194 else throw("Strict value is not equal to itself.")
195195 }
196196 }
197197 }
198198 else throw("Strict value is not equal to itself.")
199199 }
200200 else throw("Strict value is not equal to itself.")
201201 }
202202
203203
204204 func tryGetBooleanExternal (address,key) = match getBoolean(address, key) {
205205 case b: Boolean =>
206206 b
207207 case _ =>
208208 false
209209 }
210210
211211
212212 func getIfAllTypesAllowed (assetId) = {
213213 let issuer = value(assetInfo(assetId)).issuer
214214 let blacklisted = tryGetBooleanExternal(issuer, (toBase58String(assetId) + "_blacklisted"))
215215 if (blacklisted)
216216 then throw("GO FUCK YOURSELF")
217217 else {
218218 let name = value(assetInfo(assetId)).name
219219 if (if ((issuer == getIncubatorAddress()))
220220 then true
221221 else (issuer == getBreederAddress()))
222222 then true
223223 else if (if ((issuer == getTurtleIncubatorAddress()))
224224 then true
225225 else (issuer == getTurtleBreederAddress()))
226226 then false
227227 else if (if ((issuer == getCanineIncubatorAddress()))
228228 then true
229229 else (issuer == getCanineBreederAddress()))
230230 then false
231231 else if (if ((issuer == getFelineIncubatorAddress()))
232232 then true
233233 else (issuer == getFelineBreederAddress()))
234234 then false
235235 else if ((issuer == getMutantBreederAddress()))
236236 then false
237237 else if (if ((issuer == getEagleIncubatorAddress()))
238238 then true
239239 else (issuer == getEagleBreederAddress()))
240240 then false
241241 else throw("MAG: Asset is not supported")
242242 }
243243 }
244244
245245
246246 @Callable(i)
247247 func configureOracle (oracle) = if ((i.caller != this))
248248 then throw("admin only")
249249 else [StringEntry(staticKey_oracleAddress(), oracle)]
250250
251251
252252
253253 @Callable(i)
254254 func wearItemToDuck () = {
255255 let firstPayment = value(i.payments[0])
256256 let secondPayment = value(i.payments[1])
257257 let validPayment = checkAdditionalPayment(i.payments[2], 0)
258258 let duckId = toBase58String(value(firstPayment.assetId))
259259 let secondAssetId = toBase58String(value(secondPayment.assetId))
260260 if (if ((firstPayment.amount != 1))
261261 then true
262262 else (secondPayment.amount != 1))
263263 then throw("WRITD: NFT is not attached")
264264 else {
265265 let allTypes = getIfAllTypesAllowed(value(firstPayment.assetId))
266266 let recordAction = invoke(getCouponsAddress(), "recordAction", ["WEARITEM"], nil)
267267 if ((recordAction == recordAction))
268268 then ((wearItem(secondAssetId, duckId, allTypes) ++ [ScriptTransfer(i.caller, 1, firstPayment.assetId)]) ++ validPayment)
269269 else throw("Strict value is not equal to itself.")
270270 }
271271 }
272272
273273
274274
275275 @Callable(i)
276276 func removeItemFromDuck (burnItem,artefactName) = {
277277 let wavesFee = if (burnItem)
278278 then 0
279279 else getIntegerValue(getOracle(), staticKey_extraFeeRemove())
280280 let duckPayment = value(i.payments[0])
281281 let roboDuckPayment = value(i.payments[1])
282282 let validPayment = checkAdditionalPayment(i.payments[2], wavesFee)
283283 let duckId = toBase58String(value(duckPayment.assetId))
284284 let roboDuckId = toBase58String(value(roboDuckPayment.assetId))
285285 if (if ((duckPayment.amount != 1))
286286 then true
287287 else (roboDuckPayment.amount != 1))
288288 then throw("WRITD: NFT is not attached")
289289 else {
290290 let artefactNameRoboduck = asString(invoke(getItemsAddress(), "checkArtefactDetails", [roboDuckId], nil))
291291 if ((artefactNameRoboduck == artefactNameRoboduck))
292292 then if ((artefactNameRoboduck != "ART-ROBODUCK"))
293293 then throw("Only rododuck can remove items!")
294294 else if (if (!(containsElement(wearables, artefactName)))
295295 then !(isDefined(tryGetCosmeticItem(artefactName)))
296296 else false)
297297 then throw("WRITD: Unsupported wearable")
298298 else {
299299 let artefactId = tryGetString(keyArtefactDuck(duckId, artefactName))
300300 let boostDuck = if ((artefactName == "ART-XSCARF"))
301301 then invoke(getItemsAddress(), "manipulateBoost", [69, duckId], nil)
302302 else nil
303303 if ((boostDuck == boostDuck))
304304 then if ((artefactId == ""))
305305 then throw(("Duck not wearing a " + artefactName))
306306 else {
307307 let type = tryGetType(artefactName)
308308 let typeResult = if ((type != ""))
309309 then [DeleteEntry(keyTypesDuck(duckId, type))]
310310 else nil
311311 let burn = if (burnItem)
312312 then [Burn(fromBase58String(artefactId), 1)]
313313 else [ScriptTransfer(i.caller, 1, fromBase58String(artefactId))]
314314 let counter = if (contains(artefactName, specialSetStarter))
315315 then {
316316 let amountParts = tryGetInteger(amountPartsSpecial(duckId))
317317 [IntegerEntry(amountPartsSpecial(duckId), (amountParts - 1))]
318318 }
319319 else nil
320320 if ((counter == counter))
321321 then (((([DeleteEntry(keyArtefactDuck(duckId, artefactName)), ScriptTransfer(i.caller, 1, duckPayment.assetId), Burn(fromBase58String(roboDuckId), 1)] ++ burn) ++ validPayment) ++ typeResult) ++ counter)
322322 else throw("Strict value is not equal to itself.")
323323 }
324324 else throw("Strict value is not equal to itself.")
325325 }
326326 else throw("Strict value is not equal to itself.")
327327 }
328328 }
329329
330330
331331
332332 @Callable(i)
333333 func calculateWearblesBoost (duckId) = {
334334 let back = tryGetString(keyTypesDuck(duckId, "BACK"))
335335 let head = tryGetString(keyTypesDuck(duckId, "HEAD"))
336336 let left_wing = tryGetString(keyTypesDuck(duckId, "LEFT_WING"))
337337 let right_wing = tryGetString(keyTypesDuck(duckId, "RIGHT_WING"))
338338 let top = tryGetString(keyTypesDuck(duckId, "TOP"))
339339 let pet = tryGetString(keyTypesDuck(duckId, "PET"))
340340 let tail = tryGetString(keyTypesDuck(duckId, "TAIL"))
341341 let accessory = tryGetString(keyTypesDuck(duckId, "ACCESSORY"))
342342 let assetIdArray = [back, head, left_wing, right_wing, top, pet, tail, accessory]
343343 func countTotalBoost (acc,assetId) = if ((assetId != ""))
344344 then {
345345 let artefactName = asString(invoke(getItemsAddress(), "checkArtefactDetails", [assetId], nil))
346346 if ((artefactName == artefactName))
347347 then {
348348 let boost = valueOrErrorMessage(getInteger(("boost_" + artefactName)), ("No boost found for " + artefactName))
349349 (acc + boost)
350350 }
351351 else throw("Strict value is not equal to itself.")
352352 }
353353 else acc
354354
355355 let totalBoost = {
356356 let $l = assetIdArray
357357 let $s = size($l)
358358 let $acc0 = 0
359359 func $f0_1 ($a,$i) = if (($i >= $s))
360360 then $a
361361 else countTotalBoost($a, $l[$i])
362362
363363 func $f0_2 ($a,$i) = if (($i >= $s))
364364 then $a
365365 else throw("List size exceeds 8")
366366
367367 $f0_2($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)
368368 }
369369 let specialBoost = tryGetInteger(keyArtefactDuck(duckId, specialSetStarter))
370- let combinedBoost = if ((specialBoost == 100))
370+ let combinedBoost = if ((specialBoost == 5))
371371 then (totalBoost + specialBoost)
372372 else totalBoost
373373 $Tuple2([IntegerEntry((duckId + "_totalBoost"), totalBoost), IntegerEntry((duckId + "_specialBoost"), specialBoost), IntegerEntry((duckId + "_lastBoost"), combinedBoost)], totalBoost)
374374 }
375375
376376
377377 @Verifier(tx)
378378 func verify () = if (isTestEnv())
379379 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
380380 else {
381381 let firstUser = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
382382 let secondUser = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8'
383383 let thirdUser = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3'
384384 let firstUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], firstUser))
385385 then 1
386386 else if (sigVerify(tx.bodyBytes, tx.proofs[1], firstUser))
387387 then 1
388388 else if (sigVerify(tx.bodyBytes, tx.proofs[2], firstUser))
389389 then 1
390390 else 0
391391 let secondUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], secondUser))
392392 then 1
393393 else if (sigVerify(tx.bodyBytes, tx.proofs[1], secondUser))
394394 then 1
395395 else if (sigVerify(tx.bodyBytes, tx.proofs[2], secondUser))
396396 then 1
397397 else 0
398398 let thirdUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], thirdUser))
399399 then 1
400400 else if (sigVerify(tx.bodyBytes, tx.proofs[1], thirdUser))
401401 then 1
402402 else if (sigVerify(tx.bodyBytes, tx.proofs[2], thirdUser))
403403 then 1
404404 else 0
405405 let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
406406 match tx {
407407 case _ =>
408408 (signaturesCount >= 1)
409409 }
410410 }
411411

github/deemru/w8io/169f3d6 
45.76 ms