tx · EGeaSLDkNzExqjrkhW9zzf251C7hHhswkmJUudEoovXH

3PKpsc1TNquw4HAF62pWK8ka1DBz9vyEBkt:  -0.02200000 Waves

2022.10.11 14:24 [3333066] smart account 3PKpsc1TNquw4HAF62pWK8ka1DBz9vyEBkt > SELF 0.00000000 Waves

{ "type": 13, "id": "EGeaSLDkNzExqjrkhW9zzf251C7hHhswkmJUudEoovXH", "fee": 2200000, "feeAssetId": null, "timestamp": 1665487350906, "version": 1, "sender": "3PKpsc1TNquw4HAF62pWK8ka1DBz9vyEBkt", "senderPublicKey": "8ZLAVkwG8sZ97hmBdGRkQpYTp5En9xgEYX4PeupqxpFw", "proofs": [ "GWQ6uU96UNdogenMUZCALtMmN9CQVtntJFQfg31xqSb8EnZcCpSgoVxJHMngUZ5vXJc5c5FJahwxFkbTHpaxPub" ], "script": "base64:AAIFAAAAAAAAACIIAhIJCgcBAQEBAQgBEgASBAoCCAgSBAoCCAgSAwoBCBIAAAAAMQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCIAAAABBQAAAANrZXkJAAEsAAAAAgkAASwAAAACAgAAAA9tYW5kYXRvcnkgdGhpcy4FAAAAA2tleQIAAAAPIGlzIG5vdCBkZWZpbmVkAAAAAANTRVACAAAAAl9fAAAAAAhCVUZTQ0FMRQkAATYAAAABAA3gtrOnZAAAAQAAAB1jb252ZXJ0UHJpY2VBc3NldEludG9JZG9Bc3NldAAAAAUAAAAQcHJpY2VBc3NldEFtb3VudAAAAA5wcmljZUFzc2V0TVVMVAAAAAVwcmljZQAAAAlwcmljZU1VTFQAAAAMaWRvQXNzZXRNVUxUBAAAAA9iUHJpY2VBc3NldE1VTFQJAAE2AAAAAQUAAAAOcHJpY2VBc3NldE1VTFQEAAAADWJJZG9Bc3NldE1VTFQJAAE2AAAAAQUAAAAMaWRvQXNzZXRNVUxUBAAAAA5iUHJpY2VBc3NldEJVRgkAATwAAAADCQABNgAAAAEFAAAAEHByaWNlQXNzZXRBbW91bnQFAAAACEJVRlNDQUxFBQAAAA9iUHJpY2VBc3NldE1VTFQEAAAAD2JBbW91bnRBc3NldEJVRgkAATwAAAADBQAAAA5iUHJpY2VBc3NldEJVRgkAATYAAAABBQAAAAlwcmljZU1VTFQJAAE2AAAAAQUAAAAFcHJpY2UJAAGgAAAAAQkAATwAAAADBQAAAA9iQW1vdW50QXNzZXRCVUYJAAE2AAAAAQUAAAAMaWRvQXNzZXRNVUxUBQAAAAhCVUZTQ0FMRQAAAAAOSWR4Q2ZnSWRvU3RhcnQAAAAAAAAAAAEAAAAAEUlkeENmZ0lkb0R1cmF0aW9uAAAAAAAAAAACAAAAABBJZHhDZmdDbGFpbVN0YXJ0AAAAAAAAAAADAAAAABNJZHhDZmdDbGFpbUR1cmF0aW9uAAAAAAAAAAAEAAAAAAtJZHhDZmdQcmljZQAAAAAAAAAABQAAAAAPSWR4Q2ZnUHJpY2VNdWx0AAAAAAAAAAAGAAAAABBJZHhDZmdJZG9Bc3NldElkAAAAAAAAAAAHAAAAABJJZHhDZmdJZG9Bc3NldE11bHQAAAAAAAAAAAgAAAAAEklkeENmZ1ByaWNlQXNzZXRJZAAAAAAAAAAACQAAAAAUSWR4Q2ZnUHJpY2VBc3NldE11bHQAAAAAAAAAAAoAAAAAFUlkeENmZ01pbkludmVzdEFtb3VudAAAAAAAAAAACwEAAAANZnJvbWF0Q29uZmlnUwAAAAwAAAAIaWRvU3RhcnQAAAALaWRvRHVyYXRpb24AAAAKY2xhaW1TdGFydAAAAA1jbGFpbUR1cmF0aW9uAAAABXByaWNlAAAACXByaWNlTXVsdAAAAAxpZG9Bc3NldElkNTgAAAAMaWRvQXNzZXRNdWx0AAAADnByaWNlQXNzZXRJZDU4AAAADnByaWNlQXNzZXRNdWx0AAAAD21pbkludmVzdEFtb3VudAAAABN0b3RhbElkb0Fzc2V0VG9TZWxsCQAEuQAAAAIJAARMAAAAAgIAAAAYJWQlZCVkJWQlZCVkJXMlZCVzJWQlZCVkCQAETAAAAAIFAAAACGlkb1N0YXJ0CQAETAAAAAIFAAAAC2lkb0R1cmF0aW9uCQAETAAAAAIFAAAACmNsYWltU3RhcnQJAARMAAAAAgUAAAANY2xhaW1EdXJhdGlvbgkABEwAAAACBQAAAAVwcmljZQkABEwAAAACBQAAAAlwcmljZU11bHQJAARMAAAAAgUAAAAMaWRvQXNzZXRJZDU4CQAETAAAAAIFAAAADGlkb0Fzc2V0TXVsdAkABEwAAAACBQAAAA5wcmljZUFzc2V0SWQ1OAkABEwAAAACBQAAAA5wcmljZUFzc2V0TXVsdAkABEwAAAACBQAAAA9taW5JbnZlc3RBbW91bnQJAARMAAAAAgUAAAATdG90YWxJZG9Bc3NldFRvU2VsbAUAAAADbmlsBQAAAANTRVABAAAADGZyb21hdENvbmZpZwAAAAwAAAAIaWRvU3RhcnQAAAALaWRvRHVyYXRpb24AAAAKY2xhaW1TdGFydAAAAA1jbGFpbUR1cmF0aW9uAAAABXByaWNlAAAACXByaWNlTXVsdAAAAAxpZG9Bc3NldElkNTgAAAAMaWRvQXNzZXRNdWx0AAAADnByaWNlQXNzZXRJZDU4AAAADnByaWNlQXNzZXRNdWx0AAAAD21pbkludmVzdEFtb3VudAAAABN0b3RhbElkb0Fzc2V0VG9TZWxsCQEAAAANZnJvbWF0Q29uZmlnUwAAAAwJAAGkAAAAAQUAAAAIaWRvU3RhcnQJAAGkAAAAAQUAAAALaWRvRHVyYXRpb24JAAGkAAAAAQUAAAAKY2xhaW1TdGFydAkAAaQAAAABBQAAAA1jbGFpbUR1cmF0aW9uCQABpAAAAAEFAAAABXByaWNlCQABpAAAAAEFAAAACXByaWNlTXVsdAUAAAAMaWRvQXNzZXRJZDU4CQABpAAAAAEFAAAADGlkb0Fzc2V0TXVsdAUAAAAOcHJpY2VBc3NldElkNTgJAAGkAAAAAQUAAAAOcHJpY2VBc3NldE11bHQJAAGkAAAAAQUAAAAPbWluSW52ZXN0QW1vdW50CQABpAAAAAEFAAAAE3RvdGFsSWRvQXNzZXRUb1NlbGwAAAAAEUlkeEludlRvdGFsQW1vdW50AAAAAAAAAAABAAAAABVJZHhJbnZSZW1haW5pbmdBbW91bnQAAAAAAAAAAAIAAAAAHUlkeEludkNsYWltZWRQcmljZUFzc2V0QW1vdW50AAAAAAAAAAADAAAAABtJZHhJbnZDbGFpbWVkSWRvQXNzZXRBbW91bnQAAAAAAAAAAAQAAAAAF0lkeEludkxhc3RDbGFpbWVkSGVpZ2h0AAAAAAAAAAAFAQAAAA9mb3JtYXRJbnZlc3RvclMAAAAFAAAAC3RvdGFsQW1vdW50AAAAD3JlbWFpbmluZ0Ftb3VudAAAABdjbGFpbWVkUHJpY2VBc3NldEFtb3VudAAAABVjbGFpbWVkSWRvQXNzZXRBbW91bnQAAAARbGFzdENsYWltZWRIZWlnaHQJAAS5AAAAAgkABEwAAAACAgAAAAolZCVkJWQlZCVkCQAETAAAAAIFAAAAC3RvdGFsQW1vdW50CQAETAAAAAIFAAAAD3JlbWFpbmluZ0Ftb3VudAkABEwAAAACBQAAABdjbGFpbWVkUHJpY2VBc3NldEFtb3VudAkABEwAAAACBQAAABVjbGFpbWVkSWRvQXNzZXRBbW91bnQJAARMAAAAAgUAAAARbGFzdENsYWltZWRIZWlnaHQFAAAAA25pbAUAAAADU0VQAQAAAA5mb3JtYXRJbnZlc3RvcgAAAAUAAAALdG90YWxBbW91bnQAAAAPcmVtYWluaW5nQW1vdW50AAAAF2NsYWltZWRQcmljZUFzc2V0QW1vdW50AAAAFWNsYWltZWRJZG9Bc3NldEFtb3VudAAAABFsYXN0Q2xhaW1lZEhlaWdodAkBAAAAD2Zvcm1hdEludmVzdG9yUwAAAAUJAAGkAAAAAQUAAAALdG90YWxBbW91bnQJAAGkAAAAAQUAAAAPcmVtYWluaW5nQW1vdW50CQABpAAAAAEFAAAAF2NsYWltZWRQcmljZUFzc2V0QW1vdW50CQABpAAAAAEFAAAAFWNsYWltZWRJZG9Bc3NldEFtb3VudAkAAaQAAAABBQAAABFsYXN0Q2xhaW1lZEhlaWdodAEAAAATZm9ybWF0SGlzdG9yeVJlY29yZAAAAAIAAAAQcHJpY2VBc3NldEFtb3VudAAAAA5pZG9Bc3NldEFtb3VudAkABLkAAAACCQAETAAAAAICAAAACCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAAGaGVpZ2h0CQAETAAAAAIJAAGkAAAAAQgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAARMAAAAAgkAAaQAAAABBQAAABBwcmljZUFzc2V0QW1vdW50CQAETAAAAAIJAAGkAAAAAQUAAAAOaWRvQXNzZXRBbW91bnQFAAAAA25pbAUAAAADU0VQAQAAAAlrZXlDb25maWcAAAAAAgAAAAolc19fY29uZmlnAQAAAAtrZXlJbnZlc3RvcgAAAAEAAAALdXNlckFkZHJlc3MJAAEsAAAAAgIAAAAEJXNfXwUAAAALdXNlckFkZHJlc3MBAAAACWtleVRvdGFscwAAAAACAAAACiVzX190b3RhbHMBAAAAGWtleU9wZXJhdGlvbkhpc3RvcnlSZWNvcmQAAAADAAAABHR5cGUAAAALdXNlckFkZHJlc3MAAAAGdHhJZDU4CQAEuQAAAAIJAARMAAAAAgIAAAARJXMlcyVzJXNfX2hpc3RvcnkJAARMAAAAAgUAAAAEdHlwZQkABEwAAAACBQAAAAt1c2VyQWRkcmVzcwkABEwAAAACBQAAAAZ0eElkNTgFAAAAA25pbAUAAAADU0VQAQAAABRrZXlVU0ROQ2xhaW1EaXNhYmxlZAAAAAACAAAAFSVzX191c2RuQ2xhaW1EaXNhYmxlZAEAAAAVa2V5VVNETkNsYWltRW5kSGVpZ2h0AAAAAAIAAAAWJXNfX3VzZG5DbGFpbUVuZEhlaWdodAEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAACAAAAFCVzX19tYW5hZ2VyUHVibGljS2V5AQAAABprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAAAAACAAAAGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEAAAAPcmVhZENvbmZpZ0FycmF5AAAAAAkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQkBAAAACWtleUNvbmZpZwAAAAAFAAAAA1NFUAEAAAAjcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0QnlDdXN0b21LZXkAAAABAAAACWN1c3RvbUtleQkABLUAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEIgAAAAEFAAAACWN1c3RvbUtleQkBAAAAD2Zvcm1hdEludmVzdG9yUwAAAAUCAAAAATACAAAAATACAAAAATACAAAAATACAAAAATAFAAAAA1NFUAEAAAAYcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0AAAAAAkBAAAAI3JlYWRUb3RhbHNBcnJheU9yRGVmYXVsdEJ5Q3VzdG9tS2V5AAAAAQkBAAAACWtleVRvdGFscwAAAAABAAAAGnJlYWRJbnZlc3RvckFycmF5T3JEZWZhdWx0AAAAAQAAAAt1c2VyQWRkcmVzcwkBAAAAI3JlYWRUb3RhbHNBcnJheU9yRGVmYXVsdEJ5Q3VzdG9tS2V5AAAAAQkBAAAAC2tleUludmVzdG9yAAAAAQUAAAALdXNlckFkZHJlc3MBAAAAF3JlYWRJbnZlc3RvckFycmF5T3JGYWlsAAAAAQAAAAt1c2VyQWRkcmVzcwkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQkBAAAAC2tleUludmVzdG9yAAAAAQUAAAALdXNlckFkZHJlc3MFAAAAA1NFUAAAAAAVSWR4RGlmZlRvdGFsSW5jcmVtZW50AAAAAAAAAAAAAAAAACRJZHhEaWZmUmVtYWluaW5nUHJpY2VBbW91bnRJbmNyZW1lbnQAAAAAAAAAAAEAAAAAIklkeERpZmZDbGFpbWVkUHJpY2VBbW91bnRJbmNyZW1lbnQAAAAAAAAAAAIAAAAAJUlkeERpZmZDbGFpbWVkSWRvQXNzZXRBbW91bnRJbmNyZW1lbnQAAAAAAAAAAAMBAAAAC1RvdGFsc0VudHJ5AAAABAAAAANrZXkAAAAJb3JpZ0FycmF5AAAADWluY3JlbWVudERpZmYAAAAUbmV3TGFzdENsYWltZWRIZWlnaHQEAAAAC3RvdGFsQW1vdW50CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAJb3JpZ0FycmF5BQAAABFJZHhJbnZUb3RhbEFtb3VudAQAAAAPcmVtYWluaW5nQW1vdW50CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAJb3JpZ0FycmF5BQAAABVJZHhJbnZSZW1haW5pbmdBbW91bnQEAAAAF2NsYWltZWRQcmljZUFzc2V0QW1vdW50CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAJb3JpZ0FycmF5BQAAAB1JZHhJbnZDbGFpbWVkUHJpY2VBc3NldEFtb3VudAQAAAAVY2xhaW1lZElkb0Fzc2V0QW1vdW50CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAJb3JpZ0FycmF5BQAAABtJZHhJbnZDbGFpbWVkSWRvQXNzZXRBbW91bnQEAAAAEWxhc3RDbGFpbWVkSGVpZ2h0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAJb3JpZ0FycmF5BQAAABdJZHhJbnZMYXN0Q2xhaW1lZEhlaWdodAQAAAAObmV3VG90YWxBbW91bnQJAABkAAAAAgUAAAALdG90YWxBbW91bnQJAAGRAAAAAgUAAAANaW5jcmVtZW50RGlmZgUAAAAVSWR4RGlmZlRvdGFsSW5jcmVtZW50BAAAABJuZXdSZW1haW5pbmdBbW91bnQJAABkAAAAAgUAAAAPcmVtYWluaW5nQW1vdW50CQABkQAAAAIFAAAADWluY3JlbWVudERpZmYFAAAAJElkeERpZmZSZW1haW5pbmdQcmljZUFtb3VudEluY3JlbWVudAQAAAAabmV3Q2xhaW1lZFByaWNlQXNzZXRBbW91bnQJAABkAAAAAgUAAAAXY2xhaW1lZFByaWNlQXNzZXRBbW91bnQJAAGRAAAAAgUAAAANaW5jcmVtZW50RGlmZgUAAAAiSWR4RGlmZkNsYWltZWRQcmljZUFtb3VudEluY3JlbWVudAQAAAAYbmV3Q2xhaW1lZElkb0Fzc2V0QW1vdW50CQAAZAAAAAIFAAAAFWNsYWltZWRJZG9Bc3NldEFtb3VudAkAAZEAAAACBQAAAA1pbmNyZW1lbnREaWZmBQAAACVJZHhEaWZmQ2xhaW1lZElkb0Fzc2V0QW1vdW50SW5jcmVtZW50AwkAAGYAAAACAAAAAAAAAAAABQAAABJuZXdSZW1haW5pbmdBbW91bnQJAAACAAAAAQIAAAAMaW52YWxpZCBtYXRoCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAANrZXkJAQAAAA5mb3JtYXRJbnZlc3RvcgAAAAUFAAAADm5ld1RvdGFsQW1vdW50BQAAABJuZXdSZW1haW5pbmdBbW91bnQFAAAAGm5ld0NsYWltZWRQcmljZUFzc2V0QW1vdW50BQAAABhuZXdDbGFpbWVkSWRvQXNzZXRBbW91bnQFAAAAFG5ld0xhc3RDbGFpbWVkSGVpZ2h0AQAAABtJbnZlc3RPcGVyYXRpb25IaXN0b3J5RW50cnkAAAAEAAAAC3VzZXJBZGRyZXNzAAAAEHByaWNlQXNzZXRBbW91bnQAAAAOaWRvQXNzZXRBbW91bnQAAAAEdHhJZAkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAGWtleU9wZXJhdGlvbkhpc3RvcnlSZWNvcmQAAAADAgAAAAZpbnZlc3QFAAAAC3VzZXJBZGRyZXNzCQACWAAAAAEFAAAABHR4SWQJAQAAABNmb3JtYXRIaXN0b3J5UmVjb3JkAAAAAgUAAAAQcHJpY2VBc3NldEFtb3VudAUAAAAOaWRvQXNzZXRBbW91bnQBAAAAGkNsYWltT3BlcmF0aW9uSGlzdG9yeUVudHJ5AAAABAAAAAt1c2VyQWRkcmVzcwAAABBwcmljZUFzc2V0QW1vdW50AAAADmlkb0Fzc2V0QW1vdW50AAAABHR4SWQJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABlrZXlPcGVyYXRpb25IaXN0b3J5UmVjb3JkAAAAAwIAAAAFY2xhaW0FAAAAC3VzZXJBZGRyZXNzCQACWAAAAAEFAAAABHR4SWQJAQAAABNmb3JtYXRIaXN0b3J5UmVjb3JkAAAAAgUAAAAQcHJpY2VBc3NldEFtb3VudAUAAAAOaWRvQXNzZXRBbW91bnQBAAAADWludGVybmFsQ2xhaW0AAAADAAAAEGNsYWltZWRBc3NldElkNTgAAAALdXNlckFkZHJlc3MAAAAEdHhJZAQAAAAIY2ZnQXJyYXkJAQAAAA9yZWFkQ29uZmlnQXJyYXkAAAAABAAAAApjbGFpbVN0YXJ0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAEElkeENmZ0NsYWltU3RhcnQEAAAADWNsYWltRHVyYXRpb24JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAATSWR4Q2ZnQ2xhaW1EdXJhdGlvbgQAAAAIY2xhaW1FbmQJAABkAAAAAgUAAAAKY2xhaW1TdGFydAUAAAANY2xhaW1EdXJhdGlvbgQAAAAFcHJpY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAALSWR4Q2ZnUHJpY2UEAAAACXByaWNlTXVsdAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAAA9JZHhDZmdQcmljZU11bHQEAAAADGlkb0Fzc2V0SWQ1OAkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAQSWR4Q2ZnSWRvQXNzZXRJZAQAAAAKaWRvQXNzZXRJZAkAAlkAAAABBQAAAAxpZG9Bc3NldElkNTgEAAAADGlkb0Fzc2V0TXVsdAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABJJZHhDZmdJZG9Bc3NldE11bHQEAAAADnByaWNlQXNzZXRJZDU4CQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABJJZHhDZmdQcmljZUFzc2V0SWQEAAAADHByaWNlQXNzZXRJZAkAAlkAAAABBQAAAA5wcmljZUFzc2V0SWQ1OAQAAAAOcHJpY2VBc3NldE11bHQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAUSWR4Q2ZnUHJpY2VBc3NldE11bHQEAAAADXVzZXJBZGRyZXNzNTgJAAQlAAAAAQUAAAALdXNlckFkZHJlc3MEAAAAD29yaWdJbnZlc3RBcnJheQkBAAAAF3JlYWRJbnZlc3RvckFycmF5T3JGYWlsAAAAAQUAAAANdXNlckFkZHJlc3M1OAQAAAARaW52ZXN0VG90YWxBbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA9vcmlnSW52ZXN0QXJyYXkFAAAAEUlkeEludlRvdGFsQW1vdW50BAAAABppbnZlc3RMYXN0Q2xhaW1lZEhlaWdodFRNUAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAD29yaWdJbnZlc3RBcnJheQUAAAAXSWR4SW52TGFzdENsYWltZWRIZWlnaHQEAAAAF2ludmVzdExhc3RDbGFpbWVkSGVpZ2h0AwkAAGcAAAACBQAAAApjbGFpbVN0YXJ0BQAAABppbnZlc3RMYXN0Q2xhaW1lZEhlaWdodFRNUAUAAAAKY2xhaW1TdGFydAUAAAAaaW52ZXN0TGFzdENsYWltZWRIZWlnaHRUTVAEAAAAFG5ld0NsYWltUGVyaW9kSGVpZ2h0AwkAAGYAAAACBQAAAAZoZWlnaHQFAAAACGNsYWltRW5kBQAAAAhjbGFpbUVuZAMJAABmAAAAAgUAAAAKY2xhaW1TdGFydAUAAAAGaGVpZ2h0BQAAAApjbGFpbVN0YXJ0BQAAAAZoZWlnaHQEAAAADmNsYWltaW5nQmxvY2tzCQAAZQAAAAIFAAAAFG5ld0NsYWltUGVyaW9kSGVpZ2h0BQAAABdpbnZlc3RMYXN0Q2xhaW1lZEhlaWdodAQAAAAYY2xhaW1pbmdQcmljZUFzc2V0QW1vdW50CQAAawAAAAMFAAAAEWludmVzdFRvdGFsQW1vdW50BQAAAA5jbGFpbWluZ0Jsb2NrcwUAAAANY2xhaW1EdXJhdGlvbgQAAAAWY2xhaW1pbmdJZG9Bc3NldEFtb3VudAkBAAAAHWNvbnZlcnRQcmljZUFzc2V0SW50b0lkb0Fzc2V0AAAABQUAAAAYY2xhaW1pbmdQcmljZUFzc2V0QW1vdW50BQAAAA5wcmljZUFzc2V0TXVsdAUAAAAFcHJpY2UFAAAACXByaWNlTXVsdAUAAAAMaWRvQXNzZXRN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AA1jbGFpbUR1cmF0aW9uBQAAAAVwcmljZQUAAAAJcHJpY2VNdWx0BQAAAAxpZG9Bc3NldElkNTgFAAAADGlkb0Fzc2V0TXVsdAUAAAAOcHJpY2VBc3NldElkNTgFAAAADnByaWNlQXNzZXRNdWx0BQAAAA9taW5JbnZlc3RBbW91bnQIBQAAAANwbXQAAAAGYW1vdW50CQAETAAAAAIJAQAAAAtUb3RhbHNFbnRyeQAAAAQJAQAAAAlrZXlUb3RhbHMAAAAABQAAAA9vcmlnVG90YWxzQXJyYXkFAAAACnRvdGFsc0RpZmYFAAAACmNsYWltU3RhcnQFAAAAA25pbAAAAAFpAQAAAAZpbnZlc3QAAAAABAAAAAhjZmdBcnJheQkBAAAAD3JlYWRDb25maWdBcnJheQAAAAAEAAAACGlkb1N0YXJ0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAADklkeENmZ0lkb1N0YXJ0BAAAAAtpZG9EdXJhdGlvbgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABFJZHhDZmdJZG9EdXJhdGlvbgQAAAAGaWRvRW5kCQAAZAAAAAIFAAAACGlkb1N0YXJ0BQAAAAtpZG9EdXJhdGlvbgQAAAAKY2xhaW1TdGFydAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABBJZHhDZmdDbGFpbVN0YXJ0BAAAAA1jbGFpbUR1cmF0aW9uCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAE0lkeENmZ0NsYWltRHVyYXRpb24EAAAABXByaWNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAC0lkeENmZ1ByaWNlBAAAAAlwcmljZU11bHQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAPSWR4Q2ZnUHJpY2VNdWx0BAAAAAxpZG9Bc3NldElkNTgJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAEElkeENmZ0lkb0Fzc2V0SWQEAAAACmlkb0Fzc2V0SWQJAAJZAAAAAQUAAAAMaWRvQXNzZXRJZDU4BAAAAAxpZG9Bc3NldE11bHQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAASSWR4Q2ZnSWRvQXNzZXRNdWx0BAAAAA5wcmljZUFzc2V0SWQ1OAkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAASSWR4Q2ZnUHJpY2VBc3NldElkBAAAAAxwcmljZUFzc2V0SWQJAAJZAAAAAQUAAAAOcHJpY2VBc3NldElkNTgEAAAADnByaWNlQXNzZXRNdWx0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAFElkeENmZ1ByaWNlQXNzZXRNdWx0BAAAAA5taW5JdmVzdEFtb3VudAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABVJZHhDZmdNaW5JbnZlc3RBbW91bnQEAAAAC3VzZXJBZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgMJAABmAAAAAgUAAAAIaWRvU3RhcnQFAAAABmhlaWdodAkAAAIAAAABAgAAABxpZG8gaGFzIG5vdCBiZWVuIHN0YXJ0ZWQgeWV0AwkAAGYAAAACBQAAAAZoZWlnaHQFAAAABmlkb0VuZAkAAAIAAAABAgAAABppZG8gaGFzIGJlZW4gYWxyZWFkeSBlbmRlZAMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAKcG10QXNzZXRJZAkBAAAABXZhbHVlAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAANwbXQAAAAGYW1vdW50AwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAMcHJpY2VBc3NldElkCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABppbnZhbGlkIHBheW1lbnQgYXNzZXQgaWQ6IAkAAlgAAAABBQAAAApwbXRBc3NldElkAgAAAAwgaXMgZXhwZWN0ZWQEAAAAEW9yaWdJbnZlc3RvckFycmF5CQEAAAAacmVhZEludmVzdG9yQXJyYXlPckRlZmF1bHQAAAABBQAAAAt1c2VyQWRkcmVzcwQAAAAPb3JpZ1RvdGFsc0FycmF5CQEAAAAYcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0AAAAAAQAAAATbmV3UHJpY2VUb3RhbEFtb3VudAkAAGQAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAPb3JpZ1RvdGFsc0FycmF5BQAAABFJZHhJbnZUb3RhbEFtb3VudAUAAAAJcG10QW1vdW50BAAAABZyZXF1aXJlZElkb0Fzc2V0QW1vdW50CQAAaAAAAAIFAAAAE25ld1ByaWNlVG90YWxBbW91bnQAAAAAAAAAAGQDCQAAZgAAAAIFAAAAFnJlcXVpcmVkSWRvQXNzZXRBbW91bnQJAAPwAAAAAgUAAAAEdGhpcwUAAAAKaWRvQXNzZXRJZAkAAAIAAAABAgAAADlJRE8gYXNzZXQgaGFzIGJlZW4gLSBzb2xkIGNvbnNpZGVyIHRvIHVzZSBzbWFsbGVyIHBheW1lbnQEAAAACnRvdGFsc0RpZmYJAARMAAAAAgUAAAAJcG10QW1vdW50CQAETAAAAAIFAAAACXBtdEFtb3VudAkABEwAAAACAAAAAAAAAAAACQAETAAAAAIAAAAAAAAAAAAFAAAAA25pbAkABEwAAAACCQEAAAALVG90YWxzRW50cnkAAAAECQEAAAALa2V5SW52ZXN0b3IAAAABBQAAAAt1c2VyQWRkcmVzcwUAAAARb3JpZ0ludmVzdG9yQXJyYXkFAAAACnRvdGFsc0RpZmYFAAAACmNsYWltU3RhcnQJAARMAAAAAgkBAAAAC1RvdGFsc0VudHJ5AAAABAkBAAAACWtleVRvdGFscwAAAAAFAAAAD29yaWdUb3RhbHNBcnJheQUAAAAKdG90YWxzRGlmZgUAAAAKY2xhaW1TdGFydAkABEwAAAACCQEAAAAbSW52ZXN0T3BlcmF0aW9uSGlzdG9yeUVudHJ5AAAABAUAAAALdXNlckFkZHJlc3MFAAAACXBtdEFtb3VudAAAAAAAAAAAAAgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAUAAAADbmlsAAAAAWkBAAAABWNsYWltAAAAAgAAABBjbGFpbWVkQXNzZXRJZDU4AAAADXVzZXJBZGRyZXNzNTgEAAAAD2NhbGxlckFkZHJlc3M1OAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIDCQEAAAACIT0AAAACBQAAAA11c2VyQWRkcmVzczU4BQAAAA9jYWxsZXJBZGRyZXNzNTgJAAACAAAAAQIAAAAObm90IGF1dGhvcml6ZWQEAAAAEGNsYWltUmVzdWx0VHVwbGUJAQAAAA1pbnRlcm5hbENsYWltAAAAAwUAAAAQY2xhaW1lZEFzc2V0SWQ1OAgFAAAAAWkAAAAGY2FsbGVyCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAAp0b3RhbHNEaWZmCAUAAAAQY2xhaW1SZXN1bHRUdXBsZQAAAAJfMQQAAAAJb3V0QW1vdW50CAUAAAAQY2xhaW1SZXN1bHRUdXBsZQAAAAJfMgQAAAAKb3V0QXNzZXRJZAgFAAAAEGNsYWltUmVzdWx0VHVwbGUAAAACXzMEAAAAD29yaWdJbnZlc3RBcnJheQgFAAAAEGNsYWltUmVzdWx0VHVwbGUAAAACXzQEAAAAFG5ld0NsYWltUGVyaW9kSGVpZ2h0CAUAAAAQY2xhaW1SZXN1bHRUdXBsZQAAAAJfNQQAAAAaY2xhaW1lZFByaWNlQW1vdW50RnJvbURpZmYJAAGRAAAAAgUAAAAKdG90YWxzRGlmZgUAAAAiSWR4RGlmZkNsYWltZWRQcmljZUFtb3VudEluY3JlbWVudAQAAAAdY2xhaW1lZElkb0Fzc2V0QW1vdW50RnJvbURpZmYJAAGRAAAAAgUAAAAKdG90YWxzRGlmZgUAAAAlSWR4RGlmZkNsYWltZWRJZG9Bc3NldEFtb3VudEluY3JlbWVudAkABRQAAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJb3V0QW1vdW50BQAAAApvdXRBc3NldElkCQAETAAAAAIJAQAAAAtUb3RhbHNFbnRyeQAAAAQJAQAAAAtrZXlJbnZlc3RvcgAAAAEFAAAADXVzZXJBZGRyZXNzNTgFAAAAD29yaWdJbnZlc3RBcnJheQUAAAAKdG90YWxzRGlmZgUAAAAUbmV3Q2xhaW1QZXJpb2RIZWlnaHQJAARMAAAAAgkBAAAAC1RvdGFsc0VudHJ5AAAABAkBAAAACWtleVRvdGFscwAAAAAJAQAAABhyZWFkVG90YWxzQXJyYXlPckRlZmF1bHQAAAAABQAAAAp0b3RhbHNEaWZmBQAAABRuZXdDbGFpbVBlcmlvZEhlaWdodAkABEwAAAACCQEAAAAaQ2xhaW1PcGVyYXRpb25IaXN0b3J5RW50cnkAAAAEBQAAAA11c2VyQWRkcmVzczU4BQAAABpjbGFpbWVkUHJpY2VBbW91bnRGcm9tRGlmZgUAAAAdY2xhaW1lZElkb0Fzc2V0QW1vdW50RnJvbURpZmYIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAAA25pbAUAAAAEdW5pdAAAAAFpAQAAAA1jbGFpbVJFQURPTkxZAAAAAgAAABBjbGFpbWVkQXNzZXRJZDU4AAAADXVzZXJBZGRyZXNzNTgEAAAAEGNsYWltUmVzdWx0VHVwbGUJAQAAAA1pbnRlcm5hbENsYWltAAAAAwUAAAAQY2xhaW1lZEFzc2V0SWQ1OAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAANdXNlckFkZHJlc3M1OAkAAlkAAAABAgAAAAAEAAAACnRvdGFsc0RpZmYIBQAAABBjbGFpbVJlc3VsdFR1cGxlAAAAAl8xBAAAAAlvdXRBbW91bnQIBQAAABBjbGFpbVJlc3VsdFR1cGxlAAAAAl8yBAAAAApvdXRBc3NldElkCAUAAAAQY2xhaW1SZXN1bHRUdXBsZQAAAAJfMwQAAAAPb3JpZ0ludmVzdEFycmF5CAUAAAAQY2xhaW1SZXN1bHRUdXBsZQAAAAJfNAQAAAAUbmV3Q2xhaW1QZXJpb2RIZWlnaHQIBQAAABBjbGFpbVJlc3VsdFR1cGxlAAAAAl81BAAAABVhdmFpbGFibGVUb0NsYWltQXJyYXkIBQAAABBjbGFpbVJlc3VsdFR1cGxlAAAAAl82BAAAABthdmFpbGFibGVQcmljZUFtb3VudFRvQ2xhaW0JAAGRAAAAAgUAAAAVYXZhaWxhYmxlVG9DbGFpbUFycmF5AAAAAAAAAAAABAAAABlhdmFpbGFibGVJZG9BbW91bnRUb0NsYWltCQABkQAAAAIFAAAAFWF2YWlsYWJsZVRvQ2xhaW1BcnJheQAAAAAAAAAAAQkABRQAAAACBQAAAANuaWwJAAS5AAAAAgkABEwAAAACAgAAAAYlcyVkJWQJAARMAAAAAgUAAAANdXNlckFkZHJlc3M1OAkABEwAAAACCQABpAAAAAEFAAAAG2F2YWlsYWJsZVByaWNlQW1vdW50VG9DbGFpbQkABEwAAAACCQABpAAAAAEFAAAAGWF2YWlsYWJsZUlkb0Ftb3VudFRvQ2xhaW0FAAAAA25pbAUAAAADU0VQAAAAAWkBAAAACnNldE1hbmFnZXIAAAABAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAAAAAtjaGVja0NhbGxlcgkBAAAAC211c3RNYW5hZ2VyAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyBAAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkJAAJZAAAAAQUAAAAXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAAAAAAIFAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQUAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAAAAAFAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA5jb25maXJtTWFuYWdlcgAAAAAEAAAAAnBtCQEAAAAdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAABAAAAAVoYXNQTQMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAJwbQYJAAACAAAAAQIAAAASTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAAAAAACBQAAAAVoYXNQTQUAAAAFaGFzUE0EAAAAB2NoZWNrUE0DCQAAAAAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkBAAAABXZhbHVlAAAAAQUAAAACcG0GCQAAAgAAAAECAAAAG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAAAAAAAAgUAAAAHY2hlY2tQTQUAAAAHY2hlY2tQTQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAAJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAACcG0JAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAA90YXJnZXRQdWJsaWNLZXkEAAAAByRtYXRjaDAJAQAAABZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACcGsFAAAAByRtYXRjaDAFAAAAAnBrAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0CAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5CQAAAgAAAAECAAAAC01hdGNoIGVycm9yCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAPdGFyZ2V0UHVibGljS2V51dtaPA==", "chainId": 87, "height": 3333066, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EStpPvdd1d57drRjb2zN3huzdMr6vNv7Av7ExVMbBUde Next: Csjjuen4yVAGgeGHXHaBKWrVd1skPCLggSBQKokYJXCg Diff:
OldNewDifferences
7676 func ae (af,ac,ag) = makeString(["%s%s%s%s__history", af, ac, ag], c)
7777
7878
79-func ah () = "%s__managerPublicKey"
79+func ah () = "%s__usdnClaimDisabled"
8080
8181
82-func ai () = "%s__pendingManagerPublicKey"
82+func ai () = "%s__usdnClaimEndHeight"
8383
8484
85-func aj () = split(a(aa()), c)
85+func aj () = "%s__managerPublicKey"
8686
8787
88-func ak (al) = split(valueOrElse(getString(al), R("0", "0", "0", "0", "0")), c)
88+func ak () = "%s__pendingManagerPublicKey"
8989
9090
91-func am () = ak(ad())
91+func al () = split(a(aa()), c)
9292
9393
94-func an (ac) = ak(ab(ac))
94+func am (an) = split(valueOrElse(getString(an), R("0", "0", "0", "0", "0")), c)
9595
9696
97-func ao (ac) = split(a(ab(ac)), c)
97+func ao () = am(ad())
9898
9999
100-let ap = 0
100+func ap (ac) = am(ab(ac))
101101
102-let aq = 1
103102
104-let ar = 2
103+func aq (ac) = split(a(ab(ac)), c)
105104
106-let as = 3
107105
108-func at (b,au,av,aw) = {
109- let S = parseIntValue(au[M])
110- let T = parseIntValue(au[N])
111- let U = parseIntValue(au[O])
112- let V = parseIntValue(au[P])
113- let W = parseIntValue(au[Q])
114- let ax = (S + av[ap])
115- let ay = (T + av[aq])
116- let az = (U + av[ar])
117- let aA = (V + av[as])
118- if ((0 > ay))
106+let ar = 0
107+
108+let as = 1
109+
110+let at = 2
111+
112+let au = 3
113+
114+func av (b,aw,ax,ay) = {
115+ let S = parseIntValue(aw[M])
116+ let T = parseIntValue(aw[N])
117+ let U = parseIntValue(aw[O])
118+ let V = parseIntValue(aw[P])
119+ let W = parseIntValue(aw[Q])
120+ let az = (S + ax[ar])
121+ let aA = (T + ax[as])
122+ let aB = (U + ax[at])
123+ let aC = (V + ax[au])
124+ if ((0 > aA))
119125 then throw("invalid math")
120- else StringEntry(b, X(ax, ay, az, aA, aw))
126+ else StringEntry(b, X(az, aA, aB, aC, ay))
121127 }
122128
123129
124-func aB (ac,f,Z,aC) = StringEntry(ae("invest", ac, toBase58String(aC)), Y(f, Z))
130+func aD (ac,f,Z,aE) = StringEntry(ae("invest", ac, toBase58String(aE)), Y(f, Z))
125131
126132
127-func aD (ac,f,Z,aC) = StringEntry(ae("claim", ac, toBase58String(aC)), Y(f, Z))
133+func aF (ac,f,Z,aE) = StringEntry(ae("claim", ac, toBase58String(aE)), Y(f, Z))
128134
129135
130-func aE (aF,ac,aC) = {
131- let aG = aj()
132- let C = parseIntValue(aG[q])
133- let D = parseIntValue(aG[r])
134- let aH = (C + D)
135- let h = parseIntValue(aG[s])
136- let E = parseIntValue(aG[t])
137- let F = aG[u]
138- let aI = fromBase58String(F)
139- let G = parseIntValue(aG[v])
140- let H = aG[w]
141- let aJ = fromBase58String(H)
142- let I = parseIntValue(aG[x])
143- let aK = toString(ac)
144- let aL = ao(aK)
145- let aM = parseIntValue(aL[M])
146- let aN = parseIntValue(aL[Q])
147- let aO = if ((C >= aN))
136+func aG (aH,ac,aE) = {
137+ let aI = al()
138+ let C = parseIntValue(aI[q])
139+ let D = parseIntValue(aI[r])
140+ let aJ = (C + D)
141+ let h = parseIntValue(aI[s])
142+ let E = parseIntValue(aI[t])
143+ let F = aI[u]
144+ let aK = fromBase58String(F)
145+ let G = parseIntValue(aI[v])
146+ let H = aI[w]
147+ let aL = fromBase58String(H)
148+ let I = parseIntValue(aI[x])
149+ let aM = toString(ac)
150+ let aN = aq(aM)
151+ let aO = parseIntValue(aN[M])
152+ let aP = parseIntValue(aN[Q])
153+ let aQ = if ((C >= aP))
148154 then C
149- else aN
150- let aP = if ((height > aH))
151- then aH
155+ else aP
156+ let aR = if ((height > aJ))
157+ then aJ
152158 else if ((C > height))
153159 then C
154160 else height
155- let aQ = (aP - aO)
156- let aR = fraction(aM, aQ, D)
157- let aS = e(aR, I, h, E, G)
158- if ((aF == H))
159- then $Tuple6([0, -(aR), aR, 0], aR, aJ, aL, aP, [aR, aS])
160- else if ((aF == F))
161- then $Tuple6([0, -(aR), 0, aS], aS, aI, aL, aP, [aR, aS])
162- else throw(("unsupported assetId: " + aF))
161+ let aS = (aR - aQ)
162+ let aT = fraction(aO, aS, D)
163+ let aU = e(aT, I, h, E, G)
164+ let aV = (aH == H)
165+ let aW = valueOrElse(getBoolean(ah()), false)
166+ let aX = {
167+ let aY = getInteger(ai())
168+ if ($isInstanceOf(aY, "Int"))
169+ then {
170+ let aZ = aY
171+ (height > aZ)
172+ }
173+ else if ($isInstanceOf(aY, "Unit"))
174+ then false
175+ else throw("Match error")
176+ }
177+ let ba = [if (!(if (aV)
178+ then aW
179+ else false))
180+ then true
181+ else throw("USDN claim is disabled"), if (!(if (aV)
182+ then aX
183+ else false))
184+ then true
185+ else throw("USDN claim is ended")]
186+ if ((ba == ba))
187+ then if ((aH == H))
188+ then $Tuple6([0, -(aT), aT, 0], aT, aL, aN, aR, [aT, aU])
189+ else if ((aH == F))
190+ then $Tuple6([0, -(aT), 0, aU], aU, aK, aN, aR, [aT, aU])
191+ else throw(("unsupported assetId: " + aH))
192+ else throw("Strict value is not equal to itself.")
163193 }
164194
165195
166-func aT () = {
167- let aU = getString(ah())
168- if ($isInstanceOf(aU, "String"))
196+func bb () = {
197+ let aY = getString(aj())
198+ if ($isInstanceOf(aY, "String"))
169199 then {
170- let aV = aU
171- fromBase58String(aV)
200+ let bc = aY
201+ fromBase58String(bc)
172202 }
173- else if ($isInstanceOf(aU, "Unit"))
203+ else if ($isInstanceOf(aY, "Unit"))
174204 then unit
175205 else throw("Match error")
176206 }
177207
178208
179-func aW () = {
180- let aU = getString(ai())
181- if ($isInstanceOf(aU, "String"))
209+func bd () = {
210+ let aY = getString(ak())
211+ if ($isInstanceOf(aY, "String"))
182212 then {
183- let aV = aU
184- fromBase58String(aV)
213+ let bc = aY
214+ fromBase58String(bc)
185215 }
186- else if ($isInstanceOf(aU, "Unit"))
216+ else if ($isInstanceOf(aY, "Unit"))
187217 then unit
188218 else throw("Match error")
189219 }
190220
191221
192-func aX (aY) = {
193- let aZ = throw("Permission denied")
194- let aU = aT()
195- if ($isInstanceOf(aU, "ByteVector"))
222+func be (bf) = {
223+ let bg = throw("Permission denied")
224+ let aY = bb()
225+ if ($isInstanceOf(aY, "ByteVector"))
196226 then {
197- let ba = aU
198- if ((aY.callerPublicKey == ba))
227+ let bh = aY
228+ if ((bf.callerPublicKey == bh))
199229 then true
200- else aZ
230+ else bg
201231 }
202- else if ($isInstanceOf(aU, "Unit"))
203- then if ((aY.caller == this))
232+ else if ($isInstanceOf(aY, "Unit"))
233+ then if ((bf.caller == this))
204234 then true
205- else aZ
235+ else bg
206236 else throw("Match error")
207237 }
208238
209239
210-@Callable(aY)
240+@Callable(bf)
211241 func constructor (A,B,C,D,h,H,J) = {
212242 let E = ((100 * 1000) * 1000)
213- let bb = (A + B)
243+ let bi = (A + B)
214244 if (isDefined(getString(aa())))
215245 then throw("already initialized")
216- else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(aY.caller)))
246+ else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(bf.caller)))
217247 then throw("not authorized")
218- else if ((size(aY.payments) != 1))
248+ else if ((size(bf.payments) != 1))
219249 then throw("exactly 1 payment must be attached")
220- else if ((bb >= C))
250+ else if ((bi >= C))
221251 then throw("claimStart must be greater than idoEnd")
222252 else {
223- let bc = value(aY.payments[0])
224- let aI = value(bc.assetId)
225- let bd = valueOrErrorMessage(assetInfo(aI), "fail to load ido asset info")
226- let F = toBase58String(aI)
227- let G = pow(10, 0, bd.decimals, 0, 0, DOWN)
228- let aJ = fromBase58String(H)
229- let be = valueOrErrorMessage(assetInfo(aJ), "fail to load price asset info")
230- let I = pow(10, 0, be.decimals, 0, 0, DOWN)
231- let bf = am()
232- let bg = [0, 0, 0, 0]
233-[StringEntry(aa(), L(A, B, C, D, h, E, F, G, H, I, J, bc.amount)), at(ad(), bf, bg, C)]
253+ let bj = value(bf.payments[0])
254+ let aK = value(bj.assetId)
255+ let bk = valueOrErrorMessage(assetInfo(aK), "fail to load ido asset info")
256+ let F = toBase58String(aK)
257+ let G = pow(10, 0, bk.decimals, 0, 0, DOWN)
258+ let aL = fromBase58String(H)
259+ let bl = valueOrErrorMessage(assetInfo(aL), "fail to load price asset info")
260+ let I = pow(10, 0, bl.decimals, 0, 0, DOWN)
261+ let bm = ao()
262+ let bn = [0, 0, 0, 0]
263+[StringEntry(aa(), L(A, B, C, D, h, E, F, G, H, I, J, bj.amount)), av(ad(), bm, bn, C)]
234264 }
235265 }
236266
237267
238268
239-@Callable(aY)
269+@Callable(bf)
240270 func invest () = {
241- let aG = aj()
242- let A = parseIntValue(aG[o])
243- let B = parseIntValue(aG[p])
244- let bb = (A + B)
245- let C = parseIntValue(aG[q])
246- let D = parseIntValue(aG[r])
247- let h = parseIntValue(aG[s])
248- let E = parseIntValue(aG[t])
249- let F = aG[u]
250- let aI = fromBase58String(F)
251- let G = parseIntValue(aG[v])
252- let H = aG[w]
253- let aJ = fromBase58String(H)
254- let I = parseIntValue(aG[x])
255- let bh = parseIntValue(aG[y])
256- let ac = toString(aY.caller)
271+ let aI = al()
272+ let A = parseIntValue(aI[o])
273+ let B = parseIntValue(aI[p])
274+ let bi = (A + B)
275+ let C = parseIntValue(aI[q])
276+ let D = parseIntValue(aI[r])
277+ let h = parseIntValue(aI[s])
278+ let E = parseIntValue(aI[t])
279+ let F = aI[u]
280+ let aK = fromBase58String(F)
281+ let G = parseIntValue(aI[v])
282+ let H = aI[w]
283+ let aL = fromBase58String(H)
284+ let I = parseIntValue(aI[x])
285+ let bo = parseIntValue(aI[y])
286+ let ac = toString(bf.caller)
257287 if ((A > height))
258288 then throw("ido has not been started yet")
259- else if ((height > bb))
289+ else if ((height > bi))
260290 then throw("ido has been already ended")
261- else if ((size(aY.payments) != 1))
291+ else if ((size(bf.payments) != 1))
262292 then throw("exactly 1 payment is expected")
263293 else {
264- let bc = value(aY.payments[0])
265- let bi = value(bc.assetId)
266- let bj = bc.amount
267- if ((bi != aJ))
268- then throw((("invalid payment asset id: " + toBase58String(bi)) + " is expected"))
294+ let bj = value(bf.payments[0])
295+ let bp = value(bj.assetId)
296+ let bq = bj.amount
297+ if ((bp != aL))
298+ then throw((("invalid payment asset id: " + toBase58String(bp)) + " is expected"))
269299 else {
270- let bk = an(ac)
271- let bf = am()
272- let bl = (parseIntValue(bf[M]) + bj)
273- let bm = (bl * 100)
274- if ((bm > assetBalance(this, aI)))
300+ let br = ap(ac)
301+ let bm = ao()
302+ let bs = (parseIntValue(bm[M]) + bq)
303+ let bt = (bs * 100)
304+ if ((bt > assetBalance(this, aK)))
275305 then throw("IDO asset has been - sold consider to use smaller payment")
276306 else {
277- let bg = [bj, bj, 0, 0]
278-[at(ab(ac), bk, bg, C), at(ad(), bf, bg, C), aB(ac, bj, 0, aY.transactionId)]
307+ let bn = [bq, bq, 0, 0]
308+[av(ab(ac), br, bn, C), av(ad(), bm, bn, C), aD(ac, bq, 0, bf.transactionId)]
279309 }
280310 }
281311 }
283313
284314
285315
286-@Callable(aY)
287-func claim (aF,aK) = {
288- let bn = toString(aY.caller)
289- if ((aK != bn))
316+@Callable(bf)
317+func claim (aH,aM) = {
318+ let bu = toString(bf.caller)
319+ if ((aM != bu))
290320 then throw("not authorized")
291321 else {
292- let bo = aE(aF, aY.caller, aY.transactionId)
293- let bg = bo._1
294- let bp = bo._2
295- let bq = bo._3
296- let aL = bo._4
297- let aP = bo._5
298- let br = bg[ar]
299- let bs = bg[as]
300- $Tuple2([ScriptTransfer(aY.caller, bp, bq), at(ab(aK), aL, bg, aP), at(ad(), am(), bg, aP), aD(aK, br, bs, aY.transactionId)], unit)
322+ let bv = aG(aH, bf.caller, bf.transactionId)
323+ let bn = bv._1
324+ let bw = bv._2
325+ let bx = bv._3
326+ let aN = bv._4
327+ let aR = bv._5
328+ let by = bn[at]
329+ let bz = bn[au]
330+ $Tuple2([ScriptTransfer(bf.caller, bw, bx), av(ab(aM), aN, bn, aR), av(ad(), ao(), bn, aR), aF(aM, by, bz, bf.transactionId)], unit)
301331 }
302332 }
303333
304334
305335
306-@Callable(aY)
307-func claimREADONLY (aF,aK) = {
308- let bo = aE(aF, addressFromStringValue(aK), fromBase58String(""))
309- let bg = bo._1
310- let bp = bo._2
311- let bq = bo._3
312- let aL = bo._4
313- let aP = bo._5
314- let bt = bo._6
315- let bu = bt[0]
316- let bv = bt[1]
317- $Tuple2(nil, makeString(["%s%d%d", aK, toString(bu), toString(bv)], c))
336+@Callable(bf)
337+func claimREADONLY (aH,aM) = {
338+ let bv = aG(aH, addressFromStringValue(aM), fromBase58String(""))
339+ let bn = bv._1
340+ let bw = bv._2
341+ let bx = bv._3
342+ let aN = bv._4
343+ let aR = bv._5
344+ let bA = bv._6
345+ let bB = bA[0]
346+ let bC = bA[1]
347+ $Tuple2(nil, makeString(["%s%d%d", aM, toString(bB), toString(bC)], c))
318348 }
319349
320350
321351
322-@Callable(aY)
323-func setManager (bw) = {
324- let bx = aX(aY)
325- if ((bx == bx))
352+@Callable(bf)
353+func setManager (bD) = {
354+ let bE = be(bf)
355+ if ((bE == bE))
326356 then {
327- let by = fromBase58String(bw)
328- if ((by == by))
329- then [StringEntry(ai(), bw)]
357+ let bF = fromBase58String(bD)
358+ if ((bF == bF))
359+ then [StringEntry(ak(), bD)]
330360 else throw("Strict value is not equal to itself.")
331361 }
332362 else throw("Strict value is not equal to itself.")
334364
335365
336366
337-@Callable(aY)
367+@Callable(bf)
338368 func confirmManager () = {
339- let bz = aW()
340- let bA = if (isDefined(bz))
369+ let bG = bd()
370+ let bH = if (isDefined(bG))
341371 then true
342372 else throw("No pending manager")
343- if ((bA == bA))
373+ if ((bH == bH))
344374 then {
345- let bB = if ((aY.callerPublicKey == value(bz)))
375+ let bI = if ((bf.callerPublicKey == value(bG)))
346376 then true
347377 else throw("You are not pending manager")
348- if ((bB == bB))
349- then [StringEntry(ah(), toBase58String(value(bz))), DeleteEntry(ai())]
378+ if ((bI == bI))
379+ then [StringEntry(aj(), toBase58String(value(bG))), DeleteEntry(ak())]
350380 else throw("Strict value is not equal to itself.")
351381 }
352382 else throw("Strict value is not equal to itself.")
353383 }
354384
355385
356-@Verifier(bC)
357-func bD () = {
358- let bE = {
359- let aU = aT()
360- if ($isInstanceOf(aU, "ByteVector"))
386+@Verifier(bJ)
387+func bK () = {
388+ let bL = {
389+ let aY = bb()
390+ if ($isInstanceOf(aY, "ByteVector"))
361391 then {
362- let ba = aU
363- ba
392+ let bh = aY
393+ bh
364394 }
365- else if ($isInstanceOf(aU, "Unit"))
366- then bC.senderPublicKey
395+ else if ($isInstanceOf(aY, "Unit"))
396+ then bJ.senderPublicKey
367397 else throw("Match error")
368398 }
369- sigVerify(bC.bodyBytes, bC.proofs[0], bE)
399+ sigVerify(bJ.bodyBytes, bJ.proofs[0], bL)
370400 }
371401
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = valueOrErrorMessage(getString(b), (("mandatory this." + b) + " is not defined"))
55
66
77 let c = "__"
88
99 let d = toBigInt(1000000000000000000)
1010
1111 func e (f,g,h,i,j) = {
1212 let k = toBigInt(g)
1313 let l = toBigInt(j)
1414 let m = fraction(toBigInt(f), d, k)
1515 let n = fraction(m, toBigInt(i), toBigInt(h))
1616 toInt(fraction(n, toBigInt(j), d))
1717 }
1818
1919
2020 let o = 1
2121
2222 let p = 2
2323
2424 let q = 3
2525
2626 let r = 4
2727
2828 let s = 5
2929
3030 let t = 6
3131
3232 let u = 7
3333
3434 let v = 8
3535
3636 let w = 9
3737
3838 let x = 10
3939
4040 let y = 11
4141
4242 func z (A,B,C,D,h,E,F,G,H,I,J,K) = makeString(["%d%d%d%d%d%d%s%d%s%d%d%d", A, B, C, D, h, E, F, G, H, I, J, K], c)
4343
4444
4545 func L (A,B,C,D,h,E,F,G,H,I,J,K) = z(toString(A), toString(B), toString(C), toString(D), toString(h), toString(E), F, toString(G), H, toString(I), toString(J), toString(K))
4646
4747
4848 let M = 1
4949
5050 let N = 2
5151
5252 let O = 3
5353
5454 let P = 4
5555
5656 let Q = 5
5757
5858 func R (S,T,U,V,W) = makeString(["%d%d%d%d%d", S, T, U, V, W], c)
5959
6060
6161 func X (S,T,U,V,W) = R(toString(S), toString(T), toString(U), toString(V), toString(W))
6262
6363
6464 func Y (f,Z) = makeString(["%d%d%d%d", toString(height), toString(lastBlock.timestamp), toString(f), toString(Z)], c)
6565
6666
6767 func aa () = "%s__config"
6868
6969
7070 func ab (ac) = ("%s__" + ac)
7171
7272
7373 func ad () = "%s__totals"
7474
7575
7676 func ae (af,ac,ag) = makeString(["%s%s%s%s__history", af, ac, ag], c)
7777
7878
79-func ah () = "%s__managerPublicKey"
79+func ah () = "%s__usdnClaimDisabled"
8080
8181
82-func ai () = "%s__pendingManagerPublicKey"
82+func ai () = "%s__usdnClaimEndHeight"
8383
8484
85-func aj () = split(a(aa()), c)
85+func aj () = "%s__managerPublicKey"
8686
8787
88-func ak (al) = split(valueOrElse(getString(al), R("0", "0", "0", "0", "0")), c)
88+func ak () = "%s__pendingManagerPublicKey"
8989
9090
91-func am () = ak(ad())
91+func al () = split(a(aa()), c)
9292
9393
94-func an (ac) = ak(ab(ac))
94+func am (an) = split(valueOrElse(getString(an), R("0", "0", "0", "0", "0")), c)
9595
9696
97-func ao (ac) = split(a(ab(ac)), c)
97+func ao () = am(ad())
9898
9999
100-let ap = 0
100+func ap (ac) = am(ab(ac))
101101
102-let aq = 1
103102
104-let ar = 2
103+func aq (ac) = split(a(ab(ac)), c)
105104
106-let as = 3
107105
108-func at (b,au,av,aw) = {
109- let S = parseIntValue(au[M])
110- let T = parseIntValue(au[N])
111- let U = parseIntValue(au[O])
112- let V = parseIntValue(au[P])
113- let W = parseIntValue(au[Q])
114- let ax = (S + av[ap])
115- let ay = (T + av[aq])
116- let az = (U + av[ar])
117- let aA = (V + av[as])
118- if ((0 > ay))
106+let ar = 0
107+
108+let as = 1
109+
110+let at = 2
111+
112+let au = 3
113+
114+func av (b,aw,ax,ay) = {
115+ let S = parseIntValue(aw[M])
116+ let T = parseIntValue(aw[N])
117+ let U = parseIntValue(aw[O])
118+ let V = parseIntValue(aw[P])
119+ let W = parseIntValue(aw[Q])
120+ let az = (S + ax[ar])
121+ let aA = (T + ax[as])
122+ let aB = (U + ax[at])
123+ let aC = (V + ax[au])
124+ if ((0 > aA))
119125 then throw("invalid math")
120- else StringEntry(b, X(ax, ay, az, aA, aw))
126+ else StringEntry(b, X(az, aA, aB, aC, ay))
121127 }
122128
123129
124-func aB (ac,f,Z,aC) = StringEntry(ae("invest", ac, toBase58String(aC)), Y(f, Z))
130+func aD (ac,f,Z,aE) = StringEntry(ae("invest", ac, toBase58String(aE)), Y(f, Z))
125131
126132
127-func aD (ac,f,Z,aC) = StringEntry(ae("claim", ac, toBase58String(aC)), Y(f, Z))
133+func aF (ac,f,Z,aE) = StringEntry(ae("claim", ac, toBase58String(aE)), Y(f, Z))
128134
129135
130-func aE (aF,ac,aC) = {
131- let aG = aj()
132- let C = parseIntValue(aG[q])
133- let D = parseIntValue(aG[r])
134- let aH = (C + D)
135- let h = parseIntValue(aG[s])
136- let E = parseIntValue(aG[t])
137- let F = aG[u]
138- let aI = fromBase58String(F)
139- let G = parseIntValue(aG[v])
140- let H = aG[w]
141- let aJ = fromBase58String(H)
142- let I = parseIntValue(aG[x])
143- let aK = toString(ac)
144- let aL = ao(aK)
145- let aM = parseIntValue(aL[M])
146- let aN = parseIntValue(aL[Q])
147- let aO = if ((C >= aN))
136+func aG (aH,ac,aE) = {
137+ let aI = al()
138+ let C = parseIntValue(aI[q])
139+ let D = parseIntValue(aI[r])
140+ let aJ = (C + D)
141+ let h = parseIntValue(aI[s])
142+ let E = parseIntValue(aI[t])
143+ let F = aI[u]
144+ let aK = fromBase58String(F)
145+ let G = parseIntValue(aI[v])
146+ let H = aI[w]
147+ let aL = fromBase58String(H)
148+ let I = parseIntValue(aI[x])
149+ let aM = toString(ac)
150+ let aN = aq(aM)
151+ let aO = parseIntValue(aN[M])
152+ let aP = parseIntValue(aN[Q])
153+ let aQ = if ((C >= aP))
148154 then C
149- else aN
150- let aP = if ((height > aH))
151- then aH
155+ else aP
156+ let aR = if ((height > aJ))
157+ then aJ
152158 else if ((C > height))
153159 then C
154160 else height
155- let aQ = (aP - aO)
156- let aR = fraction(aM, aQ, D)
157- let aS = e(aR, I, h, E, G)
158- if ((aF == H))
159- then $Tuple6([0, -(aR), aR, 0], aR, aJ, aL, aP, [aR, aS])
160- else if ((aF == F))
161- then $Tuple6([0, -(aR), 0, aS], aS, aI, aL, aP, [aR, aS])
162- else throw(("unsupported assetId: " + aF))
161+ let aS = (aR - aQ)
162+ let aT = fraction(aO, aS, D)
163+ let aU = e(aT, I, h, E, G)
164+ let aV = (aH == H)
165+ let aW = valueOrElse(getBoolean(ah()), false)
166+ let aX = {
167+ let aY = getInteger(ai())
168+ if ($isInstanceOf(aY, "Int"))
169+ then {
170+ let aZ = aY
171+ (height > aZ)
172+ }
173+ else if ($isInstanceOf(aY, "Unit"))
174+ then false
175+ else throw("Match error")
176+ }
177+ let ba = [if (!(if (aV)
178+ then aW
179+ else false))
180+ then true
181+ else throw("USDN claim is disabled"), if (!(if (aV)
182+ then aX
183+ else false))
184+ then true
185+ else throw("USDN claim is ended")]
186+ if ((ba == ba))
187+ then if ((aH == H))
188+ then $Tuple6([0, -(aT), aT, 0], aT, aL, aN, aR, [aT, aU])
189+ else if ((aH == F))
190+ then $Tuple6([0, -(aT), 0, aU], aU, aK, aN, aR, [aT, aU])
191+ else throw(("unsupported assetId: " + aH))
192+ else throw("Strict value is not equal to itself.")
163193 }
164194
165195
166-func aT () = {
167- let aU = getString(ah())
168- if ($isInstanceOf(aU, "String"))
196+func bb () = {
197+ let aY = getString(aj())
198+ if ($isInstanceOf(aY, "String"))
169199 then {
170- let aV = aU
171- fromBase58String(aV)
200+ let bc = aY
201+ fromBase58String(bc)
172202 }
173- else if ($isInstanceOf(aU, "Unit"))
203+ else if ($isInstanceOf(aY, "Unit"))
174204 then unit
175205 else throw("Match error")
176206 }
177207
178208
179-func aW () = {
180- let aU = getString(ai())
181- if ($isInstanceOf(aU, "String"))
209+func bd () = {
210+ let aY = getString(ak())
211+ if ($isInstanceOf(aY, "String"))
182212 then {
183- let aV = aU
184- fromBase58String(aV)
213+ let bc = aY
214+ fromBase58String(bc)
185215 }
186- else if ($isInstanceOf(aU, "Unit"))
216+ else if ($isInstanceOf(aY, "Unit"))
187217 then unit
188218 else throw("Match error")
189219 }
190220
191221
192-func aX (aY) = {
193- let aZ = throw("Permission denied")
194- let aU = aT()
195- if ($isInstanceOf(aU, "ByteVector"))
222+func be (bf) = {
223+ let bg = throw("Permission denied")
224+ let aY = bb()
225+ if ($isInstanceOf(aY, "ByteVector"))
196226 then {
197- let ba = aU
198- if ((aY.callerPublicKey == ba))
227+ let bh = aY
228+ if ((bf.callerPublicKey == bh))
199229 then true
200- else aZ
230+ else bg
201231 }
202- else if ($isInstanceOf(aU, "Unit"))
203- then if ((aY.caller == this))
232+ else if ($isInstanceOf(aY, "Unit"))
233+ then if ((bf.caller == this))
204234 then true
205- else aZ
235+ else bg
206236 else throw("Match error")
207237 }
208238
209239
210-@Callable(aY)
240+@Callable(bf)
211241 func constructor (A,B,C,D,h,H,J) = {
212242 let E = ((100 * 1000) * 1000)
213- let bb = (A + B)
243+ let bi = (A + B)
214244 if (isDefined(getString(aa())))
215245 then throw("already initialized")
216- else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(aY.caller)))
246+ else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(bf.caller)))
217247 then throw("not authorized")
218- else if ((size(aY.payments) != 1))
248+ else if ((size(bf.payments) != 1))
219249 then throw("exactly 1 payment must be attached")
220- else if ((bb >= C))
250+ else if ((bi >= C))
221251 then throw("claimStart must be greater than idoEnd")
222252 else {
223- let bc = value(aY.payments[0])
224- let aI = value(bc.assetId)
225- let bd = valueOrErrorMessage(assetInfo(aI), "fail to load ido asset info")
226- let F = toBase58String(aI)
227- let G = pow(10, 0, bd.decimals, 0, 0, DOWN)
228- let aJ = fromBase58String(H)
229- let be = valueOrErrorMessage(assetInfo(aJ), "fail to load price asset info")
230- let I = pow(10, 0, be.decimals, 0, 0, DOWN)
231- let bf = am()
232- let bg = [0, 0, 0, 0]
233-[StringEntry(aa(), L(A, B, C, D, h, E, F, G, H, I, J, bc.amount)), at(ad(), bf, bg, C)]
253+ let bj = value(bf.payments[0])
254+ let aK = value(bj.assetId)
255+ let bk = valueOrErrorMessage(assetInfo(aK), "fail to load ido asset info")
256+ let F = toBase58String(aK)
257+ let G = pow(10, 0, bk.decimals, 0, 0, DOWN)
258+ let aL = fromBase58String(H)
259+ let bl = valueOrErrorMessage(assetInfo(aL), "fail to load price asset info")
260+ let I = pow(10, 0, bl.decimals, 0, 0, DOWN)
261+ let bm = ao()
262+ let bn = [0, 0, 0, 0]
263+[StringEntry(aa(), L(A, B, C, D, h, E, F, G, H, I, J, bj.amount)), av(ad(), bm, bn, C)]
234264 }
235265 }
236266
237267
238268
239-@Callable(aY)
269+@Callable(bf)
240270 func invest () = {
241- let aG = aj()
242- let A = parseIntValue(aG[o])
243- let B = parseIntValue(aG[p])
244- let bb = (A + B)
245- let C = parseIntValue(aG[q])
246- let D = parseIntValue(aG[r])
247- let h = parseIntValue(aG[s])
248- let E = parseIntValue(aG[t])
249- let F = aG[u]
250- let aI = fromBase58String(F)
251- let G = parseIntValue(aG[v])
252- let H = aG[w]
253- let aJ = fromBase58String(H)
254- let I = parseIntValue(aG[x])
255- let bh = parseIntValue(aG[y])
256- let ac = toString(aY.caller)
271+ let aI = al()
272+ let A = parseIntValue(aI[o])
273+ let B = parseIntValue(aI[p])
274+ let bi = (A + B)
275+ let C = parseIntValue(aI[q])
276+ let D = parseIntValue(aI[r])
277+ let h = parseIntValue(aI[s])
278+ let E = parseIntValue(aI[t])
279+ let F = aI[u]
280+ let aK = fromBase58String(F)
281+ let G = parseIntValue(aI[v])
282+ let H = aI[w]
283+ let aL = fromBase58String(H)
284+ let I = parseIntValue(aI[x])
285+ let bo = parseIntValue(aI[y])
286+ let ac = toString(bf.caller)
257287 if ((A > height))
258288 then throw("ido has not been started yet")
259- else if ((height > bb))
289+ else if ((height > bi))
260290 then throw("ido has been already ended")
261- else if ((size(aY.payments) != 1))
291+ else if ((size(bf.payments) != 1))
262292 then throw("exactly 1 payment is expected")
263293 else {
264- let bc = value(aY.payments[0])
265- let bi = value(bc.assetId)
266- let bj = bc.amount
267- if ((bi != aJ))
268- then throw((("invalid payment asset id: " + toBase58String(bi)) + " is expected"))
294+ let bj = value(bf.payments[0])
295+ let bp = value(bj.assetId)
296+ let bq = bj.amount
297+ if ((bp != aL))
298+ then throw((("invalid payment asset id: " + toBase58String(bp)) + " is expected"))
269299 else {
270- let bk = an(ac)
271- let bf = am()
272- let bl = (parseIntValue(bf[M]) + bj)
273- let bm = (bl * 100)
274- if ((bm > assetBalance(this, aI)))
300+ let br = ap(ac)
301+ let bm = ao()
302+ let bs = (parseIntValue(bm[M]) + bq)
303+ let bt = (bs * 100)
304+ if ((bt > assetBalance(this, aK)))
275305 then throw("IDO asset has been - sold consider to use smaller payment")
276306 else {
277- let bg = [bj, bj, 0, 0]
278-[at(ab(ac), bk, bg, C), at(ad(), bf, bg, C), aB(ac, bj, 0, aY.transactionId)]
307+ let bn = [bq, bq, 0, 0]
308+[av(ab(ac), br, bn, C), av(ad(), bm, bn, C), aD(ac, bq, 0, bf.transactionId)]
279309 }
280310 }
281311 }
282312 }
283313
284314
285315
286-@Callable(aY)
287-func claim (aF,aK) = {
288- let bn = toString(aY.caller)
289- if ((aK != bn))
316+@Callable(bf)
317+func claim (aH,aM) = {
318+ let bu = toString(bf.caller)
319+ if ((aM != bu))
290320 then throw("not authorized")
291321 else {
292- let bo = aE(aF, aY.caller, aY.transactionId)
293- let bg = bo._1
294- let bp = bo._2
295- let bq = bo._3
296- let aL = bo._4
297- let aP = bo._5
298- let br = bg[ar]
299- let bs = bg[as]
300- $Tuple2([ScriptTransfer(aY.caller, bp, bq), at(ab(aK), aL, bg, aP), at(ad(), am(), bg, aP), aD(aK, br, bs, aY.transactionId)], unit)
322+ let bv = aG(aH, bf.caller, bf.transactionId)
323+ let bn = bv._1
324+ let bw = bv._2
325+ let bx = bv._3
326+ let aN = bv._4
327+ let aR = bv._5
328+ let by = bn[at]
329+ let bz = bn[au]
330+ $Tuple2([ScriptTransfer(bf.caller, bw, bx), av(ab(aM), aN, bn, aR), av(ad(), ao(), bn, aR), aF(aM, by, bz, bf.transactionId)], unit)
301331 }
302332 }
303333
304334
305335
306-@Callable(aY)
307-func claimREADONLY (aF,aK) = {
308- let bo = aE(aF, addressFromStringValue(aK), fromBase58String(""))
309- let bg = bo._1
310- let bp = bo._2
311- let bq = bo._3
312- let aL = bo._4
313- let aP = bo._5
314- let bt = bo._6
315- let bu = bt[0]
316- let bv = bt[1]
317- $Tuple2(nil, makeString(["%s%d%d", aK, toString(bu), toString(bv)], c))
336+@Callable(bf)
337+func claimREADONLY (aH,aM) = {
338+ let bv = aG(aH, addressFromStringValue(aM), fromBase58String(""))
339+ let bn = bv._1
340+ let bw = bv._2
341+ let bx = bv._3
342+ let aN = bv._4
343+ let aR = bv._5
344+ let bA = bv._6
345+ let bB = bA[0]
346+ let bC = bA[1]
347+ $Tuple2(nil, makeString(["%s%d%d", aM, toString(bB), toString(bC)], c))
318348 }
319349
320350
321351
322-@Callable(aY)
323-func setManager (bw) = {
324- let bx = aX(aY)
325- if ((bx == bx))
352+@Callable(bf)
353+func setManager (bD) = {
354+ let bE = be(bf)
355+ if ((bE == bE))
326356 then {
327- let by = fromBase58String(bw)
328- if ((by == by))
329- then [StringEntry(ai(), bw)]
357+ let bF = fromBase58String(bD)
358+ if ((bF == bF))
359+ then [StringEntry(ak(), bD)]
330360 else throw("Strict value is not equal to itself.")
331361 }
332362 else throw("Strict value is not equal to itself.")
333363 }
334364
335365
336366
337-@Callable(aY)
367+@Callable(bf)
338368 func confirmManager () = {
339- let bz = aW()
340- let bA = if (isDefined(bz))
369+ let bG = bd()
370+ let bH = if (isDefined(bG))
341371 then true
342372 else throw("No pending manager")
343- if ((bA == bA))
373+ if ((bH == bH))
344374 then {
345- let bB = if ((aY.callerPublicKey == value(bz)))
375+ let bI = if ((bf.callerPublicKey == value(bG)))
346376 then true
347377 else throw("You are not pending manager")
348- if ((bB == bB))
349- then [StringEntry(ah(), toBase58String(value(bz))), DeleteEntry(ai())]
378+ if ((bI == bI))
379+ then [StringEntry(aj(), toBase58String(value(bG))), DeleteEntry(ak())]
350380 else throw("Strict value is not equal to itself.")
351381 }
352382 else throw("Strict value is not equal to itself.")
353383 }
354384
355385
356-@Verifier(bC)
357-func bD () = {
358- let bE = {
359- let aU = aT()
360- if ($isInstanceOf(aU, "ByteVector"))
386+@Verifier(bJ)
387+func bK () = {
388+ let bL = {
389+ let aY = bb()
390+ if ($isInstanceOf(aY, "ByteVector"))
361391 then {
362- let ba = aU
363- ba
392+ let bh = aY
393+ bh
364394 }
365- else if ($isInstanceOf(aU, "Unit"))
366- then bC.senderPublicKey
395+ else if ($isInstanceOf(aY, "Unit"))
396+ then bJ.senderPublicKey
367397 else throw("Match error")
368398 }
369- sigVerify(bC.bodyBytes, bC.proofs[0], bE)
399+ sigVerify(bJ.bodyBytes, bJ.proofs[0], bL)
370400 }
371401

github/deemru/w8io/6500d08 
125.50 ms