2022.07.04 17:11 [3190625] smart account 3PCoF5ZnsQJKAJJCoSqUcVVqJ2Dm4fvn9ar > SELF 0.00000000 Waves

{ "type": 13, "id": "3tnkXNU9z4dZutW41sU3GQ3QqwX9opvWfT8VufnL25pF", "fee": 1300000, "feeAssetId": null, "timestamp": 1656943917717, "version": 2, "chainId": 87, "sender": "3PCoF5ZnsQJKAJJCoSqUcVVqJ2Dm4fvn9ar", "senderPublicKey": "2RFPMtHxVSEG1LnET2FGshyhRepA7zJmx6tPwdHeNpJi", "proofs": [ "66r2zVxaWJZDR2ikrBACg8mhpFrLncNr8BVJtw529rve1Upeo3DeaiAJ4fG3XdopceY5ua1hcoQgTb7pX5XF6U99" ], "script": "base64:BgIcCAISAwoBCBIDCgEIEgQKAggIEgMKAQgSAwoBCB4BDHRyeUdldFN0cmluZwEDa2V5BAckbWF0Y2gwCQCdCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCdCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAEJZ2V0T3JhY2xlAAkBB0FkZHJlc3MBCQDZBAEJAQx0cnlHZXRTdHJpbmcBAhRzdGF0aWNfb3JhY2xlQWRkcmVzcwERZ2V0QnJlZWRlckFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQACFXN0YXRpY19icmVlZGVyQWRkcmVzcwETZ2V0SW5jdWJhdG9yQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIXc3RhdGljX2luY3ViYXRvckFkZHJlc3MBE2dldFN3b3BQcm9tb0FkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQACF3N0YXRpY19zd29wUHJvbW9BZGRyZXNzAQ1nZXRFZ2dBc3NldElkAAkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIRc3RhdGljX2VnZ0Fzc2V0SWQBE2dldFdlYXJhYmxlc0FkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQACF3N0YXRpY193ZWFyYWJsZXNBZGRyZXNzARFnZXRGYXJtaW5nQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIVc3RhdGljX2Zhcm1pbmdBZGRyZXNzARFnZXRDb3Vwb25zQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIVc3RhdGljX2NvdXBvbnNBZGRyZXNzARFnZXRSZWJpcnRoQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIVc3RhdGljX3JlYmlydGhBZGRyZXNzAApNQU5UTEVOQU1FAgZtYW50bGUADHNhbGVzRW5hYmxlZAcAClNUQVRVU0ZSRUUCBEZSRUUADlNUQVRVU09DQ1VQSUVEAghPQ0NVUElFRAELa2V5RHVja0xvY2sCDWNhbGxlckFkZHJlc3MGZHVja0lkCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQ1jYWxsZXJBZGRyZXNzAgZfZHVja18FBmR1Y2tJZAIHX3N0YXR1cwELa2V5SW52ZXN0b3IBDWNhbGxlckFkZHJlc3MJAKwCAgkArAICAghhZGRyZXNzXwUNY2FsbGVyQWRkcmVzcwIHX2Ftb3VudAETa2V5QXJ0ZWZhY3RJbnZlc3RlZAIEdHlwZQphcnRlZmFjdElkCQCsAgIJAKwCAgkArAICCQCsAgICCWFydGVmYWN0XwUEdHlwZQIMX2FydGVmYWN0SWRfBQphcnRlZmFjdElkAglfaW52ZXN0ZWQBFGtleU9ubHlBcnRlZmFjdExldmVsAQphcnRlZmFjdElkCQCsAgIJAKwCAgILYXJ0ZWZhY3RJZF8JANgEAQUKYXJ0ZWZhY3RJZAIGX2xldmVsARprZXlBcnRlZmFjdElkQnlEdWNrQW5kVHlwZQIEdHlwZQZkdWNrSWQJAKwCAgkArAICCQCsAgIJAKwCAgIKYXJ0ZWZhY3RfIAUEdHlwZQIGX2R1Y2tfCQDYBAEFBmR1Y2tJZAILX2FydGVmYWN0SWQBEGtleUFydGVmYWN0T3duZXICBHR5cGUKYXJ0ZWZhY3RJZAkArAICCQCsAgIJAKwCAgkArAICAgphcnRlZmFjdF8gBQR0eXBlAgxfYXJ0ZWZhY3RJZF8JANgEAQUKYXJ0ZWZhY3RJZAIGX293bmVyARlrZXlBcnRlZmFjdE93bmVyQW5kU3RhdHVzAwR0eXBlBW93bmVyCmFydGVmYWN0SWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQVvd25lcgIKX2FydGVmYWN0XwUEdHlwZQIMX2FydGVmYWN0SWRfCQDYBAEFCmFydGVmYWN0SWQCB19zdGF0dXMBEWtleUFydGVmYWN0U3RhdHVzAgR0eXBlCmFydGVmYWN0SWQJAKwCAgkArAICCQCsAgIJAKwCAgIKYXJ0ZWZhY3RfIAUEdHlwZQIMX2FydGVmYWN0SWRfCQDYBAEFCmFydGVmYWN0SWQCB19zdGF0dXMBD2tleUFydGVmYWN0VHlwZQEKYXJ0ZWZhY3RJZAkArAICCQCsAgICC2FydGVmYWN0SWRfCQDYBAEFCmFydGVmYWN0SWQCBV90eXBlARBrZXlBcnRlZmFjdExldmVsAwR0eXBlBW93bmVyCmFydGVmYWN0SWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQVvd25lcgIKX2FydGVmYWN0XwUEdHlwZQIMX2FydGVmYWN0SWRfCQDYBAEFCmFydGVmYWN0SWQCBl9sZXZlbAEQa2V5UHV0T25BcnRlZmFjdAQEdHlwZQVvd25lcgZkdWNrSWQKYXJ0ZWZhY3RJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQVvd25lcgIGX2R1Y2tfBQZkdWNrSWQCCl9hcnRlZmFjdF8FBHR5cGUCDF9hcnRlZmFjdElkXwkA2AQBBQphcnRlZmFjdElkAgdfc3RhdHVzARFrZXlBcnRlZmFjdEV4aXN0cwIEdHlwZQphcnRlZmFjdElkCQCsAgIJAKwCAgkArAICAglhcnRlZmFjdF8FBHR5cGUCDF9hcnRlZmFjdElkXwkA2AQBBQphcnRlZmFjdElkARBrZXlBcnRlZmFjdE5mdElkAQphcnRlZmFjdElkCQCsAgIJAKwCAgILYXJ0ZWZhY3RJZF8JANgEAQUKYXJ0ZWZhY3RJZAIEX25mdAEJaXNKYWNrcG90AQdhc3NldElkCQAAAgkAsgICCQEFdmFsdWUBCAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBG5hbWUAAQIBVQEFYXNJbnQBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgNJbnQEA2ludAUHJG1hdGNoMAUDaW50CQACAQIeV0FJOiB3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50BQFpAQ9jb25maWd1cmVPcmFjbGUBBm9yYWNsZQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECD1dDTzogYWRtaW4gb25seQkAzAgCCQELU3RyaW5nRW50cnkCAhRzdGF0aWNfb3JhY2xlQWRkcmVzcwUGb3JhY2xlBQNuaWwBaQENcHV0T25BcnRlZmFjdAEKYXJ0ZWZhY3RJZAQMZmlyc3RQYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEDXNlY29uZFBheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAQQRYXR0YWNoZWRBc3NldEluZm8JAQV2YWx1ZQEJAOwHAQkBBXZhbHVlAQgFDGZpcnN0UGF5bWVudAdhc3NldElkBBdzZWNvbmRBdHRhY2hlZEFzc2V0SW5mbwkBBXZhbHVlAQkA7AcBCQEFdmFsdWUBCAUNc2Vjb25kUGF5bWVudAdhc3NldElkAwkBAiE9AggFDGZpcnN0UGF5bWVudAZhbW91bnQAAQkAAgECHldQT0E6IERVQ0sgTkZUIGlzIG5vdCBhdHRhY2hlZAMJAQIhPQIIBQ1zZWNvbmRQYXltZW50BmFtb3VudAABCQACAQIgV1BPQTogTUFOVExFIE5GVCBpcyBub3QgYXR0YWNoZWQDAwkBAiE9AggFEWF0dGFjaGVkQXNzZXRJbmZvBmlzc3VlcgkBE2dldEluY3ViYXRvckFkZHJlc3MACQECIT0CCAURYXR0YWNoZWRBc3NldEluZm8GaXNzdWVyCQERZ2V0QnJlZWRlckFkZHJlc3MABwkAAgECP1dQT0E6IFlvdSBjYW4gYXR0YWNoIG9ubHkgRFVDS3MgaXNzdWVkIGJ5IGluY3ViYXRvciBvciBicmVlZGVyIAMJAQIhPQIIBRdzZWNvbmRBdHRhY2hlZEFzc2V0SW5mbwZpc3N1ZXIFBHRoaXMJAAIBAjRXUE9BOiBZb3UgY2FuIGF0dGFjaCBvbmx5IG1hbnRsZXMgaXNzdWVzIGJ5IHRoaXMgc2MuBAtsaW5rZWROZnRJZAkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleUFydGVmYWN0TmZ0SWQBCQDZBAEFCmFydGVmYWN0SWQEBW5mdElkCQEFdmFsdWUBCAUNc2Vjb25kUGF5bWVudAdhc3NldElkAwkBAiE9AgULbGlua2VkTmZ0SWQJANgEAQUFbmZ0SWQJAAIBAiVNaXNtYXRjaCBiZXR3ZWVuIGFydGVmYWN0SWQgYW5kIG5mdElkBApoYXNTd2VhdGVyCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQETZ2V0V2VhcmFibGVzQWRkcmVzcwAJAKwCAgkA2AQBCQEFdmFsdWUBCAUMZmlyc3RQYXltZW50B2Fzc2V0SWQCDV9BUlQtWFNXRUFURVIEDWtNYW50bGVFeGlzdHMJARFrZXlBcnRlZmFjdEV4aXN0cwIFCk1BTlRMRU5BTUUJANkEAQUKYXJ0ZWZhY3RJZAQNa01hbnRsZVN0YXR1cwkBEWtleUFydGVmYWN0U3RhdHVzAgUKTUFOVExFTkFNRQkA2QQBBQphcnRlZmFjdElkBBdrQXJ0ZWZhY3RPd25lckFuZFN0YXR1cwkBGWtleUFydGVmYWN0T3duZXJBbmRTdGF0dXMDBQpNQU5UTEVOQU1FCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkA2QQBBQphcnRlZmFjdElkBAlrRHVja0xvY2sJAQtrZXlEdWNrTG9jawIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDYBAEJAQV2YWx1ZQEIBQxmaXJzdFBheW1lbnQHYXNzZXRJZAQMbWFudGxlRXhpc3RzCQERQGV4dHJOYXRpdmUoMTA1NikBBQ1rTWFudGxlRXhpc3RzBAxtYW50bGVTdGF0dXMJARFAZXh0ck5hdGl2ZSgxMDU4KQEFDWtNYW50bGVTdGF0dXMEEWtBcnRlZmFjdElkQnlUeXBlCQEaa2V5QXJ0ZWZhY3RJZEJ5RHVja0FuZFR5cGUCBQpNQU5UTEVOQU1FCQEFdmFsdWUBCAUMZmlyc3RQYXltZW50B2Fzc2V0SWQDCQEBIQEFDG1hbnRsZUV4aXN0cwkAAgECK1dQT0E6IE1hbnRsZSB3aXRoIHN1Y2ggYW4gSUQgZG9lcyBub3QgZXhpc3QDCQECIT0CBQxtYW50bGVTdGF0dXMFClNUQVRVU0ZSRUUJAAIBAh1XUE9BOiBNYW50bGUgaXMgYWxyZWFkeSB1c2VkIQQJc3Rha2VEdWNrAwkBAiE9AgUKaGFzU3dlYXRlcgIAAwkBCWlzSmFja3BvdAEJAQV2YWx1ZQEIBQxmaXJzdFBheW1lbnQHYXNzZXRJZAkA/AcECQERZ2V0RmFybWluZ0FkZHJlc3MAAgxzdGFrZUphY2twb3QFA25pbAgFAWkIcGF5bWVudHMJAPwHBAkBEWdldEZhcm1pbmdBZGRyZXNzAAIIc3Rha2VORlQFA25pbAgFAWkIcGF5bWVudHMFA25pbAMJAAACBQlzdGFrZUR1Y2sFCXN0YWtlRHVjawQOa1B1dE9uQXJ0ZWZhY3QJARBrZXlQdXRPbkFydGVmYWN0BAUKTUFOVExFTkFNRQkApQgBCAUBaQxvcmlnaW5DYWxsZXIJANgEAQkBBXZhbHVlAQgFDGZpcnN0UGF5bWVudAdhc3NldElkCQDZBAEFCmFydGVmYWN0SWQEDGtNYW50bGVPd25lcgkBEGtleUFydGVmYWN0T3duZXICBQpNQU5UTEVOQU1FCQDZBAEFCmFydGVmYWN0SWQJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDmtQdXRPbkFydGVmYWN0BgkAzAgCCQELU3RyaW5nRW50cnkCBQ1rTWFudGxlU3RhdHVzBQ5TVEFUVVNPQ0NVUElFRAkAzAgCCQELU3RyaW5nRW50cnkCBRdrQXJ0ZWZhY3RPd25lckFuZFN0YXR1cwUOU1RBVFVTT0NDVVBJRUQJAMwIAgkBC1N0cmluZ0VudHJ5AgUMa01hbnRsZU93bmVyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUJa0R1Y2tMb2NrBgkAzAgCCQELU3RyaW5nRW50cnkCBRFrQXJ0ZWZhY3RJZEJ5VHlwZQUKYXJ0ZWZhY3RJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD3Rha2VPZmZBcnRlZmFjdAIGZHVja0lkDGFydGVmYWN0VHlwZQQYa0FydGVmYWN0SWRCeVR5cGVBbmREdWNrCQEaa2V5QXJ0ZWZhY3RJZEJ5RHVja0FuZFR5cGUCBQxhcnRlZmFjdFR5cGUJANkEAQUGZHVja0lkBAphcnRlZmFjdElkCQERQGV4dHJOYXRpdmUoMTA1OCkBBRhrQXJ0ZWZhY3RJZEJ5VHlwZUFuZER1Y2sEDWtBcnRlZmFjdFR5cGUJAQ9rZXlBcnRlZmFjdFR5cGUBCQDZBAEFCmFydGVmYWN0SWQEDmtQdXRPbkFydGVmYWN0CQEQa2V5UHV0T25BcnRlZmFjdAQFDGFydGVmYWN0VHlwZQkApQgBCAUBaQxvcmlnaW5DYWxsZXIFBmR1Y2tJZAkA2QQBBQphcnRlZmFjdElkBBRrUHV0T25BcnRlZmFjdFN0YXR1cwkBEUBleHRyTmF0aXZlKDEwNTYpAQUOa1B1dE9uQXJ0ZWZhY3QEF2tBcnRlZmFjdE93bmVyQW5kU3RhdHVzCQEZa2V5QXJ0ZWZhY3RPd25lckFuZFN0YXR1cwMFDGFydGVmYWN0VHlwZQkApQgBCAUBaQxvcmlnaW5DYWxsZXIJANkEAQUKYXJ0ZWZhY3RJZAQJa0R1Y2tMb2NrCQELa2V5RHVja0xvY2sCCQClCAEIBQFpDG9yaWdpbkNhbGxlcgUGZHVja0lkBAtsaW5rZWROZnRJZAkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleUFydGVmYWN0TmZ0SWQBCQDZBAEFCmFydGVmYWN0SWQEDWtNYW50bGVTdGF0dXMJARFrZXlBcnRlZmFjdFN0YXR1cwIFDGFydGVmYWN0VHlwZQkA2QQBBQphcnRlZmFjdElkAwkBAiE9AgUUa1B1dE9uQXJ0ZWZhY3RTdGF0dXMGCQACAQIsV1RPQTogVGhlcmUgaXMgbm8gZHVjayB3aXRoIHN1Y2ggcGFyYW1ldGVyZXMECmhhc1N3ZWF0ZXIJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJARNnZXRXZWFyYWJsZXNBZGRyZXNzAAkArAICBQZkdWNrSWQCDV9BUlQtWFNXRUFURVIEDGtNYW50bGVPd25lcgkBEGtleUFydGVmYWN0T3duZXICBQxhcnRlZmFjdFR5cGUJANkEAQUKYXJ0ZWZhY3RJZAQLdW5zdGFrZUR1Y2sDCQECIT0CBQpoYXNTd2VhdGVyAgADCQEJaXNKYWNrcG90AQkA2QQBBQZkdWNrSWQJAPwHBAkBEWdldEZhcm1pbmdBZGRyZXNzAAIOdW5zdGFrZUphY2twb3QJAMwIAgUGZHVja0lkBQNuaWwFA25pbAkA/AcECQERZ2V0RmFybWluZ0FkZHJlc3MAAgp1bnN0YWtlTkZUCQDMCAIFBmR1Y2tJZAUDbmlsBQNuaWwFA25pbAMJAAACBQt1bnN0YWtlRHVjawULdW5zdGFrZUR1Y2sJAMwIAgkBC0RlbGV0ZUVudHJ5AQUOa1B1dE9uQXJ0ZWZhY3QJAMwIAgkBC0RlbGV0ZUVudHJ5AQUYa0FydGVmYWN0SWRCeVR5cGVBbmREdWNrCQDMCAIJAQtEZWxldGVFbnRyeQEFCWtEdWNrTG9jawkAzAgCCQELU3RyaW5nRW50cnkCBQ1rTWFudGxlU3RhdHVzBQpTVEFUVVNGUkVFCQDMCAIJAQtEZWxldGVFbnRyeQEFF2tBcnRlZmFjdE93bmVyQW5kU3RhdHVzCQDMCAIJAQtEZWxldGVFbnRyeQEFDGtNYW50bGVPd25lcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQxvcmlnaW5DYWxsZXIAAQkA2QQBBQZkdWNrSWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkMb3JpZ2luQ2FsbGVyAAEJANkEAQULbGlua2VkTmZ0SWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1leHBvcnRNYW50bGVzAQNpZHMEBm5mdElkcwkAtQkCBQNpZHMCATsKAQhoYW5kbGVJZAIDYWNjAmlkBAxrTWFudGxlT3duZXIJARBrZXlBcnRlZmFjdE93bmVyAgUKTUFOVExFTkFNRQkA2QQBBQJpZAQLbWFudGxlT3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBDHRyeUdldFN0cmluZwEFDGtNYW50bGVPd25lcgUMa01hbnRsZU93bmVyBBdrQXJ0ZWZhY3RPd25lckFuZFN0YXR1cwkBGWtleUFydGVmYWN0T3duZXJBbmRTdGF0dXMDBQpNQU5UTEVOQU1FBQttYW50bGVPd25lcgkA2QQBBQJpZAQNa01hbnRsZVN0YXR1cwkBEWtleUFydGVmYWN0U3RhdHVzAgUKTUFOVExFTkFNRQkA2QQBBQJpZAQMbWFudGxlU3RhdHVzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQUNa01hbnRsZVN0YXR1cwUNa01hbnRsZVN0YXR1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", "height": 3190625, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: J7dLbGWRxxwyQ4nM2D7zgXKuLcuQD4RC2QmLv8JEC4A3 Next: 2P1hyFgD7SusGk47FWBSjrB6eegPnaGNcCp3rU3ciV9t Diff:
OldNewDifferences
197197 let nftIds = split(ids, ";")
198198 func handleId (acc,id) = {
199199 let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(id))
200- let mantleOwner = valueOrErrorMessage(getString(kMantleOwner), kMantleOwner)
200+ let mantleOwner = valueOrErrorMessage(tryGetString(kMantleOwner), kMantleOwner)
201201 let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, mantleOwner, fromBase58String(id))
202202 let kMantleStatus = keyArtefactStatus(MANTLENAME, fromBase58String(id))
203203 let mantleStatus = valueOrErrorMessage(getString(kMantleStatus), kMantleStatus)
204204 let linkedNftId = getStringValue(keyArtefactNftId(fromBase58String(id)))
205- if (if ((mantleStatus == STATUSFREE))
205+ if (if (if ((mantleOwner != ""))
206+ then (mantleStatus == STATUSFREE)
207+ else false)
206208 then (Address(fromBase58String(mantleOwner)) != this)
207209 else false)
208210 then (acc ++ [ScriptTransfer(Address(fromBase58String(mantleOwner)), 1, fromBase58String(linkedNftId)), DeleteEntry(kMantleOwner), DeleteEntry(kArtefactOwnerAndStatus)])
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetString (key) = match getString(this, key) {
55 case a: String =>
66 a
77 case _ =>
88 ""
99 }
1010
1111
1212 func tryGetStringExternal (address,key) = match getString(address, 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 getSwopPromoAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_swopPromoAddress")))
3030
3131
3232 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
3333
3434
3535 func getWearablesAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_wearablesAddress")))
3636
3737
3838 func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_farmingAddress")))
3939
4040
4141 func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_couponsAddress")))
4242
4343
4444 func getRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_rebirthAddress")))
4545
4646
4747 let MANTLENAME = "mantle"
4848
4949 let salesEnabled = false
5050
5151 let STATUSFREE = "FREE"
5252
5353 let STATUSOCCUPIED = "OCCUPIED"
5454
5555 func keyDuckLock (callerAddress,duckId) = (((("address_" + callerAddress) + "_duck_") + duckId) + "_status")
5656
5757
5858 func keyInvestor (callerAddress) = (("address_" + callerAddress) + "_amount")
5959
6060
6161 func keyArtefactInvested (type,artefactId) = (((("artefact_" + type) + "_artefactId_") + artefactId) + "_invested")
6262
6363
6464 func keyOnlyArtefactLevel (artefactId) = (("artefactId_" + toBase58String(artefactId)) + "_level")
6565
6666
6767 func keyArtefactIdByDuckAndType (type,duckId) = (((("artefact_ " + type) + "_duck_") + toBase58String(duckId)) + "_artefactId")
6868
6969
7070 func keyArtefactOwner (type,artefactId) = (((("artefact_ " + type) + "_artefactId_") + toBase58String(artefactId)) + "_owner")
7171
7272
7373 func keyArtefactOwnerAndStatus (type,owner,artefactId) = (((((("address_" + owner) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
7474
7575
7676 func keyArtefactStatus (type,artefactId) = (((("artefact_ " + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
7777
7878
7979 func keyArtefactType (artefactId) = (("artefactId_" + toBase58String(artefactId)) + "_type")
8080
8181
8282 func keyArtefactLevel (type,owner,artefactId) = (((((("address_" + owner) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_level")
8383
8484
8585 func keyPutOnArtefact (type,owner,duckId,artefactId) = (((((((("address_" + owner) + "_duck_") + duckId) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
8686
8787
8888 func keyArtefactExists (type,artefactId) = ((("artefact_" + type) + "_artefactId_") + toBase58String(artefactId))
8989
9090
9191 func keyArtefactNftId (artefactId) = (("artefactId_" + toBase58String(artefactId)) + "_nft")
9292
9393
9494 func isJackpot (assetId) = (takeRight(value(value(assetInfo(assetId)).name), 1) == "U")
9595
9696
9797 func asInt (value) = match value {
9898 case int: Int =>
9999 int
100100 case _ =>
101101 throw("WAI: wrong type, expected: Int")
102102 }
103103
104104
105105 @Callable(i)
106106 func configureOracle (oracle) = if ((i.caller != this))
107107 then throw("WCO: admin only")
108108 else [StringEntry("static_oracleAddress", oracle)]
109109
110110
111111
112112 @Callable(i)
113113 func putOnArtefact (artefactId) = {
114114 let firstPayment = value(i.payments[0])
115115 let secondPayment = value(i.payments[1])
116116 let attachedAssetInfo = value(assetInfo(value(firstPayment.assetId)))
117117 let secondAttachedAssetInfo = value(assetInfo(value(secondPayment.assetId)))
118118 if ((firstPayment.amount != 1))
119119 then throw("WPOA: DUCK NFT is not attached")
120120 else if ((secondPayment.amount != 1))
121121 then throw("WPOA: MANTLE NFT is not attached")
122122 else if (if ((attachedAssetInfo.issuer != getIncubatorAddress()))
123123 then (attachedAssetInfo.issuer != getBreederAddress())
124124 else false)
125125 then throw("WPOA: You can attach only DUCKs issued by incubator or breeder ")
126126 else if ((secondAttachedAssetInfo.issuer != this))
127127 then throw("WPOA: You can attach only mantles issues by this sc.")
128128 else {
129129 let linkedNftId = getStringValue(keyArtefactNftId(fromBase58String(artefactId)))
130130 let nftId = value(secondPayment.assetId)
131131 if ((linkedNftId != toBase58String(nftId)))
132132 then throw("Mismatch between artefactId and nftId")
133133 else {
134134 let hasSweater = tryGetStringExternal(getWearablesAddress(), (toBase58String(value(firstPayment.assetId)) + "_ART-XSWEATER"))
135135 let kMantleExists = keyArtefactExists(MANTLENAME, fromBase58String(artefactId))
136136 let kMantleStatus = keyArtefactStatus(MANTLENAME, fromBase58String(artefactId))
137137 let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, toString(i.originCaller), fromBase58String(artefactId))
138138 let kDuckLock = keyDuckLock(toString(i.originCaller), toBase58String(value(firstPayment.assetId)))
139139 let mantleExists = getBooleanValue(kMantleExists)
140140 let mantleStatus = getStringValue(kMantleStatus)
141141 let kArtefactIdByType = keyArtefactIdByDuckAndType(MANTLENAME, value(firstPayment.assetId))
142142 if (!(mantleExists))
143143 then throw("WPOA: Mantle with such an ID does not exist")
144144 else if ((mantleStatus != STATUSFREE))
145145 then throw("WPOA: Mantle is already used!")
146146 else {
147147 let stakeDuck = if ((hasSweater != ""))
148148 then if (isJackpot(value(firstPayment.assetId)))
149149 then invoke(getFarmingAddress(), "stakeJackpot", nil, i.payments)
150150 else invoke(getFarmingAddress(), "stakeNFT", nil, i.payments)
151151 else nil
152152 if ((stakeDuck == stakeDuck))
153153 then {
154154 let kPutOnArtefact = keyPutOnArtefact(MANTLENAME, toString(i.originCaller), toBase58String(value(firstPayment.assetId)), fromBase58String(artefactId))
155155 let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(artefactId))
156156 [BooleanEntry(kPutOnArtefact, true), StringEntry(kMantleStatus, STATUSOCCUPIED), StringEntry(kArtefactOwnerAndStatus, STATUSOCCUPIED), StringEntry(kMantleOwner, toString(i.originCaller)), BooleanEntry(kDuckLock, true), StringEntry(kArtefactIdByType, artefactId)]
157157 }
158158 else throw("Strict value is not equal to itself.")
159159 }
160160 }
161161 }
162162 }
163163
164164
165165
166166 @Callable(i)
167167 func takeOffArtefact (duckId,artefactType) = {
168168 let kArtefactIdByTypeAndDuck = keyArtefactIdByDuckAndType(artefactType, fromBase58String(duckId))
169169 let artefactId = getStringValue(kArtefactIdByTypeAndDuck)
170170 let kArtefactType = keyArtefactType(fromBase58String(artefactId))
171171 let kPutOnArtefact = keyPutOnArtefact(artefactType, toString(i.originCaller), duckId, fromBase58String(artefactId))
172172 let kPutOnArtefactStatus = getBooleanValue(kPutOnArtefact)
173173 let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(artefactType, toString(i.originCaller), fromBase58String(artefactId))
174174 let kDuckLock = keyDuckLock(toString(i.originCaller), duckId)
175175 let linkedNftId = getStringValue(keyArtefactNftId(fromBase58String(artefactId)))
176176 let kMantleStatus = keyArtefactStatus(artefactType, fromBase58String(artefactId))
177177 if ((kPutOnArtefactStatus != true))
178178 then throw("WTOA: There is no duck with such parameteres")
179179 else {
180180 let hasSweater = tryGetStringExternal(getWearablesAddress(), (duckId + "_ART-XSWEATER"))
181181 let kMantleOwner = keyArtefactOwner(artefactType, fromBase58String(artefactId))
182182 let unstakeDuck = if ((hasSweater != ""))
183183 then if (isJackpot(fromBase58String(duckId)))
184184 then invoke(getFarmingAddress(), "unstakeJackpot", [duckId], nil)
185185 else invoke(getFarmingAddress(), "unstakeNFT", [duckId], nil)
186186 else nil
187187 if ((unstakeDuck == unstakeDuck))
188188 then [DeleteEntry(kPutOnArtefact), DeleteEntry(kArtefactIdByTypeAndDuck), DeleteEntry(kDuckLock), StringEntry(kMantleStatus, STATUSFREE), DeleteEntry(kArtefactOwnerAndStatus), DeleteEntry(kMantleOwner), ScriptTransfer(i.originCaller, 1, fromBase58String(duckId)), ScriptTransfer(i.originCaller, 1, fromBase58String(linkedNftId))]
189189 else throw("Strict value is not equal to itself.")
190190 }
191191 }
192192
193193
194194
195195 @Callable(i)
196196 func exportMantles (ids) = {
197197 let nftIds = split(ids, ";")
198198 func handleId (acc,id) = {
199199 let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(id))
200- let mantleOwner = valueOrErrorMessage(getString(kMantleOwner), kMantleOwner)
200+ let mantleOwner = valueOrErrorMessage(tryGetString(kMantleOwner), kMantleOwner)
201201 let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, mantleOwner, fromBase58String(id))
202202 let kMantleStatus = keyArtefactStatus(MANTLENAME, fromBase58String(id))
203203 let mantleStatus = valueOrErrorMessage(getString(kMantleStatus), kMantleStatus)
204204 let linkedNftId = getStringValue(keyArtefactNftId(fromBase58String(id)))
205- if (if ((mantleStatus == STATUSFREE))
205+ if (if (if ((mantleOwner != ""))
206+ then (mantleStatus == STATUSFREE)
207+ else false)
206208 then (Address(fromBase58String(mantleOwner)) != this)
207209 else false)
208210 then (acc ++ [ScriptTransfer(Address(fromBase58String(mantleOwner)), 1, fromBase58String(linkedNftId)), DeleteEntry(kMantleOwner), DeleteEntry(kArtefactOwnerAndStatus)])
209211 else acc
210212 }
211213
212214 let $l = nftIds
213215 let $s = size($l)
214216 let $acc0 = nil
215217 func $f0_1 ($a,$i) = if (($i >= $s))
216218 then $a
217219 else handleId($a, $l[$i])
218220
219221 func $f0_2 ($a,$i) = if (($i >= $s))
220222 then $a
221223 else throw("List size exceeds 20")
222224
223225 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
224226 }
225227
226228
227229
228230 @Callable(i)
229231 func issueNftForMantles (ids) = {
230232 let nftIds = split(ids, ";")
231233 func handleId (acc,id) = {
232234 let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(id))
233235 let kArtefactNftId = keyArtefactNftId(fromBase58String(id))
234236 let mantleOwner = valueOrErrorMessage(tryGetString(kMantleOwner), ((((kMantleOwner + " ") + id) + " ") + MANTLENAME))
235237 if (if ((mantleOwner == ""))
236238 then true
237239 else (tryGetString(kArtefactNftId) != ""))
238240 then (acc ++ nil)
239241 else {
240242 let issueMantleNFT = Issue("DUCK-MANTLE-0", "[Artefact] Mantle NFT for Jeduck", 1, 0, false, unit, size(acc))
241243 let mantleNftId = calculateAssetId(issueMantleNFT)
242244 (acc ++ [issueMantleNFT, StringEntry(kArtefactNftId, toBase58String(mantleNftId))])
243245 }
244246 }
245247
246248 let $l = nftIds
247249 let $s = size($l)
248250 let $acc0 = nil
249251 func $f0_1 ($a,$i) = if (($i >= $s))
250252 then $a
251253 else handleId($a, $l[$i])
252254
253255 func $f0_2 ($a,$i) = if (($i >= $s))
254256 then $a
255257 else throw("List size exceeds 20")
256258
257259 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
258260 }
259261
260262

github/deemru/w8io/786bc32 
48.98 ms