From c1b98da530fb0479061b11a0476cd12782020c73 Mon Sep 17 00:00:00 2001 From: Olaoluwa Osuntokun Date: Mon, 5 Sep 2016 16:52:54 -0700 Subject: [PATCH] channeldb: also pass in current tx and sig into RecordChannelDelta --- channeldb/channel.go | 7 ++++++- channeldb/channel_test.go | 6 +++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/channeldb/channel.go b/channeldb/channel.go index b3e6cdd4..b2f2f70f 100644 --- a/channeldb/channel.go +++ b/channeldb/channel.go @@ -274,7 +274,9 @@ type ChannelDelta struct { // append-only log which records all state transitions. Additionally, the // internal balances and update counter of the target OpenChannel are updated // accordingly based on the passed delta. -func (c *OpenChannel) RecordChannelDelta(delta *ChannelDelta) error { +func (c *OpenChannel) RecordChannelDelta(newCommitment *wire.MsgTx, + newSig []byte, delta *ChannelDelta) error { + return c.Db.store.Update(func(tx *bolt.Tx) error { chanBucket, err := tx.CreateBucketIfNotExists(openChannelBucket) if err != nil { @@ -287,8 +289,11 @@ func (c *OpenChannel) RecordChannelDelta(delta *ChannelDelta) error { return ErrNoActiveChannels } + // TODO(roasbeef): revisit in-line mutation + c.OurCommitTx = newCommitment c.OurBalance = delta.LocalBalance c.TheirBalance = delta.RemoteBalance + c.OurCommitSig = newSig c.NumUpdates = uint64(delta.UpdateNum) // First we'll write out the current latest dynamic channel diff --git a/channeldb/channel_test.go b/channeldb/channel_test.go index 2afe3abf..a4ea1639 100644 --- a/channeldb/channel_test.go +++ b/channeldb/channel_test.go @@ -364,6 +364,8 @@ func TestChannelStateUpdateLog(t *testing.T) { // Additionally, modify the signature and commitment transaction. newSequence := uint32(129498) newSig := bytes.Repeat([]byte{3}, 71) + newTx := channel.OurCommitTx.Copy() + newTx.TxIn[0].Sequence = newSequence delta := &ChannelDelta{ RevocationHash: key, RevocationKey: pubKey, @@ -372,9 +374,7 @@ func TestChannelStateUpdateLog(t *testing.T) { Htlcs: htlcs, UpdateNum: 1, } - channel.OurCommitTx.TxIn[0].Sequence = newSequence - channel.OurCommitSig = newSig - if err := channel.RecordChannelDelta(delta); err != nil { + if err := channel.RecordChannelDelta(newTx, newSig, delta); err != nil { t.Fatalf("unable to record channel delta: %v", err) }