tx · E3xoVdYoerPZsX7snyFKhtxnzaAUpDVyttk5qBRQdbw5 3MvTsZLYhU4bGijfdULLDAUEiZVryxJVQPJ: -0.01400000 Waves 2023.01.15 18:51 [2406268] smart account 3MvTsZLYhU4bGijfdULLDAUEiZVryxJVQPJ > SELF 0.00000000 Waves
{ "type": 13, "id": "E3xoVdYoerPZsX7snyFKhtxnzaAUpDVyttk5qBRQdbw5", "fee": 1400000, "feeAssetId": null, "timestamp": 1673797865178, "version": 2, "chainId": 84, "sender": "3MvTsZLYhU4bGijfdULLDAUEiZVryxJVQPJ", "senderPublicKey": "6hSe4di8vdVexXUoSJQ1unZB3n287fgHNBP7PberpTez", "proofs": [ "a9TannizGKJHWDPLLhXLPnyJniZpks3uSmkZ8pn5Ezfx4uGzGfUcDwLmJu6JwCkPXBe9EhM5PCj8jVjJhpySDAD" ], "script": "base64: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BWJ5dGVzBAAAABJnZXRPcHRpb25DYWxsUHJpY2UJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABUNhbGxfBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAFfCQABpAAAAAEFAAAADUNhbGxfU2VxdWVuY2UEAAAAGmdldE9wdGlvbkNhbGxfU2VxdWVuY2VkYXRhCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9DYWxsX1N0YXJ0X0VuZF8FAAAADWNhbGxlcmFkZHJlc3MCAAAAAV8JAAGkAAAAAQUAAAANQ2FsbF9TZXF1ZW5jZQQAAAAUc3BsaXRTdGFydEVuZENvdW50ZXIJAAS1AAAAAgUAAAAaZ2V0T3B0aW9uQ2FsbF9TZXF1ZW5jZWRhdGECAAAAAV8EAAAAD2dldFN0YXJ0Q291bnRlcgkAAZEAAAACBQAAABRzcGxpdFN0YXJ0RW5kQ291bnRlcgAAAAAAAAAAAAQAAAANZ2V0RW5kQ291bnRlcgkAAZEAAAACBQAAABRzcGxpdFN0YXJ0RW5kQ291bnRlcgAAAAAAAAAAAQQAAAAKZ2V0YnRjZGF0YQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAAcxbV9idGNfBQAAAA9nZXRTdGFydENvdW50ZXIEAAAAC2dldGJ0Y2RhdGExCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAICAAAABzFtX2J0Y18FAAAADWdldEVuZENvdW50ZXIEAAAAEVN0YXJ0RW5kUHJpY2VEaWZmCQAAZQAAAAIFAAAACmdldGJ0Y2RhdGEFAAAAC2dldGJ0Y2RhdGExAwkAAGYAAAACBQAAABFTdGFydEVuZFByaWNlRGlmZgAAAAAAAAAAAAkAAAIAAAABAgAAABVQcmljZSBpcyBub3QgUG9zaXRpdmUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAALU3RhcnRfdmFsdWUFAAAAD2dldFN0YXJ0Q291bnRlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAKUHJpY2VfRGlmZgUAAAARU3RhcnRFbmRQcmljZURpZmYJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPQ2FsbF9TdGFydF9FbmRfBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAFfCQABpAAAAAEFAAAADUNhbGxfU2VxdWVuY2UJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAASZ2V0T3B0aW9uQ2FsbFByaWNlBQAAAANuaWwAAAABaQEAAAAIY2FsbGRhdGEAAAABAAAAB0NvdW50ZXIEAAAACmdldGJ0Y2RhdGEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEBAAAAIFSmqDjQEwUFYx2RE73vgJ2W8h5GJXBfFKamq71Ur7lLCQABLAAAAAICAAAABzFtX2J0Y18JAAGkAAAAAQUAAAAHQ291bnRlcgQAAAAGc3dhcExpCQAEtQAAAAIFAAAACmdldGJ0Y2RhdGECAAAAAV8EAAAABXByaWNlCQABkQAAAAIFAAAABnN3YXBMaQAAAAAAAAAAAAQAAAAEdGltZQkAAZEAAAACBQAAAAZzd2FwTGkAAAAAAAAAAAEEAAAAC2Jsb2NraGVpZ2h0CQABkQAAAAIFAAAABnN3YXBMaQAAAAAAAAAAAgQAAAADZGl2CQABkQAAAAIFAAAABnN3YXBMaQAAAAAAAAAAAwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAAVwcmljZQkAAZEAAAACBQAAAAZzd2FwTGkAAAAAAAAAAAAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAEdGltZQkAAZEAAAACBQAAAAZzd2FwTGkAAAAAAAAAAAEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAALYmxvY2toZWlnaHQJAAGRAAAAAgUAAAAGc3dhcExpAAAAAAAAAAACCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAA2RpdgkAAZEAAAACBQAAAAZzd2FwTGkAAAAAAAAAAAMFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5KjoYcw==", "height": 2406268, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DyWgXsgoUWzSifRFispC6Bu4RT59qs7bqBNjKSJtmMUW Next: none Diff:
Old | New | Differences | |
---|---|---|---|
45 | 45 | let splitStartEndCounter = split(getOptionCall_Sequencedata, "_") | |
46 | 46 | let getStartCounter = splitStartEndCounter[0] | |
47 | 47 | let getEndCounter = splitStartEndCounter[1] | |
48 | - | let getbtcdata = getStringValue(addressFromPublicKey(base58'6hSe4di8vdVexXUoSJQ1unZB3n287fgHNBP7PberpTez'), ("1m_btc_" + getStartCounter)) | |
49 | - | let getbtcdata1 = getStringValue(addressFromPublicKey(base58'6hSe4di8vdVexXUoSJQ1unZB3n287fgHNBP7PberpTez'), ("1m_btc_" + getEndCounter)) | |
50 | - | let StartEndPriceDiff = (parseIntValue(getbtcdata) - parseIntValue(getbtcdata1)) | |
51 | - | [StringEntry("Start_value", getStartCounter), IntegerEntry("Price_Diff", StartEndPriceDiff), DeleteEntry(((("Call_Start_End_" + calleraddress) + "_") + toString(Call_Sequence))), DeleteEntry(getOptionCallPrice)] | |
48 | + | let getbtcdata = getIntegerValue(this, ("1m_btc_" + getStartCounter)) | |
49 | + | let getbtcdata1 = getIntegerValue(this, ("1m_btc_" + getEndCounter)) | |
50 | + | let StartEndPriceDiff = (getbtcdata - getbtcdata1) | |
51 | + | if ((StartEndPriceDiff > 0)) | |
52 | + | then throw("Price is not Positive") | |
53 | + | else [StringEntry("Start_value", getStartCounter), IntegerEntry("Price_Diff", StartEndPriceDiff), DeleteEntry(((("Call_Start_End_" + calleraddress) + "_") + toString(Call_Sequence))), DeleteEntry(getOptionCallPrice)] | |
52 | 54 | } | |
53 | 55 | ||
54 | 56 |
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 | 7 | func placeoptionCall () = { | |
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 | 14 | let block = parseIntValue(swapLi[2]) | |
15 | 15 | let checkblockgap = (height - block) | |
16 | 16 | let OptionExpireCounterID = (read_OptionCounterID + 15) | |
17 | 17 | let PreviousCall = match getInteger(this, "Total_Calls") { | |
18 | 18 | case a: Int => | |
19 | 19 | a | |
20 | 20 | case _ => | |
21 | 21 | 0 | |
22 | 22 | } | |
23 | 23 | let TotalCall = (PreviousCall + 1) | |
24 | 24 | let PreviousUserCall = match getInteger(this, (calleraddress + "_Total_Calls")) { | |
25 | 25 | case a: Int => | |
26 | 26 | a | |
27 | 27 | case _ => | |
28 | 28 | 0 | |
29 | 29 | } | |
30 | 30 | let TotalUserCall = (PreviousUserCall + 1) | |
31 | 31 | if ((checkblockgap > 2)) | |
32 | 32 | then throw("Something Wrong with Oracle or Height is not matched.") | |
33 | 33 | else if ((read_oracle_status == "Close")) | |
34 | 34 | then throw("Oracle is closed. Wait Until Oracle is Turned On.") | |
35 | 35 | 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)] | |
36 | 36 | } | |
37 | 37 | ||
38 | 38 | ||
39 | 39 | ||
40 | 40 | @Callable(i) | |
41 | 41 | func ClaimCall (Call_Sequence) = { | |
42 | 42 | let calleraddress = toBase58String(i.caller.bytes) | |
43 | 43 | let getOptionCallPrice = ((("Call_" + calleraddress) + "_") + toString(Call_Sequence)) | |
44 | 44 | let getOptionCall_Sequencedata = getStringValue(this, ((("Call_Start_End_" + calleraddress) + "_") + toString(Call_Sequence))) | |
45 | 45 | let splitStartEndCounter = split(getOptionCall_Sequencedata, "_") | |
46 | 46 | let getStartCounter = splitStartEndCounter[0] | |
47 | 47 | let getEndCounter = splitStartEndCounter[1] | |
48 | - | let getbtcdata = getStringValue(addressFromPublicKey(base58'6hSe4di8vdVexXUoSJQ1unZB3n287fgHNBP7PberpTez'), ("1m_btc_" + getStartCounter)) | |
49 | - | let getbtcdata1 = getStringValue(addressFromPublicKey(base58'6hSe4di8vdVexXUoSJQ1unZB3n287fgHNBP7PberpTez'), ("1m_btc_" + getEndCounter)) | |
50 | - | let StartEndPriceDiff = (parseIntValue(getbtcdata) - parseIntValue(getbtcdata1)) | |
51 | - | [StringEntry("Start_value", getStartCounter), IntegerEntry("Price_Diff", StartEndPriceDiff), DeleteEntry(((("Call_Start_End_" + calleraddress) + "_") + toString(Call_Sequence))), DeleteEntry(getOptionCallPrice)] | |
48 | + | let getbtcdata = getIntegerValue(this, ("1m_btc_" + getStartCounter)) | |
49 | + | let getbtcdata1 = getIntegerValue(this, ("1m_btc_" + getEndCounter)) | |
50 | + | let StartEndPriceDiff = (getbtcdata - getbtcdata1) | |
51 | + | if ((StartEndPriceDiff > 0)) | |
52 | + | then throw("Price is not Positive") | |
53 | + | else [StringEntry("Start_value", getStartCounter), IntegerEntry("Price_Diff", StartEndPriceDiff), DeleteEntry(((("Call_Start_End_" + calleraddress) + "_") + toString(Call_Sequence))), DeleteEntry(getOptionCallPrice)] | |
52 | 54 | } | |
53 | 55 | ||
54 | 56 | ||
55 | 57 | ||
56 | 58 | @Callable(i) | |
57 | 59 | func calldata (Counter) = { | |
58 | 60 | let getbtcdata = getStringValue(addressFromPublicKey(base58'6hSe4di8vdVexXUoSJQ1unZB3n287fgHNBP7PberpTez'), ("1m_btc_" + toString(Counter))) | |
59 | 61 | let swapLi = split(getbtcdata, "_") | |
60 | 62 | let price = swapLi[0] | |
61 | 63 | let time = swapLi[1] | |
62 | 64 | let blockheight = swapLi[2] | |
63 | 65 | let div = swapLi[3] | |
64 | 66 | [StringEntry("price", swapLi[0]), StringEntry("time", swapLi[1]), StringEntry("blockheight", swapLi[2]), StringEntry("div", swapLi[3])] | |
65 | 67 | } | |
66 | 68 | ||
67 | 69 | ||
68 | 70 | @Verifier(tx) | |
69 | 71 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
70 | 72 |
github/deemru/w8io/169f3d6 30.28 ms ◑