observer

package
v0.6.1 Latest Latest
Warning

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

Go to latest
Published: Jun 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 FLOW []byte
View Source
var GUIDE = `` /* 2153-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"`
	PriceAssetId       string `toml:"price-asset-id"`
	PriceAmount        string `toml:"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"`
	EthereumKey        string `toml:"ethereum-key"`
	MVMRPC             string `toml:"mvm-rpc"`
	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"`
}

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 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) 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) 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) 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) 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) 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) 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() []string

Jump to

Keyboard shortcuts

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