tx · 88XNecS8Q7qnDkoPt9EdUPgPJ4HhMAGqYP9TD8zBm5QM

3NAg879tKUJh949h21umkwiaRQhwZftz1BE:  -0.05000000 Waves

2019.09.09 09:15 [668166] smart account 3NAg879tKUJh949h21umkwiaRQhwZftz1BE > SELF 0.00000000 Waves

{ "type": 13, "id": "88XNecS8Q7qnDkoPt9EdUPgPJ4HhMAGqYP9TD8zBm5QM", "fee": 5000000, "feeAssetId": null, "timestamp": 1568009727086, "version": 1, "sender": "3NAg879tKUJh949h21umkwiaRQhwZftz1BE", "senderPublicKey": "BqY2jhkQCcbidtQdQZu6f9RV3AkFAS8VPToHxwYu1KdJ", "proofs": [ "5CQyH773AudJqSWZ15vRHdZqEVpfdesJbFa31zCks7Q4DSi6ujAwdNTXEaWhWTuk11F5zCgmjhv7662wPtkfEF1F" ], "script": "base64:AAIDAAAAAAAAAAAAAAAeAAAAAAN3dnMAAAAAAAX14QAAAAAAGW5vdFN1cHBvcnRlZEN1cnJlbmN5RXJyb3ICAAAAGzxub3RTdXBwb3J0ZWRDdXJyZW5jeUVycm9yPgAAAAAXaXNzdWVyQWNjZXNzRGVuaWVkRXJyb3ICAAAAGTxpc3N1ZXJBY2Nlc3NEZW5pZWRFcnJvcj4AAAAAFW5vdEVub3VnaFBheW1lbnRFcnJvcgIAAAAXPG5vdEVub3VnaFBheW1lbnRFcnJvcj4AAAAAJHRpY2tlclZhbGlkYXRpb25Ob3RFbm91Z2hSYXRpbmdFcnJvcgIAAAAmPHRpY2tlclZhbGlkYXRpb25Ob3RFbm91Z2hSYXRpbmdFcnJvcj4AAAAAInRpY2tlclZhbGlkYXRpb25UaWNrZXJJc0V4aXN0RXJyb3ICAAAAJDx0aWNrZXJWYWxpZGF0aW9uVGlja2VySXNFeGlzdEVycm9yPgAAAAAgdGlja2VyVmFsaWRhdGlvbldyb25nRm9ybWF0RXJyb3ICAAAAIjx0aWNrZXJWYWxpZGF0aW9uV3JvbmdGb3JtYXRFcnJvcj4AAAAAFW5vbkV4aXN0ZW50QXNzZXRFcnJvcgIAAAAXPG5vbkV4aXN0ZW50QXNzZXRFcnJvcj4AAAAADm5vUGF5bWVudEVycm9yAgAAABA8bm9QYXltZW50RXJyb3I+AAAAABZkZXNjcmlwdGlvblVwZGF0ZVByaWNlCQAAaAAAAAIAAAAAAAAAAAEFAAAAA3d2cwAAAAAPbGlua1VwZGF0ZVByaWNlCQAAaAAAAAIAAAAAAAAAAAEFAAAAA3d2cwAAAAARdGlja2VyVXBkYXRlUHJpY2UJAABoAAAAAgAAAAAAAAAAAgUAAAADd3ZzAAAAAA90aWNrZXJNaW5MZW5ndGgAAAAAAAAAAAEAAAAAD3RpY2tlck1heExlbmd0aAAAAAAAAAAABgAAAAAUdGlja2VyQWxsb3dlZExldHRlcnMCAAAAGkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaAAAAAA9yZXNlcnZlZFRpY2tlcnMCAAABJUJUQyxFVEgsWFJQLEJDSCxMVEMsQk5CLFVTRFQsRU9TLEJTVixYTVIsWExNLExFTyxBREEsVFJYLERBU0gsTElOSyxYVFosTkVPLE1JT1RBLEVUQyxBVE9NLFhFTSxNS1IsQ1JPLFVTREMsT05ULFZTWVMsWkVDLERPR0UsVkVULERDUixIVCxCQVQsQlRHLFFUVU0sSEVERyxUVVNELFBBWCxFR1QsT01HLEFMR08sS0NTLFJWTixMU0ssTkFOTyxCVFQsQkNELE5SRyxMQU1CLEhPVCxCQ04sREdCLFJFUCxCVFMsWlJYLFhJTixBT0EsSU9TVCxJQ1gsTkVULEdOVCxQUFQsUkhPQyxTTlQsQUUsV1RDLFZFUkksUixaSUwsQk5UAAAAABx0aWNrZXJDYXRhbG9ndWVPcmFjbGVBZGRyZXNzCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAECAAAAIzNNeEh4VzVWV3E0S3JXY2JoRmZ4S3JhZlhtNG1MNnJaSGZqAAAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQIAAAAjM05BRHFIb0xNYk1UZlhkUDJUZUJCU3g1bVFYZVBWajNLWm0BAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIAAAAOYWNjb3VudEFkZHJlc3MAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAADmFjY291bnRBZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABaQUAAAAHJG1hdGNoMAUAAAABaQAAAAAAAAAAAAEAAAANaXNTdWJzdHJFeGlzdAAAAAIAAAADc3RyAAAABnN1YnN0cgQAAAAHJG1hdGNoMAkABLMAAAACBQAAAANzdHIFAAAABnN1YnN0cgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAVpbmRleAUAAAAHJG1hdGNoMAYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABWluZGV4BQAAAAckbWF0Y2gwBwkBAAAABXRocm93AAAAAAEAAAANaXNWYWxpZFRpY2tlcgAAAAEAAAAGdGlja2VyBAAAAA10aWNrZXJMZXR0ZXJzCQAEtQAAAAIFAAAABnRpY2tlcgIAAAAABAAAAAx0aWNrZXJMZW5ndGgJAAGQAAAAAQUAAAANdGlja2VyTGV0dGVycwQAAAAOaXNMZXR0ZXIxVmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAAAAQAAAAOaXNMZXR0ZXIyVmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAAAQQAAAAOaXNMZXR0ZXIzVmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAAAgQAAAAOaXNMZXR0ZXI0VmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAAAwQAAAAOaXNMZXR0ZXI1VmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAABAQAAAAOaXNMZXR0ZXI2VmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAABQMJAQAAAAIhPQAAAAIFAAAABnRpY2tlcgIAAAAAAwMJAABnAAAAAgUAAAAMdGlja2VyTGVuZ3RoBQAAAA90aWNrZXJNaW5MZW5ndGgJAABnAAAAAgUAAAAPdGlja2VyTWF4TGVuZ3RoBQAAAAx0aWNrZXJMZW5ndGgHAwkAAAAAAAACAAAAAAAAAAABBQAAAAx0aWNrZXJMZW5ndGgFAAAADmlzTGV0dGVyMVZhbGlkAwkAAAAAAAACAAAAAAAAAAACBQAAAAx0aWNrZXJMZW5ndGgDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHAwkAAAAAAAACAAAAAAAAAAADBQAAAAx0aWNrZXJMZW5ndGgDAwUAAAAOaXNMZXR0ZXIxVmFsaWQFAAAADmlzTGV0dGVyMlZhbGlkBwUAAAAOaXNMZXR0ZXIzVmFsaWQHAwkAAAAAAAACAAAAAAAAAAAEBQAAAAx0aWNrZXJMZW5ndGgDAwMFAAAADmlzTGV0dGVyMVZhbGlkBQAAAA5pc0xldHRlcjJWYWxpZAcFAAAADmlzTGV0dGVyM1ZhbGlkBwUAAAAOaXNMZXR0ZXI0VmFsaWQHAwkAAAAAAAACAAAAAAAAAAAFBQAAAAx0aWNrZXJMZW5ndGgDAwMDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHBQAAAA5pc0xldHRlcjNWYWxpZAcFAAAADmlzTGV0dGVyNFZhbGlkBwUAAAAOaXNMZXR0ZXI1VmFsaWQHAwkAAAAAAAACAAAAAAAAAAAGBQAAAAx0aWNrZXJMZW5ndGgDAwMDAwUAAAAOaXNMZXR0ZXIxVmFsaWQFAAAADmlzTGV0dGVyMlZhbGlkBwUAAAAOaXNMZXR0ZXIzVmFsaWQHBQAAAA5pc0xldHRlcjRWYWxpZAcFAAAADmlzTGV0dGVyNVZhbGlkBwUAAAAOaXNMZXR0ZXI2VmFsaWQHBwcHAQAAABxpc0Fzc2V0VXBkYXRlQWxsb3dlZEJ5UmF0aW5nAAAAAQAAAAdhc3NldElkBAAAAA5hc3NldFJhdGluZ0tleQkAASwAAAACCQABLAAAAAICAAAADGFzc2V0UmF0aW5nXwUAAAAHYXNzZXRJZAIAAAACXzEEAAAAEGFzc2V0UmF0aW5nVmFsdWUJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MFAAAADmFzc2V0UmF0aW5nS2V5BAAAABNhc3NldFJhdGluZ1RyZXNob2xkCQEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgUAAAAYdG9rZW5SYXRpbmdPcmFjbGVBZGRyZXNzAgAAAA50aWNrZXJSYXRpbmdfMQkAAGcAAAACBQAAABBhc3NldFJhdGluZ1ZhbHVlBQAAABNhc3NldFJhdGluZ1RyZXNob2xkAQAAABxpc0Fzc2V0VXBkYXRlQWxsb3dlZEJ5V2VpZ2h0AAAAAQAAAAdhc3NldElkBAAAAA5hc3NldFdlaWdodEtleQIAAAALYXNzZXRXZWlnaHQEAAAAEGFzc2V0V2VpZ2h0VmFsdWUJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MFAAAADmFzc2V0V2VpZ2h0S2V5BAAAABNhc3NldFdlaWdodFRyZXNob2xkCQEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgUAAAAYdG9rZW5SYXRpbmdPcmFjbGVBZGRyZXNzAgAAAAx0aWNrZXJXZWlnaHQJAABnAAAAAgUAAAAQYXNzZXRXZWlnaHRWYWx1ZQUAAAATYXNzZXRXZWlnaHRUcmVzaG9sZAEAAAAbaXNBc3NldFVwZGF0ZUFsbG93ZWRCeVZvdGVzAAAAAQAAAAdhc3NldElkBAAAAA1hc3NldFZvdGVzS2V5AgAAAAphc3NldFZvdGVzBAAAAA9hc3NldFZvdGVzVmFsdWUJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MFAAAADWFzc2V0Vm90ZXNLZXkEAAAAEmFzc2V0Vm90ZXNUcmVzaG9sZAkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwIAAAALdGlja2VyVm90ZXMJAABnAAAAAgUAAAAPYXNzZXRWb3Rlc1ZhbHVlBQAAABJhc3NldFZvdGVzVHJlc2hvbGQBAAAAF2lzVXBkYXRlQWxsb3dlZEJ5UmF0aW5nAAAAAQAAAAdhc3NldElkAwMJAQAAABxpc0Fzc2V0VXBkYXRlQWxsb3dlZEJ5UmF0aW5nAAAAAQUAAAAHYXNzZXRJZAkBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlXZWlnaHQAAAABBQAAAAdhc3NldElkBwkBAAAAG2lzQXNzZXRVcGRhdGVBbGxvd2VkQnlWb3RlcwAAAAEFAAAAB2Fzc2V0SWQHAQAAACBnZXRBc3NldElzc3VlckFkZHJlc3NGcm9tQXNzZXRJZAAAAAEAAAAHYXNzZXRJZAkABCUAAAABCAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEJAAJZAAAAAQUAAAAHYXNzZXRJZAUAAAAVbm9uRXhpc3RlbnRBc3NldEVycm9yAAAABmlzc3VlcgEAAAAKZ2V0UGF5bWVudAAAAAEAAAABaQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCAUAAAABaQAAAAdwYXltZW50BQAAAA5ub1BheW1lbnRFcnJvcgEAAAAQaXNQYXltZW50SW5XYXZlcwAAAAEAAAABaQQAAAAHcGF5bWVudAkBAAAACmdldFBheW1lbnQAAAABBQAAAAFpAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAYHAQAAAA9pc0Vub3VnaFBheW1lbnQAAAACAAAAAWkAAAAPcmVxdWlyZWRQYXltZW50BAAAAAdwYXltZW50CQEAAAAKZ2V0UGF5bWVudAAAAAEFAAAAAWkDCQAAZwAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAPcmVxdWlyZWRQYXltZW50BgcBAAAAE2lzQ2FsbGVyQXNzZXRJc3N1ZXIAAAACAAAAAWkAAAAHYXNzZXRJZAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAABFhc3NldElzc3VlckFkcmVzcwkBAAAAIGdldEFzc2V0SXNzdWVyQWRkcmVzc0Zyb21Bc3NldElkAAAAAQUAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAARYXNzZXRJc3N1ZXJBZHJlc3MGBwAAAAMAAAABaQEAAAAMdXBkYXRlVGlja2VyAAAAAgAAAAdhc3NldElkAAAABnRpY2tlcgQAAAAPaXNzdWVyVGlja2VyS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA1pc3N1ZXJUaWNrZXJfAgAAAAE8BQAAAAdhc3NldElkAgAAAAE+BAAAABBpc1RpY2tlclJlc2VydmVkCQEAAAANaXNTdWJzdHJFeGlzdAAAAAIFAAAAD3Jlc2VydmVkVGlja2VycwUAAAAGdGlja2VyBAAAAAxpc1RpY2tlckZyZWUEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAcdGlja2VyQ2F0YWxvZ3VlT3JhY2xlQWRkcmVzcwUAAAAGdGlja2VyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXQFAAAAByRtYXRjaDAHAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAF0BQAAAAckbWF0Y2gwBgkBAAAABXRocm93AAAAAAMJAQAAABBpc1BheW1lbnRJbldhdmVzAAAAAQUAAAABaQMJAQAAAA9pc0Vub3VnaFBheW1lbnQAAAACBQAAAAFpBQAAABF0aWNrZXJVcGRhdGVQcmljZQMJAQAAABNpc0NhbGxlckFzc2V0SXNzdWVyAAAAAgUAAAABaQUAAAAHYXNzZXRJZAMJAQAAABdpc1VwZGF0ZUFsbG93ZWRCeVJhdGluZwAAAAEFAAAAB2Fzc2V0SWQDAwUAAAAMaXNUaWNrZXJGcmVlCQEAAAABIQAAAAEFAAAAEGlzVGlja2VyUmVzZXJ2ZWQHAwkBAAAADWlzVmFsaWRUaWNrZXIAAAABBQAAAAZ0aWNrZXIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAD2lzc3VlclRpY2tlcktleQUAAAAGdGlja2VyBQAAAANuaWwJAAACAAAAAQUAAAAgdGlja2VyVmFsaWRhdGlvbldyb25nRm9ybWF0RXJyb3IJAAACAAAAAQUAAAAidGlja2VyVmFsaWRhdGlvblRpY2tlcklzRXhpc3RFcnJvcgkAAAIAAAABBQAAACR0aWNrZXJWYWxpZGF0aW9uTm90RW5vdWdoUmF0aW5nRXJyb3IJAAACAAAAAQUAAAAXaXNzdWVyQWNjZXNzRGVuaWVkRXJyb3IJAAACAAAAAQUAAAAVbm90RW5vdWdoUGF5bWVudEVycm9yCQAAAgAAAAEFAAAAGW5vdFN1cHBvcnRlZEN1cnJlbmN5RXJyb3IAAAABaQEAAAARdXBkYXRlRGVzY3JpcHRpb24AAAACAAAAB2Fzc2V0SWQAAAALZGVzY3JpcHRpb24EAAAAFGlzc3VlckRlc2NyaXB0aW9uS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABJpc3N1ZXJEZXNjcmlwdGlvbl8CAAAAATwFAAAAB2Fzc2V0SWQCAAAAAT4DCQEAAAAQaXNQYXltZW50SW5XYXZlcwAAAAEFAAAAAWkDCQEAAAAPaXNFbm91Z2hQYXltZW50AAAAAgUAAAABaQUAAAAWZGVzY3JpcHRpb25VcGRhdGVQcmljZQMJAQAAABNpc0NhbGxlckFzc2V0SXNzdWVyAAAAAgUAAAABaQUAAAAHYXNzZXRJZAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAUaXNzdWVyRGVzY3JpcHRpb25LZXkFAAAAC2Rlc2NyaXB0aW9uBQAAAANuaWwJAAACAAAAAQUAAAAXaXNzdWVyQWNjZXNzRGVuaWVkRXJyb3IJAAACAAAAAQUAAAAVbm90RW5vdWdoUGF5bWVudEVycm9yCQAAAgAAAAEFAAAAGW5vdFN1cHBvcnRlZEN1cnJlbmN5RXJyb3IAAAABaQEAAAAKdXBkYXRlTGluawAAAAIAAAAHYXNzZXRJZAAAAARsaW5rBAAAAA1pc3N1ZXJMaW5rS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtpc3N1ZXJMaW5rXwIAAAABPAUAAAAHYXNzZXRJZAIAAAABPgMJAQAAABBpc1BheW1lbnRJbldhdmVzAAAAAQUAAAABaQMJAQAAAA9pc0Vub3VnaFBheW1lbnQAAAACBQAAAAFpBQAAAA9saW5rVXBkYXRlUHJpY2UDCQEAAAATaXNDYWxsZXJBc3NldElzc3VlcgAAAAIFAAAAAWkFAAAAB2Fzc2V0SWQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADWlzc3VlckxpbmtLZXkFAAAABGxpbmsFAAAAA25pbAkAAAIAAAABBQAAABdpc3N1ZXJBY2Nlc3NEZW5pZWRFcnJvcgkAAAIAAAABBQAAABVub3RFbm91Z2hQYXltZW50RXJyb3IJAAACAAAAAQUAAAAZbm90U3VwcG9ydGVkQ3VycmVuY3lFcnJvcgAAAABwJhvA", "chainId": 84, "height": 668166, "spentComplexity": 0 } View: original | compacted Prev: HewXGitJ5cEVswicbNLHoFWDSu7nKJuMUNwQ9YMPk6iC Next: 51rt5Na5JH8q9UaMLP2gzvzbR2v4nFxWucTbJA8Dmbt5 Diff:
OldNewDifferences
3030 let tickerMaxLength = 6
3131
3232 let tickerAllowedLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
33+
34+let reservedTickers = "BTC,ETH,XRP,BCH,LTC,BNB,USDT,EOS,BSV,XMR,XLM,LEO,ADA,TRX,DASH,LINK,XTZ,NEO,MIOTA,ETC,ATOM,XEM,MKR,CRO,USDC,ONT,VSYS,ZEC,DOGE,VET,DCR,HT,BAT,BTG,QTUM,HEDG,TUSD,PAX,EGT,OMG,ALGO,KCS,RVN,LSK,NANO,BTT,BCD,NRG,LAMB,HOT,BCN,DGB,REP,BTS,ZRX,XIN,AOA,IOST,ICX,NET,GNT,PPT,RHOC,SNT,AE,WTC,VERI,R,ZIL,BNT"
3335
3436 let tickerCatalogueOracleAddress = addressFromStringValue("3MxHxW5VWq4KrWcbhFfxKrafXm4mL6rZHfj")
3537
179181 @Callable(i)
180182 func updateTicker (assetId,ticker) = {
181183 let issuerTickerKey = ((("issuerTicker_" + "<") + assetId) + ">")
184+ let isTickerReserved = isSubstrExist(reservedTickers, ticker)
182185 let isTickerFree = match getString(tickerCatalogueOracleAddress, ticker) {
183186 case t: String =>
184187 false
191194 then if (isEnoughPayment(i, tickerUpdatePrice))
192195 then if (isCallerAssetIssuer(i, assetId))
193196 then if (isUpdateAllowedByRating(assetId))
194- then if (isTickerFree)
197+ then if (if (isTickerFree)
198+ then !(isTickerReserved)
199+ else false)
195200 then if (isValidTicker(ticker))
196201 then WriteSet([DataEntry(issuerTickerKey, ticker)])
197202 else throw(tickerValidationWrongFormatError)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let wvs = 100000000
55
66 let notSupportedCurrencyError = "<notSupportedCurrencyError>"
77
88 let issuerAccessDeniedError = "<issuerAccessDeniedError>"
99
1010 let notEnoughPaymentError = "<notEnoughPaymentError>"
1111
1212 let tickerValidationNotEnoughRatingError = "<tickerValidationNotEnoughRatingError>"
1313
1414 let tickerValidationTickerIsExistError = "<tickerValidationTickerIsExistError>"
1515
1616 let tickerValidationWrongFormatError = "<tickerValidationWrongFormatError>"
1717
1818 let nonExistentAssetError = "<nonExistentAssetError>"
1919
2020 let noPaymentError = "<noPaymentError>"
2121
2222 let descriptionUpdatePrice = (1 * wvs)
2323
2424 let linkUpdatePrice = (1 * wvs)
2525
2626 let tickerUpdatePrice = (2 * wvs)
2727
2828 let tickerMinLength = 1
2929
3030 let tickerMaxLength = 6
3131
3232 let tickerAllowedLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
33+
34+let reservedTickers = "BTC,ETH,XRP,BCH,LTC,BNB,USDT,EOS,BSV,XMR,XLM,LEO,ADA,TRX,DASH,LINK,XTZ,NEO,MIOTA,ETC,ATOM,XEM,MKR,CRO,USDC,ONT,VSYS,ZEC,DOGE,VET,DCR,HT,BAT,BTG,QTUM,HEDG,TUSD,PAX,EGT,OMG,ALGO,KCS,RVN,LSK,NANO,BTT,BCD,NRG,LAMB,HOT,BCN,DGB,REP,BTS,ZRX,XIN,AOA,IOST,ICX,NET,GNT,PPT,RHOC,SNT,AE,WTC,VERI,R,ZIL,BNT"
3335
3436 let tickerCatalogueOracleAddress = addressFromStringValue("3MxHxW5VWq4KrWcbhFfxKrafXm4mL6rZHfj")
3537
3638 let tokenRatingOracleAddress = addressFromStringValue("3NADqHoLMbMTfXdP2TeBBSx5mQXePVj3KZm")
3739
3840 func getIntegerFromAccount (accountAddress,key) = match getInteger(accountAddress, key) {
3941 case i: Int =>
4042 i
4143 case _ =>
4244 0
4345 }
4446
4547
4648 func isSubstrExist (str,substr) = match indexOf(str, substr) {
4749 case index: Int =>
4850 true
4951 case index: Unit =>
5052 false
5153 case _ =>
5254 throw()
5355 }
5456
5557
5658 func isValidTicker (ticker) = {
5759 let tickerLetters = split(ticker, "")
5860 let tickerLength = size(tickerLetters)
5961 let isLetter1Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[0])
6062 let isLetter2Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[1])
6163 let isLetter3Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[2])
6264 let isLetter4Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[3])
6365 let isLetter5Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[4])
6466 let isLetter6Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[5])
6567 if ((ticker != ""))
6668 then if (if ((tickerLength >= tickerMinLength))
6769 then (tickerMaxLength >= tickerLength)
6870 else false)
6971 then if ((1 == tickerLength))
7072 then isLetter1Valid
7173 else if ((2 == tickerLength))
7274 then if (isLetter1Valid)
7375 then isLetter2Valid
7476 else false
7577 else if ((3 == tickerLength))
7678 then if (if (isLetter1Valid)
7779 then isLetter2Valid
7880 else false)
7981 then isLetter3Valid
8082 else false
8183 else if ((4 == tickerLength))
8284 then if (if (if (isLetter1Valid)
8385 then isLetter2Valid
8486 else false)
8587 then isLetter3Valid
8688 else false)
8789 then isLetter4Valid
8890 else false
8991 else if ((5 == tickerLength))
9092 then if (if (if (if (isLetter1Valid)
9193 then isLetter2Valid
9294 else false)
9395 then isLetter3Valid
9496 else false)
9597 then isLetter4Valid
9698 else false)
9799 then isLetter5Valid
98100 else false
99101 else if ((6 == tickerLength))
100102 then if (if (if (if (if (isLetter1Valid)
101103 then isLetter2Valid
102104 else false)
103105 then isLetter3Valid
104106 else false)
105107 then isLetter4Valid
106108 else false)
107109 then isLetter5Valid
108110 else false)
109111 then isLetter6Valid
110112 else false
111113 else false
112114 else false
113115 else false
114116 }
115117
116118
117119 func isAssetUpdateAllowedByRating (assetId) = {
118120 let assetRatingKey = (("assetRating_" + assetId) + "_1")
119121 let assetRatingValue = getIntegerFromAccount(tokenRatingOracleAddress, assetRatingKey)
120122 let assetRatingTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerRating_1")
121123 (assetRatingValue >= assetRatingTreshold)
122124 }
123125
124126
125127 func isAssetUpdateAllowedByWeight (assetId) = {
126128 let assetWeightKey = "assetWeight"
127129 let assetWeightValue = getIntegerFromAccount(tokenRatingOracleAddress, assetWeightKey)
128130 let assetWeightTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerWeight")
129131 (assetWeightValue >= assetWeightTreshold)
130132 }
131133
132134
133135 func isAssetUpdateAllowedByVotes (assetId) = {
134136 let assetVotesKey = "assetVotes"
135137 let assetVotesValue = getIntegerFromAccount(tokenRatingOracleAddress, assetVotesKey)
136138 let assetVotesTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerVotes")
137139 (assetVotesValue >= assetVotesTreshold)
138140 }
139141
140142
141143 func isUpdateAllowedByRating (assetId) = if (if (isAssetUpdateAllowedByRating(assetId))
142144 then isAssetUpdateAllowedByWeight(assetId)
143145 else false)
144146 then isAssetUpdateAllowedByVotes(assetId)
145147 else false
146148
147149
148150 func getAssetIssuerAddressFromAssetId (assetId) = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), nonExistentAssetError).issuer)
149151
150152
151153 func getPayment (i) = valueOrErrorMessage(i.payment, noPaymentError)
152154
153155
154156 func isPaymentInWaves (i) = {
155157 let payment = getPayment(i)
156158 if (!(isDefined(payment.assetId)))
157159 then true
158160 else false
159161 }
160162
161163
162164 func isEnoughPayment (i,requiredPayment) = {
163165 let payment = getPayment(i)
164166 if ((payment.amount >= requiredPayment))
165167 then true
166168 else false
167169 }
168170
169171
170172 func isCallerAssetIssuer (i,assetId) = {
171173 let callerAddress = toBase58String(i.caller.bytes)
172174 let assetIssuerAdress = getAssetIssuerAddressFromAssetId(assetId)
173175 if ((callerAddress == assetIssuerAdress))
174176 then true
175177 else false
176178 }
177179
178180
179181 @Callable(i)
180182 func updateTicker (assetId,ticker) = {
181183 let issuerTickerKey = ((("issuerTicker_" + "<") + assetId) + ">")
184+ let isTickerReserved = isSubstrExist(reservedTickers, ticker)
182185 let isTickerFree = match getString(tickerCatalogueOracleAddress, ticker) {
183186 case t: String =>
184187 false
185188 case t: Unit =>
186189 true
187190 case _ =>
188191 throw()
189192 }
190193 if (isPaymentInWaves(i))
191194 then if (isEnoughPayment(i, tickerUpdatePrice))
192195 then if (isCallerAssetIssuer(i, assetId))
193196 then if (isUpdateAllowedByRating(assetId))
194- then if (isTickerFree)
197+ then if (if (isTickerFree)
198+ then !(isTickerReserved)
199+ else false)
195200 then if (isValidTicker(ticker))
196201 then WriteSet([DataEntry(issuerTickerKey, ticker)])
197202 else throw(tickerValidationWrongFormatError)
198203 else throw(tickerValidationTickerIsExistError)
199204 else throw(tickerValidationNotEnoughRatingError)
200205 else throw(issuerAccessDeniedError)
201206 else throw(notEnoughPaymentError)
202207 else throw(notSupportedCurrencyError)
203208 }
204209
205210
206211
207212 @Callable(i)
208213 func updateDescription (assetId,description) = {
209214 let issuerDescriptionKey = ((("issuerDescription_" + "<") + assetId) + ">")
210215 if (isPaymentInWaves(i))
211216 then if (isEnoughPayment(i, descriptionUpdatePrice))
212217 then if (isCallerAssetIssuer(i, assetId))
213218 then WriteSet([DataEntry(issuerDescriptionKey, description)])
214219 else throw(issuerAccessDeniedError)
215220 else throw(notEnoughPaymentError)
216221 else throw(notSupportedCurrencyError)
217222 }
218223
219224
220225
221226 @Callable(i)
222227 func updateLink (assetId,link) = {
223228 let issuerLinkKey = ((("issuerLink_" + "<") + assetId) + ">")
224229 if (isPaymentInWaves(i))
225230 then if (isEnoughPayment(i, linkUpdatePrice))
226231 then if (isCallerAssetIssuer(i, assetId))
227232 then WriteSet([DataEntry(issuerLinkKey, link)])
228233 else throw(issuerAccessDeniedError)
229234 else throw(notEnoughPaymentError)
230235 else throw(notSupportedCurrencyError)
231236 }
232237
233238

github/deemru/w8io/3ef1775 
57.38 ms