mirror of https://github.com/status-im/op-geth.git
Defautl block
This commit is contained in:
parent
49ded3aa77
commit
a1c830cd3c
|
@ -62,6 +62,8 @@
|
|||
|
||||
web3.setProvider(new web3.providers.HttpSyncProvider('http://localhost:8545'));
|
||||
|
||||
eth.defaultBlock = -2
|
||||
|
||||
document.querySelector("#number").innerHTML = eth.number;
|
||||
document.querySelector("#coinbase").innerHTML = eth.coinbase
|
||||
document.querySelector("#peer_count").innerHTML = eth.peerCount;
|
||||
|
@ -72,8 +74,9 @@
|
|||
document.querySelector("#mining").innerHTML = eth.mining;
|
||||
document.querySelector("#listening").innerHTML = eth.listening;
|
||||
eth.watch('chain').changed(function() {
|
||||
document.querySelector("#number").innerHTML = eth.number;
|
||||
});
|
||||
document.querySelector("#number").innerHTML = eth.number;
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
63
rpc/api.go
63
rpc/api.go
|
@ -52,19 +52,20 @@ type EthereumApi struct {
|
|||
|
||||
db ethutil.Database
|
||||
|
||||
defaultBlockAge int
|
||||
defaultBlockAge int64
|
||||
}
|
||||
|
||||
func NewEthereumApi(eth *xeth.XEth) *EthereumApi {
|
||||
db, _ := ethdb.NewLDBDatabase("dapps")
|
||||
api := &EthereumApi{
|
||||
eth: eth,
|
||||
mux: eth.Backend().EventMux(),
|
||||
quit: make(chan struct{}),
|
||||
filterManager: filter.NewFilterManager(eth.Backend().EventMux()),
|
||||
logs: make(map[int]*logFilter),
|
||||
messages: make(map[int]*whisperFilter),
|
||||
db: db,
|
||||
eth: eth,
|
||||
mux: eth.Backend().EventMux(),
|
||||
quit: make(chan struct{}),
|
||||
filterManager: filter.NewFilterManager(eth.Backend().EventMux()),
|
||||
logs: make(map[int]*logFilter),
|
||||
messages: make(map[int]*whisperFilter),
|
||||
db: db,
|
||||
defaultBlockAge: -1,
|
||||
}
|
||||
go api.filterManager.Start()
|
||||
go api.start()
|
||||
|
@ -72,6 +73,22 @@ func NewEthereumApi(eth *xeth.XEth) *EthereumApi {
|
|||
return api
|
||||
}
|
||||
|
||||
func (self *EthereumApi) setStateByBlockNumber(num int64) {
|
||||
chain := self.xeth().Backend().ChainManager()
|
||||
var block *types.Block
|
||||
|
||||
if self.defaultBlockAge < 0 {
|
||||
num = chain.CurrentBlock().Number().Int64() + num + 1
|
||||
}
|
||||
block = chain.GetBlockByNumber(uint64(num))
|
||||
|
||||
if block != nil {
|
||||
self.useState(state.New(block.Root(), self.xeth().Backend().Db()))
|
||||
} else {
|
||||
self.useState(chain.State())
|
||||
}
|
||||
}
|
||||
|
||||
func (self *EthereumApi) start() {
|
||||
timer := time.NewTicker(filterTickerTime)
|
||||
events := self.mux.Subscribe(core.ChainEvent{})
|
||||
|
@ -83,12 +100,7 @@ done:
|
|||
switch ev.(type) {
|
||||
case core.ChainEvent:
|
||||
if self.defaultBlockAge < 0 {
|
||||
chain := self.xeth().Backend().ChainManager()
|
||||
block := chain.GetBlockByNumber(chain.CurrentBlock().Number().Uint64() - uint64(self.defaultBlockAge))
|
||||
if block != nil {
|
||||
statedb := state.New(block.Root(), self.db)
|
||||
self.useState(statedb)
|
||||
}
|
||||
self.setStateByBlockNumber(self.defaultBlockAge)
|
||||
}
|
||||
}
|
||||
case <-timer.C:
|
||||
|
@ -239,21 +251,6 @@ func (p *EthereumApi) GetBlock(args *GetBlockArgs, reply *interface{}) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
/*
|
||||
func unlockAccount(server, account *Account) bool {
|
||||
pwd, status := server.PasswordDialog()
|
||||
switch status {
|
||||
case Ok:
|
||||
if !account.Unlock([]byte(pwd)) {
|
||||
return unlockAccount(account)
|
||||
}
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
func (p *EthereumApi) Transact(args *NewTxArgs, reply *interface{}) error {
|
||||
if len(args.Gas) == 0 {
|
||||
args.Gas = defaultGas.String()
|
||||
|
@ -378,8 +375,10 @@ func (p *EthereumApi) GetDefaultBlockAge(reply *interface{}) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (p *EthereumApi) SetDefaultBlockAge(defaultBlockAge int, reply *interface{}) error {
|
||||
func (p *EthereumApi) SetDefaultBlockAge(defaultBlockAge int64, reply *interface{}) error {
|
||||
p.defaultBlockAge = defaultBlockAge
|
||||
p.setStateByBlockNumber(p.defaultBlockAge)
|
||||
|
||||
*reply = true
|
||||
return nil
|
||||
}
|
||||
|
@ -531,7 +530,7 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return p.SetDefaultBlockAge(args, reply)
|
||||
return p.SetDefaultBlockAge(int64(args), reply)
|
||||
case "eth_peerCount":
|
||||
return p.GetPeerCount(reply)
|
||||
case "eth_number":
|
||||
|
@ -720,7 +719,7 @@ func (self *EthereumApi) useState(statedb *state.StateDB) {
|
|||
self.xethMu.Lock()
|
||||
defer self.xethMu.Unlock()
|
||||
|
||||
self.eth = self.xeth().UseState(statedb)
|
||||
self.eth = self.eth.UseState(statedb)
|
||||
}
|
||||
|
||||
func t(f ui.Frontend) {
|
||||
|
|
Loading…
Reference in New Issue