tx · 4uPdE8A1erZqYRSLZFRS2c42mxr6Aaa41TmCAUCYoVkV

3P3pDosq4GCwfJkvq4yqKvvoTwmoqc9qPmo:  -0.01000000 Waves

2023.10.02 21:26 [3847205] smart account 3P3pDosq4GCwfJkvq4yqKvvoTwmoqc9qPmo > SELF 0.00000000 Waves

{ "type": 13, "id": "4uPdE8A1erZqYRSLZFRS2c42mxr6Aaa41TmCAUCYoVkV", "fee": 1000000, "feeAssetId": null, "timestamp": 1696271211491, "version": 2, "chainId": 87, "sender": "3P3pDosq4GCwfJkvq4yqKvvoTwmoqc9qPmo", "senderPublicKey": "kGiN3HQLLzkjcQVfSrY4H1JRUTjPhJhMgiTQeXsEoPV", "proofs": [ "2JMvqe8cAW6qqGCo4yeLSpKxYrGqrrTDVWbYmAsrBDLUZaYgD3G2YHPXGMsUGBVPSUyPorj3xuzYg1kwW4Moh2EJ" ], "script": "base64:BgILCAISAwoBCBIAEgASARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIHYWRkcmVzcwNrZXkEByRtYXRjaDAJAJ0IAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAUBYQIAAQx0cnlHZXRTdHJpbmcBA2tleQQHJG1hdGNoMAkAnQgCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgABCWdldE9yYWNsZQAJAQdBZGRyZXNzAQkA2QQBCQEMdHJ5R2V0U3RyaW5nAQIUc3RhdGljX29yYWNsZUFkZHJlc3MBEWdldEJyZWVkZXJBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUAAhVzdGF0aWNfYnJlZWRlckFkZHJlc3MBE2dldEluY3ViYXRvckFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQACF3N0YXRpY19pbmN1YmF0b3JBZGRyZXNzAQ9nZXRJdGVtc0FkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQACE3N0YXRpY19pdGVtc0FkZHJlc3MBEWdldEZhcm1pbmdBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUAAhVzdGF0aWNfZmFybWluZ0FkZHJlc3MBDWdldEVnZ0Fzc2V0SWQACQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUAAhFzdGF0aWNfZWdnQXNzZXRJZAAZbmZ0Q3JlYXRpb25BZGRyZXNzR2F0ZXdheQEaAVdGR6DR0sHleqoO0sP1O6bCXS6+y8ji1HIACm5mdEdhdGV3YXkBGgFX7luY5v8F+sqqIkmZYWyEqUrU8OK/iDp0AQ10cnlHZXRJbnRlZ2VyAQNrZXkEByRtYXRjaDAJAJoIAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAAAQhhc1N0cmluZwEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACBlN0cmluZwQGc3RyaW5nBQckbWF0Y2gwBQZzdHJpbmcJAAIBAhx3cm9uZyB0eXBlLCBleHBlY3RlZDogU3RyaW5nAQVhc0ludAEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACA0ludAQDaW50BQckbWF0Y2gwBQNpbnQJAAIBAhl3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50AQ1pc0phY2twb3REdWNrAQ5hc3NldE5hbWVQYXJ0cwkAAAIJAJEDAgUOYXNzZXROYW1lUGFydHMJAGUCCQCQAwEFDmFzc2V0TmFtZVBhcnRzAAICAUoBEGdldEFtb3VudE9yQ2xlYXIBBmFtb3VudAMJAQhjb250YWlucwIFBmFtb3VudAIBMAIABQZhbW91bnQBDmdldEFzc2V0T3JpZ2luAQpnZW5lcmF0aW9uAwkAAAIFCmdlbmVyYXRpb24CAUcJARNnZXRJbmN1YmF0b3JBZGRyZXNzAAkBEWdldEJyZWVkZXJBZGRyZXNzAAEOZ2V0QXNzZXRSYXJpdHkCCGdlbm90eXBlCmdlbmVyYXRpb24ECHF1YW50aXR5CQERQGV4dHJOYXRpdmUoMTA1MCkCCQEOZ2V0QXNzZXRPcmlnaW4BBQpnZW5lcmF0aW9uCQCsAgIJAKwCAgIGc3RhdHNfBQhnZW5vdHlwZQIJX3F1YW50aXR5BAVwb3dlcgkAbAYJAGkCAJBOBQhxdWFudGl0eQAEAAUAAQACBQVGTE9PUgMJAGYCBQVwb3dlcgAABQVwb3dlcgACARRnZXRBc3NldEZhcm1pbmdQb3dlcgEHYXNzZXRJZAMDCQAAAggJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAZpc3N1ZXIJARFnZXRCcmVlZGVyQWRkcmVzcwAGCQAAAggJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAZpc3N1ZXIJARNnZXRJbmN1YmF0b3JBZGRyZXNzAAQJZmFybUJvb3N0CQEFYXNJbnQBCQD8BwQJAQ9nZXRJdGVtc0FkZHJlc3MAAhpjYWxjdWxhdGVGYXJtaW5nUG93ZXJCb29zdAkAzAgCCQDYBAEFB2Fzc2V0SWQJAMwIAgINVW51c2VkQWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUJZmFybUJvb3N0BQlmYXJtQm9vc3QECWFzc2V0TmFtZQgJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZARuYW1lBAlpc0phY2twb3QJAAACCQCyAgIJAQV2YWx1ZQEFCWFzc2V0TmFtZQABAgFVBAdmYXJtR2VuAwUJaXNKYWNrcG90AgAJAQhhc1N0cmluZwEJAPwHBAkBEWdldEJyZWVkZXJBZGRyZXNzAAIOZ2V0R2VuRnJvbU5hbWUJAMwIAgUJYXNzZXROYW1lBQNuaWwFA25pbAMJAAACBQdmYXJtR2VuBQdmYXJtR2VuBAZyYXJpdHkDBQlpc0phY2twb3QAZAQKZ2VuZXJhdGlvbgkArwICCQCyAgIFCWFzc2V0TmFtZQACAAEJAQ5nZXRBc3NldFJhcml0eQIFB2Zhcm1HZW4FCmdlbmVyYXRpb24EEXRvdGFsRmFybWluZ1Bvd2VyCQBkAgUGcmFyaXR5CQBrAwUGcmFyaXR5BQlmYXJtQm9vc3QAZAkAlAoCBQdmYXJtR2VuBRF0b3RhbEZhcm1pbmdQb3dlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECDW5vdCB2YWxpZCBORlQDAWkBD2NvbmZpZ3VyZU9yYWNsZQEGb3JhY2xlAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIKYWRtaW4gb25seQkAzAgCCQELU3RyaW5nRW50cnkCAhRzdGF0aWNfb3JhY2xlQWRkcmVzcwUGb3JhY2xlBQNuaWwBaQEEbG9jawADCQECIT0CCAUBaQZjYWxsZXIJAQdBZGRyZXNzAQUZbmZ0Q3JlYXRpb25BZGRyZXNzR2F0ZXdheQkAAgECE0RMOiBOb3QgYXV0aG9yaXplZCEECmFkZHJlc3NTdHIJAKUIAQgFAWkGY2FsbGVyBAdhc3NldElkCQEFdmFsdWUBCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQEC2Fzc2V0SXNzdWVyCAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBmlzc3VlcgQJYXNzZXROYW1lCQEFdmFsdWUBCAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBG5hbWUEDmFzc2V0TmFtZVBhcnRzCQC1CQIFCWFzc2V0TmFtZQIABAlpc0phY2twb3QJAQ1pc0phY2twb3REdWNrAQUOYXNzZXROYW1lUGFydHMECmFzc2V0Q29sb3IDBQlpc0phY2twb3QCAUcJAJEDAgkAtQkCBQlhc3NldE5hbWUCAAkAZQIJAJADAQkAtQkCBQlhc3NldE5hbWUCAAABBAthc3NldFJhcml0eQgJARRnZXRBc3NldEZhcm1pbmdQb3dlcgEFB2Fzc2V0SWQCXzIDAwkBAiE9AgULYXNzZXRJc3N1ZXIJARNnZXRJbmN1YmF0b3JBZGRyZXNzAAkBAiE9AgULYXNzZXRJc3N1ZXIJARFnZXRCcmVlZGVyQWRkcmVzcwAHCQACAQIUaW52YWxpZCBORlQgYXR0YWNoZWQEEHBlcmNoZXNBdmFpbGFibGUEByRtYXRjaDAJAJoIAgkBEWdldEZhcm1pbmdBZGRyZXNzAAkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18JAKUIAQUEdGhpcwISX3BlcmNoZXNBdmFpbGFibGVfBQphc3NldENvbG9yAwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAAAwkAAAIFEHBlcmNoZXNBdmFpbGFibGUFEHBlcmNoZXNBdmFpbGFibGUECmVnZ0JhbGFuY2UJAPAHAgUEdGhpcwkBDWdldEVnZ0Fzc2V0SWQABAlpc09uUGVyY2gDAwkAZgIAMgULYXNzZXRSYXJpdHkGAwkAAAIFEHBlcmNoZXNBdmFpbGFibGUAAAkAZgIAgMLXLwUKZWdnQmFsYW5jZQcHBARpbnYxAwkAZgIFEHBlcmNoZXNBdmFpbGFibGUAAAUEdW5pdAkA/AcECQERZ2V0RmFybWluZ0FkZHJlc3MAAghidXlQZXJjaAkAzAgCBQphc3NldENvbG9yCQDMCAICAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0RWdnQXNzZXRJZAAAgMLXLwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdADAhD0FA25pbAMJAAACBQRpbnYxBQRpbnYxBARpbnYyAwkAZgIFEHBlcmNoZXNBdmFpbGFibGUAAAUEdW5pdAMJAAACBQlpc0phY2twb3QHCQD8BwQJARFnZXRGYXJtaW5nQWRkcmVzcwACCHN0YWtlTkZUBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFB2Fzc2V0SWQAAQkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdADAhD0FA25pbAkA/AcECQERZ2V0RmFybWluZ0FkZHJlc3MAAgxzdGFrZUphY2twb3QJAMwIAgUKYXNzZXRDb2xvcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldElkAAEJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQAwIQ9BQNuaWwDCQAAAgUEaW52MgUEaW52MgYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUJaXNPblBlcmNoBQlpc09uUGVyY2gECnN0ZXJpbGVTdHIEByRtYXRjaDAJAJoIAgkBEWdldEJyZWVkZXJBZGRyZXNzAAkArAICCQCsAgICBmFzc2V0XwkA2AQBBQdhc3NldElkAglfY2hpbGRyZW4DCQABAgUHJG1hdGNoMAIDSW50BAF4BQckbWF0Y2gwAgdTdGVyaWxlAgdGZXJ0aWxlBApuYW1lU3VmZml4CQCsAgIJAKQDAQULYXNzZXRSYXJpdHkCASUECWltYWdlTGluawkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJGh0dHBzOi8vd2F2ZXNkdWNrcy5jb20vYXBpL3YxL2R1Y2tzLwkAswICCQCwAgIFCWFzc2V0TmFtZQAFAAMCDS5zdmc/b25QZXJjaD0JAKUDAQUJaXNPblBlcmNoAgcmY29sb3I9BQphc3NldENvbG9yBARuYW1lAwUJaXNPblBlcmNoCQCsAgICDFN0YWtlZCBEdWNrIAUKbmFtZVN1ZmZpeAkArAICAgtXYXZlcyBEdWNrIAUKbmFtZVN1ZmZpeAQOc3Rha2VkTkZUSWRTdHIEByRtYXRjaDAJAPwHBAkBB0FkZHJlc3MBBRluZnRDcmVhdGlvbkFkZHJlc3NHYXRld2F5AgljcmVhdGVORlQJAMwIAgUEbmFtZQkAzAgCCQCsAgIJAKwCAgkArAICCQCsAgIFCnN0ZXJpbGVTdHICDCBXYXZlcyBEdWNrIAUJYXNzZXROYW1lAg0gd2l0aCByYXJpdHkgCQCkAwEFC2Fzc2V0UmFyaXR5CQDMCAIFCWltYWdlTGluawkAzAgCAgVkdWNrcwUDbmlsBQNuaWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAF4BQckbWF0Y2gwBQF4CQACAQIrc29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIGNyZWF0aW9uIG9mIE5GVAMJAAACBQ5zdGFrZWRORlRJZFN0cgUOc3Rha2VkTkZUSWRTdHIJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQ5zdGFrZWRORlRJZFN0cgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgIFZHVja18JANgEAQUHYXNzZXRJZAIIX3NkdWNrSWQFDnN0YWtlZE5GVElkU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAgVkdWNrXwkA2AQBBQdhc3NldElkAgZfb3duZXIFCmFkZHJlc3NTdHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICBG5mdF8FDnN0YWtlZE5GVElkU3RyAgdfZHVja0lkCQDYBAEFB2Fzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQphZGRyZXNzU3RyAgxfbG9ja2VkRHVja18JANgEAQUHYXNzZXRJZAULYXNzZXRSYXJpdHkFA25pbAUOc3Rha2VkTkZUSWRTdHIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEGdW5sb2NrAAMJAQIhPQIIBQFpBmNhbGxlcgkBB0FkZHJlc3MBBQpuZnRHYXRld2F5CQACAQITRFU6IE5vdCBhdXRob3JpemVkIQQKYWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIEC3N0YWtlZE5GVElkCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQEDnN0YWtlZE5GVElkU3RyCQDYBAEFC3N0YWtlZE5GVElkBAphc3NldElkU3RyCQEMdHJ5R2V0U3RyaW5nAQkArAICCQCsAgICBG5mdF8FDnN0YWtlZE5GVElkU3RyAgdfZHVja0lkBAdhc3NldElkCQDZBAEFCmFzc2V0SWRTdHIECWFzc2V0TmFtZQkBBXZhbHVlAQgJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZARuYW1lBA5hc3NldE5hbWVQYXJ0cwkAtQkCBQlhc3NldE5hbWUCAAQJaXNKYWNrcG90CQENaXNKYWNrcG90RHVjawEFDmFzc2V0TmFtZVBhcnRzBA91bnN0YWtlRnVuY05hbWUDCQAAAgUJaXNKYWNrcG90BgIOdW5zdGFrZUphY2twb3QCCnVuc3Rha2VORlQDCQECIT0CCQEMdHJ5R2V0U3RyaW5nAQkArAICCQCsAgICBWR1Y2tfBQphc3NldElkU3RyAgZfb3duZXIFCmFkZHJlc3NTdHIJAAIBAhFkdWNrIGlzIG5vdCB5b3VycwQSYXNzZXRCYWxhbmNlQmVmb3JlCQDwBwIFBHRoaXMJAQ1nZXRFZ2dBc3NldElkAAMJAAACBRJhc3NldEJhbGFuY2VCZWZvcmUFEmFzc2V0QmFsYW5jZUJlZm9yZQQEaW52MQMJAGYCCQDwBwIFBHRoaXMFB2Fzc2V0SWQAAAUEdW5pdAkA/AcECQERZ2V0RmFybWluZ0FkZHJlc3MABQ91bnN0YWtlRnVuY05hbWUJAMwIAgUKYXNzZXRJZFN0cgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0AMCEPQUDbmlsAwkAAAIFBGludjEFBGludjEECWVnZ0Vhcm5lZAkAZQIJAPAHAgUEdGhpcwkBDWdldEVnZ0Fzc2V0SWQABRJhc3NldEJhbGFuY2VCZWZvcmUDCQAAAgUJZWdnRWFybmVkBQllZ2dFYXJuZWQEBGludjIJAPwHBAkBB0FkZHJlc3MBBRluZnRDcmVhdGlvbkFkZHJlc3NHYXRld2F5AgdidXJuTkZUBQNuaWwIBQFpCHBheW1lbnRzAwkAAAIFBGludjIFBGludjIJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCWVnZ0Vhcm5lZAkBDWdldEVnZ0Fzc2V0SWQACQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQphZGRyZXNzU3RyAgxfbG9ja2VkRHVja18FCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgICBG5mdF8FDnN0YWtlZE5GVElkU3RyAgdfZHVja0lkCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICAgVkdWNrXwUKYXNzZXRJZFN0cgIIX3NkdWNrSWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgICBWR1Y2tfBQphc3NldElkU3RyAgZfb3duZXIFA25pbAUKYXNzZXRJZFN0cgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgBleXft", "height": 3847205, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: JYwsHmDw4BEK8RzL3AMhK1Nh99hREFK2xVB5dXXiTwg Next: 66AjNtxpg6n4AiC1NJZn3PCSiErP2u2FFxKXm2BTAvUH Diff:
OldNewDifferences
159159 else {
160160 let inv1 = if ((perchesAvailable > 0))
161161 then unit
162- else invoke(getFarmingAddress(), "buyPerch", [assetColor, ""], [AttachedPayment(getEggAssetId(), 100000000)])
162+ else invoke(getFarmingAddress(), "buyPerch", [assetColor, ""], [AttachedPayment(getEggAssetId(), 100000000), AttachedPayment(unit, 1000000)])
163163 if ((inv1 == inv1))
164164 then {
165165 let inv2 = if ((perchesAvailable > 0))
166166 then unit
167167 else if ((isJackpot == false))
168- then invoke(getFarmingAddress(), "stakeNFT", nil, [AttachedPayment(assetId, 1)])
169- else invoke(getFarmingAddress(), "stakeJackpot", [assetColor], [AttachedPayment(assetId, 1)])
168+ then invoke(getFarmingAddress(), "stakeNFT", nil, [AttachedPayment(assetId, 1), AttachedPayment(unit, 1000000)])
169+ else invoke(getFarmingAddress(), "stakeJackpot", [assetColor], [AttachedPayment(assetId, 1), AttachedPayment(unit, 1000000)])
170170 if ((inv2 == inv2))
171171 then true
172172 else throw("Strict value is not equal to itself.")
227227 then {
228228 let inv1 = if ((assetBalance(this, assetId) > 0))
229229 then unit
230- else invoke(getFarmingAddress(), unstakeFuncName, [assetIdStr], nil)
230+ else invoke(getFarmingAddress(), unstakeFuncName, [assetIdStr], [AttachedPayment(unit, 1000000)])
231231 if ((inv1 == inv1))
232232 then {
233233 let eggEarned = (assetBalance(this, getEggAssetId()) - assetBalanceBefore)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetStringExternal (address,key) = match getString(address, key) {
55 case a: String =>
66 a
77 case _ =>
88 ""
99 }
1010
1111
1212 func tryGetString (key) = match getString(this, key) {
1313 case a: String =>
1414 a
1515 case _ =>
1616 ""
1717 }
1818
1919
2020 func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
2121
2222
2323 func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_breederAddress")))
2424
2525
2626 func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_incubatorAddress")))
2727
2828
2929 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_itemsAddress")))
3030
3131
3232 func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_farmingAddress")))
3333
3434
3535 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
3636
3737
3838 let nftCreationAddressGateway = base58'3P8LVqVKhTViMJau96KNir6FhHr4WnfoW57'
3939
4040 let nftGateway = base58'3PPfDHC6hNqDMxRArJvJRkYfC8y6S3rSnYb'
4141
4242 func tryGetInteger (key) = match getInteger(this, key) {
4343 case b: Int =>
4444 b
4545 case _ =>
4646 0
4747 }
4848
4949
5050 func asString (value) = match value {
5151 case string: String =>
5252 string
5353 case _ =>
5454 throw("wrong type, expected: String")
5555 }
5656
5757
5858 func asInt (value) = match value {
5959 case int: Int =>
6060 int
6161 case _ =>
6262 throw("wrong type, expected: Int")
6363 }
6464
6565
6666 func isJackpotDuck (assetNameParts) = (assetNameParts[(size(assetNameParts) - 2)] == "J")
6767
6868
6969 func getAmountOrClear (amount) = if (contains(amount, "0"))
7070 then ""
7171 else amount
7272
7373
7474 func getAssetOrigin (generation) = if ((generation == "G"))
7575 then getIncubatorAddress()
7676 else getBreederAddress()
7777
7878
7979 func getAssetRarity (genotype,generation) = {
8080 let quantity = getIntegerValue(getAssetOrigin(generation), (("stats_" + genotype) + "_quantity"))
8181 let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR)
8282 if ((power > 0))
8383 then power
8484 else 2
8585 }
8686
8787
8888 func getAssetFarmingPower (assetId) = if (if ((value(assetInfo(assetId)).issuer == getBreederAddress()))
8989 then true
9090 else (value(assetInfo(assetId)).issuer == getIncubatorAddress()))
9191 then {
9292 let farmBoost = asInt(invoke(getItemsAddress(), "calculateFarmingPowerBoost", [toBase58String(assetId), "UnusedAddress"], nil))
9393 if ((farmBoost == farmBoost))
9494 then {
9595 let assetName = value(assetInfo(assetId)).name
9696 let isJackpot = (takeRight(value(assetName), 1) == "U")
9797 let farmGen = if (isJackpot)
9898 then ""
9999 else asString(invoke(getBreederAddress(), "getGenFromName", [assetName], nil))
100100 if ((farmGen == farmGen))
101101 then {
102102 let rarity = if (isJackpot)
103103 then 100
104104 else {
105105 let generation = take(takeRight(assetName, 2), 1)
106106 getAssetRarity(farmGen, generation)
107107 }
108108 let totalFarmingPower = (rarity + fraction(rarity, farmBoost, 100))
109109 $Tuple2(farmGen, totalFarmingPower)
110110 }
111111 else throw("Strict value is not equal to itself.")
112112 }
113113 else throw("Strict value is not equal to itself.")
114114 }
115115 else throw("not valid NFT")
116116
117117
118118 @Callable(i)
119119 func configureOracle (oracle) = if ((i.caller != this))
120120 then throw("admin only")
121121 else [StringEntry("static_oracleAddress", oracle)]
122122
123123
124124
125125 @Callable(i)
126126 func lock () = if ((i.caller != Address(nftCreationAddressGateway)))
127127 then throw("DL: Not authorized!")
128128 else {
129129 let addressStr = toString(i.caller)
130130 let assetId = value(value(i.payments[0]).assetId)
131131 let assetIssuer = value(assetInfo(assetId)).issuer
132132 let assetName = value(value(assetInfo(assetId)).name)
133133 let assetNameParts = split(assetName, "")
134134 let isJackpot = isJackpotDuck(assetNameParts)
135135 let assetColor = if (isJackpot)
136136 then "G"
137137 else split(assetName, "")[(size(split(assetName, "")) - 1)]
138138 let assetRarity = getAssetFarmingPower(assetId)._2
139139 if (if ((assetIssuer != getIncubatorAddress()))
140140 then (assetIssuer != getBreederAddress())
141141 else false)
142142 then throw("invalid NFT attached")
143143 else {
144144 let perchesAvailable = match getInteger(getFarmingAddress(), ((("address_" + toString(this)) + "_perchesAvailable_") + assetColor)) {
145145 case b: Int =>
146146 b
147147 case _ =>
148148 0
149149 }
150150 if ((perchesAvailable == perchesAvailable))
151151 then {
152152 let eggBalance = assetBalance(this, getEggAssetId())
153153 let isOnPerch = if (if ((50 > assetRarity))
154154 then true
155155 else if ((perchesAvailable == 0))
156156 then (100000000 > eggBalance)
157157 else false)
158158 then false
159159 else {
160160 let inv1 = if ((perchesAvailable > 0))
161161 then unit
162- else invoke(getFarmingAddress(), "buyPerch", [assetColor, ""], [AttachedPayment(getEggAssetId(), 100000000)])
162+ else invoke(getFarmingAddress(), "buyPerch", [assetColor, ""], [AttachedPayment(getEggAssetId(), 100000000), AttachedPayment(unit, 1000000)])
163163 if ((inv1 == inv1))
164164 then {
165165 let inv2 = if ((perchesAvailable > 0))
166166 then unit
167167 else if ((isJackpot == false))
168- then invoke(getFarmingAddress(), "stakeNFT", nil, [AttachedPayment(assetId, 1)])
169- else invoke(getFarmingAddress(), "stakeJackpot", [assetColor], [AttachedPayment(assetId, 1)])
168+ then invoke(getFarmingAddress(), "stakeNFT", nil, [AttachedPayment(assetId, 1), AttachedPayment(unit, 1000000)])
169+ else invoke(getFarmingAddress(), "stakeJackpot", [assetColor], [AttachedPayment(assetId, 1), AttachedPayment(unit, 1000000)])
170170 if ((inv2 == inv2))
171171 then true
172172 else throw("Strict value is not equal to itself.")
173173 }
174174 else throw("Strict value is not equal to itself.")
175175 }
176176 if ((isOnPerch == isOnPerch))
177177 then {
178178 let sterileStr = match getInteger(getBreederAddress(), (("asset_" + toBase58String(assetId)) + "_children")) {
179179 case x: Int =>
180180 "Sterile"
181181 case _ =>
182182 "Fertile"
183183 }
184184 let nameSuffix = (toString(assetRarity) + "%")
185185 let imageLink = ((((("https://wavesducks.com/api/v1/ducks/" + dropRight(drop(assetName, 5), 3)) + ".svg?onPerch=") + toString(isOnPerch)) + "&color=") + assetColor)
186186 let name = if (isOnPerch)
187187 then ("Staked Duck " + nameSuffix)
188188 else ("Waves Duck " + nameSuffix)
189189 let stakedNFTIdStr = match invoke(Address(nftCreationAddressGateway), "createNFT", [name, ((((sterileStr + " Waves Duck ") + assetName) + " with rarity ") + toString(assetRarity)), imageLink, "ducks"], nil) {
190190 case x: String =>
191191 x
192192 case _ =>
193193 throw("something went wrong during creation of NFT")
194194 }
195195 if ((stakedNFTIdStr == stakedNFTIdStr))
196196 then $Tuple2([ScriptTransfer(i.caller, 1, fromBase58String(stakedNFTIdStr)), StringEntry((("duck_" + toBase58String(assetId)) + "_sduckId"), stakedNFTIdStr), StringEntry((("duck_" + toBase58String(assetId)) + "_owner"), addressStr), StringEntry((("nft_" + stakedNFTIdStr) + "_duckId"), toBase58String(assetId)), IntegerEntry(((("address_" + addressStr) + "_lockedDuck_") + toBase58String(assetId)), assetRarity)], stakedNFTIdStr)
197197 else throw("Strict value is not equal to itself.")
198198 }
199199 else throw("Strict value is not equal to itself.")
200200 }
201201 else throw("Strict value is not equal to itself.")
202202 }
203203 }
204204
205205
206206
207207 @Callable(i)
208208 func unlock () = if ((i.caller != Address(nftGateway)))
209209 then throw("DU: Not authorized!")
210210 else {
211211 let addressStr = toString(i.caller)
212212 let stakedNFTId = value(i.payments[0].assetId)
213213 let stakedNFTIdStr = toBase58String(stakedNFTId)
214214 let assetIdStr = tryGetString((("nft_" + stakedNFTIdStr) + "_duckId"))
215215 let assetId = fromBase58String(assetIdStr)
216216 let assetName = value(value(assetInfo(assetId)).name)
217217 let assetNameParts = split(assetName, "")
218218 let isJackpot = isJackpotDuck(assetNameParts)
219219 let unstakeFuncName = if ((isJackpot == true))
220220 then "unstakeJackpot"
221221 else "unstakeNFT"
222222 if ((tryGetString((("duck_" + assetIdStr) + "_owner")) != addressStr))
223223 then throw("duck is not yours")
224224 else {
225225 let assetBalanceBefore = assetBalance(this, getEggAssetId())
226226 if ((assetBalanceBefore == assetBalanceBefore))
227227 then {
228228 let inv1 = if ((assetBalance(this, assetId) > 0))
229229 then unit
230- else invoke(getFarmingAddress(), unstakeFuncName, [assetIdStr], nil)
230+ else invoke(getFarmingAddress(), unstakeFuncName, [assetIdStr], [AttachedPayment(unit, 1000000)])
231231 if ((inv1 == inv1))
232232 then {
233233 let eggEarned = (assetBalance(this, getEggAssetId()) - assetBalanceBefore)
234234 if ((eggEarned == eggEarned))
235235 then {
236236 let inv2 = invoke(Address(nftCreationAddressGateway), "burnNFT", nil, i.payments)
237237 if ((inv2 == inv2))
238238 then $Tuple2([ScriptTransfer(i.caller, 1, assetId), ScriptTransfer(i.caller, eggEarned, getEggAssetId()), DeleteEntry(((("address_" + addressStr) + "_lockedDuck_") + assetIdStr)), DeleteEntry((("nft_" + stakedNFTIdStr) + "_duckId")), DeleteEntry((("duck_" + assetIdStr) + "_sduckId")), DeleteEntry((("duck_" + assetIdStr) + "_owner"))], assetIdStr)
239239 else throw("Strict value is not equal to itself.")
240240 }
241241 else throw("Strict value is not equal to itself.")
242242 }
243243 else throw("Strict value is not equal to itself.")
244244 }
245245 else throw("Strict value is not equal to itself.")
246246 }
247247 }
248248
249249

github/deemru/w8io/0e76f2f 
45.22 ms