tx · C2hc99UQQvsSa1kNPUao8NaMtvoJwspCXEYGbq83Lr2v

3NAg879tKUJh949h21umkwiaRQhwZftz1BE:  -0.05000000 Waves

2019.09.06 16:42 [664274] smart account 3NAg879tKUJh949h21umkwiaRQhwZftz1BE > SELF 0.00000000 Waves

{ "type": 13, "id": "C2hc99UQQvsSa1kNPUao8NaMtvoJwspCXEYGbq83Lr2v", "fee": 5000000, "feeAssetId": null, "timestamp": 1567777329604, "version": 1, "sender": "3NAg879tKUJh949h21umkwiaRQhwZftz1BE", "senderPublicKey": "BqY2jhkQCcbidtQdQZu6f9RV3AkFAS8VPToHxwYu1KdJ", "proofs": [ "2mrJmMMJjhRaHpxe7annhz9i2nWxV2CyRovzoJHzoGXBQjXtkdJ6AbzDn8SDttCD8S1bF9qs1T8GyFh1oFfpJjBB" ], "script": "base64:AAIDAAAAAAAAAAAAAAAdAAAAAAN3dnMAAAAAAAX14QAAAAAAGW5vdFN1cHBvcnRlZEN1cnJlbmN5RXJyb3ICAAAAGzxub3RTdXBwb3J0ZWRDdXJyZW5jeUVycm9yPgAAAAAXaXNzdWVyQWNjZXNzRGVuaWVkRXJyb3ICAAAAGTxpc3N1ZXJBY2Nlc3NEZW5pZWRFcnJvcj4AAAAAFW5vdEVub3VnaFBheW1lbnRFcnJvcgIAAAAXPG5vdEVub3VnaFBheW1lbnRFcnJvcj4AAAAAJHRpY2tlclZhbGlkYXRpb25Ob3RFbm91Z2hSYXRpbmdFcnJvcgIAAAAmPHRpY2tlclZhbGlkYXRpb25Ob3RFbm91Z2hSYXRpbmdFcnJvcj4AAAAAInRpY2tlclZhbGlkYXRpb25UaWNrZXJJc0V4aXN0RXJyb3ICAAAAJDx0aWNrZXJWYWxpZGF0aW9uVGlja2VySXNFeGlzdEVycm9yPgAAAAAgdGlja2VyVmFsaWRhdGlvbldyb25nRm9ybWF0RXJyb3ICAAAAIjx0aWNrZXJWYWxpZGF0aW9uV3JvbmdGb3JtYXRFcnJvcj4AAAAAFW5vbkV4aXN0ZW50QXNzZXRFcnJvcgIAAAAXPG5vbkV4aXN0ZW50QXNzZXRFcnJvcj4AAAAADm5vUGF5bWVudEVycm9yAgAAABA8bm9QYXltZW50RXJyb3I+AAAAABZkZXNjcmlwdGlvblVwZGF0ZVByaWNlCQAAaAAAAAIAAAAAAAAAAAEFAAAAA3d2cwAAAAAPbGlua1VwZGF0ZVByaWNlCQAAaAAAAAIAAAAAAAAAAAEFAAAAA3d2cwAAAAARdGlja2VyVXBkYXRlUHJpY2UJAABoAAAAAgAAAAAAAAAAAgUAAAADd3ZzAAAAAA90aWNrZXJNaW5MZW5ndGgAAAAAAAAAAAEAAAAAD3RpY2tlck1heExlbmd0aAAAAAAAAAAABgAAAAAUdGlja2VyQWxsb3dlZExldHRlcnMCAAAAGkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaAAAAABx0aWNrZXJDYXRhbG9ndWVPcmFjbGVBZGRyZXNzCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAECAAAAIzNNeEh4VzVWV3E0S3JXY2JoRmZ4S3JhZlhtNG1MNnJaSGZqAAAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQIAAAAjM05BRHFIb0xNYk1UZlhkUDJUZUJCU3g1bVFYZVBWajNLWm0BAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIAAAAOYWNjb3VudEFkZHJlc3MAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAADmFjY291bnRBZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABaQUAAAAHJG1hdGNoMAUAAAABaQAAAAAAAAAAAAEAAAANaXNTdWJzdHJFeGlzdAAAAAIAAAADc3RyAAAABnN1YnN0cgQAAAAHJG1hdGNoMAkABLMAAAACBQAAAANzdHIFAAAABnN1YnN0cgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAVpbmRleAUAAAAHJG1hdGNoMAYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABWluZGV4BQAAAAckbWF0Y2gwBwkBAAAABXRocm93AAAAAAEAAAANaXNWYWxpZFRpY2tlcgAAAAEAAAAGdGlja2VyBAAAAA10aWNrZXJMZXR0ZXJzCQAEtQAAAAIFAAAABnRpY2tlcgIAAAAABAAAAAx0aWNrZXJMZW5ndGgJAAGQAAAAAQUAAAANdGlja2VyTGV0dGVycwQAAAAOaXNMZXR0ZXIxVmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAAAAQAAAAOaXNMZXR0ZXIyVmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAAAQQAAAAOaXNMZXR0ZXIzVmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAAAgQAAAAOaXNMZXR0ZXI0VmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAAAwQAAAAOaXNMZXR0ZXI1VmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAABAQAAAAOaXNMZXR0ZXI2VmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAABQMJAQAAAAIhPQAAAAIFAAAABnRpY2tlcgIAAAAAAwMJAABnAAAAAgUAAAAMdGlja2VyTGVuZ3RoBQAAAA90aWNrZXJNaW5MZW5ndGgJAABnAAAAAgUAAAAPdGlja2VyTWF4TGVuZ3RoBQAAAAx0aWNrZXJMZW5ndGgHAwkAAAAAAAACAAAAAAAAAAABBQAAAAx0aWNrZXJMZW5ndGgFAAAADmlzTGV0dGVyMVZhbGlkAwkAAAAAAAACAAAAAAAAAAACBQAAAAx0aWNrZXJMZW5ndGgDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHAwkAAAAAAAACAAAAAAAAAAADBQAAAAx0aWNrZXJMZW5ndGgDAwUAAAAOaXNMZXR0ZXIxVmFsaWQFAAAADmlzTGV0dGVyMlZhbGlkBwUAAAAOaXNMZXR0ZXIzVmFsaWQHAwkAAAAAAAACAAAAAAAAAAAEBQAAAAx0aWNrZXJMZW5ndGgDAwMFAAAADmlzTGV0dGVyMVZhbGlkBQAAAA5pc0xldHRlcjJWYWxpZAcFAAAADmlzTGV0dGVyM1ZhbGlkBwUAAAAOaXNMZXR0ZXI0VmFsaWQHAwkAAAAAAAACAAAAAAAAAAAFBQAAAAx0aWNrZXJMZW5ndGgDAwMDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHBQAAAA5pc0xldHRlcjNWYWxpZAcFAAAADmlzTGV0dGVyNFZhbGlkBwUAAAAOaXNMZXR0ZXI1VmFsaWQHAwkAAAAAAAACAAAAAAAAAAAGBQAAAAx0aWNrZXJMZW5ndGgDAwMDAwUAAAAOaXNMZXR0ZXIxVmFsaWQFAAAADmlzTGV0dGVyMlZhbGlkBwUAAAAOaXNMZXR0ZXIzVmFsaWQHBQAAAA5pc0xldHRlcjRWYWxpZAcFAAAADmlzTGV0dGVyNVZhbGlkBwUAAAAOaXNMZXR0ZXI2VmFsaWQHBwcHAQAAABxpc0Fzc2V0VXBkYXRlQWxsb3dlZEJ5UmF0aW5nAAAAAQAAAAdhc3NldElkBAAAAA5hc3NldFJhdGluZ0tleQkAASwAAAACCQABLAAAAAICAAAADGFzc2V0UmF0aW5nXwUAAAAHYXNzZXRJZAIAAAACXzEEAAAAEGFzc2V0UmF0aW5nVmFsdWUJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MFAAAADmFzc2V0UmF0aW5nS2V5BAAAABNhc3NldFJhdGluZ1RyZXNob2xkCQEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgUAAAAYdG9rZW5SYXRpbmdPcmFjbGVBZGRyZXNzAgAAAA50aWNrZXJSYXRpbmdfMQkAAGcAAAACBQAAABBhc3NldFJhdGluZ1ZhbHVlBQAAABNhc3NldFJhdGluZ1RyZXNob2xkAQAAABxpc0Fzc2V0VXBkYXRlQWxsb3dlZEJ5V2VpZ2h0AAAAAQAAAAdhc3NldElkBAAAAA5hc3NldFdlaWdodEtleQIAAAALYXNzZXRXZWlnaHQEAAAAEGFzc2V0V2VpZ2h0VmFsdWUJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MFAAAADmFzc2V0V2VpZ2h0S2V5BAAAABNhc3NldFdlaWdodFRyZXNob2xkCQEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgUAAAAYdG9rZW5SYXRpbmdPcmFjbGVBZGRyZXNzAgAAAAx0aWNrZXJXZWlnaHQJAABnAAAAAgUAAAAQYXNzZXRXZWlnaHRWYWx1ZQUAAAATYXNzZXRXZWlnaHRUcmVzaG9sZAEAAAAbaXNBc3NldFVwZGF0ZUFsbG93ZWRCeVZvdGVzAAAAAQAAAAdhc3NldElkBAAAAA1hc3NldFZvdGVzS2V5AgAAAAphc3NldFZvdGVzBAAAAA9hc3NldFZvdGVzVmFsdWUJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MFAAAADWFzc2V0Vm90ZXNLZXkEAAAAEmFzc2V0Vm90ZXNUcmVzaG9sZAkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwIAAAALdGlja2VyVm90ZXMJAABnAAAAAgUAAAAPYXNzZXRWb3Rlc1ZhbHVlBQAAABJhc3NldFZvdGVzVHJlc2hvbGQBAAAAF2lzVXBkYXRlQWxsb3dlZEJ5UmF0aW5nAAAAAQAAAAdhc3NldElkAwMJAQAAABxpc0Fzc2V0VXBkYXRlQWxsb3dlZEJ5UmF0aW5nAAAAAQUAAAAHYXNzZXRJZAkBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlXZWlnaHQAAAABBQAAAAdhc3NldElkBwkBAAAAG2lzQXNzZXRVcGRhdGVBbGxvd2VkQnlWb3RlcwAAAAEFAAAAB2Fzc2V0SWQHAQAAACBnZXRBc3NldElzc3VlckFkZHJlc3NGcm9tQXNzZXRJZAAAAAEAAAAHYXNzZXRJZAkABCUAAAABCAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEJAAJZAAAAAQUAAAAHYXNzZXRJZAUAAAAVbm9uRXhpc3RlbnRBc3NldEVycm9yAAAABmlzc3VlcgEAAAAKZ2V0UGF5bWVudAAAAAEAAAABaQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCAUAAAABaQAAAAdwYXltZW50BQAAAA5ub1BheW1lbnRFcnJvcgEAAAAQaXNQYXltZW50SW5XYXZlcwAAAAEAAAABaQQAAAAHcGF5bWVudAkBAAAACmdldFBheW1lbnQAAAABBQAAAAFpAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAYHAQAAAA9pc0Vub3VnaFBheW1lbnQAAAACAAAAAWkAAAAPcmVxdWlyZWRQYXltZW50BAAAAAdwYXltZW50CQEAAAAKZ2V0UGF5bWVudAAAAAEFAAAAAWkDCQAAZwAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAPcmVxdWlyZWRQYXltZW50BgcBAAAAE2lzQ2FsbGVyQXNzZXRJc3N1ZXIAAAACAAAAAWkAAAAHYXNzZXRJZAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAABFhc3NldElzc3VlckFkcmVzcwkBAAAAIGdldEFzc2V0SXNzdWVyQWRkcmVzc0Zyb21Bc3NldElkAAAAAQUAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAARYXNzZXRJc3N1ZXJBZHJlc3MGBwAAAAMAAAABaQEAAAAMdXBkYXRlVGlja2VyAAAAAgAAAAdhc3NldElkAAAABnRpY2tlcgQAAAAPaXNzdWVyVGlja2VyS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA1pc3N1ZXJUaWNrZXJfAgAAAAE8BQAAAAdhc3NldElkAgAAAAE+BAAAAAxpc1RpY2tlckZyZWUEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAcdGlja2VyQ2F0YWxvZ3VlT3JhY2xlQWRkcmVzcwUAAAAGdGlja2VyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXQFAAAAByRtYXRjaDAHAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAF0BQAAAAckbWF0Y2gwBgkBAAAABXRocm93AAAAAAMJAQAAABBpc1BheW1lbnRJbldhdmVzAAAAAQUAAAABaQMJAQAAAA9pc0Vub3VnaFBheW1lbnQAAAACBQAAAAFpBQAAABF0aWNrZXJVcGRhdGVQcmljZQMJAQAAABNpc0NhbGxlckFzc2V0SXNzdWVyAAAAAgUAAAABaQUAAAAHYXNzZXRJZAMJAQAAABdpc1VwZGF0ZUFsbG93ZWRCeVJhdGluZwAAAAEFAAAAB2Fzc2V0SWQDBQAAAAxpc1RpY2tlckZyZWUDCQEAAAANaXNWYWxpZFRpY2tlcgAAAAEFAAAABnRpY2tlcgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAPaXNzdWVyVGlja2VyS2V5BQAAAAZ0aWNrZXIFAAAAA25pbAkAAAIAAAABBQAAACB0aWNrZXJWYWxpZGF0aW9uV3JvbmdGb3JtYXRFcnJvcgkAAAIAAAABBQAAACJ0aWNrZXJWYWxpZGF0aW9uVGlja2VySXNFeGlzdEVycm9yCQAAAgAAAAEFAAAAJHRpY2tlclZhbGlkYXRpb25Ob3RFbm91Z2hSYXRpbmdFcnJvcgkAAAIAAAABBQAAABdpc3N1ZXJBY2Nlc3NEZW5pZWRFcnJvcgkAAAIAAAABBQAAABVub3RFbm91Z2hQYXltZW50RXJyb3IJAAACAAAAAQUAAAAZbm90U3VwcG9ydGVkQ3VycmVuY3lFcnJvcgAAAAFpAQAAABF1cGRhdGVEZXNjcmlwdGlvbgAAAAIAAAAHYXNzZXRJZAAAAAtkZXNjcmlwdGlvbgQAAAAUaXNzdWVyRGVzY3JpcHRpb25LZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEmlzc3VlckRlc2NyaXB0aW9uXwIAAAABPAUAAAAHYXNzZXRJZAIAAAABPgMJAQAAABBpc1BheW1lbnRJbldhdmVzAAAAAQUAAAABaQMJAQAAAA9pc0Vub3VnaFBheW1lbnQAAAACBQAAAAFpBQAAABZkZXNjcmlwdGlvblVwZGF0ZVByaWNlAwkBAAAAE2lzQ2FsbGVyQXNzZXRJc3N1ZXIAAAACBQAAAAFpBQAAAAdhc3NldElkCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABRpc3N1ZXJEZXNjcmlwdGlvbktleQUAAAALZGVzY3JpcHRpb24FAAAAA25pbAkAAAIAAAABBQAAABdpc3N1ZXJBY2Nlc3NEZW5pZWRFcnJvcgkAAAIAAAABBQAAABVub3RFbm91Z2hQYXltZW50RXJyb3IJAAACAAAAAQUAAAAZbm90U3VwcG9ydGVkQ3VycmVuY3lFcnJvcgAAAAFpAQAAAAp1cGRhdGVMaW5rAAAAAgAAAAdhc3NldElkAAAABGxpbmsEAAAADWlzc3VlckxpbmtLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC2lzc3VlckxpbmtfAgAAAAE8BQAAAAdhc3NldElkAgAAAAE+AwkBAAAAEGlzUGF5bWVudEluV2F2ZXMAAAABBQAAAAFpAwkBAAAAD2lzRW5vdWdoUGF5bWVudAAAAAIFAAAAAWkFAAAAD2xpbmtVcGRhdGVQcmljZQMJAQAAABNpc0NhbGxlckFzc2V0SXNzdWVyAAAAAgUAAAABaQUAAAAHYXNzZXRJZAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAANaXNzdWVyTGlua0tleQUAAAAEbGluawUAAAADbmlsCQAAAgAAAAEFAAAAF2lzc3VlckFjY2Vzc0RlbmllZEVycm9yCQAAAgAAAAEFAAAAFW5vdEVub3VnaFBheW1lbnRFcnJvcgkAAAIAAAABBQAAABlub3RTdXBwb3J0ZWRDdXJyZW5jeUVycm9yAAAAALjUxA0=", "chainId": 84, "height": 664274, "spentComplexity": 0 } View: original | compacted Prev: 4tz8FRfnpt8iJi6FJ17T1XgEeSKZC2bj6sx6ZKrCSZsu Next: 72S48YsSEKC7urFci1L8py3koXBs3DudgdUdt49PVyx6 Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let wvs = 100000000
55
6-let notSupportedCurrencyError = "<\"{\"name\": \"notSupportedCurrency\", \"message\": \"The service can only be paid in waves.\"}\">"
6+let notSupportedCurrencyError = "<notSupportedCurrencyError>"
77
8-let issuerAccessRightsError = "<\"{\"name\": \"issuerAccessRights\", \"message\": \"Only asset issuer can add/update information.\"}\">"
8+let issuerAccessDeniedError = "<issuerAccessDeniedError>"
99
10-func notEnoughPaymentError (option,requiredPayment) = (((("<\"{\"name\": \"issuerAccessRights\", \"message\": \"Not enough payment for Asset " + option) + "ticker update service. Required ") + toString(requiredPayment)) + " waves.\"}\">")
10+let notEnoughPaymentError = "<notEnoughPaymentError>"
1111
12+let tickerValidationNotEnoughRatingError = "<tickerValidationNotEnoughRatingError>"
13+
14+let tickerValidationTickerIsExistError = "<tickerValidationTickerIsExistError>"
15+
16+let tickerValidationWrongFormatError = "<tickerValidationWrongFormatError>"
17+
18+let nonExistentAssetError = "<nonExistentAssetError>"
19+
20+let noPaymentError = "<noPaymentError>"
1221
1322 let descriptionUpdatePrice = (1 * wvs)
1423
136145 else false
137146
138147
139-func getAssetIssuerAddressFromAssetId (assetId) = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "error#6. there is no asset with such id").issuer)
148+func getAssetIssuerAddressFromAssetId (assetId) = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), nonExistentAssetError).issuer)
140149
141150
142-func getPayment (i) = valueOrErrorMessage(i.payment, "error#8. there is no payment in invocation")
151+func getPayment (i) = valueOrErrorMessage(i.payment, noPaymentError)
143152
144153
145154 func isPaymentInWaves (i) = {
185194 then if (isTickerFree)
186195 then if (isValidTicker(ticker))
187196 then WriteSet([DataEntry(issuerTickerKey, ticker)])
188- else throw("error#5. Ticker should consist of 1-6 capital Latin characters.")
189- else throw("error#4. Asset with such ticker is already exist")
190- else throw("error#3. Too little rating")
191- else throw(issuerAccessRightsError)
192- else throw("error#2. Insufficient payment for asset ticker update service.")
197+ else throw(tickerValidationWrongFormatError)
198+ else throw(tickerValidationTickerIsExistError)
199+ else throw(tickerValidationNotEnoughRatingError)
200+ else throw(issuerAccessDeniedError)
201+ else throw(notEnoughPaymentError)
193202 else throw(notSupportedCurrencyError)
194203 }
195204
202211 then if (isEnoughPayment(i, descriptionUpdatePrice))
203212 then if (isCallerAssetIssuer(i, assetId))
204213 then WriteSet([DataEntry(issuerDescriptionKey, description)])
205- else throw(issuerAccessRightsError)
206- else throw("error#7. Insufficient payment for asset description update service.")
214+ else throw(issuerAccessDeniedError)
215+ else throw(notEnoughPaymentError)
207216 else throw(notSupportedCurrencyError)
208217 }
209218
216225 then if (isEnoughPayment(i, linkUpdatePrice))
217226 then if (isCallerAssetIssuer(i, assetId))
218227 then WriteSet([DataEntry(issuerLinkKey, link)])
219- else throw(issuerAccessRightsError)
220- else throw("error#7. Insufficient payment for asset link update service.")
228+ else throw(issuerAccessDeniedError)
229+ else throw(notEnoughPaymentError)
221230 else throw(notSupportedCurrencyError)
222231 }
223232
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let wvs = 100000000
55
6-let notSupportedCurrencyError = "<\"{\"name\": \"notSupportedCurrency\", \"message\": \"The service can only be paid in waves.\"}\">"
6+let notSupportedCurrencyError = "<notSupportedCurrencyError>"
77
8-let issuerAccessRightsError = "<\"{\"name\": \"issuerAccessRights\", \"message\": \"Only asset issuer can add/update information.\"}\">"
8+let issuerAccessDeniedError = "<issuerAccessDeniedError>"
99
10-func notEnoughPaymentError (option,requiredPayment) = (((("<\"{\"name\": \"issuerAccessRights\", \"message\": \"Not enough payment for Asset " + option) + "ticker update service. Required ") + toString(requiredPayment)) + " waves.\"}\">")
10+let notEnoughPaymentError = "<notEnoughPaymentError>"
1111
12+let tickerValidationNotEnoughRatingError = "<tickerValidationNotEnoughRatingError>"
13+
14+let tickerValidationTickerIsExistError = "<tickerValidationTickerIsExistError>"
15+
16+let tickerValidationWrongFormatError = "<tickerValidationWrongFormatError>"
17+
18+let nonExistentAssetError = "<nonExistentAssetError>"
19+
20+let noPaymentError = "<noPaymentError>"
1221
1322 let descriptionUpdatePrice = (1 * wvs)
1423
1524 let linkUpdatePrice = (1 * wvs)
1625
1726 let tickerUpdatePrice = (2 * wvs)
1827
1928 let tickerMinLength = 1
2029
2130 let tickerMaxLength = 6
2231
2332 let tickerAllowedLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
2433
2534 let tickerCatalogueOracleAddress = addressFromStringValue("3MxHxW5VWq4KrWcbhFfxKrafXm4mL6rZHfj")
2635
2736 let tokenRatingOracleAddress = addressFromStringValue("3NADqHoLMbMTfXdP2TeBBSx5mQXePVj3KZm")
2837
2938 func getIntegerFromAccount (accountAddress,key) = match getInteger(accountAddress, key) {
3039 case i: Int =>
3140 i
3241 case _ =>
3342 0
3443 }
3544
3645
3746 func isSubstrExist (str,substr) = match indexOf(str, substr) {
3847 case index: Int =>
3948 true
4049 case index: Unit =>
4150 false
4251 case _ =>
4352 throw()
4453 }
4554
4655
4756 func isValidTicker (ticker) = {
4857 let tickerLetters = split(ticker, "")
4958 let tickerLength = size(tickerLetters)
5059 let isLetter1Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[0])
5160 let isLetter2Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[1])
5261 let isLetter3Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[2])
5362 let isLetter4Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[3])
5463 let isLetter5Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[4])
5564 let isLetter6Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[5])
5665 if ((ticker != ""))
5766 then if (if ((tickerLength >= tickerMinLength))
5867 then (tickerMaxLength >= tickerLength)
5968 else false)
6069 then if ((1 == tickerLength))
6170 then isLetter1Valid
6271 else if ((2 == tickerLength))
6372 then if (isLetter1Valid)
6473 then isLetter2Valid
6574 else false
6675 else if ((3 == tickerLength))
6776 then if (if (isLetter1Valid)
6877 then isLetter2Valid
6978 else false)
7079 then isLetter3Valid
7180 else false
7281 else if ((4 == tickerLength))
7382 then if (if (if (isLetter1Valid)
7483 then isLetter2Valid
7584 else false)
7685 then isLetter3Valid
7786 else false)
7887 then isLetter4Valid
7988 else false
8089 else if ((5 == tickerLength))
8190 then if (if (if (if (isLetter1Valid)
8291 then isLetter2Valid
8392 else false)
8493 then isLetter3Valid
8594 else false)
8695 then isLetter4Valid
8796 else false)
8897 then isLetter5Valid
8998 else false
9099 else if ((6 == tickerLength))
91100 then if (if (if (if (if (isLetter1Valid)
92101 then isLetter2Valid
93102 else false)
94103 then isLetter3Valid
95104 else false)
96105 then isLetter4Valid
97106 else false)
98107 then isLetter5Valid
99108 else false)
100109 then isLetter6Valid
101110 else false
102111 else false
103112 else false
104113 else false
105114 }
106115
107116
108117 func isAssetUpdateAllowedByRating (assetId) = {
109118 let assetRatingKey = (("assetRating_" + assetId) + "_1")
110119 let assetRatingValue = getIntegerFromAccount(tokenRatingOracleAddress, assetRatingKey)
111120 let assetRatingTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerRating_1")
112121 (assetRatingValue >= assetRatingTreshold)
113122 }
114123
115124
116125 func isAssetUpdateAllowedByWeight (assetId) = {
117126 let assetWeightKey = "assetWeight"
118127 let assetWeightValue = getIntegerFromAccount(tokenRatingOracleAddress, assetWeightKey)
119128 let assetWeightTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerWeight")
120129 (assetWeightValue >= assetWeightTreshold)
121130 }
122131
123132
124133 func isAssetUpdateAllowedByVotes (assetId) = {
125134 let assetVotesKey = "assetVotes"
126135 let assetVotesValue = getIntegerFromAccount(tokenRatingOracleAddress, assetVotesKey)
127136 let assetVotesTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerVotes")
128137 (assetVotesValue >= assetVotesTreshold)
129138 }
130139
131140
132141 func isUpdateAllowedByRating (assetId) = if (if (isAssetUpdateAllowedByRating(assetId))
133142 then isAssetUpdateAllowedByWeight(assetId)
134143 else false)
135144 then isAssetUpdateAllowedByVotes(assetId)
136145 else false
137146
138147
139-func getAssetIssuerAddressFromAssetId (assetId) = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "error#6. there is no asset with such id").issuer)
148+func getAssetIssuerAddressFromAssetId (assetId) = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), nonExistentAssetError).issuer)
140149
141150
142-func getPayment (i) = valueOrErrorMessage(i.payment, "error#8. there is no payment in invocation")
151+func getPayment (i) = valueOrErrorMessage(i.payment, noPaymentError)
143152
144153
145154 func isPaymentInWaves (i) = {
146155 let payment = getPayment(i)
147156 if (!(isDefined(payment.assetId)))
148157 then true
149158 else false
150159 }
151160
152161
153162 func isEnoughPayment (i,requiredPayment) = {
154163 let payment = getPayment(i)
155164 if ((payment.amount >= requiredPayment))
156165 then true
157166 else false
158167 }
159168
160169
161170 func isCallerAssetIssuer (i,assetId) = {
162171 let callerAddress = toBase58String(i.caller.bytes)
163172 let assetIssuerAdress = getAssetIssuerAddressFromAssetId(assetId)
164173 if ((callerAddress == assetIssuerAdress))
165174 then true
166175 else false
167176 }
168177
169178
170179 @Callable(i)
171180 func updateTicker (assetId,ticker) = {
172181 let issuerTickerKey = ((("issuerTicker_" + "<") + assetId) + ">")
173182 let isTickerFree = match getString(tickerCatalogueOracleAddress, ticker) {
174183 case t: String =>
175184 false
176185 case t: Unit =>
177186 true
178187 case _ =>
179188 throw()
180189 }
181190 if (isPaymentInWaves(i))
182191 then if (isEnoughPayment(i, tickerUpdatePrice))
183192 then if (isCallerAssetIssuer(i, assetId))
184193 then if (isUpdateAllowedByRating(assetId))
185194 then if (isTickerFree)
186195 then if (isValidTicker(ticker))
187196 then WriteSet([DataEntry(issuerTickerKey, ticker)])
188- else throw("error#5. Ticker should consist of 1-6 capital Latin characters.")
189- else throw("error#4. Asset with such ticker is already exist")
190- else throw("error#3. Too little rating")
191- else throw(issuerAccessRightsError)
192- else throw("error#2. Insufficient payment for asset ticker update service.")
197+ else throw(tickerValidationWrongFormatError)
198+ else throw(tickerValidationTickerIsExistError)
199+ else throw(tickerValidationNotEnoughRatingError)
200+ else throw(issuerAccessDeniedError)
201+ else throw(notEnoughPaymentError)
193202 else throw(notSupportedCurrencyError)
194203 }
195204
196205
197206
198207 @Callable(i)
199208 func updateDescription (assetId,description) = {
200209 let issuerDescriptionKey = ((("issuerDescription_" + "<") + assetId) + ">")
201210 if (isPaymentInWaves(i))
202211 then if (isEnoughPayment(i, descriptionUpdatePrice))
203212 then if (isCallerAssetIssuer(i, assetId))
204213 then WriteSet([DataEntry(issuerDescriptionKey, description)])
205- else throw(issuerAccessRightsError)
206- else throw("error#7. Insufficient payment for asset description update service.")
214+ else throw(issuerAccessDeniedError)
215+ else throw(notEnoughPaymentError)
207216 else throw(notSupportedCurrencyError)
208217 }
209218
210219
211220
212221 @Callable(i)
213222 func updateLink (assetId,link) = {
214223 let issuerLinkKey = ((("issuerLink_" + "<") + assetId) + ">")
215224 if (isPaymentInWaves(i))
216225 then if (isEnoughPayment(i, linkUpdatePrice))
217226 then if (isCallerAssetIssuer(i, assetId))
218227 then WriteSet([DataEntry(issuerLinkKey, link)])
219- else throw(issuerAccessRightsError)
220- else throw("error#7. Insufficient payment for asset link update service.")
228+ else throw(issuerAccessDeniedError)
229+ else throw(notEnoughPaymentError)
221230 else throw(notSupportedCurrencyError)
222231 }
223232
224233

github/deemru/w8io/873ac7e 
42.38 ms