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
b163b1e0
Commit
b163b1e0
authored
Jul 25, 2016
by
yann300
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- reorg files
- change index.js return obj
parent
09fa8163
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
318 additions
and
38 deletions
+318
-38
index.js
src/index.js
+23
-6
ASMCode.js
src/ui/ASMCode.js
+2
-2
BasicPanel.js
src/ui/BasicPanel.js
+1
-1
ButtonNavigator.js
src/ui/ButtonNavigator.js
+2
-2
CalldataPanel.js
src/ui/CalldataPanel.js
+0
-0
CallstackPanel.js
src/ui/CallstackPanel.js
+0
-0
Ethdebugger.js
src/ui/Ethdebugger.js
+35
-11
FullStoragesChanges.js
src/ui/FullStoragesChanges.js
+0
-0
MemoryPanel.js
src/ui/MemoryPanel.js
+1
-1
Slider.js
src/ui/Slider.js
+3
-3
StackPanel.js
src/ui/StackPanel.js
+1
-1
StepManager.js
src/ui/StepManager.js
+3
-3
Sticker.js
src/ui/Sticker.js
+0
-0
StoragePanel.js
src/ui/StoragePanel.js
+0
-0
TxBrowser.js
src/ui/TxBrowser.js
+8
-7
VmDebugger.js
src/ui/VmDebugger.js
+1
-1
basicStyles.js
src/ui/styles/basicStyles.js
+0
-0
sliderStyles.js
src/ui/styles/sliderStyles.js
+0
-0
web3Provider.js
src/web3Provider/web3Provider.js
+70
-0
web3VmProvider.js
src/web3Provider/web3VmProvider.js
+168
-0
No files found.
src/index.js
View file @
b163b1e0
'use strict'
'use strict'
var
Debugger
=
require
(
'./Ethdebugger'
)
var
VMDebugger
=
require
(
'./ui/VmDebugger'
)
var
Debugger
=
require
(
'./ui/Ethdebugger'
)
var
BasicPanel
=
require
(
'./ui/BasicPanel'
)
var
TraceManager
=
require
(
'./trace/traceManager'
)
var
CodeManager
=
require
(
'./code/codeManager'
)
if
(
typeof
(
module
)
!==
'undefined'
&&
typeof
(
module
.
exports
)
!==
'undefined'
)
{
if
(
typeof
(
module
)
!==
'undefined'
&&
typeof
(
module
.
exports
)
!==
'undefined'
)
{
module
.
exports
=
{
module
.
exports
=
modules
()
Debugger
:
Debugger
}
}
}
if
(
window
)
{
if
(
window
)
{
window
.
remix
=
{
window
.
remix
=
modules
()
Debugger
:
Debugger
}
function
modules
()
{
return
{
code
:
{
codeManager
:
CodeManager
},
trace
:
{
traceManager
:
TraceManager
},
ui
:
{
Debugger
:
Debugger
,
VMdebugger
:
VMDebugger
,
BasicPanel
:
BasicPanel
}
}
}
}
}
src/ASMCode.js
→
src/
ui/
ASMCode.js
View file @
b163b1e0
'use strict'
'use strict'
var
style
=
require
(
'./styles/basicStyles'
)
var
style
=
require
(
'./styles/basicStyles'
)
var
yo
=
require
(
'yo-yo'
)
var
yo
=
require
(
'yo-yo'
)
var
CodeManager
=
require
(
'./code/codeManager'
)
var
CodeManager
=
require
(
'.
.
/code/codeManager'
)
var
ui
=
require
(
'./helpers/ui'
)
var
ui
=
require
(
'.
.
/helpers/ui'
)
function
ASMCode
(
_parent
,
_traceManager
,
_web3
)
{
function
ASMCode
(
_parent
,
_traceManager
,
_web3
)
{
this
.
parent
=
_parent
this
.
parent
=
_parent
...
...
src/BasicPanel.js
→
src/
ui/
BasicPanel.js
View file @
b163b1e0
'use strict'
'use strict'
var
style
=
require
(
'./styles/basicStyles'
)
var
style
=
require
(
'./styles/basicStyles'
)
var
yo
=
require
(
'yo-yo'
)
var
yo
=
require
(
'yo-yo'
)
var
ui
=
require
(
'./helpers/ui'
)
var
ui
=
require
(
'.
.
/helpers/ui'
)
function
BasicPanel
(
_name
,
_width
,
_height
)
{
function
BasicPanel
(
_name
,
_width
,
_height
)
{
this
.
data
this
.
data
...
...
src/ButtonNavigator.js
→
src/
ui/
ButtonNavigator.js
View file @
b163b1e0
'use strict'
'use strict'
var
util
=
require
(
'./helpers/global'
)
var
util
=
require
(
'.
.
/helpers/global'
)
var
EventManager
=
require
(
'./lib/eventManager'
)
var
EventManager
=
require
(
'.
.
/lib/eventManager'
)
var
yo
=
require
(
'yo-yo'
)
var
yo
=
require
(
'yo-yo'
)
function
ButtonNavigator
(
_traceManager
)
{
function
ButtonNavigator
(
_traceManager
)
{
...
...
src/CalldataPanel.js
→
src/
ui/
CalldataPanel.js
View file @
b163b1e0
File moved
src/CallstackPanel.js
→
src/
ui/
CallstackPanel.js
View file @
b163b1e0
File moved
src/Ethdebugger.js
→
src/
ui/
Ethdebugger.js
View file @
b163b1e0
'use strict'
'use strict'
var
TxBrowser
=
require
(
'./TxBrowser'
)
var
TxBrowser
=
require
(
'./TxBrowser'
)
var
StepManager
=
require
(
'./StepManager'
)
var
StepManager
=
require
(
'./StepManager'
)
var
TraceManager
=
require
(
'./trace/traceManager'
)
var
TraceManager
=
require
(
'.
.
/trace/traceManager'
)
var
VmDebugger
=
require
(
'./VmDebugger'
)
var
VmDebugger
=
require
(
'./VmDebugger'
)
var
Sticker
=
require
(
'./Sticker'
)
var
Sticker
=
require
(
'./Sticker'
)
var
style
=
require
(
'./styles/basicStyles'
)
var
style
=
require
(
'./styles/basicStyles'
)
var
util
=
require
(
'./helpers/global'
)
var
util
=
require
(
'.
.
/helpers/global'
)
var
EventManager
=
require
(
'./lib/eventManager'
)
var
EventManager
=
require
(
'.
.
/lib/eventManager'
)
var
yo
=
require
(
'yo-yo'
)
var
yo
=
require
(
'yo-yo'
)
var
init
=
require
(
'./helpers/init'
)
var
init
=
require
(
'../helpers/init'
)
var
ui
=
require
(
'./helpers/ui'
)
var
ui
=
require
(
'../helpers/ui'
)
var
Web3Provider
=
require
(
'../web3Provider/web3Provider'
)
function
Ethdebugger
(
_web
3
)
{
function
Ethdebugger
(
_web
)
{
util
.
extend
(
this
,
new
EventManager
())
util
.
extend
(
this
,
new
EventManager
())
this
.
currentStepIndex
=
-
1
this
.
currentStepIndex
=
-
1
this
.
tx
this
.
tx
...
@@ -19,12 +20,12 @@ function Ethdebugger (_web3) {
...
@@ -19,12 +20,12 @@ function Ethdebugger (_web3) {
this
.
view
this
.
view
this
.
displayConnectionSetting
=
true
this
.
displayConnectionSetting
=
true
if
(
_web3
)
{
this
.
web3
=
_web3
this
.
web3
=
new
Web3Provider
()
init
.
extendWeb3
(
this
.
web3
)
if
(
_web
)
{
this
.
displayConnectionSetting
=
false
this
.
setProvider
(
'EXTERNAL'
,
_web
)
}
else
{
}
else
{
this
.
web3
=
init
.
loadWeb3
(
)
this
.
setProvider
(
'EXTERNAL'
,
init
.
loadWeb3
()
)
}
}
this
.
traceManager
=
new
TraceManager
(
this
.
web3
)
this
.
traceManager
=
new
TraceManager
(
this
.
web3
)
...
@@ -48,6 +49,29 @@ function Ethdebugger (_web3) {
...
@@ -48,6 +49,29 @@ function Ethdebugger (_web3) {
this
.
sticker
=
new
Sticker
(
this
,
this
.
traceManager
,
this
.
web3
)
this
.
sticker
=
new
Sticker
(
this
,
this
.
traceManager
,
this
.
web3
)
}
}
Ethdebugger
.
prototype
.
setProvider
=
function
(
type
,
obj
)
{
if
(
type
===
'EXTERNAL'
)
{
init
.
extendWeb3
(
obj
)
this
.
web3
.
initWeb3
(
obj
)
this
.
displayConnectionSetting
=
true
}
else
if
(
type
===
'VM'
)
{
this
.
web3
.
initVM
(
obj
)
this
.
displayConnectionSetting
=
false
}
}
Ethdebugger
.
prototype
.
getWeb3Provider
=
function
()
{
return
this
.
web3
}
Ethdebugger
.
prototype
.
changeProvider
=
function
(
type
)
{
this
.
web3
.
switchTo
(
type
,
function
(
error
,
result
)
{
if
(
error
)
{
console
.
log
(
'provider '
+
type
+
' not defined'
)
}
})
}
Ethdebugger
.
prototype
.
debug
=
function
(
tx
)
{
Ethdebugger
.
prototype
.
debug
=
function
(
tx
)
{
this
.
txBrowser
.
load
(
tx
.
hash
)
this
.
txBrowser
.
load
(
tx
.
hash
)
}
}
...
...
src/FullStoragesChanges.js
→
src/
ui/
FullStoragesChanges.js
View file @
b163b1e0
File moved
src/MemoryPanel.js
→
src/
ui/
MemoryPanel.js
View file @
b163b1e0
'use strict'
'use strict'
var
BasicPanel
=
require
(
'./BasicPanel'
)
var
BasicPanel
=
require
(
'./BasicPanel'
)
var
util
=
require
(
'./helpers/ui'
)
var
util
=
require
(
'.
.
/helpers/ui'
)
var
yo
=
require
(
'yo-yo'
)
var
yo
=
require
(
'yo-yo'
)
function
MemoryPanel
(
_parent
,
_traceManager
)
{
function
MemoryPanel
(
_parent
,
_traceManager
)
{
...
...
src/Slider.js
→
src/
ui/
Slider.js
View file @
b163b1e0
'use strict'
'use strict'
var
style
=
require
(
'./styles/sliderStyles'
)
var
style
=
require
(
'./styles/sliderStyles'
)
var
util
=
require
(
'./helpers/global'
)
var
util
=
require
(
'.
.
/helpers/global'
)
var
EventManager
=
require
(
'./lib/eventManager'
)
var
EventManager
=
require
(
'.
.
/lib/eventManager'
)
var
yo
=
require
(
'yo-yo'
)
var
yo
=
require
(
'yo-yo'
)
var
ui
=
require
(
'./helpers/ui'
)
var
ui
=
require
(
'.
.
/helpers/ui'
)
function
Slider
(
_traceManager
)
{
function
Slider
(
_traceManager
)
{
util
.
extend
(
this
,
new
EventManager
())
util
.
extend
(
this
,
new
EventManager
())
...
...
src/StackPanel.js
→
src/
ui/
StackPanel.js
View file @
b163b1e0
'use strict'
'use strict'
var
BasicPanel
=
require
(
'./BasicPanel'
)
var
BasicPanel
=
require
(
'./BasicPanel'
)
var
ui
=
require
(
'./helpers/ui'
)
var
ui
=
require
(
'.
.
/helpers/ui'
)
var
yo
=
require
(
'yo-yo'
)
var
yo
=
require
(
'yo-yo'
)
function
StackPanel
(
_parent
,
_traceManager
)
{
function
StackPanel
(
_parent
,
_traceManager
)
{
...
...
src/StepManager.js
→
src/
ui/
StepManager.js
View file @
b163b1e0
...
@@ -2,10 +2,10 @@
...
@@ -2,10 +2,10 @@
var
ButtonNavigator
=
require
(
'./ButtonNavigator'
)
var
ButtonNavigator
=
require
(
'./ButtonNavigator'
)
var
Slider
=
require
(
'./Slider'
)
var
Slider
=
require
(
'./Slider'
)
var
style
=
require
(
'./styles/basicStyles'
)
var
style
=
require
(
'./styles/basicStyles'
)
var
util
=
require
(
'./helpers/global'
)
var
util
=
require
(
'.
.
/helpers/global'
)
var
EventManager
=
require
(
'./lib/eventManager'
)
var
EventManager
=
require
(
'.
.
/lib/eventManager'
)
var
yo
=
require
(
'yo-yo'
)
var
yo
=
require
(
'yo-yo'
)
var
ui
=
require
(
'./helpers/ui'
)
var
ui
=
require
(
'.
.
/helpers/ui'
)
function
StepManager
(
_parent
,
_traceManager
)
{
function
StepManager
(
_parent
,
_traceManager
)
{
util
.
extend
(
this
,
new
EventManager
())
util
.
extend
(
this
,
new
EventManager
())
...
...
src/Sticker.js
→
src/
ui/
Sticker.js
View file @
b163b1e0
File moved
src/StoragePanel.js
→
src/
ui/
StoragePanel.js
View file @
b163b1e0
File moved
src/TxBrowser.js
→
src/
ui/
TxBrowser.js
View file @
b163b1e0
var
style
=
require
(
'./styles/basicStyles'
)
var
style
=
require
(
'./styles/basicStyles'
)
var
util
=
require
(
'./helpers/global'
)
var
util
=
require
(
'.
.
/helpers/global'
)
var
EventManager
=
require
(
'./lib/eventManager'
)
var
EventManager
=
require
(
'.
.
/lib/eventManager'
)
var
traceHelper
=
require
(
'./helpers/traceHelper'
)
var
traceHelper
=
require
(
'.
.
/helpers/traceHelper'
)
var
yo
=
require
(
'yo-yo'
)
var
yo
=
require
(
'yo-yo'
)
var
ui
=
require
(
'./helpers/ui'
)
var
ui
=
require
(
'.
.
/helpers/ui'
)
var
init
=
require
(
'./helpers/init'
)
var
init
=
require
(
'.
.
/helpers/init'
)
function
TxBrowser
(
_web3
,
_displayConnectionSetting
)
{
function
TxBrowser
(
_web3
,
_displayConnectionSetting
)
{
util
.
extend
(
this
,
new
EventManager
())
util
.
extend
(
this
,
new
EventManager
())
...
@@ -20,8 +20,9 @@ function TxBrowser (_web3, _displayConnectionSetting) {
...
@@ -20,8 +20,9 @@ function TxBrowser (_web3, _displayConnectionSetting) {
if
(
_displayConnectionSetting
!==
undefined
)
{
if
(
_displayConnectionSetting
!==
undefined
)
{
this
.
displayConnectionSetting
=
_displayConnectionSetting
this
.
displayConnectionSetting
=
_displayConnectionSetting
}
}
if
(
this
.
displayConnectionSetting
)
{
this
.
setDefaultValues
()
this
.
setDefaultValues
()
}
}
}
// creation 0xa9619e1d0a35b2c1d686f5b661b3abd87f998d2844e8e9cc905edb57fc9ce349
// creation 0xa9619e1d0a35b2c1d686f5b661b3abd87f998d2844e8e9cc905edb57fc9ce349
...
...
src/VmDebugger.js
→
src/
ui/
VmDebugger.js
View file @
b163b1e0
...
@@ -9,7 +9,7 @@ var StoragePanel = require('./StoragePanel')
...
@@ -9,7 +9,7 @@ var StoragePanel = require('./StoragePanel')
var
BasicPanel
=
require
(
'./BasicPanel'
)
var
BasicPanel
=
require
(
'./BasicPanel'
)
var
FullStoragesChangesPanel
=
require
(
'./FullStoragesChanges'
)
var
FullStoragesChangesPanel
=
require
(
'./FullStoragesChanges'
)
var
yo
=
require
(
'yo-yo'
)
var
yo
=
require
(
'yo-yo'
)
var
ui
=
require
(
'./helpers/ui'
)
var
ui
=
require
(
'.
.
/helpers/ui'
)
function
VmDebugger
(
_parent
,
_traceManager
,
_web3
)
{
function
VmDebugger
(
_parent
,
_traceManager
,
_web3
)
{
this
.
asmCode
=
new
ASMCode
(
_parent
,
_traceManager
,
_web3
)
this
.
asmCode
=
new
ASMCode
(
_parent
,
_traceManager
,
_web3
)
...
...
src/styles/basicStyles.js
→
src/
ui/
styles/basicStyles.js
View file @
b163b1e0
File moved
src/styles/sliderStyles.js
→
src/
ui/
styles/sliderStyles.js
View file @
b163b1e0
File moved
src/web3Provider/web3Provider.js
0 → 100644
View file @
b163b1e0
var
Web3VMProvider
=
require
(
'./web3VmProvider'
)
function
Web3Provider
()
{
var
self
=
this
this
.
currentMode
this
.
actions
=
{}
this
.
modes
=
{}
this
.
currentProvider
=
{
'host'
:
'browser-solidity proxy provider'
}
this
.
providers
=
{
'HttpProvider'
:
function
(
url
)
{}
}
this
.
eth
=
{}
this
.
debug
=
{}
this
.
eth
.
getCode
=
function
(
address
,
cb
)
{
if
(
self
.
check
(
cb
))
{
return
self
.
actions
[
self
.
currentMode
][
'eth.getCode'
].
apply
(
self
.
executingMode
(),
arguments
)
}
}
this
.
setProvider
=
function
(
provider
)
{
if
(
self
.
check
())
{
return
self
.
actions
[
self
.
currentMode
][
'setProvider'
].
apply
(
self
.
executingMode
(),
[
provider
])
}
}
this
.
debug
.
traceTransaction
=
function
(
txHash
,
options
,
cb
)
{
if
(
self
.
check
())
{
return
self
.
actions
[
self
.
currentMode
][
'debug.traceTransaction'
].
apply
(
self
.
executingMode
(),
arguments
)
}
}
this
.
debug
.
storageAt
=
function
(
blockNumber
,
txIndex
,
address
,
cb
)
{
if
(
self
.
check
())
{
return
self
.
actions
[
self
.
currentMode
][
'debug.storageAt'
].
apply
(
self
.
executingMode
(),
arguments
)
}
}
this
.
eth
.
getTransaction
=
function
(
txHash
)
{
if
(
self
.
check
())
{
return
self
.
actions
[
self
.
currentMode
][
'eth.getTransaction'
].
apply
(
self
.
executingMode
(),
arguments
)
}
}
this
.
eth
.
getTransactionFromBlock
=
function
(
blockNumber
,
txIndex
)
{
if
(
self
.
check
())
{
return
self
.
actions
[
self
.
currentMode
][
'eth.getTransactionFromBlock'
].
apply
(
self
.
executingMode
(),
arguments
)
}
}
this
.
eth
.
getBlockNumber
=
function
(
cb
)
{
if
(
self
.
check
())
{
return
self
.
actions
[
self
.
currentMode
][
'eth.getBlockNumber'
].
apply
(
self
.
executingMode
(),
arguments
)
}
}
}
Web3Provider
.
prototype
.
check
=
function
(
cb
)
{
if
(
!
this
.
currentMode
)
{
if
(
cb
)
{
cb
(
'error: no provider has been setup '
,
null
)
}
return
false
}
return
true
}
Web3Provider
.
prototype
.
switchTo
=
function
(
type
,
cb
)
{
if
(
this
.
actions
[
type
])
{
this
.
currentMode
=
type
cb
(
null
,
'ok'
)
}
else
{
cb
(
'error: this provider has not been setup ('
+
type
+
')'
,
null
)
}
}
Web3Provider
.
prototype
.
executingMode
=
function
()
{
return
this
.
modes
[
this
.
currentMode
]
}
Web3Provider
.
prototype
.
initWeb3
=
function
(
web3
)
{
this
.
actions
[
'EXTERNAL'
]
=
{}
this
.
actions
[
'EXTERNAL'
][
'eth.getCode'
]
=
web3
.
eth
.
getCode
this
.
actions
[
'EXTERNAL'
][
'setProvider'
]
=
web3
.
setProvider
this
.
actions
[
'EXTERNAL'
][
'debug.traceTransaction'
]
=
web3
.
debug
.
traceTransaction
this
.
actions
[
'EXTERNAL'
][
'debug.storageAt'
]
=
web3
.
debug
.
storageAt
this
.
actions
[
'EXTERNAL'
][
'eth.getTransaction'
]
=
web3
.
eth
.
getTransaction
this
.
actions
[
'EXTERNAL'
][
'eth.getTransactionFromBlock'
]
=
web3
.
eth
.
getTransactionFromBlock
this
.
actions
[
'EXTERNAL'
][
'eth.getBlockNumber'
]
=
web3
.
eth
.
getBlockNumber
this
.
modes
[
'EXTERNAL'
]
=
web3
}
Web3Provider
.
prototype
.
initVM
=
function
(
vm
)
{
var
vmProvider
=
new
Web3VMProvider
()
vmProvider
.
setVM
(
vm
)
this
.
actions
[
'VM'
]
=
{}
this
.
actions
[
'VM'
][
'eth.getCode'
]
=
vmProvider
.
getCode
this
.
actions
[
'VM'
][
'setProvider'
]
=
vmProvider
.
setProvider
this
.
actions
[
'VM'
][
'debug.traceTransaction'
]
=
vmProvider
.
traceTransaction
this
.
actions
[
'VM'
][
'debug.storageAt'
]
=
vmProvider
.
storageAt
this
.
actions
[
'VM'
][
'eth.getTransaction'
]
=
vmProvider
.
getTransaction
this
.
actions
[
'VM'
][
'eth.getTransactionFromBlock'
]
=
vmProvider
.
getTransactionFromBlock
this
.
actions
[
'VM'
][
'eth.getBlockNumber'
]
=
vmProvider
.
getBlockNumber
this
.
modes
[
'VM'
]
=
vmProvider
}
module
.
exports
=
Web3Provider
src/web3Provider/web3VmProvider.js
0 → 100644
View file @
b163b1e0
var
ethJSUtil
=
require
(
'ethereumjs-util'
)
var
BN
=
ethJSUtil
.
BN
function
web3VmProvider
()
{
this
.
vm
this
.
vmTraces
=
{}
this
.
txs
=
{}
this
.
processingHash
this
.
incr
=
0
}
var
hexConvert
=
function
(
ints
)
{
var
ret
=
'0x'
for
(
var
i
=
0
;
i
<
ints
.
length
;
i
++
)
{
try
{
var
h
=
ints
[
i
]
if
(
h
)
{
h
=
h
.
toString
(
16
)
ret
+=
(
'0x'
+
h
)
<
0x10
?
'0'
+
h
:
h
}
else
{
ret
+=
'00'
}
}
catch
(
e
)
{
console
.
log
(
'hexconvert '
+
i
+
' '
+
ints
.
length
)
console
.
log
(
e
)
}
}
return
ret
}
var
hexListConvert
=
function
(
intsList
)
{
var
ret
=
[]
for
(
var
k
in
intsList
)
{
ret
.
push
(
hexConvert
(
intsList
[
k
]))
}
return
ret
}
var
formatMemory
=
function
(
mem
)
{
var
hexMem
=
hexConvert
(
mem
).
substr
(
2
)
var
ret
=
[]
for
(
var
k
=
0
;
k
<
hexMem
.
length
;
k
+=
32
)
{
var
row
=
hexMem
.
substr
(
k
,
32
)
ret
.
push
(
row
)
}
return
ret
}
web3VmProvider
.
prototype
.
setVM
=
function
(
vm
)
{
var
self
=
this
this
.
vm
=
vm
this
.
vm
.
on
(
'step'
,
function
(
data
)
{
self
.
pushTrace
(
self
,
data
)
})
this
.
vm
.
on
(
'afterTx'
,
function
(
data
)
{
self
.
txProcessed
(
self
,
data
)
})
this
.
vm
.
on
(
'beforeTx'
,
function
(
data
)
{
self
.
txWillProcess
(
self
,
data
)
})
}
web3VmProvider
.
prototype
.
releaseCurrentHash
=
function
()
{
var
ret
=
this
.
processingHash
this
.
processingHash
=
undefined
return
ret
}
web3VmProvider
.
prototype
.
txWillProcess
=
function
(
self
,
data
)
{
self
.
incr
++
self
.
processingHash
=
'0x'
+
ethJSUtil
.
sha3
([
data
.
r
,
data
.
s
,
data
.
v
,
self
.
incr
]).
join
(
''
)
self
.
vmTraces
[
self
.
processingHash
]
=
{
gas
:
'0x0'
,
return
:
'0x0'
,
structLogs
:
[]
}
var
tx
=
{}
tx
.
hash
=
self
.
processingHash
tx
.
from
=
hexConvert
(
data
.
getSenderAddress
())
if
(
data
.
to
&&
data
.
to
.
length
)
{
tx
.
to
=
hexConvert
(
data
.
to
)
}
tx
.
data
=
hexConvert
(
data
.
data
)
tx
.
input
=
hexConvert
(
data
.
input
)
tx
.
gas
=
hexConvert
(
data
.
gas
)
if
(
data
.
value
)
{
tx
.
value
=
hexConvert
(
data
.
value
)
}
self
.
txs
[
self
.
processingHash
]
=
tx
}
web3VmProvider
.
prototype
.
txProcessed
=
function
(
self
,
data
)
{
self
.
vmTraces
[
self
.
processingHash
].
gas
=
'0x'
+
data
.
gasUsed
.
toString
(
16
)
if
(
data
.
createdAddress
)
{
self
.
vmTraces
[
self
.
processingHash
].
return
=
hexConvert
(
data
.
createdAddress
)
}
else
{
self
.
vmTraces
[
self
.
processingHash
].
return
=
hexConvert
(
data
.
vm
.
return
)
}
}
web3VmProvider
.
prototype
.
pushTrace
=
function
(
self
,
data
)
{
if
(
!
self
.
processingHash
)
{
console
.
log
(
'no tx processing'
)
return
}
var
step
=
{
stack
:
hexListConvert
(
data
.
stack
),
memory
:
formatMemory
(
data
.
memory
),
storage
:
data
.
storage
,
op
:
data
.
opcode
.
name
,
pc
:
data
.
pc
,
gas
:
data
.
opcode
.
fee
.
toString
(),
gasLeft
:
data
.
gasLeft
.
toString
(),
gasCost
:
self
.
vmTraces
[
self
.
processingHash
].
structLogs
.
length
>
0
?
((
new
BN
(
self
.
vmTraces
[
self
.
processingHash
].
structLogs
[
0
].
gasLeft
))
-
data
.
gasLeft
).
toString
()
:
data
.
opcode
.
fee
.
toString
()
}
self
.
vmTraces
[
self
.
processingHash
].
structLogs
.
push
(
step
)
}
web3VmProvider
.
prototype
.
getCode
=
function
(
address
,
cb
)
{
this
.
vm
.
stateManager
.
getContractCode
(
address
,
function
(
error
,
result
)
{
cb
(
error
,
hexConvert
(
result
))
})
}
web3VmProvider
.
prototype
.
setProvider
=
function
(
provider
)
{}
web3VmProvider
.
prototype
.
traceTransaction
=
function
(
txHash
,
options
,
cb
)
{
if
(
this
.
vmTraces
[
txHash
])
{
if
(
cb
)
{
cb
(
null
,
this
.
vmTraces
[
txHash
])
}
return
this
.
vmTraces
[
txHash
]
}
else
{
var
mes
=
'unable to retrieve traces '
+
txHash
if
(
cb
)
{
cb
(
'unable to retrieve traces '
+
txHash
,
null
)
}
throw
mes
}
}
web3VmProvider
.
prototype
.
storageAt
=
function
(
blockNumber
,
txIndex
,
address
,
cb
)
{
cb
(
null
,
{})
}
web3VmProvider
.
prototype
.
getTransaction
=
function
(
txHash
,
cb
)
{
if
(
this
.
txs
[
txHash
])
{
if
(
cb
)
{
cb
(
null
,
this
.
txs
[
txHash
])
}
return
this
.
txs
[
txHash
]
}
else
{
var
mes
=
'unable to retrieve tx '
+
txHash
if
(
cb
)
{
cb
(
'unable to retrieve tx '
+
txHash
,
null
)
}
throw
mes
}
}
web3VmProvider
.
prototype
.
getTransactionFromBlock
=
function
(
blockNumber
,
txIndex
,
cb
)
{
var
mes
=
'not supposed to be needed by remix'
console
.
log
(
mes
)
if
(
cb
)
{
cb
(
mes
,
null
)
}
throw
mes
}
module
.
exports
=
web3VmProvider
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