func DefaultFederationConfig() *FederationConfig {
return &FederationConfig{
Xpubs: []chainkd.XPub{
- xpub("aca17d23cf09d73178a278b59f3cace29ae2a110937f45258da708b593f706908118df74ce6c825821e01dccc325c367ed81619710256c9719f8d728a60331c2"),
- xpub("07e65cb38befb4cbfeef92d746d613c85bafc3b3c532c03e72ec0fb5c2b70efb2ef3cd0da10990380c8a82a3f8c886aab99e5df07b44705d26e4da8ab822109a"),
- xpub("8ec78877e26ca7ff5dcfe9d11a457c522d7b6ba1971781fe60e82649ba8d52c84bae7a75b04f02b880d67344a975b82eb102b1c8c0b507c927527daaa00c216f"),
- xpub("32f4831276cf928699888a616a6711fc869cdde27a578a356e6b867fd34bb46959307667ccebb07215bae7190c6f7b54dc928520c1d87b849ee2c13492571d0c"),
+ xpub("2e171e9aed46633f3560cf4d207c4edb92e5ad6b6f63daee44aa0ed4c58f76fd4d0081f225d2b119ac398749dbc7aa113603bc7710693c54852d33b6b082daab"),
+ xpub("896285b552bfe0647c0effaee41e5ce98a77981396455259792300cfbc0988bfb1a723488cedf0e73c3220e273fb6843abfbee025d7401b67bf81641b208dfc1"),
+ xpub("aa5cb0d5d193a141ce66dd3448e8d74d73bed1131ea05b130c14c95ad04b0295f2d4d3f421ae10a2517f7431e0eca119fea509e0650bd20b4a64b856b5473f35"),
+ xpub("98e6ab8c654bb31e0c432a2c9ff13a6e3419dcb8a1df94f2839f41d79e94b6ca7a68f60b793d947195f761187b37275fbeb345041d5ea3039c5d328b63e3d489"),
},
Quorum: 2,
}
// ProcessBlock is the entry for handle block insert
func (c *Chain) processBlock(block *types.Block) (bool, error) {
blockHash := block.Hash()
- if c.BlockExist(&blockHash) {
+ if c.BlockExist(&blockHash) && c.bestBlockHeader.Height >= block.Height {
log.WithFields(log.Fields{"module": logModule, "hash": blockHash.String(), "height": block.Height}).Info("block has been processed")
return c.orphanManage.BlockExist(&blockHash), nil
}