observer

package
v0.9.3 Latest Latest
Warning

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

Go to latest
Published: Aug 8, 2023 License: Apache-2.0 Imports: 37 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 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"`
	ObserverKeyPriceAssetId string `toml:"observer-key-price-asset-id"`
	ObserverKeyPriceAmount  string `toml:"observer-key-price-amount"`
	TransactionPriceAssetId string `toml:"transaction-price-asset-id"`
	TransactionPriceAmount  string `toml:"transaction-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"`
	MVMRPC                  string `toml:"mvm-rpc"`
	MVMFactoryAddress       string `toml:"mvm-factory-address"`
	MVMKey                  string `toml:"mvm-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
	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) 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) 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) 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