tx · CUkEBXTs4Rx2rLqrAAMXufrCNygXrcmwzYyE7Fk2YFbS

3NAg879tKUJh949h21umkwiaRQhwZftz1BE:  -0.05000000 Waves

2019.09.06 14:35 [664144] smart account 3NAg879tKUJh949h21umkwiaRQhwZftz1BE > SELF 0.00000000 Waves

{ "type": 13, "id": "CUkEBXTs4Rx2rLqrAAMXufrCNygXrcmwzYyE7Fk2YFbS", "fee": 5000000, "feeAssetId": null, "timestamp": 1567769762401, "version": 1, "sender": "3NAg879tKUJh949h21umkwiaRQhwZftz1BE", "senderPublicKey": "BqY2jhkQCcbidtQdQZu6f9RV3AkFAS8VPToHxwYu1KdJ", "proofs": [ "5mpCRDZEw5skrqAnay1KnYxZpYMLTXHPPLoTBdiRZGhxRTvXr1S2hjt5en81vBgHSyxZi9v1G9KGBALwN27YemMR" ], "script": "base64:AAIDAAAAAAAAAAAAAAAYAAAAAAN3dnMAAAAAAAX14QAAAAAAGW5vdFN1cHBvcnRlZEN1cnJlbmN5RXJyb3ICAAAAVyJ7Im5hbWUiOiAibm90U3VwcG9ydGVkQ3VycmVuY3kiLCAibWVzc2FnZSI6ICJUaGUgc2VydmljZSBjYW4gb25seSBiZSBwYWlkIGluIHdhdmVzLiJ9IgAAAAAXaXNzdWVyQWNjZXNzUmlnaHRzRXJyb3ICAAAAXCJ7Im5hbWUiOiAiaXNzdWVyQWNjZXNzUmlnaHRzIiwgIm1lc3NhZ2UiOiAiT25seSBhc3NldCBpc3N1ZXIgY2FuIGFkZC91cGRhdGUgaW5mb3JtYXRpb24uIn0iAQAAABVub3RFbm91Z2hQYXltZW50RXJyb3IAAAACAAAABm9wdGlvbgAAAA9yZXF1aXJlZFBheW1lbnQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAABJInsibmFtZSI6ICJpc3N1ZXJBY2Nlc3NSaWdodHMiLCAibWVzc2FnZSI6ICJOb3QgZW5vdWdoIHBheW1lbnQgZm9yIEFzc2V0IAUAAAAGb3B0aW9uAgAAACB0aWNrZXIgdXBkYXRlIHNlcnZpY2UuIFJlcXVpcmVkIAkAAaQAAAABBQAAAA9yZXF1aXJlZFBheW1lbnQCAAAACiB3YXZlcy4ifSIAAAAAFmRlc2NyaXB0aW9uVXBkYXRlUHJpY2UJAABoAAAAAgAAAAAAAAAAAQUAAAADd3ZzAAAAAA9saW5rVXBkYXRlUHJpY2UJAABoAAAAAgAAAAAAAAAAAQUAAAADd3ZzAAAAABF0aWNrZXJVcGRhdGVQcmljZQkAAGgAAAACAAAAAAAAAAACBQAAAAN3dnMAAAAAD3RpY2tlck1pbkxlbmd0aAAAAAAAAAAAAQAAAAAPdGlja2VyTWF4TGVuZ3RoAAAAAAAAAAAGAAAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwIAAAAaQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoAAAAAHHRpY2tlckNhdGFsb2d1ZU9yYWNsZUFkZHJlc3MJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQIAAAAjM014SHhXNVZXcTRLcldjYmhGZnhLcmFmWG00bUw2clpIZmoAAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABAgAAACMzTkFEcUhvTE1iTVRmWGRQMlRlQkJTeDVtUVhlUFZqM0tabQEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgAAAA5hY2NvdW50QWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAOYWNjb3VudEFkZHJlc3MFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFpBQAAAAckbWF0Y2gwBQAAAAFpAAAAAAAAAAAAAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgAAAANzdHIAAAAGc3Vic3RyBAAAAAckbWF0Y2gwCQAEswAAAAIFAAAAA3N0cgUAAAAGc3Vic3RyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAABWluZGV4BQAAAAckbWF0Y2gwBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFaW5kZXgFAAAAByRtYXRjaDAHCQEAAAAFdGhyb3cAAAAAAQAAAA1pc1ZhbGlkVGlja2VyAAAAAQAAAAZ0aWNrZXIEAAAADXRpY2tlckxldHRlcnMJAAS1AAAAAgUAAAAGdGlja2VyAgAAAAAEAAAADHRpY2tlckxlbmd0aAkAAZAAAAABBQAAAA10aWNrZXJMZXR0ZXJzBAAAAA5pc0xldHRlcjFWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAABAAAAA5pc0xldHRlcjJWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAABBAAAAA5pc0xldHRlcjNWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAACBAAAAA5pc0xldHRlcjRWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAADBAAAAA5pc0xldHRlcjVWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAEBAAAAA5pc0xldHRlcjZWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAFAwkBAAAAAiE9AAAAAgUAAAAGdGlja2VyAgAAAAADAwkAAGcAAAACBQAAAAx0aWNrZXJMZW5ndGgFAAAAD3RpY2tlck1pbkxlbmd0aAkAAGcAAAACBQAAAA90aWNrZXJNYXhMZW5ndGgFAAAADHRpY2tlckxlbmd0aAcDCQAAAAAAAAIAAAAAAAAAAAEFAAAADHRpY2tlckxlbmd0aAUAAAAOaXNMZXR0ZXIxVmFsaWQDCQAAAAAAAAIAAAAAAAAAAAIFAAAADHRpY2tlckxlbmd0aAMFAAAADmlzTGV0dGVyMVZhbGlkBQAAAA5pc0xldHRlcjJWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAMFAAAADHRpY2tlckxlbmd0aAMDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHBQAAAA5pc0xldHRlcjNWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAQFAAAADHRpY2tlckxlbmd0aAMDAwUAAAAOaXNMZXR0ZXIxVmFsaWQFAAAADmlzTGV0dGVyMlZhbGlkBwUAAAAOaXNMZXR0ZXIzVmFsaWQHBQAAAA5pc0xldHRlcjRWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAUFAAAADHRpY2tlckxlbmd0aAMDAwMFAAAADmlzTGV0dGVyMVZhbGlkBQAAAA5pc0xldHRlcjJWYWxpZAcFAAAADmlzTGV0dGVyM1ZhbGlkBwUAAAAOaXNMZXR0ZXI0VmFsaWQHBQAAAA5pc0xldHRlcjVWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAYFAAAADHRpY2tlckxlbmd0aAMDAwMDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHBQAAAA5pc0xldHRlcjNWYWxpZAcFAAAADmlzTGV0dGVyNFZhbGlkBwUAAAAOaXNMZXR0ZXI1VmFsaWQHBQAAAA5pc0xldHRlcjZWYWxpZAcHBwcBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABAAAAB2Fzc2V0SWQEAAAADmFzc2V0UmF0aW5nS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAMYXNzZXRSYXRpbmdfBQAAAAdhc3NldElkAgAAAAJfMQQAAAAQYXNzZXRSYXRpbmdWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAAOYXNzZXRSYXRpbmdLZXkEAAAAE2Fzc2V0UmF0aW5nVHJlc2hvbGQJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MCAAAADnRpY2tlclJhdGluZ18xCQAAZwAAAAIFAAAAEGFzc2V0UmF0aW5nVmFsdWUFAAAAE2Fzc2V0UmF0aW5nVHJlc2hvbGQBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlXZWlnaHQAAAABAAAAB2Fzc2V0SWQEAAAADmFzc2V0V2VpZ2h0S2V5AgAAAAthc3NldFdlaWdodAQAAAAQYXNzZXRXZWlnaHRWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAAOYXNzZXRXZWlnaHRLZXkEAAAAE2Fzc2V0V2VpZ2h0VHJlc2hvbGQJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MCAAAADHRpY2tlcldlaWdodAkAAGcAAAACBQAAABBhc3NldFdlaWdodFZhbHVlBQAAABNhc3NldFdlaWdodFRyZXNob2xkAQAAABtpc0Fzc2V0VXBkYXRlQWxsb3dlZEJ5Vm90ZXMAAAABAAAAB2Fzc2V0SWQEAAAADWFzc2V0Vm90ZXNLZXkCAAAACmFzc2V0Vm90ZXMEAAAAD2Fzc2V0Vm90ZXNWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAANYXNzZXRWb3Rlc0tleQQAAAASYXNzZXRWb3Rlc1RyZXNob2xkCQEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgUAAAAYdG9rZW5SYXRpbmdPcmFjbGVBZGRyZXNzAgAAAAt0aWNrZXJWb3RlcwkAAGcAAAACBQAAAA9hc3NldFZvdGVzVmFsdWUFAAAAEmFzc2V0Vm90ZXNUcmVzaG9sZAEAAAAXaXNVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABAAAAB2Fzc2V0SWQDAwkBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABBQAAAAdhc3NldElkCQEAAAAcaXNBc3NldFVwZGF0ZUFsbG93ZWRCeVdlaWdodAAAAAEFAAAAB2Fzc2V0SWQHCQEAAAAbaXNBc3NldFVwZGF0ZUFsbG93ZWRCeVZvdGVzAAAAAQUAAAAHYXNzZXRJZAcBAAAAIGdldEFzc2V0SXNzdWVyQWRkcmVzc0Zyb21Bc3NldElkAAAAAQAAAAdhc3NldElkCQAEJQAAAAEICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQkAAlkAAAABBQAAAAdhc3NldElkAgAAACdlcnJvciM2LiB0aGVyZSBpcyBubyBhc3NldCB3aXRoIHN1Y2ggaWQAAAAGaXNzdWVyAQAAAApnZXRQYXltZW50AAAAAQAAAAFpCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIIBQAAAAFpAAAAB3BheW1lbnQCAAAAKmVycm9yIzguIHRoZXJlIGlzIG5vIHBheW1lbnQgaW4gaW52b2NhdGlvbgEAAAAQaXNQYXltZW50SW5XYXZlcwAAAAEAAAABaQQAAAAHcGF5bWVudAkBAAAACmdldFBheW1lbnQAAAABBQAAAAFpAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAYHAQAAAA9pc0Vub3VnaFBheW1lbnQAAAACAAAAAWkAAAAPcmVxdWlyZWRQYXltZW50BAAAAAdwYXltZW50CQEAAAAKZ2V0UGF5bWVudAAAAAEFAAAAAWkDCQAAZwAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAPcmVxdWlyZWRQYXltZW50BgcBAAAAE2lzQ2FsbGVyQXNzZXRJc3N1ZXIAAAACAAAAAWkAAAAHYXNzZXRJZAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAABFhc3NldElzc3VlckFkcmVzcwkBAAAAIGdldEFzc2V0SXNzdWVyQWRkcmVzc0Zyb21Bc3NldElkAAAAAQUAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAARYXNzZXRJc3N1ZXJBZHJlc3MGBwAAAAMAAAABaQEAAAAMdXBkYXRlVGlja2VyAAAAAgAAAAdhc3NldElkAAAABnRpY2tlcgQAAAAPaXNzdWVyVGlja2VyS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA1pc3N1ZXJUaWNrZXJfAgAAAAE8BQAAAAdhc3NldElkAgAAAAE+BAAAAAxpc1RpY2tlckZyZWUEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAcdGlja2VyQ2F0YWxvZ3VlT3JhY2xlQWRkcmVzcwUAAAAGdGlja2VyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXQFAAAAByRtYXRjaDAHAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAF0BQAAAAckbWF0Y2gwBgkBAAAABXRocm93AAAAAAMJAQAAABBpc1BheW1lbnRJbldhdmVzAAAAAQUAAAABaQMJAQAAAA9pc0Vub3VnaFBheW1lbnQAAAACBQAAAAFpBQAAABF0aWNrZXJVcGRhdGVQcmljZQMJAQAAABNpc0NhbGxlckFzc2V0SXNzdWVyAAAAAgUAAAABaQUAAAAHYXNzZXRJZAMJAQAAABdpc1VwZGF0ZUFsbG93ZWRCeVJhdGluZwAAAAEFAAAAB2Fzc2V0SWQDBQAAAAxpc1RpY2tlckZyZWUDCQEAAAANaXNWYWxpZFRpY2tlcgAAAAEFAAAABnRpY2tlcgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAPaXNzdWVyVGlja2VyS2V5BQAAAAZ0aWNrZXIFAAAAA25pbAkAAAIAAAABAgAAAD9lcnJvciM1LiBUaWNrZXIgc2hvdWxkIGNvbnNpc3Qgb2YgMS02IGNhcGl0YWwgTGF0aW4gY2hhcmFjdGVycy4JAAACAAAAAQIAAAAwZXJyb3IjNC4gQXNzZXQgd2l0aCBzdWNoIHRpY2tlciBpcyBhbHJlYWR5IGV4aXN0CQAAAgAAAAECAAAAGmVycm9yIzMuIFRvbyBsaXR0bGUgcmF0aW5nCQAAAgAAAAEFAAAAF2lzc3VlckFjY2Vzc1JpZ2h0c0Vycm9yCQAAAgAAAAECAAAAPmVycm9yIzIuIEluc3VmZmljaWVudCBwYXltZW50IGZvciBhc3NldCB0aWNrZXIgdXBkYXRlIHNlcnZpY2UuCQAAAgAAAAEFAAAAGW5vdFN1cHBvcnRlZEN1cnJlbmN5RXJyb3IAAAABaQEAAAARdXBkYXRlRGVzY3JpcHRpb24AAAACAAAAB2Fzc2V0SWQAAAALZGVzY3JpcHRpb24EAAAAFGlzc3VlckRlc2NyaXB0aW9uS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABJpc3N1ZXJEZXNjcmlwdGlvbl8CAAAAATwFAAAAB2Fzc2V0SWQCAAAAAT4DCQEAAAAQaXNQYXltZW50SW5XYXZlcwAAAAEFAAAAAWkDCQEAAAAPaXNFbm91Z2hQYXltZW50AAAAAgUAAAABaQUAAAAWZGVzY3JpcHRpb25VcGRhdGVQcmljZQMJAQAAABNpc0NhbGxlckFzc2V0SXNzdWVyAAAAAgUAAAABaQUAAAAHYXNzZXRJZAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAUaXNzdWVyRGVzY3JpcHRpb25LZXkFAAAAC2Rlc2NyaXB0aW9uBQAAAANuaWwJAAACAAAAAQUAAAAXaXNzdWVyQWNjZXNzUmlnaHRzRXJyb3IJAAACAAAAAQIAAABDZXJyb3IjNy4gSW5zdWZmaWNpZW50IHBheW1lbnQgZm9yIGFzc2V0IGRlc2NyaXB0aW9uIHVwZGF0ZSBzZXJ2aWNlLgkAAAIAAAABBQAAABlub3RTdXBwb3J0ZWRDdXJyZW5jeUVycm9yAAAAAWkBAAAACnVwZGF0ZUxpbmsAAAACAAAAB2Fzc2V0SWQAAAAEbGluawQAAAANaXNzdWVyTGlua0tleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALaXNzdWVyTGlua18CAAAAATwFAAAAB2Fzc2V0SWQCAAAAAT4DCQEAAAAQaXNQYXltZW50SW5XYXZlcwAAAAEFAAAAAWkDCQEAAAAPaXNFbm91Z2hQYXltZW50AAAAAgUAAAABaQUAAAAPbGlua1VwZGF0ZVByaWNlAwkBAAAAE2lzQ2FsbGVyQXNzZXRJc3N1ZXIAAAACBQAAAAFpBQAAAAdhc3NldElkCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA1pc3N1ZXJMaW5rS2V5BQAAAARsaW5rBQAAAANuaWwJAAACAAAAAQUAAAAXaXNzdWVyQWNjZXNzUmlnaHRzRXJyb3IJAAACAAAAAQIAAAA8ZXJyb3IjNy4gSW5zdWZmaWNpZW50IHBheW1lbnQgZm9yIGFzc2V0IGxpbmsgdXBkYXRlIHNlcnZpY2UuCQAAAgAAAAEFAAAAGW5vdFN1cHBvcnRlZEN1cnJlbmN5RXJyb3IAAAAAWVtGsw==", "chainId": 84, "height": 664144, "spentComplexity": 0 } View: original | compacted Prev: G297U5QHoyWVvTmgffEPtiQPomkCPKNys4bzc5XbQVxR Next: EZjB6DCz1pJEvRdqxNbLghdv1RAKr7R5EjwkC5Dcntrm Diff:
OldNewDifferences
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let wvs = 100000000
5+
6+let notSupportedCurrencyError = "\"{\"name\": \"notSupportedCurrency\", \"message\": \"The service can only be paid in waves.\"}\""
7+
8+let issuerAccessRightsError = "\"{\"name\": \"issuerAccessRights\", \"message\": \"Only asset issuer can add/update information.\"}\""
9+
10+func notEnoughPaymentError (option,requiredPayment) = (((("\"{\"name\": \"issuerAccessRights\", \"message\": \"Not enough payment for Asset " + option) + "ticker update service. Required ") + toString(requiredPayment)) + " waves.\"}\"")
11+
512
613 let descriptionUpdatePrice = (1 * wvs)
714
181188 else throw("error#5. Ticker should consist of 1-6 capital Latin characters.")
182189 else throw("error#4. Asset with such ticker is already exist")
183190 else throw("error#3. Too little rating")
184- else throw("error#2. Only asset issuer can update asset ticker")
191+ else throw(issuerAccessRightsError)
185192 else throw("error#2. Insufficient payment for asset ticker update service.")
186- else throw("error#1. The service can only be paid in waves")
193+ else throw(notSupportedCurrencyError)
187194 }
188195
189196
195202 then if (isEnoughPayment(i, descriptionUpdatePrice))
196203 then if (isCallerAssetIssuer(i, assetId))
197204 then WriteSet([DataEntry(issuerDescriptionKey, description)])
198- else throw("error#6. Only asset issuer can update asset description")
205+ else throw(issuerAccessRightsError)
199206 else throw("error#7. Insufficient payment for asset description update service.")
200- else throw("error#1. The service can only be paid in waves")
207+ else throw(notSupportedCurrencyError)
201208 }
202209
203210
209216 then if (isEnoughPayment(i, linkUpdatePrice))
210217 then if (isCallerAssetIssuer(i, assetId))
211218 then WriteSet([DataEntry(issuerLinkKey, link)])
212- else throw("error#6. Only asset issuer can update asset link")
219+ else throw(issuerAccessRightsError)
213220 else throw("error#7. Insufficient payment for asset link update service.")
214- else throw("error#1. The service can only be paid in waves")
221+ else throw(notSupportedCurrencyError)
215222 }
216223
217224
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let wvs = 100000000
5+
6+let notSupportedCurrencyError = "\"{\"name\": \"notSupportedCurrency\", \"message\": \"The service can only be paid in waves.\"}\""
7+
8+let issuerAccessRightsError = "\"{\"name\": \"issuerAccessRights\", \"message\": \"Only asset issuer can add/update information.\"}\""
9+
10+func notEnoughPaymentError (option,requiredPayment) = (((("\"{\"name\": \"issuerAccessRights\", \"message\": \"Not enough payment for Asset " + option) + "ticker update service. Required ") + toString(requiredPayment)) + " waves.\"}\"")
11+
512
613 let descriptionUpdatePrice = (1 * wvs)
714
815 let linkUpdatePrice = (1 * wvs)
916
1017 let tickerUpdatePrice = (2 * wvs)
1118
1219 let tickerMinLength = 1
1320
1421 let tickerMaxLength = 6
1522
1623 let tickerAllowedLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
1724
1825 let tickerCatalogueOracleAddress = addressFromStringValue("3MxHxW5VWq4KrWcbhFfxKrafXm4mL6rZHfj")
1926
2027 let tokenRatingOracleAddress = addressFromStringValue("3NADqHoLMbMTfXdP2TeBBSx5mQXePVj3KZm")
2128
2229 func getIntegerFromAccount (accountAddress,key) = match getInteger(accountAddress, key) {
2330 case i: Int =>
2431 i
2532 case _ =>
2633 0
2734 }
2835
2936
3037 func isSubstrExist (str,substr) = match indexOf(str, substr) {
3138 case index: Int =>
3239 true
3340 case index: Unit =>
3441 false
3542 case _ =>
3643 throw()
3744 }
3845
3946
4047 func isValidTicker (ticker) = {
4148 let tickerLetters = split(ticker, "")
4249 let tickerLength = size(tickerLetters)
4350 let isLetter1Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[0])
4451 let isLetter2Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[1])
4552 let isLetter3Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[2])
4653 let isLetter4Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[3])
4754 let isLetter5Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[4])
4855 let isLetter6Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[5])
4956 if ((ticker != ""))
5057 then if (if ((tickerLength >= tickerMinLength))
5158 then (tickerMaxLength >= tickerLength)
5259 else false)
5360 then if ((1 == tickerLength))
5461 then isLetter1Valid
5562 else if ((2 == tickerLength))
5663 then if (isLetter1Valid)
5764 then isLetter2Valid
5865 else false
5966 else if ((3 == tickerLength))
6067 then if (if (isLetter1Valid)
6168 then isLetter2Valid
6269 else false)
6370 then isLetter3Valid
6471 else false
6572 else if ((4 == tickerLength))
6673 then if (if (if (isLetter1Valid)
6774 then isLetter2Valid
6875 else false)
6976 then isLetter3Valid
7077 else false)
7178 then isLetter4Valid
7279 else false
7380 else if ((5 == tickerLength))
7481 then if (if (if (if (isLetter1Valid)
7582 then isLetter2Valid
7683 else false)
7784 then isLetter3Valid
7885 else false)
7986 then isLetter4Valid
8087 else false)
8188 then isLetter5Valid
8289 else false
8390 else if ((6 == tickerLength))
8491 then if (if (if (if (if (isLetter1Valid)
8592 then isLetter2Valid
8693 else false)
8794 then isLetter3Valid
8895 else false)
8996 then isLetter4Valid
9097 else false)
9198 then isLetter5Valid
9299 else false)
93100 then isLetter6Valid
94101 else false
95102 else false
96103 else false
97104 else false
98105 }
99106
100107
101108 func isAssetUpdateAllowedByRating (assetId) = {
102109 let assetRatingKey = (("assetRating_" + assetId) + "_1")
103110 let assetRatingValue = getIntegerFromAccount(tokenRatingOracleAddress, assetRatingKey)
104111 let assetRatingTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerRating_1")
105112 (assetRatingValue >= assetRatingTreshold)
106113 }
107114
108115
109116 func isAssetUpdateAllowedByWeight (assetId) = {
110117 let assetWeightKey = "assetWeight"
111118 let assetWeightValue = getIntegerFromAccount(tokenRatingOracleAddress, assetWeightKey)
112119 let assetWeightTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerWeight")
113120 (assetWeightValue >= assetWeightTreshold)
114121 }
115122
116123
117124 func isAssetUpdateAllowedByVotes (assetId) = {
118125 let assetVotesKey = "assetVotes"
119126 let assetVotesValue = getIntegerFromAccount(tokenRatingOracleAddress, assetVotesKey)
120127 let assetVotesTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerVotes")
121128 (assetVotesValue >= assetVotesTreshold)
122129 }
123130
124131
125132 func isUpdateAllowedByRating (assetId) = if (if (isAssetUpdateAllowedByRating(assetId))
126133 then isAssetUpdateAllowedByWeight(assetId)
127134 else false)
128135 then isAssetUpdateAllowedByVotes(assetId)
129136 else false
130137
131138
132139 func getAssetIssuerAddressFromAssetId (assetId) = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "error#6. there is no asset with such id").issuer)
133140
134141
135142 func getPayment (i) = valueOrErrorMessage(i.payment, "error#8. there is no payment in invocation")
136143
137144
138145 func isPaymentInWaves (i) = {
139146 let payment = getPayment(i)
140147 if (!(isDefined(payment.assetId)))
141148 then true
142149 else false
143150 }
144151
145152
146153 func isEnoughPayment (i,requiredPayment) = {
147154 let payment = getPayment(i)
148155 if ((payment.amount >= requiredPayment))
149156 then true
150157 else false
151158 }
152159
153160
154161 func isCallerAssetIssuer (i,assetId) = {
155162 let callerAddress = toBase58String(i.caller.bytes)
156163 let assetIssuerAdress = getAssetIssuerAddressFromAssetId(assetId)
157164 if ((callerAddress == assetIssuerAdress))
158165 then true
159166 else false
160167 }
161168
162169
163170 @Callable(i)
164171 func updateTicker (assetId,ticker) = {
165172 let issuerTickerKey = ((("issuerTicker_" + "<") + assetId) + ">")
166173 let isTickerFree = match getString(tickerCatalogueOracleAddress, ticker) {
167174 case t: String =>
168175 false
169176 case t: Unit =>
170177 true
171178 case _ =>
172179 throw()
173180 }
174181 if (isPaymentInWaves(i))
175182 then if (isEnoughPayment(i, tickerUpdatePrice))
176183 then if (isCallerAssetIssuer(i, assetId))
177184 then if (isUpdateAllowedByRating(assetId))
178185 then if (isTickerFree)
179186 then if (isValidTicker(ticker))
180187 then WriteSet([DataEntry(issuerTickerKey, ticker)])
181188 else throw("error#5. Ticker should consist of 1-6 capital Latin characters.")
182189 else throw("error#4. Asset with such ticker is already exist")
183190 else throw("error#3. Too little rating")
184- else throw("error#2. Only asset issuer can update asset ticker")
191+ else throw(issuerAccessRightsError)
185192 else throw("error#2. Insufficient payment for asset ticker update service.")
186- else throw("error#1. The service can only be paid in waves")
193+ else throw(notSupportedCurrencyError)
187194 }
188195
189196
190197
191198 @Callable(i)
192199 func updateDescription (assetId,description) = {
193200 let issuerDescriptionKey = ((("issuerDescription_" + "<") + assetId) + ">")
194201 if (isPaymentInWaves(i))
195202 then if (isEnoughPayment(i, descriptionUpdatePrice))
196203 then if (isCallerAssetIssuer(i, assetId))
197204 then WriteSet([DataEntry(issuerDescriptionKey, description)])
198- else throw("error#6. Only asset issuer can update asset description")
205+ else throw(issuerAccessRightsError)
199206 else throw("error#7. Insufficient payment for asset description update service.")
200- else throw("error#1. The service can only be paid in waves")
207+ else throw(notSupportedCurrencyError)
201208 }
202209
203210
204211
205212 @Callable(i)
206213 func updateLink (assetId,link) = {
207214 let issuerLinkKey = ((("issuerLink_" + "<") + assetId) + ">")
208215 if (isPaymentInWaves(i))
209216 then if (isEnoughPayment(i, linkUpdatePrice))
210217 then if (isCallerAssetIssuer(i, assetId))
211218 then WriteSet([DataEntry(issuerLinkKey, link)])
212- else throw("error#6. Only asset issuer can update asset link")
219+ else throw(issuerAccessRightsError)
213220 else throw("error#7. Insufficient payment for asset link update service.")
214- else throw("error#1. The service can only be paid in waves")
221+ else throw(notSupportedCurrencyError)
215222 }
216223
217224

github/deemru/w8io/3ef1775 
56.17 ms