diff --git a/packages/binary/transaction/payload/valuetransfer/value.go b/packages/binary/transaction/payload/valuetransfer/value.go index 4f395d1d169aad94a283453676e59cb81f5cf1a8..e433d9dfdf685b012760ea3b396659c616c80289 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 c01b6c3fc44277c69ac9989771ff06060b55a6bf..3e195bef1c50280a9a077870ffac3c0504fe23c8 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)