tx · 5zzWw2qQYEvxnqh3evKVySAUAWQj1kBBHrN9RfJ2k13b 3N3kKNoJohjVQYNLTrYTGTesr3nq3PZNh37: -0.01000000 Waves 2024.03.19 18:27 [3025086] smart account 3N3kKNoJohjVQYNLTrYTGTesr3nq3PZNh37 > SELF 0.00000000 Waves
{ "type": 13, "id": "5zzWw2qQYEvxnqh3evKVySAUAWQj1kBBHrN9RfJ2k13b", "fee": 1000000, "feeAssetId": null, "timestamp": 1710862138955, "version": 2, "chainId": 84, "sender": "3N3kKNoJohjVQYNLTrYTGTesr3nq3PZNh37", "senderPublicKey": "vmMXxwQAMUAoisvL193ptPiTtaWQqL5YNu2zs1ouTbY", "proofs": [ "5NhKzhsziZNwFG5aEdNZ37kU2XPyDdDs6HZSuemWn31QGR2URLiMnb2hoj7Ymaiu3ehcibDQKDG9xqSSDPKUnZTe" ], "script": "base64:BwIlCAISAwoBCBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGCgACXNlcGFyYXRvcgICX18AB2NoYWluSWQJAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEACGNoYWluSWRXAQFXABBjb250cmFjdEZpbGVuYW1lAhdmdXR1cmVzX2NhbGN1bGF0b3IucmlkZQEHd3JhcEVycgEBcwkArAICCQCsAgIFEGNvbnRyYWN0RmlsZW5hbWUCAjogBQFzAQh0aHJvd0VycgEBcwkAAgEJAQd3cmFwRXJyAQUBcwAPa0ZhY3RvcnlBZGRyZXNzAhIlc19fZmFjdG9yeUFkZHJlc3MAFGZhY3RvcnlBZGRyZXNzT3B0aW9uBAckbWF0Y2gwCQCdCAIFBHRoaXMFD2tGYWN0b3J5QWRkcmVzcwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAKYIAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IADmZhY3RvcnlBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIFFGZhY3RvcnlBZGRyZXNzT3B0aW9uCQEHd3JhcEVycgECF2ludmFsaWQgZmFjdG9yeSBhZGRyZXNzAQttdXN0QWRkcmVzcwIBaQdhZGRyZXNzAwkAAAIIBQFpBmNhbGxlcgUHYWRkcmVzcwYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkAQhtdXN0VGhpcwEBaQkBC211c3RBZGRyZXNzAgUBaQUEdGhpcwELbXVzdEZhY3RvcnkBAWkJAQttdXN0QWRkcmVzcwIFAWkFDmZhY3RvcnlBZGRyZXNzAAt3YXZlc1N0cmluZwIFV0FWRVMADXF1ZXVlSXRlbVNpemUAIAEMcGFyc2VBc3NldElkAQVpbnB1dAMJAAACBQVpbnB1dAULd2F2ZXNTdHJpbmcFBHVuaXQJANkEAQUFaW5wdXQBD2Fzc2V0SWRUb1N0cmluZwEFaW5wdXQDCQAAAgUFaW5wdXQFBHVuaXQFC3dhdmVzU3RyaW5nCQDYBAEJAQV2YWx1ZQEFBWlucHV0AA5rQWNjb3VudFNjcmlwdAIRJXNfX2FjY291bnRTY3JpcHQBDWFjY291bnRTY3JpcHQACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgUOZmFjdG9yeUFkZHJlc3MFDmtBY2NvdW50U2NyaXB0CQEHd3JhcEVycgECGWFjY291bnQgc2NyaXB0IGlzIG5vdCBzZXQADWtSZXdhcmRBbW91bnQCECVzX19yZXdhcmRBbW91bnQBDHJld2FyZEFtb3VudAAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQ5mYWN0b3J5QWRkcmVzcwUNa1Jld2FyZEFtb3VudAkBB3dyYXBFcnIBAhhyZXdhcmQgYW1vdW50IGlzIG5vdCBzZXQADmtBY2NvdW50c0xpbWl0AhElc19fYWNjb3VudHNMaW1pdAAUYWNjb3VudHNMaW1pdERlZmF1bHQAFAENYWNjb3VudHNMaW1pdAAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOZmFjdG9yeUFkZHJlc3MFDmtBY2NvdW50c0xpbWl0BRRhY2NvdW50c0xpbWl0RGVmYXVsdAAUUkVRVUVTVF9TVEFUVVNfRU1QVFkAAAAUUkVRVUVTVF9TVEFUVVNfUkVBRFkAAQEOa1JlcXVlc3RTdGF0dXMBCXJlcXVlc3RJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgkA2AQBBQlyZXF1ZXN0SWQJAMwIAgIGc3RhdHVzBQNuaWwFCXNlcGFyYXRvcgEYa0FjY291bnRDcmVhdG9yUHVibGljS2V5AQ5hY2NvdW50QWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgkApQgBBQ5hY2NvdW50QWRkcmVzcwkAzAgCAhBjcmVhdG9yUHVibGljS2V5BQNuaWwFCXNlcGFyYXRvcgEWa1JlcXVlc3RPd25lclB1YmxpY0tleQEJcmVxdWVzdElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCCQDYBAEFCXJlcXVlc3RJZAkAzAgCAg5vd25lclB1YmxpY0tleQUDbmlsBQlzZXBhcmF0b3IBFWtSZXF1ZXN0QW1vdW50QXNzZXRJZAEJcmVxdWVzdElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCCQDYBAEFCXJlcXVlc3RJZAkAzAgCAg1hbW91bnRBc3NldElkBQNuaWwFCXNlcGFyYXRvcgEUa1JlcXVlc3RQcmljZUFzc2V0SWQBCXJlcXVlc3RJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgkA2AQBBQlyZXF1ZXN0SWQJAMwIAgIMcHJpY2VBc3NldElkBQNuaWwFCXNlcGFyYXRvcgEca1JlcXVlc3RJZFRvQWNjb3VudFB1YmxpY0tleQEJcmVxdWVzdElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCCQDYBAEFCXJlcXVlc3RJZAkAzAgCAhtyZXF1ZXN0SWRUb0FjY291bnRQdWJsaWNLZXkFA25pbAUJc2VwYXJhdG9yARprQWNjb3VudEFkZHJlc3NUb1JlcXVlc3RJZAEOYWNjb3VudEFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAIJAKUIAQUOYWNjb3VudEFkZHJlc3MJAMwIAgIZYWNjb3VudEFkZHJlc3NUb1JlcXVlc3RJZAUDbmlsBQlzZXBhcmF0b3IBDmtSZXF1ZXN0c1F1ZXVlAAkAuQkCCQDMCAICAiVzCQDMCAICDXJlcXVlc3RzUXVldWUFA25pbAUJc2VwYXJhdG9yAQ1yZXF1ZXN0c1F1ZXVlAAkBC3ZhbHVlT3JFbHNlAgkAnAgCBQ5mYWN0b3J5QWRkcmVzcwkBDmtSZXF1ZXN0c1F1ZXVlAAEAAQ5rQWNjb3VudHNRdWV1ZQAJALkJAgkAzAgCAgIlcwkAzAgCAg1hY2NvdW50c1F1ZXVlBQNuaWwFCXNlcGFyYXRvcgENYWNjb3VudHNRdWV1ZQAJAQt2YWx1ZU9yRWxzZQIJAJwIAgUOZmFjdG9yeUFkZHJlc3MJAQ5rQWNjb3VudHNRdWV1ZQABAAEQa1JlcXVlc3RzQnlPd25lcgEMb3duZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAghhY2NvdW50cwkAzAgCCQClCAEFDG93bmVyQWRkcmVzcwUDbmlsBQlzZXBhcmF0b3IBD3JlcXVlc3RzQnlPd25lcgEMb3duZXJBZGRyZXNzCQELdmFsdWVPckVsc2UCCQCcCAIFDmZhY3RvcnlBZGRyZXNzCQEQa1JlcXVlc3RzQnlPd25lcgEFDG93bmVyQWRkcmVzcwEAAQxrUGFpckFsbG93ZWQCDWFtb3VudEFzc2V0SWQMcHJpY2VBc3NldElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQ1hbW91bnRBc3NldElkCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQxwcmljZUFzc2V0SWQJAMwIAgILcGFpckFsbG93ZWQFA25pbAUJc2VwYXJhdG9yAQtwYWlyQWxsb3dlZAINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAJsIAgUOZmFjdG9yeUFkZHJlc3MJAQxrUGFpckFsbG93ZWQCBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQHBgFpAQRpbml0ARFmYWN0b3J5QWRkcmVzc1N0cgQLY2hlY2tDYWxsZXIJAQhtdXN0VGhpcwEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa0ZhY3RvcnlBZGRyZXNzBRFmYWN0b3J5QWRkcmVzc1N0cgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDnJlcXVlc3RBY2NvdW50Ag9jYWxsZXJQdWJsaWNLZXkEYXJncwQLY2hlY2tDYWxsZXIJAQttdXN0RmFjdG9yeQEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBBBhbW91bnRBc3NldElkU3RyCQCRAwIFBGFyZ3MAAAQPcHJpY2VBc3NldElkU3RyCQCRAwIFBGFyZ3MAAQQLdXNlckFkZHJlc3MJAKcIAQUPY2FsbGVyUHVibGljS2V5BAlyZXF1ZXN0SWQJAPcDAQkAywECCQDLAQIIBQt1c2VyQWRkcmVzcwVieXRlcwkA2QQBBRBhbW91bnRBc3NldElkU3RyCQDZBAEFD3ByaWNlQXNzZXRJZFN0cgQNYW1vdW50QXNzZXRJZAkBDHBhcnNlQXNzZXRJZAEFEGFtb3VudEFzc2V0SWRTdHIEDHByaWNlQXNzZXRJZAkBDHBhcnNlQXNzZXRJZAEFD3ByaWNlQXNzZXRJZFN0cgQSdXNlclJlcXVlc3RzTnVtYmVyCQBpAgkAsQIBCQEQa1JlcXVlc3RzQnlPd25lcgEFC3VzZXJBZGRyZXNzBQ1xdWV1ZUl0ZW1TaXplBAZjaGVja3MJAMwIAgMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEGCQEIdGhyb3dFcnIBAhUxIHBheW1lbnQgaXMgcmVxdWlyZWQJAMwIAgMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBHVuaXQGCQEIdGhyb3dFcnIBAg1pbnZhbGlkIGFzc2V0CQDMCAIDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAQxyZXdhcmRBbW91bnQABgkBCHRocm93RXJyAQIOaW52YWxpZCBhbW91bnQJAMwIAgMJAQtwYWlyQWxsb3dlZAIFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAYJAQh0aHJvd0VycgECE3BhaXIgaXMgbm90IGFsbG93ZWQJAMwIAgMJAAACCQCaCAIFDmZhY3RvcnlBZGRyZXNzCQEOa1JlcXVlc3RTdGF0dXMBBQlyZXF1ZXN0SWQFBHVuaXQGCQEIdGhyb3dFcnIBAhlhY2NvdW50IGlzIGFscmVhZHkgZXhpc3RzCQDMCAIDCQBmAgkBDWFjY291bnRzTGltaXQABRJ1c2VyUmVxdWVzdHNOdW1iZXIGCQEIdGhyb3dFcnIBCQCsAgICEmFjY291bnRzIGxpbWl0IGlzIAkApAMBCQENYWNjb3VudHNMaW1pdAAFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQLJHQwNTAyMDYzNzYDCQAAAgkAyAEBCQENYWNjb3VudHNRdWV1ZQAAAAkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDmZhY3RvcnlBZGRyZXNzCQEMcmV3YXJkQW1vdW50AAUEdW5pdAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDGludGVnZXJFbnRyeQkAzAgCCQEOa1JlcXVlc3RTdGF0dXMBBQlyZXF1ZXN0SWQJAMwIAgUUUkVRVUVTVF9TVEFUVVNfRU1QVFkFA25pbAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC2JpbmFyeUVudHJ5CQDMCAIJAQ5rUmVxdWVzdHNRdWV1ZQAJAMwIAgkAywECCQENcmVxdWVzdHNRdWV1ZQAFCXJlcXVlc3RJZAUDbmlsBQNuaWwFA25pbAQQYWNjb3VudFB1YmxpY0tleQkAyQECCQENYWNjb3VudHNRdWV1ZQAFDXF1ZXVlSXRlbVNpemUEDmFjY291bnRBZGRyZXNzCQCnCAEFEGFjY291bnRQdWJsaWNLZXkEDmNyZWF0b3JBZGRyZXNzCQCnCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQ5mYWN0b3J5QWRkcmVzcwkBGGtBY2NvdW50Q3JlYXRvclB1YmxpY0tleQEFDmFjY291bnRBZGRyZXNzCQEHd3JhcEVycgECGmludmFsaWQgY3JlYXRvciBwdWJsaWMga2V5CQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOY3JlYXRvckFkZHJlc3MJAQxyZXdhcmRBbW91bnQABQR1bml0BQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwILYmluYXJ5RW50cnkJAMwIAgkBDmtBY2NvdW50c1F1ZXVlAAkAzAgCCQDKAQIJAQ1hY2NvdW50c1F1ZXVlAAUNcXVldWVJdGVtU2l6ZQUDbmlsBQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwIMaW50ZWdlckVudHJ5CQDMCAIJAQ5rUmVxdWVzdFN0YXR1cwEFCXJlcXVlc3RJZAkAzAgCBRRSRVFVRVNUX1NUQVRVU19SRUFEWQUDbmlsBQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwILYmluYXJ5RW50cnkJAMwIAgkBHGtSZXF1ZXN0SWRUb0FjY291bnRQdWJsaWNLZXkBBQlyZXF1ZXN0SWQJAMwIAgUQYWNjb3VudFB1YmxpY0tleQUDbmlsBQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwILc3RyaW5nRW50cnkJAMwIAgkBGmtBY2NvdW50QWRkcmVzc1RvUmVxdWVzdElkAQUOYWNjb3VudEFkZHJlc3MJAMwIAgkA2AQBBQlyZXF1ZXN0SWQFA25pbAUDbmlsBQNuaWwEB2FjdGlvbnMIBQskdDA1MDIwNjM3NgJfMQQOZmFjdG9yeUFjdGlvbnMIBQskdDA1MDIwNjM3NgJfMgkAlAoCBQdhY3Rpb25zCQDOCAIFDmZhY3RvcnlBY3Rpb25zCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC2JpbmFyeUVudHJ5CQDMCAIJARZrUmVxdWVzdE93bmVyUHVibGljS2V5AQUJcmVxdWVzdElkCQDMCAIFD2NhbGxlclB1YmxpY0tleQUDbmlsBQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwILYmluYXJ5RW50cnkJAMwIAgkBEGtSZXF1ZXN0c0J5T3duZXIBBQt1c2VyQWRkcmVzcwkAzAgCCQDLAQIJAQ9yZXF1ZXN0c0J5T3duZXIBBQt1c2VyQWRkcmVzcwUJcmVxdWVzdElkBQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtzdHJpbmdFbnRyeQkAzAgCCQEVa1JlcXVlc3RBbW91bnRBc3NldElkAQUJcmVxdWVzdElkCQDMCAIFEGFtb3VudEFzc2V0SWRTdHIFA25pbAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC3N0cmluZ0VudHJ5CQDMCAIJARRrUmVxdWVzdFByaWNlQXNzZXRJZAEFCXJlcXVlc3RJZAkAzAgCBQ9wcmljZUFzc2V0SWRTdHIFA25pbAUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKYWRkQWNjb3VudAIPY2FsbGVyUHVibGljS2V5BGFyZ3MEC2NoZWNrQ2FsbGVyCQELbXVzdEZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQQY3JlYXRvclB1YmxpY0tleQkA2QQBCQCRAwIFBGFyZ3MAAAQQYWNjb3VudFB1YmxpY0tleQUPY2FsbGVyUHVibGljS2V5BA5hY2NvdW50QWRkcmVzcwkApwgBBQ9jYWxsZXJQdWJsaWNLZXkEDmNyZWF0b3JBZGRyZXNzCQCnCAEFEGNyZWF0b3JQdWJsaWNLZXkEBmNoZWNrcwkAzAgCAwkAAAIJAJwIAgUOZmFjdG9yeUFkZHJlc3MJARhrQWNjb3VudENyZWF0b3JQdWJsaWNLZXkBBQ5hY2NvdW50QWRkcmVzcwUEdW5pdAYJAQh0aHJvd0VycgECGWFjY291bnQgaXMgYWxyZWFkeSBleGlzdHMJAMwIAgMEByRtYXRjaDAJAPEHAQUOYWNjb3VudEFkZHJlc3MDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkAAAIFAWIJAPEVAQkBDWFjY291bnRTY3JpcHQABwYJAQh0aHJvd0VycgECDmludmFsaWQgc2NyaXB0BQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MECyR0MDc1Nzc4NTc5AwkAAAIJAMgBAQkBDXJlcXVlc3RzUXVldWUAAAAJAJQKAgUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC2JpbmFyeUVudHJ5CQDMCAIJAQ5rQWNjb3VudHNRdWV1ZQAJAMwIAgkAywECCQENYWNjb3VudHNRdWV1ZQAFEGFjY291bnRQdWJsaWNLZXkFA25pbAUDbmlsBQNuaWwECXJlcXVlc3RJZAkAyQECCQENcmVxdWVzdHNRdWV1ZQAFDXF1ZXVlSXRlbVNpemUJAJQKAgUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDGludGVnZXJFbnRyeQkAzAgCCQEOa1JlcXVlc3RTdGF0dXMBBQlyZXF1ZXN0SWQJAMwIAgUUUkVRVUVTVF9TVEFUVVNfUkVBRFkFA25pbAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC2JpbmFyeUVudHJ5CQDMCAIJARxrUmVxdWVzdElkVG9BY2NvdW50UHVibGljS2V5AQUJcmVxdWVzdElkCQDMCAIFEGFjY291bnRQdWJsaWNLZXkFA25pbAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC2JpbmFyeUVudHJ5CQDMCAIJAQ5rUmVxdWVzdHNRdWV1ZQAJAMwIAgkAygECCQENcmVxdWVzdHNRdWV1ZQAFDXF1ZXVlSXRlbVNpemUFA25pbAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC3N0cmluZ0VudHJ5CQDMCAIJARprQWNjb3VudEFkZHJlc3NUb1JlcXVlc3RJZAEFDmFjY291bnRBZGRyZXNzCQDMCAIJANgEAQUJcmVxdWVzdElkBQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAg10cmFuc2ZlcldhdmVzCQDMCAIIBQ5jcmVhdG9yQWRkcmVzcwVieXRlcwkAzAgCCQEMcmV3YXJkQW1vdW50AAUDbmlsBQNuaWwFA25pbAQHYWN0aW9ucwgFCyR0MDc1Nzc4NTc5Al8xBA5mYWN0b3J5QWN0aW9ucwgFCyR0MDc1Nzc4NTc5Al8yCQCUCgIFB2FjdGlvbnMJAM4IAgUOZmFjdG9yeUFjdGlvbnMJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwILYmluYXJ5RW50cnkJAMwIAgkBGGtBY2NvdW50Q3JlYXRvclB1YmxpY0tleQEFDmFjY291bnRBZGRyZXNzCQDMCAIFEGNyZWF0b3JQdWJsaWNLZXkFA25pbAUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHZGVwb3NpdAIPY2FsbGVyUHVibGljS2V5BGFyZ3MEC2NoZWNrQ2FsbGVyCQELbXVzdEZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQOYWNjb3VudEFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFBGFyZ3MAAAkBB3dyYXBFcnIBAhdpbnZhbGlkIGFjY291bnQgYWRkcmVzcwQHcGF5bWVudAkAkQMCCAUBaQhwYXltZW50cwAABAdhY3Rpb25zCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDmFjY291bnRBZGRyZXNzCAUHcGF5bWVudAZhbW91bnQIBQdwYXltZW50B2Fzc2V0SWQFA25pbAQOZmFjdG9yeUFjdGlvbnMFA25pbAkAlAoCBQdhY3Rpb25zBQ5mYWN0b3J5QWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQh3aXRoZHJhdwIPY2FsbGVyUHVibGljS2V5BGFyZ3MEC2NoZWNrQ2FsbGVyCQELbXVzdEZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLdXNlckFkZHJlc3MJAKcIAQUPY2FsbGVyUHVibGljS2V5BA5hY2NvdW50QWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUEYXJncwAACQEHd3JhcEVycgECF2ludmFsaWQgYWNjb3VudCBhZGRyZXNzBAZhbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFBGFyZ3MAAQkBB3dyYXBFcnIBAg5pbnZhbGlkIGFtb3VudAQHYXNzZXRJZAkBDHBhcnNlQXNzZXRJZAEJAJEDAgUEYXJncwACBAtpbnZvY2F0aW9ucwkAzAgCCQD8BwQFDmFjY291bnRBZGRyZXNzAg10cmFuc2ZlckFzc2V0CQDMCAIIBQt1c2VyQWRkcmVzcwVieXRlcwkAzAgCBQZhbW91bnQJAMwIAgUHYXNzZXRJZAUDbmlsBQNuaWwFA25pbAkAlAoCBQNuaWwFC2ludm9jYXRpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDXBhaXJBbGxvd2FuY2UCD2NhbGxlclB1YmxpY0tleQRhcmdzBAtjaGVja0NhbGxlcgkBC211c3RGYWN0b3J5AQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEEGFtb3VudEFzc2V0SWRTdHIJAJEDAgUEYXJncwAABA9wcmljZUFzc2V0SWRTdHIJAJEDAgUEYXJncwABBAhhbGxvd1N0cgkAkQMCBQRhcmdzAAIEDWFtb3VudEFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBBRBhbW91bnRBc3NldElkU3RyBAxwcmljZUFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBBQ9wcmljZUFzc2V0SWRTdHIEBWFsbG93CQAAAgUIYWxsb3dTdHICBHRydWUEC2ludm9jYXRpb25zCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDGJvb2xlYW5FbnRyeQkAzAgCCQEMa1BhaXJBbGxvd2VkAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkCQDMCAIFBWFsbG93BQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAULaW52b2NhdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AngyJ7w==", "height": 3025086, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 525AKwtCWfWFMyPPL2ecfnmjF6FXAYzXXHGDh1u7DJGB Next: AeE9HsMec7dmamH2zeLctPppdFspzLQdfdpsaXCAjDFS Diff:
Old | New | Differences | |
---|---|---|---|
251 | 251 | } | |
252 | 252 | ||
253 | 253 | ||
254 | + | ||
255 | + | @Callable(m) | |
256 | + | func pairAllowance (aa,ab) = { | |
257 | + | let Z = p(m) | |
258 | + | if ((Z == Z)) | |
259 | + | then { | |
260 | + | let ac = ab[0] | |
261 | + | let ad = ab[1] | |
262 | + | let at = ab[2] | |
263 | + | let V = s(ac) | |
264 | + | let W = s(ad) | |
265 | + | let au = (at == "true") | |
266 | + | let as = [invoke(k, "booleanEntry", [U(V, W), au], nil)] | |
267 | + | $Tuple2(nil, as) | |
268 | + | } | |
269 | + | else throw("Strict value is not equal to itself.") | |
270 | + | } | |
271 | + | ||
272 | + |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 7 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | 6 | let b = take(drop(this.bytes, 1), 1) | |
7 | 7 | ||
8 | 8 | let c = base58'2W' | |
9 | 9 | ||
10 | 10 | let d = "futures_calculator.ride" | |
11 | 11 | ||
12 | 12 | func e (f) = ((d + ": ") + f) | |
13 | 13 | ||
14 | 14 | ||
15 | 15 | func g (f) = throw(e(f)) | |
16 | 16 | ||
17 | 17 | ||
18 | 18 | let h = "%s__factoryAddress" | |
19 | 19 | ||
20 | 20 | let i = { | |
21 | 21 | let j = getString(this, h) | |
22 | 22 | if ($isInstanceOf(j, "String")) | |
23 | 23 | then { | |
24 | 24 | let f = j | |
25 | 25 | addressFromString(f) | |
26 | 26 | } | |
27 | 27 | else if ($isInstanceOf(j, "Unit")) | |
28 | 28 | then unit | |
29 | 29 | else throw("Match error") | |
30 | 30 | } | |
31 | 31 | ||
32 | 32 | let k = valueOrErrorMessage(i, e("invalid factory address")) | |
33 | 33 | ||
34 | 34 | func l (m,n) = if ((m.caller == n)) | |
35 | 35 | then true | |
36 | 36 | else g("permission denied") | |
37 | 37 | ||
38 | 38 | ||
39 | 39 | func o (m) = l(m, this) | |
40 | 40 | ||
41 | 41 | ||
42 | 42 | func p (m) = l(m, k) | |
43 | 43 | ||
44 | 44 | ||
45 | 45 | let q = "WAVES" | |
46 | 46 | ||
47 | 47 | let r = 32 | |
48 | 48 | ||
49 | 49 | func s (t) = if ((t == q)) | |
50 | 50 | then unit | |
51 | 51 | else fromBase58String(t) | |
52 | 52 | ||
53 | 53 | ||
54 | 54 | func u (t) = if ((t == unit)) | |
55 | 55 | then q | |
56 | 56 | else toBase58String(value(t)) | |
57 | 57 | ||
58 | 58 | ||
59 | 59 | let v = "%s__accountScript" | |
60 | 60 | ||
61 | 61 | func w () = valueOrErrorMessage(getBinary(k, v), e("account script is not set")) | |
62 | 62 | ||
63 | 63 | ||
64 | 64 | let x = "%s__rewardAmount" | |
65 | 65 | ||
66 | 66 | func y () = valueOrErrorMessage(getInteger(k, x), e("reward amount is not set")) | |
67 | 67 | ||
68 | 68 | ||
69 | 69 | let z = "%s__accountsLimit" | |
70 | 70 | ||
71 | 71 | let A = 20 | |
72 | 72 | ||
73 | 73 | func B () = valueOrElse(getInteger(k, z), A) | |
74 | 74 | ||
75 | 75 | ||
76 | 76 | let C = 0 | |
77 | 77 | ||
78 | 78 | let D = 1 | |
79 | 79 | ||
80 | 80 | func E (F) = makeString(["%s%s", toBase58String(F), "status"], a) | |
81 | 81 | ||
82 | 82 | ||
83 | 83 | func G (H) = makeString(["%s%s", toString(H), "creatorPublicKey"], a) | |
84 | 84 | ||
85 | 85 | ||
86 | 86 | func I (F) = makeString(["%s%s", toBase58String(F), "ownerPublicKey"], a) | |
87 | 87 | ||
88 | 88 | ||
89 | 89 | func J (F) = makeString(["%s%s", toBase58String(F), "amountAssetId"], a) | |
90 | 90 | ||
91 | 91 | ||
92 | 92 | func K (F) = makeString(["%s%s", toBase58String(F), "priceAssetId"], a) | |
93 | 93 | ||
94 | 94 | ||
95 | 95 | func L (F) = makeString(["%s%s", toBase58String(F), "requestIdToAccountPublicKey"], a) | |
96 | 96 | ||
97 | 97 | ||
98 | 98 | func M (H) = makeString(["%s%s", toString(H), "accountAddressToRequestId"], a) | |
99 | 99 | ||
100 | 100 | ||
101 | 101 | func N () = makeString(["%s", "requestsQueue"], a) | |
102 | 102 | ||
103 | 103 | ||
104 | 104 | func O () = valueOrElse(getBinary(k, N()), base58'') | |
105 | 105 | ||
106 | 106 | ||
107 | 107 | func P () = makeString(["%s", "accountsQueue"], a) | |
108 | 108 | ||
109 | 109 | ||
110 | 110 | func Q () = valueOrElse(getBinary(k, P()), base58'') | |
111 | 111 | ||
112 | 112 | ||
113 | 113 | func R (S) = makeString(["%s%s", "accounts", toString(S)], a) | |
114 | 114 | ||
115 | 115 | ||
116 | 116 | func T (S) = valueOrElse(getBinary(k, R(S)), base58'') | |
117 | 117 | ||
118 | 118 | ||
119 | 119 | func U (V,W) = makeString(["%s%s%s", u(V), u(W), "pairAllowed"], a) | |
120 | 120 | ||
121 | 121 | ||
122 | 122 | func X (V,W) = valueOrElse(getBoolean(k, U(V, W)), false) | |
123 | 123 | ||
124 | 124 | ||
125 | 125 | @Callable(m) | |
126 | 126 | func init (Y) = { | |
127 | 127 | let Z = o(m) | |
128 | 128 | if ((Z == Z)) | |
129 | 129 | then $Tuple2([StringEntry(h, Y)], unit) | |
130 | 130 | else throw("Strict value is not equal to itself.") | |
131 | 131 | } | |
132 | 132 | ||
133 | 133 | ||
134 | 134 | ||
135 | 135 | @Callable(m) | |
136 | 136 | func requestAccount (aa,ab) = { | |
137 | 137 | let Z = p(m) | |
138 | 138 | if ((Z == Z)) | |
139 | 139 | then { | |
140 | 140 | let ac = ab[0] | |
141 | 141 | let ad = ab[1] | |
142 | 142 | let ae = addressFromPublicKey(aa) | |
143 | 143 | let F = sha256(((ae.bytes + fromBase58String(ac)) + fromBase58String(ad))) | |
144 | 144 | let V = s(ac) | |
145 | 145 | let W = s(ad) | |
146 | 146 | let af = (size(R(ae)) / r) | |
147 | 147 | let ag = [if ((size(m.payments) == 1)) | |
148 | 148 | then true | |
149 | 149 | else g("1 payment is required"), if ((m.payments[0].assetId == unit)) | |
150 | 150 | then true | |
151 | 151 | else g("invalid asset"), if ((m.payments[0].amount == y())) | |
152 | 152 | then true | |
153 | 153 | else g("invalid amount"), if (X(V, W)) | |
154 | 154 | then true | |
155 | 155 | else g("pair is not allowed"), if ((getInteger(k, E(F)) == unit)) | |
156 | 156 | then true | |
157 | 157 | else g("account is already exists"), if ((B() > af)) | |
158 | 158 | then true | |
159 | 159 | else g(("accounts limit is " + toString(B())))] | |
160 | 160 | if ((ag == ag)) | |
161 | 161 | then { | |
162 | 162 | let ah = if ((size(Q()) == 0)) | |
163 | 163 | then $Tuple2([ScriptTransfer(k, y(), unit)], [invoke(k, "integerEntry", [E(F), C], nil), invoke(k, "binaryEntry", [N(), (O() + F)], nil)]) | |
164 | 164 | else { | |
165 | 165 | let ai = take(Q(), r) | |
166 | 166 | let H = addressFromPublicKey(ai) | |
167 | 167 | let aj = addressFromPublicKey(valueOrErrorMessage(getBinary(k, G(H)), e("invalid creator public key"))) | |
168 | 168 | $Tuple2([ScriptTransfer(aj, y(), unit)], [invoke(k, "binaryEntry", [P(), drop(Q(), r)], nil), invoke(k, "integerEntry", [E(F), D], nil), invoke(k, "binaryEntry", [L(F), ai], nil), invoke(k, "stringEntry", [M(H), toBase58String(F)], nil)]) | |
169 | 169 | } | |
170 | 170 | let ak = ah._1 | |
171 | 171 | let al = ah._2 | |
172 | 172 | $Tuple2(ak, (al ++ [invoke(k, "binaryEntry", [I(F), aa], nil), invoke(k, "binaryEntry", [R(ae), (T(ae) + F)], nil), invoke(k, "stringEntry", [J(F), ac], nil), invoke(k, "stringEntry", [K(F), ad], nil)])) | |
173 | 173 | } | |
174 | 174 | else throw("Strict value is not equal to itself.") | |
175 | 175 | } | |
176 | 176 | else throw("Strict value is not equal to itself.") | |
177 | 177 | } | |
178 | 178 | ||
179 | 179 | ||
180 | 180 | ||
181 | 181 | @Callable(m) | |
182 | 182 | func addAccount (aa,ab) = { | |
183 | 183 | let Z = p(m) | |
184 | 184 | if ((Z == Z)) | |
185 | 185 | then { | |
186 | 186 | let am = fromBase58String(ab[0]) | |
187 | 187 | let ai = aa | |
188 | 188 | let H = addressFromPublicKey(aa) | |
189 | 189 | let aj = addressFromPublicKey(am) | |
190 | 190 | let ag = [if ((getBinary(k, G(H)) == unit)) | |
191 | 191 | then true | |
192 | 192 | else g("account is already exists"), if ({ | |
193 | 193 | let j = scriptHash(H) | |
194 | 194 | if ($isInstanceOf(j, "ByteVector")) | |
195 | 195 | then { | |
196 | 196 | let an = j | |
197 | 197 | (an == blake2b256_32Kb(w())) | |
198 | 198 | } | |
199 | 199 | else false | |
200 | 200 | }) | |
201 | 201 | then true | |
202 | 202 | else g("invalid script")] | |
203 | 203 | if ((ag == ag)) | |
204 | 204 | then { | |
205 | 205 | let ao = if ((size(O()) == 0)) | |
206 | 206 | then $Tuple2(nil, [invoke(k, "binaryEntry", [P(), (Q() + ai)], nil)]) | |
207 | 207 | else { | |
208 | 208 | let F = take(O(), r) | |
209 | 209 | $Tuple2(nil, [invoke(k, "integerEntry", [E(F), D], nil), invoke(k, "binaryEntry", [L(F), ai], nil), invoke(k, "binaryEntry", [N(), drop(O(), r)], nil), invoke(k, "stringEntry", [M(H), toBase58String(F)], nil), invoke(k, "transferWaves", [aj.bytes, y()], nil)]) | |
210 | 210 | } | |
211 | 211 | let ak = ao._1 | |
212 | 212 | let al = ao._2 | |
213 | 213 | $Tuple2(ak, (al ++ [invoke(k, "binaryEntry", [G(H), am], nil)])) | |
214 | 214 | } | |
215 | 215 | else throw("Strict value is not equal to itself.") | |
216 | 216 | } | |
217 | 217 | else throw("Strict value is not equal to itself.") | |
218 | 218 | } | |
219 | 219 | ||
220 | 220 | ||
221 | 221 | ||
222 | 222 | @Callable(m) | |
223 | 223 | func deposit (aa,ab) = { | |
224 | 224 | let Z = p(m) | |
225 | 225 | if ((Z == Z)) | |
226 | 226 | then { | |
227 | 227 | let H = valueOrErrorMessage(addressFromString(ab[0]), e("invalid account address")) | |
228 | 228 | let ap = m.payments[0] | |
229 | 229 | let ak = [ScriptTransfer(H, ap.amount, ap.assetId)] | |
230 | 230 | let al = nil | |
231 | 231 | $Tuple2(ak, al) | |
232 | 232 | } | |
233 | 233 | else throw("Strict value is not equal to itself.") | |
234 | 234 | } | |
235 | 235 | ||
236 | 236 | ||
237 | 237 | ||
238 | 238 | @Callable(m) | |
239 | 239 | func withdraw (aa,ab) = { | |
240 | 240 | let Z = p(m) | |
241 | 241 | if ((Z == Z)) | |
242 | 242 | then { | |
243 | 243 | let ae = addressFromPublicKey(aa) | |
244 | 244 | let H = valueOrErrorMessage(addressFromString(ab[0]), e("invalid account address")) | |
245 | 245 | let aq = valueOrErrorMessage(parseInt(ab[1]), e("invalid amount")) | |
246 | 246 | let ar = s(ab[2]) | |
247 | 247 | let as = [invoke(H, "transferAsset", [ae.bytes, aq, ar], nil)] | |
248 | 248 | $Tuple2(nil, as) | |
249 | 249 | } | |
250 | 250 | else throw("Strict value is not equal to itself.") | |
251 | 251 | } | |
252 | 252 | ||
253 | 253 | ||
254 | + | ||
255 | + | @Callable(m) | |
256 | + | func pairAllowance (aa,ab) = { | |
257 | + | let Z = p(m) | |
258 | + | if ((Z == Z)) | |
259 | + | then { | |
260 | + | let ac = ab[0] | |
261 | + | let ad = ab[1] | |
262 | + | let at = ab[2] | |
263 | + | let V = s(ac) | |
264 | + | let W = s(ad) | |
265 | + | let au = (at == "true") | |
266 | + | let as = [invoke(k, "booleanEntry", [U(V, W), au], nil)] | |
267 | + | $Tuple2(nil, as) | |
268 | + | } | |
269 | + | else throw("Strict value is not equal to itself.") | |
270 | + | } | |
271 | + | ||
272 | + |
github/deemru/w8io/169f3d6 43.02 ms ◑