tx · G297U5QHoyWVvTmgffEPtiQPomkCPKNys4bzc5XbQVxR

3NAg879tKUJh949h21umkwiaRQhwZftz1BE:  -0.05000000 Waves

2019.09.04 12:41 [661084] smart account 3NAg879tKUJh949h21umkwiaRQhwZftz1BE > SELF 0.00000000 Waves

{ "type": 13, "id": "G297U5QHoyWVvTmgffEPtiQPomkCPKNys4bzc5XbQVxR", "fee": 5000000, "feeAssetId": null, "timestamp": 1567590102067, "version": 1, "sender": "3NAg879tKUJh949h21umkwiaRQhwZftz1BE", "senderPublicKey": "BqY2jhkQCcbidtQdQZu6f9RV3AkFAS8VPToHxwYu1KdJ", "proofs": [ "2nxYbp7S2yGGc1Y8yft7VQH6iQ13xnk9xWEfyee5HSPQjW4BnTXuhuxLUvUAQ3jKypzyM8W5hWtQzXyeaiSXtoZH" ], "script": "base64:AAIDAAAAAAAAAAAAAAAVAAAAAAN3dnMAAAAAAAX14QAAAAAAFmRlc2NyaXB0aW9uVXBkYXRlUHJpY2UJAABoAAAAAgAAAAAAAAAAAQUAAAADd3ZzAAAAAA9saW5rVXBkYXRlUHJpY2UJAABoAAAAAgAAAAAAAAAAAQUAAAADd3ZzAAAAABF0aWNrZXJVcGRhdGVQcmljZQkAAGgAAAACAAAAAAAAAAACBQAAAAN3dnMAAAAAD3RpY2tlck1pbkxlbmd0aAAAAAAAAAAAAQAAAAAPdGlja2VyTWF4TGVuZ3RoAAAAAAAAAAAGAAAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwIAAAAaQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoAAAAAHHRpY2tlckNhdGFsb2d1ZU9yYWNsZUFkZHJlc3MJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQIAAAAjM014SHhXNVZXcTRLcldjYmhGZnhLcmFmWG00bUw2clpIZmoAAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABAgAAACMzTkFEcUhvTE1iTVRmWGRQMlRlQkJTeDVtUVhlUFZqM0tabQEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgAAAA5hY2NvdW50QWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAOYWNjb3VudEFkZHJlc3MFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFpBQAAAAckbWF0Y2gwBQAAAAFpAAAAAAAAAAAAAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgAAAANzdHIAAAAGc3Vic3RyBAAAAAckbWF0Y2gwCQAEswAAAAIFAAAAA3N0cgUAAAAGc3Vic3RyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAABWluZGV4BQAAAAckbWF0Y2gwBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFaW5kZXgFAAAAByRtYXRjaDAHCQEAAAAFdGhyb3cAAAAAAQAAAA1pc1ZhbGlkVGlja2VyAAAAAQAAAAZ0aWNrZXIEAAAADXRpY2tlckxldHRlcnMJAAS1AAAAAgUAAAAGdGlja2VyAgAAAAAEAAAADHRpY2tlckxlbmd0aAkAAZAAAAABBQAAAA10aWNrZXJMZXR0ZXJzBAAAAA5pc0xldHRlcjFWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAABAAAAA5pc0xldHRlcjJWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAABBAAAAA5pc0xldHRlcjNWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAACBAAAAA5pc0xldHRlcjRWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAADBAAAAA5pc0xldHRlcjVWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAEBAAAAA5pc0xldHRlcjZWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAFAwkBAAAAAiE9AAAAAgUAAAAGdGlja2VyAgAAAAADAwkAAGcAAAACBQAAAAx0aWNrZXJMZW5ndGgFAAAAD3RpY2tlck1pbkxlbmd0aAkAAGcAAAACBQAAAA90aWNrZXJNYXhMZW5ndGgFAAAADHRpY2tlckxlbmd0aAcDCQAAAAAAAAIAAAAAAAAAAAEFAAAADHRpY2tlckxlbmd0aAUAAAAOaXNMZXR0ZXIxVmFsaWQDCQAAAAAAAAIAAAAAAAAAAAIFAAAADHRpY2tlckxlbmd0aAMFAAAADmlzTGV0dGVyMVZhbGlkBQAAAA5pc0xldHRlcjJWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAMFAAAADHRpY2tlckxlbmd0aAMDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHBQAAAA5pc0xldHRlcjNWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAQFAAAADHRpY2tlckxlbmd0aAMDAwUAAAAOaXNMZXR0ZXIxVmFsaWQFAAAADmlzTGV0dGVyMlZhbGlkBwUAAAAOaXNMZXR0ZXIzVmFsaWQHBQAAAA5pc0xldHRlcjRWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAUFAAAADHRpY2tlckxlbmd0aAMDAwMFAAAADmlzTGV0dGVyMVZhbGlkBQAAAA5pc0xldHRlcjJWYWxpZAcFAAAADmlzTGV0dGVyM1ZhbGlkBwUAAAAOaXNMZXR0ZXI0VmFsaWQHBQAAAA5pc0xldHRlcjVWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAYFAAAADHRpY2tlckxlbmd0aAMDAwMDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHBQAAAA5pc0xldHRlcjNWYWxpZAcFAAAADmlzTGV0dGVyNFZhbGlkBwUAAAAOaXNMZXR0ZXI1VmFsaWQHBQAAAA5pc0xldHRlcjZWYWxpZAcHBwcBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABAAAAB2Fzc2V0SWQEAAAADmFzc2V0UmF0aW5nS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAMYXNzZXRSYXRpbmdfBQAAAAdhc3NldElkAgAAAAJfMQQAAAAQYXNzZXRSYXRpbmdWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAAOYXNzZXRSYXRpbmdLZXkEAAAAE2Fzc2V0UmF0aW5nVHJlc2hvbGQJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MCAAAADnRpY2tlclJhdGluZ18xCQAAZwAAAAIFAAAAEGFzc2V0UmF0aW5nVmFsdWUFAAAAE2Fzc2V0UmF0aW5nVHJlc2hvbGQBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlXZWlnaHQAAAABAAAAB2Fzc2V0SWQEAAAADmFzc2V0V2VpZ2h0S2V5AgAAAAthc3NldFdlaWdodAQAAAAQYXNzZXRXZWlnaHRWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAAOYXNzZXRXZWlnaHRLZXkEAAAAE2Fzc2V0V2VpZ2h0VHJlc2hvbGQJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MCAAAADHRpY2tlcldlaWdodAkAAGcAAAACBQAAABBhc3NldFdlaWdodFZhbHVlBQAAABNhc3NldFdlaWdodFRyZXNob2xkAQAAABtpc0Fzc2V0VXBkYXRlQWxsb3dlZEJ5Vm90ZXMAAAABAAAAB2Fzc2V0SWQEAAAADWFzc2V0Vm90ZXNLZXkCAAAACmFzc2V0Vm90ZXMEAAAAD2Fzc2V0Vm90ZXNWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAANYXNzZXRWb3Rlc0tleQQAAAASYXNzZXRWb3Rlc1RyZXNob2xkCQEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgUAAAAYdG9rZW5SYXRpbmdPcmFjbGVBZGRyZXNzAgAAAAt0aWNrZXJWb3RlcwkAAGcAAAACBQAAAA9hc3NldFZvdGVzVmFsdWUFAAAAEmFzc2V0Vm90ZXNUcmVzaG9sZAEAAAAXaXNVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABAAAAB2Fzc2V0SWQDAwkBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABBQAAAAdhc3NldElkCQEAAAAcaXNBc3NldFVwZGF0ZUFsbG93ZWRCeVdlaWdodAAAAAEFAAAAB2Fzc2V0SWQHCQEAAAAbaXNBc3NldFVwZGF0ZUFsbG93ZWRCeVZvdGVzAAAAAQUAAAAHYXNzZXRJZAcBAAAAIGdldEFzc2V0SXNzdWVyQWRkcmVzc0Zyb21Bc3NldElkAAAAAQAAAAdhc3NldElkCQAEJQAAAAEICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQkAAlkAAAABBQAAAAdhc3NldElkAgAAACdlcnJvciM2LiB0aGVyZSBpcyBubyBhc3NldCB3aXRoIHN1Y2ggaWQAAAAGaXNzdWVyAQAAAApnZXRQYXltZW50AAAAAQAAAAFpCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIIBQAAAAFpAAAAB3BheW1lbnQCAAAAKmVycm9yIzguIHRoZXJlIGlzIG5vIHBheW1lbnQgaW4gaW52b2NhdGlvbgEAAAAQaXNQYXltZW50SW5XYXZlcwAAAAEAAAABaQQAAAAHcGF5bWVudAkBAAAACmdldFBheW1lbnQAAAABBQAAAAFpAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAYHAQAAAA9pc0Vub3VnaFBheW1lbnQAAAACAAAAAWkAAAAPcmVxdWlyZWRQYXltZW50BAAAAAdwYXltZW50CQEAAAAKZ2V0UGF5bWVudAAAAAEFAAAAAWkDCQAAZwAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAPcmVxdWlyZWRQYXltZW50BgcBAAAAE2lzQ2FsbGVyQXNzZXRJc3N1ZXIAAAACAAAAAWkAAAAHYXNzZXRJZAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAABFhc3NldElzc3VlckFkcmVzcwkBAAAAIGdldEFzc2V0SXNzdWVyQWRkcmVzc0Zyb21Bc3NldElkAAAAAQUAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAARYXNzZXRJc3N1ZXJBZHJlc3MGBwAAAAMAAAABaQEAAAAMdXBkYXRlVGlja2VyAAAAAgAAAAdhc3NldElkAAAABnRpY2tlcgQAAAAPaXNzdWVyVGlja2VyS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA1pc3N1ZXJUaWNrZXJfAgAAAAE8BQAAAAdhc3NldElkAgAAAAE+BAAAAAxpc1RpY2tlckZyZWUEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAcdGlja2VyQ2F0YWxvZ3VlT3JhY2xlQWRkcmVzcwUAAAAGdGlja2VyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXQFAAAAByRtYXRjaDAHAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAF0BQAAAAckbWF0Y2gwBgkBAAAABXRocm93AAAAAAMJAQAAABBpc1BheW1lbnRJbldhdmVzAAAAAQUAAAABaQMJAQAAAA9pc0Vub3VnaFBheW1lbnQAAAACBQAAAAFpBQAAABF0aWNrZXJVcGRhdGVQcmljZQMJAQAAABNpc0NhbGxlckFzc2V0SXNzdWVyAAAAAgUAAAABaQUAAAAHYXNzZXRJZAMJAQAAABdpc1VwZGF0ZUFsbG93ZWRCeVJhdGluZwAAAAEFAAAAB2Fzc2V0SWQDBQAAAAxpc1RpY2tlckZyZWUDCQEAAAANaXNWYWxpZFRpY2tlcgAAAAEFAAAABnRpY2tlcgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAPaXNzdWVyVGlja2VyS2V5BQAAAAZ0aWNrZXIFAAAAA25pbAkAAAIAAAABAgAAAD9lcnJvciM1LiBUaWNrZXIgc2hvdWxkIGNvbnNpc3Qgb2YgMS02IGNhcGl0YWwgTGF0aW4gY2hhcmFjdGVycy4JAAACAAAAAQIAAAAwZXJyb3IjNC4gQXNzZXQgd2l0aCBzdWNoIHRpY2tlciBpcyBhbHJlYWR5IGV4aXN0CQAAAgAAAAECAAAAGmVycm9yIzMuIFRvbyBsaXR0bGUgcmF0aW5nCQAAAgAAAAECAAAAMmVycm9yIzIuIE9ubHkgYXNzZXQgaXNzdWVyIGNhbiB1cGRhdGUgYXNzZXQgdGlja2VyCQAAAgAAAAECAAAAPmVycm9yIzIuIEluc3VmZmljaWVudCBwYXltZW50IGZvciBhc3NldCB0aWNrZXIgdXBkYXRlIHNlcnZpY2UuCQAAAgAAAAECAAAALmVycm9yIzEuIFRoZSBzZXJ2aWNlIGNhbiBvbmx5IGJlIHBhaWQgaW4gd2F2ZXMAAAABaQEAAAARdXBkYXRlRGVzY3JpcHRpb24AAAACAAAAB2Fzc2V0SWQAAAALZGVzY3JpcHRpb24EAAAAFGlzc3VlckRlc2NyaXB0aW9uS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABJpc3N1ZXJEZXNjcmlwdGlvbl8CAAAAATwFAAAAB2Fzc2V0SWQCAAAAAT4DCQEAAAAQaXNQYXltZW50SW5XYXZlcwAAAAEFAAAAAWkDCQEAAAAPaXNFbm91Z2hQYXltZW50AAAAAgUAAAABaQUAAAAWZGVzY3JpcHRpb25VcGRhdGVQcmljZQMJAQAAABNpc0NhbGxlckFzc2V0SXNzdWVyAAAAAgUAAAABaQUAAAAHYXNzZXRJZAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAUaXNzdWVyRGVzY3JpcHRpb25LZXkFAAAAC2Rlc2NyaXB0aW9uBQAAAANuaWwJAAACAAAAAQIAAAA3ZXJyb3IjNi4gT25seSBhc3NldCBpc3N1ZXIgY2FuIHVwZGF0ZSBhc3NldCBkZXNjcmlwdGlvbgkAAAIAAAABAgAAAENlcnJvciM3LiBJbnN1ZmZpY2llbnQgcGF5bWVudCBmb3IgYXNzZXQgZGVzY3JpcHRpb24gdXBkYXRlIHNlcnZpY2UuCQAAAgAAAAECAAAALmVycm9yIzEuIFRoZSBzZXJ2aWNlIGNhbiBvbmx5IGJlIHBhaWQgaW4gd2F2ZXMAAAABaQEAAAAKdXBkYXRlTGluawAAAAIAAAAHYXNzZXRJZAAAAARsaW5rBAAAAA1pc3N1ZXJMaW5rS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtpc3N1ZXJMaW5rXwIAAAABPAUAAAAHYXNzZXRJZAIAAAABPgMJAQAAABBpc1BheW1lbnRJbldhdmVzAAAAAQUAAAABaQMJAQAAAA9pc0Vub3VnaFBheW1lbnQAAAACBQAAAAFpBQAAAA9saW5rVXBkYXRlUHJpY2UDCQEAAAATaXNDYWxsZXJBc3NldElzc3VlcgAAAAIFAAAAAWkFAAAAB2Fzc2V0SWQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADWlzc3VlckxpbmtLZXkFAAAABGxpbmsFAAAAA25pbAkAAAIAAAABAgAAADBlcnJvciM2LiBPbmx5IGFzc2V0IGlzc3VlciBjYW4gdXBkYXRlIGFzc2V0IGxpbmsJAAACAAAAAQIAAAA8ZXJyb3IjNy4gSW5zdWZmaWNpZW50IHBheW1lbnQgZm9yIGFzc2V0IGxpbmsgdXBkYXRlIHNlcnZpY2UuCQAAAgAAAAECAAAALmVycm9yIzEuIFRoZSBzZXJ2aWNlIGNhbiBvbmx5IGJlIHBhaWQgaW4gd2F2ZXMAAAAAOzaumA==", "chainId": 84, "height": 661084, "spentComplexity": 0 } View: original | compacted Prev: BHzd39TzY4LvvpUyNPwTJzsnnkMrTYGJzz23YXTMqia4 Next: CUkEBXTs4Rx2rLqrAAMXufrCNygXrcmwzYyE7Fk2YFbS Diff:
OldNewDifferences
132132 func getAssetIssuerAddressFromAssetId (assetId) = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "error#6. there is no asset with such id").issuer)
133133
134134
135+func getPayment (i) = valueOrErrorMessage(i.payment, "error#8. there is no payment in invocation")
136+
137+
138+func isPaymentInWaves (i) = {
139+ let payment = getPayment(i)
140+ if (!(isDefined(payment.assetId)))
141+ then true
142+ else false
143+ }
144+
145+
146+func isEnoughPayment (i,requiredPayment) = {
147+ let payment = getPayment(i)
148+ if ((payment.amount >= requiredPayment))
149+ then true
150+ else false
151+ }
152+
153+
135154 func isCallerAssetIssuer (i,assetId) = {
136155 let callerAddress = toBase58String(i.caller.bytes)
137156 let assetIssuerAdress = getAssetIssuerAddressFromAssetId(assetId)
143162
144163 @Callable(i)
145164 func updateTicker (assetId,ticker) = {
146- let payment = valueOrErrorMessage(i.payment, "error#8. there is no payment in invocation")
147165 let issuerTickerKey = ((("issuerTicker_" + "<") + assetId) + ">")
148- let isPaymentInWaves = !(isDefined(payment.assetId))
149- let isEnoughPayment = (payment.amount >= tickerUpdatePrice)
150166 let isTickerFree = match getString(tickerCatalogueOracleAddress, ticker) {
151167 case t: String =>
152168 false
155171 case _ =>
156172 throw()
157173 }
158- if (isPaymentInWaves)
159- then if (isEnoughPayment)
174+ if (isPaymentInWaves(i))
175+ then if (isEnoughPayment(i, tickerUpdatePrice))
160176 then if (isCallerAssetIssuer(i, assetId))
161177 then if (isUpdateAllowedByRating(assetId))
162178 then if (isTickerFree)
174190
175191 @Callable(i)
176192 func updateDescription (assetId,description) = {
177- let payment = extract(i.payment)
178- let callerAddress = toBase58String(i.caller.bytes)
179193 let issuerDescriptionKey = ((("issuerDescription_" + "<") + assetId) + ">")
180- let assetIssuerAdress = getAssetIssuerAddressFromAssetId(assetId)
181- if (!(isDefined(payment.assetId)))
182- then if ((payment.amount >= descriptionUpdatePrice))
183- then if ((callerAddress == assetIssuerAdress))
194+ if (isPaymentInWaves(i))
195+ then if (isEnoughPayment(i, descriptionUpdatePrice))
196+ then if (isCallerAssetIssuer(i, assetId))
184197 then WriteSet([DataEntry(issuerDescriptionKey, description)])
185198 else throw("error#6. Only asset issuer can update asset description")
186199 else throw("error#7. Insufficient payment for asset description update service.")
191204
192205 @Callable(i)
193206 func updateLink (assetId,link) = {
194- let payment = extract(i.payment)
195- let callerAddress = toBase58String(i.caller.bytes)
196207 let issuerLinkKey = ((("issuerLink_" + "<") + assetId) + ">")
197- let assetIssuerAdress = getAssetIssuerAddressFromAssetId(assetId)
198- if (!(isDefined(payment.assetId)))
199- then if ((payment.amount >= linkUpdatePrice))
200- then if ((callerAddress == assetIssuerAdress))
208+ if (isPaymentInWaves(i))
209+ then if (isEnoughPayment(i, linkUpdatePrice))
210+ then if (isCallerAssetIssuer(i, assetId))
201211 then WriteSet([DataEntry(issuerLinkKey, link)])
202212 else throw("error#6. Only asset issuer can update asset link")
203213 else throw("error#7. Insufficient payment for asset link update service.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let wvs = 100000000
55
66 let descriptionUpdatePrice = (1 * wvs)
77
88 let linkUpdatePrice = (1 * wvs)
99
1010 let tickerUpdatePrice = (2 * wvs)
1111
1212 let tickerMinLength = 1
1313
1414 let tickerMaxLength = 6
1515
1616 let tickerAllowedLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
1717
1818 let tickerCatalogueOracleAddress = addressFromStringValue("3MxHxW5VWq4KrWcbhFfxKrafXm4mL6rZHfj")
1919
2020 let tokenRatingOracleAddress = addressFromStringValue("3NADqHoLMbMTfXdP2TeBBSx5mQXePVj3KZm")
2121
2222 func getIntegerFromAccount (accountAddress,key) = match getInteger(accountAddress, key) {
2323 case i: Int =>
2424 i
2525 case _ =>
2626 0
2727 }
2828
2929
3030 func isSubstrExist (str,substr) = match indexOf(str, substr) {
3131 case index: Int =>
3232 true
3333 case index: Unit =>
3434 false
3535 case _ =>
3636 throw()
3737 }
3838
3939
4040 func isValidTicker (ticker) = {
4141 let tickerLetters = split(ticker, "")
4242 let tickerLength = size(tickerLetters)
4343 let isLetter1Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[0])
4444 let isLetter2Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[1])
4545 let isLetter3Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[2])
4646 let isLetter4Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[3])
4747 let isLetter5Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[4])
4848 let isLetter6Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[5])
4949 if ((ticker != ""))
5050 then if (if ((tickerLength >= tickerMinLength))
5151 then (tickerMaxLength >= tickerLength)
5252 else false)
5353 then if ((1 == tickerLength))
5454 then isLetter1Valid
5555 else if ((2 == tickerLength))
5656 then if (isLetter1Valid)
5757 then isLetter2Valid
5858 else false
5959 else if ((3 == tickerLength))
6060 then if (if (isLetter1Valid)
6161 then isLetter2Valid
6262 else false)
6363 then isLetter3Valid
6464 else false
6565 else if ((4 == tickerLength))
6666 then if (if (if (isLetter1Valid)
6767 then isLetter2Valid
6868 else false)
6969 then isLetter3Valid
7070 else false)
7171 then isLetter4Valid
7272 else false
7373 else if ((5 == tickerLength))
7474 then if (if (if (if (isLetter1Valid)
7575 then isLetter2Valid
7676 else false)
7777 then isLetter3Valid
7878 else false)
7979 then isLetter4Valid
8080 else false)
8181 then isLetter5Valid
8282 else false
8383 else if ((6 == tickerLength))
8484 then if (if (if (if (if (isLetter1Valid)
8585 then isLetter2Valid
8686 else false)
8787 then isLetter3Valid
8888 else false)
8989 then isLetter4Valid
9090 else false)
9191 then isLetter5Valid
9292 else false)
9393 then isLetter6Valid
9494 else false
9595 else false
9696 else false
9797 else false
9898 }
9999
100100
101101 func isAssetUpdateAllowedByRating (assetId) = {
102102 let assetRatingKey = (("assetRating_" + assetId) + "_1")
103103 let assetRatingValue = getIntegerFromAccount(tokenRatingOracleAddress, assetRatingKey)
104104 let assetRatingTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerRating_1")
105105 (assetRatingValue >= assetRatingTreshold)
106106 }
107107
108108
109109 func isAssetUpdateAllowedByWeight (assetId) = {
110110 let assetWeightKey = "assetWeight"
111111 let assetWeightValue = getIntegerFromAccount(tokenRatingOracleAddress, assetWeightKey)
112112 let assetWeightTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerWeight")
113113 (assetWeightValue >= assetWeightTreshold)
114114 }
115115
116116
117117 func isAssetUpdateAllowedByVotes (assetId) = {
118118 let assetVotesKey = "assetVotes"
119119 let assetVotesValue = getIntegerFromAccount(tokenRatingOracleAddress, assetVotesKey)
120120 let assetVotesTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerVotes")
121121 (assetVotesValue >= assetVotesTreshold)
122122 }
123123
124124
125125 func isUpdateAllowedByRating (assetId) = if (if (isAssetUpdateAllowedByRating(assetId))
126126 then isAssetUpdateAllowedByWeight(assetId)
127127 else false)
128128 then isAssetUpdateAllowedByVotes(assetId)
129129 else false
130130
131131
132132 func getAssetIssuerAddressFromAssetId (assetId) = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "error#6. there is no asset with such id").issuer)
133133
134134
135+func getPayment (i) = valueOrErrorMessage(i.payment, "error#8. there is no payment in invocation")
136+
137+
138+func isPaymentInWaves (i) = {
139+ let payment = getPayment(i)
140+ if (!(isDefined(payment.assetId)))
141+ then true
142+ else false
143+ }
144+
145+
146+func isEnoughPayment (i,requiredPayment) = {
147+ let payment = getPayment(i)
148+ if ((payment.amount >= requiredPayment))
149+ then true
150+ else false
151+ }
152+
153+
135154 func isCallerAssetIssuer (i,assetId) = {
136155 let callerAddress = toBase58String(i.caller.bytes)
137156 let assetIssuerAdress = getAssetIssuerAddressFromAssetId(assetId)
138157 if ((callerAddress == assetIssuerAdress))
139158 then true
140159 else false
141160 }
142161
143162
144163 @Callable(i)
145164 func updateTicker (assetId,ticker) = {
146- let payment = valueOrErrorMessage(i.payment, "error#8. there is no payment in invocation")
147165 let issuerTickerKey = ((("issuerTicker_" + "<") + assetId) + ">")
148- let isPaymentInWaves = !(isDefined(payment.assetId))
149- let isEnoughPayment = (payment.amount >= tickerUpdatePrice)
150166 let isTickerFree = match getString(tickerCatalogueOracleAddress, ticker) {
151167 case t: String =>
152168 false
153169 case t: Unit =>
154170 true
155171 case _ =>
156172 throw()
157173 }
158- if (isPaymentInWaves)
159- then if (isEnoughPayment)
174+ if (isPaymentInWaves(i))
175+ then if (isEnoughPayment(i, tickerUpdatePrice))
160176 then if (isCallerAssetIssuer(i, assetId))
161177 then if (isUpdateAllowedByRating(assetId))
162178 then if (isTickerFree)
163179 then if (isValidTicker(ticker))
164180 then WriteSet([DataEntry(issuerTickerKey, ticker)])
165181 else throw("error#5. Ticker should consist of 1-6 capital Latin characters.")
166182 else throw("error#4. Asset with such ticker is already exist")
167183 else throw("error#3. Too little rating")
168184 else throw("error#2. Only asset issuer can update asset ticker")
169185 else throw("error#2. Insufficient payment for asset ticker update service.")
170186 else throw("error#1. The service can only be paid in waves")
171187 }
172188
173189
174190
175191 @Callable(i)
176192 func updateDescription (assetId,description) = {
177- let payment = extract(i.payment)
178- let callerAddress = toBase58String(i.caller.bytes)
179193 let issuerDescriptionKey = ((("issuerDescription_" + "<") + assetId) + ">")
180- let assetIssuerAdress = getAssetIssuerAddressFromAssetId(assetId)
181- if (!(isDefined(payment.assetId)))
182- then if ((payment.amount >= descriptionUpdatePrice))
183- then if ((callerAddress == assetIssuerAdress))
194+ if (isPaymentInWaves(i))
195+ then if (isEnoughPayment(i, descriptionUpdatePrice))
196+ then if (isCallerAssetIssuer(i, assetId))
184197 then WriteSet([DataEntry(issuerDescriptionKey, description)])
185198 else throw("error#6. Only asset issuer can update asset description")
186199 else throw("error#7. Insufficient payment for asset description update service.")
187200 else throw("error#1. The service can only be paid in waves")
188201 }
189202
190203
191204
192205 @Callable(i)
193206 func updateLink (assetId,link) = {
194- let payment = extract(i.payment)
195- let callerAddress = toBase58String(i.caller.bytes)
196207 let issuerLinkKey = ((("issuerLink_" + "<") + assetId) + ">")
197- let assetIssuerAdress = getAssetIssuerAddressFromAssetId(assetId)
198- if (!(isDefined(payment.assetId)))
199- then if ((payment.amount >= linkUpdatePrice))
200- then if ((callerAddress == assetIssuerAdress))
208+ if (isPaymentInWaves(i))
209+ then if (isEnoughPayment(i, linkUpdatePrice))
210+ then if (isCallerAssetIssuer(i, assetId))
201211 then WriteSet([DataEntry(issuerLinkKey, link)])
202212 else throw("error#6. Only asset issuer can update asset link")
203213 else throw("error#7. Insufficient payment for asset link update service.")
204214 else throw("error#1. The service can only be paid in waves")
205215 }
206216
207217

github/deemru/w8io/873ac7e 
47.12 ms