tx · EDjWQnzhvgh4neYao5rqTNbgrmzcPJ9WCmyutUCgCdgK

3N54eKW5ZucDaRaGVUfzX8xRXv6Ve8M71tM:  -0.02000000 Waves

2020.07.03 17:57 [1071048] smart account 3N54eKW5ZucDaRaGVUfzX8xRXv6Ve8M71tM > SELF 0.00000000 Waves

{ "type": 13, "id": "EDjWQnzhvgh4neYao5rqTNbgrmzcPJ9WCmyutUCgCdgK", "fee": 2000000, "feeAssetId": null, "timestamp": 1593788280713, "version": 1, "sender": "3N54eKW5ZucDaRaGVUfzX8xRXv6Ve8M71tM", "senderPublicKey": "FmnQ1LwTnauTS2BSrZivE1nSF1A9MY9hyYB72pyh5hw9", "proofs": [ "3Uhiz4A3a8tG2anFC2Vbfh5bBCYPVFcTfMKS7UZ7cHxXyfXctaTdrJ9K3TfA7dJzoFsU6X5J5cfrREzW1HiTQDaD" ], "script": "base64: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", "chainId": 84, "height": 1071048, "spentComplexity": 0 } View: original | compacted Prev: bY23fk94CL4uyAjaw22xs8a9RbnvhofVhMewwQmmkzr Next: DG5AQhg63em22Z8YhnbC5YSiNHmdqcoz4hN3GJaWhzgi Diff:
OldNewDifferences
160160 else {
161161 let response = getAsByteVector(res7)
162162 let price = decodeInt64(response, 0)
163- WriteSet([DataEntry((symbol + "/latest_update"), res5[0]), DataEntry((symbol + "/value"), price[0])])
163+ WriteSet([DataEntry((symbol + "/latest_update_time"), res5[0]), DataEntry((symbol + "/value"), price[0]), DataEntry((symbol + "/latest_block"), height)])
164164 }
165165 }
166166
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func decodeInt8 (data,offset) = if ((1 > size(data)))
55 then throw("decode u8 error, data must be at least 1 byte")
66 else if ((offset > size(data)))
77 then throw("decode u8 error, decoding is finish")
88 else {
99 let x0 = take(drop(data, offset), 1)
1010 let x1 = toInt((base58'1111111' + x0), 0)
1111 [toInt((base58'1111111' + x0), 0), (offset + 1)]
1212 }
1313
1414
1515 func decodeInt16 (data,offset) = if ((2 > size(data)))
1616 then throw("decode u16 error, data must be at least 2 bytes")
1717 else if ((offset > size(data)))
1818 then throw("decode u16 error, decoding is finish")
1919 else {
2020 let x0 = drop(data, offset)
2121 let x1 = take(x0, 2)
2222 [toInt((base58'111111' + x1), 0), (offset + 2)]
2323 }
2424
2525
2626 func decodeInt32 (data,offset) = if ((4 > size(data)))
2727 then throw("decode u32 error, data must be at least 4 bytes")
2828 else if ((offset > size(data)))
2929 then throw("decode u32 error, decoding is finish")
3030 else {
3131 let x0 = drop(data, offset)
3232 let x1 = take(x0, 4)
3333 [toInt((base58'1111' + x1), 0), (offset + 4)]
3434 }
3535
3636
3737 func decodeInt64 (data,offset) = if ((8 > size(data)))
3838 then throw("decode u32 error, data must be at least 8 bytes")
3939 else if ((offset > size(data)))
4040 then throw("decode u32 error, decoding is finish")
4141 else {
4242 let x0 = drop(data, offset)
4343 let x1 = take(x0, 8)
4444 [toInt(x1, 0), (offset + 8)]
4545 }
4646
4747
4848 func decodeBool (data,offset) = {
4949 let decoded1 = decodeInt8(data, offset)
5050 [DataEntry("bool", (decoded1[0] != 0)), DataEntry("int", decoded1[1])]
5151 }
5252
5353
5454 func decodeBytes32 (data,offset) = if ((32 > size(data)))
5555 then throw("decode bytes32 error, data must be at least 32 bytes")
5656 else [DataEntry("byte_vector", take(drop(data, offset), 32)), DataEntry("int", (offset + 32))]
5757
5858
5959 func decodeBytes64 (data,offset) = if ((64 > size(data)))
6060 then throw("decode bytes64 error, data must be at least 64 bytes")
6161 else [DataEntry("byte_vector", take(drop(data, offset), 64)), DataEntry("int", (offset + 64))]
6262
6363
6464 func decodeBytes65 (data,offset) = if ((65 > size(data)))
6565 then throw("decode bytes65 error, data must be at least 65 bytes")
6666 else [DataEntry("byte_vector", take(drop(data, offset), 65)), DataEntry("int", (offset + 65))]
6767
6868
6969 func decodeBytes (data,offset) = {
7070 let decoded1 = decodeInt32(data, offset)
7171 let bytesSize = decoded1[0]
7272 let nextOffset = decoded1[1]
7373 [DataEntry("byte_vector", take(drop(data, nextOffset), bytesSize)), DataEntry("int", (nextOffset + bytesSize))]
7474 }
7575
7676
7777 func decodeString (data,offset) = {
7878 let decoded1 = decodeInt32(data, offset)
7979 let bytesSize = decoded1[0]
8080 let nextOffset = decoded1[1]
8181 [DataEntry("string", toUtf8String(take(drop(data, nextOffset), bytesSize))), DataEntry("int", (nextOffset + bytesSize))]
8282 }
8383
8484
8585 func getAsBool (tuple) = match tuple[0].value {
8686 case b: Boolean =>
8787 b
8888 case _ =>
8989 throw("not a Boolean")
9090 }
9191
9292
9393 func getAsByteVector (tuple) = match tuple[0].value {
9494 case bv: ByteVector =>
9595 bv
9696 case _ =>
9797 throw("not a ByteVector")
9898 }
9999
100100
101101 func getAsString (tuple) = match tuple[0].value {
102102 case s: String =>
103103 s
104104 case _ =>
105105 throw("not a String")
106106 }
107107
108108
109109 func getOffset (tuple) = match tuple[1].value {
110110 case i: Int =>
111111 i
112112 case _ =>
113113 throw("not a Int")
114114 }
115115
116116
117117 func getLatestUpdateTimeOfSymbol (symbol) = match getInteger(this, (symbol + "/latest_update")) {
118118 case i: Int =>
119119 i
120120 case _ =>
121121 0
122122 }
123123
124124
125125 @Callable(contextObj)
126126 func relayAndVerify (data) = if ((contextObj.caller != this))
127127 then throw("Unauthorized caller")
128128 else {
129129 let req1 = decodeString(data, 0)
130130 let req2 = decodeInt64(data, getOffset(req1))
131131 let req3 = decodeBytes(data, req2[1])
132132 let req4 = decodeInt64(data, getOffset(req3))
133133 let req5 = decodeInt64(data, req4[1])
134134 let res1 = decodeString(data, req5[1])
135135 let res2 = decodeInt64(data, getOffset(res1))
136136 let res3 = decodeInt64(data, res2[1])
137137 let res4 = decodeInt64(data, res3[1])
138138 let res5 = decodeInt64(data, res4[1])
139139 let res6 = decodeInt8(data, res5[1])
140140 let res7 = decodeBytes(data, res6[1])
141141 let calldata = getAsByteVector(req3)
142142 let c1 = decodeString(calldata, 0)
143143 let c2 = decodeInt64(calldata, getOffset(c1))
144144 let symbol = getAsString(c1)
145145 let multiplier = c2[0]
146146 if ((req2[0] != 1))
147147 then throw("Invalid oracle script")
148148 else if (if (if ((symbol != "BTC"))
149149 then (symbol != "WAVES")
150150 else false)
151151 then (symbol != "ETH")
152152 else false)
153153 then throw("Invalid symbol")
154154 else if ((multiplier != 1000000))
155155 then throw("Invalid multiplier")
156156 else if ((getLatestUpdateTimeOfSymbol(symbol) >= res5[0]))
157157 then throw("Not newer than the latest")
158158 else if ((res6[0] != 1))
159159 then throw("Invalid resolve status")
160160 else {
161161 let response = getAsByteVector(res7)
162162 let price = decodeInt64(response, 0)
163- WriteSet([DataEntry((symbol + "/latest_update"), res5[0]), DataEntry((symbol + "/value"), price[0])])
163+ WriteSet([DataEntry((symbol + "/latest_update_time"), res5[0]), DataEntry((symbol + "/value"), price[0]), DataEntry((symbol + "/latest_block"), height)])
164164 }
165165 }
166166
167167

github/deemru/w8io/873ac7e 
28.82 ms