observer

package
v0.11.2 Latest Latest
Warning

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

Go to latest
Published: Jan 27, 2024 License: Apache-2.0 Imports: 39 Imported by: 0

README

Observer

One of the 2/(holder, signer, observer), and the observer is the last backup to sign a transaction and should never be used before that point.

Observer is a single user, belongs to the keeper MTG members. And it must be deployed independent of keeper and signer.

  1. Generate observer public keys to keeper MTG.
  2. Scan Bitcoin node to send deposit information to keeper MTG.
  3. Estimate Bitcoin transaction fee to keeper MTG, it's better to use 10x the real fee to ensure confirmation.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var FAVICON []byte
View Source
var GUIDE = `` /* 1952-byte string literal not displayed */
View Source
var SCHEMA string

Functions

This section is empty.

Types

type Asset

type Asset struct {
	AssetId   string
	MixinId   string
	AssetKey  string
	Symbol    string
	Name      string
	Decimals  uint32
	Chain     byte
	CreatedAt time.Time
}

type AssetBalance added in v0.11.0

type AssetBalance struct {
	AssetAddress string `json:"asset_address"`
	Amount       string `json:"amount"`
}

type Configuration

type Configuration struct {
	StoreDir              string `toml:"store-dir"`
	PrivateKey            string `toml:"private-key"`
	Timestamp             int64  `toml:"timestamp"`
	KeeperStoreDir        string `toml:"keeper-store-dir"`
	KeeperPublicKey       string `toml:"keeper-public-key"`
	AssetId               string `toml:"asset-id"`
	CustomKeyPriceAssetId string `toml:"custom-key-price-asset-id"`
	CustomKeyPriceAmount  string `toml:"custom-key-price-amount"`
	OperationPriceAssetId string `toml:"operation-price-asset-id"`
	OperationPriceAmount  string `toml:"operation-price-amount"`
	TransactionMinimum    string `toml:"transaction-minimum"`
	MixinMessengerAPI     string `toml:"mixin-messenger-api"`
	MixinRPC              string `toml:"mixin-rpc"`
	BitcoinRPC            string `toml:"bitcoin-rpc"`
	LitecoinRPC           string `toml:"litecoin-rpc"`
	EthereumRPC           string `toml:"ethereum-rpc"`
	MVMRPC                string `toml:"mvm-rpc"`
	PolygonRPC            string `toml:"polygon-rpc"`
	MVMFactoryAddress     string `toml:"mvm-factory-address"`
	MVMKey                string `toml:"mvm-key"`
	EVMKey                string `toml:"evm-key"`
	App                   struct {
		ClientId   string `toml:"client-id"`
		SessionId  string `toml:"session-id"`
		PrivateKey string `toml:"private-key"`
		PinToken   string `toml:"pin-token"`
		PIN        string `toml:"pin"`
	} `toml:"app"`
}

func (*Configuration) Validate added in v0.9.0

func (c *Configuration) Validate() error

type Deposit

type Deposit struct {
	TransactionHash string
	OutputIndex     int64
	AssetId         string
	AssetAddress    string
	Amount          string
	Receiver        string
	Sender          string
	State           int
	Chain           byte
	Holder          string
	Category        byte
	CreatedAt       time.Time
	UpdatedAt       time.Time
}

type Node

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

func NewNode

func NewNode(db *SQLite3Store, kd *store.SQLite3Store, conf *Configuration, keeper *mtg.Configuration, mixin *mixin.Client) *Node

func (*Node) Boot

func (node *Node) Boot(ctx context.Context)

func (*Node) GetBlockDeposits added in v0.11.0

func (node *Node) GetBlockDeposits(ctx context.Context, ts []*ethereum.Transfer) (map[string]*big.Int, error)

func (*Node) StartHTTP

func (node *Node) StartHTTP(readme string)

type Output added in v0.5.0

type Output struct {
	TransactionHash string
	Index           uint32
	Address         string
	Satoshi         int64
	Chain           byte
	State           byte
	SpentBy         sql.NullString
	RawTransaction  sql.NullString
	CreatedAt       time.Time
	UpdatedAt       time.Time
}

type Recovery added in v0.8.0

type Recovery struct {
	Address         string
	Chain           byte
	Holder          string
	Observer        string
	RawTransaction  string
	TransactionHash string
	State           int
	CreatedAt       time.Time
	UpdatedAt       time.Time
}

type SQLite3Store

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

func OpenSQLite3Store

func OpenSQLite3Store(path string) (*SQLite3Store, error)

func (*SQLite3Store) AddTransactionPartials

func (s *SQLite3Store) AddTransactionPartials(ctx context.Context, transactionHash string, raw string) error

func (*SQLite3Store) AssignBitcoinUTXOByRangeForTransaction added in v0.5.0

func (s *SQLite3Store) AssignBitcoinUTXOByRangeForTransaction(ctx context.Context, min, max uint64, tx *Transaction) (*Output, error)

func (*SQLite3Store) CheckAccountProposed

func (s *SQLite3Store) CheckAccountProposed(ctx context.Context, addr string) (bool, error)

func (*SQLite3Store) Close

func (s *SQLite3Store) Close() error

func (*SQLite3Store) ConfirmFullySignedTransactionApproval added in v0.5.0

func (s *SQLite3Store) ConfirmFullySignedTransactionApproval(ctx context.Context, hash, spentHash, spentRaw string) error

func (*SQLite3Store) ConfirmPendingDeposit

func (s *SQLite3Store) ConfirmPendingDeposit(ctx context.Context, transactionHash string, outputIndex int64) error

func (*SQLite3Store) CountUnfinishedTransactionApprovalsForHolder added in v0.8.0

func (s *SQLite3Store) CountUnfinishedTransactionApprovalsForHolder(ctx context.Context, holder string) (int, error)

func (*SQLite3Store) DeleteObserverKey

func (s *SQLite3Store) DeleteObserverKey(ctx context.Context, pub string) error

func (*SQLite3Store) FinishTransactionSignatures

func (s *SQLite3Store) FinishTransactionSignatures(ctx context.Context, transactionHash string, raw string) error

func (*SQLite3Store) ListDeposits

func (s *SQLite3Store) ListDeposits(ctx context.Context, chain int, holder string, state int, offset int64) ([]*Deposit, error)

func (*SQLite3Store) ListFullySignedTransactionApprovals added in v0.5.0

func (s *SQLite3Store) ListFullySignedTransactionApprovals(ctx context.Context, chain byte) ([]*Transaction, error)

func (*SQLite3Store) ListInitialRecoveries added in v0.8.0

func (s *SQLite3Store) ListInitialRecoveries(ctx context.Context, offset int64) ([]*Recovery, error)

func (*SQLite3Store) ListPendingTransactionApprovals

func (s *SQLite3Store) ListPendingTransactionApprovals(ctx context.Context, chain byte) ([]*Transaction, error)

func (*SQLite3Store) MarkTransactionApprovalPaid added in v0.6.0

func (s *SQLite3Store) MarkTransactionApprovalPaid(ctx context.Context, transactionHash string) error

func (*SQLite3Store) QueryDepositSentHashes added in v0.7.0

func (s *SQLite3Store) QueryDepositSentHashes(ctx context.Context, deposits []*Deposit) (map[string]string, error)

func (*SQLite3Store) ReadAccountantPrivateKey added in v0.5.0

func (s *SQLite3Store) ReadAccountantPrivateKey(ctx context.Context, address string) (string, error)

func (*SQLite3Store) ReadAssetMeta

func (s *SQLite3Store) ReadAssetMeta(ctx context.Context, id string) (*Asset, error)

func (*SQLite3Store) ReadBitcoinUTXO added in v0.5.0

func (s *SQLite3Store) ReadBitcoinUTXO(ctx context.Context, hash string, index int64, chain byte) (*Output, error)

func (*SQLite3Store) ReadBitcoinUTXOs added in v0.5.0

func (s *SQLite3Store) ReadBitcoinUTXOs(ctx context.Context, chain byte) ([]*Output, error)

func (*SQLite3Store) ReadObserverKey

func (s *SQLite3Store) ReadObserverKey(ctx context.Context, crv byte) (string, []byte, error)

func (*SQLite3Store) ReadProperty

func (s *SQLite3Store) ReadProperty(ctx context.Context, k string) (string, error)

func (*SQLite3Store) ReadRecovery added in v0.8.0

func (s *SQLite3Store) ReadRecovery(ctx context.Context, address string) (*Recovery, error)

func (*SQLite3Store) ReadTransactionApproval

func (s *SQLite3Store) ReadTransactionApproval(ctx context.Context, hash string) (*Transaction, error)

func (*SQLite3Store) RefundFullySignedTransactionApproval added in v0.11.0

func (s *SQLite3Store) RefundFullySignedTransactionApproval(ctx context.Context, hash string) error

func (*SQLite3Store) RevokeTransactionApproval

func (s *SQLite3Store) RevokeTransactionApproval(ctx context.Context, transactionHash string, sigBase64 string) error

func (*SQLite3Store) UpdateRecoveryState added in v0.8.0

func (s *SQLite3Store) UpdateRecoveryState(ctx context.Context, address, raw string, state int) error

func (*SQLite3Store) UpdateTransactionApprovalRequestTime

func (s *SQLite3Store) UpdateTransactionApprovalRequestTime(ctx context.Context, transactionHash string) error

func (*SQLite3Store) WriteAccountProposalIfNotExists

func (s *SQLite3Store) WriteAccountProposalIfNotExists(ctx context.Context, address string, createdAt time.Time) error

func (*SQLite3Store) WriteAccountantKeys added in v0.9.14

func (s *SQLite3Store) WriteAccountantKeys(ctx context.Context, crv byte, keys map[string]*btcec.PrivateKey) error

func (*SQLite3Store) WriteAssetMeta

func (s *SQLite3Store) WriteAssetMeta(ctx context.Context, asset *Asset) error

func (*SQLite3Store) WriteBitcoinFeeOutput added in v0.5.0

func (s *SQLite3Store) WriteBitcoinFeeOutput(ctx context.Context, msgTx *wire.MsgTx, receiver string, tx *Transaction) error

func (*SQLite3Store) WriteBitcoinUTXOIfNotExists added in v0.5.0

func (s *SQLite3Store) WriteBitcoinUTXOIfNotExists(ctx context.Context, utxo *Output) error

func (*SQLite3Store) WriteInitialRecovery added in v0.8.0

func (s *SQLite3Store) WriteInitialRecovery(ctx context.Context, recovery *Recovery) error

func (*SQLite3Store) WriteObserverKeys

func (s *SQLite3Store) WriteObserverKeys(ctx context.Context, crv byte, publics map[string]string) error

func (*SQLite3Store) WritePendingDepositIfNotExists

func (s *SQLite3Store) WritePendingDepositIfNotExists(ctx context.Context, d *Deposit) error

func (*SQLite3Store) WriteProperty

func (s *SQLite3Store) WriteProperty(ctx context.Context, k, v string) error

func (*SQLite3Store) WriteTransactionApprovalIfNotExists

func (s *SQLite3Store) WriteTransactionApprovalIfNotExists(ctx context.Context, approval *Transaction) error

type Transaction

type Transaction struct {
	TransactionHash string
	RawTransaction  string
	Chain           byte
	Holder          string
	Signer          string
	State           byte
	SpentHash       sql.NullString
	SpentRaw        sql.NullString
	CreatedAt       time.Time
	UpdatedAt       time.Time
}

func (*Transaction) Signers

func (t *Transaction) Signers(ctx context.Context, node *Node, safe *store.Safe) []string

Jump to

Keyboard shortcuts

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