tx · 8DRYuJaQCiMYgsWw4YpNMtQN7QfKKrmMVkxaTqYB8L2w 3NCEnW5hTnRQ7J9TFQsHS4W92f54PCCWQvN: -0.01400000 Waves 2020.02.03 14:25 [882918] smart account 3NCEnW5hTnRQ7J9TFQsHS4W92f54PCCWQvN > SELF 0.00000000 Waves
{ "type": 13, "id": "8DRYuJaQCiMYgsWw4YpNMtQN7QfKKrmMVkxaTqYB8L2w", "fee": 1400000, "feeAssetId": null, "timestamp": 1580729094564, "version": 1, "sender": "3NCEnW5hTnRQ7J9TFQsHS4W92f54PCCWQvN", "senderPublicKey": "8PUyJHGVRUxhY118c4H5isGCGLYgRBmcSzNYooDAqwh", "proofs": [ "4G27tovtRPPqa3q9s1kX3c9Dr5unuPMSRSLb713edpmUdiakjoXiRemuvJr5SBXFs2ZWxkht3vWvtaUfKNCFLBYX" ], "script": "base64:AAIDAAAAAAAAAAcIARIDCgEIAAAAAAAAAAEAAAABaQEAAAAUdHJ5R2V0NjAwU2Vjb25kc0xvY2sAAAABAAAACGxvY2tOYW1lBAAAAA1sb2NrVW50aWxOYW1lCQABLAAAAAIFAAAACGxvY2tOYW1lAgAAAAYvdW50aWwEAAAAA25vdwQAAAAHJG1hdGNoMAkAA+0AAAABBQAAAAZoZWlnaHQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACUJsb2NrSW5mbwQAAAABYgUAAAAHJG1hdGNoMAgFAAAAAWIAAAAJdGltZXN0YW1wAAAAAAAAAAAABAAAAAhsb2NrZWRCeQQAAAAHJG1hdGNoMAkABBwAAAACBQAAAAR0aGlzBQAAAAhsb2NrTmFtZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYggIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAALbG9ja2VkVW50aWwEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAANbG9ja1VudGlsTmFtZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAV1bnRpbAUAAAAHJG1hdGNoMAUAAAAFdW50aWwAAAAAAAAAAAAEAAAAB2NhbkxvY2sDCQAAZgAAAAIFAAAAA25vdwUAAAALbG9ja2VkVW50aWwGCQAAAAAAAAIFAAAACGxvY2tlZEJ5CAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzAwUAAAAHY2FuTG9jawkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAIbG9ja05hbWUICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADWxvY2tVbnRpbE5hbWUJAABkAAAAAgUAAAADbm93AAAAAAAAAAJYBQAAAANuaWwJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAACGxvY2tOYW1lBQAAAAhsb2NrZWRCeQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAANbG9ja1VudGlsTmFtZQUAAAALbG9ja2VkVW50aWwFAAAAA25pbAAAAACGaaqc", "chainId": 84, "height": 882918, "spentComplexity": 0 } View: original | compacted Prev: 62NBkKVzVyUedufzyNsFtHM357jdfRBtFDi9joAtSvA3 Next: HURkJMycQXQsJw5SXMLfYv4H9eUEENkjFRE3iUxPCQWp Full:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | ||
4 | + | ||
5 | 5 | ||
6 | 6 | @Callable(i) | |
7 | - | func getLock (lockName,until) = { | |
8 | - | let lockNameUntil = (lockName + nameUntilSuffux) | |
9 | - | let blockInfo = blockInfoByHeight(height) | |
10 | - | let now = match blockInfo { | |
11 | - | case t: BlockInfo => | |
12 | - | t.timestamp | |
7 | + | func tryGet600SecondsLock (lockName) = { | |
8 | + | let lockUntilName = (lockName + "/until") | |
9 | + | let now = match blockInfoByHeight(height) { | |
10 | + | case b: BlockInfo => | |
11 | + | b.timestamp | |
13 | 12 | case _ => | |
14 | - | throw("Cannot get blockinfo") | |
15 | - | } | |
16 | - | let notTooLow = if ((now >= until)) | |
17 | - | then throw("Supplied until value is too low") | |
18 | - | else true | |
19 | - | let notTooHigh = if ((until > (now + 600000))) | |
20 | - | then throw("Supplied until value is too high") | |
21 | - | else true | |
22 | - | let canBeLocked = match getBinary(this, lockName) { | |
23 | - | case b: ByteVector => | |
24 | - | (b == i.caller.bytes) | |
25 | - | case Unit => | |
26 | - | true | |
27 | - | } | |
28 | - | let lastLockTime = match getInteger(this, lockNameUntil) { | |
29 | - | case t: Int => | |
30 | - | t | |
31 | - | case Unit => | |
32 | 13 | 0 | |
33 | 14 | } | |
34 | - | if (if (if (notTooLow) | |
35 | - | then notTooHigh | |
36 | - | else false) | |
37 | - | then if (canBeLocked) | |
38 | - | then true | |
39 | - | else (height >= lastLockTime) | |
40 | - | else false) | |
41 | - | then WriteSet([DataEntry(lockName, i.caller.bytes), DataEntry(lockNameUntil, until)]) | |
42 | - | else throw("Lock cant be locked") | |
15 | + | let lockedBy = match getBinary(this, lockName) { | |
16 | + | case b: ByteVector => | |
17 | + | b | |
18 | + | case _ => | |
19 | + | i.caller.bytes | |
20 | + | } | |
21 | + | let lockedUntil = match getInteger(this, lockUntilName) { | |
22 | + | case until: Int => | |
23 | + | until | |
24 | + | case _ => | |
25 | + | 0 | |
26 | + | } | |
27 | + | let canLock = if ((now > lockedUntil)) | |
28 | + | then true | |
29 | + | else (lockedBy == i.caller.bytes) | |
30 | + | if (canLock) | |
31 | + | then WriteSet([DataEntry(lockName, i.caller.bytes), DataEntry(lockUntilName, (now + 600))]) | |
32 | + | else WriteSet([DataEntry(lockName, lockedBy), DataEntry(lockUntilName, lockedUntil)]) | |
43 | 33 | } | |
44 | 34 | ||
45 | 35 |
github/deemru/w8io/873ac7e 23.78 ms ◑![]()