Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
ea8db7a4
Commit
ea8db7a4
authored
Nov 14, 2014
by
Marek Kotewicz
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
improved contracts interface
parent
8aaec1d9
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
166 additions
and
21 deletions
+166
-21
ethereum.js
dist/ethereum.js
+5
-5
ethereum.js.map
dist/ethereum.js.map
+3
-3
ethereum.min.js
dist/ethereum.min.js
+1
-1
contract.html
example/contract.html
+75
-0
index.html
example/index.html
+1
-1
index.js
index.js
+0
-1
index_qt.js
index_qt.js
+0
-1
abi.js
lib/abi.js
+42
-6
main.js
lib/main.js
+39
-3
No files found.
dist/ethereum.js
View file @
ea8db7a4
This diff is collapsed.
Click to expand it.
dist/ethereum.js.map
View file @
ea8db7a4
This diff is collapsed.
Click to expand it.
dist/ethereum.min.js
View file @
ea8db7a4
This diff is collapsed.
Click to expand it.
example/contract.html
0 → 100644
View file @
ea8db7a4
<
!
doctype
>
<html>
<head>
<script
type=
"text/javascript"
src=
"js/es6-promise/promise.min.js"
></script>
<script
type=
"text/javascript"
src=
"../dist/ethereum.js"
></script>
<script
type=
"text/javascript"
>
var
web3
=
require
(
'web3'
);
web3
.
setProvider
(
new
web3
.
providers
.
AutoProvider
());
// solidity source code
var
source
=
""
+
"contract test {
\n
"
+
" function multiply(uint a) returns(uint d) {
\n
"
+
" return a * 7;
\n
"
+
" }
\n
"
+
"}
\n
"
;
// contract description, this will be autogenerated somehow
var
desc
=
[{
"name"
:
"multiply"
,
"inputs"
:
[
{
"name"
:
"a"
,
"type"
:
"uint256"
}
],
"outputs"
:
[
{
"name"
:
"d"
,
"type"
:
"uint256"
}
]
}];
var
contract
;
function
createExampleContract
()
{
// hide create button
document
.
getElementById
(
'create'
).
style
.
visibility
=
'hidden'
;
document
.
getElementById
(
'source'
).
innerText
=
source
;
// create contract
web3
.
eth
.
transact
({
code
:
web3
.
eth
.
solidity
(
source
)}).
then
(
function
(
address
)
{
contract
=
web3
.
contract
(
address
,
desc
);
document
.
getElementById
(
'call'
).
style
.
visibility
=
'visible'
;
});
}
function
callExampleContract
()
{
// this should be generated by ethereum
var
param
=
document
.
getElementById
(
'value'
).
value
;
// call the contract
contract
.
multiply
(
param
).
call
().
then
(
function
(
res
)
{
document
.
getElementById
(
'result'
).
innerText
=
res
[
0
];
});
}
</script>
</head>
<body>
<h1>
contract
</h1>
<div
id=
"source"
></div>
<div
id=
'create'
>
<button
type=
"button"
onClick=
"createExampleContract();"
>
create example contract
</button>
</div>
<div
id=
'call'
style=
'visibility: hidden;'
>
<input
type=
"number"
id=
"value"
onkeyup=
'callExampleContract()'
></input>
</div>
<div
id=
"result"
></div>
</body>
</html>
example/index.html
View file @
ea8db7a4
...
...
@@ -30,7 +30,7 @@
</script>
</head>
<body>
<h1>
balance
</h1>
<h1>
coinbase
balance
</h1>
<button
type=
"button"
onClick=
"watchBalance();"
>
watch balance
</button>
<div></div>
<div
id=
"original"
></div>
...
...
index.js
View file @
ea8db7a4
...
...
@@ -3,6 +3,5 @@ web3.providers.WebSocketProvider = require('./lib/websocket');
web3
.
providers
.
HttpRpcProvider
=
require
(
'./lib/httprpc'
);
web3
.
providers
.
QtProvider
=
require
(
'./lib/qt'
);
web3
.
providers
.
AutoProvider
=
require
(
'./lib/autoprovider'
);
web3
.
contract
=
require
(
'./lib/abi'
);
module
.
exports
=
web3
;
index_qt.js
View file @
ea8db7a4
var
web3
=
require
(
'./lib/main'
);
web3
.
providers
.
QtProvider
=
require
(
'./lib/qt'
);
web3
.
abi
=
require
(
'./lib/abi'
);
module
.
exports
=
web3
;
lib/abi.js
View file @
ea8db7a4
/*
This file is part of ethereum.js.
ethereum.js is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ethereum.js is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with ethereum.js. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file abi.js
* @authors:
* Marek Kotewicz <marek@ethdev.com>
* @date 2014
*/
var
findIndex
=
function
(
array
,
callback
)
{
var
end
=
false
;
...
...
@@ -71,7 +92,8 @@ var toAbiInput = function (json, methodName, params) {
for
(
var
i
=
0
;
i
<
method
.
inputs
.
length
;
i
++
)
{
var
found
=
false
;
for
(
var
j
=
0
;
j
<
inputTypes
.
length
&&
!
found
;
j
++
)
{
found
=
inputTypes
[
j
](
method
.
inputs
[
i
].
type
,
params
[
i
]);
var
val
=
parseInt
(
params
[
i
]).
toString
(
16
);
found
=
inputTypes
[
j
](
method
.
inputs
[
i
].
type
,
val
);
}
if
(
!
found
)
{
console
.
error
(
'unsupported json type: '
+
method
.
inputs
[
i
].
type
);
...
...
@@ -148,17 +170,31 @@ var fromAbiOutput = function (json, methodName, output) {
return
result
;
};
var
load
=
function
(
json
)
{
var
contract
=
{};
var
inputParser
=
function
(
json
)
{
var
parser
=
{};
json
.
forEach
(
function
(
method
)
{
contract
[
method
.
name
]
=
function
()
{
parser
[
method
.
name
]
=
function
()
{
var
params
=
Array
.
prototype
.
slice
.
call
(
arguments
);
return
toAbiInput
(
json
,
method
.
name
,
params
);
};
});
return
contract
;
return
parser
;
};
module
.
exports
=
load
;
var
outputParser
=
function
(
json
)
{
var
parser
=
{};
json
.
forEach
(
function
(
method
)
{
parser
[
method
.
name
]
=
function
(
output
)
{
return
fromAbiOutput
(
json
,
method
.
name
,
output
);
};
});
return
parser
;
};
module
.
exports
=
{
inputParser
:
inputParser
,
outputParser
:
outputParser
};
lib/main.js
View file @
ea8db7a4
...
...
@@ -22,6 +22,8 @@
* @date 2014
*/
var
abi
=
require
(
'./abi'
);
function
flattenPromise
(
obj
)
{
if
(
obj
instanceof
Promise
)
{
return
Promise
.
resolve
(
obj
);
...
...
@@ -292,9 +294,8 @@ var web3 = {
}
};
var
eth
=
web3
.
eth
;
setupMethods
(
eth
,
ethMethods
());
setupProperties
(
eth
,
ethProperties
());
setupMethods
(
web3
.
eth
,
ethMethods
());
setupProperties
(
web3
.
eth
,
ethProperties
());
setupMethods
(
web3
.
db
,
dbMethods
());
setupMethods
(
web3
.
shh
,
shhMethods
());
...
...
@@ -454,5 +455,40 @@ function messageHandler(data) {
}
}
web3
.
contract
=
function
(
address
,
desc
)
{
var
inputParser
=
abi
.
inputParser
(
desc
);
var
outputParser
=
abi
.
outputParser
(
desc
);
var
contract
=
{};
desc
.
forEach
(
function
(
method
)
{
contract
[
method
.
name
]
=
function
()
{
var
params
=
Array
.
prototype
.
slice
.
call
(
arguments
);
var
parsed
=
inputParser
[
method
.
name
].
apply
(
null
,
params
);
var
onSuccess
=
function
(
result
)
{
return
outputParser
[
method
.
name
](
result
);
};
return
{
call
:
function
(
extra
)
{
extra
=
extra
||
{};
extra
.
to
=
address
;
extra
.
data
=
parsed
;
return
web3
.
eth
.
call
(
extra
).
then
(
onSuccess
);
},
transact
:
function
(
extra
)
{
extra
=
extra
||
{};
extra
.
to
=
address
;
extra
.
data
=
parsed
;
return
web3
.
eth
.
transact
(
extra
).
then
(
onSuccess
);
}
};
};
});
return
contract
;
};
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