tx · 5rJghoJvzWwtdpzoRFjrZD2fPEARKHHiBnEzW2Zza98M

3MptoMhDNemvt44YriTKHqdqAJDsPRQxWz6:  -0.01000000 Waves

2020.12.18 15:50 [1314145] smart account 3MptoMhDNemvt44YriTKHqdqAJDsPRQxWz6 > SELF 0.00000000 Waves

{ "type": 13, "id": "5rJghoJvzWwtdpzoRFjrZD2fPEARKHHiBnEzW2Zza98M", "fee": 1000000, "feeAssetId": null, "timestamp": 1608295820418, "version": 1, "sender": "3MptoMhDNemvt44YriTKHqdqAJDsPRQxWz6", "senderPublicKey": "4pktbUT4HKzKtkGcc6ao2XLeSK9EimGtj6XisPEaNwuG", "proofs": [ "5S321PVEFFvtYdnhYiawdJ1TLRQfwWdQwqhHc5FwbBVG4h1TYVzfxk3UJYU2QWNsCmGV3xTFZ9b9NaX5iHrkfe5d" ], "script": "base64:AAIEAAAAAAAAABYIAhIFCgMICAgSABIAEgUKAwgICBIAAAAAFQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkJAAEsAAAAAgIAAAAVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQAAAANrZXkBAAAABmdldEludAAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQAAAAAAAAAAAAAAAAADU0VQAgAAAAJfXwAAAAASSWR4Q2ZnU2hhcmVUb2tlbklkAAAAAAAAAAABAAAAABxJZHhDZmdEZWNpbWFsc011bHRCb3RoVG9rZW5zAAAAAAAAAAACAAAAABdJZHhDZmdEZWNpbWFsc011bHRQcmljZQAAAAAAAAAAAwAAAAAUSWR4Q2ZnR2V0RGVsYXlCbG9ja3MAAAAAAAAAAAQAAAAAE0lkeFRvdGFsTG9ja2VkU2hhcmUAAAAAAAAAAAEAAAAAEklkeFRvdGFsTG9ja2VkQmFzZQAAAAAAAAAAAgEAAAAWa2V5TmV4dEludGVybmFsVG9rZW5JZAAAAAACAAAAFyVzX19uZXh0SW50ZXJuYWxBc3NldElkAQAAAA9rZXlTaGFyZTJCYXNlSWQAAAABAAAADXNoYXJlVG9rZW5TdHIJAAEsAAAAAgIAAAAjJXMlcyVzX19jb25maWdfX3NoYXJlMkJhc2VBc3NldElkX18FAAAADXNoYXJlVG9rZW5TdHIBAAAAC2tleUFzc2V0Q2ZnAAAAAQAAAAxiYXNlVG9rZW5TdHIJAAEsAAAAAgIAAAAaJXMlcyVzX19jb25maWdfX2Fzc2V0Q2ZnX18FAAAADGJhc2VUb2tlblN0cgEAAAAOa2V5VG90YWxMb2NrZWQAAAABAAAADWJhc2V0VG9rZW5TdHIJAAEsAAAAAgIAAAAXJXMlcyVzX190b3RhbF9fbG9ja2VkX18FAAAADWJhc2V0VG9rZW5TdHIBAAAAFGtleVRvdGFsTG9ja2VkQnlVc2VyAAAAAgAAAA1iYXNldFRva2VuU3RyAAAADnVzZXJBZGRyZXNzU3RyCQAEuQAAAAIJAARMAAAAAgIAAAAXJXMlcyVzJXNfX3RvdGFsX19sb2NrZWQJAARMAAAAAgUAAAANYmFzZXRUb2tlblN0cgkABEwAAAACBQAAAA51c2VyQWRkcmVzc1N0cgUAAAADbmlsBQAAAANTRVABAAAAD2RhdGFUb3RhbExvY2tlZAAAAAIAAAAQc2hhcmVUb2tlbkFtb3VudAAAAA9iYXNlVG9rZW5BbW91bnQJAAS5AAAAAgkABEwAAAACAgAAAAQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAAQc2hhcmVUb2tlbkFtb3VudAkABEwAAAACCQABpAAAAAEFAAAAD2Jhc2VUb2tlbkFtb3VudAUAAAADbmlsBQAAAANTRVABAAAADGtleU9wZXJhdGlvbgAAAAQAAAANb3BlcmF0aW9uVHlwZQAAAAtiYXNlQXNzZXRJZAAAAAt1c2VyQWRkcmVzcwAAAAR0eElkCQAEuQAAAAIJAARMAAAAAgIAAAAIJXMlcyVzJXMJAARMAAAAAgUAAAANb3BlcmF0aW9uVHlwZQkABEwAAAACBQAAAAtiYXNlQXNzZXRJZAkABEwAAAACBQAAAAt1c2VyQWRkcmVzcwkABEwAAAACBQAAAAR0eElkBQAAAANuaWwFAAAAA1NFUAEAAAANZGF0YU9wZXJhdGlvbgAAAAgAAAAGc3RhdHVzAAAADmluVG9rZW5zQW1vdW50AAAABXByaWNlAAAAD291dFRva2Vuc0Ftb3VudAAAAAtzdGFydEhlaWdodAAAAA5zdGFydFRpbWVzdGFtcAAAAAllbmRIZWlnaHQAAAAMZW5kVGltZXN0YW1wCQAEuQAAAAIJAARMAAAAAgIAAAAQJXMlZCVkJWQlZCVkJWQlZAkABEwAAAACBQAAAAZzdGF0dXMJAARMAAAAAgkAAaQAAAABBQAAAA5pblRva2Vuc0Ftb3VudAkABEwAAAACCQABpAAAAAEFAAAABXByaWNlCQAETAAAAAIJAAGkAAAAAQUAAAAPb3V0VG9rZW5zQW1vdW50CQAETAAAAAIJAAGkAAAAAQUAAAALc3RhcnRIZWlnaHQJAARMAAAAAgkAAaQAAAABBQAAAA5zdGFydFRpbWVzdGFtcAkABEwAAAACCQABpAAAAAEFAAAACWVuZEhlaWdodAkABEwAAAACCQABpAAAAAEFAAAADGVuZFRpbWVzdGFtcAUAAAADbmlsBQAAAANTRVABAAAAEnJlYWRBc3NldENmZ09yRmFpbAAAAAEAAAAOYmFzZUFzc2V0SWRTdHIEAAAAA2tleQkBAAAAC2tleUFzc2V0Q2ZnAAAAAQUAAAAOYmFzZUFzc2V0SWRTdHIJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEFAAAAA2tleQUAAAADU0VQAQAAAA9yZWFkVG90YWxMb2NrZWQAAAABAAAAA2tleQQAAAAQdG90YWxMb2NrZWRBcnJheQkABLUAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQkBAAAAD2RhdGFUb3RhbExvY2tlZAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAFAAAAA1NFUAkABEwAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAQdG90YWxMb2NrZWRBcnJheQAAAAAAAAAAAAkABEwAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAQdG90YWxMb2NrZWRBcnJheQAAAAAAAAAAAQUAAAADbmlsAQAAABRpbmNyZW1lbnRUb3RhbExvY2tlZAAAAAMAAAADa2V5AAAAEHNoYXJlVG9rZW5BbW91bnQAAAAPYmFzZVRva2VuQW1vdW50BAAAAAlkYXRhQXJyYXkJAQAAAA9yZWFkVG90YWxMb2NrZWQAAAABBQAAAANrZXkJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAA2tleQkBAAAAD2RhdGFUb3RhbExvY2tlZAAAAAIJAABkAAAAAgkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAAE0lkeFRvdGFsTG9ja2VkU2hhcmUFAAAAEHNoYXJlVG9rZW5BbW91bnQJAABkAAAAAgkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAAEklkeFRvdGFsTG9ja2VkQmFzZQUAAAAPYmFzZVRva2VuQW1vdW50AQAAAAljYWxjUHJpY2UAAAAEAAAAC2Jhc2VBc3NldElkAAAADHNoYXJlVG9rZW5JZAAAABZkZWNpbWFsc011bHRCb3RoVG9rZW5zAAAAEWRlY2ltYWxzTXVsdFByaWNlBAAAABBiYXNlQXNzZXRCYWxhbmNlCQAD8AAAAAIFAAAABHRoaXMFAAAAC2Jhc2VBc3NldElkBAAAAA1zaGFyZUVtaXNzaW9uCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAxzaGFyZVRva2VuSWQAAAAIcXVhbnRpdHkDCQAAAAAAAAIFAAAADXNoYXJlRW1pc3Npb24AAAAAAAAAAAAJAABoAAAAAgAAAAAAAAAAAQUAAAARZGVjaW1hbHNNdWx0UHJpY2UJAABrAAAAAwUAAAAQYmFzZUFzc2V0QmFsYW5jZQUAAAARZGVjaW1hbHNNdWx0UHJpY2UFAAAADXNoYXJlRW1pc3Npb24AAAAFAAAAAWkBAAAAEmFkbWluUmVnaXN0ZXJBc3NldAAAAAMAAAAMYmFzZVRva2VuU3RyAAAADnNoYXJlVG9rZW5OYW1lAAAAD3NoYXJlVG9rZW5EZXNjcgQAAAALYmFzZVRva2VuSWQJAAJZAAAAAQUAAAAMYmFzZVRva2VuU3RyBAAAAAhkZWNpbWFscwgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAALYmFzZVRva2VuSWQAAAAIZGVjaW1hbHMEAAAAFXNoYXJlVG9rZW5Jc3N1ZUFjdGlvbgkABEIAAAAFBQAAAA5zaGFyZVRva2VuTmFtZQUAAAAPc2hhcmVUb2tlbkRlc2NyAAAAAAAAAAABBQAAAAhkZWNpbWFscwYEAAAADHNoYXJlVG9rZW5JZAkABDgAAAABBQAAABVzaGFyZVRva2VuSXNzdWVBY3Rpb24EAAAADXNoYXJlVG9rZW5TdHIJAAJYAAAAAQUAAAAMc2hhcmVUb2tlbklkBAAAABFkZWNpbWFsc011bHRQcmljZQkAAGgAAAACCQAAaAAAAAIAAAAAAAAAAGQAAAAAAAAAA+gAAAAAAAAAA+gEAAAAFmRlY2ltYWxzTXVsdEJvdGhUb2tlbnMJAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAUAAAAIZGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04EAAAAFGludGVybmFsQmFzZVRva2VudElkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAABZrZXlOZXh0SW50ZXJuYWxUb2tlbklkAAAAAAAAAAAAAAAAAAQAAAAUaW50ZXJuYWxCYXNlVG9rZW5TdHIJAAGkAAAAAQUAAAAUaW50ZXJuYWxCYXNlVG9rZW50SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACAgAAABclcyVzJXNfX2NvbmZpZ19fYXNzZXRfXwUAAAAMYmFzZVRva2VuU3RyCQAEuQAAAAIJAARMAAAAAgIAAAAKJXMlcyVkJWQlZAkABEwAAAACBQAAAA1zaGFyZVRva2VuU3RyCQAETAAAAAIFAAAAFGludGVybmFsQmFzZVRva2VuU3RyCQAETAAAAAIJAAGkAAAAAQUAAAAWZGVjaW1hbHNNdWx0Qm90aFRva2VucwkABEwAAAACCQABpAAAAAEFAAAAEWRlY2ltYWxzTXVsdFByaWNlCQAETAAAAAICAAAABDE0NDAFAAAAA25pbAUAAAADU0VQCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgIAAAAoJXMlcyVzX19tYXBwaW5nc19faW50ZXJuYWwyYmFzZUFzc2V0SWRfXwUAAAAUaW50ZXJuYWxCYXNlVG9rZW5TdHIFAAAADGJhc2VUb2tlblN0cgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAICAAAAKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAAAADGJhc2VUb2tlblN0cgUAAAAUaW50ZXJuYWxCYXNlVG9rZW5TdHIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACAgAAACUlcyVzJXNfX21hcHBpbmdzX19zaGFyZTJiYXNlQXNzZXRJZF9fBQAAAA1zaGFyZVRva2VuU3RyBQAAAAxiYXNlVG9rZW5TdHIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZrZXlOZXh0SW50ZXJuYWxUb2tlbklkAAAAAAkAAGQAAAACBQAAABRpbnRlcm5hbEJhc2VUb2tlbnRJZAAAAAAAAAAAAQkABEwAAAACBQAAABVzaGFyZVRva2VuSXNzdWVBY3Rpb24JAARMAAAAAgkBAAAABEJ1cm4AAAACBQAAAAxzaGFyZVRva2VuSWQAAAAAAAAAAAEFAAAAA25pbAAAAAFpAQAAAANwdXQAAAAABAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAC2Jhc2VBc3NldElkCQEAAAAFdmFsdWUAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQEAAAADmJhc2VBc3NldElkU3RyCQACWAAAAAEFAAAAC2Jhc2VBc3NldElkBAAAAA51c2VyQWRkcmVzc1N0cgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAACGNmZ0FycmF5CQEAAAAScmVhZEFzc2V0Q2ZnT3JGYWlsAAAAAQUAAAAOYmFzZUFzc2V0SWRTdHIEAAAAD3NoYXJlVG9rZW5JZFN0cgkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAASSWR4Q2ZnU2hhcmVUb2tlbklkBAAAAAxzaGFyZVRva2VuSWQJAAJZAAAAAQUAAAAPc2hhcmVUb2tlbklkU3RyBAAAABZkZWNpbWFsc011bHRCb3RoVG9rZW5zCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAHElkeENmZ0RlY2ltYWxzTXVsdEJvdGhUb2tlbnMEAAAAEWRlY2ltYWxzTXVsdFByaWNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAF0lkeENmZ0RlY2ltYWxzTXVsdFByaWNlBAAAAAVwcmljZQkBAAAACWNhbGNQcmljZQAAAAQFAAAAC2Jhc2VBc3NldElkBQAAAAxzaGFyZVRva2VuSWQFAAAAFmRlY2ltYWxzTXVsdEJvdGhUb2tlbnMFAAAAEWRlY2ltYWxzTXVsdFByaWNlBAAAABBzaGFyZVRva2VuQW1vdW50CQAAawAAAAMIBQAAAANwbXQAAAAGYW1vdW50BQAAABFkZWNpbWFsc011bHRQcmljZQUAAAAFcHJpY2UJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZVRva2VuSWQFAAAAEHNoYXJlVG9rZW5BbW91bnQGCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAQc2hhcmVUb2tlbkFtb3VudAUAAAAMc2hhcmVUb2tlbklkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxrZXlPcGVyYXRpb24AAAAEAgAAAANwdXQFAAAADmJhc2VBc3NldElkU3RyBQAAAA51c2VyQWRkcmVzc1N0cgkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQEAAAANZGF0YU9wZXJhdGlvbgAAAAgCAAAACEZJTklTSEVECAUAAAADcG10AAAABmFtb3VudAUAAAAFcHJpY2UFAAAAEHNoYXJlVG9rZW5BbW91bnQFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAAA25pbAAAAAFpAQAAABBzdWJtaXRHZXRSZXF1ZXN0AAAAAAQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAxzaGFyZUFzc2V0SWQJAQAAAAV2YWx1ZQAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAANc2hhcmVBc3NldFN0cgkAAlgAAAABBQAAAAxzaGFyZUFzc2V0SWQEAAAADGNhbGxlclB1YlN0cgkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAC3VzZXJBZGRyZXNzCAUAAAABaQAAAAZjYWxsZXIEAAAADnVzZXJBZGRyZXNzU3RyCQAEJQAAAAEFAAAAC3VzZXJBZGRyZXNzBAAAABBzaGFyZVRva2VuQW1vdW50CAUAAAADcG10AAAABmFtb3VudAQAAAAMYmFzZVRva2VuU3RyCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQkBAAAAD2tleVNoYXJlMkJhc2VJZAAAAAEFAAAADXNoYXJlQXNzZXRTdHIEAAAAC2Jhc2VUb2tlbklkCQACWQAAAAEFAAAADGJhc2VUb2tlblN0cgQAAAAIY2ZnQXJyYXkJAQAAABJyZWFkQXNzZXRDZmdPckZhaWwAAAABBQAAAAxiYXNlVG9rZW5TdHIEAAAAFmRlY2ltYWxzTXVsdEJvdGhUb2tlbnMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAcSWR4Q2ZnRGVjaW1hbHNNdWx0Qm90aFRva2VucwQAAAARZGVjaW1hbHNNdWx0UHJpY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAXSWR4Q2ZnRGVjaW1hbHNNdWx0UHJpY2UEAAAADmdldERlbGF5QmxvY2tzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAFElkeENmZ0dldERlbGF5QmxvY2tzBAAAAAVwcmljZQkBAAAACWNhbGNQcmljZQAAAAQFAAAAC2Jhc2VUb2tlbklkBQAAAAxzaGFyZUFzc2V0SWQFAAAAFmRlY2ltYWxzTXVsdEJvdGhUb2tlbnMFAAAAEWRlY2ltYWxzTXVsdFByaWNlBAAAAA9iYXNlVG9rZW5BbW91bnQJAABrAAAAAwUAAAAQc2hhcmVUb2tlbkFtb3VudAUAAAAFcHJpY2UFAAAAEWRlY2ltYWxzTXVsdFByaWNlBAAAAAxvcGVyYXRpb25LZXkJAQAAAAxrZXlPcGVyYXRpb24AAAAEAgAAAANnZXQFAAAADGJhc2VUb2tlblN0cgUAAAAOdXNlckFkZHJlc3NTdHIJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAANb3BlcmF0aW9uRGF0YQkBAAAADWRhdGFPcGVyYXRpb24AAAAIAgAAAAdQRU5ESU5HBQAAABBzaGFyZVRva2VuQW1vdW50BQAAAAVwcmljZQUAAAAPYmFzZVRva2VuQW1vdW50BQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAAZAAAAAIFAAAABmhlaWdodAUAAAAOZ2V0RGVsYXlCbG9ja3MAAAAAAAAAAAAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAMb3BlcmF0aW9uS2V5BQAAAA1vcGVyYXRpb25EYXRhCQAETAAAAAIJAQAAABRpbmNyZW1lbnRUb3RhbExvY2tlZAAAAAMJAQAAAA5rZXlUb3RhbExvY2tlZAAAAAEFAAAADGJhc2VUb2tlblN0cgUAAAAQc2hhcmVUb2tlbkFtb3VudAUAAAAPYmFzZVRva2VuQW1vdW50CQAETAAAAAIJAQAAABRpbmNyZW1lbnRUb3RhbExvY2tlZAAAAAMJAQAAABRrZXlUb3RhbExvY2tlZEJ5VXNlcgAAAAIFAAAADGJhc2VUb2tlblN0cgUAAAAOdXNlckFkZHJlc3NTdHIFAAAAEHNoYXJlVG9rZW5BbW91bnQFAAAAD2Jhc2VUb2tlbkFtb3VudAUAAAADbmlsAAAAAWkBAAAAEWV4ZWN1dGVHZXRSZXF1ZXN0AAAAAwAAAAxiYXNlVG9rZW5TdHIAAAAOdXNlckFkZHJlc3NTdHIAAAAKZ2V0VHhJZFN0cgQAAAAMb3BlcmF0aW9uS2V5CQEAAAAMa2V5T3BlcmF0aW9uAAAABAIAAAADZ2V0BQAAAAxiYXNlVG9rZW5TdHIFAAAADnVzZXJBZGRyZXNzU3RyCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAADm9wZXJhdGlvbkFycmF5CQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABBQAAAAxvcGVyYXRpb25LZXkFAAAAA1NFUAUAAAADbmlsAAAAAWkBAAAADHRvcFVwQmFsYW5jZQAAAAAFAAAAA25pbAAAAADNraSW", "chainId": 84, "height": 1314145, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func getStringOrFail (key) = valueOrErrorMessage(getString(this, key), ("No data for this.key=" + key))
5+
6+
7+func getInt (key) = valueOrElse(getInteger(this, key), 0)
8+
9+
10+let SEP = "__"
11+
12+let IdxCfgShareTokenId = 1
13+
14+let IdxCfgDecimalsMultBothTokens = 2
15+
16+let IdxCfgDecimalsMultPrice = 3
17+
18+let IdxCfgGetDelayBlocks = 4
19+
20+let IdxTotalLockedShare = 1
21+
22+let IdxTotalLockedBase = 2
23+
24+func keyNextInternalTokenId () = "%s__nextInternalAssetId"
25+
26+
27+func keyShare2BaseId (shareTokenStr) = ("%s%s%s__config__share2BaseAssetId__" + shareTokenStr)
28+
29+
30+func keyAssetCfg (baseTokenStr) = ("%s%s%s__config__assetCfg__" + baseTokenStr)
31+
32+
33+func keyTotalLocked (basetTokenStr) = ("%s%s%s__total__locked__" + basetTokenStr)
34+
35+
36+func keyTotalLockedByUser (basetTokenStr,userAddressStr) = makeString(["%s%s%s%s__total__locked", basetTokenStr, userAddressStr], SEP)
37+
38+
39+func dataTotalLocked (shareTokenAmount,baseTokenAmount) = makeString(["%d%d", toString(shareTokenAmount), toString(baseTokenAmount)], SEP)
40+
41+
42+func keyOperation (operationType,baseAssetId,userAddress,txId) = makeString(["%s%s%s%s", operationType, baseAssetId, userAddress, txId], SEP)
43+
44+
45+func dataOperation (status,inTokensAmount,price,outTokensAmount,startHeight,startTimestamp,endHeight,endTimestamp) = makeString(["%s%d%d%d%d%d%d%d", status, toString(inTokensAmount), toString(price), toString(outTokensAmount), toString(startHeight), toString(startTimestamp), toString(endHeight), toString(endTimestamp)], SEP)
46+
47+
48+func readAssetCfgOrFail (baseAssetIdStr) = {
49+ let key = keyAssetCfg(baseAssetIdStr)
50+ split(getStringOrFail(key), SEP)
51+ }
52+
53+
54+func readTotalLocked (key) = {
55+ let totalLockedArray = split(valueOrElse(getString(this, key), dataTotalLocked(0, 0)), SEP)
56+[parseIntValue(totalLockedArray[0]), parseIntValue(totalLockedArray[1])]
57+ }
58+
59+
60+func incrementTotalLocked (key,shareTokenAmount,baseTokenAmount) = {
61+ let dataArray = readTotalLocked(key)
62+ StringEntry(key, dataTotalLocked((dataArray[IdxTotalLockedShare] + shareTokenAmount), (dataArray[IdxTotalLockedBase] + baseTokenAmount)))
63+ }
64+
65+
66+func calcPrice (baseAssetId,shareTokenId,decimalsMultBothTokens,decimalsMultPrice) = {
67+ let baseAssetBalance = assetBalance(this, baseAssetId)
68+ let shareEmission = value(assetInfo(shareTokenId)).quantity
69+ if ((shareEmission == 0))
70+ then (1 * decimalsMultPrice)
71+ else fraction(baseAssetBalance, decimalsMultPrice, shareEmission)
72+ }
73+
74+
75+@Callable(i)
76+func adminRegisterAsset (baseTokenStr,shareTokenName,shareTokenDescr) = {
77+ let baseTokenId = fromBase58String(baseTokenStr)
78+ let decimals = value(assetInfo(baseTokenId)).decimals
79+ let shareTokenIssueAction = Issue(shareTokenName, shareTokenDescr, 1, decimals, true)
80+ let shareTokenId = calculateAssetId(shareTokenIssueAction)
81+ let shareTokenStr = toBase58String(shareTokenId)
82+ let decimalsMultPrice = ((100 * 1000) * 1000)
83+ let decimalsMultBothTokens = pow(10, 0, decimals, 0, 0, DOWN)
84+ let internalBaseTokentId = valueOrElse(getInteger(this, keyNextInternalTokenId()), 0)
85+ let internalBaseTokenStr = toString(internalBaseTokentId)
86+[StringEntry(("%s%s%s__config__asset__" + baseTokenStr), makeString(["%s%s%d%d%d", shareTokenStr, internalBaseTokenStr, toString(decimalsMultBothTokens), toString(decimalsMultPrice), "1440"], SEP)), StringEntry(("%s%s%s__mappings__internal2baseAssetId__" + internalBaseTokenStr), baseTokenStr), StringEntry(("%s%s%s__mappings__baseAsset2internalId__" + baseTokenStr), internalBaseTokenStr), StringEntry(("%s%s%s__mappings__share2baseAssetId__" + shareTokenStr), baseTokenStr), IntegerEntry(keyNextInternalTokenId(), (internalBaseTokentId + 1)), shareTokenIssueAction, Burn(shareTokenId, 1)]
87+ }
88+
89+
90+
91+@Callable(i)
92+func put () = {
93+ let pmt = value(i.payments[0])
94+ let baseAssetId = value(pmt.assetId)
95+ let baseAssetIdStr = toBase58String(baseAssetId)
96+ let userAddressStr = toString(i.caller)
97+ let cfgArray = readAssetCfgOrFail(baseAssetIdStr)
98+ let shareTokenIdStr = cfgArray[IdxCfgShareTokenId]
99+ let shareTokenId = fromBase58String(shareTokenIdStr)
100+ let decimalsMultBothTokens = parseIntValue(cfgArray[IdxCfgDecimalsMultBothTokens])
101+ let decimalsMultPrice = parseIntValue(cfgArray[IdxCfgDecimalsMultPrice])
102+ let price = calcPrice(baseAssetId, shareTokenId, decimalsMultBothTokens, decimalsMultPrice)
103+ let shareTokenAmount = fraction(pmt.amount, decimalsMultPrice, price)
104+[Reissue(shareTokenId, shareTokenAmount, true), ScriptTransfer(i.caller, shareTokenAmount, shareTokenId), StringEntry(keyOperation("put", baseAssetIdStr, userAddressStr, toBase58String(i.transactionId)), dataOperation("FINISHED", pmt.amount, price, shareTokenAmount, height, lastBlock.timestamp, height, lastBlock.timestamp))]
105+ }
106+
107+
108+
109+@Callable(i)
110+func submitGetRequest () = {
111+ let pmt = value(i.payments[0])
112+ let shareAssetId = value(pmt.assetId)
113+ let shareAssetStr = toBase58String(shareAssetId)
114+ let callerPubStr = toBase58String(i.callerPublicKey)
115+ let userAddress = i.caller
116+ let userAddressStr = toString(userAddress)
117+ let shareTokenAmount = pmt.amount
118+ let baseTokenStr = getStringOrFail(keyShare2BaseId(shareAssetStr))
119+ let baseTokenId = fromBase58String(baseTokenStr)
120+ let cfgArray = readAssetCfgOrFail(baseTokenStr)
121+ let decimalsMultBothTokens = parseIntValue(cfgArray[IdxCfgDecimalsMultBothTokens])
122+ let decimalsMultPrice = parseIntValue(cfgArray[IdxCfgDecimalsMultPrice])
123+ let getDelayBlocks = parseIntValue(cfgArray[IdxCfgGetDelayBlocks])
124+ let price = calcPrice(baseTokenId, shareAssetId, decimalsMultBothTokens, decimalsMultPrice)
125+ let baseTokenAmount = fraction(shareTokenAmount, price, decimalsMultPrice)
126+ let operationKey = keyOperation("get", baseTokenStr, userAddressStr, toBase58String(i.transactionId))
127+ let operationData = dataOperation("PENDING", shareTokenAmount, price, baseTokenAmount, height, lastBlock.timestamp, (height + getDelayBlocks), 0)
128+[StringEntry(operationKey, operationData), incrementTotalLocked(keyTotalLocked(baseTokenStr), shareTokenAmount, baseTokenAmount), incrementTotalLocked(keyTotalLockedByUser(baseTokenStr, userAddressStr), shareTokenAmount, baseTokenAmount)]
129+ }
130+
131+
132+
133+@Callable(i)
134+func executeGetRequest (baseTokenStr,userAddressStr,getTxIdStr) = {
135+ let operationKey = keyOperation("get", baseTokenStr, userAddressStr, toBase58String(i.transactionId))
136+ let operationArray = split(getStringOrFail(operationKey), SEP)
137+ nil
138+ }
139+
140+
141+
142+@Callable(i)
143+func topUpBalance () = nil
144+
145+

github/deemru/w8io/873ac7e 
22.21 ms