tx · 6r8HQkvAwb32enqjhE2LZ1TPNT2UGrA3WXgdeycsLTVq

3MvTtCYbWDMVJJc6e1rTYPRzh6JBnYkiBZ8:  -0.05000000 Waves

2019.09.03 18:04 [659958] smart account 3MvTtCYbWDMVJJc6e1rTYPRzh6JBnYkiBZ8 > SELF 0.00000000 Waves

{ "type": 13, "id": "6r8HQkvAwb32enqjhE2LZ1TPNT2UGrA3WXgdeycsLTVq", "fee": 5000000, "feeAssetId": null, "timestamp": 1567523085009, "version": 1, "sender": "3MvTtCYbWDMVJJc6e1rTYPRzh6JBnYkiBZ8", "senderPublicKey": "Dm9NvzmfYXhfemNB9kmWcSzVk5Ni7puk7qLGm2FZryDS", "proofs": [ "26rtfkpx3tLPs2escpHGYVwvjCr8bcvzHxBm7NNzvtJsusTLE5bBB3C95aycaSyymV2ob2RyJA2idfnUSEe7Rf6H" ], "script": "base64:AAIDAAAAAAAAAAAAAAATAAAAAAN3dnMAAAAAAAX14QAAAAAAFHRpY2tlckFsbG93ZWRMZXR0ZXJzAgAAABpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWgAAAAANdGlja2VyRXhhbXBsZQIAAAADQlRDAAAAAA90aWNrZXJNaW5MZW5ndGgAAAAAAAAAAAEAAAAAD3RpY2tlck1heExlbmd0aAAAAAAAAAAABgAAAAAWZGVzY3JpcHRpb25VcGRhdGVQcmljZQkAAGgAAAACAAAAAAAAAAABBQAAAAN3dnMAAAAAD2xpbmtVcGRhdGVQcmljZQkAAGgAAAACAAAAAAAAAAABBQAAAAN3dnMAAAAAEXRpY2tlclVwZGF0ZVByaWNlCQAAaAAAAAIAAAAAAAAAAAIFAAAAA3d2cwAAAAAcdGlja2VyQ2F0YWxvZ3VlT3JhY2xlQWRkcmVzcwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABAgAAACMzTXhIeFc1VldxNEtyV2NiaEZmeEtyYWZYbTRtTDZyWkhmagAAAAAYdG9rZW5SYXRpbmdPcmFjbGVBZGRyZXNzCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAECAAAAIzNOQURxSG9MTWJNVGZYZFAyVGVCQlN4NW1RWGVQVmozS1ptAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACAAAADmFjY291bnRBZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAA5hY2NvdW50QWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWkFAAAAByRtYXRjaDAFAAAAAWkAAAAAAAAAAAABAAAADWlzU3Vic3RyRXhpc3QAAAACAAAAA3N0cgAAAAZzdWJzdHIEAAAAByRtYXRjaDAJAASzAAAAAgUAAAADc3RyBQAAAAZzdWJzdHIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAFaW5kZXgFAAAAByRtYXRjaDAGAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAVpbmRleAUAAAAHJG1hdGNoMAcJAQAAAAV0aHJvdwAAAAABAAAAEWFzc2V0SWRGcm9tU3RyaW5nAAAAAQAAAAdhc3NldElkAwMJAAAAAAAAAgUAAAAHYXNzZXRJZAIAAAAFV0FWRVMGCQAAAAAAAAIFAAAAB2Fzc2V0SWQCAAAAAAUAAAAEdW5pdAkAAlkAAAABBQAAAAdhc3NldElkAQAAAA1pc1ZhbGlkVGlja2VyAAAAAQAAAAZ0aWNrZXIEAAAADXRpY2tlckxldHRlcnMJAAS1AAAAAgUAAAAGdGlja2VyAgAAAAAEAAAADHRpY2tlckxlbmd0aAkAAZAAAAABBQAAAA10aWNrZXJMZXR0ZXJzBAAAAA5pc0xldHRlcjFWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAABAAAAA5pc0xldHRlcjJWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAABBAAAAA5pc0xldHRlcjNWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAACBAAAAA5pc0xldHRlcjRWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAADBAAAAA5pc0xldHRlcjVWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAEBAAAAA5pc0xldHRlcjZWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAFAwkBAAAAAiE9AAAAAgUAAAAGdGlja2VyAgAAAAADAwkAAGcAAAACBQAAAAx0aWNrZXJMZW5ndGgFAAAAD3RpY2tlck1pbkxlbmd0aAkAAGcAAAACBQAAAA90aWNrZXJNYXhMZW5ndGgFAAAADHRpY2tlckxlbmd0aAcDCQAAAAAAAAIAAAAAAAAAAAEFAAAADHRpY2tlckxlbmd0aAUAAAAOaXNMZXR0ZXIxVmFsaWQDCQAAAAAAAAIAAAAAAAAAAAIFAAAADHRpY2tlckxlbmd0aAMFAAAADmlzTGV0dGVyMVZhbGlkBQAAAA5pc0xldHRlcjJWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAMFAAAADHRpY2tlckxlbmd0aAMDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHBQAAAA5pc0xldHRlcjNWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAQFAAAADHRpY2tlckxlbmd0aAMDAwUAAAAOaXNMZXR0ZXIxVmFsaWQFAAAADmlzTGV0dGVyMlZhbGlkBwUAAAAOaXNMZXR0ZXIzVmFsaWQHBQAAAA5pc0xldHRlcjRWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAUFAAAADHRpY2tlckxlbmd0aAMDAwMFAAAADmlzTGV0dGVyMVZhbGlkBQAAAA5pc0xldHRlcjJWYWxpZAcFAAAADmlzTGV0dGVyM1ZhbGlkBwUAAAAOaXNMZXR0ZXI0VmFsaWQHBQAAAA5pc0xldHRlcjVWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAYFAAAADHRpY2tlckxlbmd0aAMDAwMDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHBQAAAA5pc0xldHRlcjNWYWxpZAcFAAAADmlzTGV0dGVyNFZhbGlkBwUAAAAOaXNMZXR0ZXI1VmFsaWQHBQAAAA5pc0xldHRlcjZWYWxpZAcHBwcBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABAAAAB2Fzc2V0SWQEAAAADmFzc2V0UmF0aW5nS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAMYXNzZXRSYXRpbmdfBQAAAAdhc3NldElkAgAAAAJfMQQAAAAQYXNzZXRSYXRpbmdWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAAOYXNzZXRSYXRpbmdLZXkEAAAAE2Fzc2V0UmF0aW5nVHJlc2hvbGQJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MCAAAADnRpY2tlclJhdGluZ18xCQAAZwAAAAIFAAAAEGFzc2V0UmF0aW5nVmFsdWUFAAAAE2Fzc2V0UmF0aW5nVHJlc2hvbGQBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlXZWlnaHQAAAABAAAAB2Fzc2V0SWQEAAAADmFzc2V0V2VpZ2h0S2V5AgAAAAthc3NldFdlaWdodAQAAAAQYXNzZXRXZWlnaHRWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAAOYXNzZXRXZWlnaHRLZXkEAAAAE2Fzc2V0V2VpZ2h0VHJlc2hvbGQJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MCAAAADHRpY2tlcldlaWdodAkAAGcAAAACBQAAABBhc3NldFdlaWdodFZhbHVlBQAAABNhc3NldFdlaWdodFRyZXNob2xkAQAAABtpc0Fzc2V0VXBkYXRlQWxsb3dlZEJ5Vm90ZXMAAAABAAAAB2Fzc2V0SWQEAAAADWFzc2V0Vm90ZXNLZXkCAAAACmFzc2V0Vm90ZXMEAAAAD2Fzc2V0Vm90ZXNWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAANYXNzZXRWb3Rlc0tleQQAAAASYXNzZXRWb3Rlc1RyZXNob2xkCQEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgUAAAAYdG9rZW5SYXRpbmdPcmFjbGVBZGRyZXNzAgAAAAt0aWNrZXJWb3RlcwkAAGcAAAACBQAAAA9hc3NldFZvdGVzVmFsdWUFAAAAEmFzc2V0Vm90ZXNUcmVzaG9sZAEAAAAXaXNVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABAAAAB2Fzc2V0SWQDAwkBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABBQAAAAdhc3NldElkCQEAAAAcaXNBc3NldFVwZGF0ZUFsbG93ZWRCeVdlaWdodAAAAAEFAAAAB2Fzc2V0SWQHCQEAAAAbaXNBc3NldFVwZGF0ZUFsbG93ZWRCeVZvdGVzAAAAAQUAAAAHYXNzZXRJZAcBAAAAGWdldEFzc2V0SXNzdWVyRnJvbUFzc2V0SWQAAAABAAAAB2Fzc2V0SWQEAAAAByRtYXRjaDAJAAPsAAAAAQkAAlkAAAABBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVBc3NldAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQUAAAAEdW5pdAAAAAMAAAABaQEAAAAMdXBkYXRlVGlja2VyAAAAAgAAAAdhc3NldElkAAAABnRpY2tlcgQAAAAHcGF5bWVudAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAAA1jYWxsZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAD2lzc3VlclRpY2tlcktleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAANaXNzdWVyVGlja2VyXwIAAAABPAUAAAAHYXNzZXRJZAIAAAABPgQAAAAQdGlja2VyRnJvbU9yYWNsZQkABB0AAAACBQAAABx0aWNrZXJDYXRhbG9ndWVPcmFjbGVBZGRyZXNzBQAAAAZ0aWNrZXIEAAAAEWFzc2V0SXNzdWVyQWRyZXNzCQAEJQAAAAEICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQkAAlkAAAABBQAAAAdhc3NldElkAgAAACdlcnJvciM2LiB0aGVyZSBpcyBubyBhc3NldCB3aXRoIHN1Y2ggaWQAAAAGaXNzdWVyAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAMJAABnAAAAAggFAAAAB3BheW1lbnQAAAAGYW1vdW50BQAAABF0aWNrZXJVcGRhdGVQcmljZQMJAAAAAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAARYXNzZXRJc3N1ZXJBZHJlc3MDCQEAAAAXaXNVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABBQAAAAdhc3NldElkAwkAAAAAAAACBQAAABB0aWNrZXJGcm9tT3JhY2xlBQAAAAR1bml0AwkBAAAADWlzVmFsaWRUaWNrZXIAAAABBQAAAAZ0aWNrZXIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAD2lzc3VlclRpY2tlcktleQUAAAAGdGlja2VyBQAAAANuaWwJAAACAAAAAQIAAAA/ZXJyb3IjNS4gVGlja2VyIHNob3VsZCBjb25zaXN0IG9mIDEtNiBjYXBpdGFsIExhdGluIGNoYXJhY3RlcnMuCQAAAgAAAAECAAAAMGVycm9yIzQuIEFzc2V0IHdpdGggc3VjaCB0aWNrZXIgaXMgYWxyZWFkeSBleGlzdAkAAAIAAAABAgAAABplcnJvciMzLiBUb28gbGl0dGxlIHJhdGluZwkAAAIAAAABAgAAADJlcnJvciMyLiBPbmx5IGFzc2V0IGlzc3VlciBjYW4gdXBkYXRlIGFzc2V0IHRpY2tlcgkAAAIAAAABAgAAAD5lcnJvciMyLiBJbnN1ZmZpY2llbnQgcGF5bWVudCBmb3IgYXNzZXQgdGlja2VyIHVwZGF0ZSBzZXJ2aWNlLgkAAAIAAAABAgAAAC5lcnJvciMxLiBUaGUgc2VydmljZSBjYW4gb25seSBiZSBwYWlkIGluIHdhdmVzAAAAAWkBAAAAEXVwZGF0ZURlc2NyaXB0aW9uAAAAAgAAAAdhc3NldElkAAAAC2Rlc2NyaXB0aW9uBAAAAAdwYXltZW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAADWNhbGxlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAUaXNzdWVyRGVzY3JpcHRpb25LZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEmlzc3VlckRlc2NyaXB0aW9uXwIAAAABPAUAAAAHYXNzZXRJZAIAAAABPgQAAAARYXNzZXRJc3N1ZXJBZHJlc3MJAAQlAAAAAQgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABCQACWQAAAAEFAAAAB2Fzc2V0SWQCAAAAJ2Vycm9yIzYuIHRoZXJlIGlzIG5vIGFzc2V0IHdpdGggc3VjaCBpZAAAAAZpc3N1ZXIDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkAwkAAGcAAAACCAUAAAAHcGF5bWVudAAAAAZhbW91bnQFAAAAFmRlc2NyaXB0aW9uVXBkYXRlUHJpY2UDCQAAAAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAAEWFzc2V0SXNzdWVyQWRyZXNzCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABRpc3N1ZXJEZXNjcmlwdGlvbktleQUAAAALZGVzY3JpcHRpb24FAAAAA25pbAkAAAIAAAABAgAAADdlcnJvciM2LiBPbmx5IGFzc2V0IGlzc3VlciBjYW4gdXBkYXRlIGFzc2V0IGRlc2NyaXB0aW9uCQAAAgAAAAECAAAAQ2Vycm9yIzcuIEluc3VmZmljaWVudCBwYXltZW50IGZvciBhc3NldCBkZXNjcmlwdGlvbiB1cGRhdGUgc2VydmljZS4JAAACAAAAAQIAAAAuZXJyb3IjMS4gVGhlIHNlcnZpY2UgY2FuIG9ubHkgYmUgcGFpZCBpbiB3YXZlcwAAAAFpAQAAAAp1cGRhdGVMaW5rAAAAAgAAAAdhc3NldElkAAAABGxpbmsEAAAAB3BheW1lbnQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAA1pc3N1ZXJMaW5rS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtpc3N1ZXJMaW5rXwIAAAABPAUAAAAHYXNzZXRJZAIAAAABPgQAAAARYXNzZXRJc3N1ZXJBZHJlc3MJAAQlAAAAAQgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABCQACWQAAAAEFAAAAB2Fzc2V0SWQCAAAAJ2Vycm9yIzYuIHRoZXJlIGlzIG5vIGFzc2V0IHdpdGggc3VjaCBpZAAAAAZpc3N1ZXIDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkAwkAAGcAAAACCAUAAAAHcGF5bWVudAAAAAZhbW91bnQFAAAAD2xpbmtVcGRhdGVQcmljZQMJAAAAAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAARYXNzZXRJc3N1ZXJBZHJlc3MJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADWlzc3VlckxpbmtLZXkFAAAABGxpbmsFAAAAA25pbAkAAAIAAAABAgAAADBlcnJvciM2LiBPbmx5IGFzc2V0IGlzc3VlciBjYW4gdXBkYXRlIGFzc2V0IGxpbmsJAAACAAAAAQIAAAA8ZXJyb3IjNy4gSW5zdWZmaWNpZW50IHBheW1lbnQgZm9yIGFzc2V0IGxpbmsgdXBkYXRlIHNlcnZpY2UuCQAAAgAAAAECAAAALmVycm9yIzEuIFRoZSBzZXJ2aWNlIGNhbiBvbmx5IGJlIHBhaWQgaW4gd2F2ZXMAAAAAiFvgSg==", "chainId": 84, "height": 659958, "spentComplexity": 0 } View: original | compacted Prev: Ce6aVNW1X32V4ZS5sTW2XVusyk6pPxmjEmtJPS9wU3gk Next: 75vfSfD3irh7nZD27qgT1U21DDQFw9EguZerkS2cRh9M Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let descriptionUpdatePrice = 100000000
4+let wvs = 100000000
55
6-let linkUpdatePrice = 100000000
6+let tickerAllowedLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
77
8-let tickerUpdatePrice = 200000000
8+let tickerExample = "BTC"
9+
10+let tickerMinLength = 1
11+
12+let tickerMaxLength = 6
13+
14+let descriptionUpdatePrice = (1 * wvs)
15+
16+let linkUpdatePrice = (1 * wvs)
17+
18+let tickerUpdatePrice = (2 * wvs)
19+
20+let tickerCatalogueOracleAddress = addressFromStringValue("3MxHxW5VWq4KrWcbhFfxKrafXm4mL6rZHfj")
21+
22+let tokenRatingOracleAddress = addressFromStringValue("3NADqHoLMbMTfXdP2TeBBSx5mQXePVj3KZm")
23+
24+func getIntegerFromAccount (accountAddress,key) = match getInteger(accountAddress, key) {
25+ case i: Int =>
26+ i
27+ case _ =>
28+ 0
29+}
30+
31+
32+func isSubstrExist (str,substr) = match indexOf(str, substr) {
33+ case index: Int =>
34+ true
35+ case index: Unit =>
36+ false
37+ case _ =>
38+ throw()
39+}
40+
41+
42+func assetIdFromString (assetId) = if (if ((assetId == "WAVES"))
43+ then true
44+ else (assetId == ""))
45+ then unit
46+ else fromBase58String(assetId)
47+
48+
49+func isValidTicker (ticker) = {
50+ let tickerLetters = split(ticker, "")
51+ let tickerLength = size(tickerLetters)
52+ let isLetter1Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[0])
53+ let isLetter2Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[1])
54+ let isLetter3Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[2])
55+ let isLetter4Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[3])
56+ let isLetter5Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[4])
57+ let isLetter6Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[5])
58+ if ((ticker != ""))
59+ then if (if ((tickerLength >= tickerMinLength))
60+ then (tickerMaxLength >= tickerLength)
61+ else false)
62+ then if ((1 == tickerLength))
63+ then isLetter1Valid
64+ else if ((2 == tickerLength))
65+ then if (isLetter1Valid)
66+ then isLetter2Valid
67+ else false
68+ else if ((3 == tickerLength))
69+ then if (if (isLetter1Valid)
70+ then isLetter2Valid
71+ else false)
72+ then isLetter3Valid
73+ else false
74+ else if ((4 == tickerLength))
75+ then if (if (if (isLetter1Valid)
76+ then isLetter2Valid
77+ else false)
78+ then isLetter3Valid
79+ else false)
80+ then isLetter4Valid
81+ else false
82+ else if ((5 == tickerLength))
83+ then if (if (if (if (isLetter1Valid)
84+ then isLetter2Valid
85+ else false)
86+ then isLetter3Valid
87+ else false)
88+ then isLetter4Valid
89+ else false)
90+ then isLetter5Valid
91+ else false
92+ else if ((6 == tickerLength))
93+ then if (if (if (if (if (isLetter1Valid)
94+ then isLetter2Valid
95+ else false)
96+ then isLetter3Valid
97+ else false)
98+ then isLetter4Valid
99+ else false)
100+ then isLetter5Valid
101+ else false)
102+ then isLetter6Valid
103+ else false
104+ else false
105+ else false
106+ else false
107+ }
108+
109+
110+func isAssetUpdateAllowedByRating (assetId) = {
111+ let assetRatingKey = (("assetRating_" + assetId) + "_1")
112+ let assetRatingValue = getIntegerFromAccount(tokenRatingOracleAddress, assetRatingKey)
113+ let assetRatingTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerRating_1")
114+ (assetRatingValue >= assetRatingTreshold)
115+ }
116+
117+
118+func isAssetUpdateAllowedByWeight (assetId) = {
119+ let assetWeightKey = "assetWeight"
120+ let assetWeightValue = getIntegerFromAccount(tokenRatingOracleAddress, assetWeightKey)
121+ let assetWeightTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerWeight")
122+ (assetWeightValue >= assetWeightTreshold)
123+ }
124+
125+
126+func isAssetUpdateAllowedByVotes (assetId) = {
127+ let assetVotesKey = "assetVotes"
128+ let assetVotesValue = getIntegerFromAccount(tokenRatingOracleAddress, assetVotesKey)
129+ let assetVotesTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerVotes")
130+ (assetVotesValue >= assetVotesTreshold)
131+ }
132+
133+
134+func isUpdateAllowedByRating (assetId) = if (if (isAssetUpdateAllowedByRating(assetId))
135+ then isAssetUpdateAllowedByWeight(assetId)
136+ else false)
137+ then isAssetUpdateAllowedByVotes(assetId)
138+ else false
139+
140+
141+func getAssetIssuerFromAssetId (assetId) = match assetInfo(fromBase58String(assetId)) {
142+ case a: Asset =>
143+ a
144+ case _ =>
145+ unit
146+}
147+
9148
10149 @Callable(i)
11-func updateDescription (assetId,issuerAddress,description) = {
12- let asset = assetInfo(value(fromBase58String(assetId)))
150+func updateTicker (assetId,ticker) = {
151+ let payment = extract(i.payment)
152+ let callerAddress = toBase58String(i.caller.bytes)
153+ let issuerTickerKey = ((("issuerTicker_" + "<") + assetId) + ">")
154+ let tickerFromOracle = getString(tickerCatalogueOracleAddress, ticker)
155+ let assetIssuerAdress = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "error#6. there is no asset with such id").issuer)
156+ if (!(isDefined(payment.assetId)))
157+ then if ((payment.amount >= tickerUpdatePrice))
158+ then if ((callerAddress == assetIssuerAdress))
159+ then if (isUpdateAllowedByRating(assetId))
160+ then if ((tickerFromOracle == unit))
161+ then if (isValidTicker(ticker))
162+ then WriteSet([DataEntry(issuerTickerKey, ticker)])
163+ else throw("error#5. Ticker should consist of 1-6 capital Latin characters.")
164+ else throw("error#4. Asset with such ticker is already exist")
165+ else throw("error#3. Too little rating")
166+ else throw("error#2. Only asset issuer can update asset ticker")
167+ else throw("error#2. Insufficient payment for asset ticker update service.")
168+ else throw("error#1. The service can only be paid in waves")
169+ }
170+
171+
172+
173+@Callable(i)
174+func updateDescription (assetId,description) = {
13175 let payment = extract(i.payment)
14176 let callerAddress = toBase58String(i.caller.bytes)
15177 let issuerDescriptionKey = ((("issuerDescription_" + "<") + assetId) + ">")
16- if (isDefined(payment.assetId))
17- then throw("error#1. The service can only be paid in waves")
18- else if ((payment.amount >= descriptionUpdatePrice))
19- then if ((callerAddress == issuerAddress))
20- then WriteSet([DataEntry("issuerDescriptionKey", description)])
21- else throw("error#3. Only asset issuer can update asset description")
22- else throw("error#2. Only asset issuer can update asset description")
178+ let assetIssuerAdress = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "error#6. there is no asset with such id").issuer)
179+ if (!(isDefined(payment.assetId)))
180+ then if ((payment.amount >= descriptionUpdatePrice))
181+ then if ((callerAddress == assetIssuerAdress))
182+ then WriteSet([DataEntry(issuerDescriptionKey, description)])
183+ else throw("error#6. Only asset issuer can update asset description")
184+ else throw("error#7. Insufficient payment for asset description update service.")
185+ else throw("error#1. The service can only be paid in waves")
186+ }
187+
188+
189+
190+@Callable(i)
191+func updateLink (assetId,link) = {
192+ let payment = extract(i.payment)
193+ let callerAddress = toBase58String(i.caller.bytes)
194+ let issuerLinkKey = ((("issuerLink_" + "<") + assetId) + ">")
195+ let assetIssuerAdress = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "error#6. there is no asset with such id").issuer)
196+ if (!(isDefined(payment.assetId)))
197+ then if ((payment.amount >= linkUpdatePrice))
198+ then if ((callerAddress == assetIssuerAdress))
199+ then WriteSet([DataEntry(issuerLinkKey, link)])
200+ else throw("error#6. Only asset issuer can update asset link")
201+ else throw("error#7. Insufficient payment for asset link update service.")
202+ else throw("error#1. The service can only be paid in waves")
23203 }
24204
25205

github/deemru/w8io/3ef1775 
47.65 ms