tx · AxaRVAcjymW1Vuh2jk6ZNnFbh75dAXxjAqirjJ5n4cHv

3NC9boevS259eTsMAkFAxCPorzK4Z9bpWje:  -0.01400000 Waves

2023.01.16 03:08 [2406759] smart account 3NC9boevS259eTsMAkFAxCPorzK4Z9bpWje > SELF 0.00000000 Waves

{ "type": 13, "id": "AxaRVAcjymW1Vuh2jk6ZNnFbh75dAXxjAqirjJ5n4cHv", "fee": 1400000, "feeAssetId": null, "timestamp": 1673827722868, "version": 2, "chainId": 84, "sender": "3NC9boevS259eTsMAkFAxCPorzK4Z9bpWje", "senderPublicKey": "515tSAyMUbAb8kKjcpGDpqALGfCgcwfWmWKKkcBKTcGB", "proofs": [ "58G7z9hUUhX14ZaPMggEQk72ZGtohzHo1xWAKcFvsG7xG42QpQoo1N3bhUSJ2H2frNKvbMjZxDnHnAYurLJ2jwBs" ], "script": "base64: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AAAADWNhbGxlcmFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAADcG10AwkAAAAAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAACQAAAgAAAAECAAAAOE5vIHBheW1lbnQgYXR0YWNoZWQsIFBsZWFzZSBBdHRhY2ggVG9rZW5zIGluIHBheW1lbnRbMV0uBAAAABJnZXRPcHRpb25DYWxsUHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABUNhbGxfBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAFfBQAAAA1DYWxsX1NlcXVlbmNlBAAAABpnZXRPcHRpb25DYWxsX1NlcXVlbmNlZGF0YQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPQ2FsbF9TdGFydF9FbmRfBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAFfBQAAAA1DYWxsX1NlcXVlbmNlBAAAABRzcGxpdFN0YXJ0RW5kQ291bnRlcgkABLUAAAACBQAAABpnZXRPcHRpb25DYWxsX1NlcXVlbmNlZGF0YQIAAAABXwQAAAAPZ2V0U3RhcnRDb3VudGVyCQABkQAAAAIFAAAAFHNwbGl0U3RhcnRFbmRDb3VudGVyAAAAAAAAAAAABAAAAA1nZXRFbmRDb3VudGVyCQABkQAAAAIFAAAAFHNwbGl0U3RhcnRFbmRDb3VudGVyAAAAAAAAAAABBAAAABhnZXRidGNkYXRhQXRTdGFydENvdW50ZXIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAHMW1fYnRjXwUAAAAPZ2V0U3RhcnRDb3VudGVyBAAAABtzcGxpdGJ0Y3ByaWNlQXRTdGFydENvdW50ZXIJAAS1AAAAAgUAAAAYZ2V0YnRjZGF0YUF0U3RhcnRDb3VudGVyAgAAAAFfBAAAABlnZXRidGNwcmljZUF0U3RhcnRDb3VudGVyCQABkQAAAAIFAAAAG3NwbGl0YnRjcHJpY2VBdFN0YXJ0Q291bnRlcgAAAAAAAAAAAAQAAAAWZ2V0YnRjZGF0YUF0RW5kQ291bnRlcgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAAcxbV9idGNfBQAAAA1nZXRFbmRDb3VudGVyBAAAABlzcGxpdGJ0Y3ByaWNlQXRFbmRDb3VudGVyCQAEtQAAAAIFAAAAFmdldGJ0Y2RhdGFBdEVuZENvdW50ZXICAAAAAV8EAAAAF2dldGJ0Y3ByaWNlQXRFbmRDb3VudGVyCQABkQAAAAIFAAAAGXNwbGl0YnRjcHJpY2VBdEVuZENvdW50ZXIAAAAAAAAAAAAEAAAACXByaWNlZGlmZgkAAGUAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEFAAAAF2dldGJ0Y3ByaWNlQXRFbmRDb3VudGVyCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEFAAAAGWdldGJ0Y3ByaWNlQXRTdGFydENvdW50ZXIDCQAAZgAAAAIAAAAAAAAAAAAFAAAACXByaWNlZGlmZgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAABRDb250cmFjdF9TdGFydF92YWx1ZQUAAAAPZ2V0U3RhcnRDb3VudGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAEkNvbnRyYWN0X0VuZF92YWx1ZQUAAAANZ2V0RW5kQ291bnRlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAAZCbGFuazEFAAAAGWdldGJ0Y3ByaWNlQXRTdGFydENvdW50ZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAGQmxhbmsyBQAAABdnZXRidGNwcmljZUF0RW5kQ291bnRlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAERGlmZgUAAAAJcHJpY2VkaWZmCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAB21lc3NhZ2UCAAAACVlvdSBsb3NlIQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9DYWxsX1N0YXJ0X0VuZF8FAAAADWNhbGxlcmFkZHJlc3MCAAAAAV8FAAAADUNhbGxfU2VxdWVuY2UJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAASZ2V0T3B0aW9uQ2FsbFByaWNlBQAAAANuaWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAUQ29udHJhY3RfU3RhcnRfdmFsdWUFAAAAD2dldFN0YXJ0Q291bnRlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAABJDb250cmFjdF9FbmRfdmFsdWUFAAAADWdldEVuZENvdW50ZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAGQmxhbmsxBQAAABlnZXRidGNwcmljZUF0U3RhcnRDb3VudGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAABkJsYW5rMgUAAAAXZ2V0YnRjcHJpY2VBdEVuZENvdW50ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAABERpZmYFAAAACXByaWNlZGlmZgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAAdtZXNzYWdlAgAAAAhZb3UgV2luIQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9DYWxsX1N0YXJ0X0VuZF8FAAAADWNhbGxlcmFkZHJlc3MCAAAAAV8FAAAADUNhbGxfU2VxdWVuY2UJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAASZ2V0T3B0aW9uQ2FsbFByaWNlBQAAAANuaWwAAAABaQEAAAAIY2FsbGRhdGEAAAABAAAAB0NvdW50ZXIEAAAACmdldGJ0Y2RhdGEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAHMW1fYnRjXwkAAaQAAAABBQAAAAdDb3VudGVyBAAAAAZzd2FwTGkJAAS1AAAAAgUAAAAKZ2V0YnRjZGF0YQIAAAABXwQAAAAFcHJpY2UJAAGRAAAAAgUAAAAGc3dhcExpAAAAAAAAAAAABAAAAAR0aW1lCQABkQAAAAIFAAAABnN3YXBMaQAAAAAAAAAAAQQAAAALYmxvY2toZWlnaHQJAAGRAAAAAgUAAAAGc3dhcExpAAAAAAAAAAACBAAAAANkaXYJAAGRAAAAAgUAAAAGc3dhcExpAAAAAAAAAAADCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAABXByaWNlCQABkQAAAAIFAAAABnN3YXBMaQAAAAAAAAAAAAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAAR0aW1lCQABkQAAAAIFAAAABnN3YXBMaQAAAAAAAAAAAQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAAtibG9ja2hlaWdodAkAAZEAAAACBQAAAAZzd2FwTGkAAAAAAAAAAAIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAADZGl2CQABkQAAAAIFAAAABnN3YXBMaQAAAAAAAAAAAwUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkpJeWm", "height": 2406759, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FJWaNotxw57taUt1h9L95MgRvkFVeQ7ZoDUvBZ5yGef9 Next: EEpxTwsQpFed8QEu9Ur8jouxMqsg23BWgqbiseVUv21b Diff:
OldNewDifferences
4141 @Callable(i)
4242 func ClaimCall (Call_Sequence) = {
4343 let calleraddress = toBase58String(i.caller.bytes)
44+ let pmt = if ((size(i.payments) == 1))
45+ then i.payments[0]
46+ else throw("No payment attached, Please Attach Tokens in payment[1].")
4447 let getOptionCallPrice = getStringValue(this, ((("Call_" + calleraddress) + "_") + Call_Sequence))
4548 let getOptionCall_Sequencedata = getStringValue(this, ((("Call_Start_End_" + calleraddress) + "_") + Call_Sequence))
4649 let splitStartEndCounter = split(getOptionCall_Sequencedata, "_")
5457 let getbtcpriceAtEndCounter = splitbtcpriceAtEndCounter[0]
5558 let pricediff = (parseIntValue(getbtcpriceAtEndCounter) - parseIntValue(getbtcpriceAtStartCounter))
5659 if ((0 > pricediff))
57- then throw("Price is less.")
58- else [StringEntry("Contract_Start_value", getStartCounter), StringEntry("Contract_End_value", getEndCounter), StringEntry("Blank1", getbtcpriceAtStartCounter), StringEntry("Blank2", getbtcpriceAtEndCounter), IntegerEntry("Diff", pricediff), DeleteEntry(((("Call_Start_End_" + calleraddress) + "_") + Call_Sequence)), DeleteEntry(getOptionCallPrice)]
60+ then [StringEntry("Contract_Start_value", getStartCounter), StringEntry("Contract_End_value", getEndCounter), StringEntry("Blank1", getbtcpriceAtStartCounter), StringEntry("Blank2", getbtcpriceAtEndCounter), IntegerEntry("Diff", pricediff), StringEntry("message", "You lose!"), DeleteEntry(((("Call_Start_End_" + calleraddress) + "_") + Call_Sequence)), DeleteEntry(getOptionCallPrice)]
61+ else [StringEntry("Contract_Start_value", getStartCounter), StringEntry("Contract_End_value", getEndCounter), StringEntry("Blank1", getbtcpriceAtStartCounter), StringEntry("Blank2", getbtcpriceAtEndCounter), IntegerEntry("Diff", pricediff), StringEntry("message", "You Win!"), DeleteEntry(((("Call_Start_End_" + calleraddress) + "_") + Call_Sequence)), DeleteEntry(getOptionCallPrice)]
5962 }
6063
6164
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44
55
66 @Callable(i)
77 func placeoptionCall () = {
88 let calleraddress = toBase58String(i.caller.bytes)
99 let read_oracle_status = getStringValue(this, "oracle_status")
1010 let read_OptionCounterID = getIntegerValue(this, "1m_contract_id")
1111 let getbtcdata = getStringValue(this, ("1m_btc_" + toString(read_OptionCounterID)))
1212 let swapLi = split(getbtcdata, "_")
1313 let price = swapLi[0]
1414 let block = parseIntValue(swapLi[2])
1515 let checkblockgap = (height - block)
1616 let OpionExpireCounter = 1
1717 let OptionExpireCounterID = (read_OptionCounterID + OpionExpireCounter)
1818 let PreviousCall = match getInteger(this, "Total_Calls") {
1919 case a: Int =>
2020 a
2121 case _ =>
2222 0
2323 }
2424 let TotalCall = (PreviousCall + 1)
2525 let PreviousUserCall = match getInteger(this, (calleraddress + "_Total_Calls")) {
2626 case a: Int =>
2727 a
2828 case _ =>
2929 0
3030 }
3131 let TotalUserCall = (PreviousUserCall + 1)
3232 if ((checkblockgap > 2))
3333 then throw("Something Wrong with Oracle or Height is not matched.")
3434 else if ((read_oracle_status == "Close"))
3535 then throw("Oracle is closed. Wait Until Oracle is Turned On.")
3636 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)]
3737 }
3838
3939
4040
4141 @Callable(i)
4242 func ClaimCall (Call_Sequence) = {
4343 let calleraddress = toBase58String(i.caller.bytes)
44+ let pmt = if ((size(i.payments) == 1))
45+ then i.payments[0]
46+ else throw("No payment attached, Please Attach Tokens in payment[1].")
4447 let getOptionCallPrice = getStringValue(this, ((("Call_" + calleraddress) + "_") + Call_Sequence))
4548 let getOptionCall_Sequencedata = getStringValue(this, ((("Call_Start_End_" + calleraddress) + "_") + Call_Sequence))
4649 let splitStartEndCounter = split(getOptionCall_Sequencedata, "_")
4750 let getStartCounter = splitStartEndCounter[0]
4851 let getEndCounter = splitStartEndCounter[1]
4952 let getbtcdataAtStartCounter = getStringValue(this, ("1m_btc_" + getStartCounter))
5053 let splitbtcpriceAtStartCounter = split(getbtcdataAtStartCounter, "_")
5154 let getbtcpriceAtStartCounter = splitbtcpriceAtStartCounter[0]
5255 let getbtcdataAtEndCounter = getStringValue(this, ("1m_btc_" + getEndCounter))
5356 let splitbtcpriceAtEndCounter = split(getbtcdataAtEndCounter, "_")
5457 let getbtcpriceAtEndCounter = splitbtcpriceAtEndCounter[0]
5558 let pricediff = (parseIntValue(getbtcpriceAtEndCounter) - parseIntValue(getbtcpriceAtStartCounter))
5659 if ((0 > pricediff))
57- then throw("Price is less.")
58- else [StringEntry("Contract_Start_value", getStartCounter), StringEntry("Contract_End_value", getEndCounter), StringEntry("Blank1", getbtcpriceAtStartCounter), StringEntry("Blank2", getbtcpriceAtEndCounter), IntegerEntry("Diff", pricediff), DeleteEntry(((("Call_Start_End_" + calleraddress) + "_") + Call_Sequence)), DeleteEntry(getOptionCallPrice)]
60+ then [StringEntry("Contract_Start_value", getStartCounter), StringEntry("Contract_End_value", getEndCounter), StringEntry("Blank1", getbtcpriceAtStartCounter), StringEntry("Blank2", getbtcpriceAtEndCounter), IntegerEntry("Diff", pricediff), StringEntry("message", "You lose!"), DeleteEntry(((("Call_Start_End_" + calleraddress) + "_") + Call_Sequence)), DeleteEntry(getOptionCallPrice)]
61+ else [StringEntry("Contract_Start_value", getStartCounter), StringEntry("Contract_End_value", getEndCounter), StringEntry("Blank1", getbtcpriceAtStartCounter), StringEntry("Blank2", getbtcpriceAtEndCounter), IntegerEntry("Diff", pricediff), StringEntry("message", "You Win!"), DeleteEntry(((("Call_Start_End_" + calleraddress) + "_") + Call_Sequence)), DeleteEntry(getOptionCallPrice)]
5962 }
6063
6164
6265
6366 @Callable(i)
6467 func calldata (Counter) = {
6568 let getbtcdata = getStringValue(this, ("1m_btc_" + toString(Counter)))
6669 let swapLi = split(getbtcdata, "_")
6770 let price = swapLi[0]
6871 let time = swapLi[1]
6972 let blockheight = swapLi[2]
7073 let div = swapLi[3]
7174 [StringEntry("price", swapLi[0]), StringEntry("time", swapLi[1]), StringEntry("blockheight", swapLi[2]), StringEntry("div", swapLi[3])]
7275 }
7376
7477
7578 @Verifier(tx)
7679 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
7780

github/deemru/w8io/169f3d6 
32.67 ms