From 7356dc77e0ea986dfd798e9d122e66131b804111 Mon Sep 17 00:00:00 2001 From: Thibaut Horel Date: Wed, 4 May 2016 23:13:36 -0400 Subject: Add some comments for proof extraction --- merkle.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/merkle.go b/merkle.go index 9257c64..99fae7d 100644 --- a/merkle.go +++ b/merkle.go @@ -85,15 +85,15 @@ func (m *BFSMerkle) Build() []byte { func (m *BFSMerkle) Proof(id int64) [][]byte { proof := make([][]byte, m.height) proof[0] = make([]byte, hashSize) - m.ReadAt(proof[0], id*hashSize) - for i := 1; id > 0; i++ { - proof[i] = make([]byte, hashSize) - if id&1 == 0 { - m.ReadAt(proof[i], (id-1)*hashSize) - } else { - m.ReadAt(proof[i], (id+1)*hashSize) + m.ReadAt(proof[0], id*hashSize) // read the queried node + for height := int64(1); height < m.height; height++ { //construct the proof bottom-up + proof[height] = make([]byte, hashSize) + if id&1 == 0 { // right child, reading left sibling + m.ReadAt(proof[height], (id-1)*hashSize) + } else { // left child, reading right sibling + m.ReadAt(proof[height], (id+1)*hashSize) } - id = (id - 1) >> 1 + id = (id - 1) >> 1 // move to parent node } return proof } -- cgit v1.2.3-70-g09d2