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-05-11 16:49:44 +0800
commitbc6fdad786706019fc5aeb9605f1d23b3c5b7522 (patch)
tree448a5220cd252bddd7c4276314fb82ce894b59f2
parentc05db38a5ee87c1700faf929db0a9156b263ec95 (diff)
downloaddexon-bc6fdad786706019fc5aeb9605f1d23b3c5b7522.tar.gz
dexon-bc6fdad786706019fc5aeb9605f1d23b3c5b7522.tar.zst
dexon-bc6fdad786706019fc5aeb9605f1d23b3c5b7522.zip
cmd/geth, internal/web3ext, rpc: surface rpc module, fix shh, fix miner
-rw-r--r--cmd/geth/js.go2
-rw-r--r--internal/web3ext/web3ext.go247
-rw-r--r--rpc/server.go5
-rw-r--r--rpc/utils.go2
4 files changed, 136 insertions, 120 deletions
diff --git a/cmd/geth/js.go b/cmd/geth/js.go
index 2b64303b2..25c4d1a21 100644
--- a/cmd/geth/js.go
+++ b/cmd/geth/js.go
@@ -199,7 +199,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 64c1b5044..9ce106cb8 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,88 +149,6 @@ web3._extend({
});
`
-const Personal_JS = `
-web3._extend({
- property: 'personal',
- methods:
- [
- new web3._extend.Method({
- name: 'importRawKey',
- call: 'personal_importRawKey',
- params: 2
- })
- ]
-});
-`
-
-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 Net_JS = `
-web3._extend({
- property: 'net',
- methods: [],
- properties:
- [
- new web3._extend.Property({
- name: 'version',
- getter: 'net_version'
- })
- ]
-});
-`
-
const Debug_JS = `
web3._extend({
property: 'debug',
@@ -410,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',
@@ -440,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',
@@ -463,6 +408,48 @@ web3._extend({
});
`
+const Net_JS = `
+web3._extend({
+ property: 'net',
+ methods: [],
+ properties:
+ [
+ new web3._extend.Property({
+ name: 'version',
+ getter: 'net_version'
+ })
+ ]
+});
+`
+
+const Personal_JS = `
+web3._extend({
+ property: 'personal',
+ methods:
+ [
+ new web3._extend.Method({
+ name: 'importRawKey',
+ call: 'personal_importRawKey',
+ params: 2
+ })
+ ]
+});
+`
+
+const RPC_JS = `
+web3._extend({
+ property: 'rpc',
+ methods: [],
+ properties:
+ [
+ new web3._extend.Property({
+ name: 'modules',
+ getter: 'rpc_modules'
+ })
+ ]
+});
+`
+
const Shh_JS = `
web3._extend({
property: 'shh',
@@ -471,7 +458,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