tx · D3mu1cFZYp9rcYgHowCRhx8Pqtg1ZojdYZGVbhb7DPio

3Mttoccgkeiiy6UDNxZgRryjbHDhtNSG8hk:  -0.01000000 Waves

2019.07.28 13:20 [605778] smart account 3Mttoccgkeiiy6UDNxZgRryjbHDhtNSG8hk > SELF 0.00000000 Waves

{ "type": 13, "id": "D3mu1cFZYp9rcYgHowCRhx8Pqtg1ZojdYZGVbhb7DPio", "fee": 1000000, "feeAssetId": null, "timestamp": 1564309218272, "version": 1, "sender": "3Mttoccgkeiiy6UDNxZgRryjbHDhtNSG8hk", "senderPublicKey": "85Agsd1kzDDGoNw1gnh5KHdzJBTckBemuSqfn9v9YyB1", "proofs": [ "UorzUz1ExYFaEoJwHNAM5PBpzXqoBTnaRJ4MjPj7aEv49kEjmFudi5S6pUPjeeG2ZzVRo6caxTnhNS9qBaTdfFh" ], "script": "base64:AAIDAAAAAAAAAAAAAAAPAAAAAA5vd25lclB1YmxpY0tleQEAAAAgfedb8gHq6MpA0xTx8E4brUvyXTxMUxGzgoeMhec7vFkAAAAAH2Rlc3RpbmF0aW9uV2FsbGV0QWRkcmVzc0RhdGFLZXkCAAAAGmRlc3RpbmF0aW9uX3dhbGxldF9hZGRyZXNzAAAAAAtidGNDdXJyZW5jeQIAAAADYnRjAAAAAAtldGhDdXJyZW5jeQIAAAADZXRoAAAAAA13YXZlc0N1cnJlbmN5AgAAAAV3YXZlcwAAAAALbHRjQ3VycmVuY3kCAAAAA2x0YwEAAAAbZ2V0RGVzdGluYXRpb25XYWxsZXRBZGRyZXNzAAAAAAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAB9kZXN0aW5hdGlvbldhbGxldEFkZHJlc3NEYXRhS2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXYFAAAAByRtYXRjaDADCQAAAAAAAAIFAAAAAXYCAAAAAAkAAAIAAAABAgAAACpEZXN0aW5hdGlvbiB3YWxsZXQgYWRkcmVzcyBjYW5ub3QgYmUgZW1wdHkJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAABdgkAAAIAAAABAgAAACREZXN0aW5hdGlvbiB3YWxsZXQgYWRkcmVzcyB1bmRlZmluZWQBAAAAE2dldENhbmNlbEJldERhdGFLZXkAAAACAAAABnJhY2VJZAAAAA1wbGF5ZXJBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZyYWNlSWQCAAAAAV8FAAAADXBsYXllckFkZHJlc3MCAAAACV9jYW5jZWxlZAEAAAANZ2V0QmV0RGF0YUtleQAAAAMAAAAGcmFjZUlkAAAADXBsYXllckFkZHJlc3MAAAAIY3VycmVuY3kJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZyYWNlSWQCAAAACF9wbGF5ZXJfBQAAAA1wbGF5ZXJBZGRyZXNzAgAAAAVfYmV0XwUAAAAIY3VycmVuY3kCAAAAB19hbW91bnQBAAAAEmdldFNoYXJlU3VtRGF0YUtleQAAAAMAAAAGcmFjZUlkAAAADXBsYXllckFkZHJlc3MAAAAIY3VycmVuY3kJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZyYWNlSWQCAAAACF9wbGF5ZXJfBQAAAA1wbGF5ZXJBZGRyZXNzAgAAAAFfBQAAAAhjdXJyZW5jeQIAAAAKX3NoYXJlX3N1bQEAAAASZ2V0VG90YWxCZXREYXRhS2V5AAAAAQAAAAZyYWNlSWQJAAEsAAAAAgUAAAAGcmFjZUlkAgAAABFfdG90YWxfYmV0X2Ftb3VudAEAAAAcZ2V0UGxhY2VQbGF5ZXJBZGRyZXNzRGF0YUtleQAAAAIAAAAGcmFjZUlkAAAACnBsYWNlSW5kZXgJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABnJhY2VJZAIAAAABXwkAAaQAAAABBQAAAApwbGFjZUluZGV4AgAAABVfcGxhY2VfcGxheWVyX2FkZHJlc3MBAAAAFGdldFN0YXJ0UHJpY2VEYXRhS2V5AAAAAgAAAAZyYWNlSWQAAAAIY3VycmVuY3kJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABnJhY2VJZAIAAAABXwUAAAAIY3VycmVuY3kCAAAADF9zdGFydF9wcmljZQEAAAASZ2V0RW5kUHJpY2VEYXRhS2V5AAAAAgAAAAZyYWNlSWQAAAAIY3VycmVuY3kJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABnJhY2VJZAIAAAABXwUAAAAIY3VycmVuY3kCAAAACl9lbmRfcHJpY2UBAAAADWlzQmV0Q2FuY2VsZWQAAAACAAAABnJhY2VJZAAAAA1wbGF5ZXJBZGRyZXNzBAAAAAckbWF0Y2gwCQAEGwAAAAIFAAAABHRoaXMJAQAAABNnZXRDYW5jZWxCZXREYXRhS2V5AAAAAgUAAAAGcmFjZUlkBQAAAA1wbGF5ZXJBZGRyZXNzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAF2BQAAAAckbWF0Y2gwBQAAAAF2CQAAAgAAAAECAAAAMU5vdCBib29sZWFuIHZhbHVlIGRldGVjdGVkLCB2YWx1ZSBtdXN0IGJlIGJvb2xlYW4AAAAEAAAAAWkBAAAAFHNldERlc3RpbmF0aW9uV2FsbGV0AAAAAQAAAAdhZGRyZXNzAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAA5vd25lclB1YmxpY0tleQkAAAIAAAABAgAAAB9Pbmx5IG93bmVyIGNhbiBjYWxsIHRoaXMgbWV0aG9kAwkAAAAAAAACBQAAAAdhZGRyZXNzAgAAAAAJAAACAAAAAQIAAAAXQWRkcmVzcyBjYW5ub3QgYmUgZW1wdHkJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAH2Rlc3RpbmF0aW9uV2FsbGV0QWRkcmVzc0RhdGFLZXkFAAAAB2FkZHJlc3MFAAAAA25pbAAAAAFpAQAAAANiZXQAAAAGAAAABnJhY2VJZAAAABRwb3J0Zm9saW9CdGNTaGFyZVN1bQAAABRwb3J0Zm9saW9FdGhTaGFyZVN1bQAAABZwb3J0Zm9saW9XYXZlc1NoYXJlU3VtAAAAFHBvcnRmb2xpb0x0Y1NoYXJlU3VtAAAACXNpZ25hdHVyZQQAAAAJcmFjZUlkU3RyCQABpAAAAAEFAAAABnJhY2VJZAQAAAAHcGF5bWVudAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAAAliZXRBbW91bnQIBQAAAAdwYXltZW50AAAABmFtb3VudAQAAAAQY2FsbGVyQWRkcmVzc1N0cgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzAwkBAAAADWlzQmV0Q2FuY2VsZWQAAAACBQAAAAlyYWNlSWRTdHIFAAAAEGNhbGxlckFkZHJlc3NTdHIJAAACAAAAAQIAAAA/WW91ciBiZXQgaGFzIGJlZW4gY2FuY2VsZWQsIHlvdSBjYW5ub3QgYmV0IGluIHRoaXMgcmFjZSBhbnltb3JlBAAAABF2YWxpZGF0aW5nRGF0YVN0cgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAJcmFjZUlkU3RyBQAAABBjYWxsZXJBZGRyZXNzU3RyCQABpAAAAAEFAAAACWJldEFtb3VudAkAAaQAAAABBQAAABRwb3J0Zm9saW9CdGNTaGFyZVN1bQkAAaQAAAABBQAAABRwb3J0Zm9saW9FdGhTaGFyZVN1bQkAAaQAAAABBQAAABZwb3J0Zm9saW9XYXZlc1NoYXJlU3VtCQABpAAAAAEFAAAAFHBvcnRmb2xpb0x0Y1NoYXJlU3VtAwkBAAAAASEAAAABCQAB9AAAAAMJAAGbAAAAAQUAAAARdmFsaWRhdGluZ0RhdGFTdHIFAAAACXNpZ25hdHVyZQUAAAAOb3duZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAXQ2Fubm90IHZlcmlmeSBzaWduYXR1cmUEAAAADnRvdGFsQmV0QW1vdW50BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAQAAABJnZXRUb3RhbEJldERhdGFLZXkAAAABBQAAAAlyYWNlSWRTdHIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABdgUAAAAHJG1hdGNoMAUAAAABdgAAAAAAAAAAAAQAAAARbmV3VG90YWxCZXRBbW91bnQJAABkAAAAAgUAAAAOdG90YWxCZXRBbW91bnQFAAAACWJldEFtb3VudAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldFRvdGFsQmV0RGF0YUtleQAAAAEFAAAACXJhY2VJZFN0cgUAAAARbmV3VG90YWxCZXRBbW91bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA1nZXRCZXREYXRhS2V5AAAAAwUAAAAJcmFjZUlkU3RyBQAAABBjYWxsZXJBZGRyZXNzU3RyBQAAAA13YXZlc0N1cnJlbmN5BQAAAAliZXRBbW91bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABJnZXRTaGFyZVN1bURhdGFLZXkAAAADBQAAAAlyYWNlSWRTdHIFAAAAEGNhbGxlckFkZHJlc3NTdHIFAAAAC2J0Y0N1cnJlbmN5BQAAABRwb3J0Zm9saW9CdGNTaGFyZVN1bQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldFNoYXJlU3VtRGF0YUtleQAAAAMFAAAACXJhY2VJZFN0cgUAAAAQY2FsbGVyQWRkcmVzc1N0cgUAAAALZXRoQ3VycmVuY3kFAAAAFHBvcnRmb2xpb0V0aFNoYXJlU3VtCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAASZ2V0U2hhcmVTdW1EYXRhS2V5AAAAAwUAAAAJcmFjZUlkU3RyBQAAABBjYWxsZXJBZGRyZXNzU3RyBQAAAA13YXZlc0N1cnJlbmN5BQAAABZwb3J0Zm9saW9XYXZlc1NoYXJlU3VtCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAASZ2V0U2hhcmVTdW1EYXRhS2V5AAAAAwUAAAAJcmFjZUlkU3RyBQAAABBjYWxsZXJBZGRyZXNzU3RyBQAAAAtsdGNDdXJyZW5jeQUAAAAUcG9ydGZvbGlvTHRjU2hhcmVTdW0FAAAAA25pbAAAAAFpAQAAAAljYW5jZWxCZXQAAAACAAAABnJhY2VJZAAAAAlzaWduYXR1cmUEAAAACXJhY2VJZFN0cgkAAaQAAAABBQAAAAZyYWNlSWQEAAAAEGNhbGxlckFkZHJlc3NTdHIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwMJAQAAAA1pc0JldENhbmNlbGVkAAAAAgUAAAAJcmFjZUlkU3RyBQAAABBjYWxsZXJBZGRyZXNzU3RyCQAAAgAAAAECAAAAFEJldCBhbHJlYWR5IGNhbmNlbGVkBAAAABF2YWxpZGF0aW5nRGF0YVN0cgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAGcmFjZUlkBQAAABBjYWxsZXJBZGRyZXNzU3RyAgAAAAZjYW5jZWwDCQEAAAABIQAAAAEJAAH0AAAAAwkAAZsAAAABBQAAABF2YWxpZGF0aW5nRGF0YVN0cgUAAAAJc2lnbmF0dXJlBQAAAA5vd25lclB1YmxpY0tleQkAAAIAAAABAgAAABdDYW5ub3QgdmVyaWZ5IHNpZ25hdHVyZQQAAAAPdG90YWxCZXREYXRhS2V5CQEAAAASZ2V0VG90YWxCZXREYXRhS2V5AAAAAQUAAAAJcmFjZUlkU3RyBAAAAA9wbGF5ZXJCZXRBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAQAAAA1nZXRCZXREYXRhS2V5AAAAAwUAAAAJcmFjZUlkU3RyBQAAABBjYWxsZXJBZGRyZXNzU3RyBQAAAA13YXZlc0N1cnJlbmN5BAAAABVjdXJyZW50VG90YWxCZXRBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAAD3RvdGFsQmV0RGF0YUtleQQAAAARbmV3VG90YWxCZXRBbW91bnQJAABlAAAAAgUAAAAVY3VycmVudFRvdGFsQmV0QW1vdW50BQAAAA9wbGF5ZXJCZXRBbW91bnQDCQAAZgAAAAIAAAAAAAAAAAAFAAAAEW5ld1RvdGFsQmV0QW1vdW50CQAAAgAAAAECAAAAOk5ldyBzdGF0ZSBvZiB0b3RhbCBiZXQgd2lsbCBiZSBsZXNzIHRoYW4gemVybywgc3RhdGUgZXJyb3IJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAATZ2V0Q2FuY2VsQmV0RGF0YUtleQAAAAIFAAAACXJhY2VJZFN0cgUAAAAQY2FsbGVyQWRkcmVzc1N0cgYJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAD3RvdGFsQmV0RGF0YUtleQUAAAARbmV3VG90YWxCZXRBbW91bnQFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAAEGNhbGxlckFkZHJlc3NTdHIFAAAAD3BsYXllckJldEFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAAB2VuZFJhY2UAAAAMAAAAAmlkAAAAF2ZpcnN0UGxhY2VQbGF5ZXJBZGRyZXNzAAAAGHNlY29uZFBsYWNlUGxheWVyQWRkcmVzcwAAABd0aGlyZFBsYWNlUGxheWVyQWRkcmVzcwAAAA1idGNTdGFydFByaWNlAAAAC2J0Y0VuZFByaWNlAAAADWV0aFN0YXJ0UHJpY2UAAAALZXRoRW5kUHJpY2UAAAAPd2F2ZXNTdGFydFByaWNlAAAADXdhdmVzRW5kUHJpY2UAAAANbHRjU3RhcnRQcmljZQAAAAtsdGNFbmRQcmljZQMJAQAAAAIhPQAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAAOb3duZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAbT25seSBvd25lciBjYW4gY2FsbCBlbmRSYWNlBAAAAAlyYWNlSWRTdHIJAAGkAAAAAQUAAAACaWQEAAAADnRvdGFsQmV0QW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQEAAAASZ2V0VG90YWxCZXREYXRhS2V5AAAAAQUAAAAJcmFjZUlkU3RyBAAAAB1maXJzdFBsYWNlUGxheWVyRGVwb3NpdEFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkBAAAADWdldEJldERhdGFLZXkAAAADBQAAAAlyYWNlSWRTdHIFAAAAF2ZpcnN0UGxhY2VQbGF5ZXJBZGRyZXNzBQAAAA13YXZlc0N1cnJlbmN5BAAAAB5zZWNvbmRQbGFjZVBsYXllckRlcG9zaXRBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAQAAAA1nZXRCZXREYXRhS2V5AAAAAwUAAAAJcmFjZUlkU3RyBQAAABhzZWNvbmRQbGFjZVBsYXllckFkZHJlc3MFAAAADXdhdmVzQ3VycmVuY3kEAAAAHXRoaXJkUGxhY2VQbGF5ZXJEZXBvc2l0QW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQEAAAANZ2V0QmV0RGF0YUtleQAAAAMFAAAACXJhY2VJZFN0cgUAAAAXdGhpcmRQbGFjZVBsYXllckFkZHJlc3MFAAAADXdhdmVzQ3VycmVuY3kEAAAAFWZpcnN0UGxhY2VQcml6ZUFtb3VudAkAAGgAAAACBQAAAB1maXJzdFBsYWNlUGxheWVyRGVwb3NpdEFtb3VudAAAAAAAAAAAAgQAAAAWc2Vjb25kUGxhY2VQcml6ZUFtb3VudAkAAGkAAAACCQAAaAAAAAIFAAAAHnNlY29uZFBsYWNlUGxheWVyRGVwb3NpdEFtb3VudAAAAAAAAAAAAwAAAAAAAAAAAgQAAAAVdGhpcmRQbGFjZVByaXplQW1vdW50BQAAAB10aGlyZFBsYWNlUGxheWVyRGVwb3NpdEFtb3VudAQAAAAQY29tbWlzc2lvbkFtb3VudAkAAGUAAAACBQAAAA50b3RhbEJldEFtb3VudAkAAGQAAAACCQAAZAAAAAIFAAAAFWZpcnN0UGxhY2VQcml6ZUFtb3VudAUAAAAWc2Vjb25kUGxhY2VQcml6ZUFtb3VudAUAAAAVdGhpcmRQbGFjZVByaXplQW1vdW50AwkAAGcAAAACAAAAAAAAAAAABQAAABBjb21taXNzaW9uQW1vdW50CQAAAgAAAAECAAAAMUNvbW1pc3Npb24gbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybywgc3RhdGUgZXJyb3IEAAAADWN1cnJlbnRBbW91bnQJAQAAAAx3YXZlc0JhbGFuY2UAAAABBQAAAAR0aGlzBAAAAAluZXdBbW91bnQJAABlAAAAAgUAAAANY3VycmVudEFtb3VudAUAAAAQY29tbWlzc2lvbkFtb3VudAMJAABmAAAAAgAAAAAAAAAAAAUAAAAJbmV3QW1vdW50CQAAAgAAAAECAAAAIE5vdCBlbm91Z2ggZnVuZHMgaW4gY29yZSBhY2NvdW50CQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAHGdldFBsYWNlUGxheWVyQWRkcmVzc0RhdGFLZXkAAAACBQAAAAlyYWNlSWRTdHIAAAAAAAAAAAEFAAAAF2ZpcnN0UGxhY2VQbGF5ZXJBZGRyZXNzCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAcZ2V0UGxhY2VQbGF5ZXJBZGRyZXNzRGF0YUtleQAAAAIFAAAACXJhY2VJZFN0cgAAAAAAAAAAAgUAAAAYc2Vjb25kUGxhY2VQbGF5ZXJBZGRyZXNzCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAcZ2V0UGxhY2VQbGF5ZXJBZGRyZXNzRGF0YUtleQAAAAIFAAAACXJhY2VJZFN0cgAAAAAAAAAAAwUAAAAXdGhpcmRQbGFjZVBsYXllckFkZHJlc3MJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABRnZXRTdGFydFByaWNlRGF0YUtleQAAAAIFAAAACXJhY2VJZFN0cgUAAAALYnRjQ3VycmVuY3kFAAAADWJ0Y1N0YXJ0UHJpY2UJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABJnZXRFbmRQcmljZURhdGFLZXkAAAACBQAAAAlyYWNlSWRTdHIFAAAAC2J0Y0N1cnJlbmN5BQAAAAtidGNFbmRQcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFGdldFN0YXJ0UHJpY2VEYXRhS2V5AAAAAgUAAAAJcmFjZUlkU3RyBQAAAAtldGhDdXJyZW5jeQUAAAANZXRoU3RhcnRQcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldEVuZFByaWNlRGF0YUtleQAAAAIFAAAACXJhY2VJZFN0cgUAAAALZXRoQ3VycmVuY3kFAAAAC2V0aEVuZFByaWNlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAUZ2V0U3RhcnRQcmljZURhdGFLZXkAAAACBQAAAAlyYWNlSWRTdHIFAAAADXdhdmVzQ3VycmVuY3kFAAAAD3dhdmVzU3RhcnRQcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldEVuZFByaWNlRGF0YUtleQAAAAIFAAAACXJhY2VJZFN0cgUAAAANd2F2ZXNDdXJyZW5jeQUAAAANd2F2ZXNFbmRQcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFGdldFN0YXJ0UHJpY2VEYXRhS2V5AAAAAgUAAAAJcmFjZUlkU3RyBQAAAAtsdGNDdXJyZW5jeQUAAAANbHRjU3RhcnRQcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldEVuZFByaWNlRGF0YUtleQAAAAIFAAAACXJhY2VJZFN0cgUAAAALbHRjQ3VycmVuY3kFAAAAC2x0Y0VuZFByaWNlBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAABdmaXJzdFBsYWNlUGxheWVyQWRkcmVzcwUAAAAVZmlyc3RQbGFjZVByaXplQW1vdW50BQAAAAR1bml0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAYc2Vjb25kUGxhY2VQbGF5ZXJBZGRyZXNzBQAAABZzZWNvbmRQbGFjZVByaXplQW1vdW50BQAAAAR1bml0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAXdGhpcmRQbGFjZVBsYXllckFkZHJlc3MFAAAAFXRoaXJkUGxhY2VQcml6ZUFtb3VudAUAAAAEdW5pdAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAbZ2V0RGVzdGluYXRpb25XYWxsZXRBZGRyZXNzAAAAAAUAAAAQY29tbWlzc2lvbkFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAAAANOZH0=", "chainId": 84, "height": 605778, "spentComplexity": 0 } View: original | compacted Prev: 5Hsf62Z3FG9ypQuB5ZE5zzMC3XeYPNhcED5vAubW6TsQ Next: 3Y4U9nWW6S7BrM9Wg2LUXWyWFWAYfC1ixiyWmEHGYNu3 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 getDestinationWalletAddress () = match getString(this, destinationWalletAddressDataKey) {
17+ case v: String =>
18+ if ((v == ""))
19+ then throw("Destination wallet address cannot be empty")
20+ else addressFromStringValue(v)
21+ case _ =>
22+ throw("Destination wallet address undefined")
23+}
24+
25+
26+func getCancelBetDataKey (raceId,playerAddress) = (((raceId + "_") + playerAddress) + "_canceled")
27+
28+
29+func getBetDataKey (raceId,playerAddress,currency) = (((((raceId + "_player_") + playerAddress) + "_bet_") + currency) + "_amount")
30+
31+
32+func getShareSumDataKey (raceId,playerAddress,currency) = (((((raceId + "_player_") + playerAddress) + "_") + currency) + "_share_sum")
33+
34+
35+func getTotalBetDataKey (raceId) = (raceId + "_total_bet_amount")
36+
37+
38+func getPlacePlayerAddressDataKey (raceId,placeIndex) = (((raceId + "_") + toString(placeIndex)) + "_place_player_address")
39+
40+
41+func getStartPriceDataKey (raceId,currency) = (((raceId + "_") + currency) + "_start_price")
42+
43+
44+func getEndPriceDataKey (raceId,currency) = (((raceId + "_") + currency) + "_end_price")
45+
46+
47+func isBetCanceled (raceId,playerAddress) = match getBoolean(this, getCancelBetDataKey(raceId, playerAddress)) {
48+ case v: Boolean =>
49+ v
50+ case _ =>
51+ throw("Not boolean value detected, value must be boolean")
52+}
53+
54+
55+@Callable(i)
56+func setDestinationWallet (address) = if ((i.callerPublicKey != ownerPublicKey))
57+ then throw("Only owner can call this method")
58+ else if ((address == ""))
59+ then throw("Address cannot be empty")
60+ else WriteSet([DataEntry(destinationWalletAddressDataKey, address)])
61+
62+
63+
64+@Callable(i)
65+func bet (raceId,portfolioBtcShareSum,portfolioEthShareSum,portfolioWavesShareSum,portfolioLtcShareSum,signature) = {
66+ let raceIdStr = toString(raceId)
67+ let payment = extract(i.payment)
68+ let betAmount = payment.amount
69+ let callerAddressStr = toBase58String(i.caller.bytes)
70+ if (isBetCanceled(raceIdStr, callerAddressStr))
71+ then throw("Your bet has been canceled, you cannot bet in this race anymore")
72+ else {
73+ let validatingDataStr = ((((((raceIdStr + callerAddressStr) + toString(betAmount)) + toString(portfolioBtcShareSum)) + toString(portfolioEthShareSum)) + toString(portfolioWavesShareSum)) + toString(portfolioLtcShareSum))
74+ if (!(sigVerify(toBytes(validatingDataStr), signature, ownerPublicKey)))
75+ then throw("Cannot verify signature")
76+ else {
77+ let totalBetAmount = match getInteger(this, getTotalBetDataKey(raceIdStr)) {
78+ case v: Int =>
79+ v
80+ case _ =>
81+ 0
82+ }
83+ let newTotalBetAmount = (totalBetAmount + betAmount)
84+ 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)])
85+ }
86+ }
87+ }
88+
89+
90+
91+@Callable(i)
92+func cancelBet (raceId,signature) = {
93+ let raceIdStr = toString(raceId)
94+ let callerAddressStr = toBase58String(i.caller.bytes)
95+ if (isBetCanceled(raceIdStr, callerAddressStr))
96+ then throw("Bet already canceled")
97+ else {
98+ let validatingDataStr = ((toString(raceId) + callerAddressStr) + "cancel")
99+ if (!(sigVerify(toBytes(validatingDataStr), signature, ownerPublicKey)))
100+ then throw("Cannot verify signature")
101+ else {
102+ let totalBetDataKey = getTotalBetDataKey(raceIdStr)
103+ let playerBetAmount = getIntegerValue(this, getBetDataKey(raceIdStr, callerAddressStr, wavesCurrency))
104+ let currentTotalBetAmount = getIntegerValue(this, totalBetDataKey)
105+ let newTotalBetAmount = (currentTotalBetAmount - playerBetAmount)
106+ if ((0 > newTotalBetAmount))
107+ then throw("New state of total bet will be less than zero, state error")
108+ else ScriptResult(WriteSet([DataEntry(getCancelBetDataKey(raceIdStr, callerAddressStr), true), DataEntry(totalBetDataKey, newTotalBetAmount)]), TransferSet([ScriptTransfer(addressFromStringValue(callerAddressStr), playerBetAmount, unit)]))
109+ }
110+ }
111+ }
112+
113+
114+
115+@Callable(i)
116+func endRace (id,firstPlacePlayerAddress,secondPlacePlayerAddress,thirdPlacePlayerAddress,btcStartPrice,btcEndPrice,ethStartPrice,ethEndPrice,wavesStartPrice,wavesEndPrice,ltcStartPrice,ltcEndPrice) = if ((i.callerPublicKey != ownerPublicKey))
117+ then throw("Only owner can call endRace")
118+ else {
119+ let raceIdStr = toString(id)
120+ let totalBetAmount = getIntegerValue(this, getTotalBetDataKey(raceIdStr))
121+ let firstPlacePlayerDepositAmount = getIntegerValue(this, getBetDataKey(raceIdStr, firstPlacePlayerAddress, wavesCurrency))
122+ let secondPlacePlayerDepositAmount = getIntegerValue(this, getBetDataKey(raceIdStr, secondPlacePlayerAddress, wavesCurrency))
123+ let thirdPlacePlayerDepositAmount = getIntegerValue(this, getBetDataKey(raceIdStr, thirdPlacePlayerAddress, wavesCurrency))
124+ let firstPlacePrizeAmount = (firstPlacePlayerDepositAmount * 2)
125+ let secondPlacePrizeAmount = ((secondPlacePlayerDepositAmount * 3) / 2)
126+ let thirdPlacePrizeAmount = thirdPlacePlayerDepositAmount
127+ let commissionAmount = (totalBetAmount - ((firstPlacePrizeAmount + secondPlacePrizeAmount) + thirdPlacePrizeAmount))
128+ if ((0 >= commissionAmount))
129+ then throw("Commission must be greater than zero, state error")
130+ else {
131+ let currentAmount = wavesBalance(this)
132+ let newAmount = (currentAmount - commissionAmount)
133+ if ((0 > newAmount))
134+ then throw("Not enough funds in core account")
135+ else ScriptResult(WriteSet([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)]))
136+ }
137+ }
138+
139+

github/deemru/w8io/026f985 
77.69 ms