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
60ebbee3
Commit
60ebbee3
authored
Jun 02, 2016
by
Alex Beregszaszi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Standard: include curly brackets in branches as required
parent
3a7bc52e
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
171 additions
and
85 deletions
+171
-85
app.js
src/app.js
+4
-2
compiler.js
src/app/compiler.js
+25
-15
editor.js
src/app/editor.js
+4
-2
gist-handler.js
src/app/gist-handler.js
+3
-1
query-params.js
src/app/query-params.js
+3
-1
renderer.js
src/app/renderer.js
+36
-19
storage-handler.js
src/app/storage-handler.js
+11
-5
universal-dapp.js
src/universal-dapp.js
+82
-38
web3-adapter.js
src/web3-adapter.js
+3
-2
No files found.
src/app.js
View file @
60ebbee3
...
@@ -40,8 +40,9 @@ var run = function () {
...
@@ -40,8 +40,9 @@ var run = function () {
loadFiles
(
files
);
loadFiles
(
files
);
};
};
if
(
filesToLoad
!==
null
)
if
(
filesToLoad
!==
null
)
{
loadFiles
(
filesToLoad
);
loadFiles
(
filesToLoad
);
}
// ------------------ query params (hash) ----------------
// ------------------ query params (hash) ----------------
...
@@ -133,8 +134,9 @@ var run = function () {
...
@@ -133,8 +134,9 @@ var run = function () {
'To which other browser-solidity instance do you want to copy over all files?'
,
'To which other browser-solidity instance do you want to copy over all files?'
,
'https://ethereum.github.io/browser-solidity/'
'https://ethereum.github.io/browser-solidity/'
);
);
if
(
target
===
null
)
if
(
target
===
null
)
{
return
;
return
;
}
var
files
=
editor
.
packageFiles
();
var
files
=
editor
.
packageFiles
();
var
iframe
=
$
(
'<iframe/>'
,
{
src
:
target
,
style
:
'display:none;'
,
load
:
function
()
{
var
iframe
=
$
(
'<iframe/>'
,
{
src
:
target
,
style
:
'display:none;'
,
load
:
function
()
{
this
.
contentWindow
.
postMessage
([
'loadFiles'
,
files
],
'*'
);
this
.
contentWindow
.
postMessage
([
'loadFiles'
,
files
],
'*'
);
...
...
src/app/compiler.js
View file @
60ebbee3
...
@@ -24,10 +24,13 @@ function Compiler (editor, handleGithubCall, outputField, hidingRHP, updateFiles
...
@@ -24,10 +24,13 @@ function Compiler (editor, handleGithubCall, outputField, hidingRHP, updateFiles
editor
.
setCacheFileContent
(
''
);
editor
.
setCacheFileContent
(
''
);
return
;
return
;
}
}
if
(
input
===
previousInput
)
if
(
input
===
previousInput
)
{
return
;
return
;
}
previousInput
=
input
;
previousInput
=
input
;
if
(
compileTimeout
)
window
.
clearTimeout
(
compileTimeout
);
if
(
compileTimeout
)
{
window
.
clearTimeout
(
compileTimeout
);
}
compileTimeout
=
window
.
setTimeout
(
compile
,
300
);
compileTimeout
=
window
.
setTimeout
(
compile
,
300
);
}
}
...
@@ -112,24 +115,30 @@ function Compiler (editor, handleGithubCall, outputField, hidingRHP, updateFiles
...
@@ -112,24 +115,30 @@ function Compiler (editor, handleGithubCall, outputField, hidingRHP, updateFiles
if
(
data
[
'error'
]
!==
undefined
)
{
if
(
data
[
'error'
]
!==
undefined
)
{
renderer
.
error
(
data
[
'error'
]);
renderer
.
error
(
data
[
'error'
]);
if
(
utils
.
errortype
(
data
[
'error'
])
!==
'warning'
)
noFatalErrors
=
false
;
if
(
utils
.
errortype
(
data
[
'error'
])
!==
'warning'
)
{
noFatalErrors
=
false
;
}
}
}
if
(
data
[
'errors'
]
!==
undefined
)
{
if
(
data
[
'errors'
]
!==
undefined
)
{
data
[
'errors'
].
forEach
(
function
(
err
)
{
data
[
'errors'
].
forEach
(
function
(
err
)
{
renderer
.
error
(
err
);
renderer
.
error
(
err
);
if
(
utils
.
errortype
(
err
)
!==
'warning'
)
noFatalErrors
=
false
;
if
(
utils
.
errortype
(
err
)
!==
'warning'
)
{
noFatalErrors
=
false
;
}
});
});
}
}
if
(
missingInputs
!==
undefined
&&
missingInputs
.
length
>
0
)
if
(
missingInputs
!==
undefined
&&
missingInputs
.
length
>
0
)
{
compile
(
missingInputs
);
compile
(
missingInputs
);
else
if
(
noFatalErrors
&&
!
hidingRHP
())
}
else
if
(
noFatalErrors
&&
!
hidingRHP
())
{
renderer
.
contracts
(
data
,
editor
.
getValue
());
renderer
.
contracts
(
data
,
editor
.
getValue
());
}
}
}
this
.
initializeWorker
=
function
(
version
,
setVersionText
)
{
this
.
initializeWorker
=
function
(
version
,
setVersionText
)
{
if
(
worker
!==
null
)
if
(
worker
!==
null
)
{
worker
.
terminate
();
worker
.
terminate
();
}
worker
=
new
Worker
(
'worker.js'
);
worker
=
new
Worker
(
'worker.js'
);
worker
.
addEventListener
(
'message'
,
function
(
msg
)
{
worker
.
addEventListener
(
'message'
,
function
(
msg
)
{
var
data
=
msg
.
data
;
var
data
=
msg
.
data
;
...
@@ -154,8 +163,7 @@ function Compiler (editor, handleGithubCall, outputField, hidingRHP, updateFiles
...
@@ -154,8 +163,7 @@ function Compiler (editor, handleGithubCall, outputField, hidingRHP, updateFiles
function
gatherImports
(
files
,
importHints
,
cb
)
{
function
gatherImports
(
files
,
importHints
,
cb
)
{
importHints
=
importHints
||
[];
importHints
=
importHints
||
[];
if
(
!
compilerAcceptsMultipleFiles
)
if
(
!
compilerAcceptsMultipleFiles
)
{
{
cb
(
files
[
editor
.
getCacheFile
()]);
cb
(
files
[
editor
.
getCacheFile
()]);
return
;
return
;
}
}
...
@@ -166,12 +174,15 @@ function Compiler (editor, handleGithubCall, outputField, hidingRHP, updateFiles
...
@@ -166,12 +174,15 @@ function Compiler (editor, handleGithubCall, outputField, hidingRHP, updateFiles
reloop
=
false
;
reloop
=
false
;
for
(
var
fileName
in
files
)
{
for
(
var
fileName
in
files
)
{
var
match
;
var
match
;
while
(
match
=
importRegex
.
exec
(
files
[
fileName
]))
while
(
match
=
importRegex
.
exec
(
files
[
fileName
]))
{
importHints
.
push
(
match
[
1
]);
importHints
.
push
(
match
[
1
]);
}
}
}
while
(
importHints
.
length
>
0
)
{
while
(
importHints
.
length
>
0
)
{
var
m
=
importHints
.
pop
();
var
m
=
importHints
.
pop
();
if
(
m
in
files
)
continue
;
if
(
m
in
files
)
{
continue
;
}
if
(
editor
.
hasFile
(
m
))
{
if
(
editor
.
hasFile
(
m
))
{
files
[
m
]
=
window
.
localStorage
[
utils
.
fileKey
(
m
)];
files
[
m
]
=
window
.
localStorage
[
utils
.
fileKey
(
m
)];
reloop
=
true
;
reloop
=
true
;
...
@@ -183,15 +194,14 @@ function Compiler (editor, handleGithubCall, outputField, hidingRHP, updateFiles
...
@@ -183,15 +194,14 @@ function Compiler (editor, handleGithubCall, outputField, hidingRHP, updateFiles
reloop
=
true
;
reloop
=
true
;
}
else
if
(
githubMatch
=
/^
(
https
?
:
\/\/)?(
www.
)?
github.com
\/([^\/]
*
\/[^\/]
*
)\/(
.*
)
/
.
exec
(
m
))
{
}
else
if
(
githubMatch
=
/^
(
https
?
:
\/\/)?(
www.
)?
github.com
\/([^\/]
*
\/[^\/]
*
)\/(
.*
)
/
.
exec
(
m
))
{
handleGithubCall
(
githubMatch
[
3
],
githubMatch
[
4
],
function
(
result
)
{
handleGithubCall
(
githubMatch
[
3
],
githubMatch
[
4
],
function
(
result
)
{
if
(
'content'
in
result
)
if
(
'content'
in
result
)
{
{
var
content
=
Base64
.
decode
(
result
.
content
);
var
content
=
Base64
.
decode
(
result
.
content
);
cachedRemoteFiles
[
m
]
=
content
;
cachedRemoteFiles
[
m
]
=
content
;
files
[
m
]
=
content
;
files
[
m
]
=
content
;
gatherImports
(
files
,
importHints
,
cb
);
gatherImports
(
files
,
importHints
,
cb
);
}
}
else
{
else
cb
(
null
,
'Unable to import "'
+
m
+
'"'
);
cb
(
null
,
'Unable to import "'
+
m
+
'"'
);
}
}).
fail
(
function
()
{
}).
fail
(
function
()
{
cb
(
null
,
'Unable to import "'
+
m
+
'"'
);
cb
(
null
,
'Unable to import "'
+
m
+
'"'
);
});
});
...
...
src/app/editor.js
View file @
60ebbee3
...
@@ -7,8 +7,9 @@ function Editor (loadingFromGist) {
...
@@ -7,8 +7,9 @@ function Editor (loadingFromGist) {
this
.
newFile
=
function
()
{
this
.
newFile
=
function
()
{
untitledCount
=
''
;
untitledCount
=
''
;
while
(
window
.
localStorage
[
SOL_CACHE_UNTITLED
+
untitledCount
])
while
(
window
.
localStorage
[
SOL_CACHE_UNTITLED
+
untitledCount
])
{
untitledCount
=
(
untitledCount
-
0
)
+
1
;
untitledCount
=
(
untitledCount
-
0
)
+
1
;
}
SOL_CACHE_FILE
=
SOL_CACHE_UNTITLED
+
untitledCount
;
SOL_CACHE_FILE
=
SOL_CACHE_UNTITLED
+
untitledCount
;
sessions
[
SOL_CACHE_FILE
]
=
null
;
sessions
[
SOL_CACHE_FILE
]
=
null
;
this
.
setCacheFileContent
(
''
);
this
.
setCacheFileContent
(
''
);
...
@@ -120,8 +121,9 @@ function Editor (loadingFromGist) {
...
@@ -120,8 +121,9 @@ function Editor (loadingFromGist) {
if
(
!
files
.
length
||
window
.
localStorage
[
'sol-cache'
])
{
if
(
!
files
.
length
||
window
.
localStorage
[
'sol-cache'
])
{
if
(
loadingFromGist
)
return
;
if
(
loadingFromGist
)
return
;
// Backwards-compatibility
// Backwards-compatibility
while
(
window
.
localStorage
[
SOL_CACHE_UNTITLED
+
untitledCount
])
while
(
window
.
localStorage
[
SOL_CACHE_UNTITLED
+
untitledCount
])
{
untitledCount
=
(
untitledCount
-
0
)
+
1
;
untitledCount
=
(
untitledCount
-
0
)
+
1
;
}
SOL_CACHE_FILE
=
SOL_CACHE_UNTITLED
+
untitledCount
;
SOL_CACHE_FILE
=
SOL_CACHE_UNTITLED
+
untitledCount
;
window
.
localStorage
[
SOL_CACHE_FILE
]
=
window
.
localStorage
[
'sol-cache'
]
||
BALLOT_EXAMPLE
;
window
.
localStorage
[
SOL_CACHE_FILE
]
=
window
.
localStorage
[
'sol-cache'
]
||
BALLOT_EXAMPLE
;
window
.
localStorage
.
removeItem
(
'sol-cache'
);
window
.
localStorage
.
removeItem
(
'sol-cache'
);
...
...
src/app/gist-handler.js
View file @
60ebbee3
...
@@ -15,7 +15,9 @@ function handleLoad (cb) {
...
@@ -15,7 +15,9 @@ function handleLoad (cb) {
gistId
=
params
[
'gist'
];
gistId
=
params
[
'gist'
];
loadingFromGist
=
!!
gistId
;
loadingFromGist
=
!!
gistId
;
}
}
if
(
loadingFromGist
)
cb
(
gistId
);
if
(
loadingFromGist
)
{
cb
(
gistId
);
}
}
}
return
loadingFromGist
;
return
loadingFromGist
;
}
}
...
...
src/app/query-params.js
View file @
60ebbee3
...
@@ -11,7 +11,9 @@ function getQueryParams () {
...
@@ -11,7 +11,9 @@ function getQueryParams () {
var
parts
=
qs
.
split
(
'&'
);
var
parts
=
qs
.
split
(
'&'
);
for
(
var
x
in
parts
)
{
for
(
var
x
in
parts
)
{
var
keyValue
=
parts
[
x
].
split
(
'='
);
var
keyValue
=
parts
[
x
].
split
(
'='
);
if
(
keyValue
[
0
]
!==
''
)
params
[
keyValue
[
0
]]
=
keyValue
[
1
];
if
(
keyValue
[
0
]
!==
''
)
{
params
[
keyValue
[
0
]]
=
keyValue
[
1
];
}
}
}
return
params
;
return
params
;
}
}
...
...
src/app/renderer.js
View file @
60ebbee3
...
@@ -25,18 +25,20 @@ function Renderer (editor, compiler, updateFiles) {
...
@@ -25,18 +25,20 @@ function Renderer (editor, compiler, updateFiles) {
function
setProviderFromEndpoint
()
{
function
setProviderFromEndpoint
()
{
var
endpoint
=
$web3endpoint
.
val
();
var
endpoint
=
$web3endpoint
.
val
();
if
(
endpoint
===
'ipc'
)
if
(
endpoint
===
'ipc'
)
{
web3
.
setProvider
(
new
web3
.
providers
.
IpcProvider
());
web3
.
setProvider
(
new
web3
.
providers
.
IpcProvider
());
else
}
else
{
web3
.
setProvider
(
new
web3
.
providers
.
HttpProvider
(
endpoint
));
web3
.
setProvider
(
new
web3
.
providers
.
HttpProvider
(
endpoint
));
}
}
}
var
$vmToggle
=
$
(
'#vm'
);
var
$vmToggle
=
$
(
'#vm'
);
var
$web3Toggle
=
$
(
'#web3'
);
var
$web3Toggle
=
$
(
'#web3'
);
var
$web3endpoint
=
$
(
'#web3Endpoint'
);
var
$web3endpoint
=
$
(
'#web3Endpoint'
);
if
(
web3
.
providers
&&
web3
.
currentProvider
instanceof
web3
.
providers
.
IpcProvider
)
if
(
web3
.
providers
&&
web3
.
currentProvider
instanceof
web3
.
providers
.
IpcProvider
)
{
$web3endpoint
.
val
(
'ipc'
);
$web3endpoint
.
val
(
'ipc'
);
}
$vmToggle
.
get
(
0
).
checked
=
true
;
$vmToggle
.
get
(
0
).
checked
=
true
;
...
@@ -44,7 +46,9 @@ function Renderer (editor, compiler, updateFiles) {
...
@@ -44,7 +46,9 @@ function Renderer (editor, compiler, updateFiles) {
$web3Toggle
.
on
(
'change'
,
executionContextChange
);
$web3Toggle
.
on
(
'change'
,
executionContextChange
);
$web3endpoint
.
on
(
'change'
,
function
()
{
$web3endpoint
.
on
(
'change'
,
function
()
{
setProviderFromEndpoint
();
setProviderFromEndpoint
();
if
(
executionContext
===
'web3'
)
compiler
.
compile
();
if
(
executionContext
===
'web3'
)
{
compiler
.
compile
();
}
});
});
})();
})();
...
@@ -126,13 +130,16 @@ function Renderer (editor, compiler, updateFiles) {
...
@@ -126,13 +130,16 @@ function Renderer (editor, compiler, updateFiles) {
var
$txOrigin
=
$
(
'#txorigin'
);
var
$txOrigin
=
$
(
'#txorigin'
);
function
renderAccounts
(
err
,
accounts
)
{
function
renderAccounts
(
err
,
accounts
)
{
if
(
err
)
if
(
err
)
{
renderError
(
err
.
message
);
renderError
(
err
.
message
);
}
if
(
accounts
&&
accounts
[
0
])
{
if
(
accounts
&&
accounts
[
0
])
{
$txOrigin
.
empty
();
$txOrigin
.
empty
();
for
(
var
a
in
accounts
)
{
$txOrigin
.
append
(
$
(
'<option />'
).
val
(
accounts
[
a
]).
text
(
accounts
[
a
]));
}
for
(
var
a
in
accounts
)
{
$txOrigin
.
append
(
$
(
'<option />'
).
val
(
accounts
[
a
]).
text
(
accounts
[
a
]));
}
$txOrigin
.
val
(
accounts
[
0
]);
$txOrigin
.
val
(
accounts
[
0
]);
}
else
$txOrigin
.
val
(
'unknown'
);
}
else
{
$txOrigin
.
val
(
'unknown'
);
}
}
}
dapp
.
getAccounts
(
renderAccounts
);
dapp
.
getAccounts
(
renderAccounts
);
...
@@ -173,17 +180,18 @@ function Renderer (editor, compiler, updateFiles) {
...
@@ -173,17 +180,18 @@ function Renderer (editor, compiler, updateFiles) {
details
.
append
(
$
(
'<pre/>'
).
text
(
funHashes
));
details
.
append
(
$
(
'<pre/>'
).
text
(
funHashes
));
details
.
append
(
$
(
'<span class="col1">Gas Estimates</span>'
));
details
.
append
(
$
(
'<span class="col1">Gas Estimates</span>'
));
details
.
append
(
$
(
'<pre/>'
).
text
(
formatGasEstimates
(
contract
.
gasEstimates
)));
details
.
append
(
$
(
'<pre/>'
).
text
(
formatGasEstimates
(
contract
.
gasEstimates
)));
if
(
contract
.
runtimeBytecode
&&
contract
.
runtimeBytecode
.
length
>
0
)
if
(
contract
.
runtimeBytecode
&&
contract
.
runtimeBytecode
.
length
>
0
)
{
details
.
append
(
tableRow
(
'Runtime Bytecode'
,
contract
.
runtimeBytecode
));
details
.
append
(
tableRow
(
'Runtime Bytecode'
,
contract
.
runtimeBytecode
));
if
(
contract
.
assembly
!==
null
)
}
{
if
(
contract
.
assembly
!==
null
)
{
details
.
append
(
$
(
'<span class="col1">Assembly</span>'
));
details
.
append
(
$
(
'<span class="col1">Assembly</span>'
));
var
assembly
=
$
(
'<pre/>'
).
text
(
formatAssemblyText
(
contract
.
assembly
,
''
,
source
));
var
assembly
=
$
(
'<pre/>'
).
text
(
formatAssemblyText
(
contract
.
assembly
,
''
,
source
));
details
.
append
(
assembly
);
details
.
append
(
assembly
);
}
}
button
.
click
(
function
()
{
detailsOpen
[
contractName
]
=
!
detailsOpen
[
contractName
];
details
.
toggle
();
});
button
.
click
(
function
()
{
detailsOpen
[
contractName
]
=
!
detailsOpen
[
contractName
];
details
.
toggle
();
});
if
(
detailsOpen
[
contractName
])
if
(
detailsOpen
[
contractName
])
{
details
.
show
();
details
.
show
();
}
return
$
(
'<div class="contractDetails"/>'
).
append
(
button
).
append
(
details
);
return
$
(
'<div class="contractDetails"/>'
).
append
(
button
).
append
(
details
);
};
};
...
@@ -191,38 +199,46 @@ function Renderer (editor, compiler, updateFiles) {
...
@@ -191,38 +199,46 @@ function Renderer (editor, compiler, updateFiles) {
var
gasToText
=
function
(
g
)
{
return
g
===
null
?
'unknown'
:
g
;
}
var
gasToText
=
function
(
g
)
{
return
g
===
null
?
'unknown'
:
g
;
}
var
text
=
''
;
var
text
=
''
;
var
fun
;
var
fun
;
if
(
'creation'
in
data
)
if
(
'creation'
in
data
)
{
text
+=
'Creation: '
+
gasToText
(
data
.
creation
[
0
])
+
' + '
+
gasToText
(
data
.
creation
[
1
])
+
'
\
n'
;
text
+=
'Creation: '
+
gasToText
(
data
.
creation
[
0
])
+
' + '
+
gasToText
(
data
.
creation
[
1
])
+
'
\
n'
;
}
text
+=
'External:
\
n'
;
text
+=
'External:
\
n'
;
for
(
fun
in
data
.
external
)
for
(
fun
in
data
.
external
)
{
text
+=
' '
+
fun
+
': '
+
gasToText
(
data
.
external
[
fun
])
+
'
\
n'
;
text
+=
' '
+
fun
+
': '
+
gasToText
(
data
.
external
[
fun
])
+
'
\
n'
;
}
text
+=
'Internal:
\
n'
;
text
+=
'Internal:
\
n'
;
for
(
fun
in
data
.
internal
)
for
(
fun
in
data
.
internal
)
{
text
+=
' '
+
fun
+
': '
+
gasToText
(
data
.
internal
[
fun
])
+
'
\
n'
;
text
+=
' '
+
fun
+
': '
+
gasToText
(
data
.
internal
[
fun
])
+
'
\
n'
;
}
return
text
;
return
text
;
};
};
var
formatAssemblyText
=
function
(
asm
,
prefix
,
source
)
{
var
formatAssemblyText
=
function
(
asm
,
prefix
,
source
)
{
if
(
typeof
asm
===
typeof
''
||
asm
===
null
||
asm
===
undefined
)
if
(
typeof
asm
===
typeof
''
||
asm
===
null
||
asm
===
undefined
)
{
return
prefix
+
asm
+
'
\
n'
;
return
prefix
+
asm
+
'
\
n'
;
}
var
text
=
prefix
+
'.code
\
n'
;
var
text
=
prefix
+
'.code
\
n'
;
$
.
each
(
asm
[
'.code'
],
function
(
i
,
item
)
{
$
.
each
(
asm
[
'.code'
],
function
(
i
,
item
)
{
var
v
=
item
.
value
===
undefined
?
''
:
item
.
value
;
var
v
=
item
.
value
===
undefined
?
''
:
item
.
value
;
var
src
=
''
;
var
src
=
''
;
if
(
item
.
begin
!==
undefined
&&
item
.
end
!==
undefined
)
if
(
item
.
begin
!==
undefined
&&
item
.
end
!==
undefined
)
{
src
=
source
.
slice
(
item
.
begin
,
item
.
end
).
replace
(
'
\
n'
,
'
\\
n'
,
'g'
);
src
=
source
.
slice
(
item
.
begin
,
item
.
end
).
replace
(
'
\
n'
,
'
\\
n'
,
'g'
);
if
(
src
.
length
>
30
)
}
if
(
src
.
length
>
30
)
{
src
=
src
.
slice
(
0
,
30
)
+
'...'
;
src
=
src
.
slice
(
0
,
30
)
+
'...'
;
if
(
item
.
name
!==
'tag'
)
}
if
(
item
.
name
!==
'tag'
)
{
text
+=
' '
;
text
+=
' '
;
}
text
+=
prefix
+
item
.
name
+
' '
+
v
+
'
\
t
\
t
\
t'
+
src
+
'
\
n'
;
text
+=
prefix
+
item
.
name
+
' '
+
v
+
'
\
t
\
t
\
t'
+
src
+
'
\
n'
;
});
});
text
+=
prefix
+
'.data
\
n'
;
text
+=
prefix
+
'.data
\
n'
;
if
(
asm
[
'.data'
])
if
(
asm
[
'.data'
])
{
$
.
each
(
asm
[
'.data'
],
function
(
i
,
item
)
{
$
.
each
(
asm
[
'.data'
],
function
(
i
,
item
)
{
text
+=
' '
+
prefix
+
''
+
i
+
':
\
n'
;
text
+=
' '
+
prefix
+
''
+
i
+
':
\
n'
;
text
+=
formatAssemblyText
(
item
,
prefix
+
' '
,
source
);
text
+=
formatAssemblyText
(
item
,
prefix
+
' '
,
source
);
});
});
}
return
text
;
return
text
;
};
};
...
@@ -259,11 +275,12 @@ function Renderer (editor, compiler, updateFiles) {
...
@@ -259,11 +275,12 @@ function Renderer (editor, compiler, updateFiles) {
function
getConstructorInterface
(
abi
)
{
function
getConstructorInterface
(
abi
)
{
var
funABI
=
{
'name'
:
''
,
'inputs'
:
[],
'type'
:
'constructor'
,
'outputs'
:
[]
};
var
funABI
=
{
'name'
:
''
,
'inputs'
:
[],
'type'
:
'constructor'
,
'outputs'
:
[]
};
for
(
var
i
=
0
;
i
<
abi
.
length
;
i
++
)
for
(
var
i
=
0
;
i
<
abi
.
length
;
i
++
)
{
if
(
abi
[
i
].
type
===
'constructor'
)
{
if
(
abi
[
i
].
type
===
'constructor'
)
{
funABI
.
inputs
=
abi
[
i
].
inputs
||
[];
funABI
.
inputs
=
abi
[
i
].
inputs
||
[];
break
;
break
;
}
}
}
return
funABI
;
return
funABI
;
}
}
...
...
src/app/storage-handler.js
View file @
60ebbee3
...
@@ -4,7 +4,9 @@ function StorageHandler (updateFiles) {
...
@@ -4,7 +4,9 @@ function StorageHandler (updateFiles) {
this
.
sync
=
function
()
{
this
.
sync
=
function
()
{
if
(
typeof
chrome
===
'undefined'
||
!
chrome
||
!
chrome
.
storage
||
!
chrome
.
storage
.
sync
)
return
;
if
(
typeof
chrome
===
'undefined'
||
!
chrome
||
!
chrome
.
storage
||
!
chrome
.
storage
.
sync
)
{
return
;
}
var
obj
=
{};
var
obj
=
{};
var
done
=
false
;
var
done
=
false
;
...
@@ -23,16 +25,20 @@ function StorageHandler (updateFiles) {
...
@@ -23,16 +25,20 @@ function StorageHandler (updateFiles) {
obj
[
key
]
=
localStorage
[
key
];
obj
[
key
]
=
localStorage
[
key
];
}
}
done
++
;
done
++
;
if
(
done
>=
count
)
chrome
.
storage
.
sync
.
set
(
obj
,
function
()
{
if
(
done
>=
count
)
{
console
.
log
(
'updated cloud files with: '
,
obj
,
this
,
arguments
);
chrome
.
storage
.
sync
.
set
(
obj
,
function
()
{
})
console
.
log
(
'updated cloud files with: '
,
obj
,
this
,
arguments
);
})
}
})
})
}
}
for
(
var
y
in
window
.
localStorage
)
{
for
(
var
y
in
window
.
localStorage
)
{
console
.
log
(
'checking'
,
y
);
console
.
log
(
'checking'
,
y
);
obj
[
y
]
=
window
.
localStorage
.
getItem
(
y
);
obj
[
y
]
=
window
.
localStorage
.
getItem
(
y
);
if
(
y
.
indexOf
(
utils
.
getCacheFilePrefix
())
!==
0
)
continue
;
if
(
y
.
indexOf
(
utils
.
getCacheFilePrefix
())
!==
0
)
{
continue
;
}
count
++
;
count
++
;
check
(
y
);
check
(
y
);
}
}
...
...
src/universal-dapp.js
View file @
60ebbee3
...
@@ -50,7 +50,9 @@ UniversalDApp.prototype.getAccounts = function (cb) {
...
@@ -50,7 +50,9 @@ UniversalDApp.prototype.getAccounts = function (cb) {
if
(
!
this
.
vm
)
{
if
(
!
this
.
vm
)
{
this
.
web3
.
eth
.
getAccounts
(
cb
);
this
.
web3
.
eth
.
getAccounts
(
cb
);
}
else
{
}
else
{
if
(
!
this
.
accounts
)
return
cb
(
'No accounts?'
);
if
(
!
this
.
accounts
)
{
return
cb
(
'No accounts?'
);
}
cb
(
null
,
Object
.
keys
(
this
.
accounts
));
cb
(
null
,
Object
.
keys
(
this
.
accounts
));
}
}
...
@@ -68,7 +70,9 @@ UniversalDApp.prototype.getBalance = function (address, cb) {
...
@@ -68,7 +70,9 @@ UniversalDApp.prototype.getBalance = function (address, cb) {
}
}
});
});
}
else
{
}
else
{
if
(
!
this
.
accounts
)
return
cb
(
'No accounts?'
);
if
(
!
this
.
accounts
)
{
return
cb
(
'No accounts?'
);
}
this
.
vm
.
stateManager
.
getAccountBalance
(
new
Buffer
(
address
,
'hex'
),
function
(
err
,
res
)
{
this
.
vm
.
stateManager
.
getAccountBalance
(
new
Buffer
(
address
,
'hex'
),
function
(
err
,
res
)
{
if
(
err
)
{
if
(
err
)
{
...
@@ -113,9 +117,11 @@ UniversalDApp.prototype.render = function () {
...
@@ -113,9 +117,11 @@ UniversalDApp.prototype.render = function () {
};
};
UniversalDApp
.
prototype
.
getContractByName
=
function
(
contractName
)
{
UniversalDApp
.
prototype
.
getContractByName
=
function
(
contractName
)
{
for
(
var
c
in
this
.
contracts
)
for
(
var
c
in
this
.
contracts
)
{
if
(
this
.
contracts
[
c
].
name
===
contractName
)
if
(
this
.
contracts
[
c
].
name
===
contractName
)
{
return
this
.
contracts
[
c
];
return
this
.
contracts
[
c
];
}
}
return
null
;
return
null
;
};
};
...
@@ -162,11 +168,17 @@ UniversalDApp.prototype.getCreateInterface = function ($container, contract) {
...
@@ -162,11 +168,17 @@ UniversalDApp.prototype.getCreateInterface = function ($container, contract) {
UniversalDApp
.
prototype
.
getInstanceInterface
=
function
(
contract
,
address
,
$target
)
{
UniversalDApp
.
prototype
.
getInstanceInterface
=
function
(
contract
,
address
,
$target
)
{
var
self
=
this
;
var
self
=
this
;
var
abi
=
JSON
.
parse
(
contract
.
interface
).
sort
(
function
(
a
,
b
)
{
var
abi
=
JSON
.
parse
(
contract
.
interface
).
sort
(
function
(
a
,
b
)
{
if
(
a
.
name
>
b
.
name
)
return
-
1
;
if
(
a
.
name
>
b
.
name
)
{
else
return
1
;
return
-
1
;
}
else
{
return
1
;
}
}).
sort
(
function
(
a
,
b
)
{
}).
sort
(
function
(
a
,
b
)
{
if
(
a
.
constant
===
true
)
return
-
1
;
if
(
a
.
constant
===
true
)
{
else
return
1
;
return
-
1
;
}
else
{
return
1
;
}
});
});
var
web3contract
=
this
.
web3
.
eth
.
contract
(
abi
);
var
web3contract
=
this
.
web3
.
eth
.
contract
(
abi
);
var
funABI
=
this
.
getConstructorInterface
(
abi
);
var
funABI
=
this
.
getConstructorInterface
(
abi
);
...
@@ -189,8 +201,9 @@ UniversalDApp.prototype.getInstanceInterface = function (contract, address, $tar
...
@@ -189,8 +201,9 @@ UniversalDApp.prototype.getInstanceInterface = function (contract, address, $tar
var
$events
=
$
(
'<div class="events"/>'
);
var
$events
=
$
(
'<div class="events"/>'
);
var
parseLogs
=
function
(
err
,
response
)
{
var
parseLogs
=
function
(
err
,
response
)
{
if
(
err
)
if
(
err
)
{
return
;
return
;
}
var
$event
=
$
(
'<div class="event" />'
);
var
$event
=
$
(
'<div class="event" />'
);
...
@@ -209,7 +222,9 @@ UniversalDApp.prototype.getInstanceInterface = function (contract, address, $tar
...
@@ -209,7 +222,9 @@ UniversalDApp.prototype.getInstanceInterface = function (contract, address, $tar
var
eventABI
=
{};
var
eventABI
=
{};
$
.
each
(
abi
,
function
(
i
,
funABI
)
{
$
.
each
(
abi
,
function
(
i
,
funABI
)
{
if
(
funABI
.
type
!==
'event'
)
return
;
if
(
funABI
.
type
!==
'event'
)
{
return
;
}
var
hash
=
ethJSABI
.
eventID
(
funABI
.
name
,
funABI
.
inputs
.
map
(
function
(
item
)
{
return
item
.
type
;
}));
var
hash
=
ethJSABI
.
eventID
(
funABI
.
name
,
funABI
.
inputs
.
map
(
function
(
item
)
{
return
item
.
type
;
}));
eventABI
[
hash
.
toString
(
'hex'
)]
=
{
event
:
funABI
.
name
,
inputs
:
funABI
.
inputs
};
eventABI
[
hash
.
toString
(
'hex'
)]
=
{
event
:
funABI
.
name
,
inputs
:
funABI
.
inputs
};
...
@@ -252,7 +267,9 @@ UniversalDApp.prototype.getInstanceInterface = function (contract, address, $tar
...
@@ -252,7 +267,9 @@ UniversalDApp.prototype.getInstanceInterface = function (contract, address, $tar
}));
}));
$
.
each
(
abi
,
function
(
i
,
funABI
)
{
$
.
each
(
abi
,
function
(
i
,
funABI
)
{
if
(
funABI
.
type
!==
'function'
)
return
;
if
(
funABI
.
type
!==
'function'
)
{
return
;
}
// @todo getData cannot be used with overloaded functions
// @todo getData cannot be used with overloaded functions
$instance
.
append
(
self
.
getCallButton
({
$instance
.
append
(
self
.
getCallButton
({
abi
:
funABI
,
abi
:
funABI
,
...
@@ -286,11 +303,12 @@ UniversalDApp.prototype.getInstanceInterface = function (contract, address, $tar
...
@@ -286,11 +303,12 @@ UniversalDApp.prototype.getInstanceInterface = function (contract, address, $tar
UniversalDApp
.
prototype
.
getConstructorInterface
=
function
(
abi
)
{
UniversalDApp
.
prototype
.
getConstructorInterface
=
function
(
abi
)
{
var
funABI
=
{
'name'
:
''
,
'inputs'
:
[],
'type'
:
'constructor'
,
'outputs'
:
[]
};
var
funABI
=
{
'name'
:
''
,
'inputs'
:
[],
'type'
:
'constructor'
,
'outputs'
:
[]
};
for
(
var
i
=
0
;
i
<
abi
.
length
;
i
++
)
for
(
var
i
=
0
;
i
<
abi
.
length
;
i
++
)
{
if
(
abi
[
i
].
type
===
'constructor'
)
{
if
(
abi
[
i
].
type
===
'constructor'
)
{
funABI
.
inputs
=
abi
[
i
].
inputs
||
[];
funABI
.
inputs
=
abi
[
i
].
inputs
||
[];
break
;
break
;
}
}
}
return
funABI
;
return
funABI
;
};
};
...
@@ -303,7 +321,9 @@ UniversalDApp.prototype.getCallButton = function (args) {
...
@@ -303,7 +321,9 @@ UniversalDApp.prototype.getCallButton = function (args) {
var
inputs
=
''
;
var
inputs
=
''
;
$
.
each
(
args
.
abi
.
inputs
,
function
(
i
,
inp
)
{
$
.
each
(
args
.
abi
.
inputs
,
function
(
i
,
inp
)
{
if
(
inputs
!==
''
)
inputs
+=
', '
;
if
(
inputs
!==
''
)
{
inputs
+=
', '
;
}
inputs
+=
inp
.
type
+
' '
+
inp
.
name
;
inputs
+=
inp
.
type
+
' '
+
inp
.
name
;
});
});
var
inputField
=
$
(
'<input/>'
).
attr
(
'placeholder'
,
inputs
).
attr
(
'title'
,
inputs
);
var
inputField
=
$
(
'<input/>'
).
attr
(
'placeholder'
,
inputs
).
attr
(
'title'
,
inputs
);
...
@@ -363,10 +383,11 @@ UniversalDApp.prototype.getCallButton = function (args) {
...
@@ -363,10 +383,11 @@ UniversalDApp.prototype.getCallButton = function (args) {
var
handleCallButtonClick
=
function
(
ev
,
$result
)
{
var
handleCallButtonClick
=
function
(
ev
,
$result
)
{
if
(
!
$result
)
{
if
(
!
$result
)
{
$result
=
getOutput
();
$result
=
getOutput
();
if
(
lookupOnly
&&
!
inputs
.
length
)
if
(
lookupOnly
&&
!
inputs
.
length
)
{
$outputOverride
.
empty
().
append
(
$result
);
$outputOverride
.
empty
().
append
(
$result
);
else
}
else
{
outputSpan
.
append
(
$result
);
outputSpan
.
append
(
$result
);
}
}
}
var
funArgs
=
''
;
var
funArgs
=
''
;
...
@@ -385,29 +406,34 @@ UniversalDApp.prototype.getCallButton = function (args) {
...
@@ -385,29 +406,34 @@ UniversalDApp.prototype.getCallButton = function (args) {
return
;
return
;
}
}
}
}
if
(
data
.
slice
(
0
,
9
)
===
'undefined'
)
if
(
data
.
slice
(
0
,
9
)
===
'undefined'
)
{
data
=
data
.
slice
(
9
);
data
=
data
.
slice
(
9
);
if
(
data
.
slice
(
0
,
2
)
===
'0x'
)
data
=
data
.
slice
(
2
);
}
if
(
data
.
slice
(
0
,
2
)
===
'0x'
)
{
data
=
data
.
slice
(
2
);
}
replaceOutput
(
$result
,
$
(
'<span>Waiting for transaction to be mined...</span>'
));
replaceOutput
(
$result
,
$
(
'<span>Waiting for transaction to be mined...</span>'
));
if
(
isConstructor
)
{
if
(
isConstructor
)
{
if
(
args
.
bytecode
.
indexOf
(
'_'
)
>=
0
)
{
if
(
args
.
bytecode
.
indexOf
(
'_'
)
>=
0
)
{
replaceOutput
(
$result
,
$
(
'<span>Deploying and linking required libraries...</span>'
));
replaceOutput
(
$result
,
$
(
'<span>Deploying and linking required libraries...</span>'
));
if
(
self
.
options
.
vm
)
if
(
self
.
options
.
vm
)
{
self
.
linkBytecode
(
args
.
contractName
,
function
(
err
,
bytecode
)
{
self
.
linkBytecode
(
args
.
contractName
,
function
(
err
,
bytecode
)
{
if
(
err
)
if
(
err
)
{
replaceOutput
(
$result
,
$
(
'<span/>'
).
text
(
'Error deploying required libraries: '
+
err
));
replaceOutput
(
$result
,
$
(
'<span/>'
).
text
(
'Error deploying required libraries: '
+
err
));
else
{
}
else
{
args
.
bytecode
=
bytecode
;
args
.
bytecode
=
bytecode
;
handleCallButtonClick
(
ev
,
$result
);
handleCallButtonClick
(
ev
,
$result
);
}
}
});
});
else
}
else
{
replaceOutput
(
$result
,
$
(
'<span>Contract needs to be linked to a library, this is only supported in the JavaScript VM for now.</span>'
));
replaceOutput
(
$result
,
$
(
'<span>Contract needs to be linked to a library, this is only supported in the JavaScript VM for now.</span>'
));
}
return
;
return
;
}
else
}
else
{
data
=
args
.
bytecode
+
data
;
data
=
args
.
bytecode
+
data
;
}
}
}
self
.
runTx
(
data
,
args
,
function
(
err
,
result
)
{
self
.
runTx
(
data
,
args
,
function
(
err
,
result
)
{
...
@@ -462,13 +488,16 @@ UniversalDApp.prototype.getCallButton = function (args) {
...
@@ -462,13 +488,16 @@ UniversalDApp.prototype.getCallButton = function (args) {
function
testResult
(
err
,
address
)
{
function
testResult
(
err
,
address
)
{
if
(
!
err
&&
!
address
)
{
if
(
!
err
&&
!
address
)
{
setTimeout
(
function
()
{
tryTillResponse
(
txhash
,
done
);
},
500
);
setTimeout
(
function
()
{
tryTillResponse
(
txhash
,
done
);
},
500
);
}
else
done
(
err
,
address
);
}
else
{
done
(
err
,
address
);
}
}
}
}
}
tryTillResponse
(
result
,
function
(
err
,
result
)
{
tryTillResponse
(
result
,
function
(
err
,
result
)
{
if
(
err
)
replaceOutput
(
$result
,
$
(
'<span/>'
).
text
(
err
).
addClass
(
'error'
));
if
(
err
)
{
else
if
(
isConstructor
)
{
replaceOutput
(
$result
,
$
(
'<span/>'
).
text
(
err
).
addClass
(
'error'
));
}
else
if
(
isConstructor
)
{
$result
.
html
(
''
);
$result
.
html
(
''
);
args
.
appendFunctions
(
result
.
contractAddress
);
args
.
appendFunctions
(
result
.
contractAddress
);
}
else
{
}
else
{
...
@@ -503,41 +532,52 @@ UniversalDApp.prototype.getCallButton = function (args) {
...
@@ -503,41 +532,52 @@ UniversalDApp.prototype.getCallButton = function (args) {
UniversalDApp
.
prototype
.
linkBytecode
=
function
(
contractName
,
cb
)
{
UniversalDApp
.
prototype
.
linkBytecode
=
function
(
contractName
,
cb
)
{
var
bytecode
=
this
.
getContractByName
(
contractName
).
bytecode
;
var
bytecode
=
this
.
getContractByName
(
contractName
).
bytecode
;
if
(
bytecode
.
indexOf
(
'_'
)
<
0
)
if
(
bytecode
.
indexOf
(
'_'
)
<
0
)
{
return
cb
(
null
,
bytecode
);
return
cb
(
null
,
bytecode
);
}
var
m
=
bytecode
.
match
(
/__
([^
_
]{1,36})
__/
);
var
m
=
bytecode
.
match
(
/__
([^
_
]{1,36})
__/
);
if
(
!
m
)
if
(
!
m
)
{
return
cb
(
'Invalid bytecode format.'
);
return
cb
(
'Invalid bytecode format.'
);
}
var
libraryName
=
m
[
1
];
var
libraryName
=
m
[
1
];
if
(
!
this
.
getContractByName
(
libraryName
))
if
(
!
this
.
getContractByName
(
libraryName
))
{
return
cb
(
'Library '
+
libraryName
+
' not found.'
);
return
cb
(
'Library '
+
libraryName
+
' not found.'
);
}
var
self
=
this
;
var
self
=
this
;
this
.
deployLibrary
(
libraryName
,
function
(
err
,
address
)
{
this
.
deployLibrary
(
libraryName
,
function
(
err
,
address
)
{
if
(
err
)
return
cb
(
err
);
if
(
err
)
{
return
cb
(
err
);
}
var
libLabel
=
'__'
+
libraryName
+
Array
(
39
-
libraryName
.
length
).
join
(
'_'
);
var
libLabel
=
'__'
+
libraryName
+
Array
(
39
-
libraryName
.
length
).
join
(
'_'
);
var
hexAddress
=
address
.
toString
(
'hex'
);
var
hexAddress
=
address
.
toString
(
'hex'
);
if
(
hexAddress
.
slice
(
0
,
2
)
===
'0x'
)
hexAddress
=
hexAddress
.
slice
(
2
);
if
(
hexAddress
.
slice
(
0
,
2
)
===
'0x'
)
{
hexAddress
=
hexAddress
.
slice
(
2
);
}
hexAddress
=
Array
(
40
-
hexAddress
.
length
+
1
).
join
(
'0'
)
+
hexAddress
;
hexAddress
=
Array
(
40
-
hexAddress
.
length
+
1
).
join
(
'0'
)
+
hexAddress
;
while
(
bytecode
.
indexOf
(
libLabel
)
>=
0
)
while
(
bytecode
.
indexOf
(
libLabel
)
>=
0
)
{
bytecode
=
bytecode
.
replace
(
libLabel
,
hexAddress
);
bytecode
=
bytecode
.
replace
(
libLabel
,
hexAddress
);
}
self
.
getContractByName
(
contractName
).
bytecode
=
bytecode
;
self
.
getContractByName
(
contractName
).
bytecode
=
bytecode
;
self
.
linkBytecode
(
contractName
,
cb
);
self
.
linkBytecode
(
contractName
,
cb
);
});
});
};
};
UniversalDApp
.
prototype
.
deployLibrary
=
function
(
contractName
,
cb
)
{
UniversalDApp
.
prototype
.
deployLibrary
=
function
(
contractName
,
cb
)
{
if
(
this
.
getContractByName
(
contractName
).
address
)
if
(
this
.
getContractByName
(
contractName
).
address
)
{
return
cb
(
null
,
this
.
getContractByName
(
contractName
).
address
);
return
cb
(
null
,
this
.
getContractByName
(
contractName
).
address
);
}
var
self
=
this
;
var
self
=
this
;
var
bytecode
=
this
.
getContractByName
(
contractName
).
bytecode
;
var
bytecode
=
this
.
getContractByName
(
contractName
).
bytecode
;
if
(
bytecode
.
indexOf
(
'_'
)
>=
0
)
if
(
bytecode
.
indexOf
(
'_'
)
>=
0
)
{
this
.
linkBytecode
(
contractName
,
function
(
err
,
bytecode
)
{
this
.
linkBytecode
(
contractName
,
function
(
err
,
bytecode
)
{
if
(
err
)
cb
(
err
);
if
(
err
)
cb
(
err
);
else
self
.
deployLibrary
(
contractName
,
cb
);
else
self
.
deployLibrary
(
contractName
,
cb
);
});
});
else
{
}
else
{
this
.
runTx
(
bytecode
,
{
abi
:
{
constant
:
false
},
bytecode
:
bytecode
},
function
(
err
,
result
)
{
this
.
runTx
(
bytecode
,
{
abi
:
{
constant
:
false
},
bytecode
:
bytecode
},
function
(
err
,
result
)
{
if
(
err
)
return
cb
(
err
);
if
(
err
)
{
return
cb
(
err
);
}
self
.
getContractByName
(
contractName
).
address
=
result
.
createdAddress
;
self
.
getContractByName
(
contractName
).
address
=
result
.
createdAddress
;
cb
(
err
,
result
.
createdAddress
);
cb
(
err
,
result
.
createdAddress
);
});
});
...
@@ -554,8 +594,9 @@ UniversalDApp.prototype.runTx = function (data, args, cb) {
...
@@ -554,8 +594,9 @@ UniversalDApp.prototype.runTx = function (data, args, cb) {
var
to
=
args
.
address
;
var
to
=
args
.
address
;
var
constant
=
args
.
abi
.
constant
;
var
constant
=
args
.
abi
.
constant
;
var
isConstructor
=
args
.
bytecode
!==
undefined
;
var
isConstructor
=
args
.
bytecode
!==
undefined
;
if
(
data
.
slice
(
0
,
2
)
!==
'0x'
)
if
(
data
.
slice
(
0
,
2
)
!==
'0x'
)
{
data
=
'0x'
+
data
;
data
=
'0x'
+
data
;
}
var
gas
=
self
.
options
.
getGas
?
self
.
options
.
getGas
:
1000000
;
var
gas
=
self
.
options
.
getGas
?
self
.
options
.
getGas
:
1000000
;
...
@@ -582,8 +623,11 @@ UniversalDApp.prototype.runTx = function (data, args, cb) {
...
@@ -582,8 +623,11 @@ UniversalDApp.prototype.runTx = function (data, args, cb) {
}
else
{
}
else
{
this
.
web3
.
eth
.
estimateGas
(
tx
,
function
(
err
,
resp
)
{
this
.
web3
.
eth
.
estimateGas
(
tx
,
function
(
err
,
resp
)
{
tx
.
gas
=
resp
;
tx
.
gas
=
resp
;
if
(
!
err
)
self
.
web3
.
eth
.
sendTransaction
(
tx
,
cb
);
if
(
!
err
)
{
else
cb
(
err
,
resp
);
self
.
web3
.
eth
.
sendTransaction
(
tx
,
cb
);
}
else
{
cb
(
err
,
resp
);
}
});
});
}
}
}
else
{
}
else
{
...
...
src/web3-adapter.js
View file @
60ebbee3
...
@@ -3,9 +3,10 @@
...
@@ -3,9 +3,10 @@
var
Web3
=
require
(
'web3'
);
var
Web3
=
require
(
'web3'
);
if
(
typeof
web3
!==
'undefined'
)
if
(
typeof
web3
!==
'undefined'
)
{
web3
=
new
Web3
(
web3
.
currentProvider
);
web3
=
new
Web3
(
web3
.
currentProvider
);
else
}
else
{
web3
=
new
Web3
(
new
Web3
.
providers
.
HttpProvider
(
'http://localhost:8545'
));
web3
=
new
Web3
(
new
Web3
.
providers
.
HttpProvider
(
'http://localhost:8545'
));
}
module
.
exports
=
web3
;
module
.
exports
=
web3
;
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