Documentation
¶
Index ¶
- type BitcoinTx
- type BitcoinTxStatus
- type DB
- func (db DB) Close() error
- func (db DB) GetBitcoinTx(ctx context.Context, signRequestID uint64, btcTxID []byte) (*BitcoinTx, error)
- func (db DB) GetBitcoinTxsToBroadcast(ctx context.Context) ([]*IkaSignRequest, error)
- func (db DB) GetBroadcastedBitcoinTxsInfo(ctx context.Context) ([]*GetBroadcastedBitcoinTxsInfoRow, error)
- func (db DB) GetIkaSignRequestByID(ctx context.Context, id uint64) (*IkaSignRequest, error)
- func (db DB) GetIkaSignRequestWithStatus(ctx context.Context, id uint64) (*GetIkaSignRequestWithStatusRow, error)
- func (db DB) GetIkaTx(ctx context.Context, signRequestID uint64, ikaTxID string) (*IkaTx, error)
- func (db DB) GetPendingIkaSignRequests(ctx context.Context) ([]*IkaSignRequest, error)
- func (db DB) InitDB(ctx context.Context) error
- func (db DB) InsertBtcTx(ctx context.Context, tx BitcoinTx) error
- func (db DB) InsertIkaSignRequest(ctx context.Context, signReq IkaSignRequest) error
- func (db DB) InsertIkaTx(ctx context.Context, tx IkaTx) error
- func (db DB) UpdateBitcoinTxToConfirmed(ctx context.Context, id uint64, txID []byte) error
- func (db DB) UpdateIkaSignRequestFinalSig(ctx context.Context, id uint64, finalSig Signature) error
- type DBTX
- type GetBitcoinTxParams
- type GetBroadcastedBitcoinTxsInfoRow
- type GetIkaSignRequestWithStatusRow
- type GetIkaTxParams
- type IkaSignRequest
- type IkaTx
- type IkaTxStatus
- type InsertBtcTxParams
- type InsertIkaSignRequestParams
- type InsertIkaTxParams
- type Payload
- type Querier
- type Queries
- func (q *Queries) GetBitcoinTx(ctx context.Context, arg *GetBitcoinTxParams) (*BitcoinTx, error)
- func (q *Queries) GetBitcoinTxsToBroadcast(ctx context.Context, status BitcoinTxStatus) ([]*IkaSignRequest, error)
- func (q *Queries) GetBroadcastedBitcoinTxsInfo(ctx context.Context) ([]*GetBroadcastedBitcoinTxsInfoRow, error)
- func (q *Queries) GetIkaSignRequestByID(ctx context.Context, id uint64) (*IkaSignRequest, error)
- func (q *Queries) GetIkaSignRequestWithStatus(ctx context.Context, id uint64) (*GetIkaSignRequestWithStatusRow, error)
- func (q *Queries) GetIkaTx(ctx context.Context, arg *GetIkaTxParams) (*IkaTx, error)
- func (q *Queries) GetPendingIkaSignRequests(ctx context.Context) ([]*IkaSignRequest, error)
- func (q *Queries) InsertBtcTx(ctx context.Context, arg *InsertBtcTxParams) error
- func (q *Queries) InsertIkaSignRequest(ctx context.Context, arg *InsertIkaSignRequestParams) error
- func (q *Queries) InsertIkaTx(ctx context.Context, arg *InsertIkaTxParams) error
- func (q *Queries) UpdateBitcoinTxToConfirmed(ctx context.Context, arg *UpdateBitcoinTxToConfirmedParams) error
- func (q *Queries) UpdateIkaSignRequestFinalSig(ctx context.Context, arg *UpdateIkaSignRequestFinalSigParams) error
- func (q *Queries) WithTx(tx *sql.Tx) *Queries
- type Signature
- type UpdateBitcoinTxToConfirmedParams
- type UpdateIkaSignRequestFinalSigParams
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 (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 ¶
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 ¶
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) InsertBtcTx ¶
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 ¶
InsertIkaTx inserts a new Ika transaction into the database.
func (DB) UpdateBitcoinTxToConfirmed ¶
UpdateBitcoinTxToConfirmed updates the bitcoin transaction to `Confirmed`.
type GetBitcoinTxParams ¶
type GetBroadcastedBitcoinTxsInfoRow ¶
type GetBroadcastedBitcoinTxsInfoRow struct {
SrID uint64 `json:"sr_id"`
BtcTxID []byte `json:"btc_tx_id"`
Status BitcoinTxStatus `json:"status"`
}
type GetIkaTxParams ¶
type IkaSignRequest ¶
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 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 (*Queries) GetBitcoinTx ¶
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 (*Queries) GetIkaSignRequestWithStatus ¶
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
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"`
}