tx · GKejRvqVA5etzhpNdG191xJq1J7pRQvSzgyZN1FkPj6g 3NC9boevS259eTsMAkFAxCPorzK4Z9bpWje: -0.01400000 Waves 2023.01.30 16:00 [2427734] smart account 3NC9boevS259eTsMAkFAxCPorzK4Z9bpWje > SELF 0.00000000 Waves
{ "type": 13, "id": "GKejRvqVA5etzhpNdG191xJq1J7pRQvSzgyZN1FkPj6g", "fee": 1400000, "feeAssetId": null, "timestamp": 1675083697224, "version": 2, "chainId": 84, "sender": "3NC9boevS259eTsMAkFAxCPorzK4Z9bpWje", "senderPublicKey": "515tSAyMUbAb8kKjcpGDpqALGfCgcwfWmWKKkcBKTcGB", "proofs": [ "5vmsbpy45YuZpogsV4Z7C6DAZgqv7J9TnVWs4NgVQ49g6ijDQavSPji6S3gCZRMJm7ruPfJN55N8JoiCYDUAAW1c" ], "script": "base64:AAIFAAAAAAAAABIIAhIAEgASAwoBCBIDCgEBEgAAAAACAAAAABREYXBwX0FkZHJlc3NfcHViX2tleQEAAAAgvHZQICGE3/5b1wAhqlA9b7vNXmYDAjYF3VxTne0xkiQAAAAAGW9yYWNsZV9jb250cm9sbGVyX2FkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAFERhcHBfQWRkcmVzc19wdWJfa2V5AAAABQAAAAFpAQAAAA9wbGFjZW9wdGlvbkNhbGwAAAAABAAAAA1jYWxsZXJhZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAEnJlYWRfb3JhY2xlX3N0YXR1cwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwIAAAANb3JhY2xlX3N0YXR1cwQAAAAUcmVhZF9PcHRpb25Db3VudGVySUQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAADjFtX2NvbnRyYWN0X2lkBAAAAApnZXRidGNkYXRhCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAICAAAABzFtX2J0Y18JAAGkAAAAAQUAAAAUcmVhZF9PcHRpb25Db3VudGVySUQEAAAABnN3YXBMaQkABLUAAAACBQAAAApnZXRidGNkYXRhAgAAAAFfBAAAAAVwcmljZQkAAZEAAAACBQAAAAZzd2FwTGkAAAAAAAAAAAAEAAAABWJsb2NrCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAGc3dhcExpAAAAAAAAAAACBAAAAA1jaGVja2Jsb2NrZ2FwCQAAZQAAAAIFAAAABmhlaWdodAUAAAAFYmxvY2sEAAAAEk9waW9uRXhwaXJlQ291bnRlcgAAAAAAAAAAAQQAAAAVT3B0aW9uRXhwaXJlQ291bnRlcklECQAAZAAAAAIFAAAAFHJlYWRfT3B0aW9uQ291bnRlcklEBQAAABJPcGlvbkV4cGlyZUNvdW50ZXIEAAAADFByZXZpb3VzQ2FsbAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzAgAAAAtUb3RhbF9DYWxscwMJAAABAAAAAgUA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b3RhbFVzZXJQdXQFAAAAA25pbAAAAAFpAQAAAAlDbGFpbUNhbGwAAAABAAAADUNhbGxfU2VxdWVuY2UEAAAADWNhbGxlcmFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAADcG10AwkAAAAAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAACQAAAgAAAAECAAAAOE5vIHBheW1lbnQgYXR0YWNoZWQsIFBsZWFzZSBBdHRhY2ggVG9rZW5zIGluIHBheW1lbnRbMV0uBAAAABJnZXRPcHRpb25DYWxsUHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABUNhbGxfBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAFfBQAAAA1DYWxsX1NlcXVlbmNlBAAAABpnZXRPcHRpb25DYWxsX1NlcXVlbmNlZGF0YQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPQ2FsbF9TdGFydF9FbmRfBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAFfBQAAAA1DYWxsX1NlcXVlbmNlBAAAABRzcGxpdFN0YXJ0RW5kQ291bnRlcgkABLUAAAACBQAAABpnZXRPcHRpb25DYWxsX1NlcXVlbmNlZGF0YQIAAAABXwQAAAAPZ2V0U3RhcnRDb3VudGVyCQABkQAAAAIFAAAAFHNwbGl0U3RhcnRFbmRDb3VudGVyAAAAAAAAAAAABAAAAA1nZXRFbmRDb3VudGVyCQABkQAAAAIFAAAAFHNwbGl0U3RhcnRFbmRDb3VudGVyAAAAAAAAAAABBAAAABhnZXRidGNkYXRhQXRTdGFydENvdW50ZXIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAHMW1fYnRjXwUAAAAPZ2V0U3RhcnRDb3VudGVyBAAAABtzcGxpdGJ0Y3ByaWNlQXRTdGFydENvdW50ZXIJAAS1AAAAAgUAAAAYZ2V0YnRjZGF0YUF0U3RhcnRDb3VudGVyAgAAAAFfBAAAABlnZXRidGNwcmljZUF0U3RhcnRDb3VudGVyCQABkQAAAAIFAAAAG3NwbGl0YnRjcHJpY2VBdFN0YXJ0Q291bnRlcgAAAAAAAAAAAAQAAAAWZ2V0YnRjZGF0YUF0RW5kQ291bnRlcgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAAcxbV9idGNfBQAAAA1nZXRFbmRDb3VudGVyBAAAABlzcGxpdGJ0Y3ByaWNlQXRFbmRDb3VudGVyCQAEtQAAAAIFAAAAFmdldGJ0Y2RhdGFBdEVuZENvdW50ZXICAAAAAV8EAAAAF2dldGJ0Y3ByaWNlQXRFbmRDb3VudGVyCQABkQAAAAIFAAAAGXNwbGl0YnRjcHJpY2VBdEVuZENvdW50ZXIAAAAAAAAAAAAEAAAACXByaWNlZGlmZgkAAGUAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEFAAAAF2dldGJ0Y3ByaWNlQXRFbmRDb3VudGVyCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEFAAAAGWdldGJ0Y3ByaWNlQXRTdGFydENvdW50ZXIEAAAAD1ByZXZpb3VzQ2FsbFdpbgQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzAgAAABZUb3RhbF9PcHRpb25fQ2FsbF9XaW5zAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAADFRvdGFsQ2FsbFdpbgkAAGQAAAACBQAAAA9QcmV2aW91c0NhbGxXaW4AAAAAAAAAAAEEAAAAEFByZXZpb3VzQ2FsbExvc2UEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwIAAAAWVG90YWxfT3B0aW9uX0NhbGxfTG9zZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAAA1Ub3RhbENhbGxMb3NlCQAAZAAAAAIFAAAAEFByZXZpb3VzQ2FsbExvc2UAAAAAAAAAAAEDCQAAZgAAAAIAAAAAAAAAAAAFAAAACXByaWNlZGlm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", "height": 2427734, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8WeQyyer6HgXJY7VF9V7PFhoPKBZXaZjXNgNEiquTrLT Next: 8iS5rBhpnJBKgBERcguh4HCfnT3NNS3Gy4f4bEoXt3J Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let Dapp_Address_pub_key = base58'DggHTfM1QvhBop9XaxzwBCeX1V6ksYiyoGvccEk3H8T5' | |
4 | 5 | ||
6 | + | let oracle_controller_address = addressFromPublicKey(Dapp_Address_pub_key) | |
5 | 7 | ||
6 | 8 | @Callable(i) | |
7 | 9 | func placeoptionCall () = { | |
34 | 36 | else if ((read_oracle_status == "Close")) | |
35 | 37 | then throw("Oracle is closed. Wait Until Oracle is Turned On.") | |
36 | 38 | else [StringEntry(((("Call_" + calleraddress) + "_") + toString(TotalUserCall)), price), StringEntry(((("Call_Start_End_" + calleraddress) + "_") + toString(TotalUserCall)), ((toString(read_OptionCounterID) + "_") + toString(OptionExpireCounterID))), IntegerEntry("Total_Calls", TotalCall), IntegerEntry((calleraddress + "_Total_Calls"), TotalUserCall)] | |
39 | + | } | |
40 | + | ||
41 | + | ||
42 | + | ||
43 | + | @Callable(i) | |
44 | + | func placeoptionPut () = { | |
45 | + | let calleraddress = toBase58String(i.caller.bytes) | |
46 | + | let read_oracle_status = getStringValue(this, "oracle_status") | |
47 | + | let read_OptionCounterID = getIntegerValue(this, "1m_contract_id") | |
48 | + | let getbtcdata = getStringValue(this, ("1m_btc_" + toString(read_OptionCounterID))) | |
49 | + | let swapLi = split(getbtcdata, "_") | |
50 | + | let price = swapLi[0] | |
51 | + | let block = parseIntValue(swapLi[2]) | |
52 | + | let checkblockgap = (height - block) | |
53 | + | let OpionExpireCounter = 1 | |
54 | + | let OptionExpireCounterID = (read_OptionCounterID + OpionExpireCounter) | |
55 | + | let PreviousPut = match getInteger(this, "Total_Puts") { | |
56 | + | case a: Int => | |
57 | + | a | |
58 | + | case _ => | |
59 | + | 0 | |
60 | + | } | |
61 | + | let TotalPut = (PreviousPut + 1) | |
62 | + | let PreviousUserPut = match getInteger(this, (calleraddress + "_Total_Puts")) { | |
63 | + | case a: Int => | |
64 | + | a | |
65 | + | case _ => | |
66 | + | 0 | |
67 | + | } | |
68 | + | let TotalUserPut = (PreviousUserPut + 1) | |
69 | + | if ((checkblockgap > 2)) | |
70 | + | then throw("Something Wrong with Oracle or Height is not matched.") | |
71 | + | else if ((read_oracle_status == "Close")) | |
72 | + | then throw("Oracle is closed. Wait Until Oracle is Turned On.") | |
73 | + | else [StringEntry(((("Put_" + calleraddress) + "_") + toString(TotalUserPut)), price), StringEntry(((("Put_Start_End_" + calleraddress) + "_") + toString(TotalUserPut)), ((toString(read_OptionCounterID) + "_") + toString(OptionExpireCounterID))), IntegerEntry("Total_Puts", TotalPut), IntegerEntry((calleraddress + "_Total_Puts"), TotalUserPut)] | |
37 | 74 | } | |
38 | 75 | ||
39 | 76 | ||
89 | 126 | } | |
90 | 127 | ||
91 | 128 | ||
129 | + | ||
130 | + | @Callable(i) | |
131 | + | func OpenOracle () = if ((i.caller != oracle_controller_address)) | |
132 | + | then throw((("This Address is not Authorized. Only " + toString(oracle_controller_address)) + " is Authorized Address to Sign it.")) | |
133 | + | else [StringEntry("oracle_status", "Open")] | |
134 | + | ||
135 | + | ||
92 | 136 | @Verifier(tx) | |
93 | 137 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
94 | 138 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let Dapp_Address_pub_key = base58'DggHTfM1QvhBop9XaxzwBCeX1V6ksYiyoGvccEk3H8T5' | |
4 | 5 | ||
6 | + | let oracle_controller_address = addressFromPublicKey(Dapp_Address_pub_key) | |
5 | 7 | ||
6 | 8 | @Callable(i) | |
7 | 9 | func placeoptionCall () = { | |
8 | 10 | let calleraddress = toBase58String(i.caller.bytes) | |
9 | 11 | let read_oracle_status = getStringValue(this, "oracle_status") | |
10 | 12 | let read_OptionCounterID = getIntegerValue(this, "1m_contract_id") | |
11 | 13 | let getbtcdata = getStringValue(this, ("1m_btc_" + toString(read_OptionCounterID))) | |
12 | 14 | let swapLi = split(getbtcdata, "_") | |
13 | 15 | let price = swapLi[0] | |
14 | 16 | let block = parseIntValue(swapLi[2]) | |
15 | 17 | let checkblockgap = (height - block) | |
16 | 18 | let OpionExpireCounter = 1 | |
17 | 19 | let OptionExpireCounterID = (read_OptionCounterID + OpionExpireCounter) | |
18 | 20 | let PreviousCall = match getInteger(this, "Total_Calls") { | |
19 | 21 | case a: Int => | |
20 | 22 | a | |
21 | 23 | case _ => | |
22 | 24 | 0 | |
23 | 25 | } | |
24 | 26 | let TotalCall = (PreviousCall + 1) | |
25 | 27 | let PreviousUserCall = match getInteger(this, (calleraddress + "_Total_Calls")) { | |
26 | 28 | case a: Int => | |
27 | 29 | a | |
28 | 30 | case _ => | |
29 | 31 | 0 | |
30 | 32 | } | |
31 | 33 | let TotalUserCall = (PreviousUserCall + 1) | |
32 | 34 | if ((checkblockgap > 2)) | |
33 | 35 | then throw("Something Wrong with Oracle or Height is not matched.") | |
34 | 36 | else if ((read_oracle_status == "Close")) | |
35 | 37 | then throw("Oracle is closed. Wait Until Oracle is Turned On.") | |
36 | 38 | else [StringEntry(((("Call_" + calleraddress) + "_") + toString(TotalUserCall)), price), StringEntry(((("Call_Start_End_" + calleraddress) + "_") + toString(TotalUserCall)), ((toString(read_OptionCounterID) + "_") + toString(OptionExpireCounterID))), IntegerEntry("Total_Calls", TotalCall), IntegerEntry((calleraddress + "_Total_Calls"), TotalUserCall)] | |
39 | + | } | |
40 | + | ||
41 | + | ||
42 | + | ||
43 | + | @Callable(i) | |
44 | + | func placeoptionPut () = { | |
45 | + | let calleraddress = toBase58String(i.caller.bytes) | |
46 | + | let read_oracle_status = getStringValue(this, "oracle_status") | |
47 | + | let read_OptionCounterID = getIntegerValue(this, "1m_contract_id") | |
48 | + | let getbtcdata = getStringValue(this, ("1m_btc_" + toString(read_OptionCounterID))) | |
49 | + | let swapLi = split(getbtcdata, "_") | |
50 | + | let price = swapLi[0] | |
51 | + | let block = parseIntValue(swapLi[2]) | |
52 | + | let checkblockgap = (height - block) | |
53 | + | let OpionExpireCounter = 1 | |
54 | + | let OptionExpireCounterID = (read_OptionCounterID + OpionExpireCounter) | |
55 | + | let PreviousPut = match getInteger(this, "Total_Puts") { | |
56 | + | case a: Int => | |
57 | + | a | |
58 | + | case _ => | |
59 | + | 0 | |
60 | + | } | |
61 | + | let TotalPut = (PreviousPut + 1) | |
62 | + | let PreviousUserPut = match getInteger(this, (calleraddress + "_Total_Puts")) { | |
63 | + | case a: Int => | |
64 | + | a | |
65 | + | case _ => | |
66 | + | 0 | |
67 | + | } | |
68 | + | let TotalUserPut = (PreviousUserPut + 1) | |
69 | + | if ((checkblockgap > 2)) | |
70 | + | then throw("Something Wrong with Oracle or Height is not matched.") | |
71 | + | else if ((read_oracle_status == "Close")) | |
72 | + | then throw("Oracle is closed. Wait Until Oracle is Turned On.") | |
73 | + | else [StringEntry(((("Put_" + calleraddress) + "_") + toString(TotalUserPut)), price), StringEntry(((("Put_Start_End_" + calleraddress) + "_") + toString(TotalUserPut)), ((toString(read_OptionCounterID) + "_") + toString(OptionExpireCounterID))), IntegerEntry("Total_Puts", TotalPut), IntegerEntry((calleraddress + "_Total_Puts"), TotalUserPut)] | |
37 | 74 | } | |
38 | 75 | ||
39 | 76 | ||
40 | 77 | ||
41 | 78 | @Callable(i) | |
42 | 79 | func ClaimCall (Call_Sequence) = { | |
43 | 80 | let calleraddress = toBase58String(i.caller.bytes) | |
44 | 81 | let pmt = if ((size(i.payments) == 1)) | |
45 | 82 | then i.payments[0] | |
46 | 83 | else throw("No payment attached, Please Attach Tokens in payment[1].") | |
47 | 84 | let getOptionCallPrice = getStringValue(this, ((("Call_" + calleraddress) + "_") + Call_Sequence)) | |
48 | 85 | let getOptionCall_Sequencedata = getStringValue(this, ((("Call_Start_End_" + calleraddress) + "_") + Call_Sequence)) | |
49 | 86 | let splitStartEndCounter = split(getOptionCall_Sequencedata, "_") | |
50 | 87 | let getStartCounter = splitStartEndCounter[0] | |
51 | 88 | let getEndCounter = splitStartEndCounter[1] | |
52 | 89 | let getbtcdataAtStartCounter = getStringValue(this, ("1m_btc_" + getStartCounter)) | |
53 | 90 | let splitbtcpriceAtStartCounter = split(getbtcdataAtStartCounter, "_") | |
54 | 91 | let getbtcpriceAtStartCounter = splitbtcpriceAtStartCounter[0] | |
55 | 92 | let getbtcdataAtEndCounter = getStringValue(this, ("1m_btc_" + getEndCounter)) | |
56 | 93 | let splitbtcpriceAtEndCounter = split(getbtcdataAtEndCounter, "_") | |
57 | 94 | let getbtcpriceAtEndCounter = splitbtcpriceAtEndCounter[0] | |
58 | 95 | let pricediff = (parseIntValue(getbtcpriceAtEndCounter) - parseIntValue(getbtcpriceAtStartCounter)) | |
59 | 96 | let PreviousCallWin = match getInteger(this, "Total_Option_Call_Wins") { | |
60 | 97 | case a: Int => | |
61 | 98 | a | |
62 | 99 | case _ => | |
63 | 100 | 0 | |
64 | 101 | } | |
65 | 102 | let TotalCallWin = (PreviousCallWin + 1) | |
66 | 103 | let PreviousCallLose = match getInteger(this, "Total_Option_Call_Lose") { | |
67 | 104 | case a: Int => | |
68 | 105 | a | |
69 | 106 | case _ => | |
70 | 107 | 0 | |
71 | 108 | } | |
72 | 109 | let TotalCallLose = (PreviousCallLose + 1) | |
73 | 110 | if ((0 > pricediff)) | |
74 | 111 | then [IntegerEntry("Diff", pricediff), IntegerEntry("Total_Option_Call_Lose", TotalCallLose), StringEntry(((((((((((calleraddress + "_") + Call_Sequence) + "_") + getStartCounter) + "_") + getEndCounter) + "_") + getbtcpriceAtStartCounter) + "_") + getbtcpriceAtEndCounter), "lose"), StringEntry("message", "You lose!"), DeleteEntry(((("Call_" + calleraddress) + "_") + Call_Sequence)), DeleteEntry(((("Call_Start_End_" + calleraddress) + "_") + Call_Sequence))] | |
75 | 112 | else [IntegerEntry("Diff", pricediff), IntegerEntry("Total_Option_Call_Wins", TotalCallWin), StringEntry(((((((((((calleraddress + "_") + Call_Sequence) + "_") + getStartCounter) + "_") + getEndCounter) + "_") + getbtcpriceAtStartCounter) + "_") + getbtcpriceAtEndCounter), "Win"), StringEntry("message", "You Win!"), DeleteEntry(((("Call_" + calleraddress) + "_") + Call_Sequence)), DeleteEntry(((("Call_Start_End_" + calleraddress) + "_") + Call_Sequence))] | |
76 | 113 | } | |
77 | 114 | ||
78 | 115 | ||
79 | 116 | ||
80 | 117 | @Callable(i) | |
81 | 118 | func calldata (Counter) = { | |
82 | 119 | let getbtcdata = getStringValue(this, ("1m_btc_" + toString(Counter))) | |
83 | 120 | let swapLi = split(getbtcdata, "_") | |
84 | 121 | let price = swapLi[0] | |
85 | 122 | let time = swapLi[1] | |
86 | 123 | let blockheight = swapLi[2] | |
87 | 124 | let div = swapLi[3] | |
88 | 125 | [StringEntry("price", swapLi[0]), StringEntry("time", swapLi[1]), StringEntry("blockheight", swapLi[2]), StringEntry("div", swapLi[3])] | |
89 | 126 | } | |
90 | 127 | ||
91 | 128 | ||
129 | + | ||
130 | + | @Callable(i) | |
131 | + | func OpenOracle () = if ((i.caller != oracle_controller_address)) | |
132 | + | then throw((("This Address is not Authorized. Only " + toString(oracle_controller_address)) + " is Authorized Address to Sign it.")) | |
133 | + | else [StringEntry("oracle_status", "Open")] | |
134 | + | ||
135 | + | ||
92 | 136 | @Verifier(tx) | |
93 | 137 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
94 | 138 |
github/deemru/w8io/169f3d6 35.21 ms ◑