// Same as New but using the tmsp ethApp func NewFromApp(ethApp ethStateApp, frontend Frontend) *XEth { ethereum := ethApp.Ethereum() xeth := &XEth{ ethApp: ethApp, // so we can get state roots backend: ethereum, frontend: frontend, quit: make(chan struct{}), filterManager: filters.NewFilterSystem(ethereum.EventMux()), logQueue: make(map[int]*logQueue), blockQueue: make(map[int]*hashQueue), transactionQueue: make(map[int]*hashQueue), messages: make(map[int]*whisperFilter), agent: miner.NewRemoteAgent(), gpo: eth.NewGasPriceOracle(ethereum), } if ethereum.Whisper() != nil { xeth.whisper = NewWhisper(ethereum.Whisper()) } ethereum.Miner().Register(xeth.agent) if frontend == nil { xeth.frontend = dummyFrontend{} } state, _ := xeth.backend.BlockChain().State() xeth.state = NewState(xeth, state) go xeth.start() return xeth }
// New creates an XEth that uses the given frontend. // If a nil Frontend is provided, a default frontend which // confirms all transactions will be used. func New(ethereum *eth.Ethereum, frontend Frontend) *XEth { xeth := &XEth{ backend: ethereum, frontend: frontend, quit: make(chan struct{}), filterManager: filter.NewFilterManager(ethereum.EventMux()), logQueue: make(map[int]*logQueue), blockQueue: make(map[int]*hashQueue), transactionQueue: make(map[int]*hashQueue), messages: make(map[int]*whisperFilter), agent: miner.NewRemoteAgent(), } if ethereum.Whisper() != nil { xeth.whisper = NewWhisper(ethereum.Whisper()) } ethereum.Miner().Register(xeth.agent) if frontend == nil { xeth.frontend = dummyFrontend{} } xeth.state = NewState(xeth, xeth.backend.ChainManager().TransState()) go xeth.start() go xeth.filterManager.Start() return xeth }
// New creates an XEth that uses the given frontend. // If a nil Frontend is provided, a default frontend which // confirms all transactions will be used. func New(eth *eth.Ethereum, frontend Frontend) *XEth { xeth := &XEth{ backend: eth, frontend: frontend, whisper: NewWhisper(eth.Whisper()), quit: make(chan struct{}), filterManager: filter.NewFilterManager(eth.EventMux()), logs: make(map[int]*logFilter), messages: make(map[int]*whisperFilter), agent: miner.NewRemoteAgent(), } eth.Miner().Register(xeth.agent) if frontend == nil { xeth.frontend = dummyFrontend{} } xeth.state = NewState(xeth, xeth.backend.ChainManager().TransState()) go xeth.start() go xeth.filterManager.Start() return xeth }