tx · 46LwivnB1dmdX5cfkNLNFzrHSmPpaNEwWa6G2sEcZfnx

3MrHW8ptB8Qh2VGuuZ2BEhC5pwW6YCXMUBw:  -0.01400000 Waves

2019.08.24 19:47 [645479] smart account 3MrHW8ptB8Qh2VGuuZ2BEhC5pwW6YCXMUBw > SELF 0.00000000 Waves

{ "type": 13, "id": "46LwivnB1dmdX5cfkNLNFzrHSmPpaNEwWa6G2sEcZfnx", "fee": 1400000, "feeAssetId": null, "timestamp": 1566665229651, "version": 1, "sender": "3MrHW8ptB8Qh2VGuuZ2BEhC5pwW6YCXMUBw", "senderPublicKey": "2kcPWzVcK2fjb5eKH3KjTUuH3EnT1fRjDMndK5QGgi9h", "proofs": [ "4S4tUq1fRotXSnpn3hRxSdYST3sGaBDWm1SwBLDpP6JXQ9KBvpoufVdCSj8gUEoNPYEsqdSzSJk7x439WF7qph2M" ], "script": "base64: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", "chainId": 84, "height": 645479, "spentComplexity": 0 } View: original | compacted Prev: En9EM9qwz9Vyk2tVm6fEeLc8qMX2jxa3te26RcR6Af5H Next: none Diff:
OldNewDifferences
1111
1212 let targetPrice = 35000000
1313
14-let betEndTs = (1566664978 + (10 * 60))
14+let betEndTs = (1566665196000 + ((10 * 60) * 1000))
1515
16-let tradeEndTs = (1566664978 + (15 * 60))
16+let tradeEndTs = (1566665196000 + ((15 * 60) * 1000))
1717
1818 let devFee = 100000000
1919
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let matcherPubKey = base58'8QUAqtTckM5B8gvcuP7mMswat9SjKUuafJMusEoSn1Gy'
55
66 let priceAsset = unit
77
88 let amountAsset = base58'33kV5hRVtgEGpYqhp9wQn2g9hP1fNWSYGCzzYk1T9Hyg'
99
1010 let orderExpire = ((6 * 60) * 1000)
1111
1212 let targetPrice = 35000000
1313
14-let betEndTs = (1566664978 + (10 * 60))
14+let betEndTs = (1566665196000 + ((10 * 60) * 1000))
1515
16-let tradeEndTs = (1566664978 + (15 * 60))
16+let tradeEndTs = (1566665196000 + ((15 * 60) * 1000))
1717
1818 let devFee = 100000000
1919
2020 let maxFee = 5000000
2121
2222 let minProcessAmount = 10000000
2323
2424 func checkFee (i) = if ((i.fee > maxFee))
2525 then throw("unreasonable large fee")
2626 else if ((i.feeAssetId != unit))
2727 then throw("fee must be in WAVES")
2828 else true
2929
3030
3131 func repayFee (i,ws,amount,recipient,assetId) = if (checkFee(i))
3232 then if (if ((amount > 0))
3333 then isDefined(recipient)
3434 else false)
3535 then ScriptResult(ws, TransferSet([ScriptTransfer(i.caller, i.fee, unit), ScriptTransfer(extract(recipient), amount, assetId)]))
3636 else ScriptResult(ws, TransferSet([ScriptTransfer(i.caller, i.fee, unit)]))
3737 else throw("error")
3838
3939
4040 func getAssetMnemonic (assetId) = match assetId {
4141 case assetBV: ByteVector =>
4242 toBase58String(assetBV)
4343 case assetStr: String =>
4444 assetStr
4545 case _ =>
4646 "WAVES"
4747 }
4848
4949
5050 func getDefaultedInt (key,default) = match getInteger(this, key) {
5151 case i: Int =>
5252 i
5353 case _ =>
5454 default
5555 }
5656
5757
5858 @Callable(inv)
5959 func withdraw (owner,asset) = if (((tradeEndTs + orderExpire) > lastBlock.timestamp))
6060 then throw("please wait for trade ends")
6161 else {
6262 let assetId = getAssetMnemonic(asset)
6363 let withdrawKey = ((("withdraw_" + owner) + "_") + assetId)
6464 if (isDefined(getInteger(this, withdrawKey)))
6565 then throw((withdrawKey + " already taken"))
6666 else {
6767 let amountTotalKey = ("total_amount_" + assetId)
6868 let assetTotalAmount = getDefaultedInt(amountTotalKey, 0)
6969 if ((assetTotalAmount == 0))
7070 then throw("no fundings in specified asset recorded")
7171 else {
7272 let amountKey = ((("bet_amount_" + assetId) + "_") + owner)
7373 let amount = ((getDefaultedInt(amountKey, 0) * assetBalance(this, fromBase58String(asset))) / assetTotalAmount)
7474 repayFee(inv, WriteSet([DataEntry(withdrawKey, amount)]), (amount - devFee), addressFromString(owner), fromBase58String(asset))
7575 }
7676 }
7777 }
7878
7979
8080
8181 @Callable(inv)
8282 func registerIncomingTx (txId) = {
8383 let registeredKey = ("registered_" + txId)
8484 if ((getBoolean(this, registeredKey) == true))
8585 then throw("tx already registered")
8686 else {
8787 let t = extract(transferTransactionById(fromBase58String(txId)))
8888 let owner = toBase58String(t.sender.bytes)
8989 let assetId = getAssetMnemonic(t.assetId)
9090 let amountKey = ((("bet_amount_" + assetId) + "_") + owner)
9191 let amountTotalKey = ("total_amount_" + assetId)
9292 let lastAmount = getDefaultedInt(amountKey, 0)
9393 let lastTotalAmount = getDefaultedInt(amountTotalKey, 0)
9494 if ((minProcessAmount > t.amount))
9595 then throw("don't want to register such small amounts")
9696 else if ((betEndTs > lastBlock.timestamp))
9797 then repayFee(inv, WriteSet([DataEntry(amountKey, (lastAmount + t.amount)), DataEntry(amountTotalKey, (lastTotalAmount + t.amount)), DataEntry(registeredKey, true)]), 0, unit, unit)
9898 else repayFee(inv, WriteSet([DataEntry(registeredKey, true)]), (t.amount - minProcessAmount), t.sender, t.assetId)
9999 }
100100 }
101101
102102
103103 @Verifier(tx)
104104 func verify () = match tx {
105105 case o: Order =>
106106 if (if (if (if ((o.assetPair.priceAsset == priceAsset))
107107 then (o.assetPair.amountAsset == amountAsset)
108108 else false)
109109 then (o.matcherPublicKey == matcherPubKey)
110110 else false)
111111 then (o.price == targetPrice)
112112 else false)
113113 then (orderExpire > (o.expiration - o.timestamp))
114114 else false
115115 case _ =>
116116 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
117117 }
118118

github/deemru/w8io/169f3d6 
57.23 ms