tx · 3FxzoKjtieNt6HeDxpCvwA2SjE5eaUkvCQHC9yXkmPNL 3Mqk6zR1wz4mMTxpqhHkcFkQPi92oMNHA8K: -0.01000000 Waves 2019.08.30 12:45 [653824] smart account 3Mqk6zR1wz4mMTxpqhHkcFkQPi92oMNHA8K > SELF 0.00000000 Waves
{ "type": 13, "id": "3FxzoKjtieNt6HeDxpCvwA2SjE5eaUkvCQHC9yXkmPNL", "fee": 1000000, "feeAssetId": null, "timestamp": 1567158392071, "version": 1, "sender": "3Mqk6zR1wz4mMTxpqhHkcFkQPi92oMNHA8K", "senderPublicKey": "ExoR2HXkHM67WwxAJxm1G58rvhCUS7wiDMAKygUcHjra", "proofs": [ "31drUJbsj6e587UirmgZpwzdRzge5b5nWs9kjdWsnA1njB1Uq6KbhB6h52nc2pV5GKc1cYHhchxS8idmekYRZTHa" ], "script": "base64:AAIDAAAAAAAAAAQIARIAAAAABAAAAAAGbWF4RmVlAAAAAAAAD0JAAQAAAA1hc3NldE1uZW1vbmljAAAAAQAAAAdhc3NldElkBAAAAAckbWF0Y2gwBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAF1BQAAAAckbWF0Y2gwAgAAAAVXQVZFUwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABYgUAAAAHJG1hdGNoMAkAAlgAAAABBQAAAAFiCQEAAAAFdGhyb3cAAAAAAQAAAA9nZXRBc3NldEJhbGFuY2UAAAABAAAAB2Fzc2V0SWQDCQAAAAAAAAIFAAAAB2Fzc2V0SWQCAAAABVdBVkVTCQAAZQAAAAIJAQAAAAx3YXZlc0JhbGFuY2UAAAABBQAAAAR0aGlzBQAAAAZtYXhGZWUJAAPrAAAAAgUAAAAEdGhpcwkBAAAAB2V4dHJhY3QAAAABCQACWQAAAAEFAAAAB2Fzc2V0SWQBAAAAFmdldEFzc2V0SWRGcm9tTW5lbW9uaWMAAAABAAAAB2Fzc2V0SWQDCQAAAAAAAAIFAAAAB2Fzc2V0SWQCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAAB2Fzc2V0SWQAAAABAAAAAWkBAAAAC2ZpbmlzaFRyYWRlAAAAAAMJAABmAAAAAggFAAAAAWkAAAADZmVlBQAAAAZtYXhGZWUJAAACAAAAAQIAAAAWdW5yZWFzb25hYmxlIGxhcmdlIGZlZQMJAQAAAAIhPQAAAAIIBQAAAAFpAAAACmZlZUFzc2V0SWQFAAAABHVuaXQJAAACAAAAAQIAAAAUZmVlIG11c3QgYmUgaW4gV0FWRVMEAAAAEXRyYWRlc0ZpbmlzaGVkS2V5AgAAAA90cmFkZXNfZmluaXNoZWQDCQAAZgAAAAIAAAABbOH3qQAIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAAAgAAAAECAAAAFXBsZWFzZSBsZXQgdHJhZGUgZW5kcwMJAAAAAAAAAgkABBsAAAACBQAAAAR0aGlzBQAAABF0cmFkZXNGaW5pc2hlZEtleQYJAAACAAAAAQIAAAAXdHJhZGVzIGFscmVhZHkgZmluaXNoZWQEAAAADWFzc2V0MUJhbGFuY2UJAQAAAA9nZXRBc3NldEJhbGFuY2UAAAABAgAAACxBY1R6VGdXMVFiSks0UXU2aENzVUNManB4VXlEM2RvZnY4eHEyQ0FQYnpLSgQAAAANYXNzZXQyQmFsYW5jZQkBAAAAD2dldEFzc2V0QmFsYW5jZQAAAAECAAAABVdBVkVTCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAARdHJhZGVzRmluaXNoZWRLZXkGBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyCAUAAAABaQAAAANmZWUFAAAABHVuaXQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAEdGhpcwUAAAANYXNzZXQxQmFsYW5jZQkBAAAAFmdldEFzc2V0SWRGcm9tTW5lbW9uaWMAAAABAgAAACxBY1R6VGdXMVFiSks0UXU2aENzVUNManB4VXlEM2RvZnY4eHEyQ0FQYnpLSgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAR0aGlzBQAAAA1hc3NldDJCYWxhbmNlCQEAAAAWZ2V0QXNzZXRJZEZyb21NbmVtb25pYwAAAAECAAAABVdBVkVTBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAFT3JkZXIEAAAAAW8FAAAAByRtYXRjaDADAwMJAAAAAAAAAgkBAAAADWFzc2V0TW5lbW9uaWMAAAABCAgFAAAAAW8AAAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0AgAAACxBY1R6VGdXMVFiSks0UXU2aENzVUNManB4VXlEM2RvZnY4eHEyQ0FQYnpLSgkAAAAAAAACCQEAAAANYXNzZXRNbmVtb25pYwAAAAEICAUAAAABbwAAAAlhc3NldFBhaXIAAAAKcHJpY2VBc3NldAIAAAAFV0FWRVMHCQAAAAAAAAIIBQAAAAFvAAAABXByaWNlAAAAAAAU3JOABwkAAAAAAAACCQACWAAAAAEIBQAAAAFvAAAAEG1hdGNoZXJQdWJsaWNLZXkCAAAALDhRVUFxdFRja001QjhndmN1UDdtTXN3YXQ5U2pLVXVhZkpNdXNFb1NuMUd5BwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXnZODuv", "chainId": 84, "height": 653824, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 3 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let maxFee = 1000000 | |
5 | + | ||
6 | + | func assetMnemonic (assetId) = match assetId { | |
7 | + | case u: Unit => | |
8 | + | "WAVES" | |
9 | + | case b: ByteVector => | |
10 | + | toBase58String(b) | |
11 | + | case _ => | |
12 | + | throw() | |
13 | + | } | |
14 | + | ||
15 | + | ||
16 | + | func getAssetBalance (assetId) = if ((assetId == "WAVES")) | |
17 | + | then (wavesBalance(this) - maxFee) | |
18 | + | else assetBalance(this, extract(fromBase58String(assetId))) | |
19 | + | ||
20 | + | ||
21 | + | func getAssetIdFromMnemonic (assetId) = if ((assetId == "WAVES")) | |
22 | + | then unit | |
23 | + | else fromBase58String(assetId) | |
24 | + | ||
25 | + | ||
26 | + | @Callable(i) | |
27 | + | func finishTrade () = if ((i.fee > maxFee)) | |
28 | + | then throw("unreasonable large fee") | |
29 | + | else if ((i.feeAssetId != unit)) | |
30 | + | then throw("fee must be in WAVES") | |
31 | + | else { | |
32 | + | let tradesFinishedKey = "trades_finished" | |
33 | + | if ((1567159200000 > lastBlock.timestamp)) | |
34 | + | then throw("please let trade ends") | |
35 | + | else if ((getBoolean(this, tradesFinishedKey) == true)) | |
36 | + | then throw("trades already finished") | |
37 | + | else { | |
38 | + | let asset1Balance = getAssetBalance("AcTzTgW1QbJK4Qu6hCsUCLjpxUyD3dofv8xq2CAPbzKJ") | |
39 | + | let asset2Balance = getAssetBalance("WAVES") | |
40 | + | ScriptResult(WriteSet([DataEntry(tradesFinishedKey, true)]), TransferSet([ScriptTransfer(i.caller, i.fee, unit), ScriptTransfer(this, asset1Balance, getAssetIdFromMnemonic("AcTzTgW1QbJK4Qu6hCsUCLjpxUyD3dofv8xq2CAPbzKJ")), ScriptTransfer(this, asset2Balance, getAssetIdFromMnemonic("WAVES"))])) | |
41 | + | } | |
42 | + | } | |
43 | + | ||
44 | + | ||
45 | + | @Verifier(tx) | |
46 | + | func verify () = match tx { | |
47 | + | case o: Order => | |
48 | + | if (if (if ((assetMnemonic(o.assetPair.amountAsset) == "AcTzTgW1QbJK4Qu6hCsUCLjpxUyD3dofv8xq2CAPbzKJ")) | |
49 | + | then (assetMnemonic(o.assetPair.priceAsset) == "WAVES") | |
50 | + | else false) | |
51 | + | then (o.price == 350000000) | |
52 | + | else false) | |
53 | + | then (toBase58String(o.matcherPublicKey) == "8QUAqtTckM5B8gvcuP7mMswat9SjKUuafJMusEoSn1Gy") | |
54 | + | else false | |
55 | + | case _ => | |
56 | + | sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
57 | + | } | |
58 | + |
github/deemru/w8io/169f3d6 27.20 ms ◑