tx · 4WCH7wZ4BbWfCrh742AVqH1pacZRF5aMYEWby1MeCVgx

3NAg879tKUJh949h21umkwiaRQhwZftz1BE:  -0.05000000 Waves

2019.09.09 10:33 [668250] smart account 3NAg879tKUJh949h21umkwiaRQhwZftz1BE > SELF 0.00000000 Waves

{ "type": 13, "id": "4WCH7wZ4BbWfCrh742AVqH1pacZRF5aMYEWby1MeCVgx", "fee": 5000000, "feeAssetId": null, "timestamp": 1568014438451, "version": 1, "sender": "3NAg879tKUJh949h21umkwiaRQhwZftz1BE", "senderPublicKey": "BqY2jhkQCcbidtQdQZu6f9RV3AkFAS8VPToHxwYu1KdJ", "proofs": [ "4MWeUBJV4ytqfWXXqm19BHcoEtZEuXekPYL3JTZFKFnMpAAGrbZTs5dJfyZ6Pav3tcgLii2oy9xAoeY165Xh9PXW" ], "script": "base64:AAIDAAAAAAAAAAAAAAAfAAAAABx0aWNrZXJDYXRhbG9ndWVPcmFjbGVBZGRyZXNzCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAECAAAAIzNNeEh4VzVWV3E0S3JXY2JoRmZ4S3JhZlhtNG1MNnJaSGZqAAAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQIAAAAjM05BRHFIb0xNYk1UZlhkUDJUZUJCU3g1bVFYZVBWajNLWm0AAAAAGW5vdFN1cHBvcnRlZEN1cnJlbmN5RXJyb3ICAAAAGzxub3RTdXBwb3J0ZWRDdXJyZW5jeUVycm9yPgAAAAAXaXNzdWVyQWNjZXNzRGVuaWVkRXJyb3ICAAAAGTxpc3N1ZXJBY2Nlc3NEZW5pZWRFcnJvcj4AAAAAFW5vdEVub3VnaFBheW1lbnRFcnJvcgIAAAAXPG5vdEVub3VnaFBheW1lbnRFcnJvcj4AAAAAJHRpY2tlclZhbGlkYXRpb25Ob3RFbm91Z2hSYXRpbmdFcnJvcgIAAAAmPHRpY2tlclZhbGlkYXRpb25Ob3RFbm91Z2hSYXRpbmdFcnJvcj4AAAAAInRpY2tlclZhbGlkYXRpb25UaWNrZXJJc0V4aXN0RXJyb3ICAAAAJDx0aWNrZXJWYWxpZGF0aW9uVGlja2VySXNFeGlzdEVycm9yPgAAAAAgdGlja2VyVmFsaWRhdGlvbldyb25nRm9ybWF0RXJyb3ICAAAAIjx0aWNrZXJWYWxpZGF0aW9uV3JvbmdGb3JtYXRFcnJvcj4AAAAAFW5vbkV4aXN0ZW50QXNzZXRFcnJvcgIAAAAXPG5vbkV4aXN0ZW50QXNzZXRFcnJvcj4AAAAADm5vUGF5bWVudEVycm9yAgAAABA8bm9QYXltZW50RXJyb3I+AAAAABZ0aWNrZXJJc0ltbXV0YWJsZUVycm9yAgAAABg8dGlja2VySXNJbW11dGFibGVFcnJvcj4AAAAAA3d2cwAAAAAABfXhAAAAAAAWZGVzY3JpcHRpb25VcGRhdGVQcmljZQkAAGgAAAACAAAAAAAAAAABBQAAAAN3dnMAAAAAD2xpbmtVcGRhdGVQcmljZQkAAGgAAAACAAAAAAAAAAABBQAAAAN3dnMAAAAAEXRpY2tlclVwZGF0ZVByaWNlCQAAaAAAAAIAAAAAAAAAAAIFAAAAA3d2cwAAAAAPdGlja2VyTWluTGVuZ3RoAAAAAAAAAAABAAAAAA90aWNrZXJNYXhMZW5ndGgAAAAAAAAAAAYAAAAAFHRpY2tlckFsbG93ZWRMZXR0ZXJzAgAAABpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWgAAAAAPcmVzZXJ2ZWRUaWNrZXJzAgAAASVCVEMsRVRILFhSUCxCQ0gsTFRDLEJOQixVU0RULEVPUyxCU1YsWE1SLFhMTSxMRU8sQURBLFRSWCxEQVNILExJTkssWFRaLE5FTyxNSU9UQSxFVEMsQVRPTSxYRU0sTUtSLENSTyxVU0RDLE9OVCxWU1lTLFpFQyxET0dFLFZFVCxEQ1IsSFQsQkFULEJURyxRVFVNLEhFREcsVFVTRCxQQVgsRUdULE9NRyxBTEdPLEtDUyxSVk4sTFNLLE5BTk8sQlRULEJDRCxOUkcsTEFNQixIT1QsQkNOLERHQixSRVAsQlRTLFpSWCxYSU4sQU9BLElPU1QsSUNYLE5FVCxHTlQsUFBULFJIT0MsU05ULEFFLFdUQyxWRVJJLFIsWklMLEJOVAEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgAAAA5hY2NvdW50QWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAOYWNjb3VudEFkZHJlc3MFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFpBQAAAAckbWF0Y2gwBQAAAAFpAAAAAAAAAAAAAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgAAAANzdHIAAAAGc3Vic3RyBAAAAAckbWF0Y2gwCQAEswAAAAIFAAAAA3N0cgUAAAAGc3Vic3RyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAABWluZGV4BQAAAAckbWF0Y2gwBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFaW5kZXgFAAAAByRtYXRjaDAHCQEAAAAFdGhyb3cAAAAAAQAAAA1pc1ZhbGlkVGlja2VyAAAAAQAAAAZ0aWNrZXIEAAAADXRpY2tlckxldHRlcnMJAAS1AAAAAgUAAAAGdGlja2VyAgAAAAAEAAAADHRpY2tlckxlbmd0aAkAAZAAAAABBQAAAA10aWNrZXJMZXR0ZXJzBAAAAA5pc0xldHRlcjFWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAABAAAAA5pc0xldHRlcjJWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAABBAAAAA5pc0xldHRlcjNWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAACBAAAAA5pc0xldHRlcjRWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAADBAAAAA5pc0xldHRlcjVWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAEBAAAAA5pc0xldHRlcjZWYWxpZAkBAAAADWlzU3Vic3RyRXhpc3QAAAACBQAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwkAAZEAAAACBQAAAA10aWNrZXJMZXR0ZXJzAAAAAAAAAAAFAwkBAAAAAiE9AAAAAgUAAAAGdGlja2VyAgAAAAADAwkAAGcAAAACBQAAAAx0aWNrZXJMZW5ndGgFAAAAD3RpY2tlck1pbkxlbmd0aAkAAGcAAAACBQAAAA90aWNrZXJNYXhMZW5ndGgFAAAADHRpY2tlckxlbmd0aAcDCQAAAAAAAAIAAAAAAAAAAAEFAAAADHRpY2tlckxlbmd0aAUAAAAOaXNMZXR0ZXIxVmFsaWQDCQAAAAAAAAIAAAAAAAAAAAIFAAAADHRpY2tlckxlbmd0aAMFAAAADmlzTGV0dGVyMVZhbGlkBQAAAA5pc0xldHRlcjJWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAMFAAAADHRpY2tlckxlbmd0aAMDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHBQAAAA5pc0xldHRlcjNWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAQFAAAADHRpY2tlckxlbmd0aAMDAwUAAAAOaXNMZXR0ZXIxVmFsaWQFAAAADmlzTGV0dGVyMlZhbGlkBwUAAAAOaXNMZXR0ZXIzVmFsaWQHBQAAAA5pc0xldHRlcjRWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAUFAAAADHRpY2tlckxlbmd0aAMDAwMFAAAADmlzTGV0dGVyMVZhbGlkBQAAAA5pc0xldHRlcjJWYWxpZAcFAAAADmlzTGV0dGVyM1ZhbGlkBwUAAAAOaXNMZXR0ZXI0VmFsaWQHBQAAAA5pc0xldHRlcjVWYWxpZAcDCQAAAAAAAAIAAAAAAAAAAAYFAAAADHRpY2tlckxlbmd0aAMDAwMDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHBQAAAA5pc0xldHRlcjNWYWxpZAcFAAAADmlzTGV0dGVyNFZhbGlkBwUAAAAOaXNMZXR0ZXI1VmFsaWQHBQAAAA5pc0xldHRlcjZWYWxpZAcHBwcBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABAAAAB2Fzc2V0SWQEAAAADmFzc2V0UmF0aW5nS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAMYXNzZXRSYXRpbmdfBQAAAAdhc3NldElkAgAAAAJfMQQAAAAQYXNzZXRSYXRpbmdWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAAOYXNzZXRSYXRpbmdLZXkEAAAAE2Fzc2V0UmF0aW5nVHJlc2hvbGQJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MCAAAADnRpY2tlclJhdGluZ18xCQAAZwAAAAIFAAAAEGFzc2V0UmF0aW5nVmFsdWUFAAAAE2Fzc2V0UmF0aW5nVHJlc2hvbGQBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlXZWlnaHQAAAABAAAAB2Fzc2V0SWQEAAAADmFzc2V0V2VpZ2h0S2V5AgAAAAthc3NldFdlaWdodAQAAAAQYXNzZXRXZWlnaHRWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAAOYXNzZXRXZWlnaHRLZXkEAAAAE2Fzc2V0V2VpZ2h0VHJlc2hvbGQJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MCAAAADHRpY2tlcldlaWdodAkAAGcAAAACBQAAABBhc3NldFdlaWdodFZhbHVlBQAAABNhc3NldFdlaWdodFRyZXNob2xkAQAAABtpc0Fzc2V0VXBkYXRlQWxsb3dlZEJ5Vm90ZXMAAAABAAAAB2Fzc2V0SWQEAAAADWFzc2V0Vm90ZXNLZXkCAAAACmFzc2V0Vm90ZXMEAAAAD2Fzc2V0Vm90ZXNWYWx1ZQkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwUAAAANYXNzZXRWb3Rlc0tleQQAAAASYXNzZXRWb3Rlc1RyZXNob2xkCQEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgUAAAAYdG9rZW5SYXRpbmdPcmFjbGVBZGRyZXNzAgAAAAt0aWNrZXJWb3RlcwkAAGcAAAACBQAAAA9hc3NldFZvdGVzVmFsdWUFAAAAEmFzc2V0Vm90ZXNUcmVzaG9sZAEAAAAXaXNVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABAAAAB2Fzc2V0SWQDAwkBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABBQAAAAdhc3NldElkCQEAAAAcaXNBc3NldFVwZGF0ZUFsbG93ZWRCeVdlaWdodAAAAAEFAAAAB2Fzc2V0SWQHCQEAAAAbaXNBc3NldFVwZGF0ZUFsbG93ZWRCeVZvdGVzAAAAAQUAAAAHYXNzZXRJZAcBAAAAIGdldEFzc2V0SXNzdWVyQWRkcmVzc0Zyb21Bc3NldElkAAAAAQAAAAdhc3NldElkCQAEJQAAAAEICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQkAAlkAAAABBQAAAAdhc3NldElkBQAAABVub25FeGlzdGVudEFzc2V0RXJyb3IAAAAGaXNzdWVyAQAAAApnZXRQYXltZW50AAAAAQAAAAFpCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIIBQAAAAFpAAAAB3BheW1lbnQFAAAADm5vUGF5bWVudEVycm9yAQAAABBpc1BheW1lbnRJbldhdmVzAAAAAQAAAAFpBAAAAAdwYXltZW50CQEAAAAKZ2V0UGF5bWVudAAAAAEFAAAAAWkDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBgcBAAAAD2lzRW5vdWdoUGF5bWVudAAAAAIAAAABaQAAAA9yZXF1aXJlZFBheW1lbnQEAAAAB3BheW1lbnQJAQAAAApnZXRQYXltZW50AAAAAQUAAAABaQMJAABnAAAAAggFAAAAB3BheW1lbnQAAAAGYW1vdW50BQAAAA9yZXF1aXJlZFBheW1lbnQGBwEAAAATaXNDYWxsZXJBc3NldElzc3VlcgAAAAIAAAABaQAAAAdhc3NldElkBAAAAA1jYWxsZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAEWFzc2V0SXNzdWVyQWRyZXNzCQEAAAAgZ2V0QXNzZXRJc3N1ZXJBZGRyZXNzRnJvbUFzc2V0SWQAAAABBQAAAAdhc3NldElkAwkAAAAAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAABFhc3NldElzc3VlckFkcmVzcwYHAAAAAwAAAAFpAQAAAAx1cGRhdGVUaWNrZXIAAAACAAAAB2Fzc2V0SWQAAAAGdGlja2VyBAAAAA9pc3N1ZXJUaWNrZXJLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADWlzc3VlclRpY2tlcl8CAAAAATwFAAAAB2Fzc2V0SWQCAAAAAT4EAAAAEGlzVGlja2VyUmVzZXJ2ZWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAPcmVzZXJ2ZWRUaWNrZXJzBQAAAAZ0aWNrZXIEAAAADGlzVGlja2VyRnJlZQQAAAAHJG1hdGNoMAkABB0AAAACBQAAABx0aWNrZXJDYXRhbG9ndWVPcmFjbGVBZGRyZXNzBQAAAAZ0aWNrZXIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABdAUAAAAHJG1hdGNoMAcDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAAAXQFAAAAByRtYXRjaDAGCQEAAAAFdGhyb3cAAAAABAAAABlpc1RpY2tlck5vdEFzc2luZWRUb0Fzc2V0BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAD2lzc3VlclRpY2tlcktleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAF0BQAAAAckbWF0Y2gwBwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAABdAUAAAAHJG1hdGNoMAYJAQAAAAV0aHJvdwAAAAADCQEAAAAQaXNQYXltZW50SW5XYXZlcwAAAAEFAAAAAWkDCQEAAAAPaXNFbm91Z2hQYXltZW50AAAAAgUAAAABaQUAAAARdGlja2VyVXBkYXRlUHJpY2UDCQEAAAATaXNDYWxsZXJBc3NldElzc3VlcgAAAAIFAAAAAWkFAAAAB2Fzc2V0SWQDCQEAAAAXaXNVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABBQAAAAdhc3NldElkAwUAAAAZaXNUaWNrZXJOb3RBc3NpbmVkVG9Bc3NldAMDBQAAAAxpc1RpY2tlckZyZWUJAQAAAAEhAAAAAQUAAAAQaXNUaWNrZXJSZXNlcnZlZAcDCQEAAAANaXNWYWxpZFRpY2tlcgAAAAEFAAAABnRpY2tlcgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAPaXNzdWVyVGlja2VyS2V5BQAAAAZ0aWNrZXIFAAAAA25pbAkAAAIAAAABBQAAACB0aWNrZXJWYWxpZGF0aW9uV3JvbmdGb3JtYXRFcnJvcgkAAAIAAAABBQAAACJ0aWNrZXJWYWxpZGF0aW9uVGlja2VySXNFeGlzdEVycm9yCQAAAgAAAAEFAAAAFnRpY2tlcklzSW1tdXRhYmxlRXJyb3IJAAACAAAAAQUAAAAkdGlja2VyVmFsaWRhdGlvbk5vdEVub3VnaFJhdGluZ0Vycm9yCQAAAgAAAAEFAAAAF2lzc3VlckFjY2Vzc0RlbmllZEVycm9yCQAAAgAAAAEFAAAAFW5vdEVub3VnaFBheW1lbnRFcnJvcgkAAAIAAAABBQAAABlub3RTdXBwb3J0ZWRDdXJyZW5jeUVycm9yAAAAAWkBAAAAEXVwZGF0ZURlc2NyaXB0aW9uAAAAAgAAAAdhc3NldElkAAAAC2Rlc2NyaXB0aW9uBAAAABRpc3N1ZXJEZXNjcmlwdGlvbktleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAASaXNzdWVyRGVzY3JpcHRpb25fAgAAAAE8BQAAAAdhc3NldElkAgAAAAE+AwkBAAAAEGlzUGF5bWVudEluV2F2ZXMAAAABBQAAAAFpAwkBAAAAD2lzRW5vdWdoUGF5bWVudAAAAAIFAAAAAWkFAAAAFmRlc2NyaXB0aW9uVXBkYXRlUHJpY2UDCQEAAAATaXNDYWxsZXJBc3NldElzc3VlcgAAAAIFAAAAAWkFAAAAB2Fzc2V0SWQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAFGlzc3VlckRlc2NyaXB0aW9uS2V5BQAAAAtkZXNjcmlwdGlvbgUAAAADbmlsCQAAAgAAAAEFAAAAF2lzc3VlckFjY2Vzc0RlbmllZEVycm9yCQAAAgAAAAEFAAAAFW5vdEVub3VnaFBheW1lbnRFcnJvcgkAAAIAAAABBQAAABlub3RTdXBwb3J0ZWRDdXJyZW5jeUVycm9yAAAAAWkBAAAACnVwZGF0ZUxpbmsAAAACAAAAB2Fzc2V0SWQAAAAEbGluawQAAAANaXNzdWVyTGlua0tleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALaXNzdWVyTGlua18CAAAAATwFAAAAB2Fzc2V0SWQCAAAAAT4DCQEAAAAQaXNQYXltZW50SW5XYXZlcwAAAAEFAAAAAWkDCQEAAAAPaXNFbm91Z2hQYXltZW50AAAAAgUAAAABaQUAAAAPbGlua1VwZGF0ZVByaWNlAwkBAAAAE2lzQ2FsbGVyQXNzZXRJc3N1ZXIAAAACBQAAAAFpBQAAAAdhc3NldElkCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA1pc3N1ZXJMaW5rS2V5BQAAAARsaW5rBQAAAANuaWwJAAACAAAAAQUAAAAXaXNzdWVyQWNjZXNzRGVuaWVkRXJyb3IJAAACAAAAAQUAAAAVbm90RW5vdWdoUGF5bWVudEVycm9yCQAAAgAAAAEFAAAAGW5vdFN1cHBvcnRlZEN1cnJlbmN5RXJyb3IAAAAARLi7eA==", "chainId": 84, "height": 668250, "spentComplexity": 0 } View: original | compacted Prev: 51rt5Na5JH8q9UaMLP2gzvzbR2v4nFxWucTbJA8Dmbt5 Next: 4F3Yy5REKBAEcqLy4ATSwkKqX57g725JquLXTvjiRout Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let tickerCatalogueOracleAddress = addressFromStringValue("3MxHxW5VWq4KrWcbhFfxKrafXm4mL6rZHfj")
5+
6+let tokenRatingOracleAddress = addressFromStringValue("3NADqHoLMbMTfXdP2TeBBSx5mQXePVj3KZm")
7+
48 let notSupportedCurrencyError = "<notSupportedCurrencyError>"
59
610 let issuerAccessDeniedError = "<issuerAccessDeniedError>"
1721
1822 let noPaymentError = "<noPaymentError>"
1923
24+let tickerIsImmutableError = "<tickerIsImmutableError>"
25+
2026 let wvs = 100000000
2127
2228 let descriptionUpdatePrice = (1 * wvs)
3238 let tickerAllowedLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
3339
3440 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"
35-
36-let tickerCatalogueOracleAddress = addressFromStringValue("3MxHxW5VWq4KrWcbhFfxKrafXm4mL6rZHfj")
37-
38-let tokenRatingOracleAddress = addressFromStringValue("3NADqHoLMbMTfXdP2TeBBSx5mQXePVj3KZm")
3941
4042 func getIntegerFromAccount (accountAddress,key) = match getInteger(accountAddress, key) {
4143 case i: Int =>
190192 case _ =>
191193 throw()
192194 }
195+ let isTickerNotAssinedToAsset = match getString(this, issuerTickerKey) {
196+ case t: String =>
197+ false
198+ case t: Unit =>
199+ true
200+ case _ =>
201+ throw()
202+ }
193203 if (isPaymentInWaves(i))
194204 then if (isEnoughPayment(i, tickerUpdatePrice))
195205 then if (isCallerAssetIssuer(i, assetId))
196206 then if (isUpdateAllowedByRating(assetId))
197- then if (if (isTickerFree)
198- then !(isTickerReserved)
199- else false)
200- then if (isValidTicker(ticker))
201- then WriteSet([DataEntry(issuerTickerKey, ticker)])
202- else throw(tickerValidationWrongFormatError)
203- else throw(tickerValidationTickerIsExistError)
207+ then if (isTickerNotAssinedToAsset)
208+ then if (if (isTickerFree)
209+ then !(isTickerReserved)
210+ else false)
211+ then if (isValidTicker(ticker))
212+ then WriteSet([DataEntry(issuerTickerKey, ticker)])
213+ else throw(tickerValidationWrongFormatError)
214+ else throw(tickerValidationTickerIsExistError)
215+ else throw(tickerIsImmutableError)
204216 else throw(tickerValidationNotEnoughRatingError)
205217 else throw(issuerAccessDeniedError)
206218 else throw(notEnoughPaymentError)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let tickerCatalogueOracleAddress = addressFromStringValue("3MxHxW5VWq4KrWcbhFfxKrafXm4mL6rZHfj")
5+
6+let tokenRatingOracleAddress = addressFromStringValue("3NADqHoLMbMTfXdP2TeBBSx5mQXePVj3KZm")
7+
48 let notSupportedCurrencyError = "<notSupportedCurrencyError>"
59
610 let issuerAccessDeniedError = "<issuerAccessDeniedError>"
711
812 let notEnoughPaymentError = "<notEnoughPaymentError>"
913
1014 let tickerValidationNotEnoughRatingError = "<tickerValidationNotEnoughRatingError>"
1115
1216 let tickerValidationTickerIsExistError = "<tickerValidationTickerIsExistError>"
1317
1418 let tickerValidationWrongFormatError = "<tickerValidationWrongFormatError>"
1519
1620 let nonExistentAssetError = "<nonExistentAssetError>"
1721
1822 let noPaymentError = "<noPaymentError>"
1923
24+let tickerIsImmutableError = "<tickerIsImmutableError>"
25+
2026 let wvs = 100000000
2127
2228 let descriptionUpdatePrice = (1 * wvs)
2329
2430 let linkUpdatePrice = (1 * wvs)
2531
2632 let tickerUpdatePrice = (2 * wvs)
2733
2834 let tickerMinLength = 1
2935
3036 let tickerMaxLength = 6
3137
3238 let tickerAllowedLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
3339
3440 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"
35-
36-let tickerCatalogueOracleAddress = addressFromStringValue("3MxHxW5VWq4KrWcbhFfxKrafXm4mL6rZHfj")
37-
38-let tokenRatingOracleAddress = addressFromStringValue("3NADqHoLMbMTfXdP2TeBBSx5mQXePVj3KZm")
3941
4042 func getIntegerFromAccount (accountAddress,key) = match getInteger(accountAddress, key) {
4143 case i: Int =>
4244 i
4345 case _ =>
4446 0
4547 }
4648
4749
4850 func isSubstrExist (str,substr) = match indexOf(str, substr) {
4951 case index: Int =>
5052 true
5153 case index: Unit =>
5254 false
5355 case _ =>
5456 throw()
5557 }
5658
5759
5860 func isValidTicker (ticker) = {
5961 let tickerLetters = split(ticker, "")
6062 let tickerLength = size(tickerLetters)
6163 let isLetter1Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[0])
6264 let isLetter2Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[1])
6365 let isLetter3Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[2])
6466 let isLetter4Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[3])
6567 let isLetter5Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[4])
6668 let isLetter6Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[5])
6769 if ((ticker != ""))
6870 then if (if ((tickerLength >= tickerMinLength))
6971 then (tickerMaxLength >= tickerLength)
7072 else false)
7173 then if ((1 == tickerLength))
7274 then isLetter1Valid
7375 else if ((2 == tickerLength))
7476 then if (isLetter1Valid)
7577 then isLetter2Valid
7678 else false
7779 else if ((3 == tickerLength))
7880 then if (if (isLetter1Valid)
7981 then isLetter2Valid
8082 else false)
8183 then isLetter3Valid
8284 else false
8385 else if ((4 == tickerLength))
8486 then if (if (if (isLetter1Valid)
8587 then isLetter2Valid
8688 else false)
8789 then isLetter3Valid
8890 else false)
8991 then isLetter4Valid
9092 else false
9193 else if ((5 == tickerLength))
9294 then if (if (if (if (isLetter1Valid)
9395 then isLetter2Valid
9496 else false)
9597 then isLetter3Valid
9698 else false)
9799 then isLetter4Valid
98100 else false)
99101 then isLetter5Valid
100102 else false
101103 else if ((6 == tickerLength))
102104 then if (if (if (if (if (isLetter1Valid)
103105 then isLetter2Valid
104106 else false)
105107 then isLetter3Valid
106108 else false)
107109 then isLetter4Valid
108110 else false)
109111 then isLetter5Valid
110112 else false)
111113 then isLetter6Valid
112114 else false
113115 else false
114116 else false
115117 else false
116118 }
117119
118120
119121 func isAssetUpdateAllowedByRating (assetId) = {
120122 let assetRatingKey = (("assetRating_" + assetId) + "_1")
121123 let assetRatingValue = getIntegerFromAccount(tokenRatingOracleAddress, assetRatingKey)
122124 let assetRatingTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerRating_1")
123125 (assetRatingValue >= assetRatingTreshold)
124126 }
125127
126128
127129 func isAssetUpdateAllowedByWeight (assetId) = {
128130 let assetWeightKey = "assetWeight"
129131 let assetWeightValue = getIntegerFromAccount(tokenRatingOracleAddress, assetWeightKey)
130132 let assetWeightTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerWeight")
131133 (assetWeightValue >= assetWeightTreshold)
132134 }
133135
134136
135137 func isAssetUpdateAllowedByVotes (assetId) = {
136138 let assetVotesKey = "assetVotes"
137139 let assetVotesValue = getIntegerFromAccount(tokenRatingOracleAddress, assetVotesKey)
138140 let assetVotesTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerVotes")
139141 (assetVotesValue >= assetVotesTreshold)
140142 }
141143
142144
143145 func isUpdateAllowedByRating (assetId) = if (if (isAssetUpdateAllowedByRating(assetId))
144146 then isAssetUpdateAllowedByWeight(assetId)
145147 else false)
146148 then isAssetUpdateAllowedByVotes(assetId)
147149 else false
148150
149151
150152 func getAssetIssuerAddressFromAssetId (assetId) = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), nonExistentAssetError).issuer)
151153
152154
153155 func getPayment (i) = valueOrErrorMessage(i.payment, noPaymentError)
154156
155157
156158 func isPaymentInWaves (i) = {
157159 let payment = getPayment(i)
158160 if (!(isDefined(payment.assetId)))
159161 then true
160162 else false
161163 }
162164
163165
164166 func isEnoughPayment (i,requiredPayment) = {
165167 let payment = getPayment(i)
166168 if ((payment.amount >= requiredPayment))
167169 then true
168170 else false
169171 }
170172
171173
172174 func isCallerAssetIssuer (i,assetId) = {
173175 let callerAddress = toBase58String(i.caller.bytes)
174176 let assetIssuerAdress = getAssetIssuerAddressFromAssetId(assetId)
175177 if ((callerAddress == assetIssuerAdress))
176178 then true
177179 else false
178180 }
179181
180182
181183 @Callable(i)
182184 func updateTicker (assetId,ticker) = {
183185 let issuerTickerKey = ((("issuerTicker_" + "<") + assetId) + ">")
184186 let isTickerReserved = isSubstrExist(reservedTickers, ticker)
185187 let isTickerFree = match getString(tickerCatalogueOracleAddress, ticker) {
186188 case t: String =>
187189 false
188190 case t: Unit =>
189191 true
190192 case _ =>
191193 throw()
192194 }
195+ let isTickerNotAssinedToAsset = match getString(this, issuerTickerKey) {
196+ case t: String =>
197+ false
198+ case t: Unit =>
199+ true
200+ case _ =>
201+ throw()
202+ }
193203 if (isPaymentInWaves(i))
194204 then if (isEnoughPayment(i, tickerUpdatePrice))
195205 then if (isCallerAssetIssuer(i, assetId))
196206 then if (isUpdateAllowedByRating(assetId))
197- then if (if (isTickerFree)
198- then !(isTickerReserved)
199- else false)
200- then if (isValidTicker(ticker))
201- then WriteSet([DataEntry(issuerTickerKey, ticker)])
202- else throw(tickerValidationWrongFormatError)
203- else throw(tickerValidationTickerIsExistError)
207+ then if (isTickerNotAssinedToAsset)
208+ then if (if (isTickerFree)
209+ then !(isTickerReserved)
210+ else false)
211+ then if (isValidTicker(ticker))
212+ then WriteSet([DataEntry(issuerTickerKey, ticker)])
213+ else throw(tickerValidationWrongFormatError)
214+ else throw(tickerValidationTickerIsExistError)
215+ else throw(tickerIsImmutableError)
204216 else throw(tickerValidationNotEnoughRatingError)
205217 else throw(issuerAccessDeniedError)
206218 else throw(notEnoughPaymentError)
207219 else throw(notSupportedCurrencyError)
208220 }
209221
210222
211223
212224 @Callable(i)
213225 func updateDescription (assetId,description) = {
214226 let issuerDescriptionKey = ((("issuerDescription_" + "<") + assetId) + ">")
215227 if (isPaymentInWaves(i))
216228 then if (isEnoughPayment(i, descriptionUpdatePrice))
217229 then if (isCallerAssetIssuer(i, assetId))
218230 then WriteSet([DataEntry(issuerDescriptionKey, description)])
219231 else throw(issuerAccessDeniedError)
220232 else throw(notEnoughPaymentError)
221233 else throw(notSupportedCurrencyError)
222234 }
223235
224236
225237
226238 @Callable(i)
227239 func updateLink (assetId,link) = {
228240 let issuerLinkKey = ((("issuerLink_" + "<") + assetId) + ">")
229241 if (isPaymentInWaves(i))
230242 then if (isEnoughPayment(i, linkUpdatePrice))
231243 then if (isCallerAssetIssuer(i, assetId))
232244 then WriteSet([DataEntry(issuerLinkKey, link)])
233245 else throw(issuerAccessDeniedError)
234246 else throw(notEnoughPaymentError)
235247 else throw(notSupportedCurrencyError)
236248 }
237249
238250

github/deemru/w8io/3ef1775 
48.38 ms