Browse Source

use WriteTime/ReadTime, and also log how the block header gets hashed

pull/39/head
Jae Kwon 10 years ago
parent
commit
b7b88cd763
2 changed files with 9 additions and 5 deletions
  1. +4
    -4
      binary/reflect.go
  2. +5
    -1
      block/block.go

+ 4
- 4
binary/reflect.go View File

@ -232,9 +232,9 @@ func readReflect(rv reflect.Value, rt reflect.Type, r io.Reader, n *int64, err *
case reflect.Struct: case reflect.Struct:
if rt == timeType { if rt == timeType {
// Special case: time.Time // Special case: time.Time
num := ReadInt64(r, n, err)
log.Debug(Fmt("Read time: %v", num))
rv.Set(reflect.ValueOf(time.Unix(num, 0)))
t := ReadTime(r, n, err)
log.Debug(Fmt("Read time: %v", t))
rv.Set(reflect.ValueOf(t))
} else { } else {
numFields := rt.NumField() numFields := rt.NumField()
for i := 0; i < numFields; i++ { for i := 0; i < numFields; i++ {
@ -358,7 +358,7 @@ func writeReflect(rv reflect.Value, rt reflect.Type, w io.Writer, n *int64, err
case reflect.Struct: case reflect.Struct:
if rt == timeType { if rt == timeType {
// Special case: time.Time // Special case: time.Time
WriteInt64(rv.Interface().(time.Time).Unix(), w, n, err)
WriteTime(rv.Interface().(time.Time), w, n, err)
} else { } else {
numFields := rt.NumField() numFields := rt.NumField()
for i := 0; i < numFields; i++ { for i := 0; i < numFields; i++ {


+ 5
- 1
block/block.go View File

@ -124,12 +124,16 @@ type Header struct {
func (h *Header) Hash() []byte { func (h *Header) Hash() []byte {
if h.hash == nil { if h.hash == nil {
buf := new(bytes.Buffer)
hasher, n, err := sha256.New(), new(int64), new(error) hasher, n, err := sha256.New(), new(int64), new(error)
binary.WriteBinary(h, hasher, n, err)
binary.WriteBinary(h, buf, n, err)
if *err != nil { if *err != nil {
panic(err) panic(err)
} }
log.Debug("Hashing", "bytes", buf.Bytes())
hasher.Write(buf.Bytes())
h.hash = hasher.Sum(nil) h.hash = hasher.Sum(nil)
log.Debug("Hashing got", "hash", h.hash)
} }
return h.hash return h.hash
} }


Loading…
Cancel
Save