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
dda5af0e
Commit
dda5af0e
authored
Feb 09, 2016
by
Péter Szilágyi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
eth, miner: move the public miner api into eth to access etherbase
parent
8b5b635d
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
53 additions
and
76 deletions
+53
-76
api.go
eth/api.go
+52
-0
backend.go
eth/backend.go
+1
-1
api.go
miner/api.go
+0
-75
No files found.
eth/api.go
View file @
dda5af0e
...
...
@@ -169,6 +169,58 @@ func (s *PublicEthereumAPI) Syncing() (interface{}, error) {
return
false
,
nil
}
// PublicMinerAPI provides an API to control the miner.
// It offers only methods that operate on data that pose no security risk when it is publicly accessible.
type
PublicMinerAPI
struct
{
e
*
Ethereum
agent
*
miner
.
RemoteAgent
}
// NewPublicMinerAPI create a new PublicMinerAPI instance.
func
NewPublicMinerAPI
(
e
*
Ethereum
)
*
PublicMinerAPI
{
agent
:=
miner
.
NewRemoteAgent
()
e
.
Miner
()
.
Register
(
agent
)
return
&
PublicMinerAPI
{
e
,
agent
}
}
// Mining returns an indication if this node is currently mining.
func
(
s
*
PublicMinerAPI
)
Mining
()
bool
{
return
s
.
e
.
IsMining
()
}
// SubmitWork can be used by external miner to submit their POW solution. It returns an indication if the work was
// accepted. Note, this is not an indication if the provided work was valid!
func
(
s
*
PublicMinerAPI
)
SubmitWork
(
nonce
rpc
.
HexNumber
,
solution
,
digest
common
.
Hash
)
bool
{
return
s
.
agent
.
SubmitWork
(
nonce
.
Uint64
(),
digest
,
solution
)
}
// GetWork returns a work package for external miner. The work package consists of 3 strings
// result[0], 32 bytes hex encoded current block header pow-hash
// result[1], 32 bytes hex encoded seed hash used for DAG
// result[2], 32 bytes hex encoded boundary condition ("target"), 2^256/difficulty
func
(
s
*
PublicMinerAPI
)
GetWork
()
([]
string
,
error
)
{
if
!
s
.
e
.
IsMining
()
{
if
err
:=
s
.
e
.
StartMining
(
0
,
""
);
err
!=
nil
{
return
nil
,
err
}
}
if
work
,
err
:=
s
.
agent
.
GetWork
();
err
==
nil
{
return
work
[
:
],
nil
}
else
{
glog
.
Infof
(
"%v
\n
"
,
err
)
}
return
nil
,
fmt
.
Errorf
(
"mining not ready"
)
}
// SubmitHashrate can be used for remote miners to submit their hash rate. This enables the node to report the combined
// hash rate of all miners which submit work through this node. It accepts the miner hash rate and an identifier which
// must be unique between nodes.
func
(
s
*
PublicMinerAPI
)
SubmitHashrate
(
hashrate
rpc
.
HexNumber
,
id
common
.
Hash
)
bool
{
s
.
agent
.
SubmitHashrate
(
id
,
hashrate
.
Uint64
())
return
true
}
// PrivateMinerAPI provides private RPC methods to control the miner.
// These methods can be abused by external users and must be considered insecure for use by untrusted users.
type
PrivateMinerAPI
struct
{
...
...
eth/backend.go
View file @
dda5af0e
...
...
@@ -274,7 +274,7 @@ func (s *Ethereum) APIs() []rpc.API {
},
{
Namespace
:
"eth"
,
Version
:
"1.0"
,
Service
:
miner
.
NewPublicMinerAPI
(
s
.
Miner
()
),
Service
:
NewPublicMinerAPI
(
s
),
Public
:
true
,
},
{
Namespace
:
"eth"
,
...
...
miner/api.go
deleted
100644 → 0
View file @
8b5b635d
// 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 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 General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
package
miner
import
(
"fmt"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/logger/glog"
"github.com/ethereum/go-ethereum/rpc"
)
// PublicMinerAPI provides an API to control the miner.
// It offers only methods that operate on data that pose no security risk when it is publicly accessible.
type
PublicMinerAPI
struct
{
miner
*
Miner
agent
*
RemoteAgent
}
// NewPublicMinerAPI create a new PublicMinerAPI instance.
func
NewPublicMinerAPI
(
miner
*
Miner
)
*
PublicMinerAPI
{
agent
:=
NewRemoteAgent
()
miner
.
Register
(
agent
)
return
&
PublicMinerAPI
{
miner
,
agent
}
}
// Mining returns an indication if this node is currently mining.
func
(
s
*
PublicMinerAPI
)
Mining
()
bool
{
return
s
.
miner
.
Mining
()
}
// SubmitWork can be used by external miner to submit their POW solution. It returns an indication if the work was
// accepted. Note, this is not an indication if the provided work was valid!
func
(
s
*
PublicMinerAPI
)
SubmitWork
(
nonce
rpc
.
HexNumber
,
solution
,
digest
common
.
Hash
)
bool
{
return
s
.
agent
.
SubmitWork
(
nonce
.
Uint64
(),
digest
,
solution
)
}
// GetWork returns a work package for external miner. The work package consists of 3 strings
// result[0], 32 bytes hex encoded current block header pow-hash
// result[1], 32 bytes hex encoded seed hash used for DAG
// result[2], 32 bytes hex encoded boundary condition ("target"), 2^256/difficulty
func
(
s
*
PublicMinerAPI
)
GetWork
()
([]
string
,
error
)
{
if
!
s
.
Mining
()
{
s
.
miner
.
Start
(
s
.
miner
.
coinbase
,
0
)
}
if
work
,
err
:=
s
.
agent
.
GetWork
();
err
==
nil
{
return
work
[
:
],
nil
}
else
{
glog
.
Infof
(
"%v
\n
"
,
err
)
}
return
nil
,
fmt
.
Errorf
(
"mining not ready"
)
}
// SubmitHashrate can be used for remote miners to submit their hash rate. This enables the node to report the combined
// hash rate of all miners which submit work through this node. It accepts the miner hash rate and an identifier which
// must be unique between nodes.
func
(
s
*
PublicMinerAPI
)
SubmitHashrate
(
hashrate
rpc
.
HexNumber
,
id
common
.
Hash
)
bool
{
s
.
agent
.
SubmitHashrate
(
id
,
hashrate
.
Uint64
())
return
true
}
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