mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-22 04:36:42 +00:00
fix block rlp decode
This commit is contained in:
parent
f91a39e43c
commit
74f4456ccf
2 changed files with 12 additions and 34 deletions
|
|
@ -102,41 +102,19 @@ func NewBlockWithHeader(header *Header) *Block {
|
|||
}
|
||||
|
||||
func (self *Block) DecodeRLP(s *rlp.Stream) error {
|
||||
if _, err := s.List(); err != nil {
|
||||
var extblock struct {
|
||||
Header
|
||||
Txs []*Transaction
|
||||
Uncles *Header
|
||||
TD *big.Int // optional
|
||||
}
|
||||
if err := s.Decode(&extblock); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var header Header
|
||||
if err := s.Decode(&header); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var transactions []*Transaction
|
||||
if err := s.Decode(&transactions); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var uncleHeaders []*Header
|
||||
if err := s.Decode(&uncleHeaders); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var tdBytes []byte
|
||||
if err := s.Decode(&tdBytes); err != nil {
|
||||
// If this block comes from the network that's fine. If loaded from disk it should be there
|
||||
// Blocks don't store their Td when propagated over the network
|
||||
} else {
|
||||
self.Td = ethutil.BigD(tdBytes)
|
||||
}
|
||||
|
||||
if err := s.ListEnd(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
self.header = &header
|
||||
self.uncles = uncleHeaders
|
||||
self.transactions = transactions
|
||||
|
||||
self.header = extblock.Header
|
||||
self.uncles = extblock.Uncles
|
||||
self.transactions = extblock.Txs
|
||||
self.TD = extblock.TD
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -199,7 +199,7 @@ func (self *ethProtocol) handle() error {
|
|||
msgStream := rlp.NewStream(msg.Payload)
|
||||
msgStream.List()
|
||||
for {
|
||||
var block *types.Block
|
||||
var block types.Block
|
||||
if err := msgStream.Decode(&block); err != nil {
|
||||
if err == rlp.EOL {
|
||||
break
|
||||
|
|
|
|||
Loading…
Reference in a new issue