Merkle proofs!

This commit is contained in:
Jae Kwon
2015-05-24 14:19:46 -07:00
parent b5df5f6642
commit fdf0e720bc
9 changed files with 371 additions and 78 deletions

View File

@ -160,6 +160,9 @@ func ReadUint64(r io.Reader, n *int64, err *error) uint64 {
func uvarintSize(i_ uint) int {
i := uint64(i_)
if i == 0 {
return 0
}
if i < 1<<8 {
return 1
}
@ -197,9 +200,11 @@ func WriteVarint(i int, w io.Writer, n *int64, err *error) {
} else {
WriteUint8(uint8(size), w, n, err)
}
buf := make([]byte, 8)
binary.BigEndian.PutUint64(buf, uint64(i))
WriteTo(buf[(8-size):], w, n, err)
if size > 0 {
buf := make([]byte, 8)
binary.BigEndian.PutUint64(buf, uint64(i))
WriteTo(buf[(8-size):], w, n, err)
}
*n += int64(1 + size)
}
@ -215,7 +220,6 @@ func ReadVarint(r io.Reader, n *int64, err *error) int {
return 0
}
if size == 0 {
setFirstErr(err, errors.New("Varint underflow"))
return 0
}
buf := make([]byte, 8)
@ -234,9 +238,11 @@ func ReadVarint(r io.Reader, n *int64, err *error) int {
func WriteUvarint(i uint, w io.Writer, n *int64, err *error) {
var size = uvarintSize(i)
WriteUint8(uint8(size), w, n, err)
buf := make([]byte, 8)
binary.BigEndian.PutUint64(buf, uint64(i))
WriteTo(buf[(8-size):], w, n, err)
if size > 0 {
buf := make([]byte, 8)
binary.BigEndian.PutUint64(buf, uint64(i))
WriteTo(buf[(8-size):], w, n, err)
}
*n += int64(1 + size)
}
@ -247,7 +253,6 @@ func ReadUvarint(r io.Reader, n *int64, err *error) uint {
return 0
}
if size == 0 {
setFirstErr(err, errors.New("Uvarint underflow"))
return 0
}
buf := make([]byte, 8)

View File

@ -32,7 +32,7 @@ func TestVarint(t *testing.T) {
// Near zero
check(-1, "F101")
check(0, "0100")
check(0, "00")
check(1, "0101")
// Positives
check(1<<32-1, "04FFFFFFFF")