tx · C1SvhTHknh3aZp8PUhpMkFxrzGtSm9mDgyYiGFLiGQkh

3MwRiKHmomSqxzrws6x5KYLtgnaBM1hhnRk:  -0.01400000 Waves

2019.09.08 10:06 [666788] smart account 3MwRiKHmomSqxzrws6x5KYLtgnaBM1hhnRk > SELF 0.00000000 Waves

{ "type": 13, "id": "C1SvhTHknh3aZp8PUhpMkFxrzGtSm9mDgyYiGFLiGQkh", "fee": 1400000, "feeAssetId": null, "timestamp": 1567926035873, "version": 1, "sender": "3MwRiKHmomSqxzrws6x5KYLtgnaBM1hhnRk", "senderPublicKey": "4zBZb7taw23PGE9E91m2Kav1ZZGExTVYZkrxt8aPUtRt", "proofs": [ "4Q7Lt4M1fZAmAtvxnuWtAFVvbBZvfPL7Ec8L8UHM6PaLACzkFQnjefhxmH5HVNcihAeTwgz4eYf6F9UMyPZLXfuD" ], "script": "base64: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", "chainId": 84, "height": 666788, "spentComplexity": 0 } View: original | compacted Prev: none Next: GjbDVL2zfsGX1tmivudb6dFrgZyC3p4Q3N9sDX9XDo6t Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func isActivated () = {
5+ let user = getStringValue(this, "user")
6+ (user != "")
7+ }
8+
9+
10+func verifyMinDeposit () = {
11+ let deposit = getIntegerValue(this, "deposit")
12+ let pricePerMinute = getIntegerValue(this, "pricePerMinute")
13+ let minimumTime = getIntegerValue(this, "MinimumTime")
14+ ((deposit / pricePerMinute) > minimumTime)
15+ }
16+
17+
18+func isTimeLockOpened (currentTime) = {
19+ let timestart = getIntegerValue(this, "timestart")
20+ let pricePerMinute = getIntegerValue(this, "pricePerMinute")
21+ let deposit = getIntegerValue(this, "deposit")
22+ ((currentTime - timestart) > (deposit / pricePerMinute))
23+ }
24+
25+
26+@Callable(i)
27+func init () = if (if ((this == i.caller))
28+ then !(isDefined(getInteger(this, "pricePerMinute")))
29+ else false)
30+ then WriteSet([DataEntry("pricePerMinute", 10000000), DataEntry("user", ""), DataEntry("timestart", ""), DataEntry("deposit", 0), DataEntry("withDrawAddress", "")])
31+ else throw("contract is already inited")
32+
33+
34+
35+@Callable(i)
36+func activate (deposit,userPk) = if (isActivated())
37+ then throw("The scooter is already activated")
38+ else if (!(verifyMinDeposit()))
39+ then throw("Your deposit should be for 30 minutes minimum")
40+ else WriteSet([DataEntry("deposit", deposit), DataEntry("user", userPk), DataEntry("timestart", lastBlock.timestamp)])
41+
42+
43+
44+@Callable(i)
45+func payAndStop (amount) = {
46+ let userAddress = addressFromPublicKey(toBytes(getStringValue(this, "user")))
47+ let withDrawalAddress = getStringValue(this, "withdrawal")
48+ let deposit = getIntegerValue(this, "deposit")
49+ let remainder = (deposit - amount)
50+ if ((i.caller == userAddress))
51+ then TransferSet([ScriptTransfer(userAddress, remainder, unit), ScriptTransfer(Address(toBytes(withDrawalAddress)), amount, unit)])
52+ else throw("not the adress of the renter")
53+ }
54+
55+
56+
57+@Callable(i)
58+func withdraw () = if (if (isTimeLockOpened(lastBlock.timestamp))
59+ then (this == i.caller)
60+ else false)
61+ then {
62+ let deposit = getIntegerValue(this, "deposit")
63+ ScriptResult(WriteSet([DataEntry("deposit", 0), DataEntry("user", ""), DataEntry("timestart", "")]), TransferSet([ScriptTransfer(Address(toBytes(getStringValue(this, "withDrawalAddress"))), deposit, unit)]))
64+ }
65+ else throw("withdraw rejected because timelock is still active")
66+
67+
68+@Verifier(tx)
69+func verify () = true
70+

github/deemru/w8io/169f3d6 
26.20 ms