dal

package
v0.0.0-...-ce31223 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 19, 2026 License: MPL-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BitcoinTx

type BitcoinTx struct {
	SrID      uint64          `json:"sr_id"`
	Status    BitcoinTxStatus `json:"status"`
	BtcTxID   []byte          `json:"btc_tx_id"`
	Timestamp int64           `json:"timestamp"`
	Note      sql.NullString  `json:"note"`
}

type BitcoinTxStatus

type BitcoinTxStatus byte

BitcoinTxStatus represents the different states of a bitcoin transaction.

const (
	Pending BitcoinTxStatus = iota
	Broadcasted
	Confirmed
)

Bitcoin transaction status constants

type DB

type DB struct {
	Querier
	// contains filtered or unexported fields
}

DB holds the database connection and provides methods for interacting with it.

func NewDB

func NewDB(dbPath string) (DB, error)

NewDB creates a new DB instance

func (DB) Close

func (db DB) Close() error

Close closes the db connection

func (DB) GetBitcoinTx

func (db DB) GetBitcoinTx(ctx context.Context, signRequestID uint64, btcTxID []byte) (*BitcoinTx, error)

GetBitcoinTx retrieves a Bitcoin transaction by its primary key (sr_id and btc_tx_id).

func (DB) GetBitcoinTxsToBroadcast

func (db DB) GetBitcoinTxsToBroadcast(ctx context.Context) ([]*IkaSignRequest, error)

GetBitcoinTxsToBroadcast retrieves IkaSignRequests that have been signed by IKA and are due to be broadcasted to bitcoin.

This function checks for the following conditions: - The IkaSignRequest must have a final signature (final_sig IS NOT NULL). - There must be no corresponding entry in the bitcoin_txs table, OR - There must be only one corresponding entry in the bitcoin_txs table with a status of "Pending".

The reason for checking these conditions is that we cannot have a Bitcoin transaction hash (btc_tx_id) before the first broadcast attempt.

func (DB) GetBroadcastedBitcoinTxsInfo

func (db DB) GetBroadcastedBitcoinTxsInfo(ctx context.Context) ([]*GetBroadcastedBitcoinTxsInfoRow, error)

GetBroadcastedBitcoinTxsInfo queries Bitcoin transactions that has been braodcasted but not confirmed. that do not have a "Confirmed" status.

func (DB) GetIkaSignRequestByID

func (db DB) GetIkaSignRequestByID(ctx context.Context, id uint64) (*IkaSignRequest, error)

GetIkaSignRequestByID retrives a signature request by its id

func (DB) GetIkaSignRequestWithStatus

func (db DB) GetIkaSignRequestWithStatus(ctx context.Context, id uint64) (*GetIkaSignRequestWithStatusRow, error)

GetIkaSignRequestWithStatus retrieves an IkaSignRequest with its associated IkaTx status.

func (DB) GetIkaTx

func (db DB) GetIkaTx(ctx context.Context, signRequestID uint64, ikaTxID string) (*IkaTx, error)

GetIkaTx retrieves an Ika transaction by its primary key (sr_id and ika_tx_id).

func (DB) GetPendingIkaSignRequests

func (db DB) GetPendingIkaSignRequests(ctx context.Context) ([]*IkaSignRequest, error)

GetPendingIkaSignRequests retrieves IkaSignRequests that need to be signed.

func (DB) InitDB

func (db DB) InitDB(ctx context.Context) error

InitDB initializes the database and creates the tables.

func (DB) InsertBtcTx

func (db DB) InsertBtcTx(ctx context.Context, tx BitcoinTx) error

InsertBtcTx inserts a new Bitcoin transaction into the database.

func (DB) InsertIkaSignRequest

func (db DB) InsertIkaSignRequest(ctx context.Context, signReq IkaSignRequest) error

InsertIkaSignRequest inserts a new transaction into the database

func (DB) InsertIkaTx

func (db DB) InsertIkaTx(ctx context.Context, tx IkaTx) error

InsertIkaTx inserts a new Ika transaction into the database.

func (DB) UpdateBitcoinTxToConfirmed

func (db DB) UpdateBitcoinTxToConfirmed(ctx context.Context, id uint64, txID []byte) error

UpdateBitcoinTxToConfirmed updates the bitcoin transaction to `Confirmed`.

func (DB) UpdateIkaSignRequestFinalSig

func (db DB) UpdateIkaSignRequestFinalSig(ctx context.Context, id uint64, finalSig Signature) error

UpdateIkaSignRequestFinalSig updates the final signature of an IkaSignRequest in the database.

type DBTX

type DBTX interface {
	ExecContext(context.Context, string, ...interface{}) (sql.Result, error)
	PrepareContext(context.Context, string) (*sql.Stmt, error)
	QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error)
	QueryRowContext(context.Context, string, ...interface{}) *sql.Row
}

type GetBitcoinTxParams

type GetBitcoinTxParams struct {
	SrID    uint64 `json:"sr_id"`
	BtcTxID []byte `json:"btc_tx_id"`
}

type GetBroadcastedBitcoinTxsInfoRow

type GetBroadcastedBitcoinTxsInfoRow struct {
	SrID    uint64          `json:"sr_id"`
	BtcTxID []byte          `json:"btc_tx_id"`
	Status  BitcoinTxStatus `json:"status"`
}

type GetIkaSignRequestWithStatusRow

type GetIkaSignRequestWithStatusRow struct {
	ID        uint64      `json:"id"`
	Payload   []byte      `json:"payload"`
	DWalletID string      `json:"dwallet_id"`
	UserSig   string      `json:"user_sig"`
	FinalSig  []byte      `json:"final_sig"`
	Timestamp int64       `json:"timestamp"`
	Status    IkaTxStatus `json:"status"`
}

type GetIkaTxParams

type GetIkaTxParams struct {
	SrID    uint64 `json:"sr_id"`
	IkaTxID string `json:"ika_tx_id"`
}

type IkaSignRequest

type IkaSignRequest struct {
	ID        uint64 `json:"id"`
	Payload   []byte `json:"payload"`
	DWalletID string `json:"dwallet_id"`
	UserSig   string `json:"user_sig"`
	FinalSig  []byte `json:"final_sig"`
	Timestamp int64  `json:"timestamp"`
}

type IkaTx

type IkaTx struct {
	SrID      uint64         `json:"sr_id"`
	Status    IkaTxStatus    `json:"status"`
	IkaTxID   string         `json:"ika_tx_id"`
	Timestamp int64          `json:"timestamp"`
	Note      sql.NullString `json:"note"`
}

type IkaTxStatus

type IkaTxStatus byte

IkaTxStatus represents the different states of a native transaction.

const (
	Success IkaTxStatus = iota
	Failed
)

Ika transaction status constants

type InsertBtcTxParams

type InsertBtcTxParams struct {
	SrID      uint64          `json:"sr_id"`
	Status    BitcoinTxStatus `json:"status"`
	BtcTxID   []byte          `json:"btc_tx_id"`
	Timestamp int64           `json:"timestamp"`
	Note      sql.NullString  `json:"note"`
}

type InsertIkaSignRequestParams

type InsertIkaSignRequestParams struct {
	ID        uint64 `json:"id"`
	Payload   []byte `json:"payload"`
	DWalletID string `json:"dwallet_id"`
	UserSig   string `json:"user_sig"`
	FinalSig  []byte `json:"final_sig"`
	Timestamp int64  `json:"timestamp"`
}

type InsertIkaTxParams

type InsertIkaTxParams struct {
	SrID      uint64         `json:"sr_id"`
	Status    IkaTxStatus    `json:"status"`
	IkaTxID   string         `json:"ika_tx_id"`
	Timestamp int64          `json:"timestamp"`
	Note      sql.NullString `json:"note"`
}

type Payload

type Payload = []byte

Payload is an alias for []byte, representing a single payload to be singed.

type Querier

type Querier interface {
	GetBitcoinTx(ctx context.Context, arg *GetBitcoinTxParams) (*BitcoinTx, error)
	GetBitcoinTxsToBroadcast(ctx context.Context, status BitcoinTxStatus) ([]*IkaSignRequest, error)
	GetBroadcastedBitcoinTxsInfo(ctx context.Context) ([]*GetBroadcastedBitcoinTxsInfoRow, error)
	GetIkaSignRequestByID(ctx context.Context, id uint64) (*IkaSignRequest, error)
	GetIkaSignRequestWithStatus(ctx context.Context, id uint64) (*GetIkaSignRequestWithStatusRow, error)
	GetIkaTx(ctx context.Context, arg *GetIkaTxParams) (*IkaTx, error)
	GetPendingIkaSignRequests(ctx context.Context) ([]*IkaSignRequest, error)
	InsertBtcTx(ctx context.Context, arg *InsertBtcTxParams) error
	InsertIkaSignRequest(ctx context.Context, arg *InsertIkaSignRequestParams) error
	InsertIkaTx(ctx context.Context, arg *InsertIkaTxParams) error
	UpdateBitcoinTxToConfirmed(ctx context.Context, arg *UpdateBitcoinTxToConfirmedParams) error
	UpdateIkaSignRequestFinalSig(ctx context.Context, arg *UpdateIkaSignRequestFinalSigParams) error
}

type Queries

type Queries struct {
	// contains filtered or unexported fields
}

func New

func New(db DBTX) *Queries

func (*Queries) GetBitcoinTx

func (q *Queries) GetBitcoinTx(ctx context.Context, arg *GetBitcoinTxParams) (*BitcoinTx, error)

func (*Queries) GetBitcoinTxsToBroadcast

func (q *Queries) GetBitcoinTxsToBroadcast(ctx context.Context, status BitcoinTxStatus) ([]*IkaSignRequest, error)

func (*Queries) GetBroadcastedBitcoinTxsInfo

func (q *Queries) GetBroadcastedBitcoinTxsInfo(ctx context.Context) ([]*GetBroadcastedBitcoinTxsInfoRow, error)

func (*Queries) GetIkaSignRequestByID

func (q *Queries) GetIkaSignRequestByID(ctx context.Context, id uint64) (*IkaSignRequest, error)

func (*Queries) GetIkaSignRequestWithStatus

func (q *Queries) GetIkaSignRequestWithStatus(ctx context.Context, id uint64) (*GetIkaSignRequestWithStatusRow, error)

func (*Queries) GetIkaTx

func (q *Queries) GetIkaTx(ctx context.Context, arg *GetIkaTxParams) (*IkaTx, error)

func (*Queries) GetPendingIkaSignRequests

func (q *Queries) GetPendingIkaSignRequests(ctx context.Context) ([]*IkaSignRequest, error)

func (*Queries) InsertBtcTx

func (q *Queries) InsertBtcTx(ctx context.Context, arg *InsertBtcTxParams) error

func (*Queries) InsertIkaSignRequest

func (q *Queries) InsertIkaSignRequest(ctx context.Context, arg *InsertIkaSignRequestParams) error

func (*Queries) InsertIkaTx

func (q *Queries) InsertIkaTx(ctx context.Context, arg *InsertIkaTxParams) error

func (*Queries) UpdateBitcoinTxToConfirmed

func (q *Queries) UpdateBitcoinTxToConfirmed(ctx context.Context, arg *UpdateBitcoinTxToConfirmedParams) error

func (*Queries) UpdateIkaSignRequestFinalSig

func (q *Queries) UpdateIkaSignRequestFinalSig(ctx context.Context, arg *UpdateIkaSignRequestFinalSigParams) error

func (*Queries) WithTx

func (q *Queries) WithTx(tx *sql.Tx) *Queries

type Signature

type Signature = []byte

Signature is an alias for []byte, representing the final signature.

type UpdateBitcoinTxToConfirmedParams

type UpdateBitcoinTxToConfirmedParams struct {
	Status    BitcoinTxStatus `json:"status"`
	Timestamp int64           `json:"timestamp"`
	SrID      uint64          `json:"sr_id"`
	BtcTxID   []byte          `json:"btc_tx_id"`
}

type UpdateIkaSignRequestFinalSigParams

type UpdateIkaSignRequestFinalSigParams struct {
	FinalSig []byte `json:"final_sig"`
	ID       uint64 `json:"id"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL