diff --git a/lnwallet/channel.go b/lnwallet/channel.go index 8029a15b..9641f922 100644 --- a/lnwallet/channel.go +++ b/lnwallet/channel.go @@ -263,12 +263,12 @@ func createCommitTx(fundingOutput *wire.TxIn, ourKey, theirKey *btcec.PublicKey, //simple and assume dual funder (with both funding above reserve) func createCLTVFundingTx(fundingTimeLock int64, ourKey *btcec.PublicKey, theirKey *btcec.PublicKey) (*wire.MsgTx, error) { script := txscript.NewScriptBuilder() - //See how many entries there are - //2: it's a 2-of-2 multisig - //anything else: assume it's a CLTV-timeout 1-sig only - script.AddOp(txscript.OP_DEPTH) - script.AddInt64(2) - script.AddOp(txscript.OP_EQUAL) + //In the scriptSig on the top of the stack, there will be either a 0 or + //1 pushed. + //So the scriptSig will be either: + // <1> + // <0> + //(Alice and Bob can be swapped depending on who's funding) //If this is a 2-of-2 multisig, read the first sig script.AddOp(txscript.OP_IF) diff --git a/revocation/shachain.go b/revocation/shachain.go index 52d724ad..d262a355 100644 --- a/revocation/shachain.go +++ b/revocation/shachain.go @@ -72,6 +72,12 @@ func derive(from, to uint64, startingHash [32]byte) [32]byte { numBranches := from ^ to toDerive := uint64(math.Log2(float64(numBranches))) // uh..... + // math? floats? nahhh! :) bit-flipp-y way to do it: + for toDerive = 0; numBranches>>toDerive > 0; toDerive++ { + } + // ^^^this rounds up instead of down, may be off by 1? + toDerive-- // needed? + for i := int(toDerive - 1); i >= 0; i-- { if (numBranches>>uint(i))&1 == 1 { // Flip the ith bit, then hash the current state to