tx · 8uDmrtGqge5x4UQrcaj8PJ73dw2ME18M45i1HzL6Q3kX

3MuSaVmAi8gQwR4dkCoCeg9DtAiV3pfsNbY:  -0.01000000 Waves

2020.12.21 09:53 [1318126] smart account 3MuSaVmAi8gQwR4dkCoCeg9DtAiV3pfsNbY > SELF 0.00000000 Waves

{ "type": 13, "id": "8uDmrtGqge5x4UQrcaj8PJ73dw2ME18M45i1HzL6Q3kX", "fee": 1000000, "feeAssetId": null, "timestamp": 1608533718022, "version": 2, "chainId": 84, "sender": "3MuSaVmAi8gQwR4dkCoCeg9DtAiV3pfsNbY", "senderPublicKey": "Cttdgg3TtRvq6QAwaA6ymn7venH4aZTtDUk1WeTnKPoq", "proofs": [ "4JD4mfhkTPVKYMKfr4aC4jSRtoeo2KswY5sBByAHEEXMR5ZgKn6qGJtX5Fhw8yG9c6rrJwSdZNM2s5HRJoyr4yhQ" ], "script": "base64:AAIDAAAAAAAAABgIARIECgIBARIECgIBARIDCgEBEgMKAQEAAAAAAAAABAAAAAFpAQAAAA1jcmVhdGVBdWN0aW9uAAAAAgAAAAhkdXJhdGlvbgAAAAZtaW5CaWQEAAAAEGxhc3RBdWN0aW9uSWRLZXkCAAAAD2xhc3RfYXVjdGlvbl9pZAQAAAANbGFzdEF1Y3Rpb25JZAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAABBsYXN0QXVjdGlvbklkS2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAAmlkCQAAZAAAAAIFAAAADWxhc3RBdWN0aW9uSWQAAAAAAAAAAAEEAAAADG5ld0F1Y3Rpb25JZAkAAaQAAAABBQAAAAJpZAQAAAALb3duZXJXYWxsZXQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAADcG10CQEAAAAFdmFsdWUAAAABCAUAAAABaQAAAAdwYXltZW50AwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAECAAAAH1NlbmQgc29tZSB0b2tlbnMsIGJ1dCBub3QgV2F2ZXMEAAAAB2Fzc2V0SWQJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkBAAAABJhdWN0aW9uRHVyYXRpb25LZXkJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAAMbmV3QXVjdGlvbklkAgAAAAlfZHVyYXRpb24EAAAAEGF1Y3Rpb25NaW5CaWRLZXkJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAAMbmV3QXVjdGlvbklkAgAAAAhfbWluX2JpZAQAAAARYXVjdGlvbkxhc3RCaWRLZXkJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAAMbmV3QXVjdGlvbklkAgAAAAlfbGFzdF9iaWQEAAAAFmF1Y3Rpb25MYXN0QmlkT3duZXJLZXkJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAAMbmV3QXVjdGlvbklkAgAAAA9fbGFzdF9iaWRfb3duZXIEAAAAD2F1Y3Rpb25Pd25lcktleQkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAxuZXdBdWN0aW9uSWQCAAAABl9vd25lcgQAAAAQYXVjdGlvbkFtb3VudEtleQkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAxuZXdBdWN0aW9uSWQCAAAAB19hbW91bnQEAAAAEWF1Y3Rpb25Bc3NldElkS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAADG5ld0F1Y3Rpb25JZAIAAAAJX2Fzc2V0X2lkBAAAABJhdWN0aW9uSXNBY3RpdmVLZXkJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAAMbmV3QXVjdGlvbklkAgAAAApfaXNfYWN0aXZlBAAAAA51c2VyQmFsYW5jZUtleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYmFsYW5jZV8FAAAAC293bmVyV2FsbGV0AgAAAAFfBQAAAAdhc3NldElkBAAAAA1jdXJyZW50QW1vdW50BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAADnVzZXJCYWxhbmNlS2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAACW5ld0Ftb3VudAkAAGQAAAACBQAAAA1jdXJyZW50QW1vdW50CAUAAAADcG10AAAABmFtb3VudAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAASYXVjdGlvbkR1cmF0aW9uS2V5CQAAZAAAAAIFAAAABmhlaWdodAUAAAAIZHVyYXRpb24JAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAEGF1Y3Rpb25NaW5CaWRLZXkFAAAABm1pbkJpZAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAARYXVjdGlvbkxhc3RCaWRLZXkAAAAAAAAAAAAJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAD2F1Y3Rpb25Pd25lcktleQUAAAALb3duZXJXYWxsZXQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAEGF1Y3Rpb25BbW91bnRLZXkIBQAAAANwbXQAAAAGYW1vdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABFhdWN0aW9uQXNzZXRJZEtleQUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAOdXNlckJhbGFuY2VLZXkFAAAACW5ld0Ftb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAASYXVjdGlvbklzQWN0aXZlS2V5BgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAWYXVjdGlvbkxhc3RCaWRPd25lcktleQIAAAAACQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABBsYXN0QXVjdGlvbklkS2V5BQAAAAJpZAUAAAADbmlsAAAAAWkBAAAAA2JpZAAAAAIAAAAJYXVjdGlvbklkAAAACWJpZEFtb3VudAQAAAAMbmV3QXVjdGlvbklkCQABpAAAAAEFAAAACWF1Y3Rpb25JZAQAAAASYXVjdGlvbkR1cmF0aW9uS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAADG5ld0F1Y3Rpb25JZAIAAAAJX2R1cmF0aW9uBAAAABBhdWN0aW9uTWluQmlkS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAADG5ld0F1Y3Rpb25JZAIAAAAIX21pbl9iaWQEAAAAEWF1Y3Rpb25MYXN0QmlkS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAADG5ld0F1Y3Rpb25JZAIAAAAJX2xhc3RfYmlkBAAAAA9hdWN0aW9uT3duZXJLZXkJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAAMbmV3QXVjdGlvbklkAgAAAAZfb3duZXIEAAAAFmF1Y3Rpb25MYXN0QmlkT3duZXJLZXkJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAAMbmV3QXVjdGlvbklkAgAAAA9fbGFzdF9iaWRfb3duZXIEAAAAEmF1Y3Rpb25Jc0FjdGl2ZUtleQkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAxuZXdBdWN0aW9uSWQCAAAACl9pc19hY3RpdmUEAAAAEGxhc3RBdWN0aW9uSWRLZXkCAAAAD2xhc3RfYXVjdGlvbl9pZAQAAAAPYXVjdGlvbkR1cmF0aW9uCQEAAAAHZXh0cmFjdAAAAAEJAAQaAAAAAgUAAAAEdGhpcwUAAAASYXVjdGlvbkR1cmF0aW9uS2V5BAAAAA1hdWN0aW9uTWluQmlkCQEAAAAHZXh0cmFjdAAAAAEJAAQaAAAAAgUAAAAEdGhpcwUAAAAQYXVjdGlvbk1pbkJpZEtleQQAAAAOYXVjdGlvbkxhc3RCaWQJAQAAAAdleHRyYWN0AAAAAQkABBoAAAACBQAAAAR0aGlzBQAAABFhdWN0aW9uTGFzdEJpZEtleQQAAAAMYXVjdGlvbk93bmVyCQEAAAAHZXh0cmFjdAAAAAEJAAQdAAAAAgUAAAAEdGhpcwUAAAAPYXVjdGlvbk93bmVyS2V5BAAAAA1sYXN0QXVjdGlvbklkCQEAAAAHZXh0cmFjdAAAAAEJAAQaAAAAAgUAAAAEdGhpcwUAAAAQbGFzdEF1Y3Rpb25JZEtleQQAAAAPYXVjdGlvbklzQWN0aXZlCQEAAAAHZXh0cmFjdAAAAAEJAAQbAAAAAgUAAAAEdGhpcwUAAAASYXVjdGlvbklzQWN0aXZlS2V5BAAAAA5pc1ZhbGlkQXVjdGlvbgkAAGcAAAACBQAAAA1sYXN0QXVjdGlvbklkBQAAAAlhdWN0aW9uSWQEAAAADWlzVmFsaWRIZWlnaHQJAABnAAAAAgUAAAAPYXVjdGlvbkR1cmF0aW9uBQAAAAZoZWlnaHQEAAAADWlzVmFsaWRNaW5CaWQJAABnAAAAAgUAAAAJYmlkQW1vdW50BQAAAA1hdWN0aW9uTWluQmlkBAAAABFpc1ZhbGlkQ3VycmVudEJpZAkAAGYAAAACBQAAAAliaWRBbW91bnQFAAAADmF1Y3Rpb25MYXN0QmlkBAAAAA5pc0Ftb3VudEV4aXN0cwkAAGcAAAACCQAD6wAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdW5pdAUAAAAJYmlkQW1vdW50BAAAAA1pc1ZhbGlkU2VuZGVyCQEAAAACIT0AAAACBQAAAAxhdWN0aW9uT3duZXIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwMJAQAAAAEhAAAAAQUAAAAOaXNWYWxpZEF1Y3Rpb24JAAACAAAAAQIAAAASQXVjdGlvbiBub3QgZXhpc3RzAwkBAAAAASEAAAABBQAAAA9hdWN0aW9uSXNBY3RpdmUJAAACAAAAAQIAAAASQXVjdGlvbiBub3QgYWN0aXZlAwkBAAAAASEAAAABBQAAAA1pc1ZhbGlkSGVpZ2h0CQAAAgAAAAECAAAAE0F1Y3Rpb24gYWxyZWFkeSBlbmQDCQEAAAABIQAAAAEFAAAADWlzVmFsaWRNaW5CaWQJAAACAAAAAQIAAAARQmlkIGxlc3MgdGhhdCBtaW4DCQEAAAABIQAAAAEFAAAAEWlzVmFsaWRDdXJyZW50QmlkCQAAAgAAAAECAAAAF0xhc3QgYmlkIG1vcmUgdGhhbiB5b3VyAwkBAAAAASEAAAABBQAAAA5pc0Ftb3VudEV4aXN0cwkAAAIAAAABAgAAACFOb3QgZW5vdWdoIGJhbGFuY2UgaW4geW91ciB3YWxsZXQDCQEAAAABIQAAAAEFAAAADWlzVmFsaWRTZW5kZXIJAAACAAAAAQIAAAAfWW91IGNhbiBub3QgYmlkIGluIHlvdXIgYXVjdGlvbgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAARYXVjdGlvbkxhc3RCaWRLZXkFAAAACWJpZEFtb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAWYXVjdGlvbkxhc3RCaWRPd25lcktleQkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBQAAAANuaWwAAAABaQEAAAAGY2FuY2VsAAAAAQAAAAlhdWN0aW9uSWQEAAAADG5ld0F1Y3Rpb25JZAkAAaQAAAABBQAAAAlhdWN0aW9uSWQEAAAAEmF1Y3Rpb25EdXJhdGlvbktleQkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAxuZXdBdWN0aW9uSWQCAAAACV9kdXJhdGlvbgQAAAAPYXVjdGlvbk93bmVyS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAADG5ld0F1Y3Rpb25JZAIAAAAGX293bmVyBAAAABBhdWN0aW9uQW1vdW50S2V5CQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAADG5ld0F1Y3Rpb25JZAIAAAAHX2Ftb3VudAQAAAARYXVjdGlvbkFzc2V0SWRLZXkJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAAMbmV3QXVjdGlvbklkAgAAAAlfYXNzZXRfaWQEAAAAEmF1Y3Rpb25Jc0FjdGl2ZUtleQkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAxuZXdBdWN0aW9uSWQCAAAACl9pc19hY3RpdmUEAAAAD2F1Y3Rpb25EdXJhdGlvbgkBAAAAB2V4dHJhY3QAAAABCQAEGgAAAAIFAAAABHRoaXMFAAAAEmF1Y3Rpb25EdXJhdGlvbktleQQAAAANYXVjdGlvbkFtb3VudAkBAAAAB2V4dHJhY3QAAAABCQAEGgAAAAIFAAAABHRoaXMFAAAAEGF1Y3Rpb25BbW91bnRLZXkEAAAADGF1Y3Rpb25Pd25lcgkBAAAAB2V4dHJhY3QAAAABCQAEHQAAAAIFAAAABHRoaXMFAAAAD2F1Y3Rpb25Pd25lcktleQQAAAAOYXVjdGlvbkFzc2V0SWQJAQAAAAdleHRyYWN0AAAAAQkABB0AAAACBQAAAAR0aGlzBQAAABFhdWN0aW9uQXNzZXRJZEtleQQAAAAPYXVjdGlvbklzQWN0aXZlCQEAAAAHZXh0cmFjdAAAAAEJAAQbAAAAAgUAAAAEdGhpcwUAAAASYXVjdGlvbklzQWN0aXZlS2V5BAAAAA51c2VyQmFsYW5jZUtleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYmFsYW5jZV8FAAAADGF1Y3Rpb25Pd25lcgIAAAABXwUAAAAOYXVjdGlvbkFzc2V0SWQEAAAAC3VzZXJCYWxhbmNlCQEAAAAHZXh0cmFjdAAAAAEJAAQaAAAAAgUAAAAEdGhpcwUAAAAOdXNlckJhbGFuY2VLZXkEAAAACm5ld0JhbGFuY2UJAABlAAAAAgUAAAALdXNlckJhbGFuY2UFAAAADWF1Y3Rpb25BbW91bnQEAAAADWlzVmFsaWRTZW5kZXIJAAAAAAAAAgUAAAAMYXVjdGlvbk93bmVyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMDCQEAAAABIQAAAAEFAAAAD2F1Y3Rpb25Jc0FjdGl2ZQkAAAIAAAABAgAAABBBdWN0aW9uIGluYWN0aXZlAwkBAAAAASEAAAABBQAAAA1pc1ZhbGlkU2VuZGVyCQAAAgAAAAECAAAAGVlvdSBhcmUgbm90IGF1Y3Rpb24gb3duZXIJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA51c2VyQmFsYW5jZUtleQUAAAAKbmV3QmFsYW5jZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAASYXVjdGlvbklzQWN0aXZlS2V5BwUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAANYXVjdGlvbkFtb3VudAkAAlkAAAABBQAAAA5hdWN0aW9uQXNzZXRJZAUAAAADbmlsAAAAAWkBAAAADXBheUFuZFJlY2VpdmUAAAABAAAACWF1Y3Rpb25JZAQAAAAMbmV3QXVjdGlvbklkCQABpAAAAAEFAAAACWF1Y3Rpb25JZAQAAAADcG10CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAAB2Fzc2V0SWQJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkBAAAABJhdWN0aW9uRHVyYXRpb25LZXkJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAAMbmV3QXVjdGlvbklkAgAAAAlfZHVyYXRpb24EAAAAEGF1Y3Rpb25NaW5CaWRLZXkJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAAMbmV3QXVjdGlvbklkAgAAAAhfbWluX2JpZAQAAAARYXVjdGlvbkxhc3RCaWRLZXkJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAAMbmV3QXVjdGlvbklkAgAAAAlfbGFzdF9iaWQEAAAAFmF1Y3Rpb25MYXN0QmlkT3duZXJLZXkJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAAMbmV3QXVjdGlvbklkAgAAAA9fbGFzdF9iaWRfb3duZXIEAAAAD2F1Y3Rpb25Pd25lcktleQkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAxuZXdBdWN0aW9uSWQCAAAABl9vd25lcgQAAAAQYXVjdGlvbkFtb3VudEtleQkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAxuZXdBdWN0aW9uSWQCAAAAB19hbW91bnQEAAAAEWF1Y3Rpb25Bc3NldElkS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAADG5ld0F1Y3Rpb25JZAIAAAAJX2Fzc2V0X2lkBAAAABJhdWN0aW9uSXNBY3RpdmVLZXkJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAAMbmV3QXVjdGlvbklkAgAAAApfaXNfYWN0aXZlBAAAAA9hdWN0aW9uRHVyYXRpb24JAQAAAAdleHRyYWN0AAAAAQkABBoAAAACBQAAAAR0aGlzBQAAABJhdWN0aW9uRHVyYXRpb25LZXkEAAAADWF1Y3Rpb25BbW91bnQJAQAAAAdleHRyYWN0AAAAAQkABBoAAAACBQAAAAR0aGlzBQAAABBhdWN0aW9uQW1vdW50S2V5BAAAAAxhdWN0aW9uT3duZXIJAQAAAAdleHRyYWN0AAAAAQkABB0AAAACBQAAAAR0aGlzBQAAAA9hdWN0aW9uT3duZXJLZXkEAAAADmF1Y3Rpb25Bc3NldElkCQEAAAAHZXh0cmFjdAAAAAEJAAQdAAAAAgUAAAAEdGhpcwUAAAARYXVjdGlvbkFzc2V0SWRLZXkEAAAAD2F1Y3Rpb25Jc0FjdGl2ZQkBAAAAB2V4dHJhY3QAAAABCQAEGwAAAAIFAAAABHRoaXMFAAAAEmF1Y3Rpb25Jc0FjdGl2ZUtleQQAAAAOdXNlckJhbGFuY2VLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGJhbGFuY2VfBQAAAAxhdWN0aW9uT3duZXICAAAAAV8FAAAADmF1Y3Rpb25Bc3NldElkBAAAAAt1c2VyQmFsYW5jZQkBAAAAB2V4dHJhY3QAAAABCQAEGgAAAAIFAAAABHRoaXMFAAAADnVzZXJCYWxhbmNlS2V5BAAAAA5hdWN0aW9uTGFzdEJpZAkBAAAAB2V4dHJhY3QAAAABCQAEGgAAAAIFAAAABHRoaXMFAAAAEWF1Y3Rpb25MYXN0QmlkS2V5BAAAABNhdWN0aW9uTGFzdEJpZE93bmVyCQEAAAAHZXh0cmFjdAAAAAEJAAQdAAAAAgUAAAAEdGhpcwUAAAAWYXVjdGlvbkxhc3RCaWRPd25lcktleQQAAAAKbmV3QmFsYW5jZQkAAGUAAAACBQAAAAt1c2VyQmFsYW5jZQUAAAANYXVjdGlvbkFtb3VudAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAXQ2FuIHRyYW5zZmVyIFdhdmVzIG9ubHkDCQEAAAABIQAAAAEFAAAAD2F1Y3Rpb25Jc0FjdGl2ZQkAAAIAAAABAgAAABJBdWN0aW9uIG5vdCBhY3RpdmUDCQEAAAACIT0AAAACCAUAAAADcG10AAAABmFtb3VudAUAAAAOYXVjdGlvbkxhc3RCaWQJAAACAAAAAQIAAAAZQW1vdW50IG5vdCBlcXVhbCBsYXN0IGJpZAMJAABmAAAAAgUAAAAPYXVjdGlvbkR1cmF0aW9uBQAAAAZoZWlnaHQJAAACAAAAAQIAAAAUQXVjdGlvbiBub3QgY29tcGxldGUDCQEAAAACIT0AAAACCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAATYXVjdGlvbkxhc3RCaWRPd25lcggFAAAAAWkAAAAGY2FsbGVyCQAAAgAAAAECAAAAF1lvdSBhcmUgbm90IGxhc3QgYmlkZGVyCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAOdXNlckJhbGFuY2VLZXkFAAAACm5ld0JhbGFuY2UJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAEmF1Y3Rpb25Jc0FjdGl2ZUtleQcFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADWF1Y3Rpb25BbW91bnQJAAJZAAAAAQUAAAAOYXVjdGlvbkFzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAADGF1Y3Rpb25Pd25lcggFAAAAA3BtdAAAAAZhbW91bnQFAAAABHVuaXQFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAGSEGIjA==", "height": 1318126, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+
5+
6+@Callable(i)
7+func createAuction (duration,minBid) = {
8+ let lastAuctionIdKey = "last_auction_id"
9+ let lastAuctionId = match getInteger(this, lastAuctionIdKey) {
10+ case a: Int =>
11+ a
12+ case _ =>
13+ 0
14+ }
15+ let id = (lastAuctionId + 1)
16+ let newAuctionId = toString(id)
17+ let ownerWallet = toBase58String(i.caller.bytes)
18+ let pmt = value(i.payment)
19+ if (!(isDefined(pmt.assetId)))
20+ then throw("Send some tokens, but not Waves")
21+ else {
22+ let assetId = toBase58String(value(pmt.assetId))
23+ let auctionDurationKey = (("auction_" + newAuctionId) + "_duration")
24+ let auctionMinBidKey = (("auction_" + newAuctionId) + "_min_bid")
25+ let auctionLastBidKey = (("auction_" + newAuctionId) + "_last_bid")
26+ let auctionLastBidOwnerKey = (("auction_" + newAuctionId) + "_last_bid_owner")
27+ let auctionOwnerKey = (("auction_" + newAuctionId) + "_owner")
28+ let auctionAmountKey = (("auction_" + newAuctionId) + "_amount")
29+ let auctionAssetIdKey = (("auction_" + newAuctionId) + "_asset_id")
30+ let auctionIsActiveKey = (("auction_" + newAuctionId) + "_is_active")
31+ let userBalanceKey = ((("balance_" + ownerWallet) + "_") + assetId)
32+ let currentAmount = match getInteger(this, userBalanceKey) {
33+ case a: Int =>
34+ a
35+ case _ =>
36+ 0
37+ }
38+ let newAmount = (currentAmount + pmt.amount)
39+ WriteSet([DataEntry(auctionDurationKey, (height + duration)), DataEntry(auctionMinBidKey, minBid), DataEntry(auctionLastBidKey, 0), DataEntry(auctionOwnerKey, ownerWallet), DataEntry(auctionAmountKey, pmt.amount), DataEntry(auctionAssetIdKey, assetId), DataEntry(userBalanceKey, newAmount), DataEntry(auctionIsActiveKey, true), DataEntry(auctionLastBidOwnerKey, ""), DataEntry(lastAuctionIdKey, id)])
40+ }
41+ }
42+
43+
44+
45+@Callable(i)
46+func bid (auctionId,bidAmount) = {
47+ let newAuctionId = toString(auctionId)
48+ let auctionDurationKey = (("auction_" + newAuctionId) + "_duration")
49+ let auctionMinBidKey = (("auction_" + newAuctionId) + "_min_bid")
50+ let auctionLastBidKey = (("auction_" + newAuctionId) + "_last_bid")
51+ let auctionOwnerKey = (("auction_" + newAuctionId) + "_owner")
52+ let auctionLastBidOwnerKey = (("auction_" + newAuctionId) + "_last_bid_owner")
53+ let auctionIsActiveKey = (("auction_" + newAuctionId) + "_is_active")
54+ let lastAuctionIdKey = "last_auction_id"
55+ let auctionDuration = extract(getInteger(this, auctionDurationKey))
56+ let auctionMinBid = extract(getInteger(this, auctionMinBidKey))
57+ let auctionLastBid = extract(getInteger(this, auctionLastBidKey))
58+ let auctionOwner = extract(getString(this, auctionOwnerKey))
59+ let lastAuctionId = extract(getInteger(this, lastAuctionIdKey))
60+ let auctionIsActive = extract(getBoolean(this, auctionIsActiveKey))
61+ let isValidAuction = (lastAuctionId >= auctionId)
62+ let isValidHeight = (auctionDuration >= height)
63+ let isValidMinBid = (bidAmount >= auctionMinBid)
64+ let isValidCurrentBid = (bidAmount > auctionLastBid)
65+ let isAmountExists = (assetBalance(i.caller, unit) >= bidAmount)
66+ let isValidSender = (auctionOwner != toBase58String(i.caller.bytes))
67+ if (!(isValidAuction))
68+ then throw("Auction not exists")
69+ else if (!(auctionIsActive))
70+ then throw("Auction not active")
71+ else if (!(isValidHeight))
72+ then throw("Auction already end")
73+ else if (!(isValidMinBid))
74+ then throw("Bid less that min")
75+ else if (!(isValidCurrentBid))
76+ then throw("Last bid more than your")
77+ else if (!(isAmountExists))
78+ then throw("Not enough balance in your wallet")
79+ else if (!(isValidSender))
80+ then throw("You can not bid in your auction")
81+ else WriteSet([DataEntry(auctionLastBidKey, bidAmount), DataEntry(auctionLastBidOwnerKey, toBase58String(i.caller.bytes))])
82+ }
83+
84+
85+
86+@Callable(i)
87+func cancel (auctionId) = {
88+ let newAuctionId = toString(auctionId)
89+ let auctionDurationKey = (("auction_" + newAuctionId) + "_duration")
90+ let auctionOwnerKey = (("auction_" + newAuctionId) + "_owner")
91+ let auctionAmountKey = (("auction_" + newAuctionId) + "_amount")
92+ let auctionAssetIdKey = (("auction_" + newAuctionId) + "_asset_id")
93+ let auctionIsActiveKey = (("auction_" + newAuctionId) + "_is_active")
94+ let auctionDuration = extract(getInteger(this, auctionDurationKey))
95+ let auctionAmount = extract(getInteger(this, auctionAmountKey))
96+ let auctionOwner = extract(getString(this, auctionOwnerKey))
97+ let auctionAssetId = extract(getString(this, auctionAssetIdKey))
98+ let auctionIsActive = extract(getBoolean(this, auctionIsActiveKey))
99+ let userBalanceKey = ((("balance_" + auctionOwner) + "_") + auctionAssetId)
100+ let userBalance = extract(getInteger(this, userBalanceKey))
101+ let newBalance = (userBalance - auctionAmount)
102+ let isValidSender = (auctionOwner == toBase58String(i.caller.bytes))
103+ if (!(auctionIsActive))
104+ then throw("Auction inactive")
105+ else if (!(isValidSender))
106+ then throw("You are not auction owner")
107+ else ScriptResult(WriteSet([DataEntry(userBalanceKey, newBalance), DataEntry(auctionIsActiveKey, false)]), TransferSet([ScriptTransfer(i.caller, auctionAmount, fromBase58String(auctionAssetId))]))
108+ }
109+
110+
111+
112+@Callable(i)
113+func payAndReceive (auctionId) = {
114+ let newAuctionId = toString(auctionId)
115+ let pmt = extract(i.payment)
116+ let assetId = toBase58String(value(pmt.assetId))
117+ let auctionDurationKey = (("auction_" + newAuctionId) + "_duration")
118+ let auctionMinBidKey = (("auction_" + newAuctionId) + "_min_bid")
119+ let auctionLastBidKey = (("auction_" + newAuctionId) + "_last_bid")
120+ let auctionLastBidOwnerKey = (("auction_" + newAuctionId) + "_last_bid_owner")
121+ let auctionOwnerKey = (("auction_" + newAuctionId) + "_owner")
122+ let auctionAmountKey = (("auction_" + newAuctionId) + "_amount")
123+ let auctionAssetIdKey = (("auction_" + newAuctionId) + "_asset_id")
124+ let auctionIsActiveKey = (("auction_" + newAuctionId) + "_is_active")
125+ let auctionDuration = extract(getInteger(this, auctionDurationKey))
126+ let auctionAmount = extract(getInteger(this, auctionAmountKey))
127+ let auctionOwner = extract(getString(this, auctionOwnerKey))
128+ let auctionAssetId = extract(getString(this, auctionAssetIdKey))
129+ let auctionIsActive = extract(getBoolean(this, auctionIsActiveKey))
130+ let userBalanceKey = ((("balance_" + auctionOwner) + "_") + auctionAssetId)
131+ let userBalance = extract(getInteger(this, userBalanceKey))
132+ let auctionLastBid = extract(getInteger(this, auctionLastBidKey))
133+ let auctionLastBidOwner = extract(getString(this, auctionLastBidOwnerKey))
134+ let newBalance = (userBalance - auctionAmount)
135+ if (isDefined(pmt.assetId))
136+ then throw("Can transfer Waves only")
137+ else if (!(auctionIsActive))
138+ then throw("Auction not active")
139+ else if ((pmt.amount != auctionLastBid))
140+ then throw("Amount not equal last bid")
141+ else if ((auctionDuration > height))
142+ then throw("Auction not complete")
143+ else if ((Address(fromBase58String(auctionLastBidOwner)) != i.caller))
144+ then throw("You are not last bidder")
145+ else ScriptResult(WriteSet([DataEntry(userBalanceKey, newBalance), DataEntry(auctionIsActiveKey, false)]), TransferSet([ScriptTransfer(i.caller, auctionAmount, fromBase58String(auctionAssetId)), ScriptTransfer(Address(fromBase58String(auctionOwner)), pmt.amount, unit)]))
146+ }
147+
148+
149+@Verifier(tx)
150+func verify () = true
151+

github/deemru/w8io/873ac7e 
22.29 ms