From 6cffb54a221cef78fb66f2ef411f90e7a80d6054 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 30 Oct 2017 23:37:02 -0600 Subject: [PATCH] gcs/builder: recurse into P2SH/witness scripts --- gcs/builder/builder.go | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/gcs/builder/builder.go b/gcs/builder/builder.go index b72e14a..61cd1aa 100644 --- a/gcs/builder/builder.go +++ b/gcs/builder/builder.go @@ -195,17 +195,31 @@ func (b *GCSBuilder) AddScript(script []byte) *GCSBuilder { return b } - return b.AddEntries(data) + b.AddEntries(data) + + // Recurse into each pushed datum and attempt to add it as a script. + for _, datum := range data { + b.AddScript(datum) + } + + return b } -// AddWitness adds each item of the passed filter stack to the filer. +// AddWitness adds each item of the passed filter stack to the filter, and then +// adds each item as a script. func (b *GCSBuilder) AddWitness(witness wire.TxWitness) *GCSBuilder { // Do nothing if the builder's already errored out. if b.err != nil { return b } - return b.AddEntries(witness) + b.AddEntries(witness) + + for _, script := range witness { + b.AddScript(script) + } + + return b } // Build returns a function which builds a GCS filter with the given parameters