2022.07.04 16:44 [3190598] smart account 3PCoF5ZnsQJKAJJCoSqUcVVqJ2Dm4fvn9ar > SELF 0.00000000 Waves

{ "type": 13, "id": "HeHPtLEsQVE3S2pg1wm6rQ1vmj3wAuMmCRKPfTLAh9mF", "fee": 1300000, "feeAssetId": null, "timestamp": 1656942340335, "version": 2, "chainId": 87, "sender": "3PCoF5ZnsQJKAJJCoSqUcVVqJ2Dm4fvn9ar", "senderPublicKey": "2RFPMtHxVSEG1LnET2FGshyhRepA7zJmx6tPwdHeNpJi", "proofs": [ "34iYGdDzJELDkdgHDYSSiQt49YgzzoDYT7rKD786D9gVPpzJDQ7e8xckEeCzW9Ca5Apt824YsnFQyPB3qvVJUVgt" ], "script": "base64:BgIcCAISAwoBCBIDCgEIEgQKAggIEgMKAQgSAwoBCB4BDHRyeUdldFN0cmluZwEDa2V5BAckbWF0Y2gwCQCdCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCdCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAEJZ2V0T3JhY2xlAAkBB0FkZHJlc3MBCQDZBAEJAQx0cnlHZXRTdHJpbmcBAhRzdGF0aWNfb3JhY2xlQWRkcmVzcwERZ2V0QnJlZWRlckFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQACFXN0YXRpY19icmVlZGVyQWRkcmVzcwETZ2V0SW5jdWJhdG9yQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIXc3RhdGljX2luY3ViYXRvckFkZHJlc3MBE2dldFN3b3BQcm9tb0FkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQACF3N0YXRpY19zd29wUHJvbW9BZGRyZXNzAQ1nZXRFZ2dBc3NldElkAAkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIRc3RhdGljX2VnZ0Fzc2V0SWQBE2dldFdlYXJhYmxlc0FkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQACF3N0YXRpY193ZWFyYWJsZXNBZGRyZXNzARFnZXRGYXJtaW5nQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIVc3RhdGljX2Zhcm1pbmdBZGRyZXNzARFnZXRDb3Vwb25zQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIVc3RhdGljX2NvdXBvbnNBZGRyZXNzARFnZXRSZWJpcnRoQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAIVc3RhdGljX3JlYmlydGhBZGRyZXNzAApNQU5UTEVOQU1FAgZtYW50bGUADHNhbGVzRW5hYmxlZAcAClNUQVRVU0ZSRUUCBEZSRUUADlNUQVRVU09DQ1VQSUVEAghPQ0NVUElFRAELa2V5RHVja0xvY2sCDWNhbGxlckFkZHJlc3MGZHVja0lkCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQ1jYWxsZXJBZGRyZXNzAgZfZHVja18FBmR1Y2tJZAIHX3N0YXR1cwELa2V5SW52ZXN0b3IBDWNhbGxlckFkZHJlc3MJAKwCAgkArAICAghhZGRyZXNzXwUNY2FsbGVyQWRkcmVzcwIHX2Ftb3VudAETa2V5QXJ0ZWZhY3RJbnZlc3RlZAIEdHlwZQphcnRlZmFjdElkCQCsAgIJAKwCAgkArAICCQCsAgICCWFydGVmYWN0XwUEdHlwZQIMX2FydGVmYWN0SWRfBQphcnRlZmFjdElkAglfaW52ZXN0ZWQBFGtleU9ubHlBcnRlZmFjdExldmVsAQphcnRlZmFjdElkCQCsAgIJAKwCAgILYXJ0ZWZhY3RJZF8JANgEAQUKYXJ0ZWZhY3RJZAIGX2xldmVsARprZXlBcnRlZmFjdElkQnlEdWNrQW5kVHlwZQIEdHlwZQZkdWNrSWQJAKwCAgkArAICCQCsAgIJAKwCAgIKYXJ0ZWZhY3RfIAUEdHlwZQIGX2R1Y2tfCQDYBAEFBmR1Y2tJZAILX2FydGVmYWN0SWQBEGtleUFydGVmYWN0T3duZXICBHR5cGUKYXJ0ZWZhY3RJZAkArAICCQCsAgIJAKwCAgkArAICAgphcnRlZmFjdF8gBQR0eXBlAgxfYXJ0ZWZhY3RJZF8JANgEAQUKYXJ0ZWZhY3RJZAIGX293bmVyARlrZXlBcnRlZmFjdE93bmVyQW5kU3RhdHVzAwR0eXBlBW93bmVyCmFydGVmYWN0SWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQVvd25lcgIKX2FydGVmYWN0XwUEdHlwZQIMX2FydGVmYWN0SWRfCQDYBAEFCmFydGVmYWN0SWQCB19zdGF0dXMBEWtleUFydGVmYWN0U3RhdHVzAgR0eXBlCmFydGVmYWN0SWQJAKwCAgkArAICCQCsAgIJAKwCAgIKYXJ0ZWZhY3RfIAUEdHlwZQIMX2FydGVmYWN0SWRfCQDYBAEFCmFydGVmYWN0SWQCB19zdGF0dXMBD2tleUFydGVmYWN0VHlwZQEKYXJ0ZWZhY3RJZAkArAICCQCsAgICC2FydGVmYWN0SWRfCQDYBAEFCmFydGVmYWN0SWQCBV90eXBlARBrZXlBcnRlZmFjdExldmVsAwR0eXBlBW93bmVyCmFydGVmYWN0SWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQVvd25lcgIKX2FydGVmYWN0XwUEdHlwZQIMX2FydGVmYWN0SWRfCQDYBAEFCmFydGVmYWN0SWQCBl9sZXZlbAEQa2V5UHV0T25BcnRlZmFjdAQEdHlwZQVvd25lcgZkdWNrSWQKYXJ0ZWZhY3RJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQVvd25lcgIGX2R1Y2tfBQZkdWNrSWQCCl9hcnRlZmFjdF8FBHR5cGUCDF9hcnRlZmFjdElkXwkA2AQBBQphcnRlZmFjdElkAgdfc3RhdHVzARFrZXlBcnRlZmFjdEV4aXN0cwIEdHlwZQphcnRlZmFjdElkCQCsAgIJAKwCAgkArAICAglhcnRlZmFjdF8FBHR5cGUCDF9hcnRlZmFjdElkXwkA2AQBBQphcnRlZmFjdElkARBrZXlBcnRlZmFjdE5mdElkAQphcnRlZmFjdElkCQCsAgIJAKwCAgILYXJ0ZWZhY3RJZF8JANgEAQUKYXJ0ZWZhY3RJZAIEX25mdAEJaXNKYWNrcG90AQdhc3NldElkCQAAAgkAsgICCQEFdmFsdWUBCAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBG5hbWUAAQIBVQEFYXNJbnQBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgNJbnQEA2ludAUHJG1hdGNoMAUDaW50CQACAQIeV0FJOiB3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50BQFpAQ9jb25maWd1cmVPcmFjbGUBBm9yYWNsZQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECD1dDTzogYWRtaW4gb25seQkAzAgCCQELU3RyaW5nRW50cnkCAhRzdGF0aWNfb3JhY2xlQWRkcmVzcwUGb3JhY2xlBQNuaWwBaQENcHV0T25BcnRlZmFjdAEKYXJ0ZWZhY3RJZAQMZmlyc3RQYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEDXNlY29uZFBheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAQQRYXR0YWNoZWRBc3NldEluZm8JAQV2YWx1ZQEJAOwHAQkBBXZhbHVlAQgFDGZpcnN0UGF5bWVudAdhc3NldElkBBdzZWNvbmRBdHRhY2hlZEFzc2V0SW5mbwkBBXZhbHVlAQkA7AcBCQEFdmFsdWUBCAUNc2Vjb25kUGF5bWVudAdhc3NldElkAwkBAiE9AggFDGZpcnN0UGF5bWVudAZhbW91bnQAAQkAAgECHldQT0E6IERVQ0sgTkZUIGlzIG5vdCBhdHRhY2hlZAMJAQIhPQIIBQ1zZWNvbmRQYXltZW50BmFtb3VudAABCQACAQIgV1BPQTogTUFOVExFIE5GVCBpcyBub3QgYXR0YWNoZWQDAwkBAiE9AggFEWF0dGFjaGVkQXNzZXRJbmZvBmlzc3VlcgkBE2dldEluY3ViYXRvckFkZHJlc3MACQECIT0CCAURYXR0YWNoZWRBc3NldEluZm8GaXNzdWVyCQERZ2V0QnJlZWRlckFkZHJlc3MABwkAAgECP1dQT0E6IFlvdSBjYW4gYXR0YWNoIG9ubHkgRFVDS3MgaXNzdWVkIGJ5IGluY3ViYXRvciBvciBicmVlZGVyIAMJAQIhPQIIBRdzZWNvbmRBdHRhY2hlZEFzc2V0SW5mbwZpc3N1ZXIFBHRoaXMJAAIBAjRXUE9BOiBZb3UgY2FuIGF0dGFjaCBvbmx5IG1hbnRsZXMgaXNzdWVzIGJ5IHRoaXMgc2MuBAtsaW5rZWROZnRJZAkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleUFydGVmYWN0TmZ0SWQBCQDZBAEFCmFydGVmYWN0SWQEBW5mdElkCQEFdmFsdWUBCAUNc2Vjb25kUGF5bWVudAdhc3NldElkAwkBAiE9AgULbGlua2VkTmZ0SWQJANgEAQUFbmZ0SWQJAAIBAiVNaXNtYXRjaCBiZXR3ZWVuIGFydGVmYWN0SWQgYW5kIG5mdElkBApoYXNTd2VhdGVyCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQETZ2V0V2VhcmFibGVzQWRkcmVzcwAJAKwCAgkA2AQBCQEFdmFsdWUBCAUMZmlyc3RQYXltZW50B2Fzc2V0SWQCDV9BUlQtWFNXRUFURVIEDWtNYW50bGVFeGlzdHMJARFrZXlBcnRlZmFjdEV4aXN0cwIFCk1BTlRMRU5BTUUJANkEAQUKYXJ0ZWZhY3RJZAQNa01hbnRsZVN0YXR1cwkBEWtleUFydGVmYWN0U3RhdHVzAgUKTUFOVExFTkFNRQkA2QQBBQphcnRlZmFjdElkBBdrQXJ0ZWZhY3RPd25lckFuZFN0YXR1cwkBGWtleUFydGVmYWN0T3duZXJBbmRTdGF0dXMDBQpNQU5UTEVOQU1FCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkA2QQBBQphcnRlZmFjdElkBAlrRHVja0xvY2sJAQtrZXlEdWNrTG9jawIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDYBAEJAQV2YWx1ZQEIBQxmaXJzdFBheW1lbnQHYXNzZXRJZAQMbWFudGxlRXhpc3RzCQERQGV4dHJOYXRpdmUoMTA1NikBBQ1rTWFudGxlRXhpc3RzBAxtYW50bGVTdGF0dXMJARFAZXh0ck5hdGl2ZSgxMDU4KQEFDWtNYW50bGVTdGF0dXMEEWtBcnRlZmFjdElkQnlUeXBlCQEaa2V5QXJ0ZWZhY3RJZEJ5RHVja0FuZFR5cGUCBQpNQU5UTEVOQU1FCQEFdmFsdWUBCAUMZmlyc3RQYXltZW50B2Fzc2V0SWQDCQEBIQEFDG1hbnRsZUV4aXN0cwkAAgECK1dQT0E6IE1hbnRsZSB3aXRoIHN1Y2ggYW4gSUQgZG9lcyBub3QgZXhpc3QDCQECIT0CBQxtYW50bGVTdGF0dXMFClNUQVRVU0ZSRUUJAAIBAh1XUE9BOiBNYW50bGUgaXMgYWxyZWFkeSB1c2VkIQQJc3Rha2VEdWNrAwkBAiE9AgUKaGFzU3dlYXRlcgIAAwkBCWlzSmFja3BvdAEJAQV2YWx1ZQEIBQxmaXJzdFBheW1lbnQHYXNzZXRJZAkA/AcECQERZ2V0RmFybWluZ0FkZHJlc3MAAgxzdGFrZUphY2twb3QFA25pbAgFAWkIcGF5bWVudHMJAPwHBAkBEWdldEZhcm1pbmdBZGRyZXNzAAIIc3Rha2VORlQFA25pbAgFAWkIcGF5bWVudHMFA25pbAMJAAACBQlzdGFrZUR1Y2sFCXN0YWtlRHVjawQOa1B1dE9uQXJ0ZWZhY3QJARBrZXlQdXRPbkFydGVmYWN0BAUKTUFOVExFTkFNRQkApQgBCAUBaQxvcmlnaW5DYWxsZXIJANgEAQkBBXZhbHVlAQgFDGZpcnN0UGF5bWVudAdhc3NldElkCQDZBAEFCmFydGVmYWN0SWQEDGtNYW50bGVPd25lcgkBEGtleUFydGVmYWN0T3duZXICBQpNQU5UTEVOQU1FCQDZBAEFCmFydGVmYWN0SWQJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDmtQdXRPbkFydGVmYWN0BgkAzAgCCQELU3RyaW5nRW50cnkCBQ1rTWFudGxlU3RhdHVzBQ5TVEFUVVNPQ0NVUElFRAkAzAgCCQELU3RyaW5nRW50cnkCBRdrQXJ0ZWZhY3RPd25lckFuZFN0YXR1cwUOU1RBVFVTT0NDVVBJRUQJAMwIAgkBC1N0cmluZ0VudHJ5AgUMa01hbnRsZU93bmVyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUJa0R1Y2tMb2NrBgkAzAgCCQELU3RyaW5nRW50cnkCBRFrQXJ0ZWZhY3RJZEJ5VHlwZQUKYXJ0ZWZhY3RJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD3Rha2VPZmZBcnRlZmFjdAIGZHVja0lkDGFydGVmYWN0VHlwZQQYa0FydGVmYWN0SWRCeVR5cGVBbmREdWNrCQEaa2V5QXJ0ZWZhY3RJZEJ5RHVja0FuZFR5cGUCBQxhcnRlZmFjdFR5cGUJANkEAQUGZHVja0lkBAphcnRlZmFjdElkCQERQGV4dHJOYXRpdmUoMTA1OCkBBRhrQXJ0ZWZhY3RJZEJ5VHlwZUFuZER1Y2sEDWtBcnRlZmFjdFR5cGUJAQ9rZXlBcnRlZmFjdFR5cGUBCQDZBAEFCmFydGVmYWN0SWQEDmtQdXRPbkFydGVmYWN0CQEQa2V5UHV0T25BcnRlZmFjdAQFDGFydGVmYWN0VHlwZQkApQgBCAUBaQxvcmlnaW5DYWxsZXIFBmR1Y2tJZAkA2QQBBQphcnRlZmFjdElkBBRrUHV0T25BcnRlZmFjdFN0YXR1cwkBEUBleHRyTmF0aXZlKDEwNTYpAQUOa1B1dE9uQXJ0ZWZhY3QEF2tBcnRlZmFjdE93bmVyQW5kU3RhdHVzCQEZa2V5QXJ0ZWZhY3RPd25lckFuZFN0YXR1cwMFDGFydGVmYWN0VHlwZQkApQgBCAUBaQxvcmlnaW5DYWxsZXIJANkEAQUKYXJ0ZWZhY3RJZAQJa0R1Y2tMb2NrCQELa2V5RHVja0xvY2sCCQClCAEIBQFpDG9yaWdpbkNhbGxlcgUGZHVja0lkBAtsaW5rZWROZnRJZAkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleUFydGVmYWN0TmZ0SWQBCQDZBAEFCmFydGVmYWN0SWQEDWtNYW50bGVTdGF0dXMJARFrZXlBcnRlZmFjdFN0YXR1cwIFDGFydGVmYWN0VHlwZQkA2QQBBQphcnRlZmFjdElkAwkBAiE9AgUUa1B1dE9uQXJ0ZWZhY3RTdGF0dXMGCQACAQIsV1RPQTogVGhlcmUgaXMgbm8gZHVjayB3aXRoIHN1Y2ggcGFyYW1ldGVyZXMECmhhc1N3ZWF0ZXIJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJARNnZXRXZWFyYWJsZXNBZGRyZXNzAAkArAICBQZkdWNrSWQCDV9BUlQtWFNXRUFURVIEDGtNYW50bGVPd25lcgkBEGtleUFydGVmYWN0T3duZXICBQxhcnRlZmFjdFR5cGUJANkEAQUKYXJ0ZWZhY3RJZAQLdW5zdGFrZUR1Y2sDCQECIT0CBQpoYXNTd2VhdGVyAgADCQEJaXNKYWNrcG90AQkA2QQBBQZkdWNrSWQJAPwHBAkBEWdldEZhcm1pbmdBZGRyZXNzAAIOdW5zdGFrZUphY2twb3QJAMwIAgUGZHVja0lkBQNuaWwFA25pbAkA/AcECQERZ2V0RmFybWluZ0FkZHJlc3MAAgp1bnN0YWtlTkZUCQDMCAIFBmR1Y2tJZAUDbmlsBQNuaWwFA25pbAMJAAACBQt1bnN0YWtlRHVjawULdW5zdGFrZUR1Y2sJAMwIAgkBC0RlbGV0ZUVudHJ5AQUOa1B1dE9uQXJ0ZWZhY3QJAMwIAgkBC0RlbGV0ZUVudHJ5AQUYa0FydGVmYWN0SWRCeVR5cGVBbmREdWNrCQDMCAIJAQtEZWxldGVFbnRyeQEFCWtEdWNrTG9jawkAzAgCCQELU3RyaW5nRW50cnkCBQ1rTWFudGxlU3RhdHVzBQpTVEFUVVNGUkVFCQDMCAIJAQtEZWxldGVFbnRyeQEFF2tBcnRlZmFjdE93bmVyQW5kU3RhdHVzCQDMCAIJAQtEZWxldGVFbnRyeQEFDGtNYW50bGVPd25lcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQxvcmlnaW5DYWxsZXIAAQkA2QQBBQZkdWNrSWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkMb3JpZ2luQ2FsbGVyAAEJANkEAQULbGlua2VkTmZ0SWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1leHBvcnRNYW50bGVzAQNpZHMEBm5mdElkcwkAtQkCBQNpZHMCATsKAQhoYW5kbGVJZAIDYWNjAmlkBAxrTWFudGxlT3duZXIJARBrZXlBcnRlZmFjdE93bmVyAgUKTUFOVExFTkFNRQkA2QQBBQJpZAQLbWFudGxlT3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBBQxrTWFudGxlT3duZXIFDGtNYW50bGVPd25lcgQXa0FydGVmYWN0T3duZXJBbmRTdGF0dXMJARlrZXlBcnRlZmFjdE93bmVyQW5kU3RhdHVzAwUKTUFOVExFTkFNRQULbWFudGxlT3duZXIJANkEAQUCaWQEDWtNYW50bGVTdGF0dXMJARFrZXlBcnRlZmFjdFN0YXR1cwIFCk1BTlRMRU5BTUUJANkEAQUCaWQEDG1hbnRsZVN0YXR1cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEFDWtNYW50bGVTdGF0dXMFDWtNYW50bGVTdGF0dXMEC2xpbmtlZE5m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", "height": 3190598, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8n8zrpz8brxBC1Ef386NNmYbBsvyXypVDBnvRbEmAJsi Next: 66GQDDJNHczYNibimipALU49pyiHLxGwzjKbBdf4kKqw Diff:
OldNewDifferences
197197 let nftIds = split(ids, ";")
198198 func handleId (acc,id) = {
199199 let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(id))
200- let mantleOwner = getStringValue(kMantleOwner)
200+ let mantleOwner = valueOrErrorMessage(getString(kMantleOwner), kMantleOwner)
201201 let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, mantleOwner, fromBase58String(id))
202202 let kMantleStatus = keyArtefactStatus(MANTLENAME, fromBase58String(id))
203- let mantleStatus = getStringValue(kMantleStatus)
203+ let mantleStatus = valueOrErrorMessage(getString(kMantleStatus), kMantleStatus)
204204 let linkedNftId = getStringValue(keyArtefactNftId(fromBase58String(id)))
205205 if ((mantleStatus == STATUSFREE))
206206 then (acc ++ [ScriptTransfer(Address(fromBase58String(mantleOwner)), 1, fromBase58String(linkedNftId)), DeleteEntry(kMantleOwner), DeleteEntry(kArtefactOwnerAndStatus)])
228228 let nftIds = split(ids, ";")
229229 func handleId (acc,id) = {
230230 let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(id))
231- let mantleOwner = getStringValue(kMantleOwner)
231+ let mantleOwner = valueOrErrorMessage(getString(kMantleOwner), kMantleOwner)
232232 if ((mantleOwner == ""))
233233 then throw(("DINFM: Something went wrong with mantle " + id))
234234 else {
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 = getStringValue(kMantleOwner)
200+ let mantleOwner = valueOrErrorMessage(getString(kMantleOwner), kMantleOwner)
201201 let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, mantleOwner, fromBase58String(id))
202202 let kMantleStatus = keyArtefactStatus(MANTLENAME, fromBase58String(id))
203- let mantleStatus = getStringValue(kMantleStatus)
203+ let mantleStatus = valueOrErrorMessage(getString(kMantleStatus), kMantleStatus)
204204 let linkedNftId = getStringValue(keyArtefactNftId(fromBase58String(id)))
205205 if ((mantleStatus == STATUSFREE))
206206 then (acc ++ [ScriptTransfer(Address(fromBase58String(mantleOwner)), 1, fromBase58String(linkedNftId)), DeleteEntry(kMantleOwner), DeleteEntry(kArtefactOwnerAndStatus)])
207207 else acc
208208 }
209209
210210 let $l = nftIds
211211 let $s = size($l)
212212 let $acc0 = nil
213213 func $f0_1 ($a,$i) = if (($i >= $s))
214214 then $a
215215 else handleId($a, $l[$i])
216216
217217 func $f0_2 ($a,$i) = if (($i >= $s))
218218 then $a
219219 else throw("List size exceeds 20")
220220
221221 $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)
222222 }
223223
224224
225225
226226 @Callable(i)
227227 func issueNftForMantles (ids) = {
228228 let nftIds = split(ids, ";")
229229 func handleId (acc,id) = {
230230 let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(id))
231- let mantleOwner = getStringValue(kMantleOwner)
231+ let mantleOwner = valueOrErrorMessage(getString(kMantleOwner), kMantleOwner)
232232 if ((mantleOwner == ""))
233233 then throw(("DINFM: Something went wrong with mantle " + id))
234234 else {
235235 let issueMantleNFT = Issue("DUCK-MANTLE-0", "[Artefact] Mantle NFT for Jeduck", 1, 0, false, unit, size(acc))
236236 let mantleNftId = calculateAssetId(issueMantleNFT)
237237 let kArtefactNftId = keyArtefactNftId(fromBase58String(id))
238238 (acc ++ [issueMantleNFT, StringEntry(kArtefactNftId, toBase58String(mantleNftId))])
239239 }
240240 }
241241
242242 let $l = nftIds
243243 let $s = size($l)
244244 let $acc0 = nil
245245 func $f0_1 ($a,$i) = if (($i >= $s))
246246 then $a
247247 else handleId($a, $l[$i])
248248
249249 func $f0_2 ($a,$i) = if (($i >= $s))
250250 then $a
251251 else throw("List size exceeds 20")
252252
253253 $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)
254254 }
255255
256256

github/deemru/w8io/786bc32 
176.74 ms