|
|
|
@ -21,10 +21,10 @@ import ( |
|
|
|
|
"encoding/binary" |
|
|
|
|
"io" |
|
|
|
|
"math/big" |
|
|
|
|
"reflect" |
|
|
|
|
"sort" |
|
|
|
|
"sync/atomic" |
|
|
|
|
"time" |
|
|
|
|
"unsafe" |
|
|
|
|
|
|
|
|
|
"github.com/ethereum/go-ethereum/common" |
|
|
|
|
"github.com/ethereum/go-ethereum/common/hexutil" |
|
|
|
@ -102,10 +102,12 @@ func (h *Header) Hash() common.Hash { |
|
|
|
|
return rlpHash(h) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var headerSize = common.StorageSize(reflect.TypeOf(Header{}).Size()) |
|
|
|
|
|
|
|
|
|
// Size returns the approximate memory used by all internal contents. It is used
|
|
|
|
|
// to approximate and limit the memory consumption of various caches.
|
|
|
|
|
func (h *Header) Size() common.StorageSize { |
|
|
|
|
return common.StorageSize(unsafe.Sizeof(*h)) + common.StorageSize(len(h.Extra)+(h.Difficulty.BitLen()+h.Number.BitLen()+h.Time.BitLen())/8) |
|
|
|
|
return headerSize + common.StorageSize(len(h.Extra)+(h.Difficulty.BitLen()+h.Number.BitLen()+h.Time.BitLen())/8) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func rlpHash(x interface{}) (h common.Hash) { |
|
|
|
|