observer

package
v0.18.5 Latest Latest
Warning

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

Go to latest
Published: Nov 18, 2024 License: Apache-2.0 Imports: 41 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

View Source
const (
	NodeTypeKeeper = "keeper"
	NodeTypeSigner = "signer"
)

Variables

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

Functions

This section is empty.

Types

type Account added in v0.13.0

type Account struct {
	Address    string
	CreatedAt  time.Time
	Signature  sql.NullString
	ApprovedAt sql.NullTime
	DeployedAt sql.NullTime
	MigratedAt sql.NullTime
}

type AppInfo added in v0.18.1

type AppInfo struct {
	Version string `json:"binary_version"`

	//keeper
	SignerBitcoinKeys    string `json:"signer_bitcoin_keys,omitempty"`
	SignerEthereumKeys   string `json:"signer_ethereum_keys,omitempty"`
	ObserverBitcoinKeys  string `json:"observer_bitcoin_keys,omitempty"`
	ObserverEthereumKeys string `json:"observer_ethereum_keys,omitempty"`
	InitialTxs           string `json:"initial_transactions,omitempty"`
	PendingTxs           string `json:"pending_transactions,omitempty"`
	DoneTxs              string `json:"done_transactions,omitempty"`
	FailedTxs            string `json:"failed_transactions,omitempty"`

	// signer
	InitialSessions string `json:"initial_sessions,omitempty"`
	PendingSessions string `json:"pending_sessions,omitempty"`
	FinalSessions   string `json:"final_sessions,omitempty"`
	GeneratedKeys   string `json:"generated_keys,omitempty"`
}

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"`
	SafeAssetId  string `json:"safe_asset_id"`
}

type Configuration

type Configuration struct {
	KeeperAppId                 string `toml:"keeper-app-id"`
	StoreDir                    string `toml:"store-dir"`
	PrivateKey                  string `toml:"private-key"`
	Timestamp                   int64  `toml:"timestamp"`
	KeeperStoreDir              string `toml:"keeper-store-dir"`
	MonitorConversaionId        string `toml:"monitor-conversation-id"`
	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"`
	PolygonRPC                  string `toml:"polygon-rpc"`
	PolygonFactoryAddress       string `toml:"polygon-factory-address"`
	PolygonObserverDepositEntry string `toml:"polygon-observer-deposit-entry"`
	PolygonKeeperDepositEntry   string `toml:"polygon-keeper-deposit-entry"`
	EVMKey                      string `toml:"evm-key"`
	App                         struct {
		AppId             string `toml:"app-id"`
		SessionId         string `toml:"session-id"`
		SessionPrivateKey string `toml:"session-private-key"`
		ServerPublicKey   string `toml:"server-public-key"`
		SpendPrivateKey   string `toml:"spend-private-key"`
	} `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
	RequestId       string
	CreatedAt       time.Time
	UpdatedAt       time.Time
}

type MixinNetworkAsset added in v0.12.2

type MixinNetworkAsset struct {
	AssetId   string      `json:"asset_id"`
	MixinId   crypto.Hash `json:"mixin_id"`
	AssetKey  string      `json:"asset_key"`
	Symbol    string      `json:"symbol"`
	Name      string      `json:"name"`
	Precision uint32      `json:"precision"`
	ChainId   string      `json:"chain_id"`
}

type MtgInfo added in v0.18.1

type MtgInfo struct {
	InitialTxs  string `json:"initial_transactions"`
	SignedTxs   string `json:"signed_transactions"`
	SnapshotTxs string `json:"snapshot_transactions"`
	MSKTOutputs string `json:"mskt_outputs"`

	// keeper
	LatestRequest string `json:"latest_request,omitempty"`
	BitcoinHeight string `json:"bitcoin_height,omitempty"`
	XINOutputs    string `json:"xin_outputs,omitempty"`

	// signer
	MSSTOutputs string `json:"msst_outputs,omitempty"`
}

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) Blaze added in v0.18.1

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

func (*Node) Boot

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

func (*Node) GetKeepers added in v0.18.3

func (node *Node) GetKeepers() []string

func (*Node) Migrate added in v0.18.4

func (node *Node) Migrate(ctx context.Context) error

func (*Node) StartHTTP

func (node *Node) StartHTTP(version, readme string)

type NodeStats added in v0.18.1

type NodeStats struct {
	AppId     string
	Type      string
	Stats     string
	UpdatedAt time.Time
}

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) CheckUnconfirmedDepositsForAssetAndHolder added in v0.13.0

func (s *SQLite3Store) CheckUnconfirmedDepositsForAssetAndHolder(ctx context.Context, holder, assetId string, offset time.Time) (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, rid string) 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) ListAllSafes added in v0.18.4

func (s *SQLite3Store) ListAllSafes(ctx context.Context) ([]*Account, 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) ListNodeStats added in v0.18.1

func (s *SQLite3Store) ListNodeStats(ctx context.Context, typ string) ([]*NodeStats, error)

func (*SQLite3Store) ListPendingTransactionApprovals

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

func (*SQLite3Store) ListProposedAccountsWithSig added in v0.13.0

func (s *SQLite3Store) ListProposedAccountsWithSig(ctx context.Context) ([]*Account, error)

func (*SQLite3Store) MarkAccountApproved added in v0.13.0

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

func (*SQLite3Store) MarkAccountDeployed added in v0.18.4

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

func (*SQLite3Store) MarkAccountMigrated added in v0.13.0

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

func (*SQLite3Store) MarkTransactionApprovalPaid added in v0.6.0

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

func (*SQLite3Store) Migrate added in v0.18.4

func (s *SQLite3Store) Migrate(ctx context.Context) error

func (*SQLite3Store) QueryDepositSentHashes added in v0.7.0

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

func (*SQLite3Store) ReadAccount added in v0.13.0

func (s *SQLite3Store) ReadAccount(ctx context.Context, addr string) (*Account, 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) SaveAccountApprovalSignature added in v0.13.0

func (s *SQLite3Store) SaveAccountApprovalSignature(ctx context.Context, addr, sig string) error

func (*SQLite3Store) UpdateDepositRequestId added in v0.13.0

func (s *SQLite3Store) UpdateDepositRequestId(ctx context.Context, transactionHash string, outputIndex int64, oldRid, rid 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) UpsertNodeStats added in v0.18.1

func (s *SQLite3Store) UpsertNodeStats(ctx context.Context, appId, typ, stats 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 StatsInfo added in v0.18.1

type StatsInfo struct {
	Type    string  `json:"type"`
	Runtime string  `json:"runtime"`
	Group   string  `json:"group"`
	Mtg     MtgInfo `json:"mtg"`
	App     AppInfo `json:"app"`
}

func (*StatsInfo) String added in v0.18.1

func (s *StatsInfo) String() string

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