tx · J9GvyLNheYhhCsCsq4trqrgHB82LHBWuGJVjramMYWy2

3NBCBtA1F4m6tBir7JX2dUtDNt4ujmHH5NA:  -0.02000000 Waves

2020.04.28 14:48 [974548] smart account 3NBCBtA1F4m6tBir7JX2dUtDNt4ujmHH5NA > SELF 0.00000000 Waves

{ "type": 13, "id": "J9GvyLNheYhhCsCsq4trqrgHB82LHBWuGJVjramMYWy2", "fee": 2000000, "feeAssetId": null, "timestamp": 1588074497480, "version": 1, "sender": "3NBCBtA1F4m6tBir7JX2dUtDNt4ujmHH5NA", "senderPublicKey": "Aj2RvtYHTSnDfcwYBCD5ZEwG3V483xJe2L1n13KPsi3a", "proofs": [ "Z4fH4KMKME9QSveaSj3ZwS4uy188rPEySyqZfZwjtvaKibR5QnJoQb2W3pbAmupy7UtkpvLfUY1VKPeXY5dwvHC" ], "script": "base64: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", "chainId": 84, "height": 974548, "spentComplexity": 0 } View: original | compacted Prev: BGbSQfFxuGw59qX4TyvxbV69QriN72tUHMCqrhQuYohN Next: 2FRNtMB5YtK74yqrXGCDE5PPZjGhbbTCR9yEQWwFkmHA Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-func decodeU8 (data,offset) = if ((size(data) == 0))
5- then throw("decode u8 error, data is an empty bytes")
4+func decodeInt8 (data,offset) = if ((1 > size(data)))
5+ 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 [toInt((base58'1111111' + take(drop(data, offset), 1)), 0), (offset + 1)]
99
1010
11-func decodeU16 (data,offset) = {
12- let decoded1 = decodeU8(data, offset)
13- let decoded2 = decodeU8(data, decoded1[1])
14-[(decoded1[0] + (decoded2[0] * 256)), decoded2[1]]
15- }
11+func decodeInt16 (data,offset) = if ((2 > size(data)))
12+ then throw("decode u16 error, data must be at least 2 bytes")
13+ else if ((offset > size(data)))
14+ then throw("decode u16 error, decoding is finish")
15+ else [toInt((base58'111111' + take(drop(data, offset), 1)), 0), (offset + 2)]
1616
1717
18-func decodeU32 (data,offset) = {
19- let decoded1 = decodeU16(data, offset)
20- let decoded2 = decodeU16(data, decoded1[1])
21-[(decoded1[0] + ((decoded2[0] * 256) * 256)), decoded2[1]]
22- }
18+func decodeInt32 (data,offset) = if ((4 > size(data)))
19+ then throw("decode u32 error, data must be at least 4 bytes")
20+ else if ((offset > size(data)))
21+ then throw("decode u32 error, decoding is finish")
22+ else [toInt((base58'1111' + take(drop(data, offset), 1)), 0), (offset + 4)]
2323
2424
25-func decodeU64 (data,offset) = {
26- let decoded1 = decodeU32(data, offset)
27- let decoded2 = decodeU32(data, decoded1[1])
28-[(decoded1[0] + ((((decoded2[0] * 256) * 256) * 256) * 256)), decoded2[1]]
29- }
25+func decodeInt64 (data,offset) = if ((8 > size(data)))
26+ then throw("decode u32 error, data must be at least 8 bytes")
27+ else if ((offset > size(data)))
28+ then throw("decode u32 error, decoding is finish")
29+ else [toInt(take(drop(data, offset), 1), 0), (offset + 8)]
3030
3131
3232 func decodeBool (data,offset) = {
33- let decoded1 = decodeU8(data, offset)
33+ let decoded1 = decodeInt8(data, offset)
3434 [(decoded1[0] != 0), decoded1[1]]
3535 }
3636
3737
3838 func decodeBytes (data,offset) = {
39- let decoded1 = decodeU32(data, offset)
39+ let decoded1 = decodeInt32(data, offset)
4040 let bytesSize = decoded1[0]
4141 let nextOffset = decoded1[1]
4242 [take(drop(data, nextOffset), bytesSize), (nextOffset + bytesSize)]
4444
4545
4646 func decodeString (data,offset) = {
47- let decoded1 = decodeU32(data, offset)
47+ let decoded1 = decodeInt32(data, offset)
4848 let bytesSize = decoded1[0]
4949 let nextOffset = decoded1[1]
5050 [toUtf8String(take(drop(data, nextOffset), bytesSize)), (nextOffset + bytesSize)]
5252
5353
5454 @Callable(contextObj)
55-func testDecodeString (data) = {
55+func testDecodeInt8 (data) = {
5656 let offset = 0
57- let decoded = decodeString(data, offset)
58- WriteSet([DataEntry("string", decoded[0])])
57+ let x1 = decodeInt8(data, offset)
58+ WriteSet([DataEntry("string", x1[0])])
5959 }
6060
6161
6262
6363 @Callable(contextObj)
64-func testDecodeU64 (data) = {
64+func testDecodeInt64 (data) = {
6565 let offset = 0
66- let decoded = decodeU64(data, offset)
66+ let decoded = decodeInt64(data, offset)
6767 WriteSet([DataEntry("u64", decoded[0])])
6868 }
6969
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-func decodeU8 (data,offset) = if ((size(data) == 0))
5- then throw("decode u8 error, data is an empty bytes")
4+func decodeInt8 (data,offset) = if ((1 > size(data)))
5+ 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 [toInt((base58'1111111' + take(drop(data, offset), 1)), 0), (offset + 1)]
99
1010
11-func decodeU16 (data,offset) = {
12- let decoded1 = decodeU8(data, offset)
13- let decoded2 = decodeU8(data, decoded1[1])
14-[(decoded1[0] + (decoded2[0] * 256)), decoded2[1]]
15- }
11+func decodeInt16 (data,offset) = if ((2 > size(data)))
12+ then throw("decode u16 error, data must be at least 2 bytes")
13+ else if ((offset > size(data)))
14+ then throw("decode u16 error, decoding is finish")
15+ else [toInt((base58'111111' + take(drop(data, offset), 1)), 0), (offset + 2)]
1616
1717
18-func decodeU32 (data,offset) = {
19- let decoded1 = decodeU16(data, offset)
20- let decoded2 = decodeU16(data, decoded1[1])
21-[(decoded1[0] + ((decoded2[0] * 256) * 256)), decoded2[1]]
22- }
18+func decodeInt32 (data,offset) = if ((4 > size(data)))
19+ then throw("decode u32 error, data must be at least 4 bytes")
20+ else if ((offset > size(data)))
21+ then throw("decode u32 error, decoding is finish")
22+ else [toInt((base58'1111' + take(drop(data, offset), 1)), 0), (offset + 4)]
2323
2424
25-func decodeU64 (data,offset) = {
26- let decoded1 = decodeU32(data, offset)
27- let decoded2 = decodeU32(data, decoded1[1])
28-[(decoded1[0] + ((((decoded2[0] * 256) * 256) * 256) * 256)), decoded2[1]]
29- }
25+func decodeInt64 (data,offset) = if ((8 > size(data)))
26+ then throw("decode u32 error, data must be at least 8 bytes")
27+ else if ((offset > size(data)))
28+ then throw("decode u32 error, decoding is finish")
29+ else [toInt(take(drop(data, offset), 1), 0), (offset + 8)]
3030
3131
3232 func decodeBool (data,offset) = {
33- let decoded1 = decodeU8(data, offset)
33+ let decoded1 = decodeInt8(data, offset)
3434 [(decoded1[0] != 0), decoded1[1]]
3535 }
3636
3737
3838 func decodeBytes (data,offset) = {
39- let decoded1 = decodeU32(data, offset)
39+ let decoded1 = decodeInt32(data, offset)
4040 let bytesSize = decoded1[0]
4141 let nextOffset = decoded1[1]
4242 [take(drop(data, nextOffset), bytesSize), (nextOffset + bytesSize)]
4343 }
4444
4545
4646 func decodeString (data,offset) = {
47- let decoded1 = decodeU32(data, offset)
47+ let decoded1 = decodeInt32(data, offset)
4848 let bytesSize = decoded1[0]
4949 let nextOffset = decoded1[1]
5050 [toUtf8String(take(drop(data, nextOffset), bytesSize)), (nextOffset + bytesSize)]
5151 }
5252
5353
5454 @Callable(contextObj)
55-func testDecodeString (data) = {
55+func testDecodeInt8 (data) = {
5656 let offset = 0
57- let decoded = decodeString(data, offset)
58- WriteSet([DataEntry("string", decoded[0])])
57+ let x1 = decodeInt8(data, offset)
58+ WriteSet([DataEntry("string", x1[0])])
5959 }
6060
6161
6262
6363 @Callable(contextObj)
64-func testDecodeU64 (data) = {
64+func testDecodeInt64 (data) = {
6565 let offset = 0
66- let decoded = decodeU64(data, offset)
66+ let decoded = decodeInt64(data, offset)
6767 WriteSet([DataEntry("u64", decoded[0])])
6868 }
6969
7070
7171
7272 @Callable(contextObj)
7373 func testIntFromBytes (data) = WriteSet([DataEntry("bytesToInt", toInt(data, 0))])
7474
7575
7676
7777 @Callable(contextObj)
7878 func testStringFromBytes (data) = WriteSet([DataEntry("bytesToString", toUtf8String(data))])
7979
8080
8181
8282 @Callable(contextObj)
8383 func setValidator (validator) = if ((contextObj.caller == this))
8484 then WriteSet([DataEntry("validator", validator)])
8585 else throw("Only owner can use this function.")
8686
8787
8888
8989 @Callable(contextObj)
9090 func reportData (data) = {
9191 let validator = getBinary(this, "validator")
9292 if ((contextObj.caller.bytes == validator))
9393 then WriteSet([DataEntry("data_reported", data)])
9494 else throw("Only validator can use this function.")
9595 }
9696
9797

github/deemru/w8io/3ef1775 
57.71 ms