tx · H5RbdsG7QRKzR6YpJ7yX4U5aoAJd7dndHaBGmXyvaJAZ

3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy:  -0.01100000 Waves

2023.06.15 22:27 [2624173] smart account 3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy > SELF 0.00000000 Waves

{ "type": 13, "id": "H5RbdsG7QRKzR6YpJ7yX4U5aoAJd7dndHaBGmXyvaJAZ", "fee": 1100000, "feeAssetId": null, "timestamp": 1686857276039, "version": 2, "chainId": 84, "sender": "3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy", "senderPublicKey": "FsR18761ZAsUqsTd7TK3XmR6bhihs1UXVmpHYxz5JzQ1", "proofs": [ "w5vBa3DQg6BJK3nL3cQW5GswvCiKp58ucNutJjvGGSpWQ3xL6nVwDjxwmer7grwNXpRvJyjoU6NkKjRFaHnsQki" ], "script": "base64:BgIVCAISBQoDCAgIEgMKAQESAwoBARIAgQEABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgARSW5mcmFVcGdyYWRlQ29zdFMEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgMivoCUDCQAAAgEBVAUHJG1hdGNoMACAwtcvCQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUNwCAreIEAAVNVUxUOACAwtcvAAZNVUxUMTAAgMivoCUACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sACkFSVFBSRVNBTEUCB1BSRVNBTEUABk5VTVJFUwAGAAVTU0laRQAZAAVNU0laRQBkAAVMU0laRQDhAQAGWExTSVpFAJADAAdYWExTSVpFAPEEAA9EQUlMWVJFU0JZUElFQ0UAgPjSAQAJREFZTUlMTElTAIC4mSkADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAA1FU01BWFBBQ0tBR0VTAAMACUVTQlVZQ09FRgAEAApFU1NFTExDT0VGAAoABU1BWEhQAGQACHJlc1R5cGVzCQDMCAICA09pbAkAzAgCAgNPcmUJAMwIAgIEV29vZAkAzAgCAgRTYW5kCQDMCAICBENsYXkJAMwIAgIHT3JnYW5pYwUDbmlsAAhtYXRUeXBlcwkAzAgCAgRGdWVsCQDMCAICBU1ldGFsCQDMCAICBVBsYW5rCQDMCAICBUdsYXNzCQDMCAICB1BsYXN0aWMJAMwIAgIHUHJvdGVpbgUDbmlsAAlwcm9kVHlwZXMJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMQkAzAgCAhBGaXJzdCBBaWQgS2l0IEwyCQDMCAICEEZpcnN0IEFpZCBLaXQgTDMJAMwIAgILQmFja3BhY2sgTDEJAMwIAgILQmFja3BhY2sgTDIJAMwIAgILQmFja3BhY2sgTDMJAMwIAgIORm9vZCBSYXRpb24gTDEJAMwIAgIORm9vZCBSYXRpb24gTDIJAMwIAgIORm9vZCBSYXRpb24gTDMJAMwIAgILSmV0IFBhY2sgTDEJAMwIAgILSmV0IFBhY2sgTDIJAMwIAgILSmV0IFBhY2sgTDMJAMwIAgIJU2hpZWxkIEwxCQDMCAICCVNoaWVsZCBMMgkAzAgCAglTaGllbGQgTDMFA25pbAAKY29udGluZW50cwkAzAgCAghBbWVyaWNhcwkAzAgCAgZFdXJvcGUJAMwIAgIEQXNpYQkAzAgCAgZBZnJpY2EJAMwIAgIHT2NlYW5pYQUDbmlsABBwcm9kdWN0aW9uTWF0cml4CQDMCAICEjFfMV8xXzJfMl81XzFfMTBfMAkAzAgCAhMyXzJfMl80XzRfMTBfMV8xMF8wCQDMCAICEzNfM18zXzZfNl8xNV8xXzEwXzAJAMwIAgITMl81XzVfMl83XzVfMl8xMDBfMQkAzAgCAhc0XzEwXzEwXzRfMTRfMTBfMl8xMDBfMQkAzAgCAhc2XzE1XzE1XzZfMjFfMTVfMl8xMDBfMQkAzAgCAhIxXzFfMV8xXzFfOF8xXzEwXzIJAMwIAgITMl8yXzJfMl8yXzE2XzFfMTBfMgkAzAgCAhMzXzNfM18zXzNfMjRfMV8xMF8yCQDMCAICEzlfOV8xXzVfNV8xXzVfMTAwXzMJAMwIAgIXMThfMThfMl8xMF8xMF8yXzVfMTAwXzMJAMwIAgIXMjdfMjdfM18xNV8xNV8zXzVfMTAwXzMJAMwIAgISMl8yXzFfMl8yXzJfMV8xMF80CQDMCAICEjRfNF8yXzRfNF80XzFfMTBfNAkAzAgCAhI2XzZfM182XzZfNl8xXzEwXzQFA25pbAAPY29udElkeEFtZXJpY2FzAAAADWNvbnRJZHhFdXJvcGUAAQALY29udElkeEFzaWEAAgANY29udElkeEFmcmljYQADAA5jb250SWR4T2NlYW5pYQAEAA1yZWNpcGVJZHhGdWVsAAAADnJlY2lwZUlkeE1ldGFsAAEADnJlY2lwZUlkeFBsYW5rAAIADnJlY2lwZUlkeEdsYXNzAAMAEHJlY2lwZUlkeFBsYXN0aWMABAAQcmVjaXBlSWR4UHJvdGVpbgAFAA9yZWNpcGVJZHhXZWlnaHQABgARcmVjaXBlSWR4UGFja3NpemUABwAScmVjaXBlSWR4Q29udGluZW50AAgACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMAC3doSWR4TGV2ZWxzAAAACHdoSWR4UmVzAAEACHdoSWR4TWF0AAIACXdoSWR4UHJvZAADAAl3aElkeExPRlQABAAJdm9sTG9ja2VkAAAAC3ZvbE9jY3VwaWVkAAEAB3ZvbEZyZWUAAgAIdm9sVG90YWwAAwAKYnBJZHhMZXZlbAAAAAhicElkeFJlcwABAAhicElkeE1hdAACAAlicElkeFByb2QAAwEKZ2V0UGtnU2l6ZQEHcHJvZElkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQdwcm9kSWR4AgFfBRFyZWNpcGVJZHhQYWNrc2l6ZQEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABDGdldEludE9yRWxzZQIDa2V5CmRlZmF1bHRWYWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5BQpkZWZhdWx0VmFsABFJZHhDZmdTdGFraW5nRGFwcAABABFJZHhDZmdFY29ub215RGFwcAACABRJZHhDZmdHb3Zlcm5hbmNlRGFwcAADAA1JZHhDZmdXbGdEYXBwAAQBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAD2Vjb25vbXlDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwAAtnb3ZDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0dvdmVybmFuY2VEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFDUlkeENmZ1dsZ0RhcHABEWtleUxhc3RUeElkQnlVc2VyAQRhZGRyCQCsAgICD2xhc3RUeElkQnlVc2VyXwUEYWRkcgEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQdhc3NldElkCQCsAgICCW5mdE93bmVyXwUHYXNzZXRJZAEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYbGFuZEN1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQdhc3NldElkCQCsAgICC3N0YWtlZFRpbWVfBQdhc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIEdHlwZQdhc3NldElkCQC5CQIJAMwIAgINbGFuZEFydFN0YXR1cwkAzAgCBQR0eXBlCQDMCAIFB2Fzc2V0SWQFA25pbAIBXwEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMHbmZ0VHlwZQdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICIHN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXJfBQduZnRUeXBlAgFfBQdhc3NldElkAgFfBQlvd25lckFkZHIBEmtleVdhcmVob3VzZUJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIKd2FyZUhvdXNlXwULbGFuZEFzc2V0SWQBFWtleVN0YWtlZExhbmRzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICE3N0YWtlZExhbmRzQnlPd25lcl8FCW93bmVyQWRkcgEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYZHVja0N1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQRhZGRyCQCsAgICGGFjY291bnRDdXN0b21OYW1lQnlBZGRyXwUEYWRkcgEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgETa2V5QWRkcmVzc1JlZmVycmFscwEEYWRkcgkArAICAg1hY2NSZWZlcnJhbHNfBQRhZGRyARBrZXlEdWNrSWRUb093bmVyAQdhc3NldElkCQCsAgICCmR1Y2tPd25lcl8FB2Fzc2V0SWQBFGtleVN0YWtlZER1Y2tCeU93bmVyAQlvd25lckFkZHIJAKwCAgISc3Rha2VkRHVja0J5T3duZXJfBQlvd25lckFkZHIBEWtleUJhY2twYWNrQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAgliYWNrUGFja18FC2R1Y2tBc3NldElkAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBEWtleVJlc1Byb3BvcnRpb25zAAITcmVzVHlwZXNQcm9wb3J0aW9ucwEKa2V5QmxvY2tlZAACEGNvbnRyYWN0c0Jsb2NrZWQBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEIdXNlckFkZHIJAKwCAgIaJXMlc19fdXNlckd3bFJlbGVhc2VUaW1lX18FCHVzZXJBZGRyAQ5rZXlPcmRlckJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIKbGFuZE9yZGVyXwULbGFuZEFzc2V0SWQBDmtleUVzV2FyZWhvdXNlAAIaZW1lcmdlbmN5V2FyZWhvdXNlUHJvZHVjdHMAD2xvY0lkeENvbnRpbmVudAAAAApsb2NJZHhUeXBlAAEACGxvY0lkeElkAAIBCGFzU3RyaW5nAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFuBQckbWF0Y2gwBQFuCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQlhc0FueUxpc3QBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIJTGlzdFtBbnldBAFsBQckbWF0Y2gwBQFsCQACAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQlhc0Jvb2xlYW4BAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBcwUHJG1hdGNoMAUBcwkAAgECGWZhaWwgdG8gY2FzdCBpbnRvIEJvb2xlYW4BD251bVBpZWNlc0J5U2l6ZQEIbGFuZFNpemUEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAFBVNTSVpFAwkAAAICAU0FByRtYXRjaDAFBU1TSVpFAwkAAAICAUwFByRtYXRjaDAFBUxTSVpFAwkAAAICAlhMBQckbWF0Y2gwBQZYTFNJWkUDCQAAAgIDWFhMBQckbWF0Y2gwBQdYWExTSVpFCQACAQIRVW5rbm93biBsYW5kIHNpemUAC0lkeEVmZlRvdGFsAAAACklkeEVmZlVzZXIAAQEOZ2V0Vm90aW5nUG93ZXIBEnVzZXJBZGRyU3RyT3JFbXB0eQQFcHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARFrZXlSZXNQcm9wb3J0aW9ucwACCzBfMF8wXzBfMF8wAgFfCgEFYWRkZXICA2FjYwRpdGVtCQBkAgUDYWNjCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0ECnRvdGFsUG93ZXIKAAIkbAUFcHJvcHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBAp1c2Vyc1Bvd2VyAwkAAAIFEnVzZXJBZGRyU3RyT3JFbXB0eQIAAAAECGxhbmRzU3RyCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFEnVzZXJBZGRyU3RyT3JFbXB0eQQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQIbGFuZFNpemUJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplCQBkAgUDYWNjCQEPbnVtUGllY2VzQnlT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dElkS2V5Agt3bGdfYXNzZXRJZAAPd2xnSXNzdWVUaW1lS2V5Ag13bGdfaXNzdWVUaW1lABBtYXJrZXRpbmdBZGRyS2V5Ag1tYXJrZXRpbmdBZGRyAAt0ZWFtQWRkcktleQIIdGVhbUFkZHIAFGxhc3RNYXJrZXRpbmdUaW1lS2V5AhlsYXN0Q2xhaW1lZFRpbWVfbWFya2V0aW5nAA9sYXN0VGVhbVRpbWVLZXkCFGxhc3RDbGFpbWVkVGltZV90ZWFtABVsYXN0QWN0aXZpdGllc1RpbWVLZXkCGmxhc3RDbGFpbWVkVGltZV9hY3Rpdml0aWVzARhrZXlMYXN0Q2xhaW1lZFRpbWVCeVVzZXIBBGFkZHICG2xhc3RDbGFpbWVkVGltZVVzZXJfICsgYWRkcgQBaQENY29uc3RydWN0b3JWMQMIcmVzdEFkZHINbWFya2V0aW5nQWRkcgh0ZWFtQWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkAwkBCWlzRGVmaW5lZAEJAKIIAQUNd2xnQXNzZXRJZEtleQkAAgECE0FscmVhZHkgaW5pdGlhbGl6ZWQEBWlzc3VlCQDDCAcCBldMR09MRAIgV2F2ZXNMYW5kcyBHb2xkIGludmVzdG1lbnQgdG9rZW4FBk1VTFQxNAAIBgUEdW5pdAAABAdhc3NldElkCQC4CAEFBWlzc3VlCQDMCAIFBWlzc3VlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ93bGdJc3N1ZVRpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtCaW5hcnlFbnRyeQIFDXdsZ0Fzc2V0SWRLZXkFB2Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUQbWFya2V0aW5nQWRkcktleQUNbWFya2V0aW5nQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQt0ZWFtQWRkcktleQUIdGVhbUFkZHIFA25pbAFpAQZidXlXbGcBBmFtb3VudAUDbmlsAWkBB3NlbGxXbGcBBmFtb3VudAUDbmlsAWkBBWNsYWltAAQGY2FsbGVyCAUBaQZjYWxsZXIECmNhbGxlckFkZHIJAKUIAQUGY2FsbGVyBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlpc3N1ZVRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQ93bGdJc3N1ZVRpbWVLZXkCD05vdCBpbml0aWFsaXplZAQKd2xnQXNzZXRJZAkBBXZhbHVlAQkAoQgBBQ13bGdBc3NldElkS2V5BBFsYXN0TWFya2V0aW5nVGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBRRsYXN0TWFya2V0aW5nVGltZUtleQUJaXNzdWVUaW1lBA1tYXJrZXRpbmdBZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCiCAEFEG1hcmtldGluZ0FkZHJLZXkED21hcmtldGluZ0Ftb3VudAkAawMJAGsDBQZNVUxUMTQFDk1BUktFVElOR1NIQVJFBQVNVUxUNgkAZQIFA25vdwURbGFzdE1hcmtldGluZ1RpbWUFCllFQVJNSUxMSVMEDGxhc3RUZWFtVGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9sYXN0VGVhbVRpbWVLZXkFCWlzc3VlVGltZQQIdGVhbUFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAKIIAQULdGVhbUFkZHJLZXkECnRlYW1BbW91bnQJAGsDCQBrAwUGTVVMVDE0BQlURUFNU0hBUkUFBU1VTFQ2CQBlAgUDbm93BQxsYXN0VGVhbVRpbWUJAGgCAAMFCllFQVJNSUxMSVMEEmxhc3RBY3Rpdml0aWVzVGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBRVsYXN0QWN0aXZpdGllc1RpbWVLZXkFCWlzc3VlVGltZQQJYWN0QW1vdW50CQBrAwkAawMFBk1VTFQxNAUNQUNUSVZJVFlTSEFSRQUFTVVMVDYJAGUCBQNub3cFEmxhc3RBY3Rpdml0aWVzVGltZQkAaAIAAwUKWUVBUk1JTExJUwQLdXNlclRpbWVLZXkJARhrZXlMYXN0Q2xhaW1lZFRpbWVCeVVzZXIBBQpjYWxsZXJBZGRyBAxsYXN0VXNlclRpbWUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQULdXNlclRpbWVLZXkFCWlzc3VlVGltZQQDZWZmCQEOZ2V0Vm90aW5nUG93ZXIBBQpjYWxsZXJBZGRyBAp1c2VyQW1vdW50CQBrAwkAawMJAGsDBQZNVUxUMTQFC1BMQVlFUlNIQVJFBQVNVUxUNgkAkQMCBQNlZmYFCklkeEVmZlVzZXIJAJEDAgUDZWZmBQtJZHhFZmZUb3RhbAkAZQIFA25vdwUMbGFzdFVzZXJUaW1lCQBoAgADBQpZRUFSTUlMTElTCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDW1hcmtldGluZ0FkZHIFD21hcmtldGluZ0Ftb3VudAUKd2xnQXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQh0ZWFtQWRkcgUKdGVhbUFtb3VudAUKd2xnQXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFCWFjdEFtb3VudAUKd2xnQXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFCnVzZXJBbW91bnQFCndsZ0Fzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIFFGxhc3RNYXJrZXRpbmdUaW1lS2V5BQNub3cJAMwIAgkBDEludGVnZXJFbnRyeQIFD2xhc3RUZWFtVGltZUtleQUDbm93CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVsYXN0QWN0aXZpdGllc1RpbWVLZXkFA25vdwkAzAgCCQEMSW50ZWdlckVudHJ5AgULdXNlclRpbWVLZXkFA25vdwUDbmlsAMdfh44=", "height": 2624173, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: B4tw6JUmfdpcDni1S2mf9oM5xX52zGgKdAEdmPAP6iDw Next: HtAsxNwuDdVkabmoNGMS9h26TvRaodhoxcM11FVNSyzR Diff:
OldNewDifferences
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let chain = take(drop(this.bytes, 1), 1)
5+
6+let usdtAssetId = match chain {
7+ case _ =>
8+ if ((base58'2W' == $match0))
9+ then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
10+ else if ((base58'2T' == $match0))
11+ then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
12+ else throw("Unknown chain")
13+}
514
615 let defaultRestAddressStr = match chain {
716 case _ =>
1221 else throw("Unknown chain")
1322 }
1423
24+let InfraUpgradeCostS = match chain {
25+ case _ =>
26+ if ((base58'2W' == $match0))
27+ then 10000000000
28+ else if ((base58'2T' == $match0))
29+ then 100000000
30+ else throw("Unknown chain")
31+}
32+
1533 let SEP = "__"
1634
1735 let MULT6 = 1000000
36+
37+let MULT7 = 10000000
38+
39+let MULT8 = 100000000
40+
41+let MULT10 = 10000000000
42+
43+let LANDPREFIX = "LAND"
44+
45+let DUCKPREFIX = "DUCK"
46+
47+let ARTPRESALE = "PRESALE"
48+
49+let NUMRES = 6
1850
1951 let SSIZE = 25
2052
2658
2759 let XXLSIZE = 625
2860
61+let DAILYRESBYPIECE = 3456000
62+
63+let DAYMILLIS = 86400000
64+
65+let WHMULTIPLIER = 10000000000
66+
67+let DEFAULTLOCATION = "Africa_F_Africa"
68+
69+let RESOURCEPRICEMIN = 39637
70+
71+let ESMAXPACKAGES = 3
72+
73+let ESBUYCOEF = 4
74+
75+let ESSELLCOEF = 10
76+
77+let MAXHP = 100
78+
79+let resTypes = ["Oil", "Ore", "Wood", "Sand", "Clay", "Organic"]
80+
81+let matTypes = ["Fuel", "Metal", "Plank", "Glass", "Plastic", "Protein"]
82+
83+let prodTypes = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3"]
84+
85+let continents = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
86+
87+let productionMatrix = ["1_1_1_2_2_5_1_10_0", "2_2_2_4_4_10_1_10_0", "3_3_3_6_6_15_1_10_0", "2_5_5_2_7_5_2_100_1", "4_10_10_4_14_10_2_100_1", "6_15_15_6_21_15_2_100_1", "1_1_1_1_1_8_1_10_2", "2_2_2_2_2_16_1_10_2", "3_3_3_3_3_24_1_10_2", "9_9_1_5_5_1_5_100_3", "18_18_2_10_10_2_5_100_3", "27_27_3_15_15_3_5_100_3", "2_2_1_2_2_2_1_10_4", "4_4_2_4_4_4_1_10_4", "6_6_3_6_6_6_1_10_4"]
88+
89+let contIdxAmericas = 0
90+
91+let contIdxEurope = 1
92+
93+let contIdxAsia = 2
94+
95+let contIdxAfrica = 3
96+
97+let contIdxOceania = 4
98+
99+let recipeIdxFuel = 0
100+
101+let recipeIdxMetal = 1
102+
103+let recipeIdxPlank = 2
104+
105+let recipeIdxGlass = 3
106+
107+let recipeIdxPlastic = 4
108+
109+let recipeIdxProtein = 5
110+
111+let recipeIdxWeight = 6
112+
113+let recipeIdxPacksize = 7
114+
115+let recipeIdxContinent = 8
116+
117+let recLandNum = 0
118+
29119 let recLandSize = 1
120+
121+let recTerrains = 2
122+
123+let recContinent = 3
124+
125+let whIdxLevels = 0
126+
127+let whIdxRes = 1
128+
129+let whIdxMat = 2
130+
131+let whIdxProd = 3
132+
133+let whIdxLOFT = 4
134+
135+let volLocked = 0
136+
137+let volOccupied = 1
138+
139+let volFree = 2
140+
141+let volTotal = 3
142+
143+let bpIdxLevel = 0
144+
145+let bpIdxRes = 1
146+
147+let bpIdxMat = 2
148+
149+let bpIdxProd = 3
150+
151+func getPkgSize (prodIdx) = parseIntValue(split(productionMatrix[prodIdx], "_")[recipeIdxPacksize])
152+
30153
31154 func getStringOrFail (address,key) = valueOrErrorMessage(getString(address, key), makeString(["mandatory ", toString(address), ".", key, " is not defined"], ""))
32155
33156
157+func getIntOrElse (key,defaultVal) = valueOrElse(getInteger(this, key), defaultVal)
158+
159+
34160 let IdxCfgStakingDapp = 1
161+
162+let IdxCfgEconomyDapp = 2
163+
164+let IdxCfgGovernanceDapp = 3
165+
166+let IdxCfgWlgDapp = 4
35167
36168 func keyRestCfg () = "%s__restConfig"
37169
51183
52184 let stakingContract = getContractAddressOrFail(restCfg, IdxCfgStakingDapp)
53185
186+let economyContract = getContractAddressOrFail(restCfg, IdxCfgEconomyDapp)
187+
188+let govContract = getContractAddressOrFail(restCfg, IdxCfgGovernanceDapp)
189+
190+let wlgContract = getContractAddressOrFail(restCfg, IdxCfgWlgDapp)
191+
192+func keyLastTxIdByUser (addr) = ("lastTxIdByUser_" + addr)
193+
194+
195+func keyLandAssetIdToOwner (assetId) = ("nftOwner_" + assetId)
196+
197+
198+func keyLandAssetIdToCustomName (assetId) = ("landCustomNameByAssetId_" + assetId)
199+
200+
201+func keyStakedTimeByAssetId (assetId) = ("stakedTime_" + assetId)
202+
203+
204+func keyInfraLevelByAssetId (assetId) = ("infraLevel_" + assetId)
205+
206+
207+func keyLandArtStatusByTypeAndAssetId (type,assetId) = makeString(["landArtStatus", type, assetId], "_")
208+
209+
210+func keyStakedTimeByTypeAssetIdAndOwner (nftType,assetId,ownerAddr) = ((((("stakedTimeByTypeAssetIdAndOwner_" + nftType) + "_") + assetId) + "_") + ownerAddr)
211+
212+
213+func keyWarehouseByLand (landAssetId) = ("wareHouse_" + landAssetId)
214+
215+
54216 func keyStakedLandsByOwner (ownerAddr) = ("stakedLandsByOwner_" + ownerAddr)
55217
56218
219+func keyDuckAssetIdToCustomName (assetId) = ("duckCustomNameByAssetId_" + assetId)
220+
221+
222+func keyAddressToCustomName (addr) = ("accountCustomNameByAddr_" + addr)
223+
224+
225+func keyAddressRefBy (addr) = ("accRefBy_" + addr)
226+
227+
228+func keyAddressReferrals (addr) = ("accReferrals_" + addr)
229+
230+
231+func keyDuckIdToOwner (assetId) = ("duckOwner_" + assetId)
232+
233+
234+func keyStakedDuckByOwner (ownerAddr) = ("stakedDuckByOwner_" + ownerAddr)
235+
236+
237+func keyBackpackByDuck (duckAssetId) = ("backPack_" + duckAssetId)
238+
239+
240+func keyDuckLocation (duckAssetId) = ("duckLocation_" + duckAssetId)
241+
242+
243+func keyDuckHealth (duckAssetId) = ("duckHealth_" + duckAssetId)
244+
245+
57246 func keyResProportions () = "resTypesProportions"
247+
248+
249+func keyBlocked () = "contractsBlocked"
250+
251+
252+func keyUserGwlReleaseTime (userAddr) = ("%s%s__userGwlReleaseTime__" + userAddr)
253+
254+
255+func keyOrderByLand (landAssetId) = ("landOrder_" + landAssetId)
256+
257+
258+func keyEsWarehouse () = "emergencyWarehouseProducts"
259+
260+
261+let locIdxContinent = 0
262+
263+let locIdxType = 1
264+
265+let locIdxId = 2
266+
267+func asString (v) = match v {
268+ case s: String =>
269+ s
270+ case _ =>
271+ throw("fail to cast into String")
272+}
273+
274+
275+func asInt (v) = match v {
276+ case n: Int =>
277+ n
278+ case _ =>
279+ throw("fail to cast into Int")
280+}
281+
282+
283+func asAnyList (v) = match v {
284+ case l: List[Any] =>
285+ l
286+ case _ =>
287+ throw("fail to cast into List[Any]")
288+}
289+
290+
291+func asBoolean (v) = match v {
292+ case s: Boolean =>
293+ s
294+ case _ =>
295+ throw("fail to cast into Boolean")
296+}
58297
59298
60299 func numPiecesBySize (landSize) = match landSize {
122361 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
123362 }
124363 [totalPower, usersPower]
364+ }
365+
366+
367+func getRecipeMaterials (recipe) = {
368+ func addMat (ac,j) = (ac + parseIntValue(recipe[j]))
369+
370+ let $l = [0, 1, 2, 3, 4, 5]
371+ let $s = size($l)
372+ let $acc0 = 0
373+ func $f0_1 ($a,$i) = if (($i >= $s))
374+ then $a
375+ else addMat($a, $l[$i])
376+
377+ func $f0_2 ($a,$i) = if (($i >= $s))
378+ then $a
379+ else throw("List size exceeds 6")
380+
381+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
125382 }
126383
127384
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let chain = take(drop(this.bytes, 1), 1)
5+
6+let usdtAssetId = match chain {
7+ case _ =>
8+ if ((base58'2W' == $match0))
9+ then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
10+ else if ((base58'2T' == $match0))
11+ then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
12+ else throw("Unknown chain")
13+}
514
615 let defaultRestAddressStr = match chain {
716 case _ =>
817 if ((base58'2W' == $match0))
918 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
1019 else if ((base58'2T' == $match0))
1120 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
1221 else throw("Unknown chain")
1322 }
1423
24+let InfraUpgradeCostS = match chain {
25+ case _ =>
26+ if ((base58'2W' == $match0))
27+ then 10000000000
28+ else if ((base58'2T' == $match0))
29+ then 100000000
30+ else throw("Unknown chain")
31+}
32+
1533 let SEP = "__"
1634
1735 let MULT6 = 1000000
36+
37+let MULT7 = 10000000
38+
39+let MULT8 = 100000000
40+
41+let MULT10 = 10000000000
42+
43+let LANDPREFIX = "LAND"
44+
45+let DUCKPREFIX = "DUCK"
46+
47+let ARTPRESALE = "PRESALE"
48+
49+let NUMRES = 6
1850
1951 let SSIZE = 25
2052
2153 let MSIZE = 100
2254
2355 let LSIZE = 225
2456
2557 let XLSIZE = 400
2658
2759 let XXLSIZE = 625
2860
61+let DAILYRESBYPIECE = 3456000
62+
63+let DAYMILLIS = 86400000
64+
65+let WHMULTIPLIER = 10000000000
66+
67+let DEFAULTLOCATION = "Africa_F_Africa"
68+
69+let RESOURCEPRICEMIN = 39637
70+
71+let ESMAXPACKAGES = 3
72+
73+let ESBUYCOEF = 4
74+
75+let ESSELLCOEF = 10
76+
77+let MAXHP = 100
78+
79+let resTypes = ["Oil", "Ore", "Wood", "Sand", "Clay", "Organic"]
80+
81+let matTypes = ["Fuel", "Metal", "Plank", "Glass", "Plastic", "Protein"]
82+
83+let prodTypes = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3"]
84+
85+let continents = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
86+
87+let productionMatrix = ["1_1_1_2_2_5_1_10_0", "2_2_2_4_4_10_1_10_0", "3_3_3_6_6_15_1_10_0", "2_5_5_2_7_5_2_100_1", "4_10_10_4_14_10_2_100_1", "6_15_15_6_21_15_2_100_1", "1_1_1_1_1_8_1_10_2", "2_2_2_2_2_16_1_10_2", "3_3_3_3_3_24_1_10_2", "9_9_1_5_5_1_5_100_3", "18_18_2_10_10_2_5_100_3", "27_27_3_15_15_3_5_100_3", "2_2_1_2_2_2_1_10_4", "4_4_2_4_4_4_1_10_4", "6_6_3_6_6_6_1_10_4"]
88+
89+let contIdxAmericas = 0
90+
91+let contIdxEurope = 1
92+
93+let contIdxAsia = 2
94+
95+let contIdxAfrica = 3
96+
97+let contIdxOceania = 4
98+
99+let recipeIdxFuel = 0
100+
101+let recipeIdxMetal = 1
102+
103+let recipeIdxPlank = 2
104+
105+let recipeIdxGlass = 3
106+
107+let recipeIdxPlastic = 4
108+
109+let recipeIdxProtein = 5
110+
111+let recipeIdxWeight = 6
112+
113+let recipeIdxPacksize = 7
114+
115+let recipeIdxContinent = 8
116+
117+let recLandNum = 0
118+
29119 let recLandSize = 1
120+
121+let recTerrains = 2
122+
123+let recContinent = 3
124+
125+let whIdxLevels = 0
126+
127+let whIdxRes = 1
128+
129+let whIdxMat = 2
130+
131+let whIdxProd = 3
132+
133+let whIdxLOFT = 4
134+
135+let volLocked = 0
136+
137+let volOccupied = 1
138+
139+let volFree = 2
140+
141+let volTotal = 3
142+
143+let bpIdxLevel = 0
144+
145+let bpIdxRes = 1
146+
147+let bpIdxMat = 2
148+
149+let bpIdxProd = 3
150+
151+func getPkgSize (prodIdx) = parseIntValue(split(productionMatrix[prodIdx], "_")[recipeIdxPacksize])
152+
30153
31154 func getStringOrFail (address,key) = valueOrErrorMessage(getString(address, key), makeString(["mandatory ", toString(address), ".", key, " is not defined"], ""))
32155
33156
157+func getIntOrElse (key,defaultVal) = valueOrElse(getInteger(this, key), defaultVal)
158+
159+
34160 let IdxCfgStakingDapp = 1
161+
162+let IdxCfgEconomyDapp = 2
163+
164+let IdxCfgGovernanceDapp = 3
165+
166+let IdxCfgWlgDapp = 4
35167
36168 func keyRestCfg () = "%s__restConfig"
37169
38170
39171 func keyRestAddress () = "%s__restAddr"
40172
41173
42174 func readRestCfgOrFail (rest) = split_4C(getStringOrFail(rest, keyRestCfg()), SEP)
43175
44176
45177 func getContractAddressOrFail (restCfg,idx) = valueOrErrorMessage(addressFromString(restCfg[idx]), ("Rest cfg doesn't contain address at index " + toString(idx)))
46178
47179
48180 let restContract = addressFromStringValue(valueOrElse(getString(this, keyRestAddress()), defaultRestAddressStr))
49181
50182 let restCfg = readRestCfgOrFail(restContract)
51183
52184 let stakingContract = getContractAddressOrFail(restCfg, IdxCfgStakingDapp)
53185
186+let economyContract = getContractAddressOrFail(restCfg, IdxCfgEconomyDapp)
187+
188+let govContract = getContractAddressOrFail(restCfg, IdxCfgGovernanceDapp)
189+
190+let wlgContract = getContractAddressOrFail(restCfg, IdxCfgWlgDapp)
191+
192+func keyLastTxIdByUser (addr) = ("lastTxIdByUser_" + addr)
193+
194+
195+func keyLandAssetIdToOwner (assetId) = ("nftOwner_" + assetId)
196+
197+
198+func keyLandAssetIdToCustomName (assetId) = ("landCustomNameByAssetId_" + assetId)
199+
200+
201+func keyStakedTimeByAssetId (assetId) = ("stakedTime_" + assetId)
202+
203+
204+func keyInfraLevelByAssetId (assetId) = ("infraLevel_" + assetId)
205+
206+
207+func keyLandArtStatusByTypeAndAssetId (type,assetId) = makeString(["landArtStatus", type, assetId], "_")
208+
209+
210+func keyStakedTimeByTypeAssetIdAndOwner (nftType,assetId,ownerAddr) = ((((("stakedTimeByTypeAssetIdAndOwner_" + nftType) + "_") + assetId) + "_") + ownerAddr)
211+
212+
213+func keyWarehouseByLand (landAssetId) = ("wareHouse_" + landAssetId)
214+
215+
54216 func keyStakedLandsByOwner (ownerAddr) = ("stakedLandsByOwner_" + ownerAddr)
55217
56218
219+func keyDuckAssetIdToCustomName (assetId) = ("duckCustomNameByAssetId_" + assetId)
220+
221+
222+func keyAddressToCustomName (addr) = ("accountCustomNameByAddr_" + addr)
223+
224+
225+func keyAddressRefBy (addr) = ("accRefBy_" + addr)
226+
227+
228+func keyAddressReferrals (addr) = ("accReferrals_" + addr)
229+
230+
231+func keyDuckIdToOwner (assetId) = ("duckOwner_" + assetId)
232+
233+
234+func keyStakedDuckByOwner (ownerAddr) = ("stakedDuckByOwner_" + ownerAddr)
235+
236+
237+func keyBackpackByDuck (duckAssetId) = ("backPack_" + duckAssetId)
238+
239+
240+func keyDuckLocation (duckAssetId) = ("duckLocation_" + duckAssetId)
241+
242+
243+func keyDuckHealth (duckAssetId) = ("duckHealth_" + duckAssetId)
244+
245+
57246 func keyResProportions () = "resTypesProportions"
247+
248+
249+func keyBlocked () = "contractsBlocked"
250+
251+
252+func keyUserGwlReleaseTime (userAddr) = ("%s%s__userGwlReleaseTime__" + userAddr)
253+
254+
255+func keyOrderByLand (landAssetId) = ("landOrder_" + landAssetId)
256+
257+
258+func keyEsWarehouse () = "emergencyWarehouseProducts"
259+
260+
261+let locIdxContinent = 0
262+
263+let locIdxType = 1
264+
265+let locIdxId = 2
266+
267+func asString (v) = match v {
268+ case s: String =>
269+ s
270+ case _ =>
271+ throw("fail to cast into String")
272+}
273+
274+
275+func asInt (v) = match v {
276+ case n: Int =>
277+ n
278+ case _ =>
279+ throw("fail to cast into Int")
280+}
281+
282+
283+func asAnyList (v) = match v {
284+ case l: List[Any] =>
285+ l
286+ case _ =>
287+ throw("fail to cast into List[Any]")
288+}
289+
290+
291+func asBoolean (v) = match v {
292+ case s: Boolean =>
293+ s
294+ case _ =>
295+ throw("fail to cast into Boolean")
296+}
58297
59298
60299 func numPiecesBySize (landSize) = match landSize {
61300 case _ =>
62301 if (("S" == $match0))
63302 then SSIZE
64303 else if (("M" == $match0))
65304 then MSIZE
66305 else if (("L" == $match0))
67306 then LSIZE
68307 else if (("XL" == $match0))
69308 then XLSIZE
70309 else if (("XXL" == $match0))
71310 then XXLSIZE
72311 else throw("Unknown land size")
73312 }
74313
75314
76315 let IdxEffTotal = 0
77316
78317 let IdxEffUser = 1
79318
80319 func getVotingPower (userAddrStrOrEmpty) = {
81320 let props = split(valueOrElse(getString(stakingContract, keyResProportions()), "0_0_0_0_0_0"), "_")
82321 func adder (acc,item) = (acc + parseIntValue(item))
83322
84323 let totalPower = {
85324 let $l = props
86325 let $s = size($l)
87326 let $acc0 = 0
88327 func $f0_1 ($a,$i) = if (($i >= $s))
89328 then $a
90329 else adder($a, $l[$i])
91330
92331 func $f0_2 ($a,$i) = if (($i >= $s))
93332 then $a
94333 else throw("List size exceeds 6")
95334
96335 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
97336 }
98337 let usersPower = if ((userAddrStrOrEmpty == ""))
99338 then 0
100339 else {
101340 let landsStr = getString(stakingContract, keyStakedLandsByOwner(userAddrStrOrEmpty))
102341 let lands = if (isDefined(landsStr))
103342 then split_51C(value(landsStr), "_")
104343 else nil
105344 func oneLand (acc,landAssetId) = {
106345 let asset = value(assetInfo(fromBase58String(landAssetId)))
107346 let landSize = split(asset.description, "_")[recLandSize]
108347 (acc + numPiecesBySize(landSize))
109348 }
110349
111350 let $l = lands
112351 let $s = size($l)
113352 let $acc0 = 0
114353 func $f1_1 ($a,$i) = if (($i >= $s))
115354 then $a
116355 else oneLand($a, $l[$i])
117356
118357 func $f1_2 ($a,$i) = if (($i >= $s))
119358 then $a
120359 else throw("List size exceeds 100")
121360
122361 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
123362 }
124363 [totalPower, usersPower]
364+ }
365+
366+
367+func getRecipeMaterials (recipe) = {
368+ func addMat (ac,j) = (ac + parseIntValue(recipe[j]))
369+
370+ let $l = [0, 1, 2, 3, 4, 5]
371+ let $s = size($l)
372+ let $acc0 = 0
373+ func $f0_1 ($a,$i) = if (($i >= $s))
374+ then $a
375+ else addMat($a, $l[$i])
376+
377+ func $f0_2 ($a,$i) = if (($i >= $s))
378+ then $a
379+ else throw("List size exceeds 6")
380+
381+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
125382 }
126383
127384
128385 let MULT14 = 100000000000000
129386
130387 let MARKETINGSHARE = 100000
131388
132389 let TEAMSHARE = 200000
133390
134391 let ACTIVITYSHARE = 100000
135392
136393 let PLAYERSHARE = 400000
137394
138395 let YEARMILLIS = 31557600000
139396
140397 let wlgAssetIdKey = "wlg_assetId"
141398
142399 let wlgIssueTimeKey = "wlg_issueTime"
143400
144401 let marketingAddrKey = "marketingAddr"
145402
146403 let teamAddrKey = "teamAddr"
147404
148405 let lastMarketingTimeKey = "lastClaimedTime_marketing"
149406
150407 let lastTeamTimeKey = "lastClaimedTime_team"
151408
152409 let lastActivitiesTimeKey = "lastClaimedTime_activities"
153410
154411 func keyLastClaimedTimeByUser (addr) = "lastClaimedTimeUser_ + addr"
155412
156413
157414 @Callable(i)
158415 func constructorV1 (restAddr,marketingAddr,teamAddr) = if ((i.caller != this))
159416 then throw("Permission denied")
160417 else if (isDefined(getString(wlgAssetIdKey)))
161418 then throw("Already initialized")
162419 else {
163420 let issue = Issue("WLGOLD", "WavesLands Gold investment token", MULT14, 8, true, unit, 0)
164421 let assetId = calculateAssetId(issue)
165422 [issue, IntegerEntry(wlgIssueTimeKey, lastBlock.timestamp), BinaryEntry(wlgAssetIdKey, assetId), StringEntry(keyRestAddress(), restAddr), StringEntry(marketingAddrKey, marketingAddr), StringEntry(teamAddrKey, teamAddr)]
166423 }
167424
168425
169426
170427 @Callable(i)
171428 func buyWlg (amount) = nil
172429
173430
174431
175432 @Callable(i)
176433 func sellWlg (amount) = nil
177434
178435
179436
180437 @Callable(i)
181438 func claim () = {
182439 let caller = i.caller
183440 let callerAddr = toString(caller)
184441 let now = lastBlock.timestamp
185442 let issueTime = valueOrErrorMessage(getInteger(wlgIssueTimeKey), "Not initialized")
186443 let wlgAssetId = value(getBinary(wlgAssetIdKey))
187444 let lastMarketingTime = valueOrElse(getInteger(lastMarketingTimeKey), issueTime)
188445 let marketingAddr = addressFromStringValue(value(getString(marketingAddrKey)))
189446 let marketingAmount = fraction(fraction(MULT14, MARKETINGSHARE, MULT6), (now - lastMarketingTime), YEARMILLIS)
190447 let lastTeamTime = valueOrElse(getInteger(lastTeamTimeKey), issueTime)
191448 let teamAddr = addressFromStringValue(value(getString(teamAddrKey)))
192449 let teamAmount = fraction(fraction(MULT14, TEAMSHARE, MULT6), (now - lastTeamTime), (3 * YEARMILLIS))
193450 let lastActivitiesTime = valueOrElse(getInteger(lastActivitiesTimeKey), issueTime)
194451 let actAmount = fraction(fraction(MULT14, ACTIVITYSHARE, MULT6), (now - lastActivitiesTime), (3 * YEARMILLIS))
195452 let userTimeKey = keyLastClaimedTimeByUser(callerAddr)
196453 let lastUserTime = valueOrElse(getInteger(userTimeKey), issueTime)
197454 let eff = getVotingPower(callerAddr)
198455 let userAmount = fraction(fraction(fraction(MULT14, PLAYERSHARE, MULT6), eff[IdxEffUser], eff[IdxEffTotal]), (now - lastUserTime), (3 * YEARMILLIS))
199456 [ScriptTransfer(marketingAddr, marketingAmount, wlgAssetId), ScriptTransfer(teamAddr, teamAmount, wlgAssetId), ScriptTransfer(restContract, actAmount, wlgAssetId), ScriptTransfer(caller, userAmount, wlgAssetId), IntegerEntry(lastMarketingTimeKey, now), IntegerEntry(lastTeamTimeKey, now), IntegerEntry(lastActivitiesTimeKey, now), IntegerEntry(userTimeKey, now)]
200457 }
201458
202459

github/deemru/w8io/873ac7e 
64.69 ms