tx · Ep5oT7e3mkL2KmRLZUbLZu1JZdodXjej6kEzmh6BLrdC

3NBCBtA1F4m6tBir7JX2dUtDNt4ujmHH5NA:  -0.02000000 Waves

2020.04.28 13:37 [974477] smart account 3NBCBtA1F4m6tBir7JX2dUtDNt4ujmHH5NA > SELF 0.00000000 Waves

{ "type": 13, "id": "Ep5oT7e3mkL2KmRLZUbLZu1JZdodXjej6kEzmh6BLrdC", "fee": 2000000, "feeAssetId": null, "timestamp": 1588070268517, "version": 1, "sender": "3NBCBtA1F4m6tBir7JX2dUtDNt4ujmHH5NA", "senderPublicKey": "Aj2RvtYHTSnDfcwYBCD5ZEwG3V483xJe2L1n13KPsi3a", "proofs": [ "3wvWQbxTFmTzAYzbBotgGpwqan7YU1czAzmHz4ijm8Ldzbhm4UsoJyxjdbxwyWjSdg4BapYdWJhFtzBfzPwzbuK5" ], "script": "base64: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", "chainId": 84, "height": 974477, "spentComplexity": 0 } View: original | compacted Prev: DVKEWER1oHsov4wmUvd8whDHjfxzfosCHUnwaZu1qNEB Next: BGbSQfFxuGw59qX4TyvxbV69QriN72tUHMCqrhQuYohN Diff:
OldNewDifferences
4343 }
4444
4545
46+func decodeString (data,offset) = {
47+ let decoded1 = decodeU32(data, offset)
48+ let bytesSize = decoded1[0]
49+ let nextOffset = decoded1[1]
50+[toUtf8String(take(drop(data, nextOffset), bytesSize)), (nextOffset + bytesSize)]
51+ }
52+
53+
4654 @Callable(contextObj)
47-func testDecodeBytes (data) = {
55+func testDecodeString (data) = {
4856 let offset = 0
4957 let decoded = decodeBytes(data, offset)
50- WriteSet([DataEntry("bytes", decoded[0])])
58+ WriteSet([DataEntry("string", decoded[0])])
5159 }
5260
5361
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func decodeU8 (data,offset) = if ((size(data) == 0))
55 then throw("decode u8 error, data is an empty bytes")
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
1111 func decodeU16 (data,offset) = {
1212 let decoded1 = decodeU8(data, offset)
1313 let decoded2 = decodeU8(data, decoded1[1])
1414 [(decoded1[0] + (decoded2[0] * 256)), decoded2[1]]
1515 }
1616
1717
1818 func decodeU32 (data,offset) = {
1919 let decoded1 = decodeU16(data, offset)
2020 let decoded2 = decodeU16(data, decoded1[1])
2121 [(decoded1[0] + ((decoded2[0] * 256) * 256)), decoded2[1]]
2222 }
2323
2424
2525 func decodeU64 (data,offset) = {
2626 let decoded1 = decodeU32(data, offset)
2727 let decoded2 = decodeU32(data, decoded1[1])
2828 [(decoded1[0] + ((((decoded2[0] * 256) * 256) * 256) * 256)), decoded2[1]]
2929 }
3030
3131
3232 func decodeBool (data,offset) = {
3333 let decoded1 = decodeU8(data, offset)
3434 [(decoded1[0] != 0), decoded1[1]]
3535 }
3636
3737
3838 func decodeBytes (data,offset) = {
3939 let decoded1 = decodeU32(data, offset)
4040 let bytesSize = decoded1[0]
4141 let nextOffset = decoded1[1]
4242 [take(drop(data, nextOffset), bytesSize), (nextOffset + bytesSize)]
4343 }
4444
4545
46+func decodeString (data,offset) = {
47+ let decoded1 = decodeU32(data, offset)
48+ let bytesSize = decoded1[0]
49+ let nextOffset = decoded1[1]
50+[toUtf8String(take(drop(data, nextOffset), bytesSize)), (nextOffset + bytesSize)]
51+ }
52+
53+
4654 @Callable(contextObj)
47-func testDecodeBytes (data) = {
55+func testDecodeString (data) = {
4856 let offset = 0
4957 let decoded = decodeBytes(data, offset)
50- WriteSet([DataEntry("bytes", decoded[0])])
58+ WriteSet([DataEntry("string", decoded[0])])
5159 }
5260
5361
5462
5563 @Callable(contextObj)
5664 func testDecodeU64 (data) = {
5765 let offset = 0
5866 let decoded = decodeU64(data, offset)
5967 WriteSet([DataEntry("u64", decoded[0])])
6068 }
6169
6270
6371
6472 @Callable(contextObj)
6573 func testIntFromBytes (data) = WriteSet([DataEntry("bytesToInt", toInt(data, 0))])
6674
6775
6876
6977 @Callable(contextObj)
7078 func testStringFromBytes (data) = WriteSet([DataEntry("bytesToString", toUtf8String(data))])
7179
7280
7381
7482 @Callable(contextObj)
7583 func setValidator (validator) = if ((contextObj.caller == this))
7684 then WriteSet([DataEntry("validator", validator)])
7785 else throw("Only owner can use this function.")
7886
7987
8088
8189 @Callable(contextObj)
8290 func reportData (data) = {
8391 let validator = getBinary(this, "validator")
8492 if ((contextObj.caller.bytes == validator))
8593 then WriteSet([DataEntry("data_reported", data)])
8694 else throw("Only validator can use this function.")
8795 }
8896
8997

github/deemru/w8io/3ef1775 
171.71 ms