Select Git revision
tx_per_address.go
Angelo Capossele
authored and
Luca Moser
committed
*moves all webapi into one * adds public key log * changes txRequest to getTrytes * rename packages * adds comments * changes status to error * removes duration from API - getTrytes converts trits to trytes - set default spammer TPS to 1 Fix: Allow starting a node with gossip disabled (#97) * fix: remove selection flag and use gossip plugin * Upgrade hive.go feat: improve logging feat: improve analysis status chore: remove unused packages (#99) Fix: Use docker specific config (#100) * Use docker specific config * Format JSON removes status adds omitempty updates style import adds getNeighbors API adds getTransaction removes addEndpoint * WIP * WIP * adds txs per address * adds findTransactions API
tx_per_address.go 1.66 KiB
package tangle
import (
"github.com/iotaledger/goshimmer/packages/database"
"github.com/iotaledger/hive.go/typeutils"
"github.com/iotaledger/iota.go/trinary"
)
var (
transactionsHashesForAddressDatabase database.Database
)
func configureTransactionHashesForAddressDatabase() {
if db, err := database.Get("transactionsHashesForAddress"); err != nil {
panic(err)
} else {
transactionsHashesForAddressDatabase = db
}
}
type TxHashForAddress struct {
Address trinary.Hash
TxHash trinary.Hash
}
func StoreTransactionHashForAddressInDatabase(address *TxHashForAddress) error {
if err := transactionsHashesForAddressDatabase.Set(
databaseKeyForHashPrefixedHash(address.Address, address.TxHash),
[]byte{},
); err != nil {
return ErrDatabaseError.Derive(err, "failed to store tx for address in database")
}
return nil
}
func DeleteTransactionHashForAddressInDatabase(address *TxHashForAddress) error {
if err := transactionsHashesForAddressDatabase.Delete(
databaseKeyForHashPrefixedHash(address.Address, address.TxHash),
); err != nil {
return ErrDatabaseError.Derive(err, "failed to delete tx for address")
}
return nil
}
func ReadTransactionHashesForAddressFromDatabase(address trinary.Hash) ([]trinary.Hash, error) {
var transactionHashes []trinary.Hash
err := transactionsHashesForAddressDatabase.ForEachWithPrefix(databaseKeyForHashPrefix(address), func(key []byte, value []byte) {
k := typeutils.BytesToString(key)
if len(k) > 81 {
transactionHashes = append(transactionHashes, k[81:])
}
})
if err != nil {
return nil, ErrDatabaseError.Derive(err, "failed to read tx per address from database")
} else {
return transactionHashes, nil
}
}