Documentation ¶
Index ¶
- Constants
- Variables
- func AccountExists(homedir, address string) bool
- func ConfirmEthereumTransaction(hash string, times int, duration time.Duration) (int, error)
- func ConvertIntToHex(value int64) string
- func CreateKeyStorage(homedir, password string) error
- func DeleteAccount(homedir, address string) bool
- func EncodePackInt64(key string, param int64) common.Hash
- func GetAuthorizer(id string, cb zcncore.GetInfoCallback) (err error)
- func GetAuthorizers(active bool, cb zcncore.GetInfoCallback) (err error)
- func GetGlobalConfig(cb zcncore.GetInfoCallback) (err error)
- func GetTransactionStatus(hash string) (int, error)
- func ImportAccount(homedir, mnemonic, password string, accountAddrIndex ...AccountAddressIndex) (string, error)
- func ListStorageAccounts(homedir string) []common.Address
- type AccountAddressIndex
- type AlchemyGasEstimationRequest
- type AuthorizerNode
- type AuthorizerNodesResponse
- type AuthorizerResponse
- type BancorTokenDetails
- type BridgeClient
- func (b *BridgeClient) AddEthereumAuthorizer(ctx context.Context, address common.Address) (*types.Transaction, error)
- func (b *BridgeClient) AddEthereumAuthorizers(configDir string)
- func (b *BridgeClient) ApproveSwap(ctx context.Context, sourceTokenAddress string, maxAmountSwap *big.Int) (*types.Transaction, error)
- func (b *BridgeClient) BurnWZCN(ctx context.Context, amountTokens uint64) (*types.Transaction, error)
- func (b *BridgeClient) BurnZCN(ctx context.Context, amount, txnfee uint64) (transaction.Transaction, error)
- func (b *BridgeClient) CreateSignedTransactionFromKeyStore(client EthereumClient, gasLimitUnits uint64) *bind.TransactOpts
- func (b *BridgeClient) EstimateBurnWZCNGasAmount(ctx context.Context, from, to, amountTokens string) (float64, error)
- func (b *BridgeClient) EstimateGasPrice(ctx context.Context) (float64, error)
- func (b *BridgeClient) EstimateMintWZCNGasAmount(ctx context.Context, from, to, zcnTransactionRaw, amountToken string, ...) (float64, error)
- func (b *BridgeClient) FetchZCNToSourceTokenRate(sourceTokenAddress string) (*big.Float, error)
- func (b *BridgeClient) GetMaxBancorTargetAmount(sourceTokenAddress string, amountSwap uint64) (*big.Int, error)
- func (b *BridgeClient) GetTokenBalance() (*big.Int, error)
- func (b *BridgeClient) GetUserNonceMinted(ctx context.Context, rawEthereumAddress string) (*big.Int, error)
- func (b *BridgeClient) IncreaseBurnerAllowance(ctx context.Context, allowanceAmount uint64) (*types.Transaction, error)
- func (b *BridgeClient) MintWZCN(ctx context.Context, payload *ethereum.MintPayload) (*types.Transaction, error)
- func (b *BridgeClient) MintZCN(ctx context.Context, payload *zcnsc.MintPayload) (string, error)
- func (b *BridgeClient) NFTConfigGetAddress(ctx context.Context, key string) (string, string, error)
- func (b *BridgeClient) NFTConfigGetUint256(ctx context.Context, key string, keyParam ...int64) (string, int64, error)
- func (b *BridgeClient) NFTConfigSetAddress(ctx context.Context, key, address string) (*types.Transaction, error)
- func (b *BridgeClient) NFTConfigSetUint256(ctx context.Context, key string, value int64) (*types.Transaction, error)
- func (b *BridgeClient) NFTConfigSetUint256Raw(ctx context.Context, key common.Hash, value int64) (*types.Transaction, error)
- func (b *BridgeClient) QueryEthereumBurnEvents(startNonce string) ([]*ethereum.BurnEvent, error)
- func (b *BridgeClient) QueryEthereumMintPayload(zchainBurnHash string) (*ethereum.MintPayload, error)
- func (b *BridgeClient) QueryZChainMintPayload(ethBurnHash string) (*zcnsc.MintPayload, error)
- func (b *BridgeClient) RemoveEthereumAuthorizer(ctx context.Context, address common.Address) (*types.Transaction, error)
- func (b *BridgeClient) ResetUserNonceMinted(ctx context.Context) (*types.Transaction, error)
- func (b *BridgeClient) SignWithEthereumChain(message string) ([]byte, error)
- func (b *BridgeClient) Swap(ctx context.Context, sourceTokenAddress string, amountSwap uint64, ...) (*types.Transaction, error)
- func (b *BridgeClient) VerifyZCNTransaction(ctx context.Context, hash string) (transaction.Transaction, error)
- type BridgeSDKConfig
- type DetailedAccount
- type EthereumBurnEvents
- type EthereumClient
- type GasEstimationRequest
- type GasPriceEstimationResult
- type JobError
- type JobResult
- type JobStatus
- type KeyStore
- type ProofEthereumBurn
- type ProofZCNBurn
- type WZCNBurnEvent
Constants ¶
const ( TenderlyProvider = iota AlchemyProvider UnknownProvider )
const ( ZChainsClientConfigName = "config.yaml" ZChainWalletConfigName = "wallet.json" EthereumWalletStorageDir = "wallets" )
const ( BancorNetworkAddress = "0xeEF417e1D5CC832e619ae18D2F140De2999dD4fB" SourceTokenETHAddress = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" SourceTokenUSDCAddress = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" SourceTokenEURCAddress = "0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c" SourceTokenBNTAddress = "0x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c" )
const BancorAPIURL = "https://api-v3.bancor.network"
Variables ¶
var ( DefaultClientIDEncoder = func(id string) []byte { result, err := hex.DecodeString(id) if err != nil { Logger.Fatal(err) } return result } )
var Logger logger.Logger
Functions ¶
func AccountExists ¶ added in v1.3.5
AccountExists checks if account exists
func ConvertIntToHex ¶ added in v1.13.4
ConvertIntToHex converts given int value to hex string.
func CreateKeyStorage ¶ added in v1.3.5
CreateKeyStorage create, restore or unlock key storage
func DeleteAccount ¶ added in v1.4.7
DeleteAccount deletes account from wallet
func EncodePackInt64 ¶ added in v1.11.0
EncodePackInt do abi.encodedPack(string, int), it is used for setting plan id for royalty
func GetAuthorizer ¶ added in v1.7.1
func GetAuthorizer(id string, cb zcncore.GetInfoCallback) (err error)
GetAuthorizer returned authorizer by ID
func GetAuthorizers ¶
func GetAuthorizers(active bool, cb zcncore.GetInfoCallback) (err error)
GetAuthorizers Returns all or only active authorizers
func GetGlobalConfig ¶ added in v1.7.1
func GetGlobalConfig(cb zcncore.GetInfoCallback) (err error)
GetGlobalConfig Returns global config
func GetTransactionStatus ¶
func ImportAccount ¶ added in v1.3.5
func ImportAccount(homedir, mnemonic, password string, accountAddrIndex ...AccountAddressIndex) (string, error)
ImportAccount imports account using mnemonic
func ListStorageAccounts ¶ added in v1.3.5
ListStorageAccounts List available accounts
Types ¶
type AccountAddressIndex ¶ added in v1.11.0
type AlchemyGasEstimationRequest ¶ added in v1.13.8
type AlchemyGasEstimationRequest struct { From string `json:"from"` To string `json:"to"` Value string `json:"value"` Data string `json:"data"` }
AlchemyGasEstimationRequest describes request used for Alchemy enhanced JSON-RPC API.
type AuthorizerNode ¶
type AuthorizerNodesResponse ¶ added in v1.7.1
type AuthorizerNodesResponse struct {
Nodes []*AuthorizerNode `json:"nodes"`
}
type AuthorizerResponse ¶ added in v1.7.1
type AuthorizerResponse struct { AuthorizerID string `json:"id"` URL string `json:"url"` // Configuration Fee common.Balance `json:"fee"` // Geolocation Latitude float64 `json:"latitude"` Longitude float64 `json:"longitude"` // Stats LastHealthCheck int64 `json:"last_health_check"` // stake_pool_settings DelegateWallet string `json:"delegate_wallet"` MinStake common.Balance `json:"min_stake"` MaxStake common.Balance `json:"max_stake"` NumDelegates int `json:"num_delegates"` ServiceCharge float64 `json:"service_charge"` }
type BancorTokenDetails ¶ added in v1.11.0
type BancorTokenDetails struct { Data struct { Rate struct { ETH string `json:"eth"` BNT string `json:"bnt"` USDC string `json:"usd"` EURC string `json:"eur"` } } `json:"data"` }
BancorTokenDetails describes Bancor ZCN zcntoken pool details
type BridgeClient ¶ added in v1.3.5
type BridgeClient struct { BridgeAddress, TokenAddress, AuthorizersAddress, NFTConfigAddress, EthereumAddress, EthereumNodeURL, Password string BancorAPIURL string ConsensusThreshold float64 GasLimit uint64 // contains filtered or unexported fields }
func NewBridgeClient ¶ added in v1.11.0
func NewBridgeClient( bridgeAddress, tokenAddress, authorizersAddress, ethereumAddress, ethereumNodeURL, password string, gasLimit uint64, consensusThreshold float64, bancorAPIURL string, ethereumClient EthereumClient, transactionProvider transaction.TransactionProvider, keyStore KeyStore) *BridgeClient
NewBridgeClient creates BridgeClient with the given parameters.
func SetupBridgeClientSDK ¶ added in v1.3.5
func SetupBridgeClientSDK(cfg *BridgeSDKConfig) *BridgeClient
SetupBridgeClientSDK initializes new bridge client. Meant to be used from standalone application with 0chain SDK initialized.
func (*BridgeClient) AddEthereumAuthorizer ¶ added in v1.8.17
func (b *BridgeClient) AddEthereumAuthorizer(ctx context.Context, address common.Address) (*types.Transaction, error)
AddEthereumAuthorizer Adds authorizer to Ethereum bridge. Only contract deployer can call this method
func (*BridgeClient) AddEthereumAuthorizers ¶ added in v1.8.17
func (b *BridgeClient) AddEthereumAuthorizers(configDir string)
func (*BridgeClient) ApproveSwap ¶ added in v1.11.0
func (b *BridgeClient) ApproveSwap(ctx context.Context, sourceTokenAddress string, maxAmountSwap *big.Int) (*types.Transaction, error)
ApproveSwap provides opportunity to approve swap operation for ERC20 tokens
func (*BridgeClient) BurnWZCN ¶ added in v1.3.5
func (b *BridgeClient) BurnWZCN(ctx context.Context, amountTokens uint64) (*types.Transaction, error)
BurnWZCN Burns WZCN tokens on behalf of the 0ZCN client amountTokens - ZCN tokens clientID - 0ZCN client ERC20 signature: "burn(uint256,bytes)"
func (*BridgeClient) BurnZCN ¶ added in v1.3.5
func (b *BridgeClient) BurnZCN(ctx context.Context, amount, txnfee uint64) (transaction.Transaction, error)
BurnZCN burns ZCN tokens before conversion from ZCN to WZCN as a first step
func (*BridgeClient) CreateSignedTransactionFromKeyStore ¶ added in v1.8.17
func (b *BridgeClient) CreateSignedTransactionFromKeyStore(client EthereumClient, gasLimitUnits uint64) *bind.TransactOpts
func (*BridgeClient) EstimateBurnWZCNGasAmount ¶ added in v1.13.8
func (b *BridgeClient) EstimateBurnWZCNGasAmount(ctx context.Context, from, to, amountTokens string) (float64, error)
EstimateBurnWZCNGasAmount performs gas amount estimation for the given wzcn burn transaction.
func (*BridgeClient) EstimateGasPrice ¶ added in v1.13.4
func (b *BridgeClient) EstimateGasPrice(ctx context.Context) (float64, error)
EstimateGasPrice performs gas estimation for the given transaction.
func (*BridgeClient) EstimateMintWZCNGasAmount ¶ added in v1.13.8
func (b *BridgeClient) EstimateMintWZCNGasAmount( ctx context.Context, from, to, zcnTransactionRaw, amountToken string, nonceRaw int64, signaturesRaw [][]byte) (float64, error)
EstimateMintWZCNGasAmount performs gas amount estimation for the given wzcn mint transaction.
func (*BridgeClient) FetchZCNToSourceTokenRate ¶ added in v1.11.0
func (b *BridgeClient) FetchZCNToSourceTokenRate(sourceTokenAddress string) (*big.Float, error)
FetchZCNToETHRate retrieves latest ZCN to ETH rate using Bancor API
func (*BridgeClient) GetMaxBancorTargetAmount ¶ added in v1.11.0
func (b *BridgeClient) GetMaxBancorTargetAmount(sourceTokenAddress string, amountSwap uint64) (*big.Int, error)
GetMaxBancorTargetAmount retrieves max amount of a given source token for Bancor swap
func (*BridgeClient) GetTokenBalance ¶ added in v1.11.0
func (b *BridgeClient) GetTokenBalance() (*big.Int, error)
GetTokenBalance returns balance of the current client for the zcntoken address
func (*BridgeClient) GetUserNonceMinted ¶ added in v1.8.11
func (b *BridgeClient) GetUserNonceMinted(ctx context.Context, rawEthereumAddress string) (*big.Int, error)
GetUserNonceMinted Returns nonce for a specified Ethereum address
func (*BridgeClient) IncreaseBurnerAllowance ¶ added in v1.3.5
func (b *BridgeClient) IncreaseBurnerAllowance(ctx context.Context, allowanceAmount uint64) (*types.Transaction, error)
IncreaseBurnerAllowance Increases allowance for bridge contract address to transfer ERC-20 tokens on behalf of the zcntoken owner to the Burn TokenPool During the burn the script transfers amount from zcntoken owner to the bridge burn zcntoken pool Example: owner wants to burn some amount. The contract will transfer some amount from owner address to the pool. So the owner must call IncreaseAllowance of the WZCN zcntoken with 2 parameters: spender address which is the bridge contract and amount to be burned (transferred) Token signature: "increaseApproval(address,uint256)"
func (*BridgeClient) MintWZCN ¶ added in v1.3.5
func (b *BridgeClient) MintWZCN(ctx context.Context, payload *ethereum.MintPayload) (*types.Transaction, error)
MintWZCN Mint ZCN tokens on behalf of the 0ZCN client payload: received from authorizers
func (*BridgeClient) MintZCN ¶ added in v1.3.5
func (b *BridgeClient) MintZCN(ctx context.Context, payload *zcnsc.MintPayload) (string, error)
MintZCN mints ZCN tokens after receiving proof-of-burn of WZCN tokens
func (*BridgeClient) NFTConfigGetAddress ¶ added in v1.11.0
func (*BridgeClient) NFTConfigGetUint256 ¶ added in v1.11.0
func (*BridgeClient) NFTConfigSetAddress ¶ added in v1.11.0
func (b *BridgeClient) NFTConfigSetAddress(ctx context.Context, key, address string) (*types.Transaction, error)
func (*BridgeClient) NFTConfigSetUint256 ¶ added in v1.11.0
func (b *BridgeClient) NFTConfigSetUint256(ctx context.Context, key string, value int64) (*types.Transaction, error)
NFTConfigSetUint256 call setUint256 method of NFTConfig contract
func (*BridgeClient) NFTConfigSetUint256Raw ¶ added in v1.11.0
func (b *BridgeClient) NFTConfigSetUint256Raw(ctx context.Context, key common.Hash, value int64) (*types.Transaction, error)
func (*BridgeClient) QueryEthereumBurnEvents ¶ added in v1.8.16
func (b *BridgeClient) QueryEthereumBurnEvents(startNonce string) ([]*ethereum.BurnEvent, error)
QueryEthereumBurnEvents gets ethereum burn events
func (*BridgeClient) QueryEthereumMintPayload ¶ added in v1.3.5
func (b *BridgeClient) QueryEthereumMintPayload(zchainBurnHash string) (*ethereum.MintPayload, error)
QueryEthereumMintPayload gets burn ticket and creates mint payload to be minted in the Ethereum chain zchainBurnHash - Ethereum burn transaction hash
func (*BridgeClient) QueryZChainMintPayload ¶ added in v1.3.5
func (b *BridgeClient) QueryZChainMintPayload(ethBurnHash string) (*zcnsc.MintPayload, error)
QueryZChainMintPayload gets burn ticket and creates mint payload to be minted in the ZChain ethBurnHash - Ethereum burn transaction hash
func (*BridgeClient) RemoveEthereumAuthorizer ¶ added in v1.8.17
func (b *BridgeClient) RemoveEthereumAuthorizer(ctx context.Context, address common.Address) (*types.Transaction, error)
RemoveEthereumAuthorizer Removes authorizer from Ethereum bridge. Only contract deployer can call this method
func (*BridgeClient) ResetUserNonceMinted ¶ added in v1.11.0
func (b *BridgeClient) ResetUserNonceMinted(ctx context.Context) (*types.Transaction, error)
ResetUserNonceMinted Resets nonce for a specified Ethereum address
func (*BridgeClient) SignWithEthereumChain ¶ added in v1.3.5
func (b *BridgeClient) SignWithEthereumChain(message string) ([]byte, error)
SignWithEthereumChain signs the digest with Ethereum chain signer taking key from the current user key storage
func (*BridgeClient) Swap ¶ added in v1.11.0
func (b *BridgeClient) Swap(ctx context.Context, sourceTokenAddress string, amountSwap uint64, maxAmountSwap *big.Int, deadlinePeriod time.Time) (*types.Transaction, error)
Swap provides opportunity to perform zcntoken swap operation.
func (*BridgeClient) VerifyZCNTransaction ¶ added in v1.3.5
func (b *BridgeClient) VerifyZCNTransaction(ctx context.Context, hash string) (transaction.Transaction, error)
VerifyZCNTransaction verifies 0CHain transaction
type BridgeSDKConfig ¶ added in v1.3.5
type DetailedAccount ¶ added in v1.11.0
DetailedAccount describes detailed account
type EthereumBurnEvents ¶ added in v1.8.16
type EthereumBurnEvents struct { AuthorizerID string `json:"authorizer_id,omitempty"` BurnEvents []struct { Nonce int64 `json:"nonce"` TransactionHash string `json:"transaction_hash"` } `json:"burn_events"` }
EthereumBurnEvents represents burn events returned by authorizers
func (*EthereumBurnEvents) Data ¶ added in v1.8.16
func (r *EthereumBurnEvents) Data() interface{}
func (*EthereumBurnEvents) Error ¶ added in v1.8.16
func (r *EthereumBurnEvents) Error() error
func (*EthereumBurnEvents) GetAuthorizerID ¶ added in v1.8.16
func (r *EthereumBurnEvents) GetAuthorizerID() string
func (*EthereumBurnEvents) SetAuthorizerID ¶ added in v1.8.16
func (r *EthereumBurnEvents) SetAuthorizerID(id string)
type EthereumClient ¶ added in v1.11.0
type EthereumClient interface { bind.ContractBackend ChainID(ctx context.Context) (*big.Int, error) }
EthereumClient describes Ethereum JSON-RPC client generealized interface
type GasEstimationRequest ¶ added in v1.13.4
type GasEstimationRequest struct { From string `json:"from"` To string `json:"to"` Value string `json:"value"` }
GasEstimationRequest describes request used for Alchemy enhanced JSON-RPC API.
type GasPriceEstimationResult ¶ added in v1.13.4
type GasPriceEstimationResult struct {
Value float64 `json:"value"`
}
GasPriceEstimationResult represents result of the gas price estimation operation execution.
type JobError ¶
type JobError struct {
// contains filtered or unexported fields
}
JobError result of internal request wrapped in authorizer job
func (*JobError) MarshalJSON ¶
func (*JobError) UnmarshalJSON ¶
type JobResult ¶
type JobResult interface { // Error = Status of Authorizer job on authorizer server Error() error // Data returns the actual result Data() interface{} // SetAuthorizerID Assigns authorizer ID to the Job SetAuthorizerID(ID string) // GetAuthorizerID returns authorizer ID GetAuthorizerID() string }
JobResult = Authorizer task result, it wraps actual result of the query inside authorizer
type KeyStore ¶ added in v1.11.0
type KeyStore interface { Find(accounts.Account) (accounts.Account, error) TimedUnlock(accounts.Account, string, time.Duration) error SignHash(account accounts.Account, hash []byte) ([]byte, error) GetEthereumKeyStore() *keystore.KeyStore }
KeyStore is a wrapper, which exposes Ethereum KeyStore methods used by DEX bridge.
func NewKeyStore ¶ added in v1.11.0
NewKeyStore creates new KeyStore wrapper instance
type ProofEthereumBurn ¶
type ProofEthereumBurn struct { TxnID string `json:"ethereum_txn_id"` Nonce int64 `json:"nonce"` Amount int64 `json:"amount"` ReceivingClientID string `json:"receiving_client_id"` // 0ZCN address Signature string `json:"signature"` }
ProofEthereumBurn Authorizer returns this type for Ethereum transaction
type ProofZCNBurn ¶
type ProofZCNBurn struct { AuthorizerID string `json:"authorizer_id,omitempty"` TxnID string `json:"0chain_txn_id"` To string `json:"to"` Nonce int64 `json:"nonce"` Amount int64 `json:"amount"` Signature []byte `json:"signature"` }
ProofZCNBurn Authorizer returns this type for ZCN transaction
func (*ProofZCNBurn) Data ¶
func (r *ProofZCNBurn) Data() interface{}
func (*ProofZCNBurn) Error ¶
func (r *ProofZCNBurn) Error() error
func (*ProofZCNBurn) GetAuthorizerID ¶
func (r *ProofZCNBurn) GetAuthorizerID() string
func (*ProofZCNBurn) SetAuthorizerID ¶
func (r *ProofZCNBurn) SetAuthorizerID(id string)
type WZCNBurnEvent ¶
type WZCNBurnEvent struct { // AuthorizerID Authorizer ID AuthorizerID string `json:"authorizer_id,omitempty"` // BurnTicket Returns burn ticket BurnTicket *ProofEthereumBurn `json:"ticket,omitempty"` // Err gives error of job on server side Err *JobError `json:"err,omitempty"` // Status gives job status on server side (authoriser) Status JobStatus `json:"status,omitempty"` }
WZCNBurnEvent returned from burn ticket handler of: /v1/ether/burnticket/get
func (*WZCNBurnEvent) Data ¶
func (r *WZCNBurnEvent) Data() interface{}
func (*WZCNBurnEvent) Error ¶
func (r *WZCNBurnEvent) Error() error
func (*WZCNBurnEvent) GetAuthorizerID ¶
func (r *WZCNBurnEvent) GetAuthorizerID() string
func (*WZCNBurnEvent) SetAuthorizerID ¶
func (r *WZCNBurnEvent) SetAuthorizerID(id string)