Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
baas-ide
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
guxukai
baas-ide
Commits
0997621f
Commit
0997621f
authored
Nov 17, 2016
by
yann300
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
decode:
- address - bool - dynamic byte array - enum - fixed byte array - string
parent
d1453f88
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
65 additions
and
0 deletions
+65
-0
util.js
src/solidity/types/util.js
+24
-0
storageDecoder.js
test/solidity/storageDecoder.js
+41
-0
No files found.
src/solidity/types/util.js
View file @
0997621f
...
...
@@ -31,6 +31,30 @@ function readFromStorage (slot, storageContent) {
}
else
{
ret
=
'000000000000000000000000000000000000000000000000000000000000000'
}
return
extractSlotValue
(
storageContent
[
slot
],
storageBytes
,
location
)
},
dynamicTypePointer
:
function
getDynamicPointer
(
location
)
{
var
remoteSlot
=
formatSlot
(
location
.
slot
)
var
key
=
ethutil
.
sha3
(
remoteSlot
)
return
ethutil
.
bufferToHex
(
key
)
}
}
function
formatSlot
(
slot
)
{
return
ethutil
.
bufferToHex
(
ethutil
.
setLengthLeft
(
slot
,
32
))
}
function
extractSlotValue
(
slotValue
,
storageBytes
,
location
)
{
slotValue
=
slotValue
.
replace
(
'0x'
,
''
)
var
offset
=
slotValue
.
length
-
2
*
location
.
offset
-
2
*
storageBytes
if
(
offset
>=
0
)
{
return
'0x'
+
slotValue
.
substr
(
offset
,
2
*
storageBytes
)
}
else
if
(
offset
+
2
*
storageBytes
>
0
)
{
return
'0x'
+
slotValue
.
substr
(
0
,
2
*
storageBytes
+
offset
)
}
else
{
return
'0x0'
}
if
(
ret
.
length
<
64
)
{
ret
=
(
new
Array
(
64
-
ret
.
length
+
1
).
join
(
'0'
))
+
ret
...
...
test/solidity/storageDecoder.js
View file @
0997621f
...
...
@@ -54,6 +54,47 @@ function testIntStorage (st) {
function
testByteStorage
(
st
)
{
var
byteStorage
=
require
(
'./contracts/byteStorage'
)
var
output
=
compiler
.
compile
(
byteStorage
.
contract
,
0
)
var
decoded
=
stateDecoder
.
solidityState
(
byteStorage
.
storage
,
output
.
sources
,
'byteStorage'
)
st
.
equal
(
decoded
[
'b1'
],
false
)
st
.
equal
(
decoded
[
'a1'
],
'0xfe350f199f244ac9a79038d254400b632a633225'
)
st
.
equal
(
decoded
[
'b2'
],
true
)
st
.
equal
(
decoded
[
'dynb1'
],
'0x64796e616d69636279746573'
)
st
.
equal
(
decoded
[
'stab'
],
'0x1'
)
st
.
equal
(
decoded
[
'stab1'
],
'0x12'
)
st
.
equal
(
decoded
[
'stab2'
],
'0x1579'
)
st
.
equal
(
decoded
[
'stab3'
],
'0x359356'
)
st
.
equal
(
decoded
[
'stab4'
],
'0x2375'
)
st
.
equal
(
decoded
[
'stab5'
],
'0x2357645'
)
st
.
equal
(
decoded
[
'stab6'
],
'0x324435'
)
st
.
equal
(
decoded
[
'stab7'
],
'0x324324'
)
st
.
equal
(
decoded
[
'stab8'
],
'0x324554645765'
)
st
.
equal
(
decoded
[
'stab9'
],
'0x3434543'
)
st
.
equal
(
decoded
[
'stab10'
],
'0x4543543654657'
)
st
.
equal
(
decoded
[
'stab11'
],
'0x54354654'
)
st
.
equal
(
decoded
[
'stab12'
],
'0x3'
)
st
.
equal
(
decoded
[
'stab13'
],
'0x3243242345435'
)
st
.
equal
(
decoded
[
'stab14'
],
'0x32454354354353'
)
st
.
equal
(
decoded
[
'stab15'
],
'0x32454434435'
)
st
.
equal
(
decoded
[
'stab16'
],
'0x3245435444'
)
st
.
equal
(
decoded
[
'stab17'
],
'0x32454343243243245'
)
st
.
equal
(
decoded
[
'stab18'
],
'0x324534325435435'
)
st
.
equal
(
decoded
[
'stab19'
],
'0x324543435435435'
)
st
.
equal
(
decoded
[
'stab20'
],
'0x32454543543AB35'
)
st
.
equal
(
decoded
[
'stab21'
],
'0x32454432423435'
)
st
.
equal
(
decoded
[
'stab22'
],
'0x324543AEF5'
)
st
.
equal
(
decoded
[
'stab23'
],
'0x3245435FFF'
)
st
.
equal
(
decoded
[
'stab24'
],
'0x3245435F'
)
st
.
equal
(
decoded
[
'stab25'
],
'0x3245435F'
)
st
.
equal
(
decoded
[
'stab26'
],
'0x3245435F'
)
st
.
equal
(
decoded
[
'stab27'
],
'0x3245FFFFFFF'
)
st
.
equal
(
decoded
[
'stab28'
],
'0x3241235'
)
st
.
equal
(
decoded
[
'stab29'
],
'0x325213213'
)
st
.
equal
(
decoded
[
'stab30'
],
'0x3245435232423'
)
st
.
equal
(
decoded
[
'stab31'
],
'0x3245435123'
)
st
.
equal
(
decoded
[
'stab32'
],
'0x324324423432543543AB'
)
st
.
equal
(
decoded
[
'enumDec'
],
'd'
)
st
.
equal
(
decoded
[
'str1'
],
'short'
)
st
.
equal
(
decoded
[
'str2'
],
'long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long'
)
for
(
var
storage
of
[
byteStorage
.
storage
,
shrinkStorage
(
byteStorage
.
storage
)])
{
var
decoded
=
stateDecoder
.
solidityState
(
storage
,
output
.
sources
,
'byteStorage'
)
st
.
equal
(
decoded
[
'b1'
],
false
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment