tokens

package
v0.3.9 Latest Latest
Warning

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

Go to latest
Published: Sep 15, 2021 License: GPL-3.0 Imports: 15 Imported by: 5

README

How to add bridge support of new blockchain

1. create a new directory for each block chain

for example, btc, eth, fsn etc.

2. implement methods in CrossChainBridge interface

IsSrcEndpoint() bool

IsSrcEndpoint returns true if this bridge is on the source block chain, otherwise returns false.


SetChainAndGateway(*ChainConfig, *GatewayConfig)

SetChainAndGateway set chain and gateway config.


GetChainConfig() *ChainConfig

GetChainConfig get chain config.


GetGatewayConfig() *GatewayConfig

GetGatewayConfig get gateway config.


GetTokenConfig(pairID string) *TokenConfig

GetTokenConfig get token config.


VerifyTokenConfig(*TokenConfig) error

VerifyTokenConfig verify token config.


IsValidAddress(address string) bool

IsValidAddress check if given address is valid.


GetTransaction(txHash string) (interface{}, error)

GetTransaction get transaction by hash.


GetTransactionStatus(txHash string) *TxStatus

GetTransactionStatus get transaction status by hash.


VerifyTransaction(pairID, txHash string, allowUnstable bool) (*TxSwapInfo, error)

VerifyTransaction verify transaction by hash.


VerifyMsgHash(rawTx interface{}, msgHash []string) error

VerifyMsgHash verify message hash of rawtx in DCRM signing.


BuildRawTransaction(args *BuildTxArgs) (rawTx interface{}, err error)

BuildRawTransaction build raw transaction for swapin/swapout.


SignTransaction(rawTx interface{}, pairID string) (signedTx interface{}, txHash string, err error)

SignTransaction sign transaction with configed private key.


DcrmSignTransaction(rawTx interface{}, args *BuildTxArgs) (signedTx interface{}, txHash string, err error)

DcrmSignTransaction sign transaction in DCRM way.


SendTransaction(signedTx interface{}) (txHash string, err error)

SendTransaction send/broadcast signed transaction.


GetLatestBlockNumber() (uint64, error)

GetLatestBlockNumber get the latest block number.


GetLatestBlockNumberOf(apiAddress string) (uint64, error)

GetLatestBlockNumberOf get the latest block number by connecting to specified full node RPC address.


StartChainTransactionScanJob()

StartChainTransactionScanJob start scan chain transaction and auto register found swapin or swapout of this bridge.


StartPoolTransactionScanJob()

StartPoolTransactionScanJob start scan pool transaction and auto register found swapin or swapout of this bridge.


GetBalance(accountAddress string) (*big.Int, error)

GetBalance get coin balance of given account address.


GetTokenBalance(tokenType, tokenAddress, accountAddress string) (*big.Int, error)

GetTokenBalance get token balance of given token and account.


GetTokenSupply(tokenType, tokenAddress string) (*big.Int, error)

GetTokenSupply get token total supply of give token.


3. other possible way

Because some chain are forked from already implemented blockchain, we can derive from this implemented bridge and update some interface implement.

For example, fsn is forked from eth. So we derive fsn bridge from eth bridge and update some chain verify, and then fsn is also supported now as it has implememted all the required methods in CrossChainBridge interface.

Documentation

Overview

Package tokens defines the common interfaces and supported bridges in sub directories.

Index

Constants

View Source
const (
	LockMemoPrefix   = "SWAPTO:"
	UnlockMemoPrefix = "SWAPTX:"
	AggregateMemo    = "aggregate"

	MaxPlusGasPricePercentage = uint64(100)
)

transaction memo prefix

Variables

View Source
var (
	AggregateIdentifier = "aggregate"

	SrcBridge CrossChainBridge
	DstBridge CrossChainBridge

	SrcNonceSetter NonceSetter
	DstNonceSetter NonceSetter

	SrcForkChecker ForkChecker
	DstForkChecker ForkChecker

	SrcLatestBlockHeight uint64
	DstLatestBlockHeight uint64

	SrcStableConfirmations uint64
	DstStableConfirmations uint64

	IsDcrmDisabled bool
)

common variables

View Source
var (
	ErrSwapTypeNotSupported          = errors.New("swap type not supported in this endpoint")
	ErrBridgeSourceNotSupported      = errors.New("bridge source not supported")
	ErrBridgeDestinationNotSupported = errors.New("bridge destination not supported")
	ErrUnknownSwapType               = errors.New("unknown swap type")
	ErrMsgHashMismatch               = errors.New("message hash mismatch")
	ErrWrongCountOfMsgHashes         = errors.New("wrong count of msg hashed")
	ErrWrongRawTx                    = errors.New("wrong raw tx")
	ErrWrongExtraArgs                = errors.New("wrong extra args")
	ErrNoBtcBridge                   = errors.New("no btc bridge exist")
	ErrWrongSwapinTxType             = errors.New("wrong swapin tx type")
	ErrBuildSwapTxInWrongEndpoint    = errors.New("build swap in/out tx in wrong endpoint")
	ErrTxBeforeInitialHeight         = errors.New("transaction before initial block height")
	ErrAddressIsInBlacklist          = errors.New("address is in black list")
	ErrSwapIsClosed                  = errors.New("swap is closed")

	ErrTodo = errors.New("developing: TODO")

	ErrTxNotFound           = errors.New("tx not found")
	ErrTxNotStable          = errors.New("tx not stable")
	ErrTxWithWrongReceiver  = errors.New("tx with wrong receiver")
	ErrTxWithWrongContract  = errors.New("tx with wrong contract")
	ErrTxWithWrongInput     = errors.New("tx with wrong input data")
	ErrTxWithWrongLogData   = errors.New("tx with wrong log data")
	ErrTxIsAggregateTx      = errors.New("tx is aggregate tx")
	ErrWrongP2shBindAddress = errors.New("wrong p2sh bind address")
	ErrTxFuncHashMismatch   = errors.New("tx func hash mismatch")
	ErrDepositLogNotFound   = errors.New("deposit log not found or removed")
	ErrSwapoutLogNotFound   = errors.New("swapout log not found or removed")
	ErrUnknownPairID        = errors.New("unknown pair ID")
	ErrBindAddressMismatch  = errors.New("bind address mismatch")
	ErrRPCQueryError        = errors.New("rpc query error")
	ErrWrongSwapValue       = errors.New("wrong swap value")
	ErrTxIncompatible       = errors.New("tx incompatible")
	ErrTxWithWrongReceipt   = errors.New("tx with wrong receipt")
	ErrEstimateGasFailed    = errors.New("estimate gas failed")

	// errors should register
	ErrTxWithWrongMemo       = errors.New("tx with wrong memo")
	ErrTxWithWrongValue      = errors.New("tx with wrong value")
	ErrTxWithWrongSender     = errors.New("tx with wrong sender")
	ErrTxSenderNotRegistered = errors.New("tx sender not registered")
	ErrBindAddrIsContract    = errors.New("bind address is contract")
)

common errors

Functions

func CalcSwappedValue

func CalcSwappedValue(pairID string, value *big.Int, isSrc bool) *big.Int

CalcSwappedValue calc swapped value (get rid of fee)

func CheckSwapValue

func CheckSwapValue(pairID string, value *big.Int, isSrc bool) bool

CheckSwapValue check swap value is in right range

func CmpAndSetLatestBlockHeight added in v0.3.7

func CmpAndSetLatestBlockHeight(latest uint64, isSrc bool)

CmpAndSetLatestBlockHeight cmp and set latest block height

func FromBits

func FromBits(value *big.Int, decimals uint8) float64

FromBits convert from bits

func GetAllPairIDs added in v0.3.0

func GetAllPairIDs() []string

GetAllPairIDs get all pairIDs

func GetBigValueThreshold

func GetBigValueThreshold(pairID string, isSrc bool) *big.Int

GetBigValueThreshold get big value threshold

func GetStableConfirmations added in v0.3.7

func GetStableConfirmations(isSrc bool) uint64

GetStableConfirmations get stable confirmations

func GetTokenPairsConfig added in v0.3.0

func GetTokenPairsConfig() map[string]*TokenPairConfig

GetTokenPairsConfig get token pairs config

func GetTokenPairsDir added in v0.3.0

func GetTokenPairsDir() string

GetTokenPairsDir get token pairs directory

func IsTokenPairExist added in v0.3.0

func IsTokenPairExist(pairID string) bool

IsTokenPairExist is token pair exist

func LoadTokenPairsConfig added in v0.3.0

func LoadTokenPairsConfig(check bool)

LoadTokenPairsConfig load token pairs config

func LoadTokenPairsConfigInDir added in v0.3.0

func LoadTokenPairsConfigInDir(dir string, check bool) (map[string]*TokenPairConfig, error)

LoadTokenPairsConfigInDir load token pairs config

func SetLatestBlockHeight

func SetLatestBlockHeight(latest uint64, isSrc bool)

SetLatestBlockHeight set latest block height

func SetTokenPairsConfig added in v0.3.0

func SetTokenPairsConfig(pairsConfig map[string]*TokenPairConfig, check bool)

SetTokenPairsConfig set token pairs config

func SetTokenPairsDir added in v0.3.0

func SetTokenPairsDir(dir string)

SetTokenPairsDir set token pairs directory

func ShouldRegisterSwapForError

func ShouldRegisterSwapForError(err error) bool

ShouldRegisterSwapForError return true if this error should record in database

func ToBits

func ToBits(value float64, decimals uint8) *big.Int

ToBits convert to bits

Types

type AllExtras

type AllExtras struct {
	BtcExtra *BtcExtraArgs `json:"btcExtra,omitempty"`
	EthExtra *EthExtraArgs `json:"ethExtra,omitempty"`
}

AllExtras struct

type BlockExtraArgs added in v0.3.1

type BlockExtraArgs struct {
	CoreAPIs         []BlocknetCoreAPIArgs
	UTXOAPIAddresses []string
}

BlockExtraArgs struct

type BlocknetCoreAPIArgs added in v0.3.1

type BlocknetCoreAPIArgs struct {
	APIAddress  string
	RPCUser     string
	RPCPassword string
	DisableTLS  bool
}

BlocknetCoreAPIArgs struct

type BtcExtraArgs

type BtcExtraArgs struct {
	RelayFeePerKb     *int64         `json:"relayFeePerKb,omitempty"`
	ChangeAddress     *string        `json:"-"`
	PreviousOutPoints []*BtcOutPoint `json:"previousOutPoints,omitempty"`
}

BtcExtraArgs struct

type BtcExtraConfig

type BtcExtraConfig struct {
	MinRelayFee       int64
	MinRelayFeePerKb  int64
	MaxRelayFeePerKb  int64
	PlusFeePercentage uint64
	EstimateFeeBlocks int

	UtxoAggregateMinCount  int
	UtxoAggregateMinValue  uint64
	UtxoAggregateToAddress string
}

BtcExtraConfig used to build swpout to btc tx

type BtcOutPoint

type BtcOutPoint struct {
	Hash  string `json:"hash"`
	Index uint32 `json:"index"`
}

BtcOutPoint struct

type BuildTxArgs

type BuildTxArgs struct {
	SwapInfo    `json:"swapInfo,omitempty"`
	From        string     `json:"from,omitempty"`
	To          string     `json:"to,omitempty"`
	Value       *big.Int   `json:"value,omitempty"`
	OriginValue *big.Int   `json:"originValue,omitempty"`
	SwapValue   *big.Int   `json:"swapvalue,omitempty"`
	Memo        string     `json:"memo,omitempty"`
	Input       *[]byte    `json:"input,omitempty"`
	Extra       *AllExtras `json:"extra,omitempty"`
	ReplaceNum  uint64     `json:"replaceNum,omitempty"`
}

BuildTxArgs struct

func (*BuildTxArgs) GetExtraArgs

func (args *BuildTxArgs) GetExtraArgs() *BuildTxArgs

GetExtraArgs get extra args

func (*BuildTxArgs) GetTxGasPrice added in v0.3.7

func (args *BuildTxArgs) GetTxGasPrice() *big.Int

GetTxGasPrice get tx gas price

func (*BuildTxArgs) GetTxNonce

func (args *BuildTxArgs) GetTxNonce() uint64

GetTxNonce get tx nonce

func (*BuildTxArgs) SetTxNonce added in v0.3.7

func (args *BuildTxArgs) SetTxNonce(nonce uint64)

SetTxNonce set tx nonce

type ChainConfig added in v0.3.0

type ChainConfig struct {
	BlockChain    string
	NetID         string
	Confirmations *uint64
	InitialHeight *uint64

	// judge by the 'from' chain (eg. src for swapin)
	EnableScan             bool
	EnableScanPool         bool
	EnablePassBigValue     bool
	EnableCheckTxBlockHash bool

	// judge by the 'to' chain (eg. dst for swapin)
	EnableReplaceSwap  bool
	EnableDynamicFeeTx bool

	CallByContractWhitelist []string `json:",omitempty"`

	MinReserveFee              string
	BaseFeePercent             int64
	BaseGasPrice               string `json:",omitempty"`
	MaxGasPriceFluctPercent    uint64 `json:",omitempty"`
	ReplacePlusGasPricePercent uint64 `json:",omitempty"`
	WaitTimeToReplace          int64  // seconds
	MaxReplaceCount            int
	FixedGasPrice              string `json:",omitempty"`
	MaxGasPrice                string `json:",omitempty"`

	PlusGasTipCapPercent uint64
	PlusGasFeeCapPercent uint64
	BlockCountFeeHistory int
	MaxGasTipCap         string
	MaxGasFeeCap         string
	// contains filtered or unexported fields
}

ChainConfig struct

func (*ChainConfig) CheckConfig added in v0.3.0

func (c *ChainConfig) CheckConfig(isServer bool) error

CheckConfig check chain config

func (*ChainConfig) GetFixedGasPrice added in v0.3.9

func (c *ChainConfig) GetFixedGasPrice() *big.Int

GetFixedGasPrice get fixed gas price

func (*ChainConfig) GetMaxGasFeeCap added in v0.3.9

func (c *ChainConfig) GetMaxGasFeeCap() *big.Int

GetMaxGasFeeCap get max fee gas cap

func (*ChainConfig) GetMaxGasPrice added in v0.3.9

func (c *ChainConfig) GetMaxGasPrice() *big.Int

GetMaxGasPrice get max gas price

func (*ChainConfig) GetMaxGasTipCap added in v0.3.9

func (c *ChainConfig) GetMaxGasTipCap() *big.Int

GetMaxGasTipCap get max gas tip cap

func (*ChainConfig) GetMinReserveFee added in v0.3.9

func (c *ChainConfig) GetMinReserveFee() *big.Int

GetMinReserveFee get min reserve fee

func (*ChainConfig) IsInCallByContractWhitelist added in v0.3.9

func (c *ChainConfig) IsInCallByContractWhitelist(caller string) bool

IsInCallByContractWhitelist is in call by contract whitelist

type CrossChainBridge

type CrossChainBridge interface {
	IsSrcEndpoint() bool

	SetChainAndGateway(*ChainConfig, *GatewayConfig)

	GetChainConfig() *ChainConfig
	GetGatewayConfig() *GatewayConfig
	GetTokenConfig(pairID string) *TokenConfig

	VerifyTokenConfig(*TokenConfig) error
	IsValidAddress(address string) bool

	GetTransaction(txHash string) (interface{}, error)
	GetTransactionStatus(txHash string) (*TxStatus, error)
	VerifyTransaction(pairID, txHash string, allowUnstable bool) (*TxSwapInfo, error)
	VerifyMsgHash(rawTx interface{}, msgHash []string) error

	BuildRawTransaction(args *BuildTxArgs) (rawTx interface{}, err error)
	SignTransaction(rawTx interface{}, pairID string) (signedTx interface{}, txHash string, err error)
	DcrmSignTransaction(rawTx interface{}, args *BuildTxArgs) (signedTx interface{}, txHash string, err error)
	SendTransaction(signedTx interface{}) (txHash string, err error)

	GetLatestBlockNumber() (uint64, error)
	GetLatestBlockNumberOf(apiAddress string) (uint64, error)

	GetBalance(accountAddress string) (*big.Int, error)
	GetTokenBalance(tokenType, tokenAddress, accountAddress string) (*big.Int, error)
	GetTokenSupply(tokenType, tokenAddress string) (*big.Int, error)
}

CrossChainBridge interface

func GetCrossChainBridge

func GetCrossChainBridge(isSrc bool) CrossChainBridge

GetCrossChainBridge get bridge of specified endpoint

type CrossChainBridgeBase

type CrossChainBridgeBase struct {
	ChainConfig   *ChainConfig
	GatewayConfig *GatewayConfig
	IsSrc         bool
}

CrossChainBridgeBase base bridge

func NewCrossChainBridgeBase

func NewCrossChainBridgeBase(isSrc bool) *CrossChainBridgeBase

NewCrossChainBridgeBase new base bridge

func (*CrossChainBridgeBase) GetChainConfig added in v0.3.0

func (b *CrossChainBridgeBase) GetChainConfig() *ChainConfig

GetChainConfig get chain config

func (*CrossChainBridgeBase) GetDcrmPublicKey added in v0.3.0

func (b *CrossChainBridgeBase) GetDcrmPublicKey(pairID string) string

GetDcrmPublicKey get dcrm address's public key

func (*CrossChainBridgeBase) GetGatewayConfig added in v0.3.0

func (b *CrossChainBridgeBase) GetGatewayConfig() *GatewayConfig

GetGatewayConfig get gateway config

func (*CrossChainBridgeBase) GetTokenConfig added in v0.3.0

func (b *CrossChainBridgeBase) GetTokenConfig(pairID string) *TokenConfig

GetTokenConfig get token config

func (*CrossChainBridgeBase) IsSrcEndpoint

func (b *CrossChainBridgeBase) IsSrcEndpoint() bool

IsSrcEndpoint returns if bridge is at the source endpoint

func (*CrossChainBridgeBase) SetChainAndGateway added in v0.3.0

func (b *CrossChainBridgeBase) SetChainAndGateway(chainCfg *ChainConfig, gatewayCfg *GatewayConfig)

SetChainAndGateway set chain and gateway config

type EthExtraArgs

type EthExtraArgs struct {
	Gas       *uint64  `json:"gas,omitempty"`
	GasPrice  *big.Int `json:"gasPrice,omitempty"`
	GasTipCap *big.Int `json:"gasTipCap,omitempty"`
	GasFeeCap *big.Int `json:"gasFeeCap,omitempty"`
	Nonce     *uint64  `json:"nonce,omitempty"`
}

EthExtraArgs struct

type ForkChecker added in v0.3.7

type ForkChecker interface {
	GetBlockHashOf(urls []string, height uint64) (hash string, err error)
}

ForkChecker fork checker interface

func GetForkChecker added in v0.3.7

func GetForkChecker(isSrc bool) ForkChecker

GetForkChecker get fork checker of specified endpoint

type GatewayConfig

type GatewayConfig struct {
	APIAddress    []string
	APIAddressExt []string
	Extras        *GatewayExtras `json:",omitempty"`
}

GatewayConfig struct

type GatewayExtras added in v0.3.1

type GatewayExtras struct {
	BlockExtra *BlockExtraArgs
}

GatewayExtras struct

type NonceSetter

type NonceSetter interface {
	GetTxBlockInfo(txHash string) (blockHeight, blockTime uint64)
	GetPoolNonce(address, height string) (uint64, error)
	SetNonce(pairID string, value uint64)
	AdjustNonce(pairID string, value uint64) (nonce uint64)
	InitNonces(nonces map[string]uint64)
}

NonceSetter interface (for eth-like)

func GetNonceSetter added in v0.3.7

func GetNonceSetter(isSrc bool) NonceSetter

GetNonceSetter get nonce setter of specified endpoint

type P2shAddressInfo

type P2shAddressInfo struct {
	BindAddress        string
	P2shAddress        string
	RedeemScript       string
	RedeemScriptDisasm string
}

P2shAddressInfo struct

type SwapInfo

type SwapInfo struct {
	PairID     string     `json:"pairid,omitempty"`
	SwapID     string     `json:"swapid,omitempty"`
	SwapType   SwapType   `json:"swaptype,omitempty"`
	TxType     SwapTxType `json:"txtype,omitempty"`
	Bind       string     `json:"bind,omitempty"`
	Identifier string     `json:"identifier,omitempty"`
	Reswapping bool       `json:"reswapping,omitempty"`
}

SwapInfo struct

type SwapTxType

type SwapTxType uint32

SwapTxType type

const (
	SwapinTx     SwapTxType = iota // 0
	SwapoutTx                      // 1
	P2shSwapinTx                   // 2
)

SwapTxType constants

func (SwapTxType) String

func (s SwapTxType) String() string

type SwapType

type SwapType uint32

SwapType type

const (
	NoSwapType SwapType = iota
	SwapinType
	SwapoutType
)

SwapType constants

func (SwapType) String

func (s SwapType) String() string

type TokenConfig

type TokenConfig struct {
	ID                     string `json:",omitempty"`
	Name                   string
	Symbol                 string
	Decimals               *uint8
	Description            string `json:",omitempty"`
	DepositAddress         string `json:",omitempty"`
	DcrmAddress            string
	DcrmPubkey             string   `json:"-"`
	ContractAddress        string   `json:",omitempty"`
	ContractCodeHash       string   `json:",omitempty"`
	MaximumSwap            *float64 // whole unit (eg. BTC, ETH, FSN), not Satoshi
	MinimumSwap            *float64 // whole unit
	BigValueThreshold      *float64
	SwapFeeRate            *float64
	MaximumSwapFee         *float64
	MinimumSwapFee         *float64
	PlusGasPricePercentage uint64 `json:",omitempty"`
	DisableSwap            bool
	IsDelegateContract     bool
	DelegateToken          string `json:",omitempty"`
	IsAnyswapAdapter       bool   `json:",omitempty"` // PRQ
	IsMappingTokenProxy    bool   `json:",omitempty"` // VTX

	DefaultGasLimit          uint64 `json:",omitempty"`
	AllowSwapinFromContract  bool   `json:",omitempty"`
	AllowSwapoutFromContract bool   `json:",omitempty"`

	// use private key address instead
	DcrmAddressKeyStore string `json:"-"`
	DcrmAddressPassword string `json:"-"`
	DcrmAddressKeyFile  string `json:"-"`
	// contains filtered or unexported fields
}

TokenConfig struct

func FindTokenConfig added in v0.3.0

func FindTokenConfig(address string, isSrc bool) (configs []*TokenConfig, pairIDs []string)

FindTokenConfig find by (tx to) address

func GetTokenConfig

func GetTokenConfig(pairID string, isSrc bool) *TokenConfig

GetTokenConfig get token config

func GetTokenConfigsByDirection added in v0.3.0

func GetTokenConfigsByDirection(pairID string, isSwapin bool) (fromTokenConfig, toTokenConfig *TokenConfig)

GetTokenConfigsByDirection get token configs by direction

func (*TokenConfig) CalcAndStoreValue

func (c *TokenConfig) CalcAndStoreValue()

CalcAndStoreValue calc and store value (minus duplicate calculation)

func (*TokenConfig) CheckConfig

func (c *TokenConfig) CheckConfig(isSrc bool) error

CheckConfig check token config

func (*TokenConfig) GetDcrmAddressPrivateKey added in v0.3.0

func (c *TokenConfig) GetDcrmAddressPrivateKey() *ecdsa.PrivateKey

GetDcrmAddressPrivateKey get private key

func (*TokenConfig) IsErc20

func (c *TokenConfig) IsErc20() bool

IsErc20 return if token is erc20

func (*TokenConfig) IsProxyErc20 added in v0.3.0

func (c *TokenConfig) IsProxyErc20() bool

IsProxyErc20 return if token is proxy contract of erc20

func (*TokenConfig) LoadDcrmAddressPrivateKey added in v0.3.0

func (c *TokenConfig) LoadDcrmAddressPrivateKey() error

LoadDcrmAddressPrivateKey load private key

func (*TokenConfig) VerifyDcrmPublicKey added in v0.3.0

func (c *TokenConfig) VerifyDcrmPublicKey() error

VerifyDcrmPublicKey verify public key

type TokenPairConfig added in v0.3.0

type TokenPairConfig struct {
	PairID    string
	SrcToken  *TokenConfig
	DestToken *TokenConfig
}

TokenPairConfig pair config

func AddPairConfig added in v0.3.0

func AddPairConfig(configFile string) (pairConfig *TokenPairConfig, err error)

AddPairConfig add pair config dynamically

func GetTokenPairConfig added in v0.3.0

func GetTokenPairConfig(pairID string) *TokenPairConfig

GetTokenPairConfig get token pair config

func (*TokenPairConfig) CheckConfig added in v0.3.0

func (c *TokenPairConfig) CheckConfig() (err error)

CheckConfig check token pair config

type TxStatus

type TxStatus struct {
	Receipt       interface{} `json:"receipt,omitempty"`
	Confirmations uint64      `json:"confirmations"`
	BlockHeight   uint64      `json:"block_height"`
	BlockHash     string      `json:"block_hash"`
	BlockTime     uint64      `json:"block_time"`
}

TxStatus struct

func (*TxStatus) IsSwapTxOnChainAndFailed added in v0.3.7

func (s *TxStatus) IsSwapTxOnChainAndFailed(token *TokenConfig) bool

IsSwapTxOnChainAndFailed to make failed of swaptx

type TxSwapInfo

type TxSwapInfo struct {
	PairID    string   `json:"pairid"`
	Hash      string   `json:"hash"`
	Height    uint64   `json:"height"`
	Timestamp uint64   `json:"timestamp"`
	From      string   `json:"from"`
	TxTo      string   `json:"txto"`
	To        string   `json:"to"`
	Bind      string   `json:"bind"`
	Value     *big.Int `json:"value"`
}

TxSwapInfo struct

Directories

Path Synopsis
Package block implements the bridge interfaces for block blockchain.
Package block implements the bridge interfaces for block blockchain.
Package bridge init crosschain bridges.
Package bridge init crosschain bridges.
btc
Package btc implements the bridge interfaces for btc blockchain.
Package btc implements the bridge interfaces for btc blockchain.
electrs
Package electrs get or post RPC queries to electrs server.
Package electrs get or post RPC queries to electrs server.
Package colx implements the bridge interfaces for colx blockchain.
Package colx implements the bridge interfaces for colx blockchain.
colxdev
Package colxdev dev tools to output compressed public key.
Package colxdev dev tools to output compressed public key.
Package etc implements the bridge interfaces for etc blockchain.
Package etc implements the bridge interfaces for etc blockchain.
Package eth implements the bridge interfaces for eth-like blockchain.
Package eth implements the bridge interfaces for eth-like blockchain.
Package fsn implements the bridge interfaces for fsn blockchain.
Package fsn implements the bridge interfaces for fsn blockchain.
Package ltc implements the bridge interfaces for ltc blockchain.
Package ltc implements the bridge interfaces for ltc blockchain.
Package okex implements the bridge interfaces for okex blockchain.
Package okex implements the bridge interfaces for okex blockchain.
Package tools provides tools for scanning and registering swaps.
Package tools provides tools for scanning and registering swaps.

Jump to

Keyboard shortcuts

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