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
8b7e5972
Commit
8b7e5972
authored
Nov 18, 2014
by
Marian OANCΞA
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #10 from debris/abi
Abi
parents
dc100f85
8aaec1d9
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
208 additions
and
39 deletions
+208
-39
ethereum.js
dist/ethereum.js
+8
-6
ethereum.js.map
dist/ethereum.js.map
+5
-3
ethereum.min.js
dist/ethereum.min.js
+1
-1
index.html
example/index.html
+24
-27
index.js
index.js
+1
-0
index_qt.js
index_qt.js
+1
-0
abi.js
lib/abi.js
+164
-0
main.js
lib/main.js
+4
-2
No files found.
dist/ethereum.js
View file @
8b7e5972
This diff is collapsed.
Click to expand it.
dist/ethereum.js.map
View file @
8b7e5972
This diff is collapsed.
Click to expand it.
dist/ethereum.min.js
View file @
8b7e5972
This diff is collapsed.
Click to expand it.
example/index.html
View file @
8b7e5972
...
@@ -4,41 +4,38 @@
...
@@ -4,41 +4,38 @@
<head>
<head>
<script
type=
"text/javascript"
src=
"js/es6-promise/promise.min.js"
></script>
<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"
src=
"../dist/ethereum.js"
></script>
<script
type=
"text/javascript"
>
<script
type=
"text/javascript"
>
if
(
window
.
Promise
===
undefined
)
{
window
.
Promise
=
ES6Promise
.
Promise
;
var
web3
=
require
(
'web3'
)
;
}
web3
.
setProvider
(
new
web3
.
providers
.
AutoProvider
());
var
web3
=
require
(
'web3'
);
function
watchBalance
()
{
var
coinbase
=
web3
.
eth
.
coinbase
;
var
originalBalance
=
0
;
//web3.setProvider(new web3.providers.QtProvider());
web3
.
eth
.
balanceAt
(
coinbase
).
then
(
function
(
balance
)
{
//web3.setProvider(new web3.providers.HttpRpcProvider("http://localhost:8080")
);
originalBalance
=
web3
.
toDecimal
(
balance
);
// web3.setProvider(new web3.providers.WebSocketProvider("ws://localhost:40404/eth"))
;
document
.
getElementById
(
'original'
).
innerText
=
'original balance: '
+
originalBalance
+
' watching...'
;
web3
.
setProvider
(
new
web3
.
providers
.
AutoProvider
()
);
}
);
function
testSnippet
()
{
web3
.
eth
.
watch
({
altered
:
coinbase
}).
changed
(
function
()
{
web3
.
eth
.
watch
({
altered
:
web3
.
eth
.
coinbase
}).
changed
(
function
(
)
{
web3
.
eth
.
balanceAt
(
coinbase
).
then
(
function
(
balance
)
{
web3
.
eth
.
balanceAt
(
web3
.
eth
.
coinbase
).
then
(
function
(
balance
)
{
var
currentBalance
=
web3
.
toDecimal
(
balance
);
console
.
log
(
parseInt
(
balance
,
16
))
;
document
.
getElementById
(
"current"
).
innerText
=
'current: '
+
currentBalance
;
console
.
log
(
typeof
b
alance
);
document
.
getElementById
(
"diff"
).
innerText
=
'diff: '
+
(
currentBalance
-
originalB
alance
);
document
.
getElementById
(
"result"
).
innerText
=
+
balance
;
})
;
});
});
});
}
}
</script>
</script>
</head>
</head>
<body>
<body>
<h1>
balance
</h1>
<h1>
std::name_reg
</h1>
<button
type=
"button"
onClick=
"watchBalance();"
>
watch balance
</button>
<input
type=
"text"
id=
"name"
></input>
<div></div>
<button
type=
"button"
onClick=
"testSnippet();"
>
test snippet
</button>
<div
id=
"original"
></div>
<div
id=
"current"
></div>
<div></div>
<div
id=
"diff"
></div>
result:
<div
id=
"result"
></div>
</body>
</body>
</html>
</html>
index.js
View file @
8b7e5972
...
@@ -3,5 +3,6 @@ web3.providers.WebSocketProvider = require('./lib/websocket');
...
@@ -3,5 +3,6 @@ web3.providers.WebSocketProvider = require('./lib/websocket');
web3
.
providers
.
HttpRpcProvider
=
require
(
'./lib/httprpc'
);
web3
.
providers
.
HttpRpcProvider
=
require
(
'./lib/httprpc'
);
web3
.
providers
.
QtProvider
=
require
(
'./lib/qt'
);
web3
.
providers
.
QtProvider
=
require
(
'./lib/qt'
);
web3
.
providers
.
AutoProvider
=
require
(
'./lib/autoprovider'
);
web3
.
providers
.
AutoProvider
=
require
(
'./lib/autoprovider'
);
web3
.
contract
=
require
(
'./lib/abi'
);
module
.
exports
=
web3
;
module
.
exports
=
web3
;
index_qt.js
View file @
8b7e5972
var
web3
=
require
(
'./lib/main'
);
var
web3
=
require
(
'./lib/main'
);
web3
.
providers
.
QtProvider
=
require
(
'./lib/qt'
);
web3
.
providers
.
QtProvider
=
require
(
'./lib/qt'
);
web3
.
abi
=
require
(
'./lib/abi'
);
module
.
exports
=
web3
;
module
.
exports
=
web3
;
lib/abi.js
0 → 100644
View file @
8b7e5972
var
findIndex
=
function
(
array
,
callback
)
{
var
end
=
false
;
var
i
=
0
;
for
(;
i
<
array
.
length
&&
!
end
;
i
++
)
{
end
=
callback
(
array
[
i
]);
}
return
end
?
i
-
1
:
-
1
;
};
var
findMethodIndex
=
function
(
json
,
methodName
)
{
return
findIndex
(
json
,
function
(
method
)
{
return
method
.
name
===
methodName
;
});
};
var
padLeft
=
function
(
number
,
n
)
{
return
(
new
Array
(
n
*
2
-
number
.
toString
().
length
+
1
)).
join
(
"0"
)
+
number
;
};
var
setupInputTypes
=
function
()
{
var
prefixedType
=
function
(
prefix
)
{
return
function
(
type
,
value
)
{
var
expected
=
prefix
;
if
(
type
.
indexOf
(
expected
)
!==
0
)
{
return
false
;
}
var
padding
=
parseInt
(
type
.
slice
(
expected
.
length
))
/
8
;
return
padLeft
(
value
,
padding
);
};
};
var
namedType
=
function
(
name
,
padding
,
formatter
)
{
return
function
(
type
,
value
)
{
if
(
type
!==
name
)
{
return
false
;
}
return
padLeft
(
formatter
?
value
:
formatter
(
value
),
padding
);
};
};
var
formatBool
=
function
(
value
)
{
return
value
?
'1'
:
'0'
;
};
return
[
prefixedType
(
'uint'
),
prefixedType
(
'int'
),
namedType
(
'address'
,
20
),
namedType
(
'bool'
,
1
,
formatBool
),
];
};
var
inputTypes
=
setupInputTypes
();
var
toAbiInput
=
function
(
json
,
methodName
,
params
)
{
var
bytes
=
""
;
var
index
=
findMethodIndex
(
json
,
methodName
);
if
(
index
===
-
1
)
{
return
;
}
// it needs to be checked in WebThreeStubServer
// something wrong might be with this additional zero
bytes
=
bytes
+
index
+
'x'
+
'0'
;
var
method
=
json
[
index
];
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
]);
}
if
(
!
found
)
{
console
.
error
(
'unsupported json type: '
+
method
.
inputs
[
i
].
type
);
}
bytes
+=
found
;
}
return
bytes
;
};
var
setupOutputTypes
=
function
()
{
var
prefixedType
=
function
(
prefix
)
{
return
function
(
type
)
{
var
expected
=
prefix
;
if
(
type
.
indexOf
(
expected
)
!==
0
)
{
return
-
1
;
}
var
padding
=
parseInt
(
type
.
slice
(
expected
.
length
))
/
8
;
return
padding
*
2
;
};
};
var
namedType
=
function
(
name
,
padding
)
{
return
function
(
type
)
{
return
name
===
type
?
padding
*
2
:
-
1
;
};
};
var
formatInt
=
function
(
value
)
{
return
parseInt
(
value
,
16
);
};
var
formatBool
=
function
(
value
)
{
return
value
===
'1'
?
true
:
false
;
};
return
[
{
padding
:
prefixedType
(
'uint'
),
format
:
formatInt
},
{
padding
:
prefixedType
(
'int'
),
format
:
formatInt
},
{
padding
:
namedType
(
'address'
,
20
)
},
{
padding
:
namedType
(
'bool'
,
1
),
format
:
formatBool
}
];
};
var
outputTypes
=
setupOutputTypes
();
var
fromAbiOutput
=
function
(
json
,
methodName
,
output
)
{
var
index
=
findMethodIndex
(
json
,
methodName
);
if
(
index
===
-
1
)
{
return
;
}
output
=
output
.
slice
(
2
);
var
result
=
[];
var
method
=
json
[
index
];
for
(
var
i
=
0
;
i
<
method
.
outputs
.
length
;
i
++
)
{
var
padding
=
-
1
;
for
(
var
j
=
0
;
j
<
outputTypes
.
length
&&
padding
===
-
1
;
j
++
)
{
padding
=
outputTypes
[
j
].
padding
(
method
.
outputs
[
i
].
type
);
}
if
(
padding
===
-
1
)
{
// not found output parsing
continue
;
}
var
res
=
output
.
slice
(
0
,
padding
);
var
formatter
=
outputTypes
[
j
-
1
].
format
;
result
.
push
(
formatter
?
formatter
(
res
):
res
);
output
=
output
.
slice
(
padding
);
}
return
result
;
};
var
load
=
function
(
json
)
{
var
contract
=
{};
json
.
forEach
(
function
(
method
)
{
contract
[
method
.
name
]
=
function
()
{
var
params
=
Array
.
prototype
.
slice
.
call
(
arguments
);
return
toAbiInput
(
json
,
method
.
name
,
params
);
};
});
return
contract
;
};
module
.
exports
=
load
;
lib/main.js
View file @
8b7e5972
...
@@ -77,6 +77,7 @@ var ethMethods = function () {
...
@@ -77,6 +77,7 @@ var ethMethods = function () {
var
methods
=
[
var
methods
=
[
{
name
:
'balanceAt'
,
call
:
'eth_balanceAt'
},
{
name
:
'balanceAt'
,
call
:
'eth_balanceAt'
},
{
name
:
'stateAt'
,
call
:
'eth_stateAt'
},
{
name
:
'stateAt'
,
call
:
'eth_stateAt'
},
{
name
:
'storageAt'
,
call
:
'eth_storageAt'
},
{
name
:
'countAt'
,
call
:
'eth_countAt'
},
{
name
:
'countAt'
,
call
:
'eth_countAt'
},
{
name
:
'codeAt'
,
call
:
'eth_codeAt'
},
{
name
:
'codeAt'
,
call
:
'eth_codeAt'
},
{
name
:
'transact'
,
call
:
'eth_transact'
},
{
name
:
'transact'
,
call
:
'eth_transact'
},
...
@@ -84,8 +85,9 @@ var ethMethods = function () {
...
@@ -84,8 +85,9 @@ var ethMethods = function () {
{
name
:
'block'
,
call
:
blockCall
},
{
name
:
'block'
,
call
:
blockCall
},
{
name
:
'transaction'
,
call
:
transactionCall
},
{
name
:
'transaction'
,
call
:
transactionCall
},
{
name
:
'uncle'
,
call
:
uncleCall
},
{
name
:
'uncle'
,
call
:
uncleCall
},
{
name
:
'compile'
,
call
:
'eth_compile'
},
{
name
:
'compilers'
,
call
:
'eth_compilers'
},
{
name
:
'lll'
,
call
:
'eth_lll'
}
{
name
:
'lll'
,
call
:
'eth_lll'
},
{
name
:
'solidity'
,
call
:
'eth_solidity'
}
];
];
return
methods
;
return
methods
;
};
};
...
...
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