diff --git a/merkle.go b/merkle.go index 493b0d1..4fa73cb 100644 --- a/merkle.go +++ b/merkle.go @@ -214,8 +214,9 @@ func (t *Tree) RootAndProof() ([]byte, [][]byte) { return ephemeralNode.value, ephemeralProof } -func (t *Tree) GetParkedNodes() [][]byte { - var ret [][]byte +// GetParkedNodes appends parked nodes from all layers +// starting with the base layer to the `ret`. +func (t *Tree) GetParkedNodes(ret [][]byte) [][]byte { layer := t.baseLayer for { ret = append(ret, layer.parking.value) diff --git a/merkle_test.go b/merkle_test.go index 0288f3a..4ed1e81 100644 --- a/merkle_test.go +++ b/merkle_test.go @@ -438,22 +438,22 @@ func TestTree_GetParkedNodes(t *testing.T) { r.NoError(tree.AddLeaf([]byte{0})) r.EqualValues( [][]byte{{0}}, - tree.GetParkedNodes()) + tree.GetParkedNodes(nil)) r.NoError(tree.AddLeaf([]byte{1})) r.EqualValues( [][]byte{nil, decode(r, "b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2")}, - tree.GetParkedNodes()) + tree.GetParkedNodes(nil)) r.NoError(tree.AddLeaf([]byte{2})) r.EqualValues( [][]byte{{2}, decode(r, "b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2")}, - tree.GetParkedNodes()) + tree.GetParkedNodes(nil)) r.NoError(tree.AddLeaf([]byte{3})) r.EqualValues( [][]byte{nil, nil, decode(r, "7699a4fdd6b8b6908a344f73b8f05c8e1400f7253f544602c442ff5c65504b24")}, - tree.GetParkedNodes()) + tree.GetParkedNodes(nil)) } func TestTree_SetParkedNodes(t *testing.T) { @@ -464,21 +464,21 @@ func TestTree_SetParkedNodes(t *testing.T) { r.NoError(tree.SetParkedNodes([][]byte{{0}})) r.NoError(tree.AddLeaf([]byte{1})) parkedNodes := [][]byte{nil, decode(r, "b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2")} - r.EqualValues(parkedNodes, tree.GetParkedNodes()) + r.EqualValues(parkedNodes, tree.GetParkedNodes(nil)) tree, err = NewTreeBuilder().Build() r.NoError(err) r.NoError(tree.SetParkedNodes(parkedNodes)) r.NoError(tree.AddLeaf([]byte{2})) parkedNodes = [][]byte{{2}, decode(r, "b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2")} - r.EqualValues(parkedNodes, tree.GetParkedNodes()) + r.EqualValues(parkedNodes, tree.GetParkedNodes(nil)) tree, err = NewTreeBuilder().Build() r.NoError(err) r.NoError(tree.SetParkedNodes(parkedNodes)) r.NoError(tree.AddLeaf([]byte{3})) parkedNodes = [][]byte{nil, nil, decode(r, "7699a4fdd6b8b6908a344f73b8f05c8e1400f7253f544602c442ff5c65504b24")} - r.EqualValues(parkedNodes, tree.GetParkedNodes()) + r.EqualValues(parkedNodes, tree.GetParkedNodes(nil)) } func decode(r *require.Assertions, hexString string) []byte {