From 016721a10c1428b969b0c9b98c5f05736c01f253 Mon Sep 17 00:00:00 2001
From: Hans Moog <hm@mkjc.net>
Date: Mon, 23 Dec 2019 01:29:51 +0100
Subject: [PATCH] Feat: valuetransfers store input now

---
 .../payload/valuetransfer/value.go            | 19 +++++++++++++++----
 .../transaction/test/transaction_test.go      |  4 +++-
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/packages/binary/transaction/payload/valuetransfer/value.go b/packages/binary/transaction/payload/valuetransfer/value.go
index 4f395d1d..e433d9df 100644
--- a/packages/binary/transaction/payload/valuetransfer/value.go
+++ b/packages/binary/transaction/payload/valuetransfer/value.go
@@ -1,20 +1,31 @@
 package valuetransfer
 
 import (
+	"sync"
+
 	"github.com/iotaledger/goshimmer/packages/binary/address"
-	"github.com/iotaledger/goshimmer/packages/binary/transaction"
 	"github.com/iotaledger/goshimmer/packages/binary/transaction/payload"
+	"github.com/iotaledger/goshimmer/packages/ledgerstate/transfer"
 )
 
-type ValueTransfer struct{}
+type ValueTransfer struct {
+	inputs      []*transfer.OutputReference
+	inputsMutex sync.RWMutex
+}
 
 var Type = payload.Type(1)
 
 func New() *ValueTransfer {
-	return &ValueTransfer{}
+	return &ValueTransfer{
+		inputs: make([]*transfer.OutputReference, 0),
+	}
 }
 
-func (valueTransfer *ValueTransfer) AddInput(transaction transaction.Id, address address.Address) *ValueTransfer {
+func (valueTransfer *ValueTransfer) AddInput(transferHash transfer.Hash, address address.Address) *ValueTransfer {
+	valueTransfer.inputsMutex.Lock()
+	valueTransfer.inputs = append(valueTransfer.inputs, transfer.NewOutputReference(transferHash, address))
+	valueTransfer.inputsMutex.Unlock()
+
 	return valueTransfer
 }
 
diff --git a/packages/binary/transaction/test/transaction_test.go b/packages/binary/transaction/test/transaction_test.go
index c01b6c3f..3e195bef 100644
--- a/packages/binary/transaction/test/transaction_test.go
+++ b/packages/binary/transaction/test/transaction_test.go
@@ -4,6 +4,8 @@ import (
 	"fmt"
 	"testing"
 
+	"github.com/iotaledger/goshimmer/packages/ledgerstate/transfer"
+
 	"github.com/iotaledger/goshimmer/packages/binary/transaction"
 
 	"github.com/iotaledger/goshimmer/packages/binary/address"
@@ -17,7 +19,7 @@ func TestNew(t *testing.T) {
 	newTransaction1 := transaction.New(transaction.EmptyId, transaction.EmptyId, identity.Generate(), data.New([]byte("test")))
 	assert.Equal(t, newTransaction1.VerifySignature(), true)
 
-	valueTransfer := valuetransfer.New().AddInput(transaction.EmptyId, address.Random())
+	valueTransfer := valuetransfer.New().AddInput(transfer.NewHash("test"), address.Random())
 
 	newValueTransaction1 := transaction.New(transaction.EmptyId, transaction.EmptyId, identity.Generate(), valueTransfer)
 	assert.Equal(t, newValueTransaction1.VerifySignature(), true)
-- 
GitLab