tx · 9FrwfG5W7b79oF2wa7ELxnQQ1HD2JKCW9VVCPTdajCEx 3MvTsZLYhU4bGijfdULLDAUEiZVryxJVQPJ: -0.01400000 Waves 2023.01.15 16:50 [2406147] smart account 3MvTsZLYhU4bGijfdULLDAUEiZVryxJVQPJ > SELF 0.00000000 Waves
{ "type": 13, "id": "9FrwfG5W7b79oF2wa7ELxnQQ1HD2JKCW9VVCPTdajCEx", "fee": 1400000, "feeAssetId": null, "timestamp": 1673790751964, "version": 2, "chainId": 84, "sender": "3MvTsZLYhU4bGijfdULLDAUEiZVryxJVQPJ", "senderPublicKey": "6hSe4di8vdVexXUoSJQ1unZB3n287fgHNBP7PberpTez", "proofs": [ "4NL7oBgurAELqmiESYh5G2Wpu29YrzX2PcnkfTVUvb2AEbQh1wQ1fqbucKheEEfejAVhLXNTh9H3rABt5iGEwBjz" ], "script": "base64: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", "height": 2406147, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2WQN1RMUApm6AC9riECpLtoALXkD1DWV6b4VMJGtK9wr Next: 9FEKfEKvne7Mj5Dx1em4GSjYQh2cLu6sd6XfJL7t5NKt Diff:
Old | New | Differences | |
---|---|---|---|
4 | 4 | ||
5 | 5 | ||
6 | 6 | @Callable(i) | |
7 | - | func | |
7 | + | func placeoptionCall (OptionEntry) = { | |
8 | 8 | let calleraddress = toBase58String(i.caller.bytes) | |
9 | 9 | let read_oracle_status = getStringValue(this, "oracle_status") | |
10 | 10 | let read_OptionCounterID = getIntegerValue(this, "1m_contract_id") | |
11 | 11 | let getbtcdata = getStringValue(this, ("1m_btc_" + toString(read_OptionCounterID))) | |
12 | 12 | let swapLi = split(getbtcdata, "_") | |
13 | 13 | let price = swapLi[0] | |
14 | - | if ((read_oracle_status == "Close")) | |
15 | - | then throw("Oracle is closed.Wait Until Oracle is Turned On.") | |
16 | - | else if ((OptionEntry == "Call")) | |
17 | - | then [StringEntry(calleraddress, "Call"), StringEntry((calleraddress + "_price"), price)] | |
18 | - | else if ((OptionEntry == "Put")) | |
19 | - | then [StringEntry(calleraddress, "Put"), StringEntry((calleraddress + "_price"), price)] | |
20 | - | else throw("You can Place only Either ['Call'] or ['Put']") | |
14 | + | let block = parseIntValue(swapLi[2]) | |
15 | + | let checkblockgap = (lastBlock.height - block) | |
16 | + | let PreviousCall = match getInteger(this, "Total_Calls") { | |
17 | + | case a: Int => | |
18 | + | a | |
19 | + | case _ => | |
20 | + | 0 | |
21 | + | } | |
22 | + | let TotalCall = (PreviousCall + 1) | |
23 | + | let PreviousUserCall = match getInteger(this, (calleraddress + "_Total_Calls")) { | |
24 | + | case a: Int => | |
25 | + | a | |
26 | + | case _ => | |
27 | + | 0 | |
28 | + | } | |
29 | + | let TotalUserCall = (PreviousUserCall + 1) | |
30 | + | if ((2 > checkblockgap)) | |
31 | + | then throw("Something Wrong with Oracle or Height is not matched.") | |
32 | + | else if ((read_oracle_status == "Close")) | |
33 | + | then throw("Oracle is closed. Wait Until Oracle is Turned On.") | |
34 | + | else if ((OptionEntry == "Call")) | |
35 | + | then [StringEntry(calleraddress, "Call"), StringEntry((calleraddress + "_price"), price)] | |
36 | + | else throw("You can Place only ['Call'] Here.") | |
21 | 37 | } | |
22 | 38 | ||
23 | 39 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | ||
5 | 5 | ||
6 | 6 | @Callable(i) | |
7 | - | func | |
7 | + | func placeoptionCall (OptionEntry) = { | |
8 | 8 | let calleraddress = toBase58String(i.caller.bytes) | |
9 | 9 | let read_oracle_status = getStringValue(this, "oracle_status") | |
10 | 10 | let read_OptionCounterID = getIntegerValue(this, "1m_contract_id") | |
11 | 11 | let getbtcdata = getStringValue(this, ("1m_btc_" + toString(read_OptionCounterID))) | |
12 | 12 | let swapLi = split(getbtcdata, "_") | |
13 | 13 | let price = swapLi[0] | |
14 | - | if ((read_oracle_status == "Close")) | |
15 | - | then throw("Oracle is closed.Wait Until Oracle is Turned On.") | |
16 | - | else if ((OptionEntry == "Call")) | |
17 | - | then [StringEntry(calleraddress, "Call"), StringEntry((calleraddress + "_price"), price)] | |
18 | - | else if ((OptionEntry == "Put")) | |
19 | - | then [StringEntry(calleraddress, "Put"), StringEntry((calleraddress + "_price"), price)] | |
20 | - | else throw("You can Place only Either ['Call'] or ['Put']") | |
14 | + | let block = parseIntValue(swapLi[2]) | |
15 | + | let checkblockgap = (lastBlock.height - block) | |
16 | + | let PreviousCall = match getInteger(this, "Total_Calls") { | |
17 | + | case a: Int => | |
18 | + | a | |
19 | + | case _ => | |
20 | + | 0 | |
21 | + | } | |
22 | + | let TotalCall = (PreviousCall + 1) | |
23 | + | let PreviousUserCall = match getInteger(this, (calleraddress + "_Total_Calls")) { | |
24 | + | case a: Int => | |
25 | + | a | |
26 | + | case _ => | |
27 | + | 0 | |
28 | + | } | |
29 | + | let TotalUserCall = (PreviousUserCall + 1) | |
30 | + | if ((2 > checkblockgap)) | |
31 | + | then throw("Something Wrong with Oracle or Height is not matched.") | |
32 | + | else if ((read_oracle_status == "Close")) | |
33 | + | then throw("Oracle is closed. Wait Until Oracle is Turned On.") | |
34 | + | else if ((OptionEntry == "Call")) | |
35 | + | then [StringEntry(calleraddress, "Call"), StringEntry((calleraddress + "_price"), price)] | |
36 | + | else throw("You can Place only ['Call'] Here.") | |
21 | 37 | } | |
22 | 38 | ||
23 | 39 | ||
24 | 40 | ||
25 | 41 | @Callable(i) | |
26 | 42 | func calldata (Counter) = { | |
27 | 43 | let getbtcdata = getStringValue(addressFromPublicKey(base58'6hSe4di8vdVexXUoSJQ1unZB3n287fgHNBP7PberpTez'), ("1m_btc_" + toString(Counter))) | |
28 | 44 | let swapLi = split(getbtcdata, "_") | |
29 | 45 | let price = swapLi[0] | |
30 | 46 | let time = swapLi[1] | |
31 | 47 | let blockheight = swapLi[2] | |
32 | 48 | let div = swapLi[3] | |
33 | 49 | [StringEntry("price", swapLi[0]), StringEntry("time", swapLi[1]), StringEntry("blockheight", swapLi[2]), StringEntry("div", swapLi[3])] | |
34 | 50 | } | |
35 | 51 | ||
36 | 52 | ||
37 | 53 | @Verifier(tx) | |
38 | 54 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
39 | 55 |
github/deemru/w8io/169f3d6 66.74 ms ◑