tx · Ho5tZbxqtN6tNrJu3XEgubyMdTXaFTtDM2ehZWQ2siVM

3Mtkjpvma3ighGU7RmTb8nKriYrdi4FDfu6:  -0.01400000 Waves

2019.08.30 12:21 [653800] smart account 3Mtkjpvma3ighGU7RmTb8nKriYrdi4FDfu6 > SELF 0.00000000 Waves

{ "type": 13, "id": "Ho5tZbxqtN6tNrJu3XEgubyMdTXaFTtDM2ehZWQ2siVM", "fee": 1400000, "feeAssetId": null, "timestamp": 1567156816121, "version": 1, "sender": "3Mtkjpvma3ighGU7RmTb8nKriYrdi4FDfu6", "senderPublicKey": "2ijgRSBy2unDdF2K7EzJey1SdkCfgEhJDnF5G1q8fXbz", "proofs": [ "3tpodm9t9yncyWNHvvqRqpniNQH3BoSHLyaQL1p185kK8xgrtTj1THzteLB9T7WXKv2fDRzPN5q5MRLZRhx2T4Gz" ], "script": "base64:AAIDAAAAAAAAAAAAAAALAAAAAAZtYXhGZWUAAAAAAAAPQkAAAAAADHRyYWRlQWNjb3VudAkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzAgAAABJjb25maWdfYmV0X2FjY291bnQAAAAACnRyYWRlU3RhcnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAADHRyYWRlQWNjb3VudAIAAAASY29uZmlnX3RyYWRlX3N0YXJ0AAAAAAh0cmFkZUVuZAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAMdHJhZGVBY2NvdW50AgAAABBjb25maWdfdHJhZGVfZW5kAAAAAAZhc3NldDEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAADHRyYWRlQWNjb3VudAIAAAAOY29uZmlnX2Fzc2V0XzEAAAAABmFzc2V0MgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAMdHJhZGVBY2NvdW50AgAAAA5jb25maWdfYXNzZXRfMgAAAAALdGFyZ2V0UHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAADHRyYWRlQWNjb3VudAIAAAATY29uZmlnX3RhcmdldF9wcmljZQAAAAANbWF0Y2hlclB1YktleQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAMdHJhZGVBY2NvdW50AgAAABJjb25maWdfbWF0Y2hlcl9rZXkBAAAADWFzc2V0TW5lbW9uaWMAAAABAAAAB2Fzc2V0SWQEAAAAByRtYXRjaDAFAAAAB2Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAAAXUFAAAAByRtYXRjaDACAAAABVdBVkVTAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAFiBQAAAAckbWF0Y2gwCQACWAAAAAEFAAAAAWIJAQAAAAV0aHJvdwAAAAABAAAAD2dldEFzc2V0QmFsYW5jZQAAAAEAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAHYXNzZXRJZAIAAAAFV0FWRVMJAABlAAAAAgkB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", "chainId": 84, "height": 653800, "spentComplexity": 0 } View: original | compacted Prev: UBPHRUi23dvtq5a427cjdpjWYCaZrAJ23UhMxqyCiY9 Next: 2kTBCcpZmxqvXcUmAYhy12z1hGKFK8wACCkNsK7uFEhY Diff:
OldNewDifferences
5959 @Verifier(tx)
6060 func verify () = match tx {
6161 case o: Order =>
62- if (if (if (if (if ((lastBlock.timestamp >= tradeStart))
63- then (tradeEnd >= lastBlock.timestamp)
64- else false)
65- then (assetMnemonic(o.assetPair.amountAsset) == asset1)
66- else false)
62+ if (if (if ((assetMnemonic(o.assetPair.amountAsset) == asset1))
6763 then (assetMnemonic(o.assetPair.priceAsset) == asset2)
6864 else false)
6965 then (o.price == targetPrice)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let maxFee = 1000000
55
66 let tradeAccount = addressFromStringValue(getStringValue(this, "config_bet_account"))
77
88 let tradeStart = getIntegerValue(tradeAccount, "config_trade_start")
99
1010 let tradeEnd = getIntegerValue(tradeAccount, "config_trade_end")
1111
1212 let asset1 = getStringValue(tradeAccount, "config_asset_1")
1313
1414 let asset2 = getStringValue(tradeAccount, "config_asset_2")
1515
1616 let targetPrice = getIntegerValue(tradeAccount, "config_target_price")
1717
1818 let matcherPubKey = getStringValue(tradeAccount, "config_matcher_key")
1919
2020 func assetMnemonic (assetId) = match assetId {
2121 case u: Unit =>
2222 "WAVES"
2323 case b: ByteVector =>
2424 toBase58String(b)
2525 case _ =>
2626 throw()
2727 }
2828
2929
3030 func getAssetBalance (assetId) = if ((assetId == "WAVES"))
3131 then (wavesBalance(this) - maxFee)
3232 else assetBalance(this, extract(fromBase58String(assetId)))
3333
3434
3535 func getAssetIdFromMnemonic (assetId) = if ((assetId == "WAVES"))
3636 then unit
3737 else fromBase58String(assetId)
3838
3939
4040 @Callable(i)
4141 func finishTrade () = if ((i.fee > maxFee))
4242 then throw("unreasonable large fee")
4343 else if ((i.feeAssetId != unit))
4444 then throw("fee must be in WAVES")
4545 else {
4646 let tradesFinishedKey = "trades_finished"
4747 if ((tradeEnd > lastBlock.timestamp))
4848 then throw("please let trade ends")
4949 else if ((getBoolean(this, tradesFinishedKey) == true))
5050 then throw("trades already finished")
5151 else {
5252 let asset1Balance = getAssetBalance(asset1)
5353 let asset2Balance = getAssetBalance(asset2)
5454 ScriptResult(WriteSet([DataEntry(tradesFinishedKey, true)]), TransferSet([ScriptTransfer(i.caller, i.fee, unit), ScriptTransfer(tradeAccount, asset1Balance, getAssetIdFromMnemonic(asset1)), ScriptTransfer(tradeAccount, asset2Balance, getAssetIdFromMnemonic(asset2))]))
5555 }
5656 }
5757
5858
5959 @Verifier(tx)
6060 func verify () = match tx {
6161 case o: Order =>
62- if (if (if (if (if ((lastBlock.timestamp >= tradeStart))
63- then (tradeEnd >= lastBlock.timestamp)
64- else false)
65- then (assetMnemonic(o.assetPair.amountAsset) == asset1)
66- else false)
62+ if (if (if ((assetMnemonic(o.assetPair.amountAsset) == asset1))
6763 then (assetMnemonic(o.assetPair.priceAsset) == asset2)
6864 else false)
6965 then (o.price == targetPrice)
7066 else false)
7167 then (toBase58String(o.matcherPublicKey) == matcherPubKey)
7268 else false
7369 case _ =>
7470 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
7571 }
7672

github/deemru/w8io/169f3d6 
24.16 ms