tx · FUSE1dJUQKUEKfsRS24hbqnGPT6bKgowypGRYUVWphRy

3N3hSiGkCQk6ixvTU3uEFLeFweWHqAUg29a:  -0.01000000 Waves

2019.07.29 02:16 [606568] smart account 3N3hSiGkCQk6ixvTU3uEFLeFweWHqAUg29a > SELF 0.00000000 Waves

{ "type": 13, "id": "FUSE1dJUQKUEKfsRS24hbqnGPT6bKgowypGRYUVWphRy", "fee": 1000000, "feeAssetId": null, "timestamp": 1564355768593, "version": 1, "sender": "3N3hSiGkCQk6ixvTU3uEFLeFweWHqAUg29a", "senderPublicKey": "4jNVQ7762kH43dvLDB7tMpr3zN7NqtobaLxpshG5PL3j", "proofs": [ "2JvkuimUvXZCRoSB49VzgzQjXff6MQQkp144sGpQVRfVCBs87yumLUjybnS5MdBNgNCcyTQYNYaLfazE2cshQMex" ], "script": "base64:AAIDAAAAAAAAAAAAAAASAAAAAA5vd25lclB1YmxpY0tleQEAAAAgfedb8gHq6MpA0xTx8E4brUvyXTxMUxGzgoeMhec7vFkAAAAAH2Rlc3RpbmF0aW9uV2FsbGV0QWRkcmVzc0RhdGFLZXkCAAAAGmRlc3RpbmF0aW9uX3dhbGxldF9hZGRyZXNzAAAAAAtidGNDdXJyZW5jeQIAAAADYnRjAAAAAAtldGhDdXJyZW5jeQIAAAADZXRoAAAAAA13YXZlc0N1cnJlbmN5AgAAAAV3YXZlcwAAAAALbHRjQ3VycmVuY3kCAAAAA2x0YwEAAAATZ2V0UmFjZUVuZGVkRGF0YUtleQAAAAEAAAAGcmFjZUlkCQABLAAAAAIFAAAABnJhY2VJZAIAAAAJX2lzX2VuZGVkAQAAABNnZXRDYW5jZWxCZXREYXRhS2V5AAAAAgAAAAZyYWNlSWQAAAANcGxheWVyQWRkcmVzcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGcmFjZUlkAgAAAAFfBQAAAA1wbGF5ZXJBZGRyZXNzAgAAAAlfY2FuY2VsZWQBAAAADWdldEJldERhdGFLZXkAAAADAAAABnJhY2VJZAAAAA1wbGF5ZXJBZGRyZXNzAAAACGN1cnJlbmN5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGcmFjZUlkAgAAAAhfcGxheWVyXwUAAAANcGxheWVyQWRkcmVzcwIAAAAFX2JldF8FAAAACGN1cnJlbmN5AgAAAAdfYW1vdW50AQAAABJnZXRTaGFyZVN1bURhdGFLZXkAAAADAAAABnJhY2VJZAAAAA1wbGF5ZXJBZGRyZXNzAAAACGN1cnJlbmN5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGcmFjZUlkAgAAAAhfcGxheWVyXwUAAAANcGxheWVyQWRkcmVzcwIAAAABXwUAAAAIY3VycmVuY3kCAAAACl9zaGFyZV9zdW0BAAAAEmdldFRvdGFsQmV0RGF0YUtleQAAAAEAAAAGcmFjZUlkCQABLAAAAAIFAAAABnJhY2VJZAIAAAARX3RvdGFsX2JldF9hbW91bnQBAAAAHGdldFBsYWNlUGxheWVyQWRkcmVzc0RhdGFLZXkAAAACAAAABnJhY2VJZAAAAApwbGFjZUluZGV4CQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZyYWNlSWQCAAAAAV8JAAGkAAAAAQUAAAAKcGxhY2VJbmRleAIAAAAVX3BsYWNlX3BsYXllcl9hZGRyZXNzAQAAABRnZXRTdGFydFByaWNlRGF0YUtleQAAAAIAAAAGcmFjZUlkAAAACGN1cnJlbmN5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZyYWNlSWQCAAAAAV8FAAAACGN1cnJlbmN5AgAAAAxfc3RhcnRfcHJpY2UBAAAAEmdldEVuZFByaWNlRGF0YUtleQAAAAIAAAAGcmFjZUlkAAAACGN1cnJlbmN5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZyYWNlSWQCAAAAAV8FAAAACGN1cnJlbmN5AgAAAApfZW5kX3ByaWNlAQAAABtnZXREZXN0aW5hdGlvbldhbGxldEFkZHJlc3MAAAAABAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAH2Rlc3RpbmF0aW9uV2FsbGV0QWRkcmVzc0RhdGFLZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABdgUAAAAHJG1hdGNoMAMJAAAAAAAAAgUAAAABdgIAAAAACQAAAgAAAAECAAAAKkRlc3RpbmF0aW9uIHdhbGxldCBhZGRyZXNzIGNhbm5vdCBiZSBlbXB0eQkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAAF2CQAAAgAAAAECAAAAJERlc3RpbmF0aW9uIHdhbGxldCBhZGRyZXNzIHVuZGVmaW5lZAEAAAANaXNCZXRDYW5jZWxlZAAAAAIAAAAGcmFjZUlkAAAADXBsYXllckFkZHJlc3MEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwkBAAAAE2dldENhbmNlbEJldERhdGFLZXkAAAACBQAAAAZyYWNlSWQFAAAADXBsYXllckFkZHJlc3MDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAXYFAAAAByRtYXRjaDAFAAAAAXYHAQAAAAhpc0JldFNldAAAAAIAAAAGcmFjZUlkAAAADXBsYXllckFkZHJlc3MEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkBAAAADWdldEJldERhdGFLZXkAAAADBQAAAAZyYWNlSWQFAAAADXBsYXllckFkZHJlc3MFAAAADXdhdmVzQ3VycmVuY3kDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABdgUAAAAHJG1hdGNoMAYHAQAAAAtpc1JhY2VFbmRlZAAAAAEAAAAGcmFjZUlkBAAAAAckbWF0Y2gwCQAEGwAAAAIFAAAABHRoaXMJAQAAABNnZXRSYWNlRW5kZWREYXRhS2V5AAAAAQUAAAAGcmFjZUlkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAF2BQAAAAckbWF0Y2gwBQAAAAF2BwAAAAQAAAABaQEAAAAUc2V0RGVzdGluYXRpb25XYWxsZXQAAAABAAAAB2FkZHJlc3MDCQEAAAACIT0AAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAADm93bmVyUHVibGljS2V5CQAAAgAAAAECAAAAH09ubHkgb3duZXIgY2FuIGNhbGwgdGhpcyBtZXRob2QDCQAAAAAAAAIFAAAAB2FkZHJlc3MCAAAAAAkAAAIAAAABAgAAABdBZGRyZXNzIGNhbm5vdCBiZSBlbXB0eQkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAfZGVzdGluYXRpb25XYWxsZXRBZGRyZXNzRGF0YUtleQUAAAAHYWRkcmVzcwUAAAADbmlsAAAAAWkBAAAAA2JldAAAAAYAAAAGcmFjZUlkAAAAFHBvcnRmb2xpb0J0Y1NoYXJlU3VtAAAAFHBvcnRmb2xpb0V0aFNoYXJlU3VtAAAAFnBvcnRmb2xpb1dhdmVzU2hhcmVTdW0AAAAUcG9ydGZvbGlvTHRjU2hhcmVTdW0AAAAJc2lnbmF0dXJlBAAAAAlyYWNlSWRTdHIJAAGkAAAAAQUAAAAGcmFjZUlkBAAAAAdwYXltZW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAACWJldEFtb3VudAgFAAAAB3BheW1lbnQAAAAGYW1vdW50BAAAABBjYWxsZXJBZGRyZXNzU3RyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMDCQEAAAALaXNSYWNlRW5kZWQAAAABBQAAAAlyYWNlSWRTdHIJAAACAAAAAQIAAAAYUmFjZSBlbmRlZCwgYmV0IGNhbmNlbGVkAwkBAAAACGlzQmV0U2V0AAAAAgUAAAAJcmFjZUlkU3RyBQAAABBjYWxsZXJBZGRyZXNzU3RyCQAAAgAAAAECAAAAE1lvdSBhbHJlYWR5IHNldCBiZXQDCQEAAAANaXNCZXRDYW5jZWxlZAAAAAIFAAAACXJhY2VJZFN0cgUAAAAQY2FsbGVyQWRkcmVzc1N0cgkAAAIAAAABAgAAAD9Zb3VyIGJldCBoYXMgYmVlbiBjYW5jZWxlZCwgeW91IGNhbm5vdCBiZXQgaW4gdGhpcyByYWNlIGFueW1vcmUEAAAAEXZhbGlkYXRpbmdEYXRhU3RyCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAlyYWNlSWRTdHIFAAAAEGNhbGxlckFkZHJlc3NTdHIJAAGkAAAAAQUAAAAJYmV0QW1vdW50CQABpAAAAAEFAAAAFHBvcnRmb2xpb0J0Y1NoYXJlU3VtCQABpAAAAAEFAAAAFHBvcnRmb2xpb0V0aFNoYXJlU3VtCQABpAAAAAEFAAAAFnBvcnRmb2xpb1dhdmVzU2hhcmVTdW0JAAGkAAAAAQUAAAAUcG9ydGZvbGlvTHRjU2hhcmVTdW0DCQEAAAABIQAAAAEJAAH0AAAAAwkAAZsAAAABBQAAABF2YWxpZGF0aW5nRGF0YVN0cgUAAAAJc2lnbmF0dXJlBQAAAA5vd25lclB1YmxpY0tleQkAAAIAAAABAgAAACVDYW5ub3QgdmVyaWZ5IHNpZ25hdHVyZSB3aGlsZSBzZXQgYmV0BAAAAA50b3RhbEJldEFtb3VudAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQEAAAASZ2V0VG90YWxCZXREYXRhS2V5AAAAAQUAAAAJcmFjZUlkU3RyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAXYFAAAAByRtYXRjaDAFAAAAAXYAAAAAAAAAAAAEAAAAEW5ld1RvdGFsQmV0QW1vdW50CQAAZAAAAAIFAAAADnRvdGFsQmV0QW1vdW50BQAAAAliZXRBbW91bnQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABJnZXRUb3RhbEJldERhdGFLZXkAAAABBQAAAAlyYWNlSWRTdHIFAAAAEW5ld1RvdGFsQmV0QW1vdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAANZ2V0QmV0RGF0YUtleQAAAAMFAAAACXJhY2VJZFN0cgUAAAAQY2FsbGVyQWRkcmVzc1N0cgUAAAANd2F2ZXNDdXJyZW5jeQUAAAAJYmV0QW1vdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAASZ2V0U2hhcmVTdW1EYXRhS2V5AAAAAwUAAAAJcmFjZUlkU3RyBQAAABBjYWxsZXJBZGRyZXNzU3RyBQAAAAtidGNDdXJyZW5jeQUAAAAUcG9ydGZvbGlvQnRjU2hhcmVTdW0JAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABJnZXRTaGFyZVN1bURhdGFLZXkAAAADBQAAAAlyYWNlSWRTdHIFAAAAEGNhbGxlckFkZHJlc3NTdHIFAAAAC2V0aEN1cnJlbmN5BQAAABRwb3J0Zm9saW9FdGhTaGFyZVN1bQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldFNoYXJlU3VtRGF0YUtleQAAAAMFAAAACXJhY2VJZFN0cgUAAAAQY2FsbGVyQWRkcmVzc1N0cgUAAAANd2F2ZXNDdXJyZW5jeQUAAAAWcG9ydGZvbGlvV2F2ZXNTaGFyZVN1bQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldFNoYXJlU3VtRGF0YUtleQAAAAMFAAAACXJhY2VJZFN0cgUAAAAQY2FsbGVyQWRkcmVzc1N0cgUAAAALbHRjQ3VycmVuY3kFAAAAFHBvcnRmb2xpb0x0Y1NoYXJlU3VtBQAAAANuaWwAAAABaQEAAAAJY2FuY2VsQmV0AAAAAgAAAAZyYWNlSWQAAAAJc2lnbmF0dXJlBAAAAAlyYWNlSWRTdHIJAAGkAAAAAQUAAAAGcmFjZUlkBAAAABBjYWxsZXJBZGRyZXNzU3RyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMDCQEAAAALaXNSYWNlRW5kZWQAAAABBQAAAAlyYWNlSWRTdHIJAAACAAAAAQIAAAAhUmFjZSBlbmRlZCwgeW91IGNhbm5vdCBjYW5jZWwgYmV0AwkBAAAADWlzQmV0Q2FuY2VsZWQAAAACBQAAAAlyYWNlSWRTdHIFAAAAEGNhbGxlckFkZHJlc3NTdHIJAAACAAAAAQIAAAAUQmV0IGFscmVhZHkgY2FuY2VsZWQEAAAAEXZhbGlkYXRpbmdEYXRhU3RyCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAZyYWNlSWQFAAAAEGNhbGxlckFkZHJlc3NTdHICAAAABmNhbmNlbAMJAQAAAAEhAAAAAQkAAfQAAAADCQABmwAAAAEFAAAAEXZhbGlkYXRpbmdEYXRhU3RyBQAAAAlzaWduYXR1cmUFAAAADm93bmVyUHVibGljS2V5CQAAAgAAAAECAAAAKENhbm5vdCB2ZXJpZnkgc2lnbmF0dXJlIHdoaWxlIGNhbmNlbCBiZXQEAAAAD3RvdGFsQmV0RGF0YUtleQkBAAAAEmdldFRvdGFsQmV0RGF0YUtleQAAAAEFAAAACXJhY2VJZFN0cgQAAAAPcGxheWVyQmV0QW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQEAAAANZ2V0QmV0RGF0YUtleQAAAAMFAAAACXJhY2VJZFN0cgUAAAAQY2FsbGVyQWRkcmVzc1N0cgUAAAANd2F2ZXNDdXJyZW5jeQQAAAAVY3VycmVudFRvdGFsQmV0QW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAA90b3RhbEJldERhdGFLZXkEAAAAEW5ld1RvdGFsQmV0QW1vdW50CQAAZQAAAAIFAAAAFWN1cnJlbnRUb3RhbEJldEFtb3VudAUAAAAPcGxheWVyQmV0QW1vdW50AwkAAGYAAAACAAAAAAAAAAAABQAAABFuZXdUb3RhbEJldEFtb3VudAkAAAIAAAABAgAAADpOZXcgc3RhdGUgb2YgdG90YWwgYmV0IHdpbGwgYmUgbGVzcyB0aGFuIHplcm8sIHN0YXRlIGVycm9yCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAE2dldENhbmNlbEJldERhdGFLZXkAAAACBQAAAAlyYWNlSWRTdHIFAAAAEGNhbGxlckFkZHJlc3NTdHIGCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA90b3RhbEJldERhdGFLZXkFAAAAEW5ld1RvdGFsQmV0QW1vdW50BQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAABBjYWxsZXJBZGRyZXNzU3RyBQAAAA9wbGF5ZXJCZXRBbW91bnQFAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAAAdlbmRSYWNlAAAADAAAAAJpZAAAABdmaXJzdFBsYWNlUGxheWVyQWRkcmVzcwAAABhzZWNvbmRQbGFjZVBsYXllckFkZHJlc3MAAAAXdGhpcmRQbGFjZVBsYXllckFkZHJlc3MAAAANYnRjU3RhcnRQcmljZQAAAAtidGNFbmRQcmljZQAAAA1ldGhTdGFydFByaWNlAAAAC2V0aEVuZFByaWNlAAAAD3dhdmVzU3RhcnRQcmljZQAAAA13YXZlc0VuZFByaWNlAAAADWx0Y1N0YXJ0UHJpY2UAAAALbHRjRW5kUHJpY2UEAAAACXJhY2VJZFN0cgkAAaQAAAABBQAAAAJpZAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAAOb3duZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAbT25seSBvd25lciBjYW4gY2FsbCBlbmRSYWNlAwkBAAAAC2lzUmFjZUVuZGVkAAAAAQUAAAAJcmFjZUlkU3RyCQAAAgAAAAECAAAALFJhY2UgYWxyZWFkeSBlbmRlZCwgeW91IGNhbm5vdCBlbmQgdGhpcyByYWNlBAAAAA50b3RhbEJldEFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkBAAAAEmdldFRvdGFsQmV0RGF0YUtleQAAAAEFAAAACXJhY2VJZFN0cgQAAAAdZmlyc3RQbGFjZVBsYXllckRlcG9zaXRBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAQAAAA1nZXRCZXREYXRhS2V5AAAAAwUAAAAJcmFjZUlkU3RyBQAAABdmaXJzdFBsYWNlUGxheWVyQWRkcmVzcwUAAAANd2F2ZXNDdXJyZW5jeQQAAAAec2Vjb25kUGxhY2VQbGF5ZXJEZXBvc2l0QW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQEAAAANZ2V0QmV0RGF0YUtleQAAAAMFAAAACXJhY2VJZFN0cgUAAAAYc2Vjb25kUGxhY2VQbGF5ZXJBZGRyZXNzBQAAAA13YXZlc0N1cnJlbmN5BAAAAB10aGlyZFBsYWNlUGxheWVyRGVwb3NpdEFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkBAAAADWdldEJldERhdGFLZXkAAAADBQAAAAlyYWNlSWRTdHIFAAAAF3RoaXJkUGxhY2VQbGF5ZXJBZGRyZXNzBQAAAA13YXZlc0N1cnJlbmN5BAAAABVmaXJzdFBsYWNlUHJpemVBbW91bnQJAABoAAAAAgUAAAAdZmlyc3RQbGFjZVBsYXllckRlcG9zaXRBbW91bnQAAAAAAAAAAAIEAAAAFnNlY29uZFBsYWNlUHJpemVBbW91bnQJAABpAAAAAgkAAGgAAAACBQAAAB5zZWNvbmRQbGFjZVBsYXllckRlcG9zaXRBbW91bnQAAAAAAAAAAAMAAAAAAAAAAAIEAAAAFXRoaXJkUGxhY2VQcml6ZUFtb3VudAUAAAAddGhpcmRQbGFjZVBsYXllckRlcG9zaXRBbW91bnQEAAAAEGNvbW1pc3Npb25BbW91bnQJAABlAAAAAgUAAAAOdG90YWxCZXRBbW91bnQJAABkAAAAAgkAAGQAAAACBQAAABVmaXJzdFBsYWNlUHJpemVBbW91bnQFAAAAFnNlY29uZFBsYWNlUHJpemVBbW91bnQFAAAAFXRoaXJkUGxhY2VQcml6ZUFtb3VudAMJAABnAAAAAgAAAAAAAAAAAAUAAAAQY29tbWlzc2lvbkFtb3VudAkAAAIAAAABAgAAADFDb21taXNzaW9uIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8sIHN0YXRlIGVycm9yBAAAAA5jdXJyZW50QmFsYW5jZQkBAAAADHdhdmVzQmFsYW5jZQAAAAEFAAAABHRoaXMEAAAACW5ld0Ftb3VudAkAAGQAAAACBQAAAA5jdXJyZW50QmFsYW5jZQUAAAAQY29tbWlzc2lvbkFtb3VudAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABNnZXRSYWNlRW5kZWREYXRhS2V5AAAAAQUAAAAJcmFjZUlkU3RyBgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAHGdldFBsYWNlUGxheWVyQWRkcmVzc0RhdGFLZXkAAAACBQAAAAlyYWNlSWRTdHIAAAAAAAAAAAEFAAAAF2ZpcnN0UGxhY2VQbGF5ZXJBZGRyZXNzCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAcZ2V0UGxhY2VQbGF5ZXJBZGRyZXNzRGF0YUtleQAAAAIFAAAACXJhY2VJZFN0cgAAAAAAAAAAAgUAAAAYc2Vjb25kUGxhY2VQbGF5ZXJBZGRyZXNzCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAcZ2V0UGxhY2VQbGF5ZXJBZGRyZXNzRGF0YUtleQAAAAIFAAAACXJhY2VJZFN0cgAAAAAAAAAAAwUAAAAXdGhpcmRQbGFjZVBsYXllckFkZHJlc3MJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABRnZXRTdGFydFByaWNlRGF0YUtleQAAAAIFAAAACXJhY2VJZFN0cgUAAAALYnRjQ3VycmVuY3kFAAAADWJ0Y1N0YXJ0UHJpY2UJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABJnZXRFbmRQcmljZURhdGFLZXkAAAACBQAAAAlyYWNlSWRTdHIFAAAAC2J0Y0N1cnJlbmN5BQAAAAtidGNFbmRQcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFGdldFN0YXJ0UHJpY2VEYXRhS2V5AAAAAgUAAAAJcmFjZUlkU3RyBQAAAAtldGhDdXJyZW5jeQUAAAANZXRoU3RhcnRQcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldEVuZFByaWNlRGF0YUtleQAAAAIFAAAACXJhY2VJZFN0cgUAAAALZXRoQ3VycmVuY3kFAAAAC2V0aEVuZFByaWNlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAUZ2V0U3RhcnRQcmljZURhdGFLZXkAAAACBQAAAAlyYWNlSWRTdHIFAAAADXdhdmVzQ3VycmVuY3kFAAAAD3dhdmVzU3RhcnRQcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldEVuZFByaWNlRGF0YUtleQAAAAIFAAAACXJhY2VJZFN0cgUAAAANd2F2ZXNDdXJyZW5jeQUAAAANd2F2ZXNFbmRQcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFGdldFN0YXJ0UHJpY2VEYXRhS2V5AAAAAgUAAAAJcmFjZUlkU3RyBQAAAAtsdGNDdXJyZW5jeQUAAAANbHRjU3RhcnRQcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldEVuZFByaWNlRGF0YUtleQAAAAIFAAAACXJhY2VJZFN0cgUAAAALbHRjQ3VycmVuY3kFAAAAC2x0Y0VuZFByaWNlBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAABdmaXJzdFBsYWNlUGxheWVyQWRkcmVzcwUAAAAVZmlyc3RQbGFjZVByaXplQW1vdW50BQAAAAR1bml0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAYc2Vjb25kUGxhY2VQbGF5ZXJBZGRyZXNzBQAAABZzZWNvbmRQbGFjZVByaXplQW1vdW50BQAAAAR1bml0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAXdGhpcmRQbGFjZVBsYXllckFkZHJlc3MFAAAAFXRoaXJkUGxhY2VQcml6ZUFtb3VudAUAAAAEdW5pdAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAbZ2V0RGVzdGluYXRpb25XYWxsZXRBZGRyZXNzAAAAAAUAAAAQY29tbWlzc2lvbkFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAAAKTI8Uw=", "chainId": 84, "height": 606568, "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+let ownerPublicKey = base58'9UUaVVahBUyLHLQo4HNuQsRMKY9QBH43Grojkbdf4wG4'
5+
6+let destinationWalletAddressDataKey = "destination_wallet_address"
7+
8+let btcCurrency = "btc"
9+
10+let ethCurrency = "eth"
11+
12+let wavesCurrency = "waves"
13+
14+let ltcCurrency = "ltc"
15+
16+func getRaceEndedDataKey (raceId) = (raceId + "_is_ended")
17+
18+
19+func getCancelBetDataKey (raceId,playerAddress) = (((raceId + "_") + playerAddress) + "_canceled")
20+
21+
22+func getBetDataKey (raceId,playerAddress,currency) = (((((raceId + "_player_") + playerAddress) + "_bet_") + currency) + "_amount")
23+
24+
25+func getShareSumDataKey (raceId,playerAddress,currency) = (((((raceId + "_player_") + playerAddress) + "_") + currency) + "_share_sum")
26+
27+
28+func getTotalBetDataKey (raceId) = (raceId + "_total_bet_amount")
29+
30+
31+func getPlacePlayerAddressDataKey (raceId,placeIndex) = (((raceId + "_") + toString(placeIndex)) + "_place_player_address")
32+
33+
34+func getStartPriceDataKey (raceId,currency) = (((raceId + "_") + currency) + "_start_price")
35+
36+
37+func getEndPriceDataKey (raceId,currency) = (((raceId + "_") + currency) + "_end_price")
38+
39+
40+func getDestinationWalletAddress () = match getString(this, destinationWalletAddressDataKey) {
41+ case v: String =>
42+ if ((v == ""))
43+ then throw("Destination wallet address cannot be empty")
44+ else addressFromStringValue(v)
45+ case _ =>
46+ throw("Destination wallet address undefined")
47+}
48+
49+
50+func isBetCanceled (raceId,playerAddress) = match getBoolean(this, getCancelBetDataKey(raceId, playerAddress)) {
51+ case v: Boolean =>
52+ v
53+ case _ =>
54+ false
55+}
56+
57+
58+func isBetSet (raceId,playerAddress) = match getInteger(this, getBetDataKey(raceId, playerAddress, wavesCurrency)) {
59+ case v: Int =>
60+ true
61+ case _ =>
62+ false
63+}
64+
65+
66+func isRaceEnded (raceId) = match getBoolean(this, getRaceEndedDataKey(raceId)) {
67+ case v: Boolean =>
68+ v
69+ case _ =>
70+ false
71+}
72+
73+
74+@Callable(i)
75+func setDestinationWallet (address) = if ((i.callerPublicKey != ownerPublicKey))
76+ then throw("Only owner can call this method")
77+ else if ((address == ""))
78+ then throw("Address cannot be empty")
79+ else WriteSet([DataEntry(destinationWalletAddressDataKey, address)])
80+
81+
82+
83+@Callable(i)
84+func bet (raceId,portfolioBtcShareSum,portfolioEthShareSum,portfolioWavesShareSum,portfolioLtcShareSum,signature) = {
85+ let raceIdStr = toString(raceId)
86+ let payment = extract(i.payment)
87+ let betAmount = payment.amount
88+ let callerAddressStr = toBase58String(i.caller.bytes)
89+ if (isRaceEnded(raceIdStr))
90+ then throw("Race ended, bet canceled")
91+ else if (isBetSet(raceIdStr, callerAddressStr))
92+ then throw("You already set bet")
93+ else if (isBetCanceled(raceIdStr, callerAddressStr))
94+ then throw("Your bet has been canceled, you cannot bet in this race anymore")
95+ else {
96+ let validatingDataStr = ((((((raceIdStr + callerAddressStr) + toString(betAmount)) + toString(portfolioBtcShareSum)) + toString(portfolioEthShareSum)) + toString(portfolioWavesShareSum)) + toString(portfolioLtcShareSum))
97+ if (!(sigVerify(toBytes(validatingDataStr), signature, ownerPublicKey)))
98+ then throw("Cannot verify signature while set bet")
99+ else {
100+ let totalBetAmount = match getInteger(this, getTotalBetDataKey(raceIdStr)) {
101+ case v: Int =>
102+ v
103+ case _ =>
104+ 0
105+ }
106+ let newTotalBetAmount = (totalBetAmount + betAmount)
107+ WriteSet([DataEntry(getTotalBetDataKey(raceIdStr), newTotalBetAmount), DataEntry(getBetDataKey(raceIdStr, callerAddressStr, wavesCurrency), betAmount), DataEntry(getShareSumDataKey(raceIdStr, callerAddressStr, btcCurrency), portfolioBtcShareSum), DataEntry(getShareSumDataKey(raceIdStr, callerAddressStr, ethCurrency), portfolioEthShareSum), DataEntry(getShareSumDataKey(raceIdStr, callerAddressStr, wavesCurrency), portfolioWavesShareSum), DataEntry(getShareSumDataKey(raceIdStr, callerAddressStr, ltcCurrency), portfolioLtcShareSum)])
108+ }
109+ }
110+ }
111+
112+
113+
114+@Callable(i)
115+func cancelBet (raceId,signature) = {
116+ let raceIdStr = toString(raceId)
117+ let callerAddressStr = toBase58String(i.caller.bytes)
118+ if (isRaceEnded(raceIdStr))
119+ then throw("Race ended, you cannot cancel bet")
120+ else if (isBetCanceled(raceIdStr, callerAddressStr))
121+ then throw("Bet already canceled")
122+ else {
123+ let validatingDataStr = ((toString(raceId) + callerAddressStr) + "cancel")
124+ if (!(sigVerify(toBytes(validatingDataStr), signature, ownerPublicKey)))
125+ then throw("Cannot verify signature while cancel bet")
126+ else {
127+ let totalBetDataKey = getTotalBetDataKey(raceIdStr)
128+ let playerBetAmount = getIntegerValue(this, getBetDataKey(raceIdStr, callerAddressStr, wavesCurrency))
129+ let currentTotalBetAmount = getIntegerValue(this, totalBetDataKey)
130+ let newTotalBetAmount = (currentTotalBetAmount - playerBetAmount)
131+ if ((0 > newTotalBetAmount))
132+ then throw("New state of total bet will be less than zero, state error")
133+ else ScriptResult(WriteSet([DataEntry(getCancelBetDataKey(raceIdStr, callerAddressStr), true), DataEntry(totalBetDataKey, newTotalBetAmount)]), TransferSet([ScriptTransfer(addressFromStringValue(callerAddressStr), playerBetAmount, unit)]))
134+ }
135+ }
136+ }
137+
138+
139+
140+@Callable(i)
141+func endRace (id,firstPlacePlayerAddress,secondPlacePlayerAddress,thirdPlacePlayerAddress,btcStartPrice,btcEndPrice,ethStartPrice,ethEndPrice,wavesStartPrice,wavesEndPrice,ltcStartPrice,ltcEndPrice) = {
142+ let raceIdStr = toString(id)
143+ if ((i.callerPublicKey != ownerPublicKey))
144+ then throw("Only owner can call endRace")
145+ else if (isRaceEnded(raceIdStr))
146+ then throw("Race already ended, you cannot end this race")
147+ else {
148+ let totalBetAmount = getIntegerValue(this, getTotalBetDataKey(raceIdStr))
149+ let firstPlacePlayerDepositAmount = getIntegerValue(this, getBetDataKey(raceIdStr, firstPlacePlayerAddress, wavesCurrency))
150+ let secondPlacePlayerDepositAmount = getIntegerValue(this, getBetDataKey(raceIdStr, secondPlacePlayerAddress, wavesCurrency))
151+ let thirdPlacePlayerDepositAmount = getIntegerValue(this, getBetDataKey(raceIdStr, thirdPlacePlayerAddress, wavesCurrency))
152+ let firstPlacePrizeAmount = (firstPlacePlayerDepositAmount * 2)
153+ let secondPlacePrizeAmount = ((secondPlacePlayerDepositAmount * 3) / 2)
154+ let thirdPlacePrizeAmount = thirdPlacePlayerDepositAmount
155+ let commissionAmount = (totalBetAmount - ((firstPlacePrizeAmount + secondPlacePrizeAmount) + thirdPlacePrizeAmount))
156+ if ((0 >= commissionAmount))
157+ then throw("Commission must be greater than zero, state error")
158+ else {
159+ let currentBalance = wavesBalance(this)
160+ let newAmount = (currentBalance + commissionAmount)
161+ ScriptResult(WriteSet([DataEntry(getRaceEndedDataKey(raceIdStr), true), DataEntry(getPlacePlayerAddressDataKey(raceIdStr, 1), firstPlacePlayerAddress), DataEntry(getPlacePlayerAddressDataKey(raceIdStr, 2), secondPlacePlayerAddress), DataEntry(getPlacePlayerAddressDataKey(raceIdStr, 3), thirdPlacePlayerAddress), DataEntry(getStartPriceDataKey(raceIdStr, btcCurrency), btcStartPrice), DataEntry(getEndPriceDataKey(raceIdStr, btcCurrency), btcEndPrice), DataEntry(getStartPriceDataKey(raceIdStr, ethCurrency), ethStartPrice), DataEntry(getEndPriceDataKey(raceIdStr, ethCurrency), ethEndPrice), DataEntry(getStartPriceDataKey(raceIdStr, wavesCurrency), wavesStartPrice), DataEntry(getEndPriceDataKey(raceIdStr, wavesCurrency), wavesEndPrice), DataEntry(getStartPriceDataKey(raceIdStr, ltcCurrency), ltcStartPrice), DataEntry(getEndPriceDataKey(raceIdStr, ltcCurrency), ltcEndPrice)]), TransferSet([ScriptTransfer(addressFromStringValue(firstPlacePlayerAddress), firstPlacePrizeAmount, unit), ScriptTransfer(addressFromStringValue(secondPlacePlayerAddress), secondPlacePrizeAmount, unit), ScriptTransfer(addressFromStringValue(thirdPlacePlayerAddress), thirdPlacePrizeAmount, unit), ScriptTransfer(getDestinationWalletAddress(), commissionAmount, unit)]))
162+ }
163+ }
164+ }
165+
166+

github/deemru/w8io/026f985 
20.58 ms