Skip to content
Snippets Groups Projects
Commit 05733160 authored by capossele's avatar capossele
Browse files

:sparkles: adds txs per address

parent b0bfea5e
No related branches found
No related tags found
No related merge requests found
package tangle package tangle
import "github.com/iotaledger/iota.go/trinary" import (
"github.com/iotaledger/hive.go/typeutils"
"github.com/iotaledger/iota.go/trinary"
)
func databaseKeyForHashPrefixedHash(address trinary.Hash, transactionHash trinary.Hash) []byte { func databaseKeyForHashPrefixedHash(address trinary.Hash, transactionHash trinary.Hash) []byte {
return append(databaseKeyForHashPrefix(address), trinary.MustTrytesToBytes(transactionHash)...) //return append(databaseKeyForHashPrefix(address), trinary.MustTrytesToBytes(transactionHash)...)
return append(databaseKeyForHashPrefix(address), typeutils.StringToBytes(transactionHash)...)
} }
func databaseKeyForHashPrefix(hash trinary.Hash) []byte { func databaseKeyForHashPrefix(hash trinary.Hash) []byte {
return trinary.MustTrytesToBytes(hash) //return trinary.MustTrytesToBytes(hash)
return typeutils.StringToBytes(hash)
} }
...@@ -18,6 +18,7 @@ func configure(*node.Plugin) { ...@@ -18,6 +18,7 @@ func configure(*node.Plugin) {
configureTransactionMetaDataDatabase() configureTransactionMetaDataDatabase()
configureApproversDatabase() configureApproversDatabase()
configureBundleDatabase() configureBundleDatabase()
configureTransactionHashesForAddressDatabase()
configureSolidifier() configureSolidifier()
} }
......
...@@ -192,6 +192,17 @@ func processMetaTransaction(metaTransaction *meta_transaction.MetaTransaction) { ...@@ -192,6 +192,17 @@ func processMetaTransaction(metaTransaction *meta_transaction.MetaTransaction) {
func processTransaction(transaction *value_transaction.ValueTransaction) { func processTransaction(transaction *value_transaction.ValueTransaction) {
Events.TransactionStored.Trigger(transaction) Events.TransactionStored.Trigger(transaction)
// store transaction hash for address in DB
err := StoreTransactionHashForAddressInDatabase(
&TxHashForAddress{
Address: transaction.GetAddress(),
TxHash: transaction.GetHash(),
},
)
if err != nil {
log.Errorw(err.Error())
}
transactionHash := transaction.GetHash() transactionHash := transaction.GetHash()
// register tx as approver for trunk // register tx as approver for trunk
...@@ -211,7 +222,7 @@ func processTransaction(transaction *value_transaction.ValueTransaction) { ...@@ -211,7 +222,7 @@ func processTransaction(transaction *value_transaction.ValueTransaction) {
} }
// update the solidity flags of this transaction and its approvers // update the solidity flags of this transaction and its approvers
_, err := IsSolid(transaction) _, err = IsSolid(transaction)
if err != nil { if err != nil {
log.Errorf("Unable to check solidity: %s", err.Error()) log.Errorf("Unable to check solidity: %s", err.Error())
return return
...@@ -232,6 +243,6 @@ func requestTransaction(hash trinary.Trytes) { ...@@ -232,6 +243,6 @@ func requestTransaction(hash trinary.Trytes) {
return return
} }
log.Infow("Requesting tx", "hash", hash) log.Debugw("Requesting tx", "hash", hash)
requester.RequestTransaction(hash) requester.RequestTransaction(hash)
} }
...@@ -46,6 +46,7 @@ func TestSolidifier(t *testing.T) { ...@@ -46,6 +46,7 @@ func TestSolidifier(t *testing.T) {
transaction4 := value_transaction.New() transaction4 := value_transaction.New()
transaction4.SetValue(4) transaction4.SetValue(4)
transaction4.SetBranchTransactionHash(transaction3.GetHash()) transaction4.SetBranchTransactionHash(transaction3.GetHash())
transaction4.SetAddress("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
require.NoError(t, transaction4.DoProofOfWork(meta_transaction.MIN_WEIGHT_MAGNITUDE)) require.NoError(t, transaction4.DoProofOfWork(meta_transaction.MIN_WEIGHT_MAGNITUDE))
// setup event handlers // setup event handlers
...@@ -72,6 +73,10 @@ func TestSolidifier(t *testing.T) { ...@@ -72,6 +73,10 @@ func TestSolidifier(t *testing.T) {
// wait until all are solid // wait until all are solid
wg.Wait() wg.Wait()
txAddr, err := ReadTransactionHashesForAddressFromDatabase(transaction4.GetAddress())
require.NoError(t, err)
require.Equal(t, transaction4.GetHash(), txAddr[0])
// shutdown test node // shutdown test node
node.Shutdown() node.Shutdown()
} }
...@@ -2,6 +2,7 @@ package tangle ...@@ -2,6 +2,7 @@ package tangle
import ( import (
"github.com/iotaledger/goshimmer/packages/database" "github.com/iotaledger/goshimmer/packages/database"
"github.com/iotaledger/hive.go/typeutils"
"github.com/iotaledger/iota.go/trinary" "github.com/iotaledger/iota.go/trinary"
) )
...@@ -29,9 +30,7 @@ func StoreTransactionHashForAddressInDatabase(address *TxHashForAddress) error { ...@@ -29,9 +30,7 @@ func StoreTransactionHashForAddressInDatabase(address *TxHashForAddress) error {
); err != nil { ); err != nil {
return ErrDatabaseError.Derive(err, "failed to store tx for address in database") return ErrDatabaseError.Derive(err, "failed to store tx for address in database")
} }
log.Info("Stored Address:", address.Address)
log.Info("TxHash:", address.TxHash)
log.Info("txForAddr: ", trinary.MustBytesToTrytes(databaseKeyForHashPrefixedHash(address.Address, address.TxHash), 81))
return nil return nil
} }
...@@ -48,10 +47,10 @@ func DeleteTransactionHashForAddressInDatabase(address *TxHashForAddress) error ...@@ -48,10 +47,10 @@ func DeleteTransactionHashForAddressInDatabase(address *TxHashForAddress) error
func ReadTransactionHashesForAddressFromDatabase(address trinary.Hash) ([]trinary.Hash, error) { func ReadTransactionHashesForAddressFromDatabase(address trinary.Hash) ([]trinary.Hash, error) {
var transactionHashes []trinary.Hash var transactionHashes []trinary.Hash
err := transactionsHashesForAddressDatabase.ForEachWithPrefix(databaseKeyForHashPrefix(address), func(key []byte, value []byte) { err := transactionsHashesForAddressDatabase.ForEachWithPrefix(databaseKeyForHashPrefix(address), func(key []byte, value []byte) {
log.Info("Len key:", len(key)) k := typeutils.BytesToString(key)
txHash := trinary.MustBytesToTrytes(key)[81:] if len(k) > 81 {
log.Info("Len ALL:", len(txHash)) transactionHashes = append(transactionHashes, k[81:])
transactionHashes = append(transactionHashes, txHash) }
}) })
if err != nil { if err != nil {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment