aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2016-05-11 16:49:44 +0800
committerPéter Szilágyi <peterke@gmail.com>2016-06-06 21:20:48 +0800
commite3b3c298df45131d8856724da6b5b0e70558a6e6 (patch)
tree4fd983e8887d15b0b98ef231dec05d814a8f46df
parent3752507a11c8977a6f3d5ff4c2b8d97030ce168c (diff)
downloadgo-tangerine-e3b3c298df45131d8856724da6b5b0e70558a6e6.tar
go-tangerine-e3b3c298df45131d8856724da6b5b0e70558a6e6.tar.gz
go-tangerine-e3b3c298df45131d8856724da6b5b0e70558a6e6.tar.bz2
go-tangerine-e3b3c298df45131d8856724da6b5b0e70558a6e6.tar.lz
go-tangerine-e3b3c298df45131d8856724da6b5b0e70558a6e6.tar.xz
go-tangerine-e3b3c298df45131d8856724da6b5b0e70558a6e6.tar.zst
go-tangerine-e3b3c298df45131d8856724da6b5b0e70558a6e6.zip
[release/1.4.6] cmd/geth, internal/web3ext, rpc: surface rpc module, fix shh, fix miner
(cherry picked from commit bc6fdad786706019fc5aeb9605f1d23b3c5b7522)
-rw-r--r--cmd/geth/js.go2
-rw-r--r--internal/web3ext/web3ext.go177
-rw-r--r--rpc/server.go5
-rw-r--r--rpc/utils.go2
4 files changed, 94 insertions, 92 deletions
diff --git a/cmd/geth/js.go b/cmd/geth/js.go
index 729cc2fd7..5f455d7a3 100644
--- a/cmd/geth/js.go
+++ b/cmd/geth/js.go
@@ -198,7 +198,7 @@ func (js *jsre) apiBindings() error {
// load only supported API's in javascript runtime
shortcuts := "var eth = web3.eth; var personal = web3.personal; "
for _, apiName := range apiNames {
- if apiName == "web3" || apiName == "rpc" {
+ if apiName == "web3" {
continue // manually mapped or ignore
}
diff --git a/internal/web3ext/web3ext.go b/internal/web3ext/web3ext.go
index 1928913de..8d5d1500f 100644
--- a/internal/web3ext/web3ext.go
+++ b/internal/web3ext/web3ext.go
@@ -18,44 +18,17 @@
package web3ext
var Modules = map[string]string{
- "txpool": TxPool_JS,
"admin": Admin_JS,
- "personal": Personal_JS,
+ "debug": Debug_JS,
"eth": Eth_JS,
"miner": Miner_JS,
- "debug": Debug_JS,
"net": Net_JS,
+ "personal": Personal_JS,
+ "rpc": RPC_JS,
+ "shh": Shh_JS,
+ "txpool": TxPool_JS,
}
-const TxPool_JS = `
-web3._extend({
- property: 'txpool',
- methods:
- [
- ],
- properties:
- [
- new web3._extend.Property({
- name: 'content',
- getter: 'txpool_content'
- }),
- new web3._extend.Property({
- name: 'inspect',
- getter: 'txpool_inspect'
- }),
- new web3._extend.Property({
- name: 'status',
- getter: 'txpool_status',
- outputFormatter: function(status) {
- status.pending = web3._extend.utils.toDecimal(status.pending);
- status.queued = web3._extend.utils.toDecimal(status.queued);
- return status;
- }
- })
- ]
-});
-`
-
const Admin_JS = `
web3._extend({
property: 'admin',
@@ -176,60 +149,6 @@ web3._extend({
});
`
-const Eth_JS = `
-web3._extend({
- property: 'eth',
- methods:
- [
- new web3._extend.Method({
- name: 'sign',
- call: 'eth_sign',
- params: 2,
- inputFormatter: [web3._extend.formatters.inputAddressFormatter, null]
- }),
- new web3._extend.Method({
- name: 'resend',
- call: 'eth_resend',
- params: 3,
- inputFormatter: [web3._extend.formatters.inputTransactionFormatter, web3._extend.utils.fromDecimal, web3._extend.utils.fromDecimal]
- }),
- new web3._extend.Method({
- name: 'getNatSpec',
- call: 'eth_getNatSpec',
- params: 1,
- inputFormatter: [web3._extend.formatters.inputTransactionFormatter]
- }),
- new web3._extend.Method({
- name: 'signTransaction',
- call: 'eth_signTransaction',
- params: 1,
- inputFormatter: [web3._extend.formatters.inputTransactionFormatter]
- }),
- new web3._extend.Method({
- name: 'submitTransaction',
- call: 'eth_submitTransaction',
- params: 1,
- inputFormatter: [web3._extend.formatters.inputTransactionFormatter]
- })
- ],
- properties:
- [
- new web3._extend.Property({
- name: 'pendingTransactions',
- getter: 'eth_pendingTransactions',
- outputFormatter: function(txs) {
- var formatted = [];
- for (var i = 0; i < txs.length; i++) {
- formatted.push(web3._extend.formatters.outputTransactionFormatter(txs[i]));
- formatted[i].blockHash = null;
- }
- return formatted;
- }
- })
- ]
-});
-`
-
const Debug_JS = `
web3._extend({
property: 'debug',
@@ -382,6 +301,60 @@ web3._extend({
});
`
+const Eth_JS = `
+web3._extend({
+ property: 'eth',
+ methods:
+ [
+ new web3._extend.Method({
+ name: 'sign',
+ call: 'eth_sign',
+ params: 2,
+ inputFormatter: [web3._extend.formatters.inputAddressFormatter, null]
+ }),
+ new web3._extend.Method({
+ name: 'resend',
+ call: 'eth_resend',
+ params: 3,
+ inputFormatter: [web3._extend.formatters.inputTransactionFormatter, web3._extend.utils.fromDecimal, web3._extend.utils.fromDecimal]
+ }),
+ new web3._extend.Method({
+ name: 'getNatSpec',
+ call: 'eth_getNatSpec',
+ params: 1,
+ inputFormatter: [web3._extend.formatters.inputTransactionFormatter]
+ }),
+ new web3._extend.Method({
+ name: 'signTransaction',
+ call: 'eth_signTransaction',
+ params: 1,
+ inputFormatter: [web3._extend.formatters.inputTransactionFormatter]
+ }),
+ new web3._extend.Method({
+ name: 'submitTransaction',
+ call: 'eth_submitTransaction',
+ params: 1,
+ inputFormatter: [web3._extend.formatters.inputTransactionFormatter]
+ })
+ ],
+ properties:
+ [
+ new web3._extend.Property({
+ name: 'pendingTransactions',
+ getter: 'eth_pendingTransactions',
+ outputFormatter: function(txs) {
+ var formatted = [];
+ for (var i = 0; i < txs.length; i++) {
+ formatted.push(web3._extend.formatters.outputTransactionFormatter(txs[i]));
+ formatted[i].blockHash = null;
+ }
+ return formatted;
+ }
+ })
+ ]
+});
+`
+
const Miner_JS = `
web3._extend({
property: 'miner',
@@ -412,7 +385,7 @@ web3._extend({
name: 'setGasPrice',
call: 'miner_setGasPrice',
params: 1,
- inputFormatter: [web3._extend.utils.fromDecial]
+ inputFormatter: [web3._extend.utils.fromDecimal]
}),
new web3._extend.Method({
name: 'startAutoDAG',
@@ -491,7 +464,35 @@ web3._extend({
[
new web3._extend.Property({
name: 'version',
- getter: 'shh_version'
+ getter: 'shh_version',
+ outputFormatter: web3._extend.utils.toDecimal
+ })
+ ]
+});
+`
+
+const TxPool_JS = `
+web3._extend({
+ property: 'txpool',
+ methods: [],
+ properties:
+ [
+ new web3._extend.Property({
+ name: 'content',
+ getter: 'txpool_content'
+ }),
+ new web3._extend.Property({
+ name: 'inspect',
+ getter: 'txpool_inspect'
+ }),
+ new web3._extend.Property({
+ name: 'status',
+ getter: 'txpool_status',
+ outputFormatter: function(status) {
+ status.pending = web3._extend.utils.toDecimal(status.pending);
+ status.queued = web3._extend.utils.toDecimal(status.queued);
+ return status;
+ }
})
]
});
diff --git a/rpc/server.go b/rpc/server.go
index 001107a1b..69f3271e8 100644
--- a/rpc/server.go
+++ b/rpc/server.go
@@ -34,7 +34,8 @@ const (
notificationBufferSize = 10000 // max buffered notifications before codec is closed
- DefaultIPCApis = "admin,eth,debug,miner,net,shh,txpool,personal,web3"
+ MetadataApi = "rpc"
+ DefaultIPCApis = "admin,debug,eth,miner,net,personal,shh,txpool,web3"
DefaultHTTPApis = "eth,net,web3"
)
@@ -61,7 +62,7 @@ func NewServer() *Server {
// register a default service which will provide meta information about the RPC service such as the services and
// methods it offers.
rpcService := &RPCService{server}
- server.RegisterName("rpc", rpcService)
+ server.RegisterName(MetadataApi, rpcService)
return server
}
diff --git a/rpc/utils.go b/rpc/utils.go
index 86938e9b3..fe482e19d 100644
--- a/rpc/utils.go
+++ b/rpc/utils.go
@@ -234,7 +234,7 @@ func SupportedModules(client Client) (map[string]string, error) {
req := JSONRequest{
Id: []byte("1"),
Version: "2.0",
- Method: "rpc_modules",
+ Method: MetadataApi + "_modules",
}
if err := client.Send(req); err != nil {
return nil, err