diff --git a/internal/ethapi/backend.go b/internal/ethapi/backend.go index 214214f51..e10fb14ff 100644 --- a/internal/ethapi/backend.go +++ b/internal/ethapi/backend.go @@ -73,8 +73,7 @@ type State interface { } func GetAPIs(apiBackend Backend, solcPath string) []rpc.API { - compiler := makeCompilerAPIs(solcPath) - all := []rpc.API{ + return []rpc.API{ { Namespace: "eth", Version: "1.0", @@ -116,5 +115,4 @@ func GetAPIs(apiBackend Backend, solcPath string) []rpc.API { Public: false, }, } - return append(compiler, all...) } diff --git a/internal/ethapi/solc.go b/internal/ethapi/solc.go deleted file mode 100644 index b9acc518b..000000000 --- a/internal/ethapi/solc.go +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2016 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 ethapi - -import ( - "sync" - - "github.com/ethereum/go-ethereum/common/compiler" - "github.com/ethereum/go-ethereum/rpc" -) - -func makeCompilerAPIs(solcPath string) []rpc.API { - c := &compilerAPI{solc: solcPath} - return []rpc.API{ - { - Namespace: "eth", - Version: "1.0", - Service: (*PublicCompilerAPI)(c), - Public: true, - }, - { - Namespace: "admin", - Version: "1.0", - Service: (*CompilerAdminAPI)(c), - Public: true, - }, - } -} - -type compilerAPI struct { - // This lock guards the solc path set through the API. - // It also ensures that only one solc process is used at - // any time. - mu sync.Mutex - solc string -} - -type CompilerAdminAPI compilerAPI - -// SetSolc sets the Solidity compiler path to be used by the node. -func (api *CompilerAdminAPI) SetSolc(path string) (string, error) { - api.mu.Lock() - defer api.mu.Unlock() - info, err := compiler.SolidityVersion(path) - if err != nil { - return "", err - } - api.solc = path - return info.FullVersion, nil -} - -type PublicCompilerAPI compilerAPI - -// CompileSolidity compiles the given solidity source. -func (api *PublicCompilerAPI) CompileSolidity(source string) (map[string]*compiler.Contract, error) { - api.mu.Lock() - defer api.mu.Unlock() - return compiler.CompileSolidityString(api.solc, source) -} - -func (api *PublicCompilerAPI) GetCompilers() ([]string, error) { - api.mu.Lock() - defer api.mu.Unlock() - if _, err := compiler.SolidityVersion(api.solc); err == nil { - return []string{"Solidity"}, nil - } - return []string{}, nil -}