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