Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ocp/balance/calculator.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ func CalculateFromBlockchain(ctx context.Context, data ocp_data.Provider, tokenA
}

// todo: we may need something that's more resistant to RPC nodes with stale account state
quarks, slot, err := data.GetBlockchainBalance(ctx, tokenAccount.PublicKey().ToBase58(), solana.CommitmentConfirmed)
quarks, slot, err := data.GetBlockchainBalance(ctx, tokenAccount.PublicKey().ToBase58())
if err == solana.ErrNoBalance {
// We can't tell whether
// 1. RPC node is behind, and observed a state before the account existed
Expand Down
2 changes: 1 addition & 1 deletion ocp/common/account.go
Original file line number Diff line number Diff line change
Expand Up @@ -570,7 +570,7 @@ func (a *TimelockAccounts) GetInitializeInstruction(vmAuthority, memory *Account

// ValidateExternalTokenAccount validates an address is an external token account for the provided mint
func ValidateExternalTokenAccount(ctx context.Context, data ocp_data.Provider, tokenAccount, mintAccount *Account) (bool, string, error) {
_, err := data.GetBlockchainTokenAccountInfo(ctx, tokenAccount.PublicKey().ToBase58(), mintAccount.PublicKey().ToBase58(), solana.CommitmentFinalized)
_, err := data.GetBlockchainTokenAccountInfo(ctx, tokenAccount.PublicKey().ToBase58(), mintAccount.PublicKey().ToBase58())
switch err {
case nil:
// Double check there were no race conditions between other SubmitIntent
Expand Down
3 changes: 1 addition & 2 deletions ocp/common/subsidizer.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
ocp_data "github.com/code-payments/ocp-server/ocp/data"
"github.com/code-payments/ocp-server/ocp/data/fulfillment"
"github.com/code-payments/ocp-server/ocp/data/nonce"
"github.com/code-payments/ocp-server/solana"
)

// todo: always assumes mainnet
Expand Down Expand Up @@ -112,7 +111,7 @@ func InjectTestSubsidizer(ctx context.Context, data ocp_data.Provider, testAccou

// GetCurrentSubsidizerBalance returns the subsidizer's current balance in lamports.
func GetCurrentSubsidizerBalance(ctx context.Context, data ocp_data.Provider) (uint64, error) {
accountInfo, _, err := data.GetBlockchainAccountInfo(ctx, GetSubsidizer().PublicKey().ToBase58(), solana.CommitmentProcessed)
accountInfo, _, err := data.GetBlockchainAccountInfo(ctx, GetSubsidizer().PublicKey().ToBase58())
if err != nil {
return 0, err
}
Expand Down
3 changes: 1 addition & 2 deletions ocp/currency/reserve.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (

"github.com/code-payments/ocp-server/ocp/common"
ocp_data "github.com/code-payments/ocp-server/ocp/data"
"github.com/code-payments/ocp-server/solana"
"github.com/code-payments/ocp-server/solana/currencycreator"
"github.com/code-payments/ocp-server/solana/token"
)
Expand All @@ -25,7 +24,7 @@ func GetLaunchpadCurrencyCirculatingSupply(ctx context.Context, data ocp_data.Pr
return 0, 0, time.Time{}, err
}

ai, slot, err := data.GetBlockchainAccountInfo(ctx, accounts.VaultMint.PublicKey().ToBase58(), solana.CommitmentFinalized)
ai, slot, err := data.GetBlockchainAccountInfo(ctx, accounts.VaultMint.PublicKey().ToBase58())
if err != nil {
return 0, 0, time.Time{}, err
}
Expand Down
51 changes: 19 additions & 32 deletions ocp/data/blockchain.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,16 @@ const (
type BlockchainData interface {
SubmitBlockchainTransaction(ctx context.Context, tx *solana.Transaction) (solana.Signature, error)

GetBlockchainAccountInfo(ctx context.Context, account string, commitment solana.Commitment) (*solana.AccountInfo, uint64, error)
GetBlockchainAccountInfo(ctx context.Context, account string) (*solana.AccountInfo, uint64, error)
GetBlockchainAccountDataAfterBlock(ctx context.Context, account string, slot uint64) ([]byte, uint64, error)
GetBlockchainBalance(ctx context.Context, account string, commitment solana.Commitment) (uint64, uint64, error)
GetBlockchainBalance(ctx context.Context, account string) (uint64, uint64, error)
GetBlockchainBlock(ctx context.Context, slot uint64) (*solana.Block, error)
GetBlockchainHistory(ctx context.Context, account string, commitment solana.Commitment, opts ...query.Option) ([]*solana.TransactionSignature, error)
GetBlockchainHistory(ctx context.Context, account string, opts ...query.Option) ([]*solana.TransactionSignature, error)
GetBlockchainMinimumBalanceForRentExemption(ctx context.Context, size uint64) (uint64, error)
GetBlockchainLatestBlockhash(ctx context.Context) (solana.Blockhash, error)
GetBlockchainSignatureStatuses(ctx context.Context, signatures []solana.Signature) ([]*solana.SignatureStatus, error)
GetBlockchainSlot(ctx context.Context, commitment solana.Commitment) (uint64, error)
GetBlockchainTokenAccountInfo(ctx context.Context, account, mint string, commitment solana.Commitment) (*token.Account, error)
GetBlockchainTransaction(ctx context.Context, sig string, commitment solana.Commitment) (*solana.ConfirmedTransaction, error)
GetBlockchainSlot(ctx context.Context) (uint64, error)
GetBlockchainTokenAccountInfo(ctx context.Context, account, mint string) (*token.Account, error)
GetBlockchainTransaction(ctx context.Context, sig string) (*solana.TransactionWithMeta, error)
GetBlockchainTransactionTokenBalances(ctx context.Context, sig string) (*solana.TransactionTokenBalances, error)
GetBlockchainFilteredProgramAccounts(ctx context.Context, program string, offset uint, filterValue []byte) ([]solana.ProgramAccount, uint64, error)
}
Expand Down Expand Up @@ -65,7 +64,7 @@ func (dp *BlockchainProvider) SubmitBlockchainTransaction(ctx context.Context, t
tracer := metrics.TraceMethodCall(ctx, blockchainProviderMetricsName, "SubmitBlockchainTransaction")
defer tracer.End()

res, err := dp.sc.SubmitTransaction(*tx, solana.CommitmentProcessed)
res, err := dp.sc.SubmitTransaction(*tx)

if err != nil {
tracer.OnError(err)
Expand All @@ -74,15 +73,15 @@ func (dp *BlockchainProvider) SubmitBlockchainTransaction(ctx context.Context, t
return res, err
}

func (dp *BlockchainProvider) GetBlockchainAccountInfo(ctx context.Context, account string, commitment solana.Commitment) (*solana.AccountInfo, uint64, error) {
func (dp *BlockchainProvider) GetBlockchainAccountInfo(ctx context.Context, account string) (*solana.AccountInfo, uint64, error) {
tracer := metrics.TraceMethodCall(ctx, blockchainProviderMetricsName, "GetBlockchainAccountInfo")
defer tracer.End()

accountId, err := base58.Decode(account)
if err != nil {
return nil, 0, err
}
accountInfo, slot, err := dp.sc.GetAccountInfo(accountId, commitment)
accountInfo, slot, err := dp.sc.GetAccountInfo(accountId)
if err != nil {
tracer.OnError(err)
}
Expand All @@ -104,7 +103,7 @@ func (dp *BlockchainProvider) GetBlockchainAccountDataAfterBlock(ctx context.Con
}
return data, block, err
}
func (dp *BlockchainProvider) GetBlockchainTokenAccountInfo(ctx context.Context, account, mint string, commitment solana.Commitment) (*token.Account, error) {
func (dp *BlockchainProvider) GetBlockchainTokenAccountInfo(ctx context.Context, account, mint string) (*token.Account, error) {
tracer := metrics.TraceMethodCall(ctx, blockchainProviderMetricsName, "GetBlockchainTokenAccountInfo")
defer tracer.End()

Expand All @@ -118,18 +117,18 @@ func (dp *BlockchainProvider) GetBlockchainTokenAccountInfo(ctx context.Context,
return nil, err
}

res, err := dp.tc.GetAccount(accountId, mintId, commitment)
res, err := dp.tc.GetAccount(accountId, mintId)

if err != nil {
tracer.OnError(err)
}
return res, err
}
func (dp *BlockchainProvider) GetBlockchainSlot(ctx context.Context, commitment solana.Commitment) (uint64, error) {
func (dp *BlockchainProvider) GetBlockchainSlot(ctx context.Context) (uint64, error) {
tracer := metrics.TraceMethodCall(ctx, blockchainProviderMetricsName, "GetBlockchainSlot")
defer tracer.End()

res, err := dp.sc.GetSlot(commitment)
res, err := dp.sc.GetSlot()

if err != nil {
tracer.OnError(err)
Expand All @@ -149,7 +148,7 @@ func (dp *BlockchainProvider) GetBlockchainBlock(ctx context.Context, slot uint6
return res, err
}

func (dp *BlockchainProvider) GetBlockchainHistory(ctx context.Context, account string, commitment solana.Commitment, opts ...query.Option) ([]*solana.TransactionSignature, error) {
func (dp *BlockchainProvider) GetBlockchainHistory(ctx context.Context, account string, opts ...query.Option) ([]*solana.TransactionSignature, error) {
tracer := metrics.TraceMethodCall(ctx, blockchainProviderMetricsName, "GetBlockchainHistory")
defer tracer.End()

Expand All @@ -169,15 +168,15 @@ func (dp *BlockchainProvider) GetBlockchainHistory(ctx context.Context, account
return nil, err
}

res, err := dp.sc.GetSignaturesForAddress(publicKey, commitment, req.Limit, cursor, "")
res, err := dp.sc.GetSignaturesForAddress(publicKey, req.Limit, cursor, "")

if err != nil {
tracer.OnError(err)
}
return res, err
}

func (dp *BlockchainProvider) GetBlockchainTransaction(ctx context.Context, sig string, commitment solana.Commitment) (*solana.ConfirmedTransaction, error) {
func (dp *BlockchainProvider) GetBlockchainTransaction(ctx context.Context, sig string) (*solana.TransactionWithMeta, error) {
tracer := metrics.TraceMethodCall(ctx, blockchainProviderMetricsName, "GetBlockchainTransaction")
defer tracer.End()

Expand All @@ -189,7 +188,7 @@ func (dp *BlockchainProvider) GetBlockchainTransaction(ctx context.Context, sig
var signature solana.Signature
copy(signature[:], raw)

res, err := dp.sc.GetTransaction(signature, commitment)
res, err := dp.sc.GetTransaction(signature)
if err != nil {
tracer.OnError(err)
return nil, err
Expand All @@ -198,18 +197,6 @@ func (dp *BlockchainProvider) GetBlockchainTransaction(ctx context.Context, sig
return &res, nil
}

func (dp *BlockchainProvider) GetBlockchainSignatureStatuses(ctx context.Context, signatures []solana.Signature) ([]*solana.SignatureStatus, error) {
tracer := metrics.TraceMethodCall(ctx, blockchainProviderMetricsName, "GetBlockchainSignatureStatuses")
defer tracer.End()

res, err := dp.sc.GetSignatureStatuses(signatures)

if err != nil {
tracer.OnError(err)
}
return res, err
}

func (dp *BlockchainProvider) GetBlockchainLatestBlockhash(ctx context.Context) (solana.Blockhash, error) {
tracer := metrics.TraceMethodCall(ctx, blockchainProviderMetricsName, "GetBlockchainLatestBlockhash")
defer tracer.End()
Expand All @@ -234,7 +221,7 @@ func (dp *BlockchainProvider) GetBlockchainMinimumBalanceForRentExemption(ctx co
return res, err
}

func (dp *BlockchainProvider) GetBlockchainBalance(ctx context.Context, account string, commitment solana.Commitment) (uint64, uint64, error) {
func (dp *BlockchainProvider) GetBlockchainBalance(ctx context.Context, account string) (uint64, uint64, error) {
tracer := metrics.TraceMethodCall(ctx, blockchainProviderMetricsName, "GetBlockchainBalance")
defer tracer.End()

Expand All @@ -243,7 +230,7 @@ func (dp *BlockchainProvider) GetBlockchainBalance(ctx context.Context, account
return 0, 0, err
}

quarks, slot, err := dp.sc.GetTokenAccountBalance(accountId, commitment)
quarks, slot, err := dp.sc.GetTokenAccountBalance(accountId)

if err != nil {
tracer.OnError(err)
Expand Down
2 changes: 1 addition & 1 deletion ocp/data/transaction/transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ func (r *Record) Unmarshal() (*solana.Transaction, error) {
return &tx, nil
}

func FromConfirmedTransaction(tx *solana.ConfirmedTransaction) (*Record, error) {
func FromTransactionWithMeta(tx *solana.TransactionWithMeta) (*Record, error) {
if tx.Transaction.Message.Version != solana.MessageVersionLegacy {
return nil, errors.New("unsupported transaction version")
}
Expand Down
2 changes: 1 addition & 1 deletion ocp/rpc/transaction/intent_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -2862,7 +2862,7 @@ func validateTimelockUnlockStateDoesntExist(ctx context.Context, data ocp_data.P
return err
}

_, _, err = data.GetBlockchainAccountInfo(ctx, timelockAccounts.Unlock.PublicKey().ToBase58(), solana.CommitmentFinalized)
_, _, err = data.GetBlockchainAccountInfo(ctx, timelockAccounts.Unlock.PublicKey().ToBase58())
switch err {
case nil:
return NewIntentDeniedError("an account being opened has already initiated an unlock")
Expand Down
2 changes: 1 addition & 1 deletion ocp/rpc/transaction/intent_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ func newTestDataProvider() *testDataProvider {
}
}

func (p *testDataProvider) GetBlockchainAccountInfo(ctx context.Context, account string, commitment solana.Commitment) (*solana.AccountInfo, uint64, error) {
func (p *testDataProvider) GetBlockchainAccountInfo(ctx context.Context, account string) (*solana.AccountInfo, uint64, error) {
p.mu.Lock()
defer p.mu.Unlock()

Expand Down
2 changes: 1 addition & 1 deletion ocp/rpc/transaction/stateful_swap.go
Original file line number Diff line number Diff line change
Expand Up @@ -934,7 +934,7 @@ func (s *transactionServer) handleStablecoinStatefulSwap(
return handleStatefulSwapError(streamer, NewSwapValidationError("owner cannot be swap authority"))
}

destinationOwnerAccountInfo, _, err := s.data.GetBlockchainAccountInfo(ctx, destinationOwner.PublicKey().ToBase58(), solana.CommitmentFinalized)
destinationOwnerAccountInfo, _, err := s.data.GetBlockchainAccountInfo(ctx, destinationOwner.PublicKey().ToBase58())
switch err {
case nil:
if bytes.Equal(destinationOwnerAccountInfo.Owner, token.ProgramKey) {
Expand Down
4 changes: 2 additions & 2 deletions ocp/rpc/transaction/withdraw.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ func (s *transactionServer) CanWithdrawToAccount(ctx context.Context, req *trans
//

if !isOnCurve {
_, err = s.data.GetBlockchainTokenAccountInfo(ctx, accountToCheck.PublicKey().ToBase58(), mintAccount.PublicKey().ToBase58(), solana.CommitmentFinalized)
_, err = s.data.GetBlockchainTokenAccountInfo(ctx, accountToCheck.PublicKey().ToBase58(), mintAccount.PublicKey().ToBase58())
switch err {
case nil:
return &transactionpb.CanWithdrawToAccountResponse{
Expand Down Expand Up @@ -144,7 +144,7 @@ func (s *transactionServer) CanWithdrawToAccount(ctx context.Context, req *trans
return nil, status.Error(codes.Internal, "")
}

_, err = s.data.GetBlockchainTokenAccountInfo(ctx, ata.PublicKey().ToBase58(), mintAccount.PublicKey().ToBase58(), solana.CommitmentFinalized)
_, err = s.data.GetBlockchainTokenAccountInfo(ctx, ata.PublicKey().ToBase58(), mintAccount.PublicKey().ToBase58())
switch err {
case nil:
return &transactionpb.CanWithdrawToAccountResponse{
Expand Down
3 changes: 1 addition & 2 deletions ocp/transaction/coinbase_swap.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ func GetCoinbaseSwapAccounts(ctx context.Context, data ocp_data.Provider, fromMi
return nil, errors.Wrap(err, "error getting whitelist address")
}

poolAccountInfo, _, err := data.GetBlockchainAccountInfo(ctx, base58.Encode(pool), solana.CommitmentProcessed)
poolAccountInfo, _, err := data.GetBlockchainAccountInfo(ctx, base58.Encode(pool))
if err != nil {
return nil, errors.Wrap(err, "error getting coinbase liquidity pool account info")
}
Expand Down Expand Up @@ -125,7 +125,6 @@ func GetCoinbaseSwapDestinationLiquidity(ctx context.Context, data ocp_data.Prov
ctx,
base58.Encode(outVaultTokenAccount),
base58.Encode(toMint),
solana.CommitmentProcessed,
)
if err != nil {
return 0, errors.Wrap(err, "error getting out vault token account info")
Expand Down
6 changes: 3 additions & 3 deletions ocp/transaction/submit.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func SubmitAndWaitForFinalization(ctx context.Context, data ocp_data.BlockchainD

_, err = retry.Retry(
func() error {
finalizedTxn, err := data.GetBlockchainTransaction(ctx, sig, solana.CommitmentFinalized)
finalizedTxn, err := data.GetBlockchainTransaction(ctx, sig)
if err == solana.ErrSignatureNotFound {
return err
}
Expand All @@ -45,8 +45,8 @@ func SubmitAndWaitForFinalization(ctx context.Context, data ocp_data.BlockchainD
return nil
},
retry.NonRetriableErrors(context.Canceled, ErrTransactionFailed),
retry.Backoff(backoff.Constant(time.Second), time.Second),
retry.Limit(60),
retry.Backoff(backoff.Constant(250*time.Millisecond), 250*time.Millisecond),
retry.Limit(30),
)
return err
}
2 changes: 1 addition & 1 deletion ocp/worker/currency/feeburner/worker.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ func (p *runtime) makeBurnTarget(record *currency.MetadataRecord) (*burnTarget,
}

func (p *runtime) hasFeesToBurn(ctx context.Context, record *currency.MetadataRecord) (bool, error) {
ai, _, err := p.data.GetBlockchainAccountInfo(ctx, record.LiquidityPool, solana.CommitmentFinalized)
ai, _, err := p.data.GetBlockchainAccountInfo(ctx, record.LiquidityPool)
if err == solana.ErrNoAccountInfo {
return false, nil
} else if err != nil {
Expand Down
Loading
Loading