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: A58P45XBxWJVReZM3jtpcTPjNFDBCPrSiJXboKL9HHWK Diff:
Old | New | Differences | |
---|---|---|---|
89 | 89 | func D () = Address(fromBase58String(r(A(), k()))) | |
90 | 90 | ||
91 | 91 | ||
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)) | |
93 | 117 | then throw("WCAP: Please attach waves") | |
94 | 118 | else { | |
95 | - | let | |
96 | - | then | |
119 | + | let P = if ((O != 0)) | |
120 | + | then O | |
97 | 121 | else getIntegerValue(A(), i()) | |
98 | - | if (( | |
99 | - | then throw((("WCAP: Please attach exactly " + toString( | |
100 | - | else [ScriptTransfer(D(), | |
122 | + | if ((N.amount != P)) | |
123 | + | then throw((("WCAP: Please attach exactly " + toString(P)) + " amount of wavelets")) | |
124 | + | else [ScriptTransfer(D(), P, unit)] | |
101 | 125 | } | |
102 | 126 | ||
103 | 127 | ||
104 | - | func | |
105 | - | let b = ("direct_cosmetic_" + | |
128 | + | func Q (R) = { | |
129 | + | let b = ("direct_cosmetic_" + R) | |
106 | 130 | let c = getInteger(C(), b) | |
107 | 131 | if ($isInstanceOf(c, "Int")) | |
108 | 132 | then { | |
113 | 137 | } | |
114 | 138 | ||
115 | 139 | ||
116 | - | func | |
140 | + | func S (o) = r(C(), ("type_cosmetic_" + o)) | |
117 | 141 | ||
118 | 142 | ||
119 | - | func | |
120 | - | let | |
121 | - | if (( | |
122 | - | then if (if (!(containsElement(l, | |
123 | - | then !(isDefined( | |
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))) | |
124 | 148 | else false) | |
125 | 149 | then throw("WRITD: Unsupported wearable") | |
126 | 150 | else { | |
127 | - | let | |
128 | - | let | |
151 | + | let X = u(m(n, W)) | |
152 | + | let Y = if ((W == "ART-XSCARF")) | |
129 | 153 | then invoke(C(), "manipulateBoost", [69, n], nil) | |
130 | 154 | else nil | |
131 | - | if (( | |
132 | - | then if (( | |
133 | - | then throw(("Duck is already wearing a " + | |
155 | + | if ((Y == Y)) | |
156 | + | then if ((X != "")) | |
157 | + | then throw(("Duck is already wearing a " + W)) | |
134 | 158 | 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!") | |
141 | 164 | 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 | + | } | |
146 | 176 | } | |
147 | 177 | } | |
148 | 178 | else throw("Strict value is not equal to itself.") | |
151 | 181 | } | |
152 | 182 | ||
153 | 183 | ||
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)) | |
156 | 227 | then throw("admin only") | |
157 | - | else [StringEntry(f(), | |
228 | + | else [StringEntry(f(), ai)] | |
158 | 229 | ||
159 | 230 | ||
160 | 231 | ||
161 | - | @Callable( | |
232 | + | @Callable(ah) | |
162 | 233 | func wearItemToDuck () = { | |
163 | - | let | |
164 | - | let | |
165 | - | let | |
166 | - | let n = toBase58String(value( | |
167 | - | let | |
168 | - | if (if (( | |
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)) | |
169 | 240 | then true | |
170 | - | else ( | |
241 | + | else (ak.amount != 1)) | |
171 | 242 | then throw("WRITD: NFT is not attached") | |
172 | 243 | 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) | |
177 | 246 | } | |
178 | 247 | } | |
179 | 248 | ||
180 | 249 | ||
181 | 250 | ||
182 | - | @Callable( | |
183 | - | func removeItemFromDuck ( | |
184 | - | let | |
251 | + | @Callable(ah) | |
252 | + | func removeItemFromDuck (an,W) = { | |
253 | + | let ao = if (an) | |
185 | 254 | then 0 | |
186 | 255 | else getIntegerValue(A(), j()) | |
187 | - | let | |
188 | - | let | |
189 | - | let | |
190 | - | let n = toBase58String(value( | |
191 | - | let | |
192 | - | if (if (( | |
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)) | |
193 | 262 | then true | |
194 | - | else ( | |
263 | + | else (aq.amount != 1)) | |
195 | 264 | then throw("WRITD: NFT is not attached") | |
196 | 265 | else { | |
197 | - | let | |
198 | - | if (( | |
266 | + | let as = v(invoke(B(), "validateAndGetChildren", [n], nil)) | |
267 | + | if ((as == as)) | |
199 | 268 | then { | |
200 | - | let | |
201 | - | if (( | |
202 | - | then if (( | |
269 | + | let at = y(invoke(C(), "checkArtefactDetails", [ar], nil)) | |
270 | + | if ((at == at)) | |
271 | + | then if ((at != "ART-ROBODUCK")) | |
203 | 272 | then throw("Only rododuck can remove items!") | |
204 | - | else if (if (!(containsElement(l, | |
205 | - | then !(isDefined( | |
273 | + | else if (if (!(containsElement(l, W))) | |
274 | + | then !(isDefined(Q(W))) | |
206 | 275 | else false) | |
207 | 276 | then throw("WRITD: Unsupported wearable") | |
208 | 277 | else { | |
209 | - | let | |
210 | - | let | |
278 | + | let X = u(m(n, W)) | |
279 | + | let Y = if ((W == "ART-XSCARF")) | |
211 | 280 | then invoke(C(), "manipulateBoost", [69, n], nil) | |
212 | 281 | else nil | |
213 | - | if (( | |
214 | - | then if (( | |
215 | - | then throw(("Duck not wearing a " + | |
282 | + | if ((Y == Y)) | |
283 | + | then if ((X == "")) | |
284 | + | then throw(("Duck not wearing a " + W)) | |
216 | 285 | else { | |
217 | - | let q = | |
218 | - | let | |
286 | + | let q = S(W) | |
287 | + | let aa = if ((q != "")) | |
219 | 288 | then [DeleteEntry(p(n, q))] | |
220 | 289 | else nil | |
221 | - | let | |
222 | - | then [Burn(fromBase58String( | |
223 | - | else [ScriptTransfer( | |
224 | - | ((([DeleteEntry(m(n, | |
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) | |
225 | 294 | } | |
226 | 295 | else throw("Strict value is not equal to itself.") | |
227 | 296 | } | |
233 | 302 | ||
234 | 303 | ||
235 | 304 | ||
236 | - | @Callable( | |
305 | + | @Callable(ah) | |
237 | 306 | func wearXItemsToDuck () = { | |
238 | - | let | |
239 | - | if ((3 > size( | |
307 | + | let al = M(ah.payments[1], 0) | |
308 | + | if ((3 > size(ah.payments))) | |
240 | 309 | then throw("WWXITD: Please attach at least 1 item and 1 duck!") | |
241 | - | else if ((size( | |
310 | + | else if ((size(ah.payments) > 7)) | |
242 | 311 | then throw("WWXITD: You can only attach 5 items and one duck!") | |
243 | 312 | else { | |
244 | - | func | |
245 | - | let | |
246 | - | if (( | |
313 | + | func av (aw,N) = { | |
314 | + | let ax = indexOf(ah.payments, N) | |
315 | + | if ((ax == 0)) | |
247 | 316 | then { | |
248 | - | let n = toBase58String(value( | |
249 | - | if (( | |
317 | + | let n = toBase58String(value(N.assetId)) | |
318 | + | if ((N.amount != 1)) | |
250 | 319 | then throw("WRITD: Duck is not attached") | |
251 | 320 | else { | |
252 | - | let | |
253 | - | if (( | |
254 | - | then ( | |
321 | + | let as = v(invoke(B(), "validateAndGetChildren", [n], nil)) | |
322 | + | if ((as == as)) | |
323 | + | then (aw ++ [ScriptTransfer(ah.caller, 1, N.assetId)]) | |
255 | 324 | else throw("Strict value is not equal to itself.") | |
256 | 325 | } | |
257 | 326 | } | |
258 | - | else ( | |
327 | + | else (aw ++ T(toBase58String(value(N.assetId)), toBase58String(value(ah.payments[1].assetId)), true)) | |
259 | 328 | } | |
260 | 329 | ||
261 | 330 | ({ | |
262 | - | let | |
263 | - | let | |
264 | - | let | |
265 | - | func | |
266 | - | then | |
267 | - | else | |
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]) | |
268 | 337 | ||
269 | - | func | |
270 | - | then | |
338 | + | func aE (aC,aD) = if ((aD >= az)) | |
339 | + | then aC | |
271 | 340 | else throw("List size exceeds 6") | |
272 | 341 | ||
273 | - | | |
274 | - | } ++ | |
342 | + | aE(aB(aB(aB(aB(aB(aB(aA, 0), 1), 2), 3), 4), 5), 6) | |
343 | + | } ++ al) | |
275 | 344 | } | |
276 | 345 | } | |
277 | 346 | ||
278 | 347 | ||
279 | - | @Verifier( | |
280 | - | func | |
281 | - | then sigVerify( | |
348 | + | @Verifier(aF) | |
349 | + | func aG () = if (e()) | |
350 | + | then sigVerify(aF.bodyBytes, aF.proofs[0], aF.senderPublicKey) | |
282 | 351 | else { | |
283 | - | let | |
284 | - | let | |
285 | - | let | |
286 | - | let | |
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)) | |
287 | 356 | then 1 | |
288 | - | else if (sigVerify( | |
357 | + | else if (sigVerify(aF.bodyBytes, aF.proofs[1], aH)) | |
289 | 358 | then 1 | |
290 | - | else if (sigVerify( | |
359 | + | else if (sigVerify(aF.bodyBytes, aF.proofs[2], aH)) | |
291 | 360 | then 1 | |
292 | 361 | else 0 | |
293 | - | let | |
362 | + | let aL = if (sigVerify(aF.bodyBytes, aF.proofs[0], aI)) | |
294 | 363 | then 1 | |
295 | - | else if (sigVerify( | |
364 | + | else if (sigVerify(aF.bodyBytes, aF.proofs[1], aI)) | |
296 | 365 | then 1 | |
297 | - | else if (sigVerify( | |
366 | + | else if (sigVerify(aF.bodyBytes, aF.proofs[2], aI)) | |
298 | 367 | then 1 | |
299 | 368 | else 0 | |
300 | - | let | |
369 | + | let aM = if (sigVerify(aF.bodyBytes, aF.proofs[0], aJ)) | |
301 | 370 | then 1 | |
302 | - | else if (sigVerify( | |
371 | + | else if (sigVerify(aF.bodyBytes, aF.proofs[1], aJ)) | |
303 | 372 | then 1 | |
304 | - | else if (sigVerify( | |
373 | + | else if (sigVerify(aF.bodyBytes, aF.proofs[2], aJ)) | |
305 | 374 | then 1 | |
306 | 375 | else 0 | |
307 | - | let | |
308 | - | let c = | |
309 | - | ( | |
376 | + | let aN = ((aK + aL) + aM) | |
377 | + | let c = aF | |
378 | + | (aN >= 2) | |
310 | 379 | } | |
311 | 380 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func a (b) = { | |
5 | 5 | let c = getBoolean(this, b) | |
6 | 6 | if ($isInstanceOf(c, "Boolean")) | |
7 | 7 | then { | |
8 | 8 | let d = c | |
9 | 9 | d | |
10 | 10 | } | |
11 | 11 | else false | |
12 | 12 | } | |
13 | 13 | ||
14 | 14 | ||
15 | 15 | func e () = a("TESTENV") | |
16 | 16 | ||
17 | 17 | ||
18 | 18 | func f () = "static_oracleAddress" | |
19 | 19 | ||
20 | 20 | ||
21 | 21 | func g () = "static_breederAddress" | |
22 | 22 | ||
23 | 23 | ||
24 | 24 | func h () = "static_itemsAddress" | |
25 | 25 | ||
26 | 26 | ||
27 | 27 | func i () = "static_extraFee" | |
28 | 28 | ||
29 | 29 | ||
30 | 30 | func j () = "static_extraFeeRemove" | |
31 | 31 | ||
32 | 32 | ||
33 | 33 | func k () = "static_feeAggregator" | |
34 | 34 | ||
35 | 35 | ||
36 | 36 | let l = ["ART-CAPE", "ART-HAT", "ART-XSCARF", "ART-XSWEATER"] | |
37 | 37 | ||
38 | 38 | func m (n,o) = ((n + "_") + o) | |
39 | 39 | ||
40 | 40 | ||
41 | 41 | func p (n,q) = ((n + "_") + q) | |
42 | 42 | ||
43 | 43 | ||
44 | 44 | func r (s,b) = { | |
45 | 45 | let c = getString(s, b) | |
46 | 46 | if ($isInstanceOf(c, "String")) | |
47 | 47 | then { | |
48 | 48 | let t = c | |
49 | 49 | t | |
50 | 50 | } | |
51 | 51 | else "" | |
52 | 52 | } | |
53 | 53 | ||
54 | 54 | ||
55 | 55 | func u (b) = r(this, b) | |
56 | 56 | ||
57 | 57 | ||
58 | 58 | func v (w) = { | |
59 | 59 | let c = w | |
60 | 60 | if ($isInstanceOf(c, "Int")) | |
61 | 61 | then { | |
62 | 62 | let x = c | |
63 | 63 | x | |
64 | 64 | } | |
65 | 65 | else throw("wrong type, expected: Int") | |
66 | 66 | } | |
67 | 67 | ||
68 | 68 | ||
69 | 69 | func y (w) = { | |
70 | 70 | let c = w | |
71 | 71 | if ($isInstanceOf(c, "String")) | |
72 | 72 | then { | |
73 | 73 | let z = c | |
74 | 74 | z | |
75 | 75 | } | |
76 | 76 | else throw("wrong type, expected: String") | |
77 | 77 | } | |
78 | 78 | ||
79 | 79 | ||
80 | 80 | func A () = Address(fromBase58String(u(f()))) | |
81 | 81 | ||
82 | 82 | ||
83 | 83 | func B () = Address(fromBase58String(r(A(), g()))) | |
84 | 84 | ||
85 | 85 | ||
86 | 86 | func C () = Address(fromBase58String(r(A(), h()))) | |
87 | 87 | ||
88 | 88 | ||
89 | 89 | func D () = Address(fromBase58String(r(A(), k()))) | |
90 | 90 | ||
91 | 91 | ||
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)) | |
93 | 117 | then throw("WCAP: Please attach waves") | |
94 | 118 | else { | |
95 | - | let | |
96 | - | then | |
119 | + | let P = if ((O != 0)) | |
120 | + | then O | |
97 | 121 | else getIntegerValue(A(), i()) | |
98 | - | if (( | |
99 | - | then throw((("WCAP: Please attach exactly " + toString( | |
100 | - | else [ScriptTransfer(D(), | |
122 | + | if ((N.amount != P)) | |
123 | + | then throw((("WCAP: Please attach exactly " + toString(P)) + " amount of wavelets")) | |
124 | + | else [ScriptTransfer(D(), P, unit)] | |
101 | 125 | } | |
102 | 126 | ||
103 | 127 | ||
104 | - | func | |
105 | - | let b = ("direct_cosmetic_" + | |
128 | + | func Q (R) = { | |
129 | + | let b = ("direct_cosmetic_" + R) | |
106 | 130 | let c = getInteger(C(), b) | |
107 | 131 | if ($isInstanceOf(c, "Int")) | |
108 | 132 | then { | |
109 | 133 | let t = c | |
110 | 134 | t | |
111 | 135 | } | |
112 | 136 | else unit | |
113 | 137 | } | |
114 | 138 | ||
115 | 139 | ||
116 | - | func | |
140 | + | func S (o) = r(C(), ("type_cosmetic_" + o)) | |
117 | 141 | ||
118 | 142 | ||
119 | - | func | |
120 | - | let | |
121 | - | if (( | |
122 | - | then if (if (!(containsElement(l, | |
123 | - | then !(isDefined( | |
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))) | |
124 | 148 | else false) | |
125 | 149 | then throw("WRITD: Unsupported wearable") | |
126 | 150 | else { | |
127 | - | let | |
128 | - | let | |
151 | + | let X = u(m(n, W)) | |
152 | + | let Y = if ((W == "ART-XSCARF")) | |
129 | 153 | then invoke(C(), "manipulateBoost", [69, n], nil) | |
130 | 154 | else nil | |
131 | - | if (( | |
132 | - | then if (( | |
133 | - | then throw(("Duck is already wearing a " + | |
155 | + | if ((Y == Y)) | |
156 | + | then if ((X != "")) | |
157 | + | then throw(("Duck is already wearing a " + W)) | |
134 | 158 | 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!") | |
141 | 164 | 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 | + | } | |
146 | 176 | } | |
147 | 177 | } | |
148 | 178 | else throw("Strict value is not equal to itself.") | |
149 | 179 | } | |
150 | 180 | else throw("Strict value is not equal to itself.") | |
151 | 181 | } | |
152 | 182 | ||
153 | 183 | ||
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)) | |
156 | 227 | then throw("admin only") | |
157 | - | else [StringEntry(f(), | |
228 | + | else [StringEntry(f(), ai)] | |
158 | 229 | ||
159 | 230 | ||
160 | 231 | ||
161 | - | @Callable( | |
232 | + | @Callable(ah) | |
162 | 233 | func wearItemToDuck () = { | |
163 | - | let | |
164 | - | let | |
165 | - | let | |
166 | - | let n = toBase58String(value( | |
167 | - | let | |
168 | - | if (if (( | |
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)) | |
169 | 240 | then true | |
170 | - | else ( | |
241 | + | else (ak.amount != 1)) | |
171 | 242 | then throw("WRITD: NFT is not attached") | |
172 | 243 | 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) | |
177 | 246 | } | |
178 | 247 | } | |
179 | 248 | ||
180 | 249 | ||
181 | 250 | ||
182 | - | @Callable( | |
183 | - | func removeItemFromDuck ( | |
184 | - | let | |
251 | + | @Callable(ah) | |
252 | + | func removeItemFromDuck (an,W) = { | |
253 | + | let ao = if (an) | |
185 | 254 | then 0 | |
186 | 255 | else getIntegerValue(A(), j()) | |
187 | - | let | |
188 | - | let | |
189 | - | let | |
190 | - | let n = toBase58String(value( | |
191 | - | let | |
192 | - | if (if (( | |
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)) | |
193 | 262 | then true | |
194 | - | else ( | |
263 | + | else (aq.amount != 1)) | |
195 | 264 | then throw("WRITD: NFT is not attached") | |
196 | 265 | else { | |
197 | - | let | |
198 | - | if (( | |
266 | + | let as = v(invoke(B(), "validateAndGetChildren", [n], nil)) | |
267 | + | if ((as == as)) | |
199 | 268 | then { | |
200 | - | let | |
201 | - | if (( | |
202 | - | then if (( | |
269 | + | let at = y(invoke(C(), "checkArtefactDetails", [ar], nil)) | |
270 | + | if ((at == at)) | |
271 | + | then if ((at != "ART-ROBODUCK")) | |
203 | 272 | then throw("Only rododuck can remove items!") | |
204 | - | else if (if (!(containsElement(l, | |
205 | - | then !(isDefined( | |
273 | + | else if (if (!(containsElement(l, W))) | |
274 | + | then !(isDefined(Q(W))) | |
206 | 275 | else false) | |
207 | 276 | then throw("WRITD: Unsupported wearable") | |
208 | 277 | else { | |
209 | - | let | |
210 | - | let | |
278 | + | let X = u(m(n, W)) | |
279 | + | let Y = if ((W == "ART-XSCARF")) | |
211 | 280 | then invoke(C(), "manipulateBoost", [69, n], nil) | |
212 | 281 | else nil | |
213 | - | if (( | |
214 | - | then if (( | |
215 | - | then throw(("Duck not wearing a " + | |
282 | + | if ((Y == Y)) | |
283 | + | then if ((X == "")) | |
284 | + | then throw(("Duck not wearing a " + W)) | |
216 | 285 | else { | |
217 | - | let q = | |
218 | - | let | |
286 | + | let q = S(W) | |
287 | + | let aa = if ((q != "")) | |
219 | 288 | then [DeleteEntry(p(n, q))] | |
220 | 289 | else nil | |
221 | - | let | |
222 | - | then [Burn(fromBase58String( | |
223 | - | else [ScriptTransfer( | |
224 | - | ((([DeleteEntry(m(n, | |
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) | |
225 | 294 | } | |
226 | 295 | else throw("Strict value is not equal to itself.") | |
227 | 296 | } | |
228 | 297 | else throw("Strict value is not equal to itself.") | |
229 | 298 | } | |
230 | 299 | else throw("Strict value is not equal to itself.") | |
231 | 300 | } | |
232 | 301 | } | |
233 | 302 | ||
234 | 303 | ||
235 | 304 | ||
236 | - | @Callable( | |
305 | + | @Callable(ah) | |
237 | 306 | func wearXItemsToDuck () = { | |
238 | - | let | |
239 | - | if ((3 > size( | |
307 | + | let al = M(ah.payments[1], 0) | |
308 | + | if ((3 > size(ah.payments))) | |
240 | 309 | then throw("WWXITD: Please attach at least 1 item and 1 duck!") | |
241 | - | else if ((size( | |
310 | + | else if ((size(ah.payments) > 7)) | |
242 | 311 | then throw("WWXITD: You can only attach 5 items and one duck!") | |
243 | 312 | else { | |
244 | - | func | |
245 | - | let | |
246 | - | if (( | |
313 | + | func av (aw,N) = { | |
314 | + | let ax = indexOf(ah.payments, N) | |
315 | + | if ((ax == 0)) | |
247 | 316 | then { | |
248 | - | let n = toBase58String(value( | |
249 | - | if (( | |
317 | + | let n = toBase58String(value(N.assetId)) | |
318 | + | if ((N.amount != 1)) | |
250 | 319 | then throw("WRITD: Duck is not attached") | |
251 | 320 | else { | |
252 | - | let | |
253 | - | if (( | |
254 | - | then ( | |
321 | + | let as = v(invoke(B(), "validateAndGetChildren", [n], nil)) | |
322 | + | if ((as == as)) | |
323 | + | then (aw ++ [ScriptTransfer(ah.caller, 1, N.assetId)]) | |
255 | 324 | else throw("Strict value is not equal to itself.") | |
256 | 325 | } | |
257 | 326 | } | |
258 | - | else ( | |
327 | + | else (aw ++ T(toBase58String(value(N.assetId)), toBase58String(value(ah.payments[1].assetId)), true)) | |
259 | 328 | } | |
260 | 329 | ||
261 | 330 | ({ | |
262 | - | let | |
263 | - | let | |
264 | - | let | |
265 | - | func | |
266 | - | then | |
267 | - | else | |
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]) | |
268 | 337 | ||
269 | - | func | |
270 | - | then | |
338 | + | func aE (aC,aD) = if ((aD >= az)) | |
339 | + | then aC | |
271 | 340 | else throw("List size exceeds 6") | |
272 | 341 | ||
273 | - | | |
274 | - | } ++ | |
342 | + | aE(aB(aB(aB(aB(aB(aB(aA, 0), 1), 2), 3), 4), 5), 6) | |
343 | + | } ++ al) | |
275 | 344 | } | |
276 | 345 | } | |
277 | 346 | ||
278 | 347 | ||
279 | - | @Verifier( | |
280 | - | func | |
281 | - | then sigVerify( | |
348 | + | @Verifier(aF) | |
349 | + | func aG () = if (e()) | |
350 | + | then sigVerify(aF.bodyBytes, aF.proofs[0], aF.senderPublicKey) | |
282 | 351 | else { | |
283 | - | let | |
284 | - | let | |
285 | - | let | |
286 | - | let | |
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)) | |
287 | 356 | then 1 | |
288 | - | else if (sigVerify( | |
357 | + | else if (sigVerify(aF.bodyBytes, aF.proofs[1], aH)) | |
289 | 358 | then 1 | |
290 | - | else if (sigVerify( | |
359 | + | else if (sigVerify(aF.bodyBytes, aF.proofs[2], aH)) | |
291 | 360 | then 1 | |
292 | 361 | else 0 | |
293 | - | let | |
362 | + | let aL = if (sigVerify(aF.bodyBytes, aF.proofs[0], aI)) | |
294 | 363 | then 1 | |
295 | - | else if (sigVerify( | |
364 | + | else if (sigVerify(aF.bodyBytes, aF.proofs[1], aI)) | |
296 | 365 | then 1 | |
297 | - | else if (sigVerify( | |
366 | + | else if (sigVerify(aF.bodyBytes, aF.proofs[2], aI)) | |
298 | 367 | then 1 | |
299 | 368 | else 0 | |
300 | - | let | |
369 | + | let aM = if (sigVerify(aF.bodyBytes, aF.proofs[0], aJ)) | |
301 | 370 | then 1 | |
302 | - | else if (sigVerify( | |
371 | + | else if (sigVerify(aF.bodyBytes, aF.proofs[1], aJ)) | |
303 | 372 | then 1 | |
304 | - | else if (sigVerify( | |
373 | + | else if (sigVerify(aF.bodyBytes, aF.proofs[2], aJ)) | |
305 | 374 | then 1 | |
306 | 375 | else 0 | |
307 | - | let | |
308 | - | let c = | |
309 | - | ( | |
376 | + | let aN = ((aK + aL) + aM) | |
377 | + | let c = aF | |
378 | + | (aN >= 2) | |
310 | 379 | } | |
311 | 380 |
github/deemru/w8io/169f3d6 79.09 ms ◑