tx · GcfYNFwa8wzERYTomDtNgdyEtAhTjfH3T5qHYn36Lcjz

3N1oZwpYE3p4x63jWiKpszmfLU3Lk3KtSWe:  -0.01300000 Waves

2024.10.18 21:20 [3332593] smart account 3N1oZwpYE3p4x63jWiKpszmfLU3Lk3KtSWe > SELF 0.00000000 Waves

{ "type": 13, "id": "GcfYNFwa8wzERYTomDtNgdyEtAhTjfH3T5qHYn36Lcjz", "fee": 1300000, "feeAssetId": null, "timestamp": 1729275638246, "version": 2, "chainId": 84, "sender": "3N1oZwpYE3p4x63jWiKpszmfLU3Lk3KtSWe", "senderPublicKey": "CqqNd9FdJdY64okp1oAAQ8z3kyrEcd6UKxtboqZgrSaP", "proofs": [ "4sSPXx3Ux8PE7hJi4T9obZxnUnZaQRUMsB1Aux6owCc1t2RP5xFEgeUPNFFvSXirzLB4xGGpooRwFssK4MR9H2sN" ], "script": "base64:BgIRCAISAwoBCBIAEgQKAgQIEgAhAQdnZXRCb29sAQNrZXkEByRtYXRjaDAJAJsIAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWIFByRtYXRjaDAFAWIHAQlpc1Rlc3RFbnYACQEHZ2V0Qm9vbAECB1RFU1RFTlYBF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAIUc3RhdGljX29yYWNsZUFkZHJlc3MBGHN0YXRpY0tleV9icmVlZGVyQWRkcmVzcwACFXN0YXRpY19icmVlZGVyQWRkcmVzcwEWc3RhdGljS2V5X2l0ZW1zQWRkcmVzcwACE3N0YXRpY19pdGVtc0FkZHJlc3MBEnN0YXRpY0tleV9leHRyYUZlZQACD3N0YXRpY19leHRyYUZlZQEYc3RhdGljS2V5X2V4dHJhRmVlUmVtb3ZlAAIVc3RhdGljX2V4dHJhRmVlUmVtb3ZlARdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgACFHN0YXRpY19mZWVBZ2dyZWdhdG9yAAl3ZWFyYWJsZXMJAMwIAgIIQVJULUNBUEUJAMwIAgIHQVJULUhBVAkAzAgCAgpBUlQtWFNDQVJGCQDMCAICDEFSVC1YU1dFQVRFUgUDbmlsAQ9rZXlBcnRlZmFjdER1Y2sCBmR1Y2tJZAh3ZWFyYWJsZQkArAICCQCsAgIFBmR1Y2tJZAIBXwUId2VhcmFibGUBDGtleVR5cGVzRHVjawIGZHVja0lkBHR5cGUJAKwCAgkArAICBQZkdWNrSWQCAV8FBHR5cGUBFHRyeUdldFN0cmluZ0V4dGVybmFsAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgABDHRyeUdldFN0cmluZwEDa2V5CQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCBQR0aGlzBQNrZXkBBWFzSW50AQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAIDSW50BANpbnQFByRtYXRjaDAFA2ludAkAAgECGXdyb25nIHR5cGUsIGV4cGVjdGVkOiBJbnQBCGFzU3RyaW5nAQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZzdHJpbmcFByRtYXRjaDAFBnN0cmluZwkAAgECHHdyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcBCWdldE9yYWNsZQAJAQdBZGRyZXNzAQkA2QQBCQEMdHJ5R2V0U3RyaW5nAQkBF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAERZ2V0QnJlZWRlckFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARhzdGF0aWNLZXlfYnJlZWRlckFkZHJlc3MAAQ9nZXRJdGVtc0FkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARZzdGF0aWNLZXlfaXRlbXNBZGRyZXNzAAEQZ2V0RmVlQWdncmVnYXRvcgAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBF3N0YXRpY0tleV9mZWVBZ2dyZWdhdG9yAAEZZ2V0VHVydGxlSW5jdWJhdG9yQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIdc3RhdGljX3R1cnRsZUluY3ViYXRvckFkZHJlc3MBF2dldFR1cnRsZUJyZWVkZXJBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUAAhtzdGF0aWNfdHVydGxlQnJlZWRlckFkZHJlc3MBE2dldEluY3ViYXRvckFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQACF3N0YXRpY19pbmN1YmF0b3JBZGRyZXNzARlnZXRDYW5pbmVJbmN1YmF0b3JBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUAAh1zdGF0aWNfY2FuaW5lSW5jdWJhdG9yQWRkcmVzcwEXZ2V0Q2FuaW5lQnJlZWRlckFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQACG3N0YXRpY19jYW5pbmVCcmVlZGVyQWRkcmVzcwEZZ2V0RmVsaW5lSW5jdWJhdG9yQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIdc3RhdGljX2ZlbGluZUluY3ViYXRvckFkZHJlc3MBF2dldEZlbGluZUJyZWVkZXJBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUAAhtzdGF0aWNfZmVsaW5lQnJlZWRlckFkZHJlc3MBF2dldE11dGFudEJyZWVkZXJBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUAAh1zdGF0aWNfbXV0YW50SW5jdWJhdG9yQWRkcmVzcwEWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAIHcGF5bWVudA5hbW91bnRPdmVycmlkZQMJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkCQACAQIZV0NBUDogUGxlYXNlIGF0dGFjaCB3YXZlcwQJZmVlQW1vdW50AwkBAiE9AgUOYW1vdW50T3ZlcnJpZGUAAAUOYW1vdW50T3ZlcnJpZGUJARFAZXh0ck5hdGl2ZSgxMDUwKQIJAQlnZXRPcmFjbGUACQESc3RhdGljS2V5X2V4dHJhRmVlAAMJAQIhPQIIBQdwYXltZW50BmFtb3VudAUJZmVlQW1vdW50CQACAQkArAICCQCsAgICHFdDQVA6IFBsZWFzZSBhdHRhY2ggZXhhY3RseSAJAKQDAQUJZmVlQW1vdW50AhMgYW1vdW50IG9mIHdhdmVsZXRzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARBnZXRGZWVBZ2dyZWdhdG9yAAUJZmVlQW1vdW50BQR1bml0BQNuaWwBEnRyeUdldENvc21ldGljSXRlbQEEaXRlbQQDa2V5CQCsAgICEGRpcmVjdF9jb3NtZXRpY18FBGl0ZW0EByRtYXRjaDAJAJoIAgkBD2dldEl0ZW1zQWRkcmVzcwAFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEFBHVuaXQBCnRyeUdldFR5cGUBCHdlYXJhYmxlCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEPZ2V0SXRlbXNBZGRyZXNzAAkArAICAg50eXBlX2Nvc21ldGljXwUId2VhcmFibGUBCHdlYXJJdGVtAw9hc3NldElkV2VhckFibGUGZHVja0lkCGFsbFR5cGVzBAxhcnRlZmFjdE5hbWUJAQhhc1N0cmluZwEJAPwHBAkBD2dldEl0ZW1zQWRkcmVzcwACFGNoZWNrQXJ0ZWZhY3REZXRhaWxzCQDMCAIFD2Fzc2V0SWRXZWFyQWJsZQUDbmlsBQNuaWwDCQAAAgUMYXJ0ZWZhY3ROYW1lBQxhcnRlZmFjdE5hbWUDAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUJd2VhcmFibGVzBQxhcnRlZmFjdE5hbWUJAQEhAQkBCWlzRGVmaW5lZAEJARJ0cnlHZXRDb3NtZXRpY0l0ZW0BBQxhcnRlZmFjdE5hbWUHCQACAQIbV1JJVEQ6IFVuc3VwcG9ydGVkIHdlYXJhYmxlBAphcnRlZmFjdElkCQEMdHJ5R2V0U3RyaW5nAQkBD2tleUFydGVmYWN0RHVjawIFBmR1Y2tJZAUMYXJ0ZWZhY3ROYW1lBAlib29zdER1Y2sDCQAAAgUMYXJ0ZWZhY3ROYW1lAgpBUlQtWFNDQVJGCQD8BwQJAQ9nZXRJdGVtc0FkZHJlc3MAAg9tYW5pcHVsYXRlQm9vc3QJAMwIAgBFCQDMCAIFBmR1Y2tJZAUDbmlsBQNuaWwFA25pbAMJAAACBQlib29zdER1Y2sFCWJvb3N0RHVjawMJAQIhPQIFCmFydGVmYWN0SWQCAAkAAgEJAKwCAgIaRHVjayBpcyBhbHJlYWR5IHdlYXJpbmcgYSAFDGFydGVmYWN0TmFtZQQEdHlwZQkBCnRyeUdldFR5cGUBBQxhcnRlZmFjdE5hbWUDAwkBASEBBQhhbGxUeXBlcwkBAiE9AgUEdHlwZQIDUEVUBwkAAgECMllvdSBjYW4ndCBhdHRhY2ggdGhpcyBpdGVtIHRvIHlvdXIgTkZUISBQZXRzIG9ubHkhBAp0eXBlT25EdWNrAwkBAiE9AgUEdHlwZQIACQECIT0CCQEMdHJ5R2V0U3RyaW5nAQkBDGtleVR5cGVzRHVjawIFBmR1Y2tJZAUEdHlwZQIACQACAQkArAICAiZUeXBlIHVuZGVmaW5lZCwgcGxlYXNlIGNvbnRhY3QgYWRtaW5zIAUMYXJ0ZWZhY3ROYW1lAwUKdHlwZU9uRHVjawkAAgECMllvdSBjYW4gb25seSBhdHRhY2ggMSBmcm9tIGVhY2ggdHlwZSB0byB5b3VyIGR1Y2shBAp0eXBlUmVzdWx0AwkBAiE9AgUEdHlwZQIACQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlUeXBlc0R1Y2sCBQZkdWNrSWQFBHR5cGUFD2Fzc2V0SWRXZWFyQWJsZQUDbmlsBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5QXJ0ZWZhY3REdWNrAgUGZHVja0lkBQxhcnRlZmFjdE5hbWUFD2Fzc2V0SWRXZWFyQWJsZQUDbmlsBQp0eXBlUmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARV0cnlHZXRCb29sZWFuRXh0ZXJuYWwCB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCbCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFiBQckbWF0Y2gwBQFiBwEUZ2V0SWZBbGxUeXBlc0FsbG93ZWQBB2Fzc2V0SWQEBmlzc3VlcggJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAZpc3N1ZXIEC2JsYWNrbGlzdGVkCQEVdHJ5R2V0Qm9vbGVhbkV4dGVybmFsAgUGaXNzdWVyCQCsAgIJANgEAQUHYXNzZXRJZAIMX2JsYWNrbGlzdGVkAwULYmxhY2tsaXN0ZWQJAAIBAhBHTyBGVUNLIFlPVVJTRUxGBARuYW1lCAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBG5hbWUDAwkAAAIFBmlzc3VlcgkBE2dldEluY3ViYXRvckFkZHJlc3MABgkAAAIFBmlzc3VlcgkBEWdldEJyZWVkZXJBZGRyZXNzAAYDAwkAAAIFBmlzc3VlcgkBGWdldFR1cnRsZUluY3ViYXRvckFkZHJlc3MABgkAAAIFBmlzc3VlcgkBF2dldFR1cnRsZUJyZWVkZXJBZGRyZXNzAAcDAwkAAAIFBmlzc3VlcgkBGWdldENhbmluZUluY3ViYXRvckFkZHJlc3MABgkAAAIFBmlzc3VlcgkBF2dldENhbmluZUJyZWVkZXJBZGRyZXNzAAcDAwkAAAIFBmlzc3VlcgkBGWdldEZlbGluZUluY3ViYXRvckFkZHJlc3MABgkAAAIFBmlzc3VlcgkBF2dldEZlbGluZUJyZWVkZXJBZGRyZXNzAAcDCQAAAgUGaXNzdWVyCQEXZ2V0TXV0YW50QnJlZWRlckFkZHJlc3MABwkAAgECG01BRzogQXNzZXQgaXMgbm90IHN1cHBvcnRlZAQBaQEPY29uZmlndXJlT3JhY2xlAQZvcmFjbGUDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgphZG1pbiBvbmx5CQDMCAIJAQtTdHJpbmdFbnRyeQIJARdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwAFBm9yYWNsZQUDbmlsAWkBDndlYXJJdGVtVG9EdWNrAAQMZmlyc3RQYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEDXNlY29uZFBheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAQQMdmFsaWRQYXltZW50CQEWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAIJAJEDAggFAWkIcGF5bWVudHMAAgAABAZkdWNrSWQJANgEAQkBBXZhbHVlAQgFDGZpcnN0UGF5bWVudAdhc3NldElkBA1zZWNvbmRBc3NldElkCQDYBAEJAQV2YWx1ZQEIBQ1zZWNvbmRQYXltZW50B2Fzc2V0SWQDAwkBAiE9AggFDGZpcnN0UGF5bWVudAZhbW91bnQAAQYJAQIhPQIIBQ1zZWNvbmRQYXltZW50BmFtb3VudAABCQACAQIaV1JJVEQ6IE5GVCBpcyBub3QgYXR0YWNoZWQECGFsbFR5cGVzCQEUZ2V0SWZBbGxUeXBlc0FsbG93ZWQBCQEFdmFsdWUBCAUMZmlyc3RQYXltZW50B2Fzc2V0SWQJAM4IAgkAzggCCQEId2Vhckl0ZW0DBQ1zZWNvbmRBc3NldElkBQZkdWNrSWQFCGFsbFR5cGVzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCAUMZmlyc3RQYXltZW50B2Fzc2V0SWQFA25pbAUMdmFsaWRQYXltZW50AWkBEnJlbW92ZUl0ZW1Gcm9tRHVjawIIYnVybkl0ZW0MYXJ0ZWZhY3ROYW1lBAh3YXZlc0ZlZQMFCGJ1cm5JdGVtAAAJARFAZXh0ck5hdGl2ZSgxMDUwKQIJAQlnZXRPcmFjbGUACQEYc3RhdGljS2V5X2V4dHJhRmVlUmVtb3ZlAAQLZHVja1BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQPcm9ib0R1Y2tQYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAEEDHZhbGlkUGF5bWVudAkBFmNoZWNrQWRkaXRpb25hbFBheW1lbnQCCQCRAwIIBQFpCHBheW1lbnRzAAIFCHdhdmVzRmVlBAZkdWNrSWQJANgEAQkBBXZhbHVlAQgFC2R1Y2tQYXltZW50B2Fzc2V0SWQECnJvYm9EdWNrSWQJANgEAQkBBXZhbHVlAQgFD3JvYm9EdWNrUGF5bWVudAdhc3NldElkAwMJAQIhPQIIBQtkdWNrUGF5bWVudAZhbW91bnQAAQYJAQIhPQIIBQ9yb2JvRHVja1BheW1lbnQGYW1vdW50AAEJAAIBAhpXUklURDogTkZUIGlzIG5vdCBhdHRhY2hlZAQIY2hpbGRyZW4JAQVhc0ludAEJAPwHBAkBEWdldEJyZWVkZXJBZGRyZXNzAAIWdmFsaWRhdGVBbmRHZXRDaGlsZHJlbgkAzAgCBQZkdWNrSWQFA25pbAUDbmlsAwkAAAIFCGNoaWxkcmVuBQhjaGlsZHJlbgQUYXJ0ZWZhY3ROYW1lUm9ib2R1Y2sJAQhhc1N0cmluZwEJAPwHBAkBD2dldEl0ZW1zQWRkcmVzcwACFGNoZWNrQXJ0ZWZhY3REZXRhaWxzCQDMCAIFCnJvYm9EdWNrSWQFA25pbAUDbmlsAwkAAAIFFGFydGVmYWN0TmFtZVJvYm9kdWNrBRRhcnRlZmFjdE5hbWVSb2JvZHVjawMJAQIhPQIFFGFydGVmYWN0TmFtZVJvYm9kdWNrAgxBUlQtUk9CT0RVQ0sJAAIBAh9Pbmx5IHJvZG9kdWNrIGNhbiByZW1vdmUgaXRlbXMhAwMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFCXdlYXJhYmxlcwUMYXJ0ZWZhY3ROYW1lCQEBIQEJAQlpc0RlZmluZWQBCQESdHJ5R2V0Q29zbWV0aWNJdGVtAQUMYXJ0ZWZhY3ROYW1lBwkAAgECG1dSSVREOiBVbnN1cHBvcnRlZCB3ZWFyYWJsZQQKYXJ0ZWZhY3RJZAkBDHRyeUdldFN0cmluZwEJAQ9rZXlBcnRlZmFjdER1Y2sCBQZkdWNrSWQFDGFydGVmYWN0TmFtZQQJYm9vc3REdWNrAwkAAAIFDGFydGVmYWN0TmFtZQIKQVJULVhTQ0FSRgkA/AcECQEPZ2V0SXRlbXNBZGRyZXNzAAIPbWFuaXB1bGF0ZUJvb3N0CQDMCAIARQkAzAgCBQZkdWNrSWQFA25pbAUDbmlsBQNuaWwDCQAAAgUJYm9vc3REdWNrBQlib29zdER1Y2sDCQAAAgUKYXJ0ZWZhY3RJZAIACQACAQkArAICAhNEdWNrIG5vdCB3ZWFyaW5nIGEgBQxhcnRlZmFjdE5hbWUEBHR5cGUJAQp0cnlHZXRUeXBlAQUMYXJ0ZWZhY3ROYW1lBAp0eXBlUmVzdWx0AwkBAiE9AgUEdHlwZQIACQDMCAIJAQtEZWxldGVFbnRyeQEJAQxrZXlUeXBlc0R1Y2sCBQZkdWNrSWQFBHR5cGUFA25pbAUDbmlsBARidXJuAwUIYnVybkl0ZW0JAMwIAgkBBEJ1cm4CCQDZBAEFCmFydGVmYWN0SWQAAQUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFCmFydGVmYWN0SWQFA25pbAkAzggCCQDOCAIJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5QXJ0ZWZhY3REdWNrAgUGZHVja0lkBQxhcnRlZmFjdE5hbWUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEIBQtkdWNrUGF5bWVudAdhc3NldElkCQDMCAIJAQRCdXJuAgkA2QQBBQpyb2JvRHVja0lkAAEFA25pbAUEYnVybgUMdmFsaWRQYXltZW50BQp0eXBlUmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEHdlYXJYSXRlbXNUb0R1Y2sABAx2YWxpZFBheW1lbnQJARZjaGVja0FkZGl0aW9uYWxQYXltZW50AgkAkQMCCAUBaQhwYXltZW50cwABAAADCQBmAgADCQCQAwEIBQFpCHBheW1lbnRzCQACAQIxV1dYSVREOiBQbGVhc2UgYXR0YWNoIGF0IGxlYXN0IDEgaXRlbSBhbmQgMSBkdWNrIQMJAGYCCQCQAwEIBQFpCHBheW1lbnRzAAcJAAIBAjFXV1hJVEQ6IFlvdSBjYW4gb25seSBhdHRhY2ggNSBpdGVtcyBhbmQgb25lIGR1Y2shCgEKaGFuZGxlSXRlbQIDYWNjB3BheW1lbnQEBWluZGV4CQDPCAIIBQFpCHBheW1lbnRzBQdwYXltZW50AwkAAAIFBWluZGV4AAAEBmR1Y2tJZAkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkAwkBAiE9AggFB3BheW1lbnQGYW1vdW50AAEJAAIBAhtXUklURDogRHVjayBpcyBub3QgYXR0YWNoZWQECGNoaWxkcmVuCQEFYXNJbnQBCQD8BwQJARFnZXRCcmVlZGVyQWRkcmVzcwACFnZhbGlkYXRlQW5kR2V0Q2hpbGRyZW4JAMwIAgUGZHVja0lkBQNuaWwFA25pbAMJAAACBQhjaGlsZHJlbgUIY2hpbGRyZW4JAM4IAgUDYWNjCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCAUHcGF5bWVudAdhc3NldElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAM4IAgUDYWNjCQEId2Vhckl0ZW0DCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQJANgEAQkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAQdhc3NldElkBgkAzggCCgACJGwIBQFpCHBheW1lbnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpoYW5kbGVJdGVtAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBQx2YWxpZFBheW1lbnQBAnR4AQZ2ZXJpZnkAAwkBCWlzVGVzdEVudgAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkECWZpcnN0VXNlcgEgURzk/Wb/EmnS8VoUnzuy4vQ7f8HLaCeiNF5sONdX3W0ECnNlY29uZFVzZXIBIFxyDkuu8SFPZuYZRfpqorHtsTYpWV8ZzMyw4U1BiGp9BAl0aGlyZFVzZXIBIKCvkeUteUNhYTISrY65+hhZUZ0tU0k2w9Cj96hgGTtOBA9maXJzdFVzZXJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQlmaXJzdFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCWZpcnN0VXNlcgABAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUJZmlyc3RVc2VyAAEAAAQQc2Vjb25kVXNlclNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFCnNlY29uZFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCnNlY29uZFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFCnNlY29uZFVzZXIAAQAABA90aGlyZFVzZXJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQl0aGlyZFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCXRoaXJkVXNlcgABAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUJdGhpcmRVc2VyAAEAAAQPc2lnbmF0dXJlc0NvdW50CQBkAgkAZAIFD2ZpcnN0VXNlclNpZ25lZAUQc2Vjb25kVXNlclNpZ25lZAUPdGhpcmRVc2VyU2lnbmVkBAckbWF0Y2gwBQJ0eAkAZwIFD3NpZ25hdHVyZXNDb3VudAACKsHjUg==", "height": 3332593, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: J1dfTGD5c2L46L9o891ki6iC66cKaeUQu7W9v9EBhYag Next: none Diff:
OldNewDifferences
8989 func D () = Address(fromBase58String(r(A(), k())))
9090
9191
92-func E (F,G) = if (isDefined(F.assetId))
92+func E () = Address(fromBase58String(r(A(), "static_turtleIncubatorAddress")))
93+
94+
95+func F () = Address(fromBase58String(r(A(), "static_turtleBreederAddress")))
96+
97+
98+func G () = Address(fromBase58String(r(A(), "static_incubatorAddress")))
99+
100+
101+func H () = Address(fromBase58String(r(A(), "static_canineIncubatorAddress")))
102+
103+
104+func I () = Address(fromBase58String(r(A(), "static_canineBreederAddress")))
105+
106+
107+func J () = Address(fromBase58String(r(A(), "static_felineIncubatorAddress")))
108+
109+
110+func K () = Address(fromBase58String(r(A(), "static_felineBreederAddress")))
111+
112+
113+func L () = Address(fromBase58String(r(A(), "static_mutantIncubatorAddress")))
114+
115+
116+func M (N,O) = if (isDefined(N.assetId))
93117 then throw("WCAP: Please attach waves")
94118 else {
95- let H = if ((G != 0))
96- then G
119+ let P = if ((O != 0))
120+ then O
97121 else getIntegerValue(A(), i())
98- if ((F.amount != H))
99- then throw((("WCAP: Please attach exactly " + toString(H)) + " amount of wavelets"))
100- else [ScriptTransfer(D(), H, unit)]
122+ if ((N.amount != P))
123+ then throw((("WCAP: Please attach exactly " + toString(P)) + " amount of wavelets"))
124+ else [ScriptTransfer(D(), P, unit)]
101125 }
102126
103127
104-func I (J) = {
105- let b = ("direct_cosmetic_" + J)
128+func Q (R) = {
129+ let b = ("direct_cosmetic_" + R)
106130 let c = getInteger(C(), b)
107131 if ($isInstanceOf(c, "Int"))
108132 then {
113137 }
114138
115139
116-func K (o) = r(C(), ("type_cosmetic_" + o))
140+func S (o) = r(C(), ("type_cosmetic_" + o))
117141
118142
119-func L (M,n) = {
120- let N = y(invoke(C(), "checkArtefactDetails", [M], nil))
121- if ((N == N))
122- then if (if (!(containsElement(l, N)))
123- then !(isDefined(I(N)))
143+func T (U,n,V) = {
144+ let W = y(invoke(C(), "checkArtefactDetails", [U], nil))
145+ if ((W == W))
146+ then if (if (!(containsElement(l, W)))
147+ then !(isDefined(Q(W)))
124148 else false)
125149 then throw("WRITD: Unsupported wearable")
126150 else {
127- let O = u(m(n, N))
128- let P = if ((N == "ART-XSCARF"))
151+ let X = u(m(n, W))
152+ let Y = if ((W == "ART-XSCARF"))
129153 then invoke(C(), "manipulateBoost", [69, n], nil)
130154 else nil
131- if ((P == P))
132- then if ((O != ""))
133- then throw(("Duck is already wearing a " + N))
155+ if ((Y == Y))
156+ then if ((X != ""))
157+ then throw(("Duck is already wearing a " + W))
134158 else {
135- let q = K(N)
136- let Q = if ((q != ""))
137- then (u(p(n, q)) != "")
138- else throw(("Type undefined, please contact admins " + N))
139- if (Q)
140- then throw("You can only attach 1 from each type to your duck!")
159+ let q = S(W)
160+ if (if (!(V))
161+ then (q != "PET")
162+ else false)
163+ then throw("You can't attach this item to your NFT! Pets only!")
141164 else {
142- let R = if ((q != ""))
143- then [StringEntry(p(n, q), M)]
144- else nil
145- ([StringEntry(m(n, N), M)] ++ R)
165+ let Z = if ((q != ""))
166+ then (u(p(n, q)) != "")
167+ else throw(("Type undefined, please contact admins " + W))
168+ if (Z)
169+ then throw("You can only attach 1 from each type to your duck!")
170+ else {
171+ let aa = if ((q != ""))
172+ then [StringEntry(p(n, q), U)]
173+ else nil
174+ ([StringEntry(m(n, W), U)] ++ aa)
175+ }
146176 }
147177 }
148178 else throw("Strict value is not equal to itself.")
151181 }
152182
153183
154-@Callable(S)
155-func configureOracle (T) = if ((S.caller != this))
184+func ab (s,b) = {
185+ let c = getBoolean(s, b)
186+ if ($isInstanceOf(c, "Boolean"))
187+ then {
188+ let d = c
189+ d
190+ }
191+ else false
192+ }
193+
194+
195+func ac (ad) = {
196+ let ae = value(assetInfo(ad)).issuer
197+ let af = ab(ae, (toBase58String(ad) + "_blacklisted"))
198+ if (af)
199+ then throw("GO FUCK YOURSELF")
200+ else {
201+ let ag = value(assetInfo(ad)).name
202+ if (if ((ae == G()))
203+ then true
204+ else (ae == B()))
205+ then true
206+ else if (if ((ae == E()))
207+ then true
208+ else (ae == F()))
209+ then false
210+ else if (if ((ae == H()))
211+ then true
212+ else (ae == I()))
213+ then false
214+ else if (if ((ae == J()))
215+ then true
216+ else (ae == K()))
217+ then false
218+ else if ((ae == L()))
219+ then false
220+ else throw("MAG: Asset is not supported")
221+ }
222+ }
223+
224+
225+@Callable(ah)
226+func configureOracle (ai) = if ((ah.caller != this))
156227 then throw("admin only")
157- else [StringEntry(f(), T)]
228+ else [StringEntry(f(), ai)]
158229
159230
160231
161-@Callable(S)
232+@Callable(ah)
162233 func wearItemToDuck () = {
163- let U = value(S.payments[0])
164- let V = value(S.payments[1])
165- let W = E(S.payments[2], 0)
166- let n = toBase58String(value(U.assetId))
167- let X = toBase58String(value(V.assetId))
168- if (if ((U.amount != 1))
234+ let aj = value(ah.payments[0])
235+ let ak = value(ah.payments[1])
236+ let al = M(ah.payments[2], 0)
237+ let n = toBase58String(value(aj.assetId))
238+ let am = toBase58String(value(ak.assetId))
239+ if (if ((aj.amount != 1))
169240 then true
170- else (V.amount != 1))
241+ else (ak.amount != 1))
171242 then throw("WRITD: NFT is not attached")
172243 else {
173- let Y = v(invoke(B(), "validateAndGetChildren", [n], nil))
174- if ((Y == Y))
175- then ((L(X, n) ++ [ScriptTransfer(S.caller, 1, U.assetId)]) ++ W)
176- else throw("Strict value is not equal to itself.")
244+ let V = ac(value(aj.assetId))
245+ ((T(am, n, V) ++ [ScriptTransfer(ah.caller, 1, aj.assetId)]) ++ al)
177246 }
178247 }
179248
180249
181250
182-@Callable(S)
183-func removeItemFromDuck (Z,N) = {
184- let aa = if (Z)
251+@Callable(ah)
252+func removeItemFromDuck (an,W) = {
253+ let ao = if (an)
185254 then 0
186255 else getIntegerValue(A(), j())
187- let ab = value(S.payments[0])
188- let ac = value(S.payments[1])
189- let W = E(S.payments[2], aa)
190- let n = toBase58String(value(ab.assetId))
191- let ad = toBase58String(value(ac.assetId))
192- if (if ((ab.amount != 1))
256+ let ap = value(ah.payments[0])
257+ let aq = value(ah.payments[1])
258+ let al = M(ah.payments[2], ao)
259+ let n = toBase58String(value(ap.assetId))
260+ let ar = toBase58String(value(aq.assetId))
261+ if (if ((ap.amount != 1))
193262 then true
194- else (ac.amount != 1))
263+ else (aq.amount != 1))
195264 then throw("WRITD: NFT is not attached")
196265 else {
197- let Y = v(invoke(B(), "validateAndGetChildren", [n], nil))
198- if ((Y == Y))
266+ let as = v(invoke(B(), "validateAndGetChildren", [n], nil))
267+ if ((as == as))
199268 then {
200- let ae = y(invoke(C(), "checkArtefactDetails", [ad], nil))
201- if ((ae == ae))
202- then if ((ae != "ART-ROBODUCK"))
269+ let at = y(invoke(C(), "checkArtefactDetails", [ar], nil))
270+ if ((at == at))
271+ then if ((at != "ART-ROBODUCK"))
203272 then throw("Only rododuck can remove items!")
204- else if (if (!(containsElement(l, N)))
205- then !(isDefined(I(N)))
273+ else if (if (!(containsElement(l, W)))
274+ then !(isDefined(Q(W)))
206275 else false)
207276 then throw("WRITD: Unsupported wearable")
208277 else {
209- let O = u(m(n, N))
210- let P = if ((N == "ART-XSCARF"))
278+ let X = u(m(n, W))
279+ let Y = if ((W == "ART-XSCARF"))
211280 then invoke(C(), "manipulateBoost", [69, n], nil)
212281 else nil
213- if ((P == P))
214- then if ((O == ""))
215- then throw(("Duck not wearing a " + N))
282+ if ((Y == Y))
283+ then if ((X == ""))
284+ then throw(("Duck not wearing a " + W))
216285 else {
217- let q = K(N)
218- let R = if ((q != ""))
286+ let q = S(W)
287+ let aa = if ((q != ""))
219288 then [DeleteEntry(p(n, q))]
220289 else nil
221- let af = if (Z)
222- then [Burn(fromBase58String(O), 1)]
223- else [ScriptTransfer(S.caller, 1, fromBase58String(O))]
224- ((([DeleteEntry(m(n, N)), ScriptTransfer(S.caller, 1, ab.assetId), Burn(fromBase58String(ad), 1)] ++ af) ++ W) ++ R)
290+ let au = if (an)
291+ then [Burn(fromBase58String(X), 1)]
292+ else [ScriptTransfer(ah.caller, 1, fromBase58String(X))]
293+ ((([DeleteEntry(m(n, W)), ScriptTransfer(ah.caller, 1, ap.assetId), Burn(fromBase58String(ar), 1)] ++ au) ++ al) ++ aa)
225294 }
226295 else throw("Strict value is not equal to itself.")
227296 }
233302
234303
235304
236-@Callable(S)
305+@Callable(ah)
237306 func wearXItemsToDuck () = {
238- let W = E(S.payments[1], 0)
239- if ((3 > size(S.payments)))
307+ let al = M(ah.payments[1], 0)
308+ if ((3 > size(ah.payments)))
240309 then throw("WWXITD: Please attach at least 1 item and 1 duck!")
241- else if ((size(S.payments) > 7))
310+ else if ((size(ah.payments) > 7))
242311 then throw("WWXITD: You can only attach 5 items and one duck!")
243312 else {
244- func ag (ah,F) = {
245- let ai = indexOf(S.payments, F)
246- if ((ai == 0))
313+ func av (aw,N) = {
314+ let ax = indexOf(ah.payments, N)
315+ if ((ax == 0))
247316 then {
248- let n = toBase58String(value(F.assetId))
249- if ((F.amount != 1))
317+ let n = toBase58String(value(N.assetId))
318+ if ((N.amount != 1))
250319 then throw("WRITD: Duck is not attached")
251320 else {
252- let Y = v(invoke(B(), "validateAndGetChildren", [n], nil))
253- if ((Y == Y))
254- then (ah ++ [ScriptTransfer(S.caller, 1, F.assetId)])
321+ let as = v(invoke(B(), "validateAndGetChildren", [n], nil))
322+ if ((as == as))
323+ then (aw ++ [ScriptTransfer(ah.caller, 1, N.assetId)])
255324 else throw("Strict value is not equal to itself.")
256325 }
257326 }
258- else (ah ++ L(toBase58String(value(F.assetId)), toBase58String(value(S.payments[1].assetId))))
327+ else (aw ++ T(toBase58String(value(N.assetId)), toBase58String(value(ah.payments[1].assetId)), true))
259328 }
260329
261330 ({
262- let aj = S.payments
263- let ak = size(aj)
264- let al = nil
265- func am (an,ao) = if ((ao >= ak))
266- then an
267- else ag(an, aj[ao])
331+ let ay = ah.payments
332+ let az = size(ay)
333+ let aA = nil
334+ func aB (aC,aD) = if ((aD >= az))
335+ then aC
336+ else av(aC, ay[aD])
268337
269- func ap (an,ao) = if ((ao >= ak))
270- then an
338+ func aE (aC,aD) = if ((aD >= az))
339+ then aC
271340 else throw("List size exceeds 6")
272341
273- ap(am(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5), 6)
274- } ++ W)
342+ aE(aB(aB(aB(aB(aB(aB(aA, 0), 1), 2), 3), 4), 5), 6)
343+ } ++ al)
275344 }
276345 }
277346
278347
279-@Verifier(aq)
280-func ar () = if (e())
281- then sigVerify(aq.bodyBytes, aq.proofs[0], aq.senderPublicKey)
348+@Verifier(aF)
349+func aG () = if (e())
350+ then sigVerify(aF.bodyBytes, aF.proofs[0], aF.senderPublicKey)
282351 else {
283- let as = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
284- let at = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8'
285- let au = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3'
286- let av = if (sigVerify(aq.bodyBytes, aq.proofs[0], as))
352+ let aH = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
353+ let aI = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8'
354+ let aJ = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3'
355+ let aK = if (sigVerify(aF.bodyBytes, aF.proofs[0], aH))
287356 then 1
288- else if (sigVerify(aq.bodyBytes, aq.proofs[1], as))
357+ else if (sigVerify(aF.bodyBytes, aF.proofs[1], aH))
289358 then 1
290- else if (sigVerify(aq.bodyBytes, aq.proofs[2], as))
359+ else if (sigVerify(aF.bodyBytes, aF.proofs[2], aH))
291360 then 1
292361 else 0
293- let aw = if (sigVerify(aq.bodyBytes, aq.proofs[0], at))
362+ let aL = if (sigVerify(aF.bodyBytes, aF.proofs[0], aI))
294363 then 1
295- else if (sigVerify(aq.bodyBytes, aq.proofs[1], at))
364+ else if (sigVerify(aF.bodyBytes, aF.proofs[1], aI))
296365 then 1
297- else if (sigVerify(aq.bodyBytes, aq.proofs[2], at))
366+ else if (sigVerify(aF.bodyBytes, aF.proofs[2], aI))
298367 then 1
299368 else 0
300- let ax = if (sigVerify(aq.bodyBytes, aq.proofs[0], au))
369+ let aM = if (sigVerify(aF.bodyBytes, aF.proofs[0], aJ))
301370 then 1
302- else if (sigVerify(aq.bodyBytes, aq.proofs[1], au))
371+ else if (sigVerify(aF.bodyBytes, aF.proofs[1], aJ))
303372 then 1
304- else if (sigVerify(aq.bodyBytes, aq.proofs[2], au))
373+ else if (sigVerify(aF.bodyBytes, aF.proofs[2], aJ))
305374 then 1
306375 else 0
307- let ay = ((av + aw) + ax)
308- let c = aq
309- (ay >= 2)
376+ let aN = ((aK + aL) + aM)
377+ let c = aF
378+ (aN >= 2)
310379 }
311380
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = {
55 let c = getBoolean(this, b)
66 if ($isInstanceOf(c, "Boolean"))
77 then {
88 let d = c
99 d
1010 }
1111 else false
1212 }
1313
1414
1515 func e () = a("TESTENV")
1616
1717
1818 func f () = "static_oracleAddress"
1919
2020
2121 func g () = "static_breederAddress"
2222
2323
2424 func h () = "static_itemsAddress"
2525
2626
2727 func i () = "static_extraFee"
2828
2929
3030 func j () = "static_extraFeeRemove"
3131
3232
3333 func k () = "static_feeAggregator"
3434
3535
3636 let l = ["ART-CAPE", "ART-HAT", "ART-XSCARF", "ART-XSWEATER"]
3737
3838 func m (n,o) = ((n + "_") + o)
3939
4040
4141 func p (n,q) = ((n + "_") + q)
4242
4343
4444 func r (s,b) = {
4545 let c = getString(s, b)
4646 if ($isInstanceOf(c, "String"))
4747 then {
4848 let t = c
4949 t
5050 }
5151 else ""
5252 }
5353
5454
5555 func u (b) = r(this, b)
5656
5757
5858 func v (w) = {
5959 let c = w
6060 if ($isInstanceOf(c, "Int"))
6161 then {
6262 let x = c
6363 x
6464 }
6565 else throw("wrong type, expected: Int")
6666 }
6767
6868
6969 func y (w) = {
7070 let c = w
7171 if ($isInstanceOf(c, "String"))
7272 then {
7373 let z = c
7474 z
7575 }
7676 else throw("wrong type, expected: String")
7777 }
7878
7979
8080 func A () = Address(fromBase58String(u(f())))
8181
8282
8383 func B () = Address(fromBase58String(r(A(), g())))
8484
8585
8686 func C () = Address(fromBase58String(r(A(), h())))
8787
8888
8989 func D () = Address(fromBase58String(r(A(), k())))
9090
9191
92-func E (F,G) = if (isDefined(F.assetId))
92+func E () = Address(fromBase58String(r(A(), "static_turtleIncubatorAddress")))
93+
94+
95+func F () = Address(fromBase58String(r(A(), "static_turtleBreederAddress")))
96+
97+
98+func G () = Address(fromBase58String(r(A(), "static_incubatorAddress")))
99+
100+
101+func H () = Address(fromBase58String(r(A(), "static_canineIncubatorAddress")))
102+
103+
104+func I () = Address(fromBase58String(r(A(), "static_canineBreederAddress")))
105+
106+
107+func J () = Address(fromBase58String(r(A(), "static_felineIncubatorAddress")))
108+
109+
110+func K () = Address(fromBase58String(r(A(), "static_felineBreederAddress")))
111+
112+
113+func L () = Address(fromBase58String(r(A(), "static_mutantIncubatorAddress")))
114+
115+
116+func M (N,O) = if (isDefined(N.assetId))
93117 then throw("WCAP: Please attach waves")
94118 else {
95- let H = if ((G != 0))
96- then G
119+ let P = if ((O != 0))
120+ then O
97121 else getIntegerValue(A(), i())
98- if ((F.amount != H))
99- then throw((("WCAP: Please attach exactly " + toString(H)) + " amount of wavelets"))
100- else [ScriptTransfer(D(), H, unit)]
122+ if ((N.amount != P))
123+ then throw((("WCAP: Please attach exactly " + toString(P)) + " amount of wavelets"))
124+ else [ScriptTransfer(D(), P, unit)]
101125 }
102126
103127
104-func I (J) = {
105- let b = ("direct_cosmetic_" + J)
128+func Q (R) = {
129+ let b = ("direct_cosmetic_" + R)
106130 let c = getInteger(C(), b)
107131 if ($isInstanceOf(c, "Int"))
108132 then {
109133 let t = c
110134 t
111135 }
112136 else unit
113137 }
114138
115139
116-func K (o) = r(C(), ("type_cosmetic_" + o))
140+func S (o) = r(C(), ("type_cosmetic_" + o))
117141
118142
119-func L (M,n) = {
120- let N = y(invoke(C(), "checkArtefactDetails", [M], nil))
121- if ((N == N))
122- then if (if (!(containsElement(l, N)))
123- then !(isDefined(I(N)))
143+func T (U,n,V) = {
144+ let W = y(invoke(C(), "checkArtefactDetails", [U], nil))
145+ if ((W == W))
146+ then if (if (!(containsElement(l, W)))
147+ then !(isDefined(Q(W)))
124148 else false)
125149 then throw("WRITD: Unsupported wearable")
126150 else {
127- let O = u(m(n, N))
128- let P = if ((N == "ART-XSCARF"))
151+ let X = u(m(n, W))
152+ let Y = if ((W == "ART-XSCARF"))
129153 then invoke(C(), "manipulateBoost", [69, n], nil)
130154 else nil
131- if ((P == P))
132- then if ((O != ""))
133- then throw(("Duck is already wearing a " + N))
155+ if ((Y == Y))
156+ then if ((X != ""))
157+ then throw(("Duck is already wearing a " + W))
134158 else {
135- let q = K(N)
136- let Q = if ((q != ""))
137- then (u(p(n, q)) != "")
138- else throw(("Type undefined, please contact admins " + N))
139- if (Q)
140- then throw("You can only attach 1 from each type to your duck!")
159+ let q = S(W)
160+ if (if (!(V))
161+ then (q != "PET")
162+ else false)
163+ then throw("You can't attach this item to your NFT! Pets only!")
141164 else {
142- let R = if ((q != ""))
143- then [StringEntry(p(n, q), M)]
144- else nil
145- ([StringEntry(m(n, N), M)] ++ R)
165+ let Z = if ((q != ""))
166+ then (u(p(n, q)) != "")
167+ else throw(("Type undefined, please contact admins " + W))
168+ if (Z)
169+ then throw("You can only attach 1 from each type to your duck!")
170+ else {
171+ let aa = if ((q != ""))
172+ then [StringEntry(p(n, q), U)]
173+ else nil
174+ ([StringEntry(m(n, W), U)] ++ aa)
175+ }
146176 }
147177 }
148178 else throw("Strict value is not equal to itself.")
149179 }
150180 else throw("Strict value is not equal to itself.")
151181 }
152182
153183
154-@Callable(S)
155-func configureOracle (T) = if ((S.caller != this))
184+func ab (s,b) = {
185+ let c = getBoolean(s, b)
186+ if ($isInstanceOf(c, "Boolean"))
187+ then {
188+ let d = c
189+ d
190+ }
191+ else false
192+ }
193+
194+
195+func ac (ad) = {
196+ let ae = value(assetInfo(ad)).issuer
197+ let af = ab(ae, (toBase58String(ad) + "_blacklisted"))
198+ if (af)
199+ then throw("GO FUCK YOURSELF")
200+ else {
201+ let ag = value(assetInfo(ad)).name
202+ if (if ((ae == G()))
203+ then true
204+ else (ae == B()))
205+ then true
206+ else if (if ((ae == E()))
207+ then true
208+ else (ae == F()))
209+ then false
210+ else if (if ((ae == H()))
211+ then true
212+ else (ae == I()))
213+ then false
214+ else if (if ((ae == J()))
215+ then true
216+ else (ae == K()))
217+ then false
218+ else if ((ae == L()))
219+ then false
220+ else throw("MAG: Asset is not supported")
221+ }
222+ }
223+
224+
225+@Callable(ah)
226+func configureOracle (ai) = if ((ah.caller != this))
156227 then throw("admin only")
157- else [StringEntry(f(), T)]
228+ else [StringEntry(f(), ai)]
158229
159230
160231
161-@Callable(S)
232+@Callable(ah)
162233 func wearItemToDuck () = {
163- let U = value(S.payments[0])
164- let V = value(S.payments[1])
165- let W = E(S.payments[2], 0)
166- let n = toBase58String(value(U.assetId))
167- let X = toBase58String(value(V.assetId))
168- if (if ((U.amount != 1))
234+ let aj = value(ah.payments[0])
235+ let ak = value(ah.payments[1])
236+ let al = M(ah.payments[2], 0)
237+ let n = toBase58String(value(aj.assetId))
238+ let am = toBase58String(value(ak.assetId))
239+ if (if ((aj.amount != 1))
169240 then true
170- else (V.amount != 1))
241+ else (ak.amount != 1))
171242 then throw("WRITD: NFT is not attached")
172243 else {
173- let Y = v(invoke(B(), "validateAndGetChildren", [n], nil))
174- if ((Y == Y))
175- then ((L(X, n) ++ [ScriptTransfer(S.caller, 1, U.assetId)]) ++ W)
176- else throw("Strict value is not equal to itself.")
244+ let V = ac(value(aj.assetId))
245+ ((T(am, n, V) ++ [ScriptTransfer(ah.caller, 1, aj.assetId)]) ++ al)
177246 }
178247 }
179248
180249
181250
182-@Callable(S)
183-func removeItemFromDuck (Z,N) = {
184- let aa = if (Z)
251+@Callable(ah)
252+func removeItemFromDuck (an,W) = {
253+ let ao = if (an)
185254 then 0
186255 else getIntegerValue(A(), j())
187- let ab = value(S.payments[0])
188- let ac = value(S.payments[1])
189- let W = E(S.payments[2], aa)
190- let n = toBase58String(value(ab.assetId))
191- let ad = toBase58String(value(ac.assetId))
192- if (if ((ab.amount != 1))
256+ let ap = value(ah.payments[0])
257+ let aq = value(ah.payments[1])
258+ let al = M(ah.payments[2], ao)
259+ let n = toBase58String(value(ap.assetId))
260+ let ar = toBase58String(value(aq.assetId))
261+ if (if ((ap.amount != 1))
193262 then true
194- else (ac.amount != 1))
263+ else (aq.amount != 1))
195264 then throw("WRITD: NFT is not attached")
196265 else {
197- let Y = v(invoke(B(), "validateAndGetChildren", [n], nil))
198- if ((Y == Y))
266+ let as = v(invoke(B(), "validateAndGetChildren", [n], nil))
267+ if ((as == as))
199268 then {
200- let ae = y(invoke(C(), "checkArtefactDetails", [ad], nil))
201- if ((ae == ae))
202- then if ((ae != "ART-ROBODUCK"))
269+ let at = y(invoke(C(), "checkArtefactDetails", [ar], nil))
270+ if ((at == at))
271+ then if ((at != "ART-ROBODUCK"))
203272 then throw("Only rododuck can remove items!")
204- else if (if (!(containsElement(l, N)))
205- then !(isDefined(I(N)))
273+ else if (if (!(containsElement(l, W)))
274+ then !(isDefined(Q(W)))
206275 else false)
207276 then throw("WRITD: Unsupported wearable")
208277 else {
209- let O = u(m(n, N))
210- let P = if ((N == "ART-XSCARF"))
278+ let X = u(m(n, W))
279+ let Y = if ((W == "ART-XSCARF"))
211280 then invoke(C(), "manipulateBoost", [69, n], nil)
212281 else nil
213- if ((P == P))
214- then if ((O == ""))
215- then throw(("Duck not wearing a " + N))
282+ if ((Y == Y))
283+ then if ((X == ""))
284+ then throw(("Duck not wearing a " + W))
216285 else {
217- let q = K(N)
218- let R = if ((q != ""))
286+ let q = S(W)
287+ let aa = if ((q != ""))
219288 then [DeleteEntry(p(n, q))]
220289 else nil
221- let af = if (Z)
222- then [Burn(fromBase58String(O), 1)]
223- else [ScriptTransfer(S.caller, 1, fromBase58String(O))]
224- ((([DeleteEntry(m(n, N)), ScriptTransfer(S.caller, 1, ab.assetId), Burn(fromBase58String(ad), 1)] ++ af) ++ W) ++ R)
290+ let au = if (an)
291+ then [Burn(fromBase58String(X), 1)]
292+ else [ScriptTransfer(ah.caller, 1, fromBase58String(X))]
293+ ((([DeleteEntry(m(n, W)), ScriptTransfer(ah.caller, 1, ap.assetId), Burn(fromBase58String(ar), 1)] ++ au) ++ al) ++ aa)
225294 }
226295 else throw("Strict value is not equal to itself.")
227296 }
228297 else throw("Strict value is not equal to itself.")
229298 }
230299 else throw("Strict value is not equal to itself.")
231300 }
232301 }
233302
234303
235304
236-@Callable(S)
305+@Callable(ah)
237306 func wearXItemsToDuck () = {
238- let W = E(S.payments[1], 0)
239- if ((3 > size(S.payments)))
307+ let al = M(ah.payments[1], 0)
308+ if ((3 > size(ah.payments)))
240309 then throw("WWXITD: Please attach at least 1 item and 1 duck!")
241- else if ((size(S.payments) > 7))
310+ else if ((size(ah.payments) > 7))
242311 then throw("WWXITD: You can only attach 5 items and one duck!")
243312 else {
244- func ag (ah,F) = {
245- let ai = indexOf(S.payments, F)
246- if ((ai == 0))
313+ func av (aw,N) = {
314+ let ax = indexOf(ah.payments, N)
315+ if ((ax == 0))
247316 then {
248- let n = toBase58String(value(F.assetId))
249- if ((F.amount != 1))
317+ let n = toBase58String(value(N.assetId))
318+ if ((N.amount != 1))
250319 then throw("WRITD: Duck is not attached")
251320 else {
252- let Y = v(invoke(B(), "validateAndGetChildren", [n], nil))
253- if ((Y == Y))
254- then (ah ++ [ScriptTransfer(S.caller, 1, F.assetId)])
321+ let as = v(invoke(B(), "validateAndGetChildren", [n], nil))
322+ if ((as == as))
323+ then (aw ++ [ScriptTransfer(ah.caller, 1, N.assetId)])
255324 else throw("Strict value is not equal to itself.")
256325 }
257326 }
258- else (ah ++ L(toBase58String(value(F.assetId)), toBase58String(value(S.payments[1].assetId))))
327+ else (aw ++ T(toBase58String(value(N.assetId)), toBase58String(value(ah.payments[1].assetId)), true))
259328 }
260329
261330 ({
262- let aj = S.payments
263- let ak = size(aj)
264- let al = nil
265- func am (an,ao) = if ((ao >= ak))
266- then an
267- else ag(an, aj[ao])
331+ let ay = ah.payments
332+ let az = size(ay)
333+ let aA = nil
334+ func aB (aC,aD) = if ((aD >= az))
335+ then aC
336+ else av(aC, ay[aD])
268337
269- func ap (an,ao) = if ((ao >= ak))
270- then an
338+ func aE (aC,aD) = if ((aD >= az))
339+ then aC
271340 else throw("List size exceeds 6")
272341
273- ap(am(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5), 6)
274- } ++ W)
342+ aE(aB(aB(aB(aB(aB(aB(aA, 0), 1), 2), 3), 4), 5), 6)
343+ } ++ al)
275344 }
276345 }
277346
278347
279-@Verifier(aq)
280-func ar () = if (e())
281- then sigVerify(aq.bodyBytes, aq.proofs[0], aq.senderPublicKey)
348+@Verifier(aF)
349+func aG () = if (e())
350+ then sigVerify(aF.bodyBytes, aF.proofs[0], aF.senderPublicKey)
282351 else {
283- let as = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
284- let at = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8'
285- let au = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3'
286- let av = if (sigVerify(aq.bodyBytes, aq.proofs[0], as))
352+ let aH = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
353+ let aI = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8'
354+ let aJ = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3'
355+ let aK = if (sigVerify(aF.bodyBytes, aF.proofs[0], aH))
287356 then 1
288- else if (sigVerify(aq.bodyBytes, aq.proofs[1], as))
357+ else if (sigVerify(aF.bodyBytes, aF.proofs[1], aH))
289358 then 1
290- else if (sigVerify(aq.bodyBytes, aq.proofs[2], as))
359+ else if (sigVerify(aF.bodyBytes, aF.proofs[2], aH))
291360 then 1
292361 else 0
293- let aw = if (sigVerify(aq.bodyBytes, aq.proofs[0], at))
362+ let aL = if (sigVerify(aF.bodyBytes, aF.proofs[0], aI))
294363 then 1
295- else if (sigVerify(aq.bodyBytes, aq.proofs[1], at))
364+ else if (sigVerify(aF.bodyBytes, aF.proofs[1], aI))
296365 then 1
297- else if (sigVerify(aq.bodyBytes, aq.proofs[2], at))
366+ else if (sigVerify(aF.bodyBytes, aF.proofs[2], aI))
298367 then 1
299368 else 0
300- let ax = if (sigVerify(aq.bodyBytes, aq.proofs[0], au))
369+ let aM = if (sigVerify(aF.bodyBytes, aF.proofs[0], aJ))
301370 then 1
302- else if (sigVerify(aq.bodyBytes, aq.proofs[1], au))
371+ else if (sigVerify(aF.bodyBytes, aF.proofs[1], aJ))
303372 then 1
304- else if (sigVerify(aq.bodyBytes, aq.proofs[2], au))
373+ else if (sigVerify(aF.bodyBytes, aF.proofs[2], aJ))
305374 then 1
306375 else 0
307- let ay = ((av + aw) + ax)
308- let c = aq
309- (ay >= 2)
376+ let aN = ((aK + aL) + aM)
377+ let c = aF
378+ (aN >= 2)
310379 }
311380

github/deemru/w8io/c3f4982 
76.54 ms