forked from cerc-io/plugeth
Block header changed & console miner control
* miner control moved to `admin.miner` * miner option to set extra data * block extra now bytes
This commit is contained in:
parent
3040296beb
commit
9c55576c7b
@ -26,8 +26,6 @@ func (js *jsre) adminBindings() {
|
||||
admin := t.Object()
|
||||
admin.Set("suggestPeer", js.suggestPeer)
|
||||
admin.Set("startRPC", js.startRPC)
|
||||
admin.Set("startMining", js.startMining)
|
||||
admin.Set("stopMining", js.stopMining)
|
||||
admin.Set("nodeInfo", js.nodeInfo)
|
||||
admin.Set("peers", js.peers)
|
||||
admin.Set("newAccount", js.newAccount)
|
||||
@ -37,7 +35,30 @@ func (js *jsre) adminBindings() {
|
||||
admin.Set("dumpBlock", js.dumpBlock)
|
||||
admin.Set("verbosity", js.verbosity)
|
||||
admin.Set("backtrace", js.backtrace)
|
||||
admin.Set("hashrate", js.hashrate)
|
||||
|
||||
admin.Set("miner", struct{}{})
|
||||
t, _ = admin.Get("miner")
|
||||
miner := t.Object()
|
||||
miner.Set("start", js.startMining)
|
||||
miner.Set("stop", js.stopMining)
|
||||
miner.Set("hashrate", js.hashrate)
|
||||
miner.Set("setExtra", js.setExtra)
|
||||
}
|
||||
|
||||
func (js *jsre) setExtra(call otto.FunctionCall) otto.Value {
|
||||
extra, err := call.Argument(0).ToString()
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return otto.UndefinedValue()
|
||||
}
|
||||
|
||||
if len(extra) > 1024 {
|
||||
fmt.Println("error: cannot exceed 1024 bytes")
|
||||
return otto.UndefinedValue()
|
||||
}
|
||||
|
||||
js.ethereum.Miner().SetExtra([]byte(extra))
|
||||
return otto.UndefinedValue()
|
||||
}
|
||||
|
||||
func (js *jsre) hashrate(otto.FunctionCall) otto.Value {
|
||||
|
@ -55,7 +55,7 @@ func NewCanonical(n int, db common.Database) (*BlockProcessor, error) {
|
||||
|
||||
// block time is fixed at 10 seconds
|
||||
func newBlockFromParent(addr common.Address, parent *types.Block) *types.Block {
|
||||
block := types.NewBlock(parent.Hash(), addr, parent.Root(), common.BigPow(2, 32), 0, "")
|
||||
block := types.NewBlock(parent.Hash(), addr, parent.Root(), common.BigPow(2, 32), 0, nil)
|
||||
block.SetUncles(nil)
|
||||
block.SetTransactions(nil)
|
||||
block.SetReceipts(nil)
|
||||
|
@ -228,7 +228,7 @@ func (bc *ChainManager) NewBlock(coinbase common.Address) *types.Block {
|
||||
root,
|
||||
common.BigPow(2, 32),
|
||||
0,
|
||||
"")
|
||||
nil)
|
||||
block.SetUncles(nil)
|
||||
block.SetTransactions(nil)
|
||||
block.SetReceipts(nil)
|
||||
|
@ -20,7 +20,7 @@ var ZeroHash160 = make([]byte, 20)
|
||||
var ZeroHash512 = make([]byte, 64)
|
||||
|
||||
func GenesisBlock(db common.Database) *types.Block {
|
||||
genesis := types.NewBlock(common.Hash{}, common.Address{}, common.Hash{}, params.GenesisDifficulty, 42, "")
|
||||
genesis := types.NewBlock(common.Hash{}, common.Address{}, common.Hash{}, params.GenesisDifficulty, 42, nil)
|
||||
genesis.Header().Number = common.Big0
|
||||
genesis.Header().GasLimit = params.GenesisGasLimit
|
||||
genesis.Header().GasUsed = common.Big0
|
||||
|
@ -39,7 +39,7 @@ type Header struct {
|
||||
// Creation time
|
||||
Time uint64
|
||||
// Extra data
|
||||
Extra string
|
||||
Extra []byte
|
||||
// Mix digest for quick checking to prevent DOS
|
||||
MixDigest common.Hash
|
||||
// Nonce
|
||||
@ -121,7 +121,7 @@ type storageblock struct {
|
||||
TD *big.Int
|
||||
}
|
||||
|
||||
func NewBlock(parentHash common.Hash, coinbase common.Address, root common.Hash, difficulty *big.Int, nonce uint64, extra string) *Block {
|
||||
func NewBlock(parentHash common.Hash, coinbase common.Address, root common.Hash, difficulty *big.Int, nonce uint64, extra []byte) *Block {
|
||||
header := &Header{
|
||||
Root: root,
|
||||
ParentHash: parentHash,
|
||||
@ -371,7 +371,7 @@ func (self *Header) String() string {
|
||||
GasLimit: %v
|
||||
GasUsed: %v
|
||||
Time: %v
|
||||
Extra: %v
|
||||
Extra: %s
|
||||
MixDigest: %x
|
||||
Nonce: %x`,
|
||||
self.ParentHash, self.UncleHash, self.Coinbase, self.Root, self.TxHash, self.ReceiptHash, self.Bloom, self.Difficulty, self.Number, self.GasLimit, self.GasUsed, self.Time, self.Extra, self.MixDigest, self.Nonce)
|
||||
|
@ -13,7 +13,6 @@ type Miner struct {
|
||||
worker *worker
|
||||
|
||||
MinAcceptedGasPrice *big.Int
|
||||
Extra string
|
||||
|
||||
mining bool
|
||||
eth core.Backend
|
||||
@ -58,3 +57,7 @@ func (self *Miner) Stop() {
|
||||
func (self *Miner) HashRate() int64 {
|
||||
return self.worker.HashRate()
|
||||
}
|
||||
|
||||
func (self *Miner) SetExtra(extra []byte) {
|
||||
self.worker.extra = extra
|
||||
}
|
||||
|
@ -72,7 +72,9 @@ type worker struct {
|
||||
eth core.Backend
|
||||
chain *core.ChainManager
|
||||
proc *core.BlockProcessor
|
||||
|
||||
coinbase common.Address
|
||||
extra []byte
|
||||
|
||||
current *environment
|
||||
|
||||
@ -213,6 +215,7 @@ func (self *worker) commitNewWork() {
|
||||
if block.Time() == self.chain.CurrentBlock().Time() {
|
||||
block.Header().Time++
|
||||
}
|
||||
block.Header().Extra = self.extra
|
||||
|
||||
self.current = env(block, self.eth)
|
||||
for _, ancestor := range self.chain.GetAncestors(block, 7) {
|
||||
|
@ -186,7 +186,7 @@ func mustConvertHeader(in btHeader) *types.Header {
|
||||
Coinbase: mustConvertAddress(in.Coinbase),
|
||||
UncleHash: mustConvertHash(in.UncleHash),
|
||||
ParentHash: mustConvertHash(in.ParentHash),
|
||||
Extra: string(mustConvertBytes(in.ExtraData)),
|
||||
Extra: mustConvertBytes(in.ExtraData),
|
||||
GasUsed: mustConvertBigInt10(in.GasUsed),
|
||||
GasLimit: mustConvertBigInt10(in.GasLimit),
|
||||
Difficulty: mustConvertBigInt10(in.Difficulty),
|
||||
|
Loading…
Reference in New Issue
Block a user