tx · 7Y2YBguTGHyXmEUHTZgbTFtoRukTvNPfUiwjesLCxf2s

3NAg879tKUJh949h21umkwiaRQhwZftz1BE:  -0.05000000 Waves

2019.09.03 16:53 [659894] smart account 3NAg879tKUJh949h21umkwiaRQhwZftz1BE > SELF 0.00000000 Waves

{ "type": 13, "id": "7Y2YBguTGHyXmEUHTZgbTFtoRukTvNPfUiwjesLCxf2s", "fee": 5000000, "feeAssetId": null, "timestamp": 1567518915458, "version": 1, "sender": "3NAg879tKUJh949h21umkwiaRQhwZftz1BE", "senderPublicKey": "BqY2jhkQCcbidtQdQZu6f9RV3AkFAS8VPToHxwYu1KdJ", "proofs": [ "4uKuxPtq5m8JnFMhCDsRJMuVneQefre5xFNwAR2e1NLDDTFdfNGFqb2riMJA5hUGZzk2oRgvPCtLtfwSPUPDzavw" ], "script": "base64:AAIDAAAAAAAAAAAAAAAUAAAAAAN3dnMAAAAAAAX14QAAAAAAFHRpY2tlckFsbG93ZWRMZXR0ZXJzAgAAABpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWgAAAAANdGlja2VyRXhhbXBsZQIAAAADQlRDAAAAAA90aWNrZXJNaW5MZW5ndGgAAAAAAAAAAAEAAAAAD3RpY2tlck1heExlbmd0aAAAAAAAAAAABgAAAAAWZGVzY3JpcHRpb25VcGRhdGVQcmljZQkAAGgAAAACAAAAAAAAAAABBQAAAAN3dnMAAAAAD2xpbmtVcGRhdGVQcmljZQkAAGgAAAACAAAAAAAAAAABBQAAAAN3dnMAAAAAEXRpY2tlclVwZGF0ZVByaWNlCQAAaAAAAAIAAAAAAAAAAAIFAAAAA3d2cwAAAAAcdGlja2VyQ2F0YWxvZ3VlT3JhY2xlQWRkcmVzcwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABAgAAACMzTXhIeFc1VldxNEtyV2NiaEZmeEtyYWZYbTRtTDZyWkhmagAAAAAYdG9rZW5SYXRpbmdPcmFjbGVBZGRyZXNzCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAECAAAAIzNOQURxSG9MTWJNVGZYZFAyVGVCQlN4NW1RWGVQVmozS1ptAQAAABRnZXRTdHJpbmdGcm9tQWNjb3VudAAAAAIAAAAOYWNjb3VudEFkZHJlc3MAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAADmFjY291bnRBZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwUAAAAEdW5pdAEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgAAAA5hY2NvdW50QWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAOYWNjb3VudEFkZHJlc3MFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFpBQAAAAckbWF0Y2gwBQAAAAFpAAAAAAAAAAAAAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgAAAANzdHIAAAAGc3Vic3RyBAAAAAckbWF0Y2gwCQAEswAAAAIFAAAAA3N0cgUAAAAGc3Vic3RyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAABWluZGV4BQAAAAckbWF0Y2gwBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFaW5kZXgFAAAAByRtYXRjaDAHCQEAAAAFdGhyb3cAAAAAAQAAABFhc3NldElkRnJvbVN0cmluZwAAAAEAAAAHYXNzZXRJZAMDCQAAAAAAAAIFAAAAB2Fzc2V0SWQCAAAABVdBVkVTBgkAAAAAAAACBQAAAAdhc3NldElkAgAAAAAFAAAABHVuaXQJAAJZAAAAAQUAAAAHYXNzZXRJZAEAAAANaXNWYWxpZFRpY2tlcgAAAAEAAAAGdGlja2VyBAAAAA10aWNrZXJMZXR0ZXJzCQAEtQAAAAIFAAAABnRpY2tlcgIAAAAABAAAAAx0aWNrZXJMZW5ndGgJAAGQAAAAAQUAAAANdGlja2VyTGV0dGVycwQAAAAOaXNMZXR0ZXIxVmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAAAAQAAAAOaXNMZXR0ZXIyVmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAAAQQAAAAOaXNMZXR0ZXIzVmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAAAgQAAAAOaXNMZXR0ZXI0VmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAAAwQAAAAOaXNMZXR0ZXI1VmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAABAQAAAAOaXNMZXR0ZXI2VmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAABQMJAQAAAAIhPQAAAAIFAAAABnRpY2tlcgIAAAAAAwMJAABnAAAAAgUAAAAMdGlja2VyTGVuZ3RoBQAAAA90aWNrZXJNaW5MZW5ndGgJAABnAAAAAgUAAAAPdGlja2VyTWF4TGVuZ3RoBQAAAAx0aWNrZXJMZW5ndGgHAwkAAAAAAAACAAAAAAAAAAABBQAAAAx0aWNrZXJMZW5ndGgFAAAADmlzTGV0dGVyMVZhbGlkAwkAAAAAAAACAAAAAAAAAAACBQAAAAx0aWNrZXJMZW5ndGgDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHAwkAAAAAAAACAAAAAAAAAAADBQAAAAx0aWNrZXJMZW5ndGgDAwUAAAAOaXNMZXR0ZXIxVmFsaWQFAAAADmlzTGV0dGVyMlZhbGlkBwUAAAAOaXNMZXR0ZXIzVmFsaWQHAwkAAAAAAAACAAAAAAAAAAAEBQAAAAx0aWNrZXJMZW5ndGgDAwMFAAAADmlzTGV0dGVyMVZhbGlkBQAAAA5pc0xldHRlcjJWYWxpZAcFAAAADmlzTGV0dGVyM1ZhbGlkBwUAAAAOaXNMZXR0ZXI0VmFsaWQHAwkAAAAAAAACAAAAAAAAAAAFBQAAAAx0aWNrZXJMZW5ndGgDAwMDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHBQAAAA5pc0xldHRlcjNWYWxpZAcFAAAADmlzTGV0dGVyNFZhbGlkBwUAAAAOaXNMZXR0ZXI1VmFsaWQHAwkAAAAAAAACAAAAAAAAAAAGBQAAAAx0aWNrZXJMZW5ndGgDAwMDAwUAAAAOaXNMZXR0ZXIxVmFsaWQFAAAADmlzTGV0dGVyMlZhbGlkBwUAAAAOaXNMZXR0ZXIzVmFsaWQHBQAAAA5pc0xldHRlcjRWYWxpZAcFAAAADmlzTGV0dGVyNVZhbGlkBwUAAAAOaXNMZXR0ZXI2VmFsaWQHBwcHAQAAABxpc0Fzc2V0VXBkYXRlQWxsb3dlZEJ5UmF0aW5nAAAAAQAAAAdhc3NldElkBAAAAA5hc3NldFJhdGluZ0tleQkAASwAAAACCQABLAAAAAICAAAADGFzc2V0UmF0aW5nXwUAAAAHYXNzZXRJZAIAAAACXzEEAAAAEGFzc2V0UmF0aW5nVmFsdWUJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MFAAAADmFzc2V0UmF0aW5nS2V5BAAAABNhc3NldFJhdGluZ1RyZXNob2xkCQEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgUAAAAYdG9rZW5SYXRpbmdPcmFjbGVBZGRyZXNzAgAAAA1hc3NldFJhdGluZ18xCQAAZwAAAAIFAAAAEGFzc2V0UmF0aW5nVmFsdWUFAAAAE2Fzc2V0UmF0aW5nVHJlc2hvbGQBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlXZWlnaHQAAAABAAAAB2Fzc2V0SWQEAAAADmFzc2V0V2VpZ2h0S2V5AgAAAAthc3NldFdlaWdodAQAAAAQYXNzZXRXZWlnaHRWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAAOYXNzZXRXZWlnaHRLZXkEAAAAE2Fzc2V0V2VpZ2h0VHJlc2hvbGQJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MCAAAAC2Fzc2V0V2VpZ2h0CQAAZwAAAAIFAAAAEGFzc2V0V2VpZ2h0VmFsdWUFAAAAE2Fzc2V0V2VpZ2h0VHJlc2hvbGQBAAAAG2lzQXNzZXRVcGRhdGVBbGxvd2VkQnlWb3RlcwAAAAEAAAAHYXNzZXRJZAQAAAANYXNzZXRWb3Rlc0tleQIAAAAKYXNzZXRWb3RlcwQAAAAPYXNzZXRWb3Rlc1ZhbHVlCQEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgUAAAAYdG9rZW5SYXRpbmdPcmFjbGVBZGRyZXNzBQAAAA1hc3NldFZvdGVzS2V5BAAAABJhc3NldFZvdGVzVHJlc2hvbGQJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MCAAAACmFzc2V0Vm90ZXMJAABnAAAAAgUAAAAPYXNzZXRWb3Rlc1ZhbHVlBQAAABJhc3NldFZvdGVzVHJlc2hvbGQBAAAAF2lzVXBkYXRlQWxsb3dlZEJ5UmF0aW5nAAAAAQAAAAdhc3NldElkAwMJAQAAABxpc0Fzc2V0VXBkYXRlQWxsb3dlZEJ5UmF0aW5nAAAAAQUAAAAHYXNzZXRJZAkBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlXZWlnaHQAAAABBQAAAAdhc3NldElkBwkBAAAAG2lzQXNzZXRVcGRhdGVBbGxvd2VkQnlWb3RlcwAAAAEFAAAAB2Fzc2V0SWQHAQAAABlnZXRBc3NldElzc3VlckZyb21Bc3NldElkAAAAAQAAAAdhc3NldElkBAAAAAckbWF0Y2gwCQAD7AAAAAEJAAJZAAAAAQUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAFQXNzZXQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEFAAAABHVuaXQAAAABAAAAAWkBAAAADHVwZGF0ZVRpY2tlcgAAAAIAAAAHYXNzZXRJZAAAAAZ0aWNrZXIEAAAAB3BheW1lbnQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAA9pc3N1ZXJUaWNrZXJLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADWlzc3VlclRpY2tlcl8CAAAAATwFAAAAB2Fzc2V0SWQCAAAAAT4EAAAAEHRpY2tlckZyb21PcmFjbGUJAQAAABRnZXRTdHJpbmdGcm9tQWNjb3VudAAAAAIFAAAAHHRpY2tlckNhdGFsb2d1ZU9yYWNsZUFkZHJlc3MFAAAABnRpY2tlcgQAAAARYXNzZXRJc3N1ZXJBZHJlc3MJAAQlAAAAAQgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABCQACWQAAAAEFAAAAB2Fzc2V0SWQCAAAAHnRoZXJlIGlzIG5vIGFzc2V0IHdpdGggc3VjaCBpZAAAAAZpc3N1ZXIDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkAwkAAGcAAAACCAUAAAAHcGF5bWVudAAAAAZhbW91bnQFAAAAEXRpY2tlclVwZGF0ZVByaWNlAwkAAAAAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAABFhc3NldElzc3VlckFkcmVzcwMJAQAAABdpc1VwZGF0ZUFsbG93ZWRCeVJhdGluZwAAAAEFAAAAB2Fzc2V0SWQDCQAAAAAAAAIFAAAAEHRpY2tlckZyb21PcmFjbGUFAAAABHVuaXQDCQEAAAANaXNWYWxpZFRpY2tlcgAAAAEFAAAABnRpY2tlcgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAPaXNzdWVyVGlja2VyS2V5BQAAAAZ0aWNrZXIFAAAAA25pbAkAAAIAAAABAgAAAD9lcnJvciM1LiBUaWNrZXIgc2hvdWxkIGNvbnNpc3Qgb2YgMS02IGNhcGl0YWwgTGF0aW4gY2hhcmFjdGVycy4JAAACAAAAAQIAAAAwZXJyb3IjNC4gQXNzZXQgd2l0aCBzdWNoIHRpY2tlciBpcyBhbHJlYWR5IGV4aXN0CQAAAgAAAAECAAAAGmVycm9yIzMuIFRvbyBsaXR0bGUgcmF0aW5nCQAAAgAAAAECAAAAMmVycm9yIzIuIE9ubHkgYXNzZXQgaXNzdWVyIGNhbiB1cGRhdGUgYXNzZXQgdGlja2VyCQAAAgAAAAECAAAAPmVycm9yIzIuIEluc3VmZmljaWVudCBwYXltZW50IGZvciBhc3NldCB0aWNrZXIgdXBkYXRlIHNlcnZpY2UuCQAAAgAAAAECAAAALmVycm9yIzEuIFRoZSBzZXJ2aWNlIGNhbiBvbmx5IGJlIHBhaWQgaW4gd2F2ZXMAAAAAHdsF2Q==", "chainId": 84, "height": 659894, "spentComplexity": 0 } View: original | compacted Prev: 6PhuUpNa9j7NF6xGXe35tR3Pxh4ScukzJ6u1Y2rY9Kts Next: DVu3TitB8GhonEtmF4yZ91Xh9z5dqcFbKBVNxybsuymJ Diff:
OldNewDifferences
4545 case _ =>
4646 throw()
4747 }
48+
49+
50+func assetIdFromString (assetId) = if (if ((assetId == "WAVES"))
51+ then true
52+ else (assetId == ""))
53+ then unit
54+ else fromBase58String(assetId)
4855
4956
5057 func isValidTicker (ticker) = {
139146 else false
140147
141148
149+func getAssetIssuerFromAssetId (assetId) = match assetInfo(fromBase58String(assetId)) {
150+ case a: Asset =>
151+ a
152+ case _ =>
153+ unit
154+}
155+
156+
142157 @Callable(i)
143-func updateTicker (assetId,issuerAddress,ticker) = {
158+func updateTicker (assetId,ticker) = {
144159 let payment = extract(i.payment)
145160 let callerAddress = toBase58String(i.caller.bytes)
146161 let issuerTickerKey = ((("issuerTicker_" + "<") + assetId) + ">")
147162 let tickerFromOracle = getStringFromAccount(tickerCatalogueOracleAddress, ticker)
163+ let assetIssuerAdress = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "there is no asset with such id").issuer)
148164 if (!(isDefined(payment.assetId)))
149165 then if ((payment.amount >= tickerUpdatePrice))
150- then if ((callerAddress == issuerAddress))
166+ then if ((callerAddress == assetIssuerAdress))
151167 then if (isUpdateAllowedByRating(assetId))
152168 then if ((tickerFromOracle == unit))
153169 then if (isValidTicker(ticker))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let wvs = 100000000
55
66 let tickerAllowedLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
77
88 let tickerExample = "BTC"
99
1010 let tickerMinLength = 1
1111
1212 let tickerMaxLength = 6
1313
1414 let descriptionUpdatePrice = (1 * wvs)
1515
1616 let linkUpdatePrice = (1 * wvs)
1717
1818 let tickerUpdatePrice = (2 * wvs)
1919
2020 let tickerCatalogueOracleAddress = addressFromStringValue("3MxHxW5VWq4KrWcbhFfxKrafXm4mL6rZHfj")
2121
2222 let tokenRatingOracleAddress = addressFromStringValue("3NADqHoLMbMTfXdP2TeBBSx5mQXePVj3KZm")
2323
2424 func getStringFromAccount (accountAddress,key) = match getString(accountAddress, key) {
2525 case s: String =>
2626 s
2727 case _ =>
2828 unit
2929 }
3030
3131
3232 func getIntegerFromAccount (accountAddress,key) = match getInteger(accountAddress, key) {
3333 case i: Int =>
3434 i
3535 case _ =>
3636 0
3737 }
3838
3939
4040 func isSubstrExist (str,substr) = match indexOf(str, substr) {
4141 case index: Int =>
4242 true
4343 case index: Unit =>
4444 false
4545 case _ =>
4646 throw()
4747 }
48+
49+
50+func assetIdFromString (assetId) = if (if ((assetId == "WAVES"))
51+ then true
52+ else (assetId == ""))
53+ then unit
54+ else fromBase58String(assetId)
4855
4956
5057 func isValidTicker (ticker) = {
5158 let tickerLetters = split(ticker, "")
5259 let tickerLength = size(tickerLetters)
5360 let isLetter1Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[0])
5461 let isLetter2Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[1])
5562 let isLetter3Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[2])
5663 let isLetter4Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[3])
5764 let isLetter5Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[4])
5865 let isLetter6Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[5])
5966 if ((ticker != ""))
6067 then if (if ((tickerLength >= tickerMinLength))
6168 then (tickerMaxLength >= tickerLength)
6269 else false)
6370 then if ((1 == tickerLength))
6471 then isLetter1Valid
6572 else if ((2 == tickerLength))
6673 then if (isLetter1Valid)
6774 then isLetter2Valid
6875 else false
6976 else if ((3 == tickerLength))
7077 then if (if (isLetter1Valid)
7178 then isLetter2Valid
7279 else false)
7380 then isLetter3Valid
7481 else false
7582 else if ((4 == tickerLength))
7683 then if (if (if (isLetter1Valid)
7784 then isLetter2Valid
7885 else false)
7986 then isLetter3Valid
8087 else false)
8188 then isLetter4Valid
8289 else false
8390 else if ((5 == tickerLength))
8491 then 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 else if ((6 == tickerLength))
94101 then if (if (if (if (if (isLetter1Valid)
95102 then isLetter2Valid
96103 else false)
97104 then isLetter3Valid
98105 else false)
99106 then isLetter4Valid
100107 else false)
101108 then isLetter5Valid
102109 else false)
103110 then isLetter6Valid
104111 else false
105112 else false
106113 else false
107114 else false
108115 }
109116
110117
111118 func isAssetUpdateAllowedByRating (assetId) = {
112119 let assetRatingKey = (("assetRating_" + assetId) + "_1")
113120 let assetRatingValue = getIntegerFromAccount(tokenRatingOracleAddress, assetRatingKey)
114121 let assetRatingTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "assetRating_1")
115122 (assetRatingValue >= assetRatingTreshold)
116123 }
117124
118125
119126 func isAssetUpdateAllowedByWeight (assetId) = {
120127 let assetWeightKey = "assetWeight"
121128 let assetWeightValue = getIntegerFromAccount(tokenRatingOracleAddress, assetWeightKey)
122129 let assetWeightTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "assetWeight")
123130 (assetWeightValue >= assetWeightTreshold)
124131 }
125132
126133
127134 func isAssetUpdateAllowedByVotes (assetId) = {
128135 let assetVotesKey = "assetVotes"
129136 let assetVotesValue = getIntegerFromAccount(tokenRatingOracleAddress, assetVotesKey)
130137 let assetVotesTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "assetVotes")
131138 (assetVotesValue >= assetVotesTreshold)
132139 }
133140
134141
135142 func isUpdateAllowedByRating (assetId) = if (if (isAssetUpdateAllowedByRating(assetId))
136143 then isAssetUpdateAllowedByWeight(assetId)
137144 else false)
138145 then isAssetUpdateAllowedByVotes(assetId)
139146 else false
140147
141148
149+func getAssetIssuerFromAssetId (assetId) = match assetInfo(fromBase58String(assetId)) {
150+ case a: Asset =>
151+ a
152+ case _ =>
153+ unit
154+}
155+
156+
142157 @Callable(i)
143-func updateTicker (assetId,issuerAddress,ticker) = {
158+func updateTicker (assetId,ticker) = {
144159 let payment = extract(i.payment)
145160 let callerAddress = toBase58String(i.caller.bytes)
146161 let issuerTickerKey = ((("issuerTicker_" + "<") + assetId) + ">")
147162 let tickerFromOracle = getStringFromAccount(tickerCatalogueOracleAddress, ticker)
163+ let assetIssuerAdress = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "there is no asset with such id").issuer)
148164 if (!(isDefined(payment.assetId)))
149165 then if ((payment.amount >= tickerUpdatePrice))
150- then if ((callerAddress == issuerAddress))
166+ then if ((callerAddress == assetIssuerAdress))
151167 then if (isUpdateAllowedByRating(assetId))
152168 then if ((tickerFromOracle == unit))
153169 then if (isValidTicker(ticker))
154170 then WriteSet([DataEntry(issuerTickerKey, ticker)])
155171 else throw("error#5. Ticker should consist of 1-6 capital Latin characters.")
156172 else throw("error#4. Asset with such ticker is already exist")
157173 else throw("error#3. Too little rating")
158174 else throw("error#2. Only asset issuer can update asset ticker")
159175 else throw("error#2. Insufficient payment for asset ticker update service.")
160176 else throw("error#1. The service can only be paid in waves")
161177 }
162178
163179

github/deemru/w8io/3ef1775 
257.34 ms