|
|
|
@ -88,6 +88,7 @@ func (js *jsre) adminBindings() { |
|
|
|
|
debug.Set("getBlockRlp", js.getBlockRlp) |
|
|
|
|
debug.Set("setHead", js.setHead) |
|
|
|
|
debug.Set("processBlock", js.debugBlock) |
|
|
|
|
debug.Set("seedhash", js.seedHash) |
|
|
|
|
// undocumented temporary
|
|
|
|
|
debug.Set("waitForBlocks", js.waitForBlocks) |
|
|
|
|
} |
|
|
|
@ -118,6 +119,27 @@ func (js *jsre) getBlock(call otto.FunctionCall) (*types.Block, error) { |
|
|
|
|
return block, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (js *jsre) seedHash(call otto.FunctionCall) otto.Value { |
|
|
|
|
if len(call.ArgumentList) > 0 { |
|
|
|
|
if call.Argument(0).IsNumber() { |
|
|
|
|
num, _ := call.Argument(0).ToInteger() |
|
|
|
|
hash, err := ethash.GetSeedHash(uint64(num)) |
|
|
|
|
if err != nil { |
|
|
|
|
fmt.Println(err) |
|
|
|
|
return otto.UndefinedValue() |
|
|
|
|
} |
|
|
|
|
v, _ := call.Otto.ToValue(fmt.Sprintf("0x%x", hash)) |
|
|
|
|
return v |
|
|
|
|
} else { |
|
|
|
|
fmt.Println("arg not a number") |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
fmt.Println("requires number argument") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return otto.UndefinedValue() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (js *jsre) pendingTransactions(call otto.FunctionCall) otto.Value { |
|
|
|
|
txs := js.ethereum.TxPool().GetTransactions() |
|
|
|
|
|
|
|
|
@ -220,10 +242,11 @@ func (js *jsre) debugBlock(call otto.FunctionCall) otto.Value { |
|
|
|
|
vm.Debug = true |
|
|
|
|
_, err = js.ethereum.BlockProcessor().RetryProcess(block) |
|
|
|
|
if err != nil { |
|
|
|
|
glog.Infoln(err) |
|
|
|
|
fmt.Println(err) |
|
|
|
|
} |
|
|
|
|
vm.Debug = old |
|
|
|
|
|
|
|
|
|
fmt.Println("ok") |
|
|
|
|
return otto.UndefinedValue() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|