tx · 2FRBiyTvta9gN1cfo8PW6RAc4JcziyLSnMJ9DeXYPdyW

3MxJx6npysQdoyyxLsCCb3Yg8fTeH3gEQQd:  -0.01200000 Waves

2023.12.14 05:29 [2885794] smart account 3MxJx6npysQdoyyxLsCCb3Yg8fTeH3gEQQd > SELF 0.00000000 Waves

{ "type": 13, "id": "2FRBiyTvta9gN1cfo8PW6RAc4JcziyLSnMJ9DeXYPdyW", "fee": 1200000, "feeAssetId": null, "timestamp": 1702520960727, "version": 2, "chainId": 84, "sender": "3MxJx6npysQdoyyxLsCCb3Yg8fTeH3gEQQd", "senderPublicKey": "EEhsp9Jd5MwVmYJMGAZJL3tTb5KcurTz8Aw7wksZuw3e", "proofs": [ "4QqHUVMZfh9DFHL3yjrGv1kGUTxJZAcai5u4Skgeoj3uR9cp5H6WLQ6XKrAi4npEbRDwEBn838NMC9nuHAAJQVGj" ], "script": "base64:AAIDAAAAAAAAACYIARIDCgEIEgASABIAEgMKAQESBQoDCAEIEgQKAggIEgASAwoBAQAAACgAAAAACmFjYzFQdWJLZXkBAAAAINoqzDs5WpVhYDTUvUDFMunBHoYto6DfGaP0KadDFYl5AAAAAAphY2MyUHViS2V5AQAAACDEqrME/jjBGs4Mrxcvf2rYimlLp6n4e/JFPZGNpxSDUQAAAAAKYWNjM1B1YktleQEAAAAgUNvEPKDCChp09z9n6F1NbPXldSbE9+5rrmMBqTTu7wMAAAAAB3RvcmFjbGUCAAAAIzNOQTI2QUMxYUxqajZ1WW51b1RhaGF1aFVQUFBCM1ZCUFVlAAAAAAR3RVVSAQAAACC6fG+O/AdVU/H4aUmwE8kAaAv4SyVmvtfr719xjXjUkAAAAAAETk9ORQIAAAAEbm9uZQAAAAAHQkFMQU5DRQIAAAAIYmFsYW5jZV8AAAAABlZPVEVSUwAAAAAAAAAAAwAAAAAGUVVPUlVNAAAAAAAAAAACAAAAAAZWT1RJTkcCAAAABnZvdGluZwAAAAAGUkVWRUFMAgAAAAZyZXZlYWwAAAAACEZFQVRVUkVEAgAAAAhmZWF0dXJlZAAAAAAIREVMSVNURUQCAAAACGRlbGlzdGVkAAAAAAhWRVJJRklFRAIAAAAIdmVyaWZpZWQAAAAAC0JMQUNLTElTVEVEAgAAAAlibGFja2xpc3QBAAAADmdldE51bWJlckJ5S2V5AAAAAQAAAANrZXkEAAAAA251bQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAUAAAADbnVtAQAAAAtnZXRTdHJCeUtleQAAAAEAAAADa2V5BAAAAANzdHIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEFAAAABE5PTkUFAAAAA3N0cgEAAAAPZ2V0S2V5SXRlbVByaWNlAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAABl9wcmljZQEAAAARZ2V0VmFsdWVJdGVtUHJpY2UAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABBQAAAARpdGVtAQAAABVnZXRLZXlVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEaXRlbQIAAAABXwUAAAAEdXNlcgIAAAAEX2NudAEAAAAXZ2V0VmFsdWVVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIFAAAABHVzZXIFAAAABGl0ZW0BAAAACmdldEtleUl0ZW0AAAACAAAACHN1cHBsaWVyAAAABXRpdGxlCQABLAAAAAICAAAABWl0ZW1fCQACWAAAAAEJAAH3AAAAAQkAAZsAAAABCQABLAAAAAIFAAAACHN1cHBsaWVyBQAAAAV0aXRsZQEAAAAOZ2V0S2V5SXRlbURhdGEAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAFX2RhdGEBAAAAEmdldEtleUl0ZW1TdXBwbGllcgAAAAEAAAAEaXRlbQkAASwAAAACBQAAAARpdGVtAgAAAAZfb3duZXIBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQAAAAdhY2NvdW50CQABLAAAAAIFAAAAB2FjY291bnQCAAAACF9iYWxhbmNlAQAAABdnZXRWYWx1ZUJhbGFuY2VTdXBwbGllcgAAAAEAAAAHYWNjb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEFAAAAB2FjY291bnQBAAAADGdldEtleUNvbW1pdAAAAAIAAAAEaXRlbQAAAAR1c2VyCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtAgAAAAFfBQAAAAR1c2VyAgAAAAdfY29tbWl0AQAAAA5nZXRWYWx1ZUNvbW1pdAAAAAIAAAAEaXRlbQAAAAR1c2VyCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAMZ2V0S2V5Q29tbWl0AAAAAgUAAAAEaXRlbQUAAAAEdXNlcgEAAAASZ2V0S2V5Q29tbWl0c0NvdW50AAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAAB19jb21jbnQBAAAAFGdldFZhbHVlQ29tbWl0c0NvdW50AAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0S2V5Q29tbWl0c0NvdW50AAAAAQUAAAAEaXRlbQEAAAAMZ2V0S2V5UmV2ZWFsAAAAAgAAAARpdGVtAAAABHVzZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABGl0ZW0CAAAAAV8FAAAABHVzZXICAAAAB19yZXZlYWwBAAAADmdldFZhbHVlUmV2ZWFsAAAAAgAAAARpdGVtAAAABHVzZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAAxnZXRLZXlSZXZlYWwAAAACBQAAAARpdGVtBQAAAAR1c2VyAQAAABBnZXRLZXlJdGVtU3RhdHVzAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAAB19zdGF0dXMBAAAAEmdldFZhbHVlSXRlbVN0YXR1cwAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEGdldEtleUl0ZW1TdGF0dXMAAAABBQAAAARpdGVtAQAAAA9nZXRLZXlWb3RlQ291bnQAAAACAAAABGl0ZW0AAAAEdm90ZQkAASwAAAACCQABLAAAAAIFAAAABGl0ZW0CAAAABV9yZXM6BQAAAAR2b3RlAQAAABFnZXRWYWx1ZVZvdGVDb3VudAAAAAIAAAAEaXRlbQAAAAR2b3RlCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAPZ2V0S2V5Vm90ZUNvdW50AAAAAgUAAAAEaXRlbQUAAAAEdm90ZQEAAAATZ2V0RXh0QWRkcmVzc09yYWNsZQAAAAAJAQAAAAdleHRyYWN0AAAAAQkBAAAAEWFkZHJlc3NGcm9tU3RyaW5nAAAAAQUAAAAHdG9yYWNsZQEAAAAcZ2V0RXh0S2V5SXRlbVdoaXRlTGlzdFN0YXR1cwAAAAEAAAAHYWNjb3VudAkAASwAAAACBQAAAAdhY2NvdW50AgAAABBfdmVyaWZpZXJfc3RhdHVzAQAAAB5nZXRFeHRWYWx1ZUl0ZW1XaGl0ZUxpc3RTdGF0dXMAAAACAAAABm9yYWNsZQAAAAdhY2NvdW50BAAAAANzdHIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAGb3JhY2xlCQEAAAAcZ2V0RXh0S2V5SXRlbVdoaXRlTGlzdFN0YXR1cwAAAAEFAAAAB2FjY291bnQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQUAAAAETk9ORQUAAAADc3RyAAAACQAAAAFpAQAAAAhwdXJjaGFzZQAAAAEAAAAEaXRlbQQAAAADcG10CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAECAAAAH1dBVkVTIHRva2VucyBvbmx5IGF0IHRoZSBtb21lbnQEAAAAC3VzZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABXByaWNlCQEAAAARZ2V0VmFsdWVJdGVtUHJpY2UAAAABBQAAAARpdGVtBAAAAA5zdXBwbGllckFkZHJzcwkBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQMJAABmAAAAAgUAAAAFcHJpY2UIBQAAAANwbXQAAAAGYW1vdW50CQAAAgAAAAECAAAALnB1cmNoYXNlIGFtb3VudCBjYW5ub3QgYmUgbGVzcyB0aGFuIGl0ZW0gcHJpY2UDCQAAZgAAAAIIBQAAAANwbXQAAAAGYW1vdW50BQAAAAVwcmljZQkAAAIAAAABAgAAADBwdXJjaGFzZSBhbW91bnQgY2Fubm90IGJlIGhpZ2hlciB0aGFuIGl0ZW0gcHJpY2UDCQAAAAAAAAIFAAAADnN1cHBsaWVyQWRkcnNzBQAAAAROT05FCQAAAgAAAAECAAAAF3N1cHBsaWVyIGRvZXMgbm90IGV4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c3VwcGxpZXJXaGl0ZWxpc3QJAQAAAB5nZXRFeHRWYWx1ZUl0ZW1XaGl0ZUxpc3RTdGF0dXMAAAACCQEAAAATZ2V0RXh0QWRkcmVzc09yYWNsZQAAAAAFAAAAD3N1cHBsaWVyQWRkcmVzcwMJAABnAAAAAgAAAAAAAAAAAAUAAAAFcHJpY2UJAAACAAAAAQIAAAAucHVyY2hhc2UgYW1vdW50IGNhbm5vdCBiZSBsZXNzIHRoYW4gaXRlbSBwcmljZQMJAQAAAAIhPQAAAAIJAQAAABRnZXRWYWx1ZUl0ZW1TdXBwbGllcgAAAAEFAAAABGl0ZW0FAAAABE5PTkUJAAACAAAAAQIAAAAYYW4gaXRlbSBpcyBhbHJlYWR5IGV4aXN0AwkAAAAAAAACBQAAABFzdXBwbGllcldoaXRlbGlzdAUAAAALQkxBQ0tMSVNURUQJAAACAAAAAQIAAAAlc3VwcGxpZXIgYWNjb3VudCBoYXMgYmVlbiBibGFja2xpc3RlZAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldEtleUl0ZW1TdXBwbGllcgAAAAEFAAAABGl0ZW0FAAAAD3N1cHBsaWVyQWRkcmVzcwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAD2dldEtleUl0ZW1QcmljZQAAAAEFAAAABGl0ZW0FAAAABXByaWNlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAOZ2V0S2V5SXRlbURhdGEAAAABBQAAAARpdGVtBQAAAARkYXRhCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAcZ2V0RXh0S2V5SXRlbVdoaXRlTGlzdFN0YXR1cwAAAAEFAAAAD3N1cHBsaWVyQWRkcmVzcwUAAAARc3VwcGxpZXJXaGl0ZWxpc3QFAAAAA25pbAAAAAFpAQAAAAp2b3RlQ29tbWl0AAAAAgAAAARpdGVtAAAABGhhc2gEAAAABHVzZXIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAHY29tbWl0cwkBAAAAFGdldFZhbHVlQ29tbWl0c0NvdW50AAAAAQUAAAAEaXRlbQQAAAAGc3RhdHVzCQEAAAASZ2V0VmFsdWVJdGVtU3RhdHVzAAAAAQUAAAAEaXRlbQMJAABnAAAAAgUAAAAHY29tbWl0cwUAAAAGVk9URVJTCQAAAgAAAAECAAAAGXJlYWNoZWQgbWF4IG51bSBvZiB2b3RlcnMDCQEAAAACIT0AAAACCQEAAAAOZ2V0VmFsdWVDb21taXQAAAACBQAAAARpdGVtBQAAAAR1c2VyBQAAAAROT05FCQAAAgAAAAECAAAAFHVzZXIgaGFzIGFscmVhZHkgdWNoAwkAAAAAAAACCQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQUAAAAETk9ORQkAAAIAAAABAgAAABNpdGVtIGRvZXMgbm90IGV4aXN0AwMJAQAAAAIhPQAAAAIFAAAABnN0YXR1cwUAAAAETk9ORQkBAAAAAiE9AAAAAgUAAAAGc3RhdHVzBQAAAAZWT1RJTkcHCQAAAgAAAAECAAAAFnZvdGluZyBpcyBub3QgcG9zc2libGUJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAAxnZXRLZXlDb21taXQAAAACBQAAAARpdGVtBQAAAAR1c2VyBQAAAARoYXNoCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAASZ2V0S2V5Q29tbWl0c0NvdW50AAAAAQUAAAAEaXRlbQkAAGQAAAACBQAAAAdjb21taXRzAAAAAAAAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAQZ2V0S2V5SXRlbVN0YXR1cwAAAAEFAAAABGl0ZW0DCQAAAAAAAAIFAAAAB2NvbW1pdHMFAAAABlZPVEVSUwUAAAAGUkVWRUFMBQAAAAZWT1RJTkcFAAAAA25pbAAAAAFpAQAAAAp4X3B1cmNoYXNlAAAAAAQAAAADcG10CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAECAAAAIGNhbiB1c2UgV0FWRVMgb25seSBhdCB0aGUgbW9tZW50BAAAAA9jdXN0b21lckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAFcHJpY2UEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwIAAAATaXRlbV9BX2NvdXBvbl9wcmljZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAAAwkAAGYAAAACBQAAAAVwcmljZQgFAAAAA3BtdAAAAAZhbW91bnQJAAACAAAAAQIAAAAucHVyY2hhc2UgYW1vdW50IGNhbm5vdCBiZSBsZXNzIHRoYW4gaXRlbSBwcmljZQMJAABmAAAAAggFAAAAA3BtdAAAAAZhbW91bnQFAAAABXByaWNlCQAAAgAAAAECAAAAMHB1cmNoYXNlIGFtb3VudCBjYW5ub3QgYmUgaGlnaGVyIHRoYW4gaXRlbSBwcmljZQkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAACBzdGF0dXM6cHVyY2hhc2VfaXRlbV9BX2N1c3RvbWVyXwUAAAAPY3VzdG9tZXJBZGRyZXNzAgAAAAljb25maXJtZWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgIAAAAfcHJpY2U6cHVyY2hhc2VfaXRlbV9BX2N1c3RvbWVyXwUAAAAPY3VzdG9tZXJBZGRyZXNzBQAAAAVwcmljZQUAAAADbmlsAAAAAWkBAAAACnhfd2l0aGRyYXcAAAABAAAABmFtb3VudAQAAAAKY3VycmVudEtleQkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAA1jdXJyZW50QW1vdW50BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAHQkFMQU5DRQUAAAAKY3VycmVudEtleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAAAluZXdBbW91bnQJAABlAAAAAgUAAAANY3VycmVudEFtb3VudAUAAAAGYW1vdW50AwkAAGYAAAACAAAAAAAAAAAABQAAAAZhbW91bnQJAAACAAAAAQIAAAAeQ2FuJ3Qgd2l0aGRyYXcgbmVnYXRpdmUgYW1vdW50AwkAAGYAAAACAAAAAAAAAAAABQAAAAluZXdBbW91bnQJAAACAAAAAQIAAAASTm90IGVub3VnaCBiYWxhbmNlCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAdCQUxBTkNFBQAAAApjdXJyZW50S2V5BQAAAAluZXdBbW91bnQFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAABmFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAGYWNjMV8xCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAKYWNjMVB1YktleQQAAAAGYWNjMV8yCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAKYWNjMVB1YktleQQAAAAGYWNjMV8zCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgUAAAAKYWNjMVB1YktleQQAAAAGYWNjMl8xCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAKYWNjMlB1YktleQQAAAAGYWNjMl8yCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAKYWNjMlB1YktleQQAAAAGYWNjMl8zCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgUAAAAKYWNjMlB1YktleQQAAAAGYWNjM18xCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAKYWNjM1B1YktleQQAAAAGYWNjM18yCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAKYWNjM1B1YktleQQAAAAGYWNjM18zCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgUAAAAKYWNjM1B1YktleQQAAAAIYWNjMWFjYzIDAwMDAwMFAAAABmFjYzFfMQUAAAAGYWNjMl8yBwYDBQAAAAZhY2MxXzEFAAAABmFjYzJfMwcGAwUAAAAGYWNjMV8yBQAAAAZhY2MyXzEHBgMFAAAABmFjYzFfMgUAAAAGYWNjMl8zBwYDBQAAAAZhY2MxXzMFAAAABmFjYzJfMQcGAwUAAAAGYWNjMV8zBQAAAAZhY2MyXzIHBAAAAAhhY2MxYWNjMwMDAwMDAwUAAAAGYWNjMV8xBQAAAAZhY2MzXzIHBgMFAAAABmFjYzFfMQUAAAAGYWNjM18zBwYDBQAAAAZhY2MxXzIFAAAABmFjYzNfMQcGAwUAAAAGYWNjMV8yBQAAAAZhY2MzXzMHBgMFAAAABmFjYzFfMwUAAAAGYWNjM18xBwYDBQAAAAZhY2MxXzMFAAAABmFjYzNfMgcEAAAACGFjYzJhY2MzAwMDAwMDBQAAAAZhY2MzXzEFAAAABmFjYzJfMgcGAwUAAAAGYWNjM18xBQAAAAZhY2MyXzMHBgMFAAAABmFjYzNfMgUAAAAGYWNjMl8xBwYDBQAAAAZhY2MzXzIFAAAABmFjYzJfMwcGAwUAAAAGYWNjM18zBQAAAAZhY2MyXzEHBgMFAAAABmFjYzNfMwUAAAAGYWNjMl8yBwQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBAAAAAFkBQAAAAckbWF0Y2gwCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAPRGF0YVRyYW5zYWN0aW9uBAAAAAFkBQAAAAckbWF0Y2gwBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAABZAUAAAAHJG1hdGNoMAYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBAAAAAFkBQAAAAckbWF0Y2gwBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAQSXNzdWVUcmFuc2FjdGlvbgQAAAABZAUAAAAHJG1hdGNoMAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAElJlaXNzdWVUcmFuc2FjdGlvbgQAAAABZAUAAAAHJG1hdGNoMAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAD0J1cm5UcmFuc2FjdGlvbgQAAAABZAUAAAAHJG1hdGNoMAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAGVNldEFzc2V0U2NyaXB0VHJhbnNhY3Rpb24EAAAAAWQFAAAAByRtYXRjaDAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5B993QpI=", "height": 2885794, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DoYfbVnd18zL3fuDw7J6tTcexT4pxAD8WPNkF765HopW Next: none Diff:
OldNewDifferences
66 let acc2PubKey = base58'EEhsp9Jd5MwVmYJMGAZJL3tTb5KcurTz8Aw7wksZuw3e'
77
88 let acc3PubKey = base58'6SdykacJeMCbeNvVJY71gWMJeXt9ZT44X4KexwZxHEYz'
9+
10+let toracle = "3NA26AC1aLjj6uYnuoTahauhUPPPB3VBPUe"
911
1012 let wEUR = base58'DYxtEoj6wasUX8ddENeh7igtcuAv1WG7BcgZVsmzvAGF'
1113
2426 let FEATURED = "featured"
2527
2628 let DELISTED = "delisted"
29+
30+let VERIFIED = "verified"
31+
32+let BLACKLISTED = "blacklist"
2733
2834 func getNumberByKey (key) = {
2935 let num = match getInteger(this, key) {
105111
106112
107113 func getValueVoteCount (item,vote) = getNumberByKey(getKeyVoteCount(item, vote))
114+
115+
116+func getExtAddressOracle () = extract(addressFromString(toracle))
117+
118+
119+func getExtKeyItemWhiteListStatus (account) = (account + "_verifier_status")
120+
121+
122+func getExtValueItemWhiteListStatus (oracle,account) = {
123+ let str = match getString(oracle, getExtKeyItemWhiteListStatus(account)) {
124+ case a: String =>
125+ a
126+ case _ =>
127+ NONE
128+ }
129+ str
130+ }
108131
109132
110133 @Callable(i)
208231 func addItem (title,price,data) = {
209232 let supplierAddress = toBase58String(i.caller.bytes)
210233 let item = getKeyItem(supplierAddress, title)
234+ let supplierWhitelist = getExtValueItemWhiteListStatus(getExtAddressOracle(), supplierAddress)
211235 if ((0 >= price))
212236 then throw("purchase amount cannot be less than item price")
213237 else if ((getValueItemSupplier(item) != NONE))
214238 then throw("an item is already exist")
215- else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
239+ else if ((supplierWhitelist == BLACKLISTED))
240+ then throw("supplier account has been blacklisted")
241+ else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data), DataEntry(getExtKeyItemWhiteListStatus(supplierAddress), supplierWhitelist)])
216242 }
217243
218244
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let acc1PubKey = base58'FgdjGJ4tLFiavKEKf4WkWwkgvU8ARWP1WYZfmUrXo4CY'
55
66 let acc2PubKey = base58'EEhsp9Jd5MwVmYJMGAZJL3tTb5KcurTz8Aw7wksZuw3e'
77
88 let acc3PubKey = base58'6SdykacJeMCbeNvVJY71gWMJeXt9ZT44X4KexwZxHEYz'
9+
10+let toracle = "3NA26AC1aLjj6uYnuoTahauhUPPPB3VBPUe"
911
1012 let wEUR = base58'DYxtEoj6wasUX8ddENeh7igtcuAv1WG7BcgZVsmzvAGF'
1113
1214 let NONE = "none"
1315
1416 let BALANCE = "balance_"
1517
1618 let VOTERS = 3
1719
1820 let QUORUM = 2
1921
2022 let VOTING = "voting"
2123
2224 let REVEAL = "reveal"
2325
2426 let FEATURED = "featured"
2527
2628 let DELISTED = "delisted"
29+
30+let VERIFIED = "verified"
31+
32+let BLACKLISTED = "blacklist"
2733
2834 func getNumberByKey (key) = {
2935 let num = match getInteger(this, key) {
3036 case a: Int =>
3137 a
3238 case _ =>
3339 0
3440 }
3541 num
3642 }
3743
3844
3945 func getStrByKey (key) = {
4046 let str = match getString(this, key) {
4147 case a: String =>
4248 a
4349 case _ =>
4450 NONE
4551 }
4652 str
4753 }
4854
4955
5056 func getKeyItemPrice (item) = (item + "_price")
5157
5258
5359 func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
5460
5561
5662 func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
5763
5864
5965 func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
6066
6167
6268 func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
6369
6470
6571 func getKeyItemData (item) = (item + "_data")
6672
6773
6874 func getKeyItemSupplier (item) = (item + "_owner")
6975
7076
7177 func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
7278
7379
7480 func getKeyBalanceSupplier (account) = (account + "_balance")
7581
7682
7783 func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
7884
7985
8086 func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
8187
8288
8389 func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
8490
8591
8692 func getKeyCommitsCount (item) = (item + "_comcnt")
8793
8894
8995 func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
9096
9197
9298 func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
9399
94100
95101 func getValueReveal (item,user) = getStrByKey(getKeyReveal(item, user))
96102
97103
98104 func getKeyItemStatus (item) = (item + "_status")
99105
100106
101107 func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
102108
103109
104110 func getKeyVoteCount (item,vote) = ((item + "_res:") + vote)
105111
106112
107113 func getValueVoteCount (item,vote) = getNumberByKey(getKeyVoteCount(item, vote))
114+
115+
116+func getExtAddressOracle () = extract(addressFromString(toracle))
117+
118+
119+func getExtKeyItemWhiteListStatus (account) = (account + "_verifier_status")
120+
121+
122+func getExtValueItemWhiteListStatus (oracle,account) = {
123+ let str = match getString(oracle, getExtKeyItemWhiteListStatus(account)) {
124+ case a: String =>
125+ a
126+ case _ =>
127+ NONE
128+ }
129+ str
130+ }
108131
109132
110133 @Callable(i)
111134 func purchase (item) = {
112135 let pmt = extract(i.payment)
113136 if (isDefined(pmt.assetId))
114137 then throw("WAVES tokens only at the moment")
115138 else {
116139 let userAddress = toBase58String(i.caller.bytes)
117140 let price = getValueItemPrice(item)
118141 let supplierAddrss = getValueItemSupplier(item)
119142 if ((price > pmt.amount))
120143 then throw("purchase amount cannot be less than item price")
121144 else if ((pmt.amount > price))
122145 then throw("purchase amount cannot be higher than item price")
123146 else if ((supplierAddrss == NONE))
124147 then throw("supplier does not exist")
125148 else WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyBalanceSupplier(supplierAddrss), (getValueBalanceSupplier(supplierAddrss) + pmt.amount))])
126149 }
127150 }
128151
129152
130153
131154 @Callable(i)
132155 func deposit () = {
133156 let pmt = extract(i.payment)
134157 if (isDefined(pmt.assetId))
135158 then throw("can hodl waves only at the moment")
136159 else {
137160 let currentKey = toBase58String(i.caller.bytes)
138161 let currentAmount = match getInteger(this, currentKey) {
139162 case a: Int =>
140163 a
141164 case _ =>
142165 0
143166 }
144167 let wlStsCurr = match getString(this, ("wl_sts_" + currentKey)) {
145168 case a: String =>
146169 a
147170 case _ =>
148171 throw("User has not deen waitlisted")
149172 }
150173 let newAmount = (currentAmount + pmt.amount)
151174 WriteSet([DataEntry((BALANCE + currentKey), newAmount)])
152175 }
153176 }
154177
155178
156179
157180 @Callable(i)
158181 func depositEUR () = {
159182 let pmt = extract(i.payment)
160183 if ((pmt.assetId != wEUR))
161184 then throw("wEUR only please")
162185 else {
163186 let currentKey = toBase58String(i.caller.bytes)
164187 let currentAmount = match getInteger(this, currentKey) {
165188 case a: Int =>
166189 a
167190 case _ =>
168191 0
169192 }
170193 let newAmount = (currentAmount + pmt.amount)
171194 WriteSet([DataEntry(currentKey, newAmount)])
172195 }
173196 }
174197
175198
176199
177200 @Callable(i)
178201 func withdraw () = {
179202 let supplierAddress = toBase58String(i.caller.bytes)
180203 let balance = getValueBalanceSupplier(supplierAddress)
181204 if ((0 >= balance))
182205 then throw("insufficient balance")
183206 else ScriptResult(WriteSet([DataEntry(getKeyBalanceSupplier(supplierAddress), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(supplierAddress), balance, unit)]))
184207 }
185208
186209
187210
188211 @Callable(i)
189212 func withdrawEUR (amount) = {
190213 let currentKey = toBase58String(i.caller.bytes)
191214 let currentAmount = match getInteger(this, currentKey) {
192215 case a: Int =>
193216 a
194217 case _ =>
195218 0
196219 }
197220 let newAmount = (currentAmount - amount)
198221 if ((0 > amount))
199222 then throw("Can't withdraw negative balance")
200223 else if ((0 > newAmount))
201224 then throw("Not enough balance")
202225 else ScriptResult(WriteSet([DataEntry(currentKey, newAmount)]), TransferSet([ScriptTransfer(i.caller, amount, wEUR)]))
203226 }
204227
205228
206229
207230 @Callable(i)
208231 func addItem (title,price,data) = {
209232 let supplierAddress = toBase58String(i.caller.bytes)
210233 let item = getKeyItem(supplierAddress, title)
234+ let supplierWhitelist = getExtValueItemWhiteListStatus(getExtAddressOracle(), supplierAddress)
211235 if ((0 >= price))
212236 then throw("purchase amount cannot be less than item price")
213237 else if ((getValueItemSupplier(item) != NONE))
214238 then throw("an item is already exist")
215- else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
239+ else if ((supplierWhitelist == BLACKLISTED))
240+ then throw("supplier account has been blacklisted")
241+ else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data), DataEntry(getExtKeyItemWhiteListStatus(supplierAddress), supplierWhitelist)])
216242 }
217243
218244
219245
220246 @Callable(i)
221247 func voteCommit (item,hash) = {
222248 let user = toBase58String(i.caller.bytes)
223249 let commits = getValueCommitsCount(item)
224250 let status = getValueItemStatus(item)
225251 if ((commits >= VOTERS))
226252 then throw("reached max num of voters")
227253 else if ((getValueCommit(item, user) != NONE))
228254 then throw("user has already uch")
229255 else if ((getKeyItemSupplier(item) == NONE))
230256 then throw("item does not exist")
231257 else if (if ((status != NONE))
232258 then (status != VOTING)
233259 else false)
234260 then throw("voting is not possible")
235261 else WriteSet([DataEntry(getKeyCommit(item, user), hash), DataEntry(getKeyCommitsCount(item), (commits + 1)), DataEntry(getKeyItemStatus(item), if ((commits == VOTERS))
236262 then REVEAL
237263 else VOTING)])
238264 }
239265
240266
241267
242268 @Callable(i)
243269 func x_purchase () = {
244270 let pmt = extract(i.payment)
245271 if (isDefined(pmt.assetId))
246272 then throw("can use WAVES only at the moment")
247273 else {
248274 let customerAddress = toBase58String(i.caller.bytes)
249275 let price = match getInteger(this, "item_A_coupon_price") {
250276 case a: Int =>
251277 a
252278 case _ =>
253279 0
254280 }
255281 if ((price > pmt.amount))
256282 then throw("purchase amount cannot be less than item price")
257283 else if ((pmt.amount > price))
258284 then throw("purchase amount cannot be higher than item price")
259285 else WriteSet([DataEntry(("status:purchase_item_A_customer_" + customerAddress), "confirmed"), DataEntry(("price:purchase_item_A_customer_" + customerAddress), price)])
260286 }
261287 }
262288
263289
264290
265291 @Callable(i)
266292 func x_withdraw (amount) = {
267293 let currentKey = toBase58String(i.caller.bytes)
268294 let currentAmount = match getInteger(this, (BALANCE + currentKey)) {
269295 case a: Int =>
270296 a
271297 case _ =>
272298 0
273299 }
274300 let newAmount = (currentAmount - amount)
275301 if ((0 > amount))
276302 then throw("Can't withdraw negative amount")
277303 else if ((0 > newAmount))
278304 then throw("Not enough balance")
279305 else ScriptResult(WriteSet([DataEntry((BALANCE + currentKey), newAmount)]), TransferSet([ScriptTransfer(i.caller, amount, unit)]))
280306 }
281307
282308
283309 @Verifier(tx)
284310 func verify () = {
285311 let acc1_1 = sigVerify(tx.bodyBytes, tx.proofs[0], acc1PubKey)
286312 let acc1_2 = sigVerify(tx.bodyBytes, tx.proofs[1], acc1PubKey)
287313 let acc1_3 = sigVerify(tx.bodyBytes, tx.proofs[2], acc1PubKey)
288314 let acc2_1 = sigVerify(tx.bodyBytes, tx.proofs[0], acc2PubKey)
289315 let acc2_2 = sigVerify(tx.bodyBytes, tx.proofs[1], acc2PubKey)
290316 let acc2_3 = sigVerify(tx.bodyBytes, tx.proofs[2], acc2PubKey)
291317 let acc3_1 = sigVerify(tx.bodyBytes, tx.proofs[0], acc3PubKey)
292318 let acc3_2 = sigVerify(tx.bodyBytes, tx.proofs[1], acc3PubKey)
293319 let acc3_3 = sigVerify(tx.bodyBytes, tx.proofs[2], acc3PubKey)
294320 let acc1acc2 = if (if (if (if (if (if (acc1_1)
295321 then acc2_2
296322 else false)
297323 then true
298324 else if (acc1_1)
299325 then acc2_3
300326 else false)
301327 then true
302328 else if (acc1_2)
303329 then acc2_1
304330 else false)
305331 then true
306332 else if (acc1_2)
307333 then acc2_3
308334 else false)
309335 then true
310336 else if (acc1_3)
311337 then acc2_1
312338 else false)
313339 then true
314340 else if (acc1_3)
315341 then acc2_2
316342 else false
317343 let acc1acc3 = if (if (if (if (if (if (acc1_1)
318344 then acc3_2
319345 else false)
320346 then true
321347 else if (acc1_1)
322348 then acc3_3
323349 else false)
324350 then true
325351 else if (acc1_2)
326352 then acc3_1
327353 else false)
328354 then true
329355 else if (acc1_2)
330356 then acc3_3
331357 else false)
332358 then true
333359 else if (acc1_3)
334360 then acc3_1
335361 else false)
336362 then true
337363 else if (acc1_3)
338364 then acc3_2
339365 else false
340366 let acc2acc3 = if (if (if (if (if (if (acc3_1)
341367 then acc2_2
342368 else false)
343369 then true
344370 else if (acc3_1)
345371 then acc2_3
346372 else false)
347373 then true
348374 else if (acc3_2)
349375 then acc2_1
350376 else false)
351377 then true
352378 else if (acc3_2)
353379 then acc2_3
354380 else false)
355381 then true
356382 else if (acc3_3)
357383 then acc2_1
358384 else false)
359385 then true
360386 else if (acc3_3)
361387 then acc2_2
362388 else false
363389 match tx {
364390 case d: SetScriptTransaction =>
365391 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
366392 case d: DataTransaction =>
367393 true
368394 case d: TransferTransaction =>
369395 true
370396 case d: InvokeScriptTransaction =>
371397 true
372398 case d: IssueTransaction =>
373399 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
374400 case d: ReissueTransaction =>
375401 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
376402 case d: BurnTransaction =>
377403 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
378404 case d: SetAssetScriptTransaction =>
379405 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
380406 case _ =>
381407 false
382408 }
383409 }
384410

github/deemru/w8io/6500d08 
56.24 ms