Documentation
¶
Index ¶
- Constants
- Variables
- func CalcSwappedValue(pairID string, value *big.Int, isSrc bool) *big.Int
- func CheckSwapValue(pairID string, value *big.Int, isSrc bool) bool
- func FromBits(value *big.Int, decimals uint8) float64
- func GetAllPairIDs() []string
- func GetBigValueThreshold(pairID string, isSrc bool) *big.Int
- func GetTokenPairsConfig() map[string]*TokenPairConfig
- func GetTokenPairsDir() string
- func IsTokenPairExist(pairID string) bool
- func LoadTokenPairsConfig(check bool)
- func LoadTokenPairsConfigInDir(dir string, check bool) (map[string]*TokenPairConfig, error)
- func SetLatestBlockHeight(latest uint64, isSrc bool)
- func SetTokenPairsConfig(pairsConfig map[string]*TokenPairConfig, check bool)
- func SetTokenPairsDir(dir string)
- func ShouldRegisterSwapForError(err error) bool
- func ToBits(value float64, decimals uint8) *big.Int
- type AllExtras
- type BlockExtraArgs
- type BlocknetCoreAPIArgs
- type BtcExtraArgs
- type BtcExtraConfig
- type BtcOutPoint
- type BuildTxArgs
- type ChainConfig
- type CrossChainBridge
- type CrossChainBridgeBase
- func (b *CrossChainBridgeBase) GetChainConfig() *ChainConfig
- func (b *CrossChainBridgeBase) GetDcrmPublicKey(pairID string) string
- func (b *CrossChainBridgeBase) GetGatewayConfig() *GatewayConfig
- func (b *CrossChainBridgeBase) GetTokenConfig(pairID string) *TokenConfig
- func (b *CrossChainBridgeBase) IsSrcEndpoint() bool
- func (b *CrossChainBridgeBase) SetChainAndGateway(chainCfg *ChainConfig, gatewayCfg *GatewayConfig)
- type EthExtraArgs
- type GatewayConfig
- type GatewayExtras
- type NonceSetter
- type P2shAddressInfo
- type SwapInfo
- type SwapTxType
- type SwapType
- type TokenConfig
- func (c *TokenConfig) CalcAndStoreValue()
- func (c *TokenConfig) CheckConfig(isSrc bool) error
- func (c *TokenConfig) GetDcrmAddressPrivateKey() *ecdsa.PrivateKey
- func (c *TokenConfig) IsErc20() bool
- func (c *TokenConfig) IsProxyErc20() bool
- func (c *TokenConfig) LoadDcrmAddressPrivateKey() error
- func (c *TokenConfig) VerifyDcrmPublicKey() error
- type TokenPairConfig
- type TxStatus
- type TxSwapInfo
Constants ¶
const ( LockMemoPrefix = "SWAPTO:" UnlockMemoPrefix = "SWAPTX:" AggregateMemo = "aggregate" )
transaction memo prefix
Variables ¶
var ( AggregateIdentifier = "aggregate" SrcBridge CrossChainBridge DstBridge CrossChainBridge SrcLatestBlockHeight uint64 DstLatestBlockHeight uint64 IsDcrmDisabled bool )
common variables
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") 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") // errors should register ErrTxWithWrongMemo = errors.New("tx with wrong memo") ErrTxWithWrongValue = errors.New("tx with wrong value") ErrTxWithWrongReceipt = errors.New("tx with wrong receipt") ErrTxWithWrongSender = errors.New("tx with wrong sender") ErrTxSenderNotRegistered = errors.New("tx sender not registered") ErrTxIncompatible = errors.New("tx incompatible") ErrBindAddrIsContract = errors.New("bind address is contract") ErrRPCQueryError = errors.New("rpc query error") )
common errors
Functions ¶
func CalcSwappedValue ¶
CalcSwappedValue calc swapped value (get rid of fee)
func CheckSwapValue ¶
CheckSwapValue check swap value is in right range
func GetBigValueThreshold ¶
GetBigValueThreshold get big value threshold
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
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 ¶
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 ¶
ShouldRegisterSwapForError return true if this error should record in database
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 ¶
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"`
Memo string `json:"memo,omitempty"`
Input *[]byte `json:"input,omitempty"`
Extra *AllExtras `json:"extra,omitempty"`
}
BuildTxArgs struct
func (*BuildTxArgs) GetExtraArgs ¶
func (args *BuildTxArgs) GetExtraArgs() *BuildTxArgs
GetExtraArgs get extra args
func (*BuildTxArgs) GetTxNonce ¶
func (args *BuildTxArgs) GetTxNonce() uint64
GetTxNonce get tx nonce
type ChainConfig ¶ added in v0.3.0
type ChainConfig struct {
BlockChain string
NetID string
Confirmations *uint64
InitialHeight *uint64
EnableScan bool
ScanReceipt bool `json:",omitempty"`
MaxGasPriceFluctPercent uint64 `json:",omitempty"`
}
ChainConfig struct
func (*ChainConfig) CheckConfig ¶ added in v0.3.0
func (c *ChainConfig) CheckConfig() error
CheckConfig check chain config
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
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)
StartChainTransactionScanJob()
StartPoolTransactionScanJob()
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"`
Nonce *uint64 `json:"nonce,omitempty"`
}
EthExtraArgs struct
type GatewayConfig ¶
type GatewayConfig struct {
APIAddress []string
APIAddressExt []string
Extras *GatewayExtras
}
GatewayConfig struct
type GatewayExtras ¶ added in v0.3.1
type GatewayExtras struct {
BlockExtra *BlockExtraArgs
}
GatewayExtras struct
type NonceSetter ¶
type NonceSetter interface {
GetPoolNonce(address, height string) (uint64, error)
SetNonce(pairID string, value uint64)
AdjustNonce(pairID string, value uint64) (nonce uint64)
IncreaseNonce(pairID string, value uint64)
}
NonceSetter interface (for eth-like)
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"`
}
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 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"`
DefaultGasLimit uint64 `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) 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
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