tx · HzqkZHFN7HAdgW6jnKhZ11fm5pL6s5zWYyaVcMUTH7Uw 3NC5E3y11PtakmAUxN9Nfdvx7XjWsffcJrr: -0.05000000 Waves 2020.08.25 12:00 [1148344] smart account 3NC5E3y11PtakmAUxN9Nfdvx7XjWsffcJrr > SELF 0.00000000 Waves
{ "type": 13, "id": "HzqkZHFN7HAdgW6jnKhZ11fm5pL6s5zWYyaVcMUTH7Uw", "fee": 5000000, "feeAssetId": null, "timestamp": 1598346053485, "version": 1, "sender": "3NC5E3y11PtakmAUxN9Nfdvx7XjWsffcJrr", "senderPublicKey": "DuSyT6XMpGpexrez81rru35TfpmHJcYQP1WJxT9wjcry", "proofs": [ "UwfFtarqB66eaEWSxQPEQdizoGgb6Qtg2t5nmhQgq2acmDDPaKymWCxBKkaBRxC5Vp9zvqnzpPFz7PJW3qerTDu" ], "script": "base64:AAIDAAAAAAAAAAwIARIDCgEBEgMKAQEAAAACAAAAAA1SRUNPVkVSWVBIQVNFAAAAAAAAAABkAQAAABJnZXREYXRhRW50cnlGb3JLZXkAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABeAUAAAAHJG1hdGNoMAUAAAABeAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAAAAAAAAAAAAAkBAAAABXRocm93AAAAAAAAAAIAAAABaQEAAAAFc2hvcnQAAAABAAAAC3Nob3J0VGFyZ2V0BAAAAAZjYWxsZXIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA9zaG9ydEFkZHJlc3NLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABnNob3J0XwkAAaQAAAABBQAAAAtzaG9ydFRhcmdldAIAAAABXwUAAAAGY2FsbGVyBAAAAA5zaG9ydHNUb3RhbEtleQkAASwAAAACAgAAAA1zaG9ydHNfdG90YWxfCQABpAAAAAEFAAAAC3Nob3J0VGFyZ2V0BAAAABxjdXJyZW50U2hvcnRBbW91bnRGb3JBZGRyZXNzCQEAAAASZ2V0RGF0YUVudHJ5Rm9yS2V5AAAAAQUAAAAPc2hvcnRBZGRyZXNzS2V5BAAAAA1jdXJyZW50U2hvcnRzCQEAAAASZ2V0RGF0YUVudHJ5Rm9yS2V5AAAAAQUAAAAOc2hvcnRzVG90YWxLZXkEAAAAB3BheW1lbnQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAQAAAAGYW1vdW50CAUAAAAHcGF5bWVudAAAAAZhbW91bnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAACZPbmx5IFdhdmVzIHBheW1lbnRzIGFsbG93ZWQgY3VycmVudGx5IQMJAABnAAAAAgkAAGQAAAACBQAAAAZoZWlnaHQFAAAADVJFQ09WRVJZUEhBU0UFAAAAC3Nob3J0VGFyZ2V0CQAAAgAAAAECAAAAVVJlY292ZXJ5IHBoYXNlIGFjdGl2ZS4gWW91IGNhbiBubyBsb25nZXIgZ28gc2hvcnQgdG93YXJkcyB0aGlzIHNob3J0IHRhcmdldCAvIGhlaWdodCEJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAD3Nob3J0QWRkcmVzc0tleQkAAGQAAAACBQAAABxjdXJyZW50U2hvcnRBbW91bnRGb3JBZGRyZXNzBQAAAAZhbW91bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADnNob3J0c1RvdGFsS2V5CQAAZAAAAAIFAAAADWN1cnJlbnRTaG9ydHMFAAAABmFtb3VudAUAAAADbmlsAAAAAWkBAAAABGxvbmcAAAABAAAACmxvbmdUYXJnZXQEAAAABmNhbGxlcgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAADmxvbmdBZGRyZXNzS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAVsb25nXwkAAaQAAAABBQAAAApsb25nVGFyZ2V0AgAAAAFfBQAAAAZjYWxsZXIEAAAADWxvbmdzVG90YWxLZXkJAAEsAAAAAgIAAAAMbG9uZ3NfdG90YWxfCQABpAAAAAEFAAAACmxvbmdUYXJnZXQEAAAAG2N1cnJlbnRMb25nQW1vdW50Rm9yQWRkcmVzcwkBAAAAEmdldERhdGFFbnRyeUZvcktleQAAAAEFAAAADmxvbmdBZGRyZXNzS2V5BAAAAAxjdXJyZW50TG9uZ3MJAQAAABJnZXREYXRhRW50cnlGb3JLZXkAAAABBQAAAA1sb25nc1RvdGFsS2V5BAAAAAdwYXltZW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAABmFtb3VudAgFAAAAB3BheW1lbnQAAAAGYW1vdW50AwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAmT25seSBXYXZlcyBwYXltZW50cyBhbGxvd2VkIGN1cnJlbnRseSEDCQAAZwAAAAIJAABkAAAAAgUAAAAGaGVpZ2h0BQAAAA1SRUNPVkVSWVBIQVNFBQAAAApsb25nVGFyZ2V0CQAAAgAAAAECAAAAU1JlY292ZXJ5IHBoYXNlIGFjdGl2ZS4gWW91IGNhbiBubyBsb25nZXIgZ28gbG9uZyB0b3dhcmRzIHRoaXMgbG9uZyB0YXJnZXQgLyBoZWlnaHQhCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA5sb25nQWRkcmVzc0tleQkAAGQAAAACBQAAABtjdXJyZW50TG9uZ0Ftb3VudEZvckFkZHJlc3MFAAAABmFtb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAANbG9uZ3NUb3RhbEtleQkAAGQAAAACBQAAAAxjdXJyZW50TG9uZ3MFAAAABmFtb3VudAUAAAADbmlsAAAAAPbTCCg=", "chainId": 84, "height": 1148344, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5yvbreagy3rBHG6DQs1nyMXWeyZvjKiyBzvb9TZMmVam Next: GyD6ons7oJ8dpbT5KA4yy8fyWMFy4FJSyVuxDK632gjx Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let RECOVERYPHASE = | |
4 | + | let RECOVERYPHASE = 100 | |
5 | 5 | ||
6 | 6 | func getDataEntryForKey (key) = match getInteger(this, key) { | |
7 | 7 | case x: Int => | |
11 | 11 | case _ => | |
12 | 12 | throw() | |
13 | 13 | } | |
14 | + | ||
15 | + | ||
16 | + | @Callable(i) | |
17 | + | func short (shortTarget) = { | |
18 | + | let caller = toString(i.caller) | |
19 | + | let shortAddressKey = ((("short_" + toString(shortTarget)) + "_") + caller) | |
20 | + | let shortsTotalKey = ("shorts_total_" + toString(shortTarget)) | |
21 | + | let currentShortAmountForAddress = getDataEntryForKey(shortAddressKey) | |
22 | + | let currentShorts = getDataEntryForKey(shortsTotalKey) | |
23 | + | let payment = extract(i.payment) | |
24 | + | let amount = payment.amount | |
25 | + | if (isDefined(payment.assetId)) | |
26 | + | then throw("Only Waves payments allowed currently!") | |
27 | + | else if (((height + RECOVERYPHASE) >= shortTarget)) | |
28 | + | then throw("Recovery phase active. You can no longer go short towards this short target / height!") | |
29 | + | else WriteSet([DataEntry(shortAddressKey, (currentShortAmountForAddress + amount)), DataEntry(shortsTotalKey, (currentShorts + amount))]) | |
30 | + | } | |
31 | + | ||
14 | 32 | ||
15 | 33 | ||
16 | 34 | @Callable(i) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let RECOVERYPHASE = | |
4 | + | let RECOVERYPHASE = 100 | |
5 | 5 | ||
6 | 6 | func getDataEntryForKey (key) = match getInteger(this, key) { | |
7 | 7 | case x: Int => | |
8 | 8 | x | |
9 | 9 | case _: Unit => | |
10 | 10 | 0 | |
11 | 11 | case _ => | |
12 | 12 | throw() | |
13 | 13 | } | |
14 | + | ||
15 | + | ||
16 | + | @Callable(i) | |
17 | + | func short (shortTarget) = { | |
18 | + | let caller = toString(i.caller) | |
19 | + | let shortAddressKey = ((("short_" + toString(shortTarget)) + "_") + caller) | |
20 | + | let shortsTotalKey = ("shorts_total_" + toString(shortTarget)) | |
21 | + | let currentShortAmountForAddress = getDataEntryForKey(shortAddressKey) | |
22 | + | let currentShorts = getDataEntryForKey(shortsTotalKey) | |
23 | + | let payment = extract(i.payment) | |
24 | + | let amount = payment.amount | |
25 | + | if (isDefined(payment.assetId)) | |
26 | + | then throw("Only Waves payments allowed currently!") | |
27 | + | else if (((height + RECOVERYPHASE) >= shortTarget)) | |
28 | + | then throw("Recovery phase active. You can no longer go short towards this short target / height!") | |
29 | + | else WriteSet([DataEntry(shortAddressKey, (currentShortAmountForAddress + amount)), DataEntry(shortsTotalKey, (currentShorts + amount))]) | |
30 | + | } | |
31 | + | ||
14 | 32 | ||
15 | 33 | ||
16 | 34 | @Callable(i) | |
17 | 35 | func long (longTarget) = { | |
18 | 36 | let caller = toString(i.caller) | |
19 | 37 | let longAddressKey = ((("long_" + toString(longTarget)) + "_") + caller) | |
20 | 38 | let longsTotalKey = ("longs_total_" + toString(longTarget)) | |
21 | 39 | let currentLongAmountForAddress = getDataEntryForKey(longAddressKey) | |
22 | 40 | let currentLongs = getDataEntryForKey(longsTotalKey) | |
23 | 41 | let payment = extract(i.payment) | |
24 | 42 | let amount = payment.amount | |
25 | 43 | if (isDefined(payment.assetId)) | |
26 | 44 | then throw("Only Waves payments allowed currently!") | |
27 | 45 | else if (((height + RECOVERYPHASE) >= longTarget)) | |
28 | 46 | then throw("Recovery phase active. You can no longer go long towards this long target / height!") | |
29 | 47 | else WriteSet([DataEntry(longAddressKey, (currentLongAmountForAddress + amount)), DataEntry(longsTotalKey, (currentLongs + amount))]) | |
30 | 48 | } | |
31 | 49 | ||
32 | 50 |
github/deemru/w8io/c3f4982 24.27 ms ◑