mirror of
https://github.com/fluencelabs/tendermint
synced 2025-06-12 12:51:22 +00:00
Merge branch 'blockchain_aware'
This commit is contained in:
@ -2,6 +2,7 @@ package proxy
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
tmspcli "github.com/tendermint/tmsp/client"
|
tmspcli "github.com/tendermint/tmsp/client"
|
||||||
|
tmsp "github.com/tendermint/tmsp/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
type AppConn interface {
|
type AppConn interface {
|
||||||
@ -18,4 +19,7 @@ type AppConn interface {
|
|||||||
InfoSync() (info string, err error)
|
InfoSync() (info string, err error)
|
||||||
FlushSync() error
|
FlushSync() error
|
||||||
CommitSync() (hash []byte, log string, err error)
|
CommitSync() (hash []byte, log string, err error)
|
||||||
|
InitChainSync(validators []*tmsp.Validator) (err error)
|
||||||
|
BeginBlockSync(height uint64) (err error)
|
||||||
|
EndBlockSync() (changedValidators []*tmsp.Validator, err error)
|
||||||
}
|
}
|
||||||
|
@ -100,6 +100,33 @@ func (app *localAppConn) CommitSync() (hash []byte, log string, err error) {
|
|||||||
return hash, log, nil
|
return hash, log, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (app *localAppConn) InitChainSync(validators []*tmsp.Validator) (err error) {
|
||||||
|
app.mtx.Lock()
|
||||||
|
if bcApp, ok := app.Application.(tmsp.BlockchainAware); ok {
|
||||||
|
bcApp.InitChain(validators)
|
||||||
|
}
|
||||||
|
app.mtx.Unlock()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (app *localAppConn) BeginBlockSync(height uint64) (err error) {
|
||||||
|
app.mtx.Lock()
|
||||||
|
if bcApp, ok := app.Application.(tmsp.BlockchainAware); ok {
|
||||||
|
bcApp.BeginBlock(height)
|
||||||
|
}
|
||||||
|
app.mtx.Unlock()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (app *localAppConn) EndBlockSync() (changedValidators []*tmsp.Validator, err error) {
|
||||||
|
app.mtx.Lock()
|
||||||
|
if bcApp, ok := app.Application.(tmsp.BlockchainAware); ok {
|
||||||
|
changedValidators = bcApp.EndBlock()
|
||||||
|
}
|
||||||
|
app.mtx.Unlock()
|
||||||
|
return changedValidators, nil
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
|
|
||||||
func (app *localAppConn) callback(req *tmsp.Request, res *tmsp.Response) *tmspcli.ReqRes {
|
func (app *localAppConn) callback(req *tmsp.Request, res *tmsp.Response) *tmspcli.ReqRes {
|
||||||
|
@ -77,16 +77,34 @@ func (s *State) execBlockOnProxyApp(evsw *events.EventSwitch, proxyAppConn proxy
|
|||||||
}
|
}
|
||||||
proxyAppConn.SetResponseCallback(proxyCb)
|
proxyAppConn.SetResponseCallback(proxyCb)
|
||||||
|
|
||||||
// Run next txs in the block and get new AppHash
|
// Begin block
|
||||||
|
err := proxyAppConn.BeginBlockSync(uint64(block.Height))
|
||||||
|
if err != nil {
|
||||||
|
log.Warn("Error in proxyAppConn.BeginBlock", "error", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run txs of block
|
||||||
for _, tx := range block.Txs {
|
for _, tx := range block.Txs {
|
||||||
proxyAppConn.AppendTxAsync(tx)
|
proxyAppConn.AppendTxAsync(tx)
|
||||||
if err := proxyAppConn.Error(); err != nil {
|
if err := proxyAppConn.Error(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// End block
|
||||||
|
changedValidators, err := proxyAppConn.EndBlockSync()
|
||||||
|
if err != nil {
|
||||||
|
log.Warn("Error in proxyAppConn.EndBlock", "error", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
// TODO: Do something with changedValidators
|
||||||
|
log.Info("TODO: Do something with changedValidators", changedValidators)
|
||||||
|
|
||||||
|
// Commit block, get hash back
|
||||||
hash, logStr, err := proxyAppConn.CommitSync()
|
hash, logStr, err := proxyAppConn.CommitSync()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Warn("Error computing proxyAppConn hash", "error", err)
|
log.Warn("Error in proxyAppConn.CommitSync", "error", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if logStr != "" {
|
if logStr != "" {
|
||||||
|
Reference in New Issue
Block a user