Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
Eduard-Voiculescu committed Sep 8, 2023
1 parent 7414ce0 commit 4dc2a8c
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 13 deletions.
19 changes: 19 additions & 0 deletions accountresolver/keyer.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (

const tableAccountLookup = 0x0
const tableCursor = 0x1
const tableKnownTransaction = 0x3

var Keys keyer

Expand Down Expand Up @@ -41,6 +42,24 @@ func (keyer) cursor(readerName string) (out []byte) {
out = make([]byte, len(readerName)+1)
out[0] = tableCursor
copy(out[1:], readerName)
return out
}

func (keyer) transactionSeenPrefix(blockNum uint64) []byte {
out := make([]byte, 1+9)
out[0] = tableKnownTransaction
binary.BigEndian.PutUint64(out[1:], math.MaxUint64-blockNum)
return out
}

func (keyer) transactionSeen(blockNum uint64, trxHash []byte) []byte {
out := make([]byte, 1+8+64)
out[0] = tableKnownTransaction
binary.BigEndian.PutUint64(out[1:9], math.MaxUint64-blockNum)
copy(out[9:], trxHash)
return out
}

func (keyer) unpackTransactionSeen(key []byte) (blockNum uint64, trxHash []byte) {
return binary.BigEndian.Uint64(key[1:9]), key[9:]
}
2 changes: 1 addition & 1 deletion accountresolver/processor.go
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ func (p *Processor) ProcessInstruction(ctx context.Context, blockNum uint64, trx
for _, account := range newAccounts {
p.logger.Debug("\t new account", zap.String("account", base58.Encode(account)))
}
err := p.accountsResolver.Extended(ctx, blockNum, trxHash, tableLookupAccount, NewAccounts(newAccounts))
err := p.accountsResolver.Extend(ctx, blockNum, trxHash, tableLookupAccount, NewAccounts(newAccounts))
if err != nil {
return fmt.Errorf("extending address table %s at block %d: %w", tableLookupAccount, blockNum, err)
}
Expand Down
4 changes: 2 additions & 2 deletions accountresolver/processor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ func Test_ExtendTableLookup_By_AnotherAddressTableLookup_Containing_AddressLooku
resolver := NewKVDBAccountsResolver(db)
p := NewProcessor("test", cursor, NewKVDBAccountsResolver(db), zap.NewNop())

err = p.accountsResolver.Extended(context.Background(), 185_914_860, []byte{0x00}, tableLookupAccountInTransaction, Accounts{AddressTableLookupAccountProgram})
err = p.accountsResolver.Extend(context.Background(), 185_914_860, []byte{0x00}, tableLookupAccountInTransaction, Accounts{AddressTableLookupAccountProgram})
require.NoError(t, err)
err = resolver.store.FlushPuts(context.Background())
require.NoError(t, err)
Expand Down Expand Up @@ -307,7 +307,7 @@ func Test_ExtendTableLookup_By_AnotherAddressTableLookup_Containing_ExtendableTa
resolver := NewKVDBAccountsResolver(db)
p := NewProcessor("test", cursor, NewKVDBAccountsResolver(db), zap.NewNop())

err = p.accountsResolver.Extended(context.Background(), 185_914_860, []byte{0x00}, tableLookupAccountInTransaction, Accounts{tableAccountToExtend})
err = p.accountsResolver.Extend(context.Background(), 185_914_860, []byte{0x00}, tableLookupAccountInTransaction, Accounts{tableAccountToExtend})
require.NoError(t, err)
err = resolver.store.FlushPuts(context.Background())
require.NoError(t, err)
Expand Down
30 changes: 23 additions & 7 deletions accountresolver/resolver.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ import (
)

type AccountsResolver interface {
Extended(ctx context.Context, blockNum uint64, trxHash []byte, key Account, accounts Accounts) error
Extend(ctx context.Context, blockNum uint64, trxHash []byte, key Account, accounts Accounts) error
Resolve(ctx context.Context, atBlockNum uint64, key Account) (Accounts, uint64, []byte, error)
ResolveSeenTransaction(ctx context.Context, atBlockNum uint64, trxHash []byte) ([]byte, error)
SeenTransaction(ctx context.Context, atBlockNum uint64, trxHash []byte) error
StoreCursor(ctx context.Context, readerName string, cursor *Cursor) error
GetCursor(ctx context.Context, readerName string) (*Cursor, error)
}
Expand All @@ -27,7 +29,7 @@ func NewKVDBAccountsResolver(store store.KVStore) *KVDBAccountsResolver {
}
}

func (r *KVDBAccountsResolver) Extended(ctx context.Context, blockNum uint64, trxHash []byte, key Account, accounts Accounts) error {
func (r *KVDBAccountsResolver) Extend(ctx context.Context, blockNum uint64, trxHash []byte, key Account, accounts Accounts) error {
currentAccounts, resolveAtBlockNum, keyTrxHash, err := r.Resolve(ctx, blockNum, key)
if err != nil {
return fmt.Errorf("retreiving last accounts for key %q: %w", key, err)
Expand Down Expand Up @@ -57,10 +59,6 @@ func (r *KVDBAccountsResolver) Resolve(ctx context.Context, atBlockNum uint64, k
return nil, 0, nil, fmt.Errorf("querying accounts for key %q: %w", key, iter.Err())
}

var accounts Accounts
var blockNum uint64
var trxHash []byte

for iter.Next() {
item := iter.Item()
_, keyBlockNum, hash := Keys.unpackTableLookup(item.Key)
Expand All @@ -69,7 +67,25 @@ func (r *KVDBAccountsResolver) Resolve(ctx context.Context, atBlockNum uint64, k
}
}

return accounts, blockNum, trxHash, nil
return nil, 0, nil, nil
}

func (r *KVDBAccountsResolver) ResolveSeenTransaction(ctx context.Context, atBlockNum uint64, trxHash []byte) ([]byte, error) {
val, err := r.store.Get(ctx, Keys.transactionSeen(atBlockNum, trxHash))
if err != nil {

}
if val != nil {

}
}

func (r *KVDBAccountsResolver) SeenTransaction(ctx context.Context, atBlockNum uint64, trxHash []byte) error {

return nil
//err := r.store.Put()
//
//return nil, nil
}

func (r *KVDBAccountsResolver) StoreCursor(ctx context.Context, readerName string, cursor *Cursor) error {
Expand Down
6 changes: 3 additions & 3 deletions accountresolver/resolver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func TestKVDBAccountsResolver_Extended(t *testing.T) {
require.Equal(t, accountFromBase58(t, a2), accounts[0])
require.Equal(t, accountFromBase58(t, a3), accounts[1])

err = resolver.Extended(context.Background(), 100, []byte{0x01}, accountFromBase58(t, a1), []Account{accountFromBase58(t, a4)})
err = resolver.Extend(context.Background(), 100, []byte{0x01}, accountFromBase58(t, a1), []Account{accountFromBase58(t, a4)})
require.NoError(t, err)
err = resolver.store.FlushPuts(context.Background())
require.NoError(t, err)
Expand Down Expand Up @@ -103,7 +103,7 @@ func Test_Extend_Multiple_Accounts_Same_Block(t *testing.T) {
require.NoError(t, err)

resolver := NewKVDBAccountsResolver(db)
err = resolver.Extended(context.Background(), 1, trxHash1, accountFromBase58(t, a1), []Account{accountFromBase58(t, a2), accountFromBase58(t, a3)})
err = resolver.Extend(context.Background(), 1, trxHash1, accountFromBase58(t, a1), []Account{accountFromBase58(t, a2), accountFromBase58(t, a3)})
require.NoError(t, err)
err = resolver.store.FlushPuts(context.Background())
require.NoError(t, err)
Expand All @@ -114,7 +114,7 @@ func Test_Extend_Multiple_Accounts_Same_Block(t *testing.T) {
require.Equal(t, accountFromBase58(t, a2), accounts[0])
require.Equal(t, accountFromBase58(t, a3), accounts[1])

err = resolver.Extended(context.Background(), 1, trxHash2, accountFromBase58(t, a1), []Account{accountFromBase58(t, a4), accountFromBase58(t, a5)})
err = resolver.Extend(context.Background(), 1, trxHash2, accountFromBase58(t, a1), []Account{accountFromBase58(t, a4), accountFromBase58(t, a5)})
require.NoError(t, err)
err = resolver.store.FlushPuts(context.Background())
require.NoError(t, err)
Expand Down

0 comments on commit 4dc2a8c

Please sign in to comment.