tx · AFvGKuoWjA1HJCdg2uPy6DJU1dALUhjbjhs1MfLKDrkD

3NAg879tKUJh949h21umkwiaRQhwZftz1BE:  -0.05000000 Waves

2019.09.04 11:26 [661005] smart account 3NAg879tKUJh949h21umkwiaRQhwZftz1BE > SELF 0.00000000 Waves

{ "type": 13, "id": "AFvGKuoWjA1HJCdg2uPy6DJU1dALUhjbjhs1MfLKDrkD", "fee": 5000000, "feeAssetId": null, "timestamp": 1567585585083, "version": 1, "sender": "3NAg879tKUJh949h21umkwiaRQhwZftz1BE", "senderPublicKey": "BqY2jhkQCcbidtQdQZu6f9RV3AkFAS8VPToHxwYu1KdJ", "proofs": [ "47vm1qDTCVKGakgu6dNKeUQs57mPd1azszV1iH5HKnjLJ5Qt5Pm2rqhXmG3vSRKreuHG88v5tQTBmqSpPAtQHeDL" ], "script": "base64:AAIDAAAAAAAAAAAAAAARAAAAAAN3dnMAAAAAAAX14QAAAAAAFmRlc2NyaXB0aW9uVXBkYXRlUHJpY2UJAABoAAAAAgAAAAAAAAAAAQUAAAADd3ZzAAAAAA9saW5rVXBkYXRlUHJpY2UJAABoAAAAAgAAAAAAAAAAAQUAAAADd3ZzAAAAABF0aWNrZXJVcGRhdGVQcmljZQkAAGgAAAACAAAAAAAAAAACBQAAAAN3dnMAAAAAD3RpY2tlck1pbkxlbmd0aAAAAAAAAAAAAQAAAAAPdGlja2VyTWF4TGVuZ3RoAAAAAAAAAAAGAAAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwIAAAAaQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoAAAAAHHRpY2tlckNhdGFsb2d1ZU9yYWNsZUFkZHJlc3MJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQIAAAAjM014SHhXNVZXcTRLcldjYmhGZnhLcmFmWG00bUw2clpIZmoAAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABAgAAACMzTkFEcUhvTE1iTVRmWGRQMlRlQkJTeDVtUVhlUFZqM0tabQEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgAAAA5hY2NvdW50QWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAOYWNjb3VudEFkZHJlc3MFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFpBQAAAAckbWF0Y2gwBQAAAAFpAAAAAAAAAAAAAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgAAAANzdHIAAAAGc3Vic3RyBAAAAAckbWF0Y2gwCQAEswAAAAIFAAAAA3N0cgUAAAAGc3Vic3RyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAABWluZGV4BQAAAAckbWF0Y2gwBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFaW5kZXgFAAAAByRtYXRjaDAHCQEAAAAFdGhyb3cAAAAAAQAAAA1pc1ZhbGlkVGlja2VyAAAAAQAAAAZ0aWNrZXIEAAAADXRpY2tlckxldHRlcnMJAAS1AAAAAgUAAAAGdGlja2VyAgAAAAAEAAAADHRpY2tlckxlbmd0aAkAAZAAAAABBQAAAA10aWNrZXJMZXR0ZXJzBAAAAA5pc0xldHRlcjFWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAABAAAAA5pc0xldHRlcjJWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAABBAAAAA5pc0xldHRlcjNWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAACBAAAAA5pc0xldHRlcjRWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAADBAAAAA5pc0xldHRlcjVWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAEBAAAAA5pc0xldHRlcjZWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAFAwkBAAAAAiE9AAAAAgUAAAAGdGlja2VyAgAAAAADAwkAAGcAAAACBQAAAAx0aWNrZXJMZW5ndGgFAAAAD3RpY2tlck1pbkxlbmd0aAkAAGcAAAACBQAAAA90aWNrZXJNYXhMZW5ndGgFAAAADHRpY2tlckxlbmd0aAcDCQAAAAAAAAIAAAAAAAAAAAEFAAAADHRpY2tlckxlbmd0aAUAAAAOaXNMZXR0ZXIxVmFsaWQDCQAAAAAAAAIAAAAAAAAAAAIFAAAADHRpY2tlckxlbmd0aAMFAAAADmlzTGV0dGVyMVZhbGlkBQAAAA5pc0xldHRlcjJWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAMFAAAADHRpY2tlckxlbmd0aAMDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHBQAAAA5pc0xldHRlcjNWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAQFAAAADHRpY2tlckxlbmd0aAMDAwUAAAAOaXNMZXR0ZXIxVmFsaWQFAAAADmlzTGV0dGVyMlZhbGlkBwUAAAAOaXNMZXR0ZXIzVmFsaWQHBQAAAA5pc0xldHRlcjRWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAUFAAAADHRpY2tlckxlbmd0aAMDAwMFAAAADmlzTGV0dGVyMVZhbGlkBQAAAA5pc0xldHRlcjJWYWxpZAcFAAAADmlzTGV0dGVyM1ZhbGlkBwUAAAAOaXNMZXR0ZXI0VmFsaWQHBQAAAA5pc0xldHRlcjVWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAYFAAAADHRpY2tlckxlbmd0aAMDAwMDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHBQAAAA5pc0xldHRlcjNWYWxpZAcFAAAADmlzTGV0dGVyNFZhbGlkBwUAAAAOaXNMZXR0ZXI1VmFsaWQHBQAAAA5pc0xldHRlcjZWYWxpZAcHBwcBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABAAAAB2Fzc2V0SWQEAAAADmFzc2V0UmF0aW5nS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAMYXNzZXRSYXRpbmdfBQAAAAdhc3NldElkAgAAAAJfMQQAAAAQYXNzZXRSYXRpbmdWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAAOYXNzZXRSYXRpbmdLZXkEAAAAE2Fzc2V0UmF0aW5nVHJlc2hvbGQJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MCAAAADnRpY2tlclJhdGluZ18xCQAAZwAAAAIFAAAAEGFzc2V0UmF0aW5nVmFsdWUFAAAAE2Fzc2V0UmF0aW5nVHJlc2hvbGQBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlXZWlnaHQAAAABAAAAB2Fzc2V0SWQEAAAADmFzc2V0V2VpZ2h0S2V5AgAAAAthc3NldFdlaWdodAQAAAAQYXNzZXRXZWlnaHRWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAAOYXNzZXRXZWlnaHRLZXkEAAAAE2Fzc2V0V2VpZ2h0VHJlc2hvbGQJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MCAAAADHRpY2tlcldlaWdodAkAAGcAAAACBQAAABBhc3NldFdlaWdodFZhbHVlBQAAABNhc3NldFdlaWdodFRyZXNob2xkAQAAABtpc0Fzc2V0VXBkYXRlQWxsb3dlZEJ5Vm90ZXMAAAABAAAAB2Fzc2V0SWQEAAAADWFzc2V0Vm90ZXNLZXkCAAAACmFzc2V0Vm90ZXMEAAAAD2Fzc2V0Vm90ZXNWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAANYXNzZXRWb3Rlc0tleQQAAAASYXNzZXRWb3Rlc1RyZXNob2xkCQEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgUAAAAYdG9rZW5SYXRpbmdPcmFjbGVBZGRyZXNzAgAAAAt0aWNrZXJWb3RlcwkAAGcAAAACBQAAAA9hc3NldFZvdGVzVmFsdWUFAAAAEmFzc2V0Vm90ZXNUcmVzaG9sZAEAAAAXaXNVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABAAAAB2Fzc2V0SWQDAwkBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABBQAAAAdhc3NldElkCQEAAAAcaXNBc3NldFVwZGF0ZUFsbG93ZWRCeVdlaWdodAAAAAEFAAAAB2Fzc2V0SWQHCQEAAAAbaXNBc3NldFVwZGF0ZUFsbG93ZWRCeVZvdGVzAAAAAQUAAAAHYXNzZXRJZAcBAAAAIGdldEFzc2V0SXNzdWVyQWRkcmVzc0Zyb21Bc3NldElkAAAAAQAAAAdhc3NldElkCQAEJQAAAAEICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQkAAlkAAAABBQAAAAdhc3NldElkAgAAACdlcnJvciM2LiB0aGVyZSBpcyBubyBhc3NldCB3aXRoIHN1Y2ggaWQAAAAGaXNzdWVyAAAAAwAAAAFpAQAAAAx1cGRhdGVUaWNrZXIAAAACAAAAB2Fzc2V0SWQAAAAGdGlja2VyBAAAAAdwYXltZW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAADWNhbGxlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAPaXNzdWVyVGlja2VyS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA1pc3N1ZXJUaWNrZXJfAgAAAAE8BQAAAAdhc3NldElkAgAAAAE+BAAAABB0aWNrZXJGcm9tT3JhY2xlCQAEHQAAAAIFAAAAHHRpY2tlckNhdGFsb2d1ZU9yYWNsZUFkZHJlc3MFAAAABnRpY2tlcgQAAAARYXNzZXRJc3N1ZXJBZHJlc3MJAQAAACBnZXRBc3NldElzc3VlckFkZHJlc3NGcm9tQXNzZXRJZAAAAAEFAAAAB2Fzc2V0SWQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkAwkAAGcAAAACCAUAAAAHcGF5bWVudAAAAAZhbW91bnQFAAAAEXRpY2tlclVwZGF0ZVByaWNlAwkAAAAAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAABFhc3NldElzc3VlckFkcmVzcwMJAQAAABdpc1VwZGF0ZUFsbG93ZWRCeVJhdGluZwAAAAEFAAAAB2Fzc2V0SWQDCQAAAAAAAAIFAAAAEHRpY2tlckZyb21PcmFjbGUFAAAABHVuaXQDCQEAAAANaXNWYWxpZFRpY2tlcgAAAAEFAAAABnRpY2tlcgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAPaXNzdWVyVGlja2VyS2V5BQAAAAZ0aWNrZXIFAAAAA25pbAkAAAIAAAABAgAAAD9lcnJvciM1LiBUaWNrZXIgc2hvdWxkIGNvbnNpc3Qgb2YgMS02IGNhcGl0YWwgTGF0aW4gY2hhcmFjdGVycy4JAAACAAAAAQIAAAAwZXJyb3IjNC4gQXNzZXQgd2l0aCBzdWNoIHRpY2tlciBpcyBhbHJlYWR5IGV4aXN0CQAAAgAAAAECAAAAGmVycm9yIzMuIFRvbyBsaXR0bGUgcmF0aW5nCQAAAgAAAAECAAAAMmVycm9yIzIuIE9ubHkgYXNzZXQgaXNzdWVyIGNhbiB1cGRhdGUgYXNzZXQgdGlja2VyCQAAAgAAAAECAAAAPmVycm9yIzIuIEluc3VmZmljaWVudCBwYXltZW50IGZvciBhc3NldCB0aWNrZXIgdXBkYXRlIHNlcnZpY2UuCQAAAgAAAAECAAAALmVycm9yIzEuIFRoZSBzZXJ2aWNlIGNhbiBvbmx5IGJlIHBhaWQgaW4gd2F2ZXMAAAABaQEAAAARdXBkYXRlRGVzY3JpcHRpb24AAAACAAAAB2Fzc2V0SWQAAAALZGVzY3JpcHRpb24EAAAAB3BheW1lbnQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAABRpc3N1ZXJEZXNjcmlwdGlvbktleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAASaXNzdWVyRGVzY3JpcHRpb25fAgAAAAE8BQAAAAdhc3NldElkAgAAAAE+BAAAABFhc3NldElzc3VlckFkcmVzcwkBAAAAIGdldEFzc2V0SXNzdWVyQWRkcmVzc0Zyb21Bc3NldElkAAAAAQUAAAAHYXNzZXRJZAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQDCQAAZwAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAWZGVzY3JpcHRpb25VcGRhdGVQcmljZQMJAAAAAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAARYXNzZXRJc3N1ZXJBZHJlc3MJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAFGlzc3VlckRlc2NyaXB0aW9uS2V5BQAAAAtkZXNjcmlwdGlvbgUAAAADbmlsCQAAAgAAAAECAAAAN2Vycm9yIzYuIE9ubHkgYXNzZXQgaXNzdWVyIGNhbiB1cGRhdGUgYXNzZXQgZGVzY3JpcHRpb24JAAACAAAAAQIAAABDZXJyb3IjNy4gSW5zdWZmaWNpZW50IHBheW1lbnQgZm9yIGFzc2V0IGRlc2NyaXB0aW9uIHVwZGF0ZSBzZXJ2aWNlLgkAAAIAAAABAgAAAC5lcnJvciMxLiBUaGUgc2VydmljZSBjYW4gb25seSBiZSBwYWlkIGluIHdhdmVzAAAAAWkBAAAACnVwZGF0ZUxpbmsAAAACAAAAB2Fzc2V0SWQAAAAEbGluawQAAAAHcGF5bWVudAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAAA1jYWxsZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAADWlzc3VlckxpbmtLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC2lzc3VlckxpbmtfAgAAAAE8BQAAAAdhc3NldElkAgAAAAE+BAAAABFhc3NldElzc3VlckFkcmVzcwkBAAAAIGdldEFzc2V0SXNzdWVyQWRkcmVzc0Zyb21Bc3NldElkAAAAAQUAAAAHYXNzZXRJZAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQDCQAAZwAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAPbGlua1VwZGF0ZVByaWNlAwkAAAAAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAABFhc3NldElzc3VlckFkcmVzcwkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAANaXNzdWVyTGlua0tleQUAAAAEbGluawUAAAADbmlsCQAAAgAAAAECAAAAMGVycm9yIzYuIE9ubHkgYXNzZXQgaXNzdWVyIGNhbiB1cGRhdGUgYXNzZXQgbGluawkAAAIAAAABAgAAADxlcnJvciM3LiBJbnN1ZmZpY2llbnQgcGF5bWVudCBmb3IgYXNzZXQgbGluayB1cGRhdGUgc2VydmljZS4JAAACAAAAAQIAAAAuZXJyb3IjMS4gVGhlIHNlcnZpY2UgY2FuIG9ubHkgYmUgcGFpZCBpbiB3YXZlcwAAAABJqXV4", "chainId": 84, "height": 661005, "spentComplexity": 0 } View: original | compacted Prev: Ef9JmDLAzcP1P8TfkmSayKu6iYbb4uofS6Xj9BipsdBN Next: 76gfZMPzFjQFJbtoWMDQSFWvCK9JNCFwtFLwvABUBj6v Diff:
OldNewDifferences
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let wvs = 100000000
5-
6-let tickerAllowedLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
7-
8-let tickerExample = "BTC"
9-
10-let tickerMinLength = 1
11-
12-let tickerMaxLength = 6
135
146 let descriptionUpdatePrice = (1 * wvs)
157
168 let linkUpdatePrice = (1 * wvs)
179
1810 let tickerUpdatePrice = (2 * wvs)
11+
12+let tickerMinLength = 1
13+
14+let tickerMaxLength = 6
15+
16+let tickerAllowedLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
1917
2018 let tickerCatalogueOracleAddress = addressFromStringValue("3MxHxW5VWq4KrWcbhFfxKrafXm4mL6rZHfj")
2119
3735 case _ =>
3836 throw()
3937 }
40-
41-
42-func assetIdFromString (assetId) = if (if ((assetId == "WAVES"))
43- then true
44- else (assetId == ""))
45- then unit
46- else fromBase58String(assetId)
4738
4839
4940 func isValidTicker (ticker) = {
138129 else false
139130
140131
141-func getAssetIssuerFromAssetId (assetId) = match assetInfo(fromBase58String(assetId)) {
142- case a: Asset =>
143- a
144- case _ =>
145- unit
146-}
132+func getAssetIssuerAddressFromAssetId (assetId) = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "error#6. there is no asset with such id").issuer)
147133
148134
149135 @Callable(i)
152138 let callerAddress = toBase58String(i.caller.bytes)
153139 let issuerTickerKey = ((("issuerTicker_" + "<") + assetId) + ">")
154140 let tickerFromOracle = getString(tickerCatalogueOracleAddress, ticker)
155- let assetIssuerAdress = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "error#6. there is no asset with such id").issuer)
141+ let assetIssuerAdress = getAssetIssuerAddressFromAssetId(assetId)
156142 if (!(isDefined(payment.assetId)))
157143 then if ((payment.amount >= tickerUpdatePrice))
158144 then if ((callerAddress == assetIssuerAdress))
175161 let payment = extract(i.payment)
176162 let callerAddress = toBase58String(i.caller.bytes)
177163 let issuerDescriptionKey = ((("issuerDescription_" + "<") + assetId) + ">")
178- let assetIssuerAdress = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "error#6. there is no asset with such id").issuer)
164+ let assetIssuerAdress = getAssetIssuerAddressFromAssetId(assetId)
179165 if (!(isDefined(payment.assetId)))
180166 then if ((payment.amount >= descriptionUpdatePrice))
181167 then if ((callerAddress == assetIssuerAdress))
192178 let payment = extract(i.payment)
193179 let callerAddress = toBase58String(i.caller.bytes)
194180 let issuerLinkKey = ((("issuerLink_" + "<") + assetId) + ">")
195- let assetIssuerAdress = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "error#6. there is no asset with such id").issuer)
181+ let assetIssuerAdress = getAssetIssuerAddressFromAssetId(assetId)
196182 if (!(isDefined(payment.assetId)))
197183 then if ((payment.amount >= linkUpdatePrice))
198184 then if ((callerAddress == assetIssuerAdress))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let wvs = 100000000
5-
6-let tickerAllowedLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
7-
8-let tickerExample = "BTC"
9-
10-let tickerMinLength = 1
11-
12-let tickerMaxLength = 6
135
146 let descriptionUpdatePrice = (1 * wvs)
157
168 let linkUpdatePrice = (1 * wvs)
179
1810 let tickerUpdatePrice = (2 * wvs)
11+
12+let tickerMinLength = 1
13+
14+let tickerMaxLength = 6
15+
16+let tickerAllowedLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
1917
2018 let tickerCatalogueOracleAddress = addressFromStringValue("3MxHxW5VWq4KrWcbhFfxKrafXm4mL6rZHfj")
2119
2220 let tokenRatingOracleAddress = addressFromStringValue("3NADqHoLMbMTfXdP2TeBBSx5mQXePVj3KZm")
2321
2422 func getIntegerFromAccount (accountAddress,key) = match getInteger(accountAddress, key) {
2523 case i: Int =>
2624 i
2725 case _ =>
2826 0
2927 }
3028
3129
3230 func isSubstrExist (str,substr) = match indexOf(str, substr) {
3331 case index: Int =>
3432 true
3533 case index: Unit =>
3634 false
3735 case _ =>
3836 throw()
3937 }
40-
41-
42-func assetIdFromString (assetId) = if (if ((assetId == "WAVES"))
43- then true
44- else (assetId == ""))
45- then unit
46- else fromBase58String(assetId)
4738
4839
4940 func isValidTicker (ticker) = {
5041 let tickerLetters = split(ticker, "")
5142 let tickerLength = size(tickerLetters)
5243 let isLetter1Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[0])
5344 let isLetter2Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[1])
5445 let isLetter3Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[2])
5546 let isLetter4Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[3])
5647 let isLetter5Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[4])
5748 let isLetter6Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[5])
5849 if ((ticker != ""))
5950 then if (if ((tickerLength >= tickerMinLength))
6051 then (tickerMaxLength >= tickerLength)
6152 else false)
6253 then if ((1 == tickerLength))
6354 then isLetter1Valid
6455 else if ((2 == tickerLength))
6556 then if (isLetter1Valid)
6657 then isLetter2Valid
6758 else false
6859 else if ((3 == tickerLength))
6960 then if (if (isLetter1Valid)
7061 then isLetter2Valid
7162 else false)
7263 then isLetter3Valid
7364 else false
7465 else if ((4 == tickerLength))
7566 then if (if (if (isLetter1Valid)
7667 then isLetter2Valid
7768 else false)
7869 then isLetter3Valid
7970 else false)
8071 then isLetter4Valid
8172 else false
8273 else if ((5 == tickerLength))
8374 then if (if (if (if (isLetter1Valid)
8475 then isLetter2Valid
8576 else false)
8677 then isLetter3Valid
8778 else false)
8879 then isLetter4Valid
8980 else false)
9081 then isLetter5Valid
9182 else false
9283 else if ((6 == tickerLength))
9384 then if (if (if (if (if (isLetter1Valid)
9485 then isLetter2Valid
9586 else false)
9687 then isLetter3Valid
9788 else false)
9889 then isLetter4Valid
9990 else false)
10091 then isLetter5Valid
10192 else false)
10293 then isLetter6Valid
10394 else false
10495 else false
10596 else false
10697 else false
10798 }
10899
109100
110101 func isAssetUpdateAllowedByRating (assetId) = {
111102 let assetRatingKey = (("assetRating_" + assetId) + "_1")
112103 let assetRatingValue = getIntegerFromAccount(tokenRatingOracleAddress, assetRatingKey)
113104 let assetRatingTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerRating_1")
114105 (assetRatingValue >= assetRatingTreshold)
115106 }
116107
117108
118109 func isAssetUpdateAllowedByWeight (assetId) = {
119110 let assetWeightKey = "assetWeight"
120111 let assetWeightValue = getIntegerFromAccount(tokenRatingOracleAddress, assetWeightKey)
121112 let assetWeightTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerWeight")
122113 (assetWeightValue >= assetWeightTreshold)
123114 }
124115
125116
126117 func isAssetUpdateAllowedByVotes (assetId) = {
127118 let assetVotesKey = "assetVotes"
128119 let assetVotesValue = getIntegerFromAccount(tokenRatingOracleAddress, assetVotesKey)
129120 let assetVotesTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerVotes")
130121 (assetVotesValue >= assetVotesTreshold)
131122 }
132123
133124
134125 func isUpdateAllowedByRating (assetId) = if (if (isAssetUpdateAllowedByRating(assetId))
135126 then isAssetUpdateAllowedByWeight(assetId)
136127 else false)
137128 then isAssetUpdateAllowedByVotes(assetId)
138129 else false
139130
140131
141-func getAssetIssuerFromAssetId (assetId) = match assetInfo(fromBase58String(assetId)) {
142- case a: Asset =>
143- a
144- case _ =>
145- unit
146-}
132+func getAssetIssuerAddressFromAssetId (assetId) = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "error#6. there is no asset with such id").issuer)
147133
148134
149135 @Callable(i)
150136 func updateTicker (assetId,ticker) = {
151137 let payment = extract(i.payment)
152138 let callerAddress = toBase58String(i.caller.bytes)
153139 let issuerTickerKey = ((("issuerTicker_" + "<") + assetId) + ">")
154140 let tickerFromOracle = getString(tickerCatalogueOracleAddress, ticker)
155- let assetIssuerAdress = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "error#6. there is no asset with such id").issuer)
141+ let assetIssuerAdress = getAssetIssuerAddressFromAssetId(assetId)
156142 if (!(isDefined(payment.assetId)))
157143 then if ((payment.amount >= tickerUpdatePrice))
158144 then if ((callerAddress == assetIssuerAdress))
159145 then if (isUpdateAllowedByRating(assetId))
160146 then if ((tickerFromOracle == unit))
161147 then if (isValidTicker(ticker))
162148 then WriteSet([DataEntry(issuerTickerKey, ticker)])
163149 else throw("error#5. Ticker should consist of 1-6 capital Latin characters.")
164150 else throw("error#4. Asset with such ticker is already exist")
165151 else throw("error#3. Too little rating")
166152 else throw("error#2. Only asset issuer can update asset ticker")
167153 else throw("error#2. Insufficient payment for asset ticker update service.")
168154 else throw("error#1. The service can only be paid in waves")
169155 }
170156
171157
172158
173159 @Callable(i)
174160 func updateDescription (assetId,description) = {
175161 let payment = extract(i.payment)
176162 let callerAddress = toBase58String(i.caller.bytes)
177163 let issuerDescriptionKey = ((("issuerDescription_" + "<") + assetId) + ">")
178- let assetIssuerAdress = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "error#6. there is no asset with such id").issuer)
164+ let assetIssuerAdress = getAssetIssuerAddressFromAssetId(assetId)
179165 if (!(isDefined(payment.assetId)))
180166 then if ((payment.amount >= descriptionUpdatePrice))
181167 then if ((callerAddress == assetIssuerAdress))
182168 then WriteSet([DataEntry(issuerDescriptionKey, description)])
183169 else throw("error#6. Only asset issuer can update asset description")
184170 else throw("error#7. Insufficient payment for asset description update service.")
185171 else throw("error#1. The service can only be paid in waves")
186172 }
187173
188174
189175
190176 @Callable(i)
191177 func updateLink (assetId,link) = {
192178 let payment = extract(i.payment)
193179 let callerAddress = toBase58String(i.caller.bytes)
194180 let issuerLinkKey = ((("issuerLink_" + "<") + assetId) + ">")
195- let assetIssuerAdress = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "error#6. there is no asset with such id").issuer)
181+ let assetIssuerAdress = getAssetIssuerAddressFromAssetId(assetId)
196182 if (!(isDefined(payment.assetId)))
197183 then if ((payment.amount >= linkUpdatePrice))
198184 then if ((callerAddress == assetIssuerAdress))
199185 then WriteSet([DataEntry(issuerLinkKey, link)])
200186 else throw("error#6. Only asset issuer can update asset link")
201187 else throw("error#7. Insufficient payment for asset link update service.")
202188 else throw("error#1. The service can only be paid in waves")
203189 }
204190
205191

github/deemru/w8io/873ac7e 
90.32 ms