diff --git a/cmd/geth/js.go b/cmd/geth/js.go
index b08ecd8eb7..3d0251f089 100644
--- a/cmd/geth/js.go
+++ b/cmd/geth/js.go
@@ -184,13 +184,6 @@ func newJSRE(stack *node.Node, docRoot, corsDomain string, client rpc.Client, in
js.corsDomain = corsDomain
js.wait = make(chan *big.Int)
js.client = client
- if clt, ok := js.client.(*comms.InProcClient); ok {
- if offeredApis, err := api.ParseApiString(shared.AllApis, codec.JSON, js.xeth, stack); err == nil {
- clt.Initialize(api.Merge(offeredApis...))
- } else {
- utils.Fatalf("Unable to offer apis: %v", err)
- }
- }
js.re = re.New(docRoot)
if err := js.apiBindings(); err != nil {
diff --git a/cmd/geth/js_test.go b/cmd/geth/js_test.go
index 5e4bedcb9d..19583c5efe 100644
--- a/cmd/geth/js_test.go
+++ b/cmd/geth/js_test.go
@@ -89,7 +89,7 @@ func testJEthRE(t *testing.T) (string, *testjethre, *node.Node) {
return testREPL(t, nil)
}
-func testREPL(t *testing.T, config func(*node.Node)) (string, *testjethre, *node.Node) {
+func testREPL(t *testing.T, config func(*eth.Config)) (string, *testjethre, *node.Node) {
tmp, err := ioutil.TempDir("", "geth-test")
if err != nil {
t.Fatal(err)
@@ -105,14 +105,12 @@ func testREPL(t *testing.T, config func(*node.Node)) (string, *testjethre, *node
db, _ := ethdb.NewMemDatabase()
core.WriteGenesisBlockForTesting(db, core.GenesisAccount{common.HexToAddress(testAddress), common.String2Big(testBalance)})
- coinbase := common.HexToAddress(testAddress)
ethConf := ð.Config{
TestGenesisState: db,
AccountManager: accman,
DocRoot: "/",
SolcPath: testSolcPath,
- Etherbase: coinbase,
PowTest: true,
}
if config != nil {
@@ -135,12 +133,6 @@ func testREPL(t *testing.T, config func(*node.Node)) (string, *testjethre, *node
if err := accman.Unlock(key.Address, ""); err != nil {
t.Fatal(err)
}
-
- // tests can register services here
- if config != nil {
- config(stack)
- }
-
// Start the node and assemble the REPL tester
if err := stack.Start(); err != nil {
t.Fatalf("failed to start test stack: %v", err)
@@ -276,7 +268,10 @@ func TestSignature(t *testing.T) {
func TestContract(t *testing.T) {
t.Skip("contract testing is implemented with mining in ethash test mode. This takes about 7seconds to run. Unskip and run on demand")
coinbase := common.HexToAddress(testAddress)
- tmp, repl, ethereum := testREPL(t, nil)
+ tmp, repl, ethereum := testREPL(t, func(conf *eth.Config) {
+ conf.Etherbase = coinbase
+ conf.PowTest = true
+ })
if err := ethereum.Start(); err != nil {
t.Errorf("error starting ethereum: %v", err)
return
diff --git a/cmd/geth/main.go b/cmd/geth/main.go
index 02021faa6c..d7d4a79eee 100644
--- a/cmd/geth/main.go
+++ b/cmd/geth/main.go
@@ -490,6 +490,11 @@ func startNode(ctx *cli.Context, stack *node.Node) {
utils.Fatalf("Failed to start WS: %v", err)
}
}
+ // Unlock any account specifically requested
+ var ethereum *eth.Ethereum
+ if err := stack.Service(ðereum); err != nil {
+ utils.Fatalf("ethereum service not running: %v", err)
+ }
if ctx.GlobalBool(utils.MiningEnabledFlag.Name) {
if err := ethereum.StartMining(ctx.GlobalInt(utils.MinerThreadsFlag.Name), ctx.GlobalString(utils.MiningGPUFlag.Name)); err != nil {
utils.Fatalf("Failed to start mining: %v", err)
diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index 8dd0d08e44..c961b5fe1b 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -48,12 +48,6 @@ import (
"github.com/ethereum/go-ethereum/p2p/nat"
"github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/rpc"
- "github.com/ethereum/go-ethereum/rpc/api"
- "github.com/ethereum/go-ethereum/rpc/codec"
- "github.com/ethereum/go-ethereum/rpc/comms"
- "github.com/ethereum/go-ethereum/rpc/shared"
- "github.com/ethereum/go-ethereum/rpc/useragent"
- rpc "github.com/ethereum/go-ethereum/rpc/v2"
"github.com/ethereum/go-ethereum/swarm"
bzzapi "github.com/ethereum/go-ethereum/swarm/api"
"github.com/ethereum/go-ethereum/whisper"
@@ -366,7 +360,7 @@ var (
// ATM the url is left to the user and deployment to
JSpathFlag = cli.StringFlag{
Name: "jspath",
- Usage: "JavaSript root path for `loadScript` and document root for `admin.httpGet`",
+ Usage: "JavaScript root path for `loadScript` and document root for `admin.httpGet`",
Value: ".",
}
SolcPathFlag = cli.StringFlag{
diff --git a/common/registrar/ethreg/api.go b/common/registrar/api.go
similarity index 81%
rename from common/registrar/ethreg/api.go
rename to common/registrar/api.go
index 92e885b10e..a62b19599d 100644
--- a/common/registrar/ethreg/api.go
+++ b/common/registrar/api.go
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see .
-package ethreg
+package registrar
import (
"errors"
@@ -30,7 +30,7 @@ import (
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger/glog"
- "github.com/ethereum/go-ethereum/common/registrar"
+ // "github.com/ethereum/go-ethereum/common/registrar"
)
// registryAPIBackend is a backend for an Ethereum Registry.
@@ -41,14 +41,14 @@ type registryAPIBackend struct {
am *accounts.Manager
}
-// PrivateRegistarAPI offers various functions to access the Ethereum registry.
-type PrivateRegistarAPI struct {
+// PublicRegistarAPI offers various functions to access the Ethereum registry.
+type PublicRegistarAPI struct {
be *registryAPIBackend
}
-// NewPrivateRegistarAPI creates a new PrivateRegistarAPI instance.
-func NewPrivateRegistarAPI(bc *core.BlockChain, chainDb ethdb.Database, txPool *core.TxPool, am *accounts.Manager) *PrivateRegistarAPI {
- return &PrivateRegistarAPI{®istryAPIBackend{bc, chainDb, txPool, am}}
+// NewPublicRegistarAPI creates a new PublicRegistarAPI instance.
+func NewPublicRegistarAPI(bc *core.BlockChain, chainDb ethdb.Database, txPool *core.TxPool, am *accounts.Manager) *PublicRegistarAPI {
+ return &PublicRegistarAPI{®istryAPIBackend{bc, chainDb, txPool, am}}
}
// SetGlobalRegistrar allows clients to set the global registry for the node.
@@ -58,27 +58,27 @@ func NewPrivateRegistarAPI(bc *core.BlockChain, chainDb ethdb.Database, txPool *
// will deploy a new registry on execution. The TX hash is returned. When called
// with namereg '' and the current address is not zero the current global is
// address is returned..
-func (api *PrivateRegistarAPI) SetGlobalRegistrar(namereg string, from common.Address) (string, error) {
- return registrar.New(api.be).SetGlobalRegistrar(namereg, from)
+func (api *PublicRegistarAPI) SetGlobalRegistrar(namereg string, from common.Address) (string, error) {
+ return New(api.be).SetGlobalRegistrar(namereg, from)
}
// SetHashReg queries the registry for a hash.
-func (api *PrivateRegistarAPI) SetHashReg(hashreg string, from common.Address) (string, error) {
- return registrar.New(api.be).SetHashReg(hashreg, from)
+func (api *PublicRegistarAPI) SetHashReg(hashreg string, from common.Address) (string, error) {
+ return New(api.be).SetHashReg(hashreg, from)
}
// SetUrlHint queries the registry for an url.
-func (api *PrivateRegistarAPI) SetUrlHint(hashreg string, from common.Address) (string, error) {
- return registrar.New(api.be).SetUrlHint(hashreg, from)
+func (api *PublicRegistarAPI) SetUrlHint(hashreg string, from common.Address) (string, error) {
+ return New(api.be).SetUrlHint(hashreg, from)
}
// SaveInfo stores contract information on the local file system.
-func (api *PrivateRegistarAPI) SaveInfo(info *compiler.ContractInfo, filename string) (contenthash common.Hash, err error) {
+func (api *PublicRegistarAPI) SaveInfo(info *compiler.ContractInfo, filename string) (contenthash common.Hash, err error) {
return compiler.SaveInfo(info, filename)
}
// Register registers a new content hash in the registry.
-func (api *PrivateRegistarAPI) Register(sender common.Address, addr common.Address, contentHashHex string) (bool, error) {
+func (api *PublicRegistarAPI) Register(sender common.Address, addr common.Address, contentHashHex string) (bool, error) {
block := api.be.bc.CurrentBlock()
state, err := state.New(block.Root(), api.be.chainDb)
if err != nil {
@@ -89,13 +89,13 @@ func (api *PrivateRegistarAPI) Register(sender common.Address, addr common.Addre
codeHash := common.BytesToHash(crypto.Sha3(codeb))
contentHash := common.HexToHash(contentHashHex)
- _, err = registrar.New(api.be).SetHashToHash(sender, codeHash, contentHash)
+ _, err = New(api.be).SetHashToHash(sender, codeHash, contentHash)
return err == nil, err
}
// RegisterUrl registers a new url in the registry.
-func (api *PrivateRegistarAPI) RegisterUrl(sender common.Address, contentHashHex string, url string) (bool, error) {
- _, err := registrar.New(api.be).SetUrlToHash(sender, common.HexToHash(contentHashHex), url)
+func (api *PublicRegistarAPI) RegisterUrl(sender common.Address, contentHashHex string, url string) (bool, error) {
+ _, err := New(api.be).SetUrlToHash(sender, common.HexToHash(contentHashHex), url)
return err == nil, err
}
@@ -132,7 +132,7 @@ func (m callmsg) Data() []byte {
}
// Call forms a transaction from the given arguments and tries to execute it on
-// a private VM with a copy of the state. Any changes are therefore only temporary
+// a Public VM with a copy of the state. Any changes are therefore only temporary
// and not part of the actual state. This allows for local execution/queries.
func (be *registryAPIBackend) Call(fromStr, toStr, valueStr, gasStr, gasPriceStr, dataStr string) (string, string, error) {
block := be.bc.CurrentBlock()
@@ -194,7 +194,7 @@ func (be *registryAPIBackend) StorageAt(addr string, storageAddr string) string
}
// Transact forms a transaction from the given arguments and submits it to the
-// transactio pool for execution.
+// transaction pool for execution.
func (be *registryAPIBackend) Transact(fromStr, toStr, nonceStr, valueStr, gasStr, gasPriceStr, codeStr string) (string, error) {
if len(toStr) > 0 && toStr != "0x" && !common.IsHexAddress(toStr) {
return "", errors.New("invalid address")
diff --git a/common/registrar/ethreg/ethreg.go b/common/registrar/ethreg/ethreg.go
new file mode 100644
index 0000000000..7b3b41769c
--- /dev/null
+++ b/common/registrar/ethreg/ethreg.go
@@ -0,0 +1,54 @@
+// Copyright 2015 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library 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.
+//
+// The go-ethereum library 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 the go-ethereum library. If not, see .
+
+package ethreg
+
+import (
+ "math/big"
+
+ "github.com/ethereum/go-ethereum/common/registrar"
+)
+
+type Backend interface {
+ registrar.Backend
+ AtStateNum(int64) registrar.Backend
+}
+
+// implements a versioned Registrar on an archiving full node
+type EthReg struct {
+ backend Backend
+ registry *registrar.Registrar
+}
+
+func New(backend Backend) (self *EthReg) {
+ self = &EthReg{backend: backend}
+ self.registry = registrar.New(backend)
+ return
+}
+
+func (self *EthReg) Registry() *registrar.Registrar {
+ return self.registry
+}
+
+func (self *EthReg) Resolver(n *big.Int) *registrar.Registrar {
+ var s registrar.Backend
+ if n != nil {
+ s = self.backend.AtStateNum(n.Int64())
+ } else {
+ s = registrar.Backend(self.backend)
+ }
+ return registrar.New(s)
+}
diff --git a/crypto/secp256k1/curve_test.go b/crypto/secp256k1/curve_test.go
index 850cc748b8..d915ee8525 100644
--- a/crypto/secp256k1/curve_test.go
+++ b/crypto/secp256k1/curve_test.go
@@ -21,8 +21,6 @@ import (
"encoding/hex"
"math/big"
"testing"
-
- "github.com/ethereum/go-ethereum/common/registrar"
)
func TestReadBits(t *testing.T) {
@@ -39,34 +37,3 @@ func TestReadBits(t *testing.T) {
check("0000000000012345000000000000000000000000000000000000FEFCF3F8F0")
check("18F8F8F1000111000110011100222004330052300000000000000000FEFCF3F8F0")
}
-
-type Backend interface {
- registrar.Backend
- AtStateNum(int64) registrar.Backend
-}
-
-// implements a versioned Registrar on an archiving full node
-type EthReg struct {
- backend Backend
- registry *registrar.Registrar
-}
-
-func New(backend Backend) (self *EthReg) {
- self = &EthReg{backend: backend}
- self.registry = registrar.New(backend)
- return
-}
-
-func (self *EthReg) Registry() *registrar.Registrar {
- return self.registry
-}
-
-func (self *EthReg) Resolver(n *big.Int) *registrar.Registrar {
- var s registrar.Backend
- if n != nil {
- s = self.backend.AtStateNum(n.Int64())
- } else {
- s = registrar.Backend(self.backend)
- }
- return registrar.New(s)
-}
diff --git a/eth/backend.go b/eth/backend.go
index 352522f614..ab3d71f913 100644
--- a/eth/backend.go
+++ b/eth/backend.go
@@ -32,7 +32,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/compiler"
"github.com/ethereum/go-ethereum/common/httpclient"
- "github.com/ethereum/go-ethereum/common/registrar/ethreg"
+ "github.com/ethereum/go-ethereum/common/registrar"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/eth/downloader"
@@ -317,7 +317,11 @@ func (s *Ethereum) APIs() []rpc.API {
}, {
Namespace: "admin",
Version: "1.0",
- Service: ethreg.NewPrivateRegistarAPI(s.BlockChain(), s.ChainDb(), s.TxPool(), s.AccountManager()),
+ Service: registrar.NewPublicRegistarAPI(s.BlockChain(), s.ChainDb(), s.TxPool(), s.AccountManager()),
+ }, {
+ Namespace: "registrar",
+ Version: "1.0",
+ Service: registrar.NewPublicRegistarAPI(s.BlockChain(), s.ChainDb(), s.TxPool(), s.AccountManager()),
},
}
}
diff --git a/eth/downloader/modes.go b/eth/downloader/modes.go
index e8cc451ebb..ec339c0740 100644
--- a/eth/downloader/modes.go
+++ b/eth/downloader/modes.go
@@ -23,27 +23,4 @@ const (
FullSync SyncMode = iota // Synchronise the entire blockchain history from full blocks
FastSync // Quickly download the headers, full sync only at the chain head
LightSync // Download only the headers and terminate afterwards
- AdminApiName = "admin"
- BzzApiName = "bzz"
- EthApiName = "eth"
- DbApiName = "db"
- DebugApiName = "debug"
- MergedApiName = "merged"
- MinerApiName = "miner"
- NetApiName = "net"
- ShhApiName = "shh"
- TxPoolApiName = "txpool"
- PersonalApiName = "personal"
- Web3ApiName = "web3"
- ChequebookApiName = "chequebook"
-
- JsonRpcVersion = "2.0"
-)
-
-var (
- // All API's
- AllApis = strings.Join([]string{
- AdminApiName, BzzApiName, ChequebookApiName, DbApiName, EthApiName, DebugApiName, MinerApiName, NetApiName,
- ShhApiName, TxPoolApiName, PersonalApiName, Web3ApiName,
- }, ",")
)
diff --git a/rpc/api/bzz_js.go b/rpc/api/bzz_js.go
deleted file mode 100644
index 30faf6bbff..0000000000
--- a/rpc/api/bzz_js.go
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright 2015 The go-ethereum Authors
-// This file is part of go-ethereum.
-//
-// go-ethereum 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.
-//
-// go-ethereum 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 go-ethereum. If not, see .
-
-package api
-
-const Bzz_JS = `
-web3._extend({
- property: 'bzz',
- methods:
- [
- new web3._extend.Method({
- name: 'deposit',
- call: 'bzz_deposit',
- params: 1,
- inputFormatter: [null]
- }),
- new web3._extend.Method({
- name: 'info',
- call: 'bzz_info',
- params: 1,
- inputFormatter: [null]
- }),
- new web3._extend.Method({
- name: 'cash',
- call: 'bzz_cash',
- params: 1,
- inputFormatter: [null]
- }),
- new web3._extend.Method({
- name: 'issue',
- call: 'bzz_issue',
- params: 2,
- inputFormatter: [null, null]
- }),
- new web3._extend.Method({
- name: 'register',
- call: 'bzz_register',
- params: 3,
- inputFormatter: [null, null, null]
- }),
- new web3._extend.Method({
- name: 'blockNetworkRead',
- call: 'bzz_blockNetworkRead',
- params: 1,
- inputFormatter: [null]
- }),
- new web3._extend.Method({
- name: 'resolve',
- call: 'bzz_resolve',
- params: 1,
- inputFormatter: [null]
- }),
- new web3._extend.Method({
- name: 'download',
- call: 'bzz_download',
- params: 2,
- inputFormatter: [null, null]
- }),
- new web3._extend.Method({
- name: 'upload',
- call: 'bzz_upload',
- params: 2,
- inputFormatter: [null, null]
- }),
- new web3._extend.Method({
- name: 'get',
- call: 'bzz_get',
- params: 1,
- inputFormatter: [null]
- }),
- new web3._extend.Method({
- name: 'put',
- call: 'bzz_put',
- params: 2,
- inputFormatter: [null, null]
- }),
- new web3._extend.Method({
- name: 'modify',
- call: 'bzz_modify',
- params: 4,
- inputFormatter: [null, null, null, null]
- })
- ],
- properties:
- [
- ]
-});
-`
diff --git a/rpc/api/chequebook_js.go b/rpc/api/chequebook_js.go
deleted file mode 100644
index 4254997284..0000000000
--- a/rpc/api/chequebook_js.go
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2015 The go-ethereum Authors
-// This file is part of go-ethereum.
-//
-// go-ethereum 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.
-//
-// go-ethereum 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 go-ethereum. If not, see .
-
-package api
-
-const Chequebook_JS = `
-web3._extend({
- property: 'chequebook',
- methods:
- [
- new web3._extend.Method({
- name: 'deposit',
- call: 'chequebook_deposit',
- params: 1,
- inputFormatter: [null]
- }),
- new web3._extend.Method({
- name: 'info',
- call: 'chequebook_info',
- params: 1,
- inputFormatter: [null]
- }),
- new web3._extend.Method({
- name: 'cash',
- call: 'chequebook_cash',
- params: 1,
- inputFormatter: [null]
- }),
- new web3._extend.Method({
- name: 'issue',
- call: 'chequebook_issue',
- params: 2,
- inputFormatter: [null, null]
- }),
- ]
-});
-`
diff --git a/rpc/api/utils.go b/rpc/api/utils.go
deleted file mode 100644
index 1cd0eeb3b9..0000000000
--- a/rpc/api/utils.go
+++ /dev/null
@@ -1,259 +0,0 @@
-// Copyright 2015 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library 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.
-//
-// The go-ethereum library 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 the go-ethereum library. If not, see .
-
-package api
-
-import (
- "strings"
-
- "fmt"
-
- "github.com/ethereum/go-ethereum/eth"
- "github.com/ethereum/go-ethereum/node"
- "github.com/ethereum/go-ethereum/rpc/codec"
- "github.com/ethereum/go-ethereum/rpc/shared"
- "github.com/ethereum/go-ethereum/xeth"
-)
-
-var (
- // Mapping between the different methods each api supports
- AutoCompletion = map[string][]string{
- "admin": []string{
- "addPeer",
- "datadir",
- "enableUserAgent",
- "exportChain",
- "getContractInfo",
- "httpGet",
- "importChain",
- "nodeInfo",
- "peers",
- "register",
- "registerUrl",
- "saveInfo",
- "setGlobalRegistrar",
- "setHashReg",
- "setUrlHint",
- "setSolc",
- "sleep",
- "sleepBlocks",
- "startNatSpec",
- "startRPC",
- "stopNatSpec",
- "stopRPC",
- "setGlobalRegistrar",
- "setHashReg",
- "setUrlHint",
- "saveInfo",
- "getContractInfo",
- "sleep",
- "httpGet",
- "verbosity",
- },
- "bzz": []string{
- "version",
- "info",
- "register",
- "resolve",
- "download",
- "upload",
- "get",
- "put",
- "modify",
- "blockNetworkRead",
- },
- "chequebook": []string{
- "version",
- "info",
- "issue",
- "cash",
- "deposit",
- },
- "db": []string{
- "getString",
- "putString",
- "getHex",
- "putHex",
- },
- "debug": []string{
- "dumpBlock",
- "getBlockRlp",
- "metrics",
- "printBlock",
- "processBlock",
- "seedHash",
- "setHead",
- },
- "eth": []string{
- "accounts",
- "blockNumber",
- "call",
- "contract",
- "coinbase",
- "compile.lll",
- "compile.serpent",
- "compile.solidity",
- "contract",
- "defaultAccount",
- "defaultBlock",
- "estimateGas",
- "filter",
- "getBalance",
- "getBlock",
- "getBlockTransactionCount",
- "getBlockUncleCount",
- "getCode",
- "getNatSpec",
- "getCompilers",
- "gasPrice",
- "getStorageAt",
- "getTransaction",
- "getTransactionCount",
- "getTransactionFromBlock",
- "getTransactionReceipt",
- "getUncle",
- "hashrate",
- "mining",
- "namereg",
- "getPendingTransactions",
- "resend",
- "sendRawTransaction",
- "sendTransaction",
- "sign",
- "syncing",
- },
- "miner ": []string{
- "hashrate",
- "makeDAG",
- "setEtherbase",
- "setExtra",
- "setGasPrice",
- "startAutoDAG",
- "setEtherbase",
- "start",
- "stopAutoDAG",
- "stop",
- },
- "net": []string{
- "peerCount",
- "listening",
- },
- "personal": []string{
- "listAccounts",
- "newAccount",
- "unlockAccount",
- },
- "shh": []string{
- "post",
- "newIdentity",
- "hasIdentity",
- "newGroup",
- "addToGroup",
- "filter",
- },
- "txpool": []string{
- "status",
- },
- "web3": []string{
- "sha3",
- "version",
- "fromWei",
- "toWei",
- "toHex",
- "toAscii",
- "fromAscii",
- "toBigNumber",
- "isAddress",
- },
- }
-)
-
-// Parse a comma separated API string to individual api's
-func ParseApiString(apistr string, codec codec.Codec, xeth *xeth.XEth, stack *node.Node) ([]shared.EthereumApi, error) {
- if len(strings.TrimSpace(apistr)) == 0 {
- return nil, fmt.Errorf("Empty apistr provided")
- }
-
- names := strings.Split(apistr, ",")
- apis := make([]shared.EthereumApi, len(names))
-
- var eth *eth.Ethereum
- if stack != nil {
- if err := stack.Service(ð); err != nil {
- return nil, err
- }
- }
- for i, name := range names {
- switch strings.ToLower(strings.TrimSpace(name)) {
- case shared.AdminApiName:
- apis[i] = NewAdminApi(xeth, stack, codec)
- case shared.BzzApiName:
- case shared.ChequebookApiName:
- case shared.DebugApiName:
- apis[i] = NewDebugApi(xeth, eth, codec)
- case shared.DbApiName:
- apis[i] = NewDbApi(xeth, eth, codec)
- case shared.EthApiName:
- apis[i] = NewEthApi(xeth, eth, codec)
- case shared.MinerApiName:
- apis[i] = NewMinerApi(eth, codec)
- case shared.NetApiName:
- apis[i] = NewNetApi(xeth, eth, codec)
- case shared.ShhApiName:
- apis[i] = NewShhApi(xeth, eth, codec)
- case shared.TxPoolApiName:
- apis[i] = NewTxPoolApi(xeth, eth, codec)
- case shared.PersonalApiName:
- apis[i] = NewPersonalApi(xeth, eth, codec)
- case shared.Web3ApiName:
- apis[i] = NewWeb3Api(xeth, codec)
- case "rpc": // gives information about the RPC interface
- continue
- default:
- return nil, fmt.Errorf("Unknown API '%s'", name)
- }
- }
- return apis, nil
-}
-
-func Javascript(name string) string {
- switch strings.ToLower(strings.TrimSpace(name)) {
- case shared.AdminApiName:
- return Admin_JS
- case shared.BzzApiName:
- return Bzz_JS
- case shared.ChequebookApiName:
- return Chequebook_JS
- case shared.DebugApiName:
- return Debug_JS
- case shared.DbApiName:
- return Db_JS
- case shared.EthApiName:
- return Eth_JS
- case shared.MinerApiName:
- return Miner_JS
- case shared.NetApiName:
- return Net_JS
- case shared.ShhApiName:
- return Shh_JS
- case shared.TxPoolApiName:
- return TxPool_JS
- case shared.PersonalApiName:
- return Personal_JS
- }
-
- return ""
-}
diff --git a/rpc/javascript.go b/rpc/javascript.go
index 9e3b2218bf..c3f892d6f2 100644
--- a/rpc/javascript.go
+++ b/rpc/javascript.go
@@ -19,14 +19,16 @@ package rpc
var (
// Holds geth specific RPC extends which can be used to extend web3
WEB3Extensions = map[string]string{
- "personal": Personal_JS,
- "txpool": TxPool_JS,
- "admin": Admin_JS,
- "db": Db_JS,
- "eth": Eth_JS,
- "miner": Miner_JS,
- "debug": Debug_JS,
- "net": Net_JS,
+ "personal": Personal_JS,
+ "txpool": TxPool_JS,
+ "admin": Admin_JS,
+ "db": Db_JS,
+ "eth": Eth_JS,
+ "miner": Miner_JS,
+ "debug": Debug_JS,
+ "net": Net_JS,
+ "bzz": Bzz_JS,
+ "chequebook": Chequebook_JS,
}
)
@@ -483,3 +485,119 @@ web3._extend({
]
});
`
+
+const Bzz_JS = `
+web3._extend({
+ property: 'bzz',
+ methods:
+ [
+ new web3._extend.Method({
+ name: 'deposit',
+ call: 'bzz_deposit',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Method({
+ name: 'info',
+ call: 'bzz_info',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Method({
+ name: 'cash',
+ call: 'bzz_cash',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Method({
+ name: 'issue',
+ call: 'bzz_issue',
+ params: 2,
+ inputFormatter: [null, null]
+ }),
+ new web3._extend.Method({
+ name: 'register',
+ call: 'bzz_register',
+ params: 3,
+ inputFormatter: [null, null, null]
+ }),
+ new web3._extend.Method({
+ name: 'blockNetworkRead',
+ call: 'bzz_blockNetworkRead',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Method({
+ name: 'resolve',
+ call: 'bzz_resolve',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Method({
+ name: 'download',
+ call: 'bzz_download',
+ params: 2,
+ inputFormatter: [null, null]
+ }),
+ new web3._extend.Method({
+ name: 'upload',
+ call: 'bzz_upload',
+ params: 2,
+ inputFormatter: [null, null]
+ }),
+ new web3._extend.Method({
+ name: 'get',
+ call: 'bzz_get',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Method({
+ name: 'put',
+ call: 'bzz_put',
+ params: 2,
+ inputFormatter: [null, null]
+ }),
+ new web3._extend.Method({
+ name: 'modify',
+ call: 'bzz_modify',
+ params: 4,
+ inputFormatter: [null, null, null, null]
+ })
+ ],
+ properties:
+ [
+ ]
+});
+`
+const Chequebook_JS = `
+web3._extend({
+ property: 'chequebook',
+ methods:
+ [
+ new web3._extend.Method({
+ name: 'deposit',
+ call: 'chequebook_deposit',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Method({
+ name: 'info',
+ call: 'chequebook_info',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Method({
+ name: 'cash',
+ call: 'chequebook_cash',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Method({
+ name: 'issue',
+ call: 'chequebook_issue',
+ params: 2,
+ inputFormatter: [null, null]
+ }),
+ ]
+});
+`
diff --git a/swarm/swarm.go b/swarm/swarm.go
index d95fdbd296..13e862ddc9 100644
--- a/swarm/swarm.go
+++ b/swarm/swarm.go
@@ -15,7 +15,7 @@ import (
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/p2p"
"github.com/ethereum/go-ethereum/p2p/discover"
- rpc "github.com/ethereum/go-ethereum/rpc/v2"
+ "github.com/ethereum/go-ethereum/rpc"
"github.com/ethereum/go-ethereum/swarm/api"
httpapi "github.com/ethereum/go-ethereum/swarm/api/http"
"github.com/ethereum/go-ethereum/swarm/network"