tx · Ef9JmDLAzcP1P8TfkmSayKu6iYbb4uofS6Xj9BipsdBN

3NAg879tKUJh949h21umkwiaRQhwZftz1BE:  -0.05000000 Waves

2019.09.03 18:07 [659961] smart account 3NAg879tKUJh949h21umkwiaRQhwZftz1BE > SELF 0.00000000 Waves

{ "type": 13, "id": "Ef9JmDLAzcP1P8TfkmSayKu6iYbb4uofS6Xj9BipsdBN", "fee": 5000000, "feeAssetId": null, "timestamp": 1567523245541, "version": 1, "sender": "3NAg879tKUJh949h21umkwiaRQhwZftz1BE", "senderPublicKey": "BqY2jhkQCcbidtQdQZu6f9RV3AkFAS8VPToHxwYu1KdJ", "proofs": [ "67Rreeq4vRDCE2eZy7coTeqNdGsKnReJCrXKtUELYS9n3yFU6gEZLNxsNJRBLGDKZJpvxuL82j6kfRranDpQLfBZ" ], "script": "base64:AAIDAAAAAAAAAAAAAAATAAAAAAN3dnMAAAAAAAX14QAAAAAAFHRpY2tlckFsbG93ZWRMZXR0ZXJzAgAAABpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWgAAAAANdGlja2VyRXhhbXBsZQIAAAADQlRDAAAAAA90aWNrZXJNaW5MZW5ndGgAAAAAAAAAAAEAAAAAD3RpY2tlck1heExlbmd0aAAAAAAAAAAABgAAAAAWZGVzY3JpcHRpb25VcGRhdGVQcmljZQkAAGgAAAACAAAAAAAAAAABBQAAAAN3dnMAAAAAD2xpbmtVcGRhdGVQcmljZQkAAGgAAAACAAAAAAAAAAABBQAAAAN3dnMAAAAAEXRpY2tlclVwZGF0ZVByaWNlCQAAaAAAAAIAAAAAAAAAAAIFAAAAA3d2cwAAAAAcdGlja2VyQ2F0YWxvZ3VlT3JhY2xlQWRkcmVzcwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABAgAAACMzTXhIeFc1VldxNEtyV2NiaEZmeEtyYWZYbTRtTDZyWkhmagAAAAAYdG9rZW5SYXRpbmdPcmFjbGVBZGRyZXNzCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAECAAAAIzNOQURxSG9MTWJNVGZYZFAyVGVCQlN4NW1RWGVQVmozS1ptAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACAAAADmFjY291bnRBZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAA5hY2NvdW50QWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWkFAAAAByRtYXRjaDAFAAAAAWkAAAAAAAAAAAABAAAADWlzU3Vic3RyRXhpc3QAAAACAAAAA3N0cgAAAAZzdWJzdHIEAAAAByRtYXRjaDAJAASzAAAAAgUAAAADc3RyBQAAAAZzdWJzdHIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAFaW5kZXgFAAAAByRtYXRjaDAGAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAVpbmRleAUAAAAHJG1hdGNoMAcJAQAAAAV0aHJvdwAAAAABAAAAEWFzc2V0SWRGcm9tU3RyaW5nAAAAAQAAAAdhc3NldElkAwMJAAAAAAAAAgUAAAAHYXNzZXRJZAIAAAAFV0FWRVMGCQAAAAAAAAIFAAAAB2Fzc2V0SWQCAAAAAAUAAAAEdW5pdAkAAlkAAAABBQAAAAdhc3NldElkAQAAAA1pc1ZhbGlkVGlja2VyAAAAAQAAAAZ0aWNrZXIEAAAADXRpY2tlckxldHRlcnMJAAS1AAAAAgUAAAAGdGlja2VyAgAAAAAEAAAADHRpY2tlckxlbmd0aAkAAZAAAAABBQAAAA10aWNrZXJMZXR0ZXJzBAAAAA5pc0xldHRlcjFWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAABAAAAA5pc0xldHRlcjJWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAABBAAAAA5pc0xldHRlcjNWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAACBAAAAA5pc0xldHRlcjRWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAADBAAAAA5pc0xldHRlcjVWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAEBAAAAA5pc0xldHRlcjZWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAFAwkBAAAAAiE9AAAAAgUAAAAGdGlja2VyAgAAAAADAwkAAGcAAAACBQAAAAx0aWNrZXJMZW5ndGgFAAAAD3RpY2tlck1pbkxlbmd0aAkAAGcAAAACBQAAAA90aWNrZXJNYXhMZW5ndGgFAAAADHRpY2tlckxlbmd0aAcDCQAAAAAAAAIAAAAAAAAAAAEFAAAADHRpY2tlckxlbmd0aAUAAAAOaXNMZXR0ZXIxVmFsaWQDCQAAAAAAAAIAAAAAAAAAAAIFAAAADHRpY2tlckxlbmd0aAMFAAAADmlzTGV0dGVyMVZhbGlkBQAAAA5pc0xldHRlcjJWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAMFAAAADHRpY2tlckxlbmd0aAMDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHBQAAAA5pc0xldHRlcjNWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAQFAAAADHRpY2tlckxlbmd0aAMDAwUAAAAOaXNMZXR0ZXIxVmFsaWQFAAAADmlzTGV0dGVyMlZhbGlkBwUAAAAOaXNMZXR0ZXIzVmFsaWQHBQAAAA5pc0xldHRlcjRWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAUFAAAADHRpY2tlckxlbmd0aAMDAwMFAAAADmlzTGV0dGVyMVZhbGlkBQAAAA5pc0xldHRlcjJWYWxpZAcFAAAADmlzTGV0dGVyM1ZhbGlkBwUAAAAOaXNMZXR0ZXI0VmFsaWQHBQAAAA5pc0xldHRlcjVWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAYFAAAADHRpY2tlckxlbmd0aAMDAwMDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHBQAAAA5pc0xldHRlcjNWYWxpZAcFAAAADmlzTGV0dGVyNFZhbGlkBwUAAAAOaXNMZXR0ZXI1VmFsaWQHBQAAAA5pc0xldHRlcjZWYWxpZAcHBwcBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABAAAAB2Fzc2V0SWQEAAAADmFzc2V0UmF0aW5nS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAMYXNzZXRSYXRpbmdfBQAAAAdhc3NldElkAgAAAAJfMQQAAAAQYXNzZXRSYXRpbmdWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAAOYXNzZXRSYXRpbmdLZXkEAAAAE2Fzc2V0UmF0aW5nVHJlc2hvbGQJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MCAAAADnRpY2tlclJhdGluZ18xCQAAZwAAAAIFAAAAEGFzc2V0UmF0aW5nVmFsdWUFAAAAE2Fzc2V0UmF0aW5nVHJlc2hvbGQBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlXZWlnaHQAAAABAAAAB2Fzc2V0SWQEAAAADmFzc2V0V2VpZ2h0S2V5AgAAAAthc3NldFdlaWdodAQAAAAQYXNzZXRXZWlnaHRWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAAOYXNzZXRXZWlnaHRLZXkEAAAAE2Fzc2V0V2VpZ2h0VHJlc2hvbGQJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MCAAAADHRpY2tlcldlaWdodAkAAGcAAAACBQAAABBhc3NldFdlaWdodFZhbHVlBQAAABNhc3NldFdlaWdodFRyZXNob2xkAQAAABtpc0Fzc2V0VXBkYXRlQWxsb3dlZEJ5Vm90ZXMAAAABAAAAB2Fzc2V0SWQEAAAADWFzc2V0Vm90ZXNLZXkCAAAACmFzc2V0Vm90ZXMEAAAAD2Fzc2V0Vm90ZXNWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAANYXNzZXRWb3Rlc0tleQQAAAASYXNzZXRWb3Rlc1RyZXNob2xkCQEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgUAAAAYdG9rZW5SYXRpbmdPcmFjbGVBZGRyZXNzAgAAAAt0aWNrZXJWb3RlcwkAAGcAAAACBQAAAA9hc3NldFZvdGVzVmFsdWUFAAAAEmFzc2V0Vm90ZXNUcmVzaG9sZAEAAAAXaXNVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABAAAAB2Fzc2V0SWQDAwkBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABBQAAAAdhc3NldElkCQEAAAAcaXNBc3NldFVwZGF0ZUFsbG93ZWRCeVdlaWdodAAAAAEFAAAAB2Fzc2V0SWQHCQEAAAAbaXNBc3NldFVwZGF0ZUFsbG93ZWRCeVZvdGVzAAAAAQUAAAAHYXNzZXRJZAcBAAAAGWdldEFzc2V0SXNzdWVyRnJvbUFzc2V0SWQAAAABAAAAB2Fzc2V0SWQEAAAAByRtYXRjaDAJAAPsAAAAAQkAAlkAAAABBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVBc3NldAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQUAAAAEdW5pdAAAAAMAAAABaQEAAAAMdXBkYXRlVGlja2VyAAAAAgAAAAdhc3NldElkAAAABnRpY2tlcgQAAAAHcGF5bWVudAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAAA1jYWxsZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAD2lzc3VlclRpY2tlcktleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAANaXNzdWVyVGlja2VyXwIAAAABPAUAAAAHYXNzZXRJZAIAAAABPgQAAAAQdGlja2VyRnJvbU9yYWNsZQkABB0AAAACBQAAABx0aWNrZXJDYXRhbG9ndWVPcmFjbGVBZGRyZXNzBQAAAAZ0aWNrZXIEAAAAEWFzc2V0SXNzdWVyQWRyZXNzCQAEJQAAAAEICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQkAAlkAAAABBQAAAAdhc3NldElkAgAAACdlcnJvciM2LiB0aGVyZSBpcyBubyBhc3NldCB3aXRoIHN1Y2ggaWQAAAAGaXNzdWVyAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAMJAABnAAAAAggFAAAAB3BheW1lbnQAAAAGYW1vdW50BQAAABF0aWNrZXJVcGRhdGVQcmljZQMJAAAAAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAARYXNzZXRJc3N1ZXJBZHJlc3MDCQEAAAAXaXNVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABBQAAAAdhc3NldElkAwkAAAAAAAACBQAAABB0aWNrZXJGcm9tT3JhY2xlBQAAAAR1bml0AwkBAAAADWlzVmFsaWRUaWNrZXIAAAABBQAAAAZ0aWNrZXIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAD2lzc3VlclRpY2tlcktleQUAAAAGdGlja2VyBQAAAANuaWwJAAACAAAAAQIAAAA/ZXJyb3IjNS4gVGlja2VyIHNob3VsZCBjb25zaXN0IG9mIDEtNiBjYXBpdGFsIExhdGluIGNoYXJhY3RlcnMuCQAAAgAAAAECAAAAMGVycm9yIzQuIEFzc2V0IHdpdGggc3VjaCB0aWNrZXIgaXMgYWxyZWFkeSBleGlzdAkAAAIAAAABAgAAABplcnJvciMzLiBUb28gbGl0dGxlIHJhdGluZwkAAAIAAAABAgAAADJlcnJvciMyLiBPbmx5IGFzc2V0IGlzc3VlciBjYW4gdXBkYXRlIGFzc2V0IHRpY2tlcgkAAAIAAAABAgAAAD5lcnJvciMyLiBJbnN1ZmZpY2llbnQgcGF5bWVudCBmb3IgYXNzZXQgdGlja2VyIHVwZGF0ZSBzZXJ2aWNlLgkAAAIAAAABAgAAAC5lcnJvciMxLiBUaGUgc2VydmljZSBjYW4gb25seSBiZSBwYWlkIGluIHdhdmVzAAAAAWkBAAAAEXVwZGF0ZURlc2NyaXB0aW9uAAAAAgAAAAdhc3NldElkAAAAC2Rlc2NyaXB0aW9uBAAAAAdwYXltZW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAADWNhbGxlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAUaXNzdWVyRGVzY3JpcHRpb25LZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEmlzc3VlckRlc2NyaXB0aW9uXwIAAAABPAUAAAAHYXNzZXRJZAIAAAABPgQAAAARYXNzZXRJc3N1ZXJBZHJlc3MJAAQlAAAAAQgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABCQACWQAAAAEFAAAAB2Fzc2V0SWQCAAAAJ2Vycm9yIzYuIHRoZXJlIGlzIG5vIGFzc2V0IHdpdGggc3VjaCBpZAAAAAZpc3N1ZXIDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkAwkAAGcAAAACCAUAAAAHcGF5bWVudAAAAAZhbW91bnQFAAAAFmRlc2NyaXB0aW9uVXBkYXRlUHJpY2UDCQAAAAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAAEWFzc2V0SXNzdWVyQWRyZXNzCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABRpc3N1ZXJEZXNjcmlwdGlvbktleQUAAAALZGVzY3JpcHRpb24FAAAAA25pbAkAAAIAAAABAgAAADdlcnJvciM2LiBPbmx5IGFzc2V0IGlzc3VlciBjYW4gdXBkYXRlIGFzc2V0IGRlc2NyaXB0aW9uCQAAAgAAAAECAAAAQ2Vycm9yIzcuIEluc3VmZmljaWVudCBwYXltZW50IGZvciBhc3NldCBkZXNjcmlwdGlvbiB1cGRhdGUgc2VydmljZS4JAAACAAAAAQIAAAAuZXJyb3IjMS4gVGhlIHNlcnZpY2UgY2FuIG9ubHkgYmUgcGFpZCBpbiB3YXZlcwAAAAFpAQAAAAp1cGRhdGVMaW5rAAAAAgAAAAdhc3NldElkAAAABGxpbmsEAAAAB3BheW1lbnQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAA1pc3N1ZXJMaW5rS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtpc3N1ZXJMaW5rXwIAAAABPAUAAAAHYXNzZXRJZAIAAAABPgQAAAARYXNzZXRJc3N1ZXJBZHJlc3MJAAQlAAAAAQgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABCQACWQAAAAEFAAAAB2Fzc2V0SWQCAAAAJ2Vycm9yIzYuIHRoZXJlIGlzIG5vIGFzc2V0IHdpdGggc3VjaCBpZAAAAAZpc3N1ZXIDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkAwkAAGcAAAACCAUAAAAHcGF5bWVudAAAAAZhbW91bnQFAAAAD2xpbmtVcGRhdGVQcmljZQMJAAAAAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAARYXNzZXRJc3N1ZXJBZHJlc3MJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADWlzc3VlckxpbmtLZXkFAAAABGxpbmsFAAAAA25pbAkAAAIAAAABAgAAADBlcnJvciM2LiBPbmx5IGFzc2V0IGlzc3VlciBjYW4gdXBkYXRlIGFzc2V0IGxpbmsJAAACAAAAAQIAAAA8ZXJyb3IjNy4gSW5zdWZmaWNpZW50IHBheW1lbnQgZm9yIGFzc2V0IGxpbmsgdXBkYXRlIHNlcnZpY2UuCQAAAgAAAAECAAAALmVycm9yIzEuIFRoZSBzZXJ2aWNlIGNhbiBvbmx5IGJlIHBhaWQgaW4gd2F2ZXMAAAAAiFvgSg==", "chainId": 84, "height": 659961, "spentComplexity": 0 } View: original | compacted Prev: 2ztj82w42qDU8tnE5PPxernU6gFWNECcAyMgVuyobJqz Next: AFvGKuoWjA1HJCdg2uPy6DJU1dALUhjbjhs1MfLKDrkD Diff:
OldNewDifferences
169169 }
170170
171171
172+
173+@Callable(i)
174+func updateDescription (assetId,description) = {
175+ let payment = extract(i.payment)
176+ let callerAddress = toBase58String(i.caller.bytes)
177+ let issuerDescriptionKey = ((("issuerDescription_" + "<") + assetId) + ">")
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")
203+ }
204+
205+
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 getIntegerFromAccount (accountAddress,key) = match getInteger(accountAddress, key) {
2525 case i: Int =>
2626 i
2727 case _ =>
2828 0
2929 }
3030
3131
3232 func isSubstrExist (str,substr) = match indexOf(str, substr) {
3333 case index: Int =>
3434 true
3535 case index: Unit =>
3636 false
3737 case _ =>
3838 throw()
3939 }
4040
4141
4242 func assetIdFromString (assetId) = if (if ((assetId == "WAVES"))
4343 then true
4444 else (assetId == ""))
4545 then unit
4646 else fromBase58String(assetId)
4747
4848
4949 func isValidTicker (ticker) = {
5050 let tickerLetters = split(ticker, "")
5151 let tickerLength = size(tickerLetters)
5252 let isLetter1Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[0])
5353 let isLetter2Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[1])
5454 let isLetter3Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[2])
5555 let isLetter4Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[3])
5656 let isLetter5Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[4])
5757 let isLetter6Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[5])
5858 if ((ticker != ""))
5959 then if (if ((tickerLength >= tickerMinLength))
6060 then (tickerMaxLength >= tickerLength)
6161 else false)
6262 then if ((1 == tickerLength))
6363 then isLetter1Valid
6464 else if ((2 == tickerLength))
6565 then if (isLetter1Valid)
6666 then isLetter2Valid
6767 else false
6868 else if ((3 == tickerLength))
6969 then if (if (isLetter1Valid)
7070 then isLetter2Valid
7171 else false)
7272 then isLetter3Valid
7373 else false
7474 else if ((4 == tickerLength))
7575 then if (if (if (isLetter1Valid)
7676 then isLetter2Valid
7777 else false)
7878 then isLetter3Valid
7979 else false)
8080 then isLetter4Valid
8181 else false
8282 else if ((5 == tickerLength))
8383 then if (if (if (if (isLetter1Valid)
8484 then isLetter2Valid
8585 else false)
8686 then isLetter3Valid
8787 else false)
8888 then isLetter4Valid
8989 else false)
9090 then isLetter5Valid
9191 else false
9292 else if ((6 == tickerLength))
9393 then if (if (if (if (if (isLetter1Valid)
9494 then isLetter2Valid
9595 else false)
9696 then isLetter3Valid
9797 else false)
9898 then isLetter4Valid
9999 else false)
100100 then isLetter5Valid
101101 else false)
102102 then isLetter6Valid
103103 else false
104104 else false
105105 else false
106106 else false
107107 }
108108
109109
110110 func isAssetUpdateAllowedByRating (assetId) = {
111111 let assetRatingKey = (("assetRating_" + assetId) + "_1")
112112 let assetRatingValue = getIntegerFromAccount(tokenRatingOracleAddress, assetRatingKey)
113113 let assetRatingTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerRating_1")
114114 (assetRatingValue >= assetRatingTreshold)
115115 }
116116
117117
118118 func isAssetUpdateAllowedByWeight (assetId) = {
119119 let assetWeightKey = "assetWeight"
120120 let assetWeightValue = getIntegerFromAccount(tokenRatingOracleAddress, assetWeightKey)
121121 let assetWeightTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerWeight")
122122 (assetWeightValue >= assetWeightTreshold)
123123 }
124124
125125
126126 func isAssetUpdateAllowedByVotes (assetId) = {
127127 let assetVotesKey = "assetVotes"
128128 let assetVotesValue = getIntegerFromAccount(tokenRatingOracleAddress, assetVotesKey)
129129 let assetVotesTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerVotes")
130130 (assetVotesValue >= assetVotesTreshold)
131131 }
132132
133133
134134 func isUpdateAllowedByRating (assetId) = if (if (isAssetUpdateAllowedByRating(assetId))
135135 then isAssetUpdateAllowedByWeight(assetId)
136136 else false)
137137 then isAssetUpdateAllowedByVotes(assetId)
138138 else false
139139
140140
141141 func getAssetIssuerFromAssetId (assetId) = match assetInfo(fromBase58String(assetId)) {
142142 case a: Asset =>
143143 a
144144 case _ =>
145145 unit
146146 }
147147
148148
149149 @Callable(i)
150150 func updateTicker (assetId,ticker) = {
151151 let payment = extract(i.payment)
152152 let callerAddress = toBase58String(i.caller.bytes)
153153 let issuerTickerKey = ((("issuerTicker_" + "<") + assetId) + ">")
154154 let tickerFromOracle = getString(tickerCatalogueOracleAddress, ticker)
155155 let assetIssuerAdress = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "error#6. there is no asset with such id").issuer)
156156 if (!(isDefined(payment.assetId)))
157157 then if ((payment.amount >= tickerUpdatePrice))
158158 then if ((callerAddress == assetIssuerAdress))
159159 then if (isUpdateAllowedByRating(assetId))
160160 then if ((tickerFromOracle == unit))
161161 then if (isValidTicker(ticker))
162162 then WriteSet([DataEntry(issuerTickerKey, ticker)])
163163 else throw("error#5. Ticker should consist of 1-6 capital Latin characters.")
164164 else throw("error#4. Asset with such ticker is already exist")
165165 else throw("error#3. Too little rating")
166166 else throw("error#2. Only asset issuer can update asset ticker")
167167 else throw("error#2. Insufficient payment for asset ticker update service.")
168168 else throw("error#1. The service can only be paid in waves")
169169 }
170170
171171
172+
173+@Callable(i)
174+func updateDescription (assetId,description) = {
175+ let payment = extract(i.payment)
176+ let callerAddress = toBase58String(i.caller.bytes)
177+ let issuerDescriptionKey = ((("issuerDescription_" + "<") + assetId) + ">")
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")
203+ }
204+
205+

github/deemru/w8io/3ef1775 
50.51 ms