tx · FQmE36qNwo3eacM5XEnJRiL3NK8U3FRYCrnBo23SdLbD

3N7dQeENwSgKPp9Ki4aEHhRWWKVjn1DE9Qg:  -0.01400000 Waves

2023.11.19 21:55 [2850660] smart account 3N7dQeENwSgKPp9Ki4aEHhRWWKVjn1DE9Qg > SELF 0.00000000 Waves

{ "type": 13, "id": "FQmE36qNwo3eacM5XEnJRiL3NK8U3FRYCrnBo23SdLbD", "fee": 1400000, "feeAssetId": null, "timestamp": 1700420183450, "version": 2, "chainId": 84, "sender": "3N7dQeENwSgKPp9Ki4aEHhRWWKVjn1DE9Qg", "senderPublicKey": "5BN6FQeKuMm2XJYToUZvbBX4UELGpE3Z47P4q6sP46PG", "proofs": [ "3G7LENruAbswpH9UvZYoHD7eYgHnbarwLd4jxZDEfrAa7xtbjPNkFGGXTcAniWbJ9KawXz594z7jk2uMfXDbk8fJ" ], "script": "base64:BgIsCAISBAoCCAESABIDCgEBEgASABIECgIIARIFCgMIAQESAwoBARIAEgMKAQg1AAhNSUxMSU9ONgCAgOmDsd4WAAlEQVlNSUxMSVMAgLiZKQEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBGFkZHIJAKwCAgIYYWNyZXNTdGFrZWRBbW91bnRCeVVzZXJfBQRhZGRyARprZXlBY3Jlc0xvY2tlZEFtb3VudEJ5VXNlcgEEYWRkcgkArAICAhhhY3Jlc0xvY2tlZEFtb3VudEJ5VXNlcl8FBGFkZHIBF2tleUFjcmVzTG9ja2VkRXRhQnlVc2VyAQRhZGRyCQCsAgICFWFjcmVzTG9ja2VkRXRhQnlVc2VyXwUEYWRkcgATYWNyZXNTdGFrZWRUb3RhbEtleQIWYWNyZXNTdGFrZWRBbW91bnRUb3RhbAAKeHBOZXdTTGFuZADAlrECAA9EQUlMWVJFU0JZUElFQ0UAgPjSAQAVVVNEVDJBQ1JFU19NVUxUSVBMSUVSAAoABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQARSWR4Q2ZnRWNvbm9teURhcHAAAgANSWR4Q2ZnV2xnRGFwcAAEAA9JZHhDZmdBY3Jlc0RhcHAACAEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAAPZWNvbm9teUNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnRWNvbm9teURhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUNSWR4Q2ZnV2xnRGFwcAANYWNyZXNDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFD0lkeENmZ0FjcmVzRGFwcAAUYWNyZXNJc3N1ZWRBbW91bnRLZXkCEWFjcmVzSXNzdWVkQW1vdW50AA9hY3Jlc0Fzc2V0SWRLZXkCDGFjcmVzQXNzZXRJZAAMYWNyZXNBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgUNYWNyZXNDb250cmFjdAUPYWNyZXNBc3NldElkS2V5AhdBQ1JFUyBpcyBub3QgaXNzdWVkIHlldAEYa2V5QWNyZXNTdGFrZWRUaW1lQnlVc2VyAQRhZGRyCQCsAgICFmFjcmVzU3Rha2VkVGltZUJ5VXNlcl8FBGFkZHIAC0lkeEVmZlRvdGFsAAABEWtleVJlc1Byb3BvcnRpb25zAAITcmVzVHlwZXNQcm9wb3J0aW9ucwEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICFHN0YWtlZFBpZWNlc0J5T3duZXJfBQlvd25lckFkZHIBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEOYXNUd29JbnRzVHVwbGUBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACCihJbnQsIEludCkEAnQyBQckbWF0Y2gwBQJ0MgkAAgECHGZhaWwgdG8gY2FzdCBpbnRvIChJbnQsIEludCkBDmdldFZvdGluZ1Bvd2VyARJ1c2VyQWRkclN0ck9yRW1wdHkEBXByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwoBBWFkZGVyAgNhY2MEaXRlbQkAZAIFA2FjYwkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAp0b3RhbFBvd2VyCgACJGwFBXByb3BzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQKdXNlcnNQb3dlcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUSdXNlckFkZHJTdHJPckVtcHR5AAAJAMwIAgUKdG90YWxQb3dlcgkAzAgCBQp1c2Vyc1Bvd2VyBQNuaWwBCmZpeGVkUG9pbnQCA3ZhbAhkZWNpbWFscwQGdGVuUG93CQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUERE9XTgQHbG93UGFydAkApAMBCQBqAgUDdmFsBQZ0ZW5Qb3cEBnplcm9lcwkAsAICCQCkAwEFBnRlblBvdwkAZAIAAQkAsQIBBQdsb3dQYXJ0CQCsAgIJAKwCAgkArAICCQCkAwEJAGkCBQN2YWwFBnRlblBvdwIBLgUGemVyb2VzBQdsb3dQYXJ0AQRwYWRMAgN2YWwDbGVuBAR2YWxTCQCkAwEFA3ZhbAQGemVyb2VzCQCwAgIJAKQDAQkAbAYACgAACQBlAgUDbGVuCQCxAgEFBHZhbFMAAAAABQRET1dOAAEJAKwCAgUGemVyb2VzBQR2YWxTAB1NSU5fQUNSRVNfQU1PVU5UX0RVUklOR19QUk9NTwCAreIEAAxCTEFDS0xJU1RFRDEC3wYzUDJOR1g0UTVuZ2UxTUNhdXdRVzVhcVlMZGtjY1NHajFFcF8zUDJ4RkFIVzl5aHlOb2hZb3pXZDRIRmhFWFp1M2JzTlNvUl8zUDJ5S2FaMmd2bjlYZTV0dGk4MWE3UDlMWmhIZ2p2VG9WOV8zUDM3elEzY2YyZWN1NTVSbUpxRWlHU2l2ZHpOOWF2dDNtOV8zUDRhejZkdHpzdkdDV0ZBeGE5NFVkZXZLelh5RXd4RWlGR18zUDRrWlU2WDNUVExGY1NVZTU1SlN5OEJ5U3FpdGNQZ01Cel8zUDVoQ3hCRWgzTmdOaXpaaE5CcmV5QlNxdGJoSllMa0tQRF8zUDdITHZ1Y3kxMXl4eU1KVXdqelhGSEhLTUVEd2kxRXdmQ18zUDhKdWFxSDlQVFFBdjhENUhCR2dRZkthdUxUWXQyTlFmdF8zUDlnVERCNHJ0REVWYnBYM2FzVTYzSDRaaW5oMkVuVG1aRV8zUDlpTjNxcnRmSmljVVZ5N2FtWmVWc2V0VkQzdlVNazhiZV8zUENhMkJzQWE2SkJMaXJzelFmVjVyOWZKcnVqZmh3dHdmUF8zUEQzaTRYTjhLdHlnY0Z4NHJ5NU03VUdxZGZIOFZZdnRSVF8zUERFTW5uSk5jMmt4OWNQRW12VnZoWFVyOFN2aEFOS2hzYV8zUERHRTl0S1FpemFlWkZlRERxNWFZU3Y4OW53WWJmaXJwWl8zUERNS1FUQ3JVUFpFQ1ZYRUpKOG0xc0h0dXRTdTFuYVNmMV8zUEdoMlF1Nll2eDhHVENSUlZOdkJVVlpMZGFpZFlTYXhvNV8zUEtrbUF0YlNLNUQyaFFkbzFSZkVnOGVYeU1iRGNSVWM5Ml8zUExNbmJ4enNzUDhXOEU4WGpKMVJMQkJnOFVaTDhDejNQMl8zUE11eG80UENBb3g5czRhN1IxZXN6aDRpcXF1OGdTN2pIdl8zUE5yTXRFUUNodzg3V1pVMUpBSjdhR0h5a0NhOFRqbkROS18zUFB1QlhmV29CeTNFRW9yeTdjN3ZnaTlVc2prYTdvNXRCal8zUFF3eWV5RWhUNFk2YUdBTDZ0ZzczYVFXSnRWMXpSdDNuUl8zUFJHRFNodU1HYjg0TUp0VEp2dFRnOHFEZnN3a1lXY20zZQANUFJPTU8xX0FNT1VOVADCra8CABdQUk9NT18yX1NUQVJUX1RJTUVTVEFNUAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACA8LT5vjEDCQAAAgEBVAUHJG1hdGNoMACA59DHvjEJAAIBAg1Vbmtub3duIGNoYWluABVQUk9NT18yX0VORF9USU1FU1RBTVAEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAA/7/N8MAxAwkAAAIBAVQFByRtYXRjaDAAgIjX674xCQACAQINVW5rbm93biBjaGFpbgAMcHJvbW8yTWFwS2V5Aglwcm9tbzJNYXABE2lzQmxhY2tsaXN0ZWRQcm9tbzEBBGFkZHIJAQhjb250YWlucwIFDEJMQUNLTElTVEVEMQUEYWRkcgEGcHJvbG9nAAkBBWFzSW50AQkA/QcEBQ9zdGFraW5nQ29udHJhY3QCCnNhdmVMYXN0VHgFA25pbAUDbmlsARJjbGFpbUFjcmVzSW50ZXJuYWwDBGFkZHILYWNyZXNBbW91bnQNbGFzdENsYWltVGltZQQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFDWxhc3RDbGFpbVRpbWUECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUPREFJTFlSRVNCWVBJRUNFBQthY3Jlc0Ftb3VudAkAaAIFCURBWU1JTExJUwUFTVVMVDgECmNhbkdldFVzZHQJAQVhc0ludAEJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhpzZWxsUmVzb3VyY2VzV29ybGRSRUFET05MWQkAzAgCBQhhdmFpbFJlcwUDbmlsBQNuaWwEB2dvdFVzZHQJAJYDAQkAzAgCAAAJAMwIAgUKY2FuR2V0VXNkdAUDbmlsCQBoAgUHZ290VXNkdAUVVVNEVDJBQ1JFU19NVUxUSVBMSUVSAQ1jbGFpbUludGVybmFsAwRhZGRyC2FjcmVzQW1vdW50DWxhc3RDbGFpbVRpbWUECWRlbHRhVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQ1sYXN0Q2xhaW1UaW1lAwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQUNbGFzdENsYWltVGltZQIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFD0RBSUxZUkVTQllQSUVDRQULYWNyZXNBbW91bnQJAGgCBQlEQVlNSUxMSVMFBU1VTFQ4BApjYW5HZXRVc2R0CQEFYXNJbnQBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIac2VsbFJlc291cmNlc1dvcmxkUkVBRE9OTFkJAMwIAgUIYXZhaWxSZXMFA25pbAUDbmlsBAdnb3RVc2R0AwkAZwIAAAUKY2FuR2V0VXNkdAAACAkBDmFzVHdvSW50c1R1cGxlAQkA/AcEBQ9lY29ub215Q29udHJhY3QCEnNlbGxSZXNvdXJjZXNXb3JsZAkAzAgCBQRhZGRyCQDMCAIFCGF2YWlsUmVzBQNuaWwFA25pbAJfMQkAaAIFB2dvdFVzZHQFFVVTRFQyQUNSRVNfTVVMVElQTElFUgELbWVyZ2VMb2NrZWQECW9sZEFtb3VudAZvbGRFVEEJbmV3QW1vdW50Bm5ld0VUQQQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQDZHQxCQCWAwEJAMwIAgAACQDMCAIJAGUCBQZvbGRFVEEFA25vdwUDbmlsBANkdDIJAJYDAQkAzAgCAAAJAMwIAgkAZQIFBm5ld0VUQQUDbm93BQNuaWwEA3N1bQkAZAIFCW9sZEFtb3VudAUJbmV3QW1vdW50BAJkdAMJAAACBQNzdW0AAAAACQBkAgkAawMFA2R0MQUJb2xkQW1vdW50BQNzdW0JAGsDBQNkdDIFCW5ld0Ftb3VudAUDc3VtCQBkAgUDbm93BQJkdAoBaQENY29uc3RydWN0b3JWMQIIcmVzdEFkZHIOdW5zdGFrZWRQaWVjZXMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAMJAQlpc0RlZmluZWQBCQChCAEFD2FjcmVzQXNzZXRJZEtleQkAAgECE0FscmVhZHkgaW5pdGlhbGl6ZWQECG5mdEFjcmVzCQBkAgkAkQMCCQEOZ2V0Vm90aW5nUG93ZXIBAgAFC0lkeEVmZlRvdGFsBQ51bnN0YWtlZFBpZWNlcwQMaXNzdWVkQW1vdW50CQBlAgUITUlMTElPTjYJAGgCBQhuZnRBY3JlcwUFTVVMVDgEBWlzc3VlCQDDCAcCBUFDUkVTAiZXYXZlc0xhbmRzIGxhbmQgYWNyZXMgaW52ZXN0bWVudCB0b2tlbgUMaXNzdWVkQW1vdW50AAgHBQR1bml0AAAEB2Fzc2V0SWQJALgIAQUFaXNzdWUJAMwIAgUFaXNzdWUJAMwIAgkBDEludGVnZXJFbnRyeQIFFGFjcmVzSXNzdWVkQW1vdW50S2V5BQxpc3N1ZWRBbW91bnQJAMwIAgkBC0JpbmFyeUVudHJ5AgUPYWNyZXNBc3NldElkS2V5BQdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlSZXN0QWRkcmVzcwAFCHJlc3RBZGRyBQNuaWwBaQEKc3Rha2VBY3JlcwADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAihUZW1wb3JhcmlseSBkaXNhYmxlZCBkdXJpbmcgcHJvbW8gYWN0aW9uBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cAAwkAAAIFDHByb2xvZ1Jlc3VsdAUMcHJvbG9nUmVzdWx0BAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUMYWNyZXNBc3NldElkCQACAQIUQUNSRVMgcGF5bWVudHMgb25seSEEB3RpbWVLZXkJARhrZXlBY3Jlc1N0YWtlZFRpbWVCeVVzZXIBBQdhZGRyZXNzBAlhbW91bnRLZXkJARprZXlBY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcgEFB2FkZHJlc3MEDm9sZEFjcmVzQW1vdW50CQELdmFsdWVPckVsc2UCCQCfCAEFCWFtb3VudEtleQAABAhvbGRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRNhY3Jlc1N0YWtlZFRvdGFsS2V5AAAECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsBAxjbGFpbWVkQWNyZXMJAQ1jbGFpbUludGVybmFsAwUHYWRkcmVzcwUOb2xkQWNyZXNBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUHdGltZUtleQAACQCUCgIJAM0IAgkAzQgCCQDNCAIDCQAAAgUMY2xhaW1lZEFjcmVzAAAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDGNsYWltZWRBY3JlcwUMYWNyZXNBc3NldElkBQNuaWwJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkBDEludGVnZXJFbnRyeQIFCWFtb3VudEtleQkAZAIFDm9sZEFjcmVzQW1vdW50BQNhbXQJAQxJbnRlZ2VyRW50cnkCBRNhY3Jlc1N0YWtlZFRvdGFsS2V5CQBkAgUIb2xkVG90YWwFA2FtdAkAlAoCBQxwcm9sb2dSZXN1bHQFCXdsZ1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQx1bnN0YWtlQWNyZXMBBmFtb3VudAQMcHJvbG9nUmVzdWx0CQEGcHJvbG9nAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAMJAGcCAAAFBmFtb3VudAkAAgECGUFtb3VudCBzaG91bGQgYmUgcG9zaXRpdmUEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEB3RpbWVLZXkJARhrZXlBY3Jlc1N0YWtlZFRpbWVCeVVzZXIBBQdhZGRyZXNzBAlhbW91bnRLZXkJARprZXlBY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcgEFB2FkZHJlc3MEDm9sZEFjcmVzQW1vdW50CQELdmFsdWVPckVsc2UCCQCfCAEFCWFtb3VudEtleQAAAwkAZgIFBmFtb3VudAUOb2xkQWNyZXNBbW91bnQJAAIBCQCsAgIJAKwCAgkArAICAg5Zb3UgaGF2ZSBvbmx5IAkBCmZpeGVkUG9pbnQCBQ5vbGRBY3Jlc0Ftb3VudAAIAiAgQUNSRVMgc3Rha2VkLCB0cmllZCB0byB1bnN0YWtlIAkBCmZpeGVkUG9pbnQCBQZhbW91bnQACAQMbG9ja2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCfCAEJARprZXlBY3Jlc0xvY2tlZEFtb3VudEJ5VXNlcgEFB2FkZHJlc3MAAAQJbG9ja2VkRVRBCQELdmFsdWVPckVsc2UCCQCfCAEJARdrZXlBY3Jlc0xvY2tlZEV0YUJ5VXNlcgEFB2FkZHJlc3MAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQQdW5zdGFrYWJsZUFtb3VudAMJARNpc0JsYWNrbGlzdGVkUHJvbW8xAQUHYWRkcmVzcwkAZQIJAGUCBQ5vbGRBY3Jlc0Ftb3VudAUMbG9ja2VkQW1vdW50BQ1QUk9NTzFfQU1PVU5UCQBlAgUOb2xkQWNyZXNBbW91bnQFDGxvY2tlZEFtb3VudAMDCQBmAgUJbG9ja2VkRVRBBQNub3cJAGYCBQZhbW91bnQFEHVuc3Rha2FibGVBbW91bnQHCQACAQkArAICCQCsAgIJAKwCAgIFT25seSAJAQpmaXhlZFBvaW50AgUQdW5zdGFrYWJsZUFtb3VudAAIAicgQUNSRVMgY2FuIGJlIHVuc3Rha2VkIG5vdywgd2FpdCB1bnRpbCAJAKQDAQUJbG9ja2VkRVRBBAhvbGRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRNhY3Jlc1N0YWtlZFRvdGFsS2V5AAAECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsBAxjbGFpbWVkQWNyZXMJAQ1jbGFpbUludGVybmFsAwUHYWRkcmVzcwUOb2xkQWNyZXNBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUHdGltZUtleQAACQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlhbW91bnRLZXkJAGUCBQ5vbGRBY3Jlc0Ftb3VudAUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNhY3Jlc1N0YWtlZFRvdGFsS2V5CQBlAgUIb2xkVG90YWwFBmFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGQCBQZhbW91bnQFDGNsYWltZWRBY3JlcwUMYWNyZXNBc3NldElkBQNuaWwJAJQKAgUMcHJvbG9nUmVzdWx0BQl3bGdSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQc3Rha2VBY3Jlc0xvY2tlZAAEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQxhY3Jlc0Fzc2V0SWQJAAIBAhRBQ1JFUyBwYXltZW50cyBvbmx5IQMJAGYCBR1NSU5fQUNSRVNfQU1PVU5UX0RVUklOR19QUk9NTwUDYW10CQACAQkArAICCQCsAgICOU1pbiBzdGFrZWQgYW1vdW50IGR1cmluZyBwcm9tbyBhY3Rpb24gc2hvdWxkIGJlIGF0IGxlYXN0IAkBCmZpeGVkUG9pbnQCBR1NSU5fQUNSRVNfQU1PVU5UX0RVUklOR19QUk9NTwAIAgYgQUNSRVMEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXADCQBmAgUXUFJPTU9fMl9TVEFSVF9USU1FU1RBTVAFA25vdwkAAgECGVByb21vMiBpcyBub3Qgc3RhcnRlZCB5ZXQDCQBmAgUDbm93BRVQUk9NT18yX0VORF9USU1FU1RBTVAJAAIBAhpQcm9tbzIgaXMgYWxyZWFkeSBmaW5pc2hlZAQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUJd2xnUmVzdWx0BQl3bGdSZXN1bHQEC3N0YWtlUmVzdWx0CQD8BwQFBHRoaXMCD3NlbmRMb2NrZWRBY3JlcwkAzAgCBQdhZGRyZXNzCQDMCAIFA2FtdAkAzAgCAB4FA25pbAUDbmlsBAlwcm9tbzJNYXAJAQt2YWx1ZU9yRWxzZQIJAKIIAQUMcHJvbW8yTWFwS2V5AgAEB25ld01hcDIDCQEIY29udGFpbnMCBQlwcm9tbzJNYXAFB2FkZHJlc3MEBXBhcnRzCQC9CQIFCXByb21vMk1hcAUHYWRkcmVzcwQJb2xkQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAK8CAgkAsAICCQCRAwIFBXBhcnRzAAEAAQAOCQCsAgIJAKwCAgkArAICCQCsAgIJAJEDAgUFcGFydHMAAAUHYWRkcmVzcwIBOgkBBHBhZEwCCQBkAgUJb2xkQW1vdW50BQNhbXQADgkAsAICCQCRAwIFBXBhcnRzAAEADwQJZmluYWxQYXJ0CQCsAgIJAKwCAgUHYWRkcmVzcwIBOgkBBHBhZEwCBQNhbXQADgMJAAACBQlwcm9tbzJNYXACAAUJZmluYWxQYXJ0CQCsAgIJAKwCAgUJcHJvbW8yTWFwAgFfBQlmaW5hbFBhcnQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQxwcm9tbzJNYXBLZXkFB25ld01hcDIFA25pbAkAlQoDBQxwcm9sb2dSZXN1bHQFCXdsZ1Jlc3VsdAULc3Rha2VSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIYnV5QWNyZXMABAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cAAwkAAAIFDHByb2xvZ1Jlc3VsdAUMcHJvbG9nUmVzdWx0BAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhAwkAZgIFBU1VTFQ2BQNhbXQJAAIBCQCsAgIJAKwCAgIWTWluIHBheW1lbnQgc2hvdWxkIGJlIAkBCmZpeGVkUG9pbnQCBQVNVUxUNgAGAgUgVVNEVAQLYWNyZXNBbW91bnQJAGgCBQNhbXQFFVVTRFQyQUNSRVNfTVVMVElQTElFUgQOYWNjU3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVBY2NTdGF0cwkAzAgCBQdhZGRyZXNzCQDMCAIJAGsDBQp4cE5ld1NMYW5kBQthY3Jlc0Ftb3VudAkAaAIAGQUFTVVMVDgFA25pbAUDbmlsCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0BQNhbXQFC3VzZHRBc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgULYWNyZXNBbW91bnQFDGFjcmVzQXNzZXRJZAUDbmlsCQCUCgIFDHByb2xvZ1Jlc3VsdAUOYWNjU3RhdHNSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJc2VuZEFjcmVzAgRhZGRyBmFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyBQZhbW91bnQFDGFjcmVzQXNzZXRJZAUDbmlsBQZhbW91bnQBaQEPc2VuZExvY2tlZEFjcmVzAwRhZGRyBmFtb3VudAhsb2NrRGF5cwMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAQIhPQIIBQFpBmNhbGxlcgUMcmVzdENvbnRyYWN0BwkAAgECEVBlcm1pc3Npb24gZGVuaWVkBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAd0aW1lS2V5CQEYa2V5QWNyZXNTdGFrZWRUaW1lQnlVc2VyAQUEYWRkcgQJYW1vdW50S2V5CQEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyBA5vbGRBY3Jlc0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlhbW91bnRLZXkAAAQIb2xkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUTYWNyZXNTdGFrZWRUb3RhbEtleQAABAdvbGRUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEFB3RpbWVLZXkFA25vdwQGZXRhS2V5CQEXa2V5QWNyZXNMb2NrZWRFdGFCeVVzZXIBBQRhZGRyBA9sb2NrZWRBbW91bnRLZXkJARprZXlBY3Jlc0xvY2tlZEFtb3VudEJ5VXNlcgEFBGFkZHIED29sZExvY2tlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9sb2NrZWRBbW91bnRLZXkAAAQMb2xkTG9ja2VkRVRBCQELdmFsdWVPckVsc2UCCQCfCAEFBmV0YUtleQAABAltZXJnZWRFVEEJAQttZXJnZUxvY2tlZAQFD29sZExvY2tlZEFtb3VudAUMb2xkTG9ja2VkRVRBBQZhbW91bnQJAGQCBQNub3cJAGgCBQhsb2NrRGF5cwUJREFZTUlMTElTCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkFB29sZFRpbWUJAMwIAgkBDEludGVnZXJFbnRyeQIFCWFtb3VudEtleQkAZAIFDm9sZEFjcmVzQW1vdW50BQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFE2FjcmVzU3Rha2VkVG90YWxLZXkJAGQCBQhvbGRUb3RhbAUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZldGFLZXkFCW1lcmdlZEVUQQkAzAgCCQEMSW50ZWdlckVudHJ5AgUPbG9ja2VkQW1vdW50S2V5CQBkAgUPb2xkTG9ja2VkQW1vdW50BQZhbW91bnQFA25pbAUGYW1vdW50AWkBCWJ1cm5BY3JlcwEGYW1vdW50AwkBAiE9AggFAWkGY2FsbGVyBQ9zdGFraW5nQ29udHJhY3QJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQKYW1vdW50TGVmdAkAZQIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUUYWNyZXNJc3N1ZWRBbW91bnRLZXkAAAUGYW1vdW50AwkAZgIAAAUKYW1vdW50TGVmdAkAAgECJ0F0dGVtcHQgdG8gYnVybiBtb3JlIEFDUkVTLCB0aGFuIGV4aXN0cwkAlAoCCQDMCAIJAQRCdXJuAgUMYWNyZXNBc3NldElkBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFFGFjcmVzSXNzdWVkQW1vdW50S2V5BQphbW91bnRMZWZ0BQNuaWwFBmFtb3VudAFpAQpjbGFpbUFjcmVzAAQMcHJvbG9nUmVzdWx0CQEGcHJvbG9nAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQHdGltZUtleQkBGGtleUFjcmVzU3Rha2VkVGltZUJ5VXNlcgEFB2FkZHJlc3MECWFtb3VudEtleQkBGmtleUFjcmVzU3Rha2VkQW1vdW50QnlVc2VyAQUHYWRkcmVzcwQLYWNyZXNBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJYW1vdW50S2V5AAAECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsBAxjbGFpbWVkQWNyZXMJAQ1jbGFpbUludGVybmFsAwUHYWRkcmVzcwULYWNyZXNBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUHdGltZUtleQAACQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUMY2xhaW1lZEFjcmVzBQxhY3Jlc0Fzc2V0SWQFA25pbAkAlAoCBQxwcm9sb2dSZXN1bHQFCXdsZ1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJjbGFpbUFjcmVzUkVBRE9OTFkBB2FkZHJlc3MEB3RpbWVLZXkJARhrZXlBY3Jlc1N0YWtlZFRpbWVCeVVzZXIBBQdhZGRyZXNzBAlhbW91bnRLZXkJARprZXlBY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcgEFB2FkZHJlc3MEC2FjcmVzQW1vdW50CQELdmFsdWVPckVsc2UCCQCfCAEFCWFtb3VudEtleQAABAhsYXN0VGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd0aW1lS2V5AAAEDGNsYWltZWRBY3JlcwkBEmNsYWltQWNyZXNJbnRlcm5hbAMFB2FkZHJlc3MFC2FjcmVzQW1vdW50BQhsYXN0VGltZQkAlAoCBQNuaWwJAMwIAgUMY2xhaW1lZEFjcmVzCQDMCAIFCGxhc3RUaW1lBQNuaWwA4i0E3g==", "height": 2850660, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: E2JN3F1oqYzoP5pTv4TtpwMPbvRbYFbCHmniF6ijiSig Next: 2gMXPUhHd9EYANm6KQ5hd9dVFQniBYQFjfNBWHurPhUq Diff:
OldNewDifferences
153153 }
154154
155155
156-let as = 10000000
157-
158-func at () = S(reentrantInvoke(G, "saveLastTx", nil, nil))
159-
160-
161-func au (d,av,aw) = {
162- let ax = (lastBlock.timestamp - aw)
163- let ay = fraction(ax, (i * av), (b * q))
164- let az = S(invoke(H, "sellResourcesWorldREADONLY", [ay], nil))
165- let aA = max([0, az])
166- (aA * j)
156+func as (W,at) = {
157+ let au = toString(W)
158+ let ar = drop(toString(pow(10, 0, (at - size(au)), 0, 0, DOWN)), 1)
159+ (ar + au)
167160 }
168161
169162
170-func aB (d,av,aw) = {
171- let ax = (lastBlock.timestamp - aw)
172- if ((0 > ax))
173- then throw(((("Saved timestamp is in future, saved = " + toString(aw)) + ", current = ") + toString(lastBlock.timestamp)))
163+let av = 10000000
164+
165+let aw = "3P2NGX4Q5nge1MCauwQW5aqYLdkccSGj1Ep_3P2xFAHW9yhyNohYozWd4HFhEXZu3bsNSoR_3P2yKaZ2gvn9Xe5tti81a7P9LZhHgjvToV9_3P37zQ3cf2ecu55RmJqEiGSivdzN9avt3m9_3P4az6dtzsvGCWFAxa94UdevKzXyEwxEiFG_3P4kZU6X3TTLFcSUe55JSy8BySqitcPgMBz_3P5hCxBEh3NgNizZhNBreyBSqtbhJYLkKPD_3P7HLvucy11yxyMJUwjzXFHHKMEDwi1EwfC_3P8JuaqH9PTQAv8D5HBGgQfKauLTYt2NQft_3P9gTDB4rtDEVbpX3asU63H4Zinh2EnTmZE_3P9iN3qrtfJicUVy7amZeVsetVD3vUMk8be_3PCa2BsAa6JBLirszQfV5r9fJrujfhwtwfP_3PD3i4XN8KtygcFx4ry5M7UGqdfH8VYvtRT_3PDEMnnJNc2kx9cPEmvVvhXUr8SvhANKhsa_3PDGE9tKQizaeZFeDDq5aYSv89nwYbfirpZ_3PDMKQTCrUPZECVXEJJ8m1sHtutSu1naSf1_3PGh2Qu6Yvx8GTCRRVNvBUVZLdaidYSaxo5_3PKkmAtbSK5D2hQdo1RfEg8eXyMbDcRUc92_3PLMnbxzssP8W8E8XjJ1RLBBg8UZL8Cz3P2_3PMuxo4PCAox9s4a7R1eszh4iqqu8gS7jHv_3PNrMtEQChw87WZU1JAJ7aGHykCa8TjnDNK_3PPuBXfWoBy3EEory7c7vgi9Usjka7o5tBj_3PQwyeyEhT4Y6aGAL6tg73aQWJtV1zRt3nR_3PRGDShuMGb84MJtTJvtTg8qDfswkYWcm3e"
166+
167+let ax = 4970178
168+
169+let ay = {
170+ let m = k
171+ if ((base58'2W' == m))
172+ then 1700524800000
173+ else if ((base58'2T' == m))
174+ then 1700420400000
175+ else throw("Unknown chain")
176+ }
177+
178+let az = {
179+ let m = k
180+ if ((base58'2W' == m))
181+ then 1701043199999
182+ else if ((base58'2T' == m))
183+ then 1700496000000
184+ else throw("Unknown chain")
185+ }
186+
187+let aA = "promo2Map"
188+
189+func aB (d) = contains(aw, d)
190+
191+
192+func aC () = S(reentrantInvoke(G, "saveLastTx", nil, nil))
193+
194+
195+func aD (d,aE,aF) = {
196+ let aG = (lastBlock.timestamp - aF)
197+ let aH = fraction(aG, (i * aE), (b * q))
198+ let aI = S(invoke(H, "sellResourcesWorldREADONLY", [aH], nil))
199+ let aJ = max([0, aI])
200+ (aJ * j)
201+ }
202+
203+
204+func aK (d,aE,aF) = {
205+ let aG = (lastBlock.timestamp - aF)
206+ if ((0 > aG))
207+ then throw(((("Saved timestamp is in future, saved = " + toString(aF)) + ", current = ") + toString(lastBlock.timestamp)))
174208 else {
175- let ay = fraction(ax, (i * av), (b * q))
176- let az = S(invoke(H, "sellResourcesWorldREADONLY", [ay], nil))
177- let aA = if ((0 >= az))
209+ let aH = fraction(aG, (i * aE), (b * q))
210+ let aI = S(invoke(H, "sellResourcesWorldREADONLY", [aH], nil))
211+ let aJ = if ((0 >= aI))
178212 then 0
179- else V(invoke(H, "sellResourcesWorld", [d, ay], nil))._1
180- (aA * j)
213+ else V(invoke(H, "sellResourcesWorld", [d, aH], nil))._1
214+ (aJ * j)
181215 }
182216 }
183217
184218
185-func aC (aD,aE,aF,aG) = {
186- let aH = lastBlock.timestamp
187- let aI = max([0, (aE - aH)])
188- let aJ = max([0, (aG - aH)])
189- let aK = (aD + aF)
190- let aL = if ((aK == 0))
219+func aL (aM,aN,aO,aP) = {
220+ let aQ = lastBlock.timestamp
221+ let aR = max([0, (aN - aQ)])
222+ let aS = max([0, (aP - aQ)])
223+ let aT = (aM + aO)
224+ let aU = if ((aT == 0))
191225 then 0
192- else (fraction(aI, aD, aK) + fraction(aJ, aF, aK))
193- (aH + aL)
226+ else (fraction(aR, aM, aT) + fraction(aS, aO, aT))
227+ (aQ + aU)
194228 }
195229
196230
197-@Callable(aM)
198-func constructorV1 (aN,aO) = if ((aM.caller != this))
231+@Callable(aV)
232+func constructorV1 (aW,aX) = if ((aV.caller != this))
199233 then throw("Permission denied")
200234 else if (isDefined(getBinary(L)))
201235 then throw("Already initialized")
202236 else {
203- let aP = (Y("")[O] + aO)
204- let aQ = (a - (aP * q))
205- let aR = Issue("ACRES", "WavesLands land acres investment token", aQ, 8, false, unit, 0)
206- let aS = calculateAssetId(aR)
207-[aR, IntegerEntry(K, aQ), BinaryEntry(L, aS), StringEntry(z(), aN)]
237+ let aY = (Y("")[O] + aX)
238+ let aZ = (a - (aY * q))
239+ let ba = Issue("ACRES", "WavesLands land acres investment token", aZ, 8, false, unit, 0)
240+ let bb = calculateAssetId(ba)
241+[ba, IntegerEntry(K, aZ), BinaryEntry(L, bb), StringEntry(z(), aW)]
208242 }
209243
210244
211245
212-@Callable(aM)
213-func stakeAcres () = if ((aM.caller != this))
246+@Callable(aV)
247+func stakeAcres () = if ((aV.caller != this))
214248 then throw("Temporarily disabled during promo action")
215249 else {
216- let aT = at()
217- if ((aT == aT))
250+ let bc = aC()
251+ if ((bc == bc))
218252 then {
219- let s = toString(aM.caller)
220- if ((size(aM.payments) != 1))
253+ let s = toString(aV.caller)
254+ if ((size(aV.payments) != 1))
221255 then throw("exactly 1 payment must be attached")
222256 else {
223- let aU = aM.payments[0]
224- let aV = aU.amount
225- if (if (!(isDefined(aU.assetId)))
257+ let bd = aV.payments[0]
258+ let be = bd.amount
259+ if (if (!(isDefined(bd.assetId)))
226260 then true
227- else (value(aU.assetId) != M))
261+ else (value(bd.assetId) != M))
228262 then throw("ACRES payments only!")
229263 else {
230- let aW = N(s)
231- let aX = c(s)
232- let aY = valueOrElse(getInteger(aX), 0)
233- let aZ = valueOrElse(getInteger(g), 0)
234- let ba = invoke(I, "onStakeUnstakeLand", [s], nil)
235- let bb = aB(s, aY, valueOrElse(getInteger(aW), 0))
236- $Tuple2(((((if ((bb == 0))
264+ let bf = N(s)
265+ let bg = c(s)
266+ let bh = valueOrElse(getInteger(bg), 0)
267+ let bi = valueOrElse(getInteger(g), 0)
268+ let bj = invoke(I, "onStakeUnstakeLand", [s], nil)
269+ let bk = aK(s, bh, valueOrElse(getInteger(bf), 0))
270+ $Tuple2(((((if ((bk == 0))
237271 then nil
238- else [ScriptTransfer(aM.caller, bb, M)]) :+ IntegerEntry(aW, lastBlock.timestamp)) :+ IntegerEntry(aX, (aY + aV))) :+ IntegerEntry(g, (aZ + aV))), $Tuple2(aT, ba))
272+ else [ScriptTransfer(aV.caller, bk, M)]) :+ IntegerEntry(bf, lastBlock.timestamp)) :+ IntegerEntry(bg, (bh + be))) :+ IntegerEntry(g, (bi + be))), $Tuple2(bc, bj))
239273 }
240274 }
241275 }
244278
245279
246280
247-@Callable(aM)
248-func unstakeAcres (bc) = {
249- let aT = at()
250- if ((aT == aT))
251- then if ((0 >= bc))
281+@Callable(aV)
282+func unstakeAcres (bl) = {
283+ let bc = aC()
284+ if ((bc == bc))
285+ then if ((0 >= bl))
252286 then throw("Amount should be positive")
253287 else {
254- let s = toString(aM.caller)
255- if ((size(aM.payments) != 0))
288+ let s = toString(aV.caller)
289+ if ((size(aV.payments) != 0))
256290 then throw("No payments required")
257291 else {
258- let aW = N(s)
259- let aX = c(s)
260- let aY = valueOrElse(getInteger(aX), 0)
261- if ((bc > aY))
262- then throw(((("You have only " + an(aY, 8)) + " ACRES staked, tried to unstake ") + an(bc, 8)))
292+ let bf = N(s)
293+ let bg = c(s)
294+ let bh = valueOrElse(getInteger(bg), 0)
295+ if ((bl > bh))
296+ then throw(((("You have only " + an(bh, 8)) + " ACRES staked, tried to unstake ") + an(bl, 8)))
263297 else {
264- let bd = valueOrElse(getInteger(e(s)), 0)
265- let be = valueOrElse(getInteger(f(s)), 0)
266- let aH = lastBlock.timestamp
267- let bf = (aY - bd)
268- if (if ((be > aH))
269- then (bc > bf)
298+ let bm = valueOrElse(getInteger(e(s)), 0)
299+ let bn = valueOrElse(getInteger(f(s)), 0)
300+ let aQ = lastBlock.timestamp
301+ let bo = if (aB(s))
302+ then ((bh - bm) - ax)
303+ else (bh - bm)
304+ if (if ((bn > aQ))
305+ then (bl > bo)
270306 else false)
271- then throw(((("Only " + an(bf, 8)) + " ACRES can be unstaked now, wait until ") + toString(be)))
307+ then throw(((("Only " + an(bo, 8)) + " ACRES can be unstaked now, wait until ") + toString(bn)))
272308 else {
273- let aZ = valueOrElse(getInteger(g), 0)
274- let ba = invoke(I, "onStakeUnstakeLand", [s], nil)
275- let bb = aB(s, aY, valueOrElse(getInteger(aW), 0))
276- $Tuple2([IntegerEntry(aW, lastBlock.timestamp), IntegerEntry(aX, (aY - bc)), IntegerEntry(g, (aZ - bc)), ScriptTransfer(aM.caller, (bc + bb), M)], $Tuple2(aT, ba))
309+ let bi = valueOrElse(getInteger(g), 0)
310+ let bj = invoke(I, "onStakeUnstakeLand", [s], nil)
311+ let bk = aK(s, bh, valueOrElse(getInteger(bf), 0))
312+ $Tuple2([IntegerEntry(bf, lastBlock.timestamp), IntegerEntry(bg, (bh - bl)), IntegerEntry(g, (bi - bl)), ScriptTransfer(aV.caller, (bl + bk), M)], $Tuple2(bc, bj))
277313 }
278314 }
279315 }
283319
284320
285321
286-@Callable(aM)
322+@Callable(aV)
287323 func stakeAcresLocked () = {
288- let aT = at()
289- if ((aT == aT))
324+ let bc = aC()
325+ if ((bc == bc))
290326 then {
291- let s = toString(aM.caller)
292- if ((size(aM.payments) != 1))
327+ let s = toString(aV.caller)
328+ if ((size(aV.payments) != 1))
293329 then throw("exactly 1 payment must be attached")
294330 else {
295- let aU = aM.payments[0]
296- let aV = aU.amount
297- if (if (!(isDefined(aU.assetId)))
331+ let bd = aV.payments[0]
332+ let be = bd.amount
333+ if (if (!(isDefined(bd.assetId)))
298334 then true
299- else (value(aU.assetId) != M))
335+ else (value(bd.assetId) != M))
300336 then throw("ACRES payments only!")
301- else if ((as > aV))
302- then throw((("Min staked amount during promo action should be at least " + an(as, 8)) + " ACRES"))
337+ else if ((av > be))
338+ then throw((("Min staked amount during promo action should be at least " + an(av, 8)) + " ACRES"))
303339 else {
304- let ba = invoke(I, "onStakeUnstakeLand", [s], nil)
305- if ((ba == ba))
306- then {
307- let bg = invoke(this, "sendLockedAcres", [s, aV, 30], nil)
308- $Tuple2(nil, $Tuple3(aT, ba, bg))
309- }
310- else throw("Strict value is not equal to itself.")
340+ let aQ = lastBlock.timestamp
341+ if ((ay > aQ))
342+ then throw("Promo2 is not started yet")
343+ else if ((aQ > az))
344+ then throw("Promo2 is already finished")
345+ else {
346+ let bj = invoke(I, "onStakeUnstakeLand", [s], nil)
347+ if ((bj == bj))
348+ then {
349+ let bp = invoke(this, "sendLockedAcres", [s, be, 30], nil)
350+ let bq = valueOrElse(getString(aA), "")
351+ let br = if (contains(bq, s))
352+ then {
353+ let bs = split_51C(bq, s)
354+ let aM = parseIntValue(take(drop(bs[1], 1), 14))
355+ ((((bs[0] + s) + ":") + as((aM + be), 14)) + drop(bs[1], 15))
356+ }
357+ else {
358+ let bt = ((s + ":") + as(be, 14))
359+ if ((bq == ""))
360+ then bt
361+ else ((bq + "_") + bt)
362+ }
363+ $Tuple2([StringEntry(aA, br)], $Tuple3(bc, bj, bp))
364+ }
365+ else throw("Strict value is not equal to itself.")
366+ }
311367 }
312368 }
313369 }
316372
317373
318374
319-@Callable(aM)
375+@Callable(aV)
320376 func buyAcres () = {
321- let aT = at()
322- if ((aT == aT))
377+ let bc = aC()
378+ if ((bc == bc))
323379 then {
324- let s = toString(aM.caller)
325- if ((size(aM.payments) != 1))
380+ let s = toString(aV.caller)
381+ if ((size(aV.payments) != 1))
326382 then throw("exactly 1 payment must be attached")
327383 else {
328- let aU = aM.payments[0]
329- let aV = aU.amount
330- if (if (!(isDefined(aU.assetId)))
384+ let bd = aV.payments[0]
385+ let be = bd.amount
386+ if (if (!(isDefined(bd.assetId)))
331387 then true
332- else (value(aU.assetId) != l))
388+ else (value(bd.assetId) != l))
333389 then throw("USDT payments only!")
334- else if ((p > aV))
390+ else if ((p > be))
335391 then throw((("Min payment should be " + an(p, 6)) + " USDT"))
336392 else {
337- let av = (aV * j)
338- let bh = S(invoke(G, "updateAccStats", [s, fraction(h, av, (25 * q))], nil))
339- $Tuple2([ScriptTransfer(H, aV, l), ScriptTransfer(aM.caller, av, M)], $Tuple2(aT, bh))
393+ let aE = (be * j)
394+ let bu = S(invoke(G, "updateAccStats", [s, fraction(h, aE, (25 * q))], nil))
395+ $Tuple2([ScriptTransfer(H, be, l), ScriptTransfer(aV.caller, aE, M)], $Tuple2(bc, bu))
340396 }
341397 }
342398 }
345401
346402
347403
348-@Callable(aM)
349-func sendAcres (d,bc) = if ((aM.caller != H))
404+@Callable(aV)
405+func sendAcres (d,bl) = if ((aV.caller != H))
350406 then throw("Permission denied")
351- else $Tuple2([ScriptTransfer(addressFromStringValue(d), bc, M)], bc)
407+ else $Tuple2([ScriptTransfer(addressFromStringValue(d), bl, M)], bl)
352408
353409
354410
355-@Callable(aM)
356-func sendLockedAcres (d,bc,bi) = if (if ((aM.caller != this))
357- then (aM.caller != F)
411+@Callable(aV)
412+func sendLockedAcres (d,bl,bv) = if (if ((aV.caller != this))
413+ then (aV.caller != F)
358414 else false)
359415 then throw("Permission denied")
360416 else {
361- let aH = lastBlock.timestamp
362- let aW = N(d)
363- let aX = c(d)
364- let aY = valueOrElse(getInteger(aX), 0)
365- let aZ = valueOrElse(getInteger(g), 0)
366- let bj = valueOrElse(getInteger(aW), aH)
367- let bk = f(d)
368- let bl = e(d)
369- let bm = valueOrElse(getInteger(bl), 0)
370- let bn = valueOrElse(getInteger(bk), 0)
371- let bo = aC(bm, bn, bc, (aH + (bi * b)))
372- $Tuple2([IntegerEntry(aW, bj), IntegerEntry(aX, (aY + bc)), IntegerEntry(g, (aZ + bc)), IntegerEntry(bk, bo), IntegerEntry(bl, (bm + bc))], bc)
417+ let aQ = lastBlock.timestamp
418+ let bf = N(d)
419+ let bg = c(d)
420+ let bh = valueOrElse(getInteger(bg), 0)
421+ let bi = valueOrElse(getInteger(g), 0)
422+ let bw = valueOrElse(getInteger(bf), aQ)
423+ let bx = f(d)
424+ let by = e(d)
425+ let bz = valueOrElse(getInteger(by), 0)
426+ let bA = valueOrElse(getInteger(bx), 0)
427+ let bB = aL(bz, bA, bl, (aQ + (bv * b)))
428+ $Tuple2([IntegerEntry(bf, bw), IntegerEntry(bg, (bh + bl)), IntegerEntry(g, (bi + bl)), IntegerEntry(bx, bB), IntegerEntry(by, (bz + bl))], bl)
373429 }
374430
375431
376432
377-@Callable(aM)
378-func burnAcres (bc) = if ((aM.caller != G))
433+@Callable(aV)
434+func burnAcres (bl) = if ((aV.caller != G))
379435 then throw("Permission denied")
380436 else {
381- let bp = (valueOrElse(getInteger(K), 0) - bc)
382- if ((0 > bp))
437+ let bC = (valueOrElse(getInteger(K), 0) - bl)
438+ if ((0 > bC))
383439 then throw("Attempt to burn more ACRES, than exists")
384- else $Tuple2([Burn(M, bc), IntegerEntry(K, bp)], bc)
440+ else $Tuple2([Burn(M, bl), IntegerEntry(K, bC)], bl)
385441 }
386442
387443
388444
389-@Callable(aM)
445+@Callable(aV)
390446 func claimAcres () = {
391- let aT = at()
392- if ((aT == aT))
447+ let bc = aC()
448+ if ((bc == bc))
393449 then {
394- let s = toString(aM.caller)
395- if ((size(aM.payments) != 0))
450+ let s = toString(aV.caller)
451+ if ((size(aV.payments) != 0))
396452 then throw("No payments required")
397453 else {
398- let aW = N(s)
399- let aX = c(s)
400- let av = valueOrElse(getInteger(aX), 0)
401- let ba = invoke(I, "onStakeUnstakeLand", [s], nil)
402- let bb = aB(s, av, valueOrElse(getInteger(aW), 0))
403- $Tuple2([IntegerEntry(aW, lastBlock.timestamp), ScriptTransfer(aM.caller, bb, M)], $Tuple2(aT, ba))
454+ let bf = N(s)
455+ let bg = c(s)
456+ let aE = valueOrElse(getInteger(bg), 0)
457+ let bj = invoke(I, "onStakeUnstakeLand", [s], nil)
458+ let bk = aK(s, aE, valueOrElse(getInteger(bf), 0))
459+ $Tuple2([IntegerEntry(bf, lastBlock.timestamp), ScriptTransfer(aV.caller, bk, M)], $Tuple2(bc, bj))
404460 }
405461 }
406462 else throw("Strict value is not equal to itself.")
408464
409465
410466
411-@Callable(aM)
467+@Callable(aV)
412468 func claimAcresREADONLY (s) = {
413- let aW = N(s)
414- let aX = c(s)
415- let av = valueOrElse(getInteger(aX), 0)
416- let bq = valueOrElse(getInteger(aW), 0)
417- let bb = au(s, av, bq)
418- $Tuple2(nil, [bb, bq])
469+ let bf = N(s)
470+ let bg = c(s)
471+ let aE = valueOrElse(getInteger(bg), 0)
472+ let bD = valueOrElse(getInteger(bf), 0)
473+ let bk = aD(s, aE, bD)
474+ $Tuple2(nil, [bk, bD])
419475 }
420476
421477
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000000000
55
66 let b = 86400000
77
88 func c (d) = ("acresStakedAmountByUser_" + d)
99
1010
1111 func e (d) = ("acresLockedAmountByUser_" + d)
1212
1313
1414 func f (d) = ("acresLockedEtaByUser_" + d)
1515
1616
1717 let g = "acresStakedAmountTotal"
1818
1919 let h = 5000000
2020
2121 let i = 3456000
2222
2323 let j = 10
2424
2525 let k = take(drop(this.bytes, 1), 1)
2626
2727 let l = {
2828 let m = k
2929 if ((base58'2W' == m))
3030 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
3131 else if ((base58'2T' == m))
3232 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
3333 else throw("Unknown chain")
3434 }
3535
3636 let n = {
3737 let m = k
3838 if ((base58'2W' == m))
3939 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
4040 else if ((base58'2T' == m))
4141 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
4242 else throw("Unknown chain")
4343 }
4444
4545 let o = "__"
4646
4747 let p = 1000000
4848
4949 let q = 100000000
5050
5151 func r (s,t) = valueOrErrorMessage(getString(s, t), makeString(["mandatory ", toString(s), ".", t, " is not defined"], ""))
5252
5353
5454 let u = 1
5555
5656 let v = 2
5757
5858 let w = 4
5959
6060 let x = 8
6161
6262 func y () = "%s__restConfig"
6363
6464
6565 func z () = "%s__restAddr"
6666
6767
6868 func A (B) = split_4C(r(B, y()), o)
6969
7070
7171 func C (D,E) = valueOrErrorMessage(addressFromString(D[E]), ("Rest cfg doesn't contain address at index " + toString(E)))
7272
7373
7474 let F = addressFromStringValue(valueOrElse(getString(this, z()), n))
7575
7676 let D = A(F)
7777
7878 let G = C(D, u)
7979
8080 let H = C(D, v)
8181
8282 let I = C(D, w)
8383
8484 let J = C(D, x)
8585
8686 let K = "acresIssuedAmount"
8787
8888 let L = "acresAssetId"
8989
9090 let M = valueOrErrorMessage(getBinary(J, L), "ACRES is not issued yet")
9191
9292 func N (d) = ("acresStakedTimeByUser_" + d)
9393
9494
9595 let O = 0
9696
9797 func P () = "resTypesProportions"
9898
9999
100100 func Q (R) = ("stakedPiecesByOwner_" + R)
101101
102102
103103 func S (T) = {
104104 let m = T
105105 if ($isInstanceOf(m, "Int"))
106106 then {
107107 let U = m
108108 U
109109 }
110110 else throw("fail to cast into Int")
111111 }
112112
113113
114114 func V (W) = {
115115 let m = W
116116 if ($isInstanceOf(m, "(Int, Int)"))
117117 then {
118118 let X = m
119119 X
120120 }
121121 else throw("fail to cast into (Int, Int)")
122122 }
123123
124124
125125 func Y (Z) = {
126126 let aa = split(valueOrElse(getString(G, P()), "0_0_0_0_0_0"), "_")
127127 func ab (ac,ad) = (ac + parseIntValue(ad))
128128
129129 let ae = {
130130 let af = aa
131131 let ag = size(af)
132132 let ah = 0
133133 func ai (aj,ak) = if ((ak >= ag))
134134 then aj
135135 else ab(aj, af[ak])
136136
137137 func al (aj,ak) = if ((ak >= ag))
138138 then aj
139139 else throw("List size exceeds 6")
140140
141141 al(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6)
142142 }
143143 let am = valueOrElse(getInteger(G, Q(Z)), 0)
144144 [ae, am]
145145 }
146146
147147
148148 func an (W,ao) = {
149149 let ap = pow(10, 0, ao, 0, 0, DOWN)
150150 let aq = toString((W % ap))
151151 let ar = drop(toString(ap), (1 + size(aq)))
152152 (((toString((W / ap)) + ".") + ar) + aq)
153153 }
154154
155155
156-let as = 10000000
157-
158-func at () = S(reentrantInvoke(G, "saveLastTx", nil, nil))
159-
160-
161-func au (d,av,aw) = {
162- let ax = (lastBlock.timestamp - aw)
163- let ay = fraction(ax, (i * av), (b * q))
164- let az = S(invoke(H, "sellResourcesWorldREADONLY", [ay], nil))
165- let aA = max([0, az])
166- (aA * j)
156+func as (W,at) = {
157+ let au = toString(W)
158+ let ar = drop(toString(pow(10, 0, (at - size(au)), 0, 0, DOWN)), 1)
159+ (ar + au)
167160 }
168161
169162
170-func aB (d,av,aw) = {
171- let ax = (lastBlock.timestamp - aw)
172- if ((0 > ax))
173- then throw(((("Saved timestamp is in future, saved = " + toString(aw)) + ", current = ") + toString(lastBlock.timestamp)))
163+let av = 10000000
164+
165+let aw = "3P2NGX4Q5nge1MCauwQW5aqYLdkccSGj1Ep_3P2xFAHW9yhyNohYozWd4HFhEXZu3bsNSoR_3P2yKaZ2gvn9Xe5tti81a7P9LZhHgjvToV9_3P37zQ3cf2ecu55RmJqEiGSivdzN9avt3m9_3P4az6dtzsvGCWFAxa94UdevKzXyEwxEiFG_3P4kZU6X3TTLFcSUe55JSy8BySqitcPgMBz_3P5hCxBEh3NgNizZhNBreyBSqtbhJYLkKPD_3P7HLvucy11yxyMJUwjzXFHHKMEDwi1EwfC_3P8JuaqH9PTQAv8D5HBGgQfKauLTYt2NQft_3P9gTDB4rtDEVbpX3asU63H4Zinh2EnTmZE_3P9iN3qrtfJicUVy7amZeVsetVD3vUMk8be_3PCa2BsAa6JBLirszQfV5r9fJrujfhwtwfP_3PD3i4XN8KtygcFx4ry5M7UGqdfH8VYvtRT_3PDEMnnJNc2kx9cPEmvVvhXUr8SvhANKhsa_3PDGE9tKQizaeZFeDDq5aYSv89nwYbfirpZ_3PDMKQTCrUPZECVXEJJ8m1sHtutSu1naSf1_3PGh2Qu6Yvx8GTCRRVNvBUVZLdaidYSaxo5_3PKkmAtbSK5D2hQdo1RfEg8eXyMbDcRUc92_3PLMnbxzssP8W8E8XjJ1RLBBg8UZL8Cz3P2_3PMuxo4PCAox9s4a7R1eszh4iqqu8gS7jHv_3PNrMtEQChw87WZU1JAJ7aGHykCa8TjnDNK_3PPuBXfWoBy3EEory7c7vgi9Usjka7o5tBj_3PQwyeyEhT4Y6aGAL6tg73aQWJtV1zRt3nR_3PRGDShuMGb84MJtTJvtTg8qDfswkYWcm3e"
166+
167+let ax = 4970178
168+
169+let ay = {
170+ let m = k
171+ if ((base58'2W' == m))
172+ then 1700524800000
173+ else if ((base58'2T' == m))
174+ then 1700420400000
175+ else throw("Unknown chain")
176+ }
177+
178+let az = {
179+ let m = k
180+ if ((base58'2W' == m))
181+ then 1701043199999
182+ else if ((base58'2T' == m))
183+ then 1700496000000
184+ else throw("Unknown chain")
185+ }
186+
187+let aA = "promo2Map"
188+
189+func aB (d) = contains(aw, d)
190+
191+
192+func aC () = S(reentrantInvoke(G, "saveLastTx", nil, nil))
193+
194+
195+func aD (d,aE,aF) = {
196+ let aG = (lastBlock.timestamp - aF)
197+ let aH = fraction(aG, (i * aE), (b * q))
198+ let aI = S(invoke(H, "sellResourcesWorldREADONLY", [aH], nil))
199+ let aJ = max([0, aI])
200+ (aJ * j)
201+ }
202+
203+
204+func aK (d,aE,aF) = {
205+ let aG = (lastBlock.timestamp - aF)
206+ if ((0 > aG))
207+ then throw(((("Saved timestamp is in future, saved = " + toString(aF)) + ", current = ") + toString(lastBlock.timestamp)))
174208 else {
175- let ay = fraction(ax, (i * av), (b * q))
176- let az = S(invoke(H, "sellResourcesWorldREADONLY", [ay], nil))
177- let aA = if ((0 >= az))
209+ let aH = fraction(aG, (i * aE), (b * q))
210+ let aI = S(invoke(H, "sellResourcesWorldREADONLY", [aH], nil))
211+ let aJ = if ((0 >= aI))
178212 then 0
179- else V(invoke(H, "sellResourcesWorld", [d, ay], nil))._1
180- (aA * j)
213+ else V(invoke(H, "sellResourcesWorld", [d, aH], nil))._1
214+ (aJ * j)
181215 }
182216 }
183217
184218
185-func aC (aD,aE,aF,aG) = {
186- let aH = lastBlock.timestamp
187- let aI = max([0, (aE - aH)])
188- let aJ = max([0, (aG - aH)])
189- let aK = (aD + aF)
190- let aL = if ((aK == 0))
219+func aL (aM,aN,aO,aP) = {
220+ let aQ = lastBlock.timestamp
221+ let aR = max([0, (aN - aQ)])
222+ let aS = max([0, (aP - aQ)])
223+ let aT = (aM + aO)
224+ let aU = if ((aT == 0))
191225 then 0
192- else (fraction(aI, aD, aK) + fraction(aJ, aF, aK))
193- (aH + aL)
226+ else (fraction(aR, aM, aT) + fraction(aS, aO, aT))
227+ (aQ + aU)
194228 }
195229
196230
197-@Callable(aM)
198-func constructorV1 (aN,aO) = if ((aM.caller != this))
231+@Callable(aV)
232+func constructorV1 (aW,aX) = if ((aV.caller != this))
199233 then throw("Permission denied")
200234 else if (isDefined(getBinary(L)))
201235 then throw("Already initialized")
202236 else {
203- let aP = (Y("")[O] + aO)
204- let aQ = (a - (aP * q))
205- let aR = Issue("ACRES", "WavesLands land acres investment token", aQ, 8, false, unit, 0)
206- let aS = calculateAssetId(aR)
207-[aR, IntegerEntry(K, aQ), BinaryEntry(L, aS), StringEntry(z(), aN)]
237+ let aY = (Y("")[O] + aX)
238+ let aZ = (a - (aY * q))
239+ let ba = Issue("ACRES", "WavesLands land acres investment token", aZ, 8, false, unit, 0)
240+ let bb = calculateAssetId(ba)
241+[ba, IntegerEntry(K, aZ), BinaryEntry(L, bb), StringEntry(z(), aW)]
208242 }
209243
210244
211245
212-@Callable(aM)
213-func stakeAcres () = if ((aM.caller != this))
246+@Callable(aV)
247+func stakeAcres () = if ((aV.caller != this))
214248 then throw("Temporarily disabled during promo action")
215249 else {
216- let aT = at()
217- if ((aT == aT))
250+ let bc = aC()
251+ if ((bc == bc))
218252 then {
219- let s = toString(aM.caller)
220- if ((size(aM.payments) != 1))
253+ let s = toString(aV.caller)
254+ if ((size(aV.payments) != 1))
221255 then throw("exactly 1 payment must be attached")
222256 else {
223- let aU = aM.payments[0]
224- let aV = aU.amount
225- if (if (!(isDefined(aU.assetId)))
257+ let bd = aV.payments[0]
258+ let be = bd.amount
259+ if (if (!(isDefined(bd.assetId)))
226260 then true
227- else (value(aU.assetId) != M))
261+ else (value(bd.assetId) != M))
228262 then throw("ACRES payments only!")
229263 else {
230- let aW = N(s)
231- let aX = c(s)
232- let aY = valueOrElse(getInteger(aX), 0)
233- let aZ = valueOrElse(getInteger(g), 0)
234- let ba = invoke(I, "onStakeUnstakeLand", [s], nil)
235- let bb = aB(s, aY, valueOrElse(getInteger(aW), 0))
236- $Tuple2(((((if ((bb == 0))
264+ let bf = N(s)
265+ let bg = c(s)
266+ let bh = valueOrElse(getInteger(bg), 0)
267+ let bi = valueOrElse(getInteger(g), 0)
268+ let bj = invoke(I, "onStakeUnstakeLand", [s], nil)
269+ let bk = aK(s, bh, valueOrElse(getInteger(bf), 0))
270+ $Tuple2(((((if ((bk == 0))
237271 then nil
238- else [ScriptTransfer(aM.caller, bb, M)]) :+ IntegerEntry(aW, lastBlock.timestamp)) :+ IntegerEntry(aX, (aY + aV))) :+ IntegerEntry(g, (aZ + aV))), $Tuple2(aT, ba))
272+ else [ScriptTransfer(aV.caller, bk, M)]) :+ IntegerEntry(bf, lastBlock.timestamp)) :+ IntegerEntry(bg, (bh + be))) :+ IntegerEntry(g, (bi + be))), $Tuple2(bc, bj))
239273 }
240274 }
241275 }
242276 else throw("Strict value is not equal to itself.")
243277 }
244278
245279
246280
247-@Callable(aM)
248-func unstakeAcres (bc) = {
249- let aT = at()
250- if ((aT == aT))
251- then if ((0 >= bc))
281+@Callable(aV)
282+func unstakeAcres (bl) = {
283+ let bc = aC()
284+ if ((bc == bc))
285+ then if ((0 >= bl))
252286 then throw("Amount should be positive")
253287 else {
254- let s = toString(aM.caller)
255- if ((size(aM.payments) != 0))
288+ let s = toString(aV.caller)
289+ if ((size(aV.payments) != 0))
256290 then throw("No payments required")
257291 else {
258- let aW = N(s)
259- let aX = c(s)
260- let aY = valueOrElse(getInteger(aX), 0)
261- if ((bc > aY))
262- then throw(((("You have only " + an(aY, 8)) + " ACRES staked, tried to unstake ") + an(bc, 8)))
292+ let bf = N(s)
293+ let bg = c(s)
294+ let bh = valueOrElse(getInteger(bg), 0)
295+ if ((bl > bh))
296+ then throw(((("You have only " + an(bh, 8)) + " ACRES staked, tried to unstake ") + an(bl, 8)))
263297 else {
264- let bd = valueOrElse(getInteger(e(s)), 0)
265- let be = valueOrElse(getInteger(f(s)), 0)
266- let aH = lastBlock.timestamp
267- let bf = (aY - bd)
268- if (if ((be > aH))
269- then (bc > bf)
298+ let bm = valueOrElse(getInteger(e(s)), 0)
299+ let bn = valueOrElse(getInteger(f(s)), 0)
300+ let aQ = lastBlock.timestamp
301+ let bo = if (aB(s))
302+ then ((bh - bm) - ax)
303+ else (bh - bm)
304+ if (if ((bn > aQ))
305+ then (bl > bo)
270306 else false)
271- then throw(((("Only " + an(bf, 8)) + " ACRES can be unstaked now, wait until ") + toString(be)))
307+ then throw(((("Only " + an(bo, 8)) + " ACRES can be unstaked now, wait until ") + toString(bn)))
272308 else {
273- let aZ = valueOrElse(getInteger(g), 0)
274- let ba = invoke(I, "onStakeUnstakeLand", [s], nil)
275- let bb = aB(s, aY, valueOrElse(getInteger(aW), 0))
276- $Tuple2([IntegerEntry(aW, lastBlock.timestamp), IntegerEntry(aX, (aY - bc)), IntegerEntry(g, (aZ - bc)), ScriptTransfer(aM.caller, (bc + bb), M)], $Tuple2(aT, ba))
309+ let bi = valueOrElse(getInteger(g), 0)
310+ let bj = invoke(I, "onStakeUnstakeLand", [s], nil)
311+ let bk = aK(s, bh, valueOrElse(getInteger(bf), 0))
312+ $Tuple2([IntegerEntry(bf, lastBlock.timestamp), IntegerEntry(bg, (bh - bl)), IntegerEntry(g, (bi - bl)), ScriptTransfer(aV.caller, (bl + bk), M)], $Tuple2(bc, bj))
277313 }
278314 }
279315 }
280316 }
281317 else throw("Strict value is not equal to itself.")
282318 }
283319
284320
285321
286-@Callable(aM)
322+@Callable(aV)
287323 func stakeAcresLocked () = {
288- let aT = at()
289- if ((aT == aT))
324+ let bc = aC()
325+ if ((bc == bc))
290326 then {
291- let s = toString(aM.caller)
292- if ((size(aM.payments) != 1))
327+ let s = toString(aV.caller)
328+ if ((size(aV.payments) != 1))
293329 then throw("exactly 1 payment must be attached")
294330 else {
295- let aU = aM.payments[0]
296- let aV = aU.amount
297- if (if (!(isDefined(aU.assetId)))
331+ let bd = aV.payments[0]
332+ let be = bd.amount
333+ if (if (!(isDefined(bd.assetId)))
298334 then true
299- else (value(aU.assetId) != M))
335+ else (value(bd.assetId) != M))
300336 then throw("ACRES payments only!")
301- else if ((as > aV))
302- then throw((("Min staked amount during promo action should be at least " + an(as, 8)) + " ACRES"))
337+ else if ((av > be))
338+ then throw((("Min staked amount during promo action should be at least " + an(av, 8)) + " ACRES"))
303339 else {
304- let ba = invoke(I, "onStakeUnstakeLand", [s], nil)
305- if ((ba == ba))
306- then {
307- let bg = invoke(this, "sendLockedAcres", [s, aV, 30], nil)
308- $Tuple2(nil, $Tuple3(aT, ba, bg))
309- }
310- else throw("Strict value is not equal to itself.")
340+ let aQ = lastBlock.timestamp
341+ if ((ay > aQ))
342+ then throw("Promo2 is not started yet")
343+ else if ((aQ > az))
344+ then throw("Promo2 is already finished")
345+ else {
346+ let bj = invoke(I, "onStakeUnstakeLand", [s], nil)
347+ if ((bj == bj))
348+ then {
349+ let bp = invoke(this, "sendLockedAcres", [s, be, 30], nil)
350+ let bq = valueOrElse(getString(aA), "")
351+ let br = if (contains(bq, s))
352+ then {
353+ let bs = split_51C(bq, s)
354+ let aM = parseIntValue(take(drop(bs[1], 1), 14))
355+ ((((bs[0] + s) + ":") + as((aM + be), 14)) + drop(bs[1], 15))
356+ }
357+ else {
358+ let bt = ((s + ":") + as(be, 14))
359+ if ((bq == ""))
360+ then bt
361+ else ((bq + "_") + bt)
362+ }
363+ $Tuple2([StringEntry(aA, br)], $Tuple3(bc, bj, bp))
364+ }
365+ else throw("Strict value is not equal to itself.")
366+ }
311367 }
312368 }
313369 }
314370 else throw("Strict value is not equal to itself.")
315371 }
316372
317373
318374
319-@Callable(aM)
375+@Callable(aV)
320376 func buyAcres () = {
321- let aT = at()
322- if ((aT == aT))
377+ let bc = aC()
378+ if ((bc == bc))
323379 then {
324- let s = toString(aM.caller)
325- if ((size(aM.payments) != 1))
380+ let s = toString(aV.caller)
381+ if ((size(aV.payments) != 1))
326382 then throw("exactly 1 payment must be attached")
327383 else {
328- let aU = aM.payments[0]
329- let aV = aU.amount
330- if (if (!(isDefined(aU.assetId)))
384+ let bd = aV.payments[0]
385+ let be = bd.amount
386+ if (if (!(isDefined(bd.assetId)))
331387 then true
332- else (value(aU.assetId) != l))
388+ else (value(bd.assetId) != l))
333389 then throw("USDT payments only!")
334- else if ((p > aV))
390+ else if ((p > be))
335391 then throw((("Min payment should be " + an(p, 6)) + " USDT"))
336392 else {
337- let av = (aV * j)
338- let bh = S(invoke(G, "updateAccStats", [s, fraction(h, av, (25 * q))], nil))
339- $Tuple2([ScriptTransfer(H, aV, l), ScriptTransfer(aM.caller, av, M)], $Tuple2(aT, bh))
393+ let aE = (be * j)
394+ let bu = S(invoke(G, "updateAccStats", [s, fraction(h, aE, (25 * q))], nil))
395+ $Tuple2([ScriptTransfer(H, be, l), ScriptTransfer(aV.caller, aE, M)], $Tuple2(bc, bu))
340396 }
341397 }
342398 }
343399 else throw("Strict value is not equal to itself.")
344400 }
345401
346402
347403
348-@Callable(aM)
349-func sendAcres (d,bc) = if ((aM.caller != H))
404+@Callable(aV)
405+func sendAcres (d,bl) = if ((aV.caller != H))
350406 then throw("Permission denied")
351- else $Tuple2([ScriptTransfer(addressFromStringValue(d), bc, M)], bc)
407+ else $Tuple2([ScriptTransfer(addressFromStringValue(d), bl, M)], bl)
352408
353409
354410
355-@Callable(aM)
356-func sendLockedAcres (d,bc,bi) = if (if ((aM.caller != this))
357- then (aM.caller != F)
411+@Callable(aV)
412+func sendLockedAcres (d,bl,bv) = if (if ((aV.caller != this))
413+ then (aV.caller != F)
358414 else false)
359415 then throw("Permission denied")
360416 else {
361- let aH = lastBlock.timestamp
362- let aW = N(d)
363- let aX = c(d)
364- let aY = valueOrElse(getInteger(aX), 0)
365- let aZ = valueOrElse(getInteger(g), 0)
366- let bj = valueOrElse(getInteger(aW), aH)
367- let bk = f(d)
368- let bl = e(d)
369- let bm = valueOrElse(getInteger(bl), 0)
370- let bn = valueOrElse(getInteger(bk), 0)
371- let bo = aC(bm, bn, bc, (aH + (bi * b)))
372- $Tuple2([IntegerEntry(aW, bj), IntegerEntry(aX, (aY + bc)), IntegerEntry(g, (aZ + bc)), IntegerEntry(bk, bo), IntegerEntry(bl, (bm + bc))], bc)
417+ let aQ = lastBlock.timestamp
418+ let bf = N(d)
419+ let bg = c(d)
420+ let bh = valueOrElse(getInteger(bg), 0)
421+ let bi = valueOrElse(getInteger(g), 0)
422+ let bw = valueOrElse(getInteger(bf), aQ)
423+ let bx = f(d)
424+ let by = e(d)
425+ let bz = valueOrElse(getInteger(by), 0)
426+ let bA = valueOrElse(getInteger(bx), 0)
427+ let bB = aL(bz, bA, bl, (aQ + (bv * b)))
428+ $Tuple2([IntegerEntry(bf, bw), IntegerEntry(bg, (bh + bl)), IntegerEntry(g, (bi + bl)), IntegerEntry(bx, bB), IntegerEntry(by, (bz + bl))], bl)
373429 }
374430
375431
376432
377-@Callable(aM)
378-func burnAcres (bc) = if ((aM.caller != G))
433+@Callable(aV)
434+func burnAcres (bl) = if ((aV.caller != G))
379435 then throw("Permission denied")
380436 else {
381- let bp = (valueOrElse(getInteger(K), 0) - bc)
382- if ((0 > bp))
437+ let bC = (valueOrElse(getInteger(K), 0) - bl)
438+ if ((0 > bC))
383439 then throw("Attempt to burn more ACRES, than exists")
384- else $Tuple2([Burn(M, bc), IntegerEntry(K, bp)], bc)
440+ else $Tuple2([Burn(M, bl), IntegerEntry(K, bC)], bl)
385441 }
386442
387443
388444
389-@Callable(aM)
445+@Callable(aV)
390446 func claimAcres () = {
391- let aT = at()
392- if ((aT == aT))
447+ let bc = aC()
448+ if ((bc == bc))
393449 then {
394- let s = toString(aM.caller)
395- if ((size(aM.payments) != 0))
450+ let s = toString(aV.caller)
451+ if ((size(aV.payments) != 0))
396452 then throw("No payments required")
397453 else {
398- let aW = N(s)
399- let aX = c(s)
400- let av = valueOrElse(getInteger(aX), 0)
401- let ba = invoke(I, "onStakeUnstakeLand", [s], nil)
402- let bb = aB(s, av, valueOrElse(getInteger(aW), 0))
403- $Tuple2([IntegerEntry(aW, lastBlock.timestamp), ScriptTransfer(aM.caller, bb, M)], $Tuple2(aT, ba))
454+ let bf = N(s)
455+ let bg = c(s)
456+ let aE = valueOrElse(getInteger(bg), 0)
457+ let bj = invoke(I, "onStakeUnstakeLand", [s], nil)
458+ let bk = aK(s, aE, valueOrElse(getInteger(bf), 0))
459+ $Tuple2([IntegerEntry(bf, lastBlock.timestamp), ScriptTransfer(aV.caller, bk, M)], $Tuple2(bc, bj))
404460 }
405461 }
406462 else throw("Strict value is not equal to itself.")
407463 }
408464
409465
410466
411-@Callable(aM)
467+@Callable(aV)
412468 func claimAcresREADONLY (s) = {
413- let aW = N(s)
414- let aX = c(s)
415- let av = valueOrElse(getInteger(aX), 0)
416- let bq = valueOrElse(getInteger(aW), 0)
417- let bb = au(s, av, bq)
418- $Tuple2(nil, [bb, bq])
469+ let bf = N(s)
470+ let bg = c(s)
471+ let aE = valueOrElse(getInteger(bg), 0)
472+ let bD = valueOrElse(getInteger(bf), 0)
473+ let bk = aD(s, aE, bD)
474+ $Tuple2(nil, [bk, bD])
419475 }
420476
421477

github/deemru/w8io/169f3d6 
104.93 ms