Documentation ¶
Index ¶
- Constants
- Variables
- func CreateDB(ctx *node.ServiceContext, config *SCConfig, name string) database.DBManager
- func InitializeBridgeAccountKeystore(keystorePath string) (*keystore.KeyStore, common.Address, bool, error)
- func NewRpcClientP2P(sb *SubBridge) *rpc.Client
- func NewValueTransferRecovery(config *SCConfig, scBridgeInfo, mcBridgeInfo *BridgeInfo) *valueTransferRecovery
- type Backend
- type BridgeAccounts
- type BridgeInfo
- func (bi *BridgeInfo) AddRequestValueTransferEvents(evs []*RequestValueTransferEvent)
- func (bi *BridgeInfo) DeregisterToken(token, counterpartToken common.Address) error
- func (bi *BridgeInfo) GetCounterPartToken(token common.Address) common.Address
- func (bi *BridgeInfo) GetPendingRequestEvents(start uint64) []*RequestValueTransferEvent
- func (bi *BridgeInfo) GetReadyRequestValueTransferEvents() []*RequestValueTransferEvent
- func (bi *BridgeInfo) RegisterToken(token, counterpartToken common.Address) error
- func (bi *BridgeInfo) UpdateHandledNonce(nonce uint64)
- func (bi *BridgeInfo) UpdateInfo() error
- func (bi *BridgeInfo) UpdateRequestNonce(nonce uint64)
- func (bi *BridgeInfo) UpdateRequestNonceFromCounterpart(nonce uint64)
- type BridgeJournal
- type BridgeManager
- func (bm *BridgeManager) AddRecovery(localAddress, remoteAddress common.Address) error
- func (bm *BridgeManager) DeleteBridgeInfo(addr common.Address) error
- func (bm *BridgeManager) DeleteRecovery(localAddress, remoteAddress common.Address) error
- func (bm *BridgeManager) DeployBridge(backend bind.ContractBackend, local bool) (*bridgecontract.Bridge, common.Address, error)
- func (bm *BridgeManager) GetAllBridge() []*BridgeJournal
- func (bm *BridgeManager) GetBridgeInfo(addr common.Address) (*BridgeInfo, bool)
- func (bm *BridgeManager) GetCounterPartBridge(bridgeAddr common.Address) *bridgecontract.Bridge
- func (bm *BridgeManager) GetCounterPartBridgeAddr(bridgeAddr common.Address) common.Address
- func (bm *BridgeManager) GetERC20Fee(bridgeAddr, tokenAddr common.Address) (*big.Int, error)
- func (bm *BridgeManager) GetFeeReceiver(bridgeAddr common.Address) (common.Address, error)
- func (bm *BridgeManager) GetKLAYFee(bridgeAddr common.Address) (*big.Int, error)
- func (bm *BridgeManager) IsValidBridgePair(bridge1, bridge2 common.Address) bool
- func (bm *BridgeManager) LogBridgeStatus()
- func (bm *BridgeManager) ResetAllSubscribedEvents() error
- func (bm *BridgeManager) RestoreBridges() error
- func (bm *BridgeManager) SetBridgeInfo(addr common.Address, bridge *bridgecontract.Bridge, cpAddr common.Address, ...) error
- func (bm *BridgeManager) SetERC20Fee(bridgeAddr, tokenAddr common.Address, fee *big.Int) (common.Hash, error)
- func (bm *BridgeManager) SetFeeReceiver(bridgeAddr, receiver common.Address) (common.Hash, error)
- func (bm *BridgeManager) SetJournal(localAddress, remoteAddress common.Address) error
- func (bm *BridgeManager) SetKLAYFee(bridgeAddr common.Address, fee *big.Int) (common.Hash, error)
- func (bm *BridgeManager) Stop()
- func (bm *BridgeManager) SubscribeEvent(addr common.Address) error
- func (bm *BridgeManager) SubscribeHandleEvent(ch chan<- *HandleValueTransferEvent) event.Subscription
- func (bm *BridgeManager) SubscribeRequestEvent(ch chan<- *RequestValueTransferEvent) event.Subscription
- func (bm *BridgeManager) UnsubscribeEvent(addr common.Address)
- type BridgePeer
- type BridgePeerInfo
- type ChildChainEventHandler
- func (cce *ChildChainEventHandler) ConvertServiceChainBlockHashToMainChainTxHash(scBlockHash common.Hash) common.Hash
- func (cce *ChildChainEventHandler) HandleChainHeadEvent(block *types.Block) error
- func (cce *ChildChainEventHandler) HandleLogsEvent(logs []*types.Log) error
- func (cce *ChildChainEventHandler) HandleTxEvent(tx *types.Transaction) error
- func (cce *ChildChainEventHandler) HandleTxsEvent(txs []*types.Transaction) error
- func (cce *ChildChainEventHandler) ProcessHandleEvent(ev *HandleValueTransferEvent) error
- func (cce *ChildChainEventHandler) ProcessRequestEvent(ev *RequestValueTransferEvent) error
- type HandleValueTransferEvent
- type LocalBackend
- func (lb *LocalBackend) CallContract(ctx context.Context, call klaytn.CallMsg, blockNumber *big.Int) ([]byte, error)
- func (lb *LocalBackend) ChainID(ctx context.Context) (*big.Int, error)
- func (lb *LocalBackend) CodeAt(ctx context.Context, contract common.Address, blockNumber *big.Int) ([]byte, error)
- func (lb *LocalBackend) EstimateGas(ctx context.Context, call klaytn.CallMsg) (gas uint64, err error)
- func (lb *LocalBackend) FilterLogs(ctx context.Context, query klaytn.FilterQuery) ([]types.Log, error)
- func (lb *LocalBackend) PendingCodeAt(ctx context.Context, contract common.Address) ([]byte, error)
- func (lb *LocalBackend) PendingNonceAt(ctx context.Context, account common.Address) (uint64, error)
- func (lb *LocalBackend) SendTransaction(ctx context.Context, tx *types.Transaction) error
- func (lb *LocalBackend) SubscribeFilterLogs(ctx context.Context, query klaytn.FilterQuery, ch chan<- types.Log) (klaytn.Subscription, error)
- func (lb *LocalBackend) SuggestGasPrice(ctx context.Context) (*big.Int, error)
- func (lb *LocalBackend) TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error)
- type MainBridge
- func (s *MainBridge) APIs() []rpc.API
- func (s *MainBridge) AccountManager() *accounts.Manager
- func (mb *MainBridge) BridgePeerSet() *bridgePeerSet
- func (s *MainBridge) ChainDB() database.DBManager
- func (s *MainBridge) Components() []interface{}
- func (s *MainBridge) EventMux() *event.TypeMux
- func (s *MainBridge) IsListening() bool
- func (s *MainBridge) NetVersion() uint64
- func (pm *MainBridge) NodeInfo() *MainBridgeInfo
- func (s *MainBridge) ProtocolVersion() int
- func (s *MainBridge) Protocols() []p2p.Protocol
- func (s *MainBridge) SCProtocol() SCProtocol
- func (sb *MainBridge) SendRPCResponseData(data []byte) error
- func (sc *MainBridge) SetComponents(components []interface{})
- func (s *MainBridge) Start(srvr p2p.Server) error
- func (s *MainBridge) Stop() error
- type MainBridgeAPI
- type MainBridgeHandler
- type MainBridgeInfo
- type MainChainEventHandler
- func (mce *MainChainEventHandler) ConvertServiceChainBlockHashToMainChainTxHash(scBlockHash common.Hash) common.Hash
- func (mce *MainChainEventHandler) GetChildChainIndexingEnabled() bool
- func (mce *MainChainEventHandler) GetLastIndexedBlockNumber() uint64
- func (mce *MainChainEventHandler) HandleChainHeadEvent(block *types.Block) error
- func (mce *MainChainEventHandler) HandleLogsEvent(logs []*types.Log) error
- func (mce *MainChainEventHandler) HandleTxEvent(tx *types.Transaction) error
- func (mce *MainChainEventHandler) HandleTxsEvent(txs []*types.Transaction) error
- func (mce *MainChainEventHandler) WriteChildChainTxHash(ccBlockHash common.Hash, ccTxHash common.Hash)
- func (mce *MainChainEventHandler) WriteLastIndexedBlockNumber(blockNum uint64)
- type PeerSetManager
- type RemoteBackend
- func (rb *RemoteBackend) CallContract(ctx context.Context, call klaytn.CallMsg, blockNumber *big.Int) ([]byte, error)
- func (rb *RemoteBackend) ChainID(ctx context.Context) (*big.Int, error)
- func (rb *RemoteBackend) CodeAt(ctx context.Context, contract common.Address, blockNumber *big.Int) ([]byte, error)
- func (rb *RemoteBackend) EstimateGas(ctx context.Context, msg klaytn.CallMsg) (uint64, error)
- func (rb *RemoteBackend) FilterLogs(ctx context.Context, query klaytn.FilterQuery) (result []types.Log, err error)
- func (rb *RemoteBackend) PendingCodeAt(ctx context.Context, contract common.Address) ([]byte, error)
- func (rb *RemoteBackend) PendingNonceAt(ctx context.Context, account common.Address) (uint64, error)
- func (rb *RemoteBackend) SendTransaction(ctx context.Context, tx *types.Transaction) error
- func (rb *RemoteBackend) SubscribeFilterLogs(ctx context.Context, query klaytn.FilterQuery, ch chan<- types.Log) (klaytn.Subscription, error)
- func (rb *RemoteBackend) SuggestGasPrice(ctx context.Context) (*big.Int, error)
- func (rb *RemoteBackend) TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error)
- func (rb *RemoteBackend) TransactionReceiptRpcOutput(ctx context.Context, txHash common.Hash) (r map[string]interface{}, err error)
- type RemoteBackendInterface
- type RequestValueTransferEvent
- type SCConfig
- type SCProtocol
- type SubBridge
- func (s *SubBridge) APIs() []rpc.API
- func (s *SubBridge) AccountManager() *accounts.Manager
- func (sb *SubBridge) BridgePeerSet() *bridgePeerSet
- func (s *SubBridge) ChainDB() database.DBManager
- func (s *SubBridge) Components() []interface{}
- func (s *SubBridge) EventMux() *event.TypeMux
- func (sb *SubBridge) GetAnchoringTx() bool
- func (sb *SubBridge) GetBridgeTxPool() *bridgepool.BridgeTxPool
- func (s *SubBridge) IsListening() bool
- func (s *SubBridge) NetVersion() uint64
- func (pm *SubBridge) NodeInfo() *SubBridgeInfo
- func (s *SubBridge) ProtocolVersion() int
- func (s *SubBridge) Protocols() []p2p.Protocol
- func (s *SubBridge) SCProtocol() SCProtocol
- func (sb *SubBridge) SendRPCData(data []byte) error
- func (sb *SubBridge) SetAnchoringTx(flag bool) bool
- func (sc *SubBridge) SetComponents(components []interface{})
- func (sb *SubBridge) SetRPCConn(conn net.Conn)
- func (s *SubBridge) Start(srvr p2p.Server) error
- func (s *SubBridge) Stop() error
- type SubBridgeAPI
- func (sbapi *SubBridgeAPI) AddPeer(url string) (bool, error)
- func (sbapi *SubBridgeAPI) Anchoring(flag bool) bool
- func (sbapi *SubBridgeAPI) ConvertRequestTxHashToHandleTxHash(hash common.Hash) common.Hash
- func (sbapi *SubBridgeAPI) ConvertServiceChainBlockHashToMainChainTxHash(scBlockHash common.Hash) common.Hash
- func (sbapi *SubBridgeAPI) DeployBridge() ([]common.Address, error)
- func (sbapi *SubBridgeAPI) DeregisterBridge(cBridgeAddr common.Address, pBridgeAddr common.Address) error
- func (sbapi *SubBridgeAPI) DeregisterToken(cBridgeAddr, pBridgeAddr, cTokenAddr, pTokenAddr common.Address) error
- func (sbapi *SubBridgeAPI) GetAnchoring() bool
- func (sbapi *SubBridgeAPI) GetAnchoringPeriod() uint64
- func (sbapi *SubBridgeAPI) GetBridgeInformation(bridgeAddr common.Address) (map[string]interface{}, error)
- func (sbapi *SubBridgeAPI) GetERC20Fee(bridgeAddr, tokenAddr common.Address) (*big.Int, error)
- func (sbapi *SubBridgeAPI) GetFeeReceiver(bridgeAddr common.Address) (common.Address, error)
- func (sbapi *SubBridgeAPI) GetKLAYFee(bridgeAddr common.Address) (*big.Int, error)
- func (sbapi *SubBridgeAPI) GetLatestAnchoredBlockNumber() uint64
- func (sbapi *SubBridgeAPI) GetMainChainAccountAddr() string
- func (sbapi *SubBridgeAPI) GetMainChainAccountNonce() uint64
- func (sbapi *SubBridgeAPI) GetOperators() map[string]interface{}
- func (sbapi *SubBridgeAPI) GetParentTransactionReceipt(txHash common.Hash) (map[string]interface{}, error)
- func (sbapi *SubBridgeAPI) GetReceiptFromParentChain(blockHash common.Hash) *types.Receipt
- func (sbapi *SubBridgeAPI) GetSentChainTxsLimit() uint64
- func (sbapi *SubBridgeAPI) GetServiceChainAccountAddr() string
- func (sbapi *SubBridgeAPI) GetServiceChainAccountNonce() uint64
- func (sbapi *SubBridgeAPI) ListBridge() []*BridgeJournal
- func (sbapi *SubBridgeAPI) LockChildOperator() error
- func (sbapi *SubBridgeAPI) LockParentOperator() error
- func (sbapi *SubBridgeAPI) NodeInfo() (*p2p.NodeInfo, error)
- func (sbapi *SubBridgeAPI) Peers() ([]*p2p.PeerInfo, error)
- func (sbapi *SubBridgeAPI) RegisterBridge(cBridgeAddr common.Address, pBridgeAddr common.Address) error
- func (sbapi *SubBridgeAPI) RegisterToken(cBridgeAddr, pBridgeAddr, cTokenAddr, pTokenAddr common.Address) error
- func (sbapi *SubBridgeAPI) RemovePeer(url string) (bool, error)
- func (sbapi *SubBridgeAPI) SetERC20Fee(bridgeAddr, tokenAddr common.Address, fee *big.Int) (common.Hash, error)
- func (sbapi *SubBridgeAPI) SetFeeReceiver(bridgeAddr, receiver common.Address) (common.Hash, error)
- func (sbapi *SubBridgeAPI) SetKLAYFee(bridgeAddr common.Address, fee *big.Int) (common.Hash, error)
- func (sbapi *SubBridgeAPI) SubscribeBridge(cBridgeAddr, pBridgeAddr common.Address) error
- func (sbapi *SubBridgeAPI) TxPending() map[common.Address]types.Transactions
- func (sbapi *SubBridgeAPI) TxPendingCount() int
- func (sbapi *SubBridgeAPI) UnlockChildOperator(passphrase string) error
- func (sbapi *SubBridgeAPI) UnlockParentOperator(passphrase string) error
- func (sbapi *SubBridgeAPI) UnsubscribeBridge(cBridgeAddr, pBridgeAddr common.Address) error
- type SubBridgeHandler
- func (sbh *SubBridgeHandler) GetAnchoringPeriod() uint64
- func (sbh *SubBridgeHandler) GetLatestAnchoredBlockNumber() uint64
- func (sbh *SubBridgeHandler) GetMainChainAccountAddr() *common.Address
- func (sbh *SubBridgeHandler) GetNextAnchoringBlockNumber() uint64
- func (sbh *SubBridgeHandler) GetReceiptFromParentChain(blockHash common.Hash) *types.Receipt
- func (sbh *SubBridgeHandler) GetSentChainTxsLimit() uint64
- func (sbh *SubBridgeHandler) GetServiceChainAccountAddr() *common.Address
- func (sbh *SubBridgeHandler) HandleMainMsg(p BridgePeer, msg p2p.Msg) error
- func (sbh *SubBridgeHandler) LocalChainHeadEvent(block *types.Block)
- func (sbh *SubBridgeHandler) LockMainChainAccount()
- func (sbh *SubBridgeHandler) RegisterNewPeer(p BridgePeer) error
- func (scpm *SubBridgeHandler) SyncNonceAndGasPrice()
- func (sbh *SubBridgeHandler) UnLockMainChainAccount()
- func (sbh *SubBridgeHandler) UpdateLastestAnchoredBlockNumber(newLastestAnchoredBN uint64)
- func (sbh *SubBridgeHandler) WriteAnchoredBlockNumber(blockNum uint64)
- func (sbh *SubBridgeHandler) WriteReceiptFromParentChain(blockHash common.Hash, receipt *types.Receipt)
- type SubBridgeInfo
Constants ¶
const ( TokenEventChanSize = 10000 BridgeAddrJournal = "bridge_addrs.rlp" )
const ( KLAY uint8 = iota ERC20 ERC721 )
const ( // Protocol messages belonging to servicechain/1 StatusMsg = 0x00 // Below message can be deprecated. ServiceChainTxsMsg = 0x01 ServiceChainReceiptResponseMsg = 0x02 ServiceChainReceiptRequestMsg = 0x03 ServiceChainParentChainInfoResponseMsg = 0x04 ServiceChainParentChainInfoRequestMsg = 0x05 ServiceChainCall = 0x06 ServiceChainResponse = 0x07 ServiceChainNotify = 0x08 )
const ( ErrMsgTooLarge = iota ErrDecode ErrInvalidMsgCode ErrProtocolVersionMismatch ErrNetworkIdMismatch ErrNoStatusMsg ErrUnexpectedTxType )
const (
DefaultBridgeTxGasLimit = 5000000
)
const ProtocolMaxMsgSize = 10 * 1024 * 1024 // Maximum cap on the size of a protocol message
const (
SyncRequestInterval = 10
)
Variables ¶
var ( ErrInvalidTokenPair = errors.New("invalid token pair") ErrNoBridgeInfo = errors.New("bridge information does not exist") ErrDuplicatedBridgeInfo = errors.New("bridge information is duplicated") ErrDuplicatedToken = errors.New("token is duplicated") ErrNoRecovery = errors.New("recovery does not exist") ErrAlreadySubscribed = errors.New("already subscribed") ErrBridgeRestore = errors.New("restoring bridges is failed") )
var ( SCProtocolName = "servicechain" SCProtocolVersion = []uint{1} SCProtocolLength = []uint64{9} )
var ( ErrVtrDisabled = errors.New("VTR is disabled") ErrVtrAlreadyStarted = errors.New("VTR is already started") )
var DefaultConfig = SCConfig{
NetworkId: 1,
MaxPeer: 1,
}
DefaultConfig contains default settings for use on the Klaytn main net.
var (
ErrGetServiceChainPHInCCEH = errors.New("ServiceChainPH isn't set in ChildChainEventHandler")
)
var (
ErrGetServiceChainPHInMCEH = errors.New("ServiceChainPH isn't set in MainChainEventHandler")
)
var (
ErrInvalidBridgePair = errors.New("invalid bridge pair")
)
var (
ErrRPCDecode = errors.New("failed to decode mainbridge rpc call message")
)
var (
NoParentPeerErr = errors.New("no parent peer")
)
Functions ¶
func InitializeBridgeAccountKeystore ¶ added in v1.1.0
func InitializeBridgeAccountKeystore(keystorePath string) (*keystore.KeyStore, common.Address, bool, error)
InitializeBridgeAccountKeystore initializes a keystore, imports existing keys, and tries to unlock the bridge account. This returns the 1st account of the wallet, its address, the lock status and the error.
func NewRpcClientP2P ¶ added in v1.1.0
func NewValueTransferRecovery ¶
func NewValueTransferRecovery(config *SCConfig, scBridgeInfo, mcBridgeInfo *BridgeInfo) *valueTransferRecovery
NewValueTransferRecovery creates a new value transfer recovery structure.
Types ¶
type Backend ¶
type Backend interface { bind.ContractBackend }
Backend wraps all methods for local and remote backend
type BridgeAccounts ¶ added in v1.1.0
type BridgeAccounts struct {
// contains filtered or unexported fields
}
BridgeAccounts manages bridge account for main/service chain.
func NewBridgeAccounts ¶ added in v1.1.0
func NewBridgeAccounts(dataDir string) (*BridgeAccounts, error)
NewBridgeAccounts returns bridgeAccounts created by main/service bridge account keys.
func (*BridgeAccounts) GetBridgeOperators ¶ added in v1.1.0
func (ba *BridgeAccounts) GetBridgeOperators() map[string]interface{}
GetBridgeOperators returns the information of bridgeOperator.
type BridgeInfo ¶
type BridgeInfo struct {
// contains filtered or unexported fields
}
func NewBridgeInfo ¶
func NewBridgeInfo(db database.DBManager, addr common.Address, bridge *bridgecontract.Bridge, cpAddr common.Address, cpBridge *bridgecontract.Bridge, account *accountInfo, local, subscribed bool) (*BridgeInfo, error)
func (*BridgeInfo) AddRequestValueTransferEvents ¶
func (bi *BridgeInfo) AddRequestValueTransferEvents(evs []*RequestValueTransferEvent)
AddRequestValueTransferEvents adds events into the pendingRequestEvent.
func (*BridgeInfo) DeregisterToken ¶ added in v1.1.0
func (bi *BridgeInfo) DeregisterToken(token, counterpartToken common.Address) error
func (*BridgeInfo) GetCounterPartToken ¶ added in v1.1.0
func (bi *BridgeInfo) GetCounterPartToken(token common.Address) common.Address
func (*BridgeInfo) GetPendingRequestEvents ¶ added in v1.1.0
func (bi *BridgeInfo) GetPendingRequestEvents(start uint64) []*RequestValueTransferEvent
func (*BridgeInfo) GetReadyRequestValueTransferEvents ¶
func (bi *BridgeInfo) GetReadyRequestValueTransferEvents() []*RequestValueTransferEvent
GetReadyRequestValueTransferEvents returns the processable events with the increasing nonce.
func (*BridgeInfo) RegisterToken ¶ added in v1.1.0
func (bi *BridgeInfo) RegisterToken(token, counterpartToken common.Address) error
func (*BridgeInfo) UpdateHandledNonce ¶
func (bi *BridgeInfo) UpdateHandledNonce(nonce uint64)
UpdateHandledNonce updates the handled nonce with new nonce.
func (*BridgeInfo) UpdateInfo ¶
func (bi *BridgeInfo) UpdateInfo() error
func (*BridgeInfo) UpdateRequestNonce ¶
func (bi *BridgeInfo) UpdateRequestNonce(nonce uint64)
UpdateRequestNonce updates the request nonce of the bridge.
func (*BridgeInfo) UpdateRequestNonceFromCounterpart ¶
func (bi *BridgeInfo) UpdateRequestNonceFromCounterpart(nonce uint64)
UpdateRequestNonceFromCounterpart updates the request nonce from counterpart bridge.
type BridgeJournal ¶
type BridgeJournal struct { LocalAddress common.Address `json:"localAddress"` RemoteAddress common.Address `json:"remoteAddress"` Subscribed bool `json:"subscribed"` }
type BridgeManager ¶
type BridgeManager struct {
// contains filtered or unexported fields
}
BridgeManager manages Bridge SmartContracts for value transfer between service chain and parent chain
func NewBridgeManager ¶
func NewBridgeManager(main *SubBridge) (*BridgeManager, error)
func (*BridgeManager) AddRecovery ¶
func (bm *BridgeManager) AddRecovery(localAddress, remoteAddress common.Address) error
AddRecovery starts value transfer recovery for a given addresses pair.
func (*BridgeManager) DeleteBridgeInfo ¶
func (bm *BridgeManager) DeleteBridgeInfo(addr common.Address) error
DeleteBridgeInfo deletes the bridge info of the specified address.
func (*BridgeManager) DeleteRecovery ¶
func (bm *BridgeManager) DeleteRecovery(localAddress, remoteAddress common.Address) error
DeleteRecovery deletes the journal and stop the value transfer recovery for a given address pair.
func (*BridgeManager) DeployBridge ¶
func (bm *BridgeManager) DeployBridge(backend bind.ContractBackend, local bool) (*bridgecontract.Bridge, common.Address, error)
Deploy Bridge SmartContract on same node or remote node
func (*BridgeManager) GetAllBridge ¶
func (bm *BridgeManager) GetAllBridge() []*BridgeJournal
GetAllBridge returns a slice of journal cache.
func (*BridgeManager) GetBridgeInfo ¶
func (bm *BridgeManager) GetBridgeInfo(addr common.Address) (*BridgeInfo, bool)
GetBridge returns bridge contract of the specified address.
func (*BridgeManager) GetCounterPartBridge ¶ added in v1.1.0
func (bm *BridgeManager) GetCounterPartBridge(bridgeAddr common.Address) *bridgecontract.Bridge
func (*BridgeManager) GetCounterPartBridgeAddr ¶ added in v1.1.0
func (bm *BridgeManager) GetCounterPartBridgeAddr(bridgeAddr common.Address) common.Address
func (*BridgeManager) GetERC20Fee ¶ added in v1.1.0
GetERC20Fee returns the ERC20 transfer fee on the bridge contract.
func (*BridgeManager) GetFeeReceiver ¶ added in v1.1.0
GetFeeReceiver returns the receiver which can get fee of value transfer request.
func (*BridgeManager) GetKLAYFee ¶ added in v1.1.0
GetKLAYFee returns the KLAY transfer fee on the bridge contract.
func (*BridgeManager) IsValidBridgePair ¶ added in v1.1.0
func (bm *BridgeManager) IsValidBridgePair(bridge1, bridge2 common.Address) bool
func (*BridgeManager) LogBridgeStatus ¶
func (bm *BridgeManager) LogBridgeStatus()
LogBridgeStatus logs the bridge contract requested/handled nonce status as an information.
func (*BridgeManager) ResetAllSubscribedEvents ¶
func (bm *BridgeManager) ResetAllSubscribedEvents() error
resetAllSubscribedEvents resets watch logs and recreates a goroutine loop to handle event messages.
func (*BridgeManager) RestoreBridges ¶
func (bm *BridgeManager) RestoreBridges() error
RestoreBridges setups bridge subscription by using the journal cache.
func (*BridgeManager) SetBridgeInfo ¶
func (bm *BridgeManager) SetBridgeInfo(addr common.Address, bridge *bridgecontract.Bridge, cpAddr common.Address, cpBridge *bridgecontract.Bridge, account *accountInfo, local bool, subscribed bool) error
SetBridgeInfo stores the address and bridge pair with local/remote and subscription status.
func (*BridgeManager) SetERC20Fee ¶ added in v1.1.0
func (bm *BridgeManager) SetERC20Fee(bridgeAddr, tokenAddr common.Address, fee *big.Int) (common.Hash, error)
SetERC20Fee set the ERC20 transfer fee on the bridge contract.
func (*BridgeManager) SetFeeReceiver ¶ added in v1.1.0
SetFeeReceiver set the fee receiver which can get the fee of value transfer request.
func (*BridgeManager) SetJournal ¶
func (bm *BridgeManager) SetJournal(localAddress, remoteAddress common.Address) error
SetJournal inserts or updates journal for a given addresses pair.
func (*BridgeManager) SetKLAYFee ¶ added in v1.1.0
SetKLAYFee set the KLAY transfer fee on the bridge contract.
func (*BridgeManager) Stop ¶
func (bm *BridgeManager) Stop()
Stop closes a subscribed event scope of the bridge manager.
func (*BridgeManager) SubscribeEvent ¶
func (bm *BridgeManager) SubscribeEvent(addr common.Address) error
SubscribeEvent registers a subscription of BridgeERC20Received and BridgeTokenWithdrawn
func (*BridgeManager) SubscribeHandleEvent ¶ added in v1.1.0
func (bm *BridgeManager) SubscribeHandleEvent(ch chan<- *HandleValueTransferEvent) event.Subscription
SubscribeHandleEvent registers a subscription of RequestValueTransferEvent.
func (*BridgeManager) SubscribeRequestEvent ¶ added in v1.1.0
func (bm *BridgeManager) SubscribeRequestEvent(ch chan<- *RequestValueTransferEvent) event.Subscription
SubscribeRequestEvent registers a subscription of RequestValueTransferEvent.
func (*BridgeManager) UnsubscribeEvent ¶
func (bm *BridgeManager) UnsubscribeEvent(addr common.Address)
UnsubscribeEvent cancels the contract's watch logs and initializes the status.
type BridgePeer ¶
type BridgePeer interface { // Close signals the broadcast goroutine to terminate. Close() // Info gathers and returns a collection of metadata known about a peer. Info() *BridgePeerInfo Head() (hash common.Hash, td *big.Int) // AddToKnownTxs adds a transaction hash to knownTxsCache for the peer, ensuring that it // will never be propagated to this particular peer. AddToKnownTxs(hash common.Hash) // Send writes an RLP-encoded message with the given code. // data should have been encoded as an RLP list. Send(msgcode uint64, data interface{}) error // Handshake executes the Klaytn protocol handshake, negotiating version number, // network IDs, difficulties, head, genesis blocks, and onChildChain(if the node is on child chain for the peer) // and returning if the peer on the same chain or not and error. Handshake(network uint64, chainID, td *big.Int, head common.Hash) error // ConnType returns the conntype of the peer. ConnType() p2p.ConnType // GetID returns the id of the peer. GetID() string // GetP2PPeerID returns the id of the p2p.Peer. GetP2PPeerID() discover.NodeID // GetChainID returns the chain id of the peer. GetChainID() *big.Int // GetAddr returns the address of the peer. GetAddr() common.Address // SetAddr sets the address of the peer. SetAddr(addr common.Address) // GetVersion returns the version of the peer. GetVersion() int // KnowsTx returns if the peer is known to have the transaction, based on knownTxsCache. KnowsTx(hash common.Hash) bool // GetP2PPeer returns the p2p. GetP2PPeer() *p2p.Peer // GetRW returns the MsgReadWriter of the peer. GetRW() p2p.MsgReadWriter // Handle is the callback invoked to manage the life cycle of a Klaytn Peer. When // this function terminates, the Peer is disconnected. Handle(bn *MainBridge) error SendRequestRPC(data []byte) error SendResponseRPC(data []byte) error // SendServiceChainTxs sends child chain tx data to from child chain to parent chain. SendServiceChainTxs(txs types.Transactions) error // SendServiceChainInfoRequest sends a parentChainInfo request from child chain to parent chain. SendServiceChainInfoRequest(addr *common.Address) error // SendServiceChainInfoResponse sends a parentChainInfo from parent chain to child chain. // parentChainInfo includes nonce of an account and gasPrice in the parent chain. SendServiceChainInfoResponse(pcInfo *parentChainInfo) error // SendServiceChainReceiptRequest sends a receipt request from child chain to parent chain. SendServiceChainReceiptRequest(txHashes []common.Hash) error // SendServiceChainReceiptResponse sends a receipt as a response to request from child chain. SendServiceChainReceiptResponse(receipts []*types.ReceiptForStorage) error }
type BridgePeerInfo ¶
type BridgePeerInfo struct { Version int `json:"version"` // Klaytn Bridge protocol version negotiated Head string `json:"head"` // SHA3 hash of the peer's best owned block }
BridgePeerInfo represents a short summary of the Klaytn Bridge sub-protocol metadata known about a connected peer.
type ChildChainEventHandler ¶
type ChildChainEventHandler struct {
// contains filtered or unexported fields
}
func NewChildChainEventHandler ¶
func NewChildChainEventHandler(bridge *SubBridge, handler *SubBridgeHandler) (*ChildChainEventHandler, error)
func (*ChildChainEventHandler) ConvertServiceChainBlockHashToMainChainTxHash ¶
func (cce *ChildChainEventHandler) ConvertServiceChainBlockHashToMainChainTxHash(scBlockHash common.Hash) common.Hash
ConvertServiceChainBlockHashToMainChainTxHash returns a transaction hash of a transaction which contains ChainHashes, with the key made with given service chain block hash. Index is built when service chain indexing is enabled.
func (*ChildChainEventHandler) HandleChainHeadEvent ¶
func (cce *ChildChainEventHandler) HandleChainHeadEvent(block *types.Block) error
func (*ChildChainEventHandler) HandleLogsEvent ¶
func (cce *ChildChainEventHandler) HandleLogsEvent(logs []*types.Log) error
func (*ChildChainEventHandler) HandleTxEvent ¶
func (cce *ChildChainEventHandler) HandleTxEvent(tx *types.Transaction) error
func (*ChildChainEventHandler) HandleTxsEvent ¶
func (cce *ChildChainEventHandler) HandleTxsEvent(txs []*types.Transaction) error
func (*ChildChainEventHandler) ProcessHandleEvent ¶
func (cce *ChildChainEventHandler) ProcessHandleEvent(ev *HandleValueTransferEvent) error
func (*ChildChainEventHandler) ProcessRequestEvent ¶
func (cce *ChildChainEventHandler) ProcessRequestEvent(ev *RequestValueTransferEvent) error
type HandleValueTransferEvent ¶
type HandleValueTransferEvent struct {
*bridgecontract.BridgeHandleValueTransfer
}
HandleValueTransferEvent from Bridge contract
type LocalBackend ¶
type LocalBackend struct {
// contains filtered or unexported fields
}
TODO-Klaytn currently LocalBackend is only for ServiceChain, especially Bridge SmartContract
func NewLocalBackend ¶
func NewLocalBackend(main *SubBridge) (*LocalBackend, error)
func (*LocalBackend) CallContract ¶
func (*LocalBackend) EstimateGas ¶
func (*LocalBackend) FilterLogs ¶
func (lb *LocalBackend) FilterLogs(ctx context.Context, query klaytn.FilterQuery) ([]types.Log, error)
func (*LocalBackend) PendingCodeAt ¶
func (*LocalBackend) PendingNonceAt ¶
func (*LocalBackend) SendTransaction ¶
func (lb *LocalBackend) SendTransaction(ctx context.Context, tx *types.Transaction) error
func (*LocalBackend) SubscribeFilterLogs ¶
func (lb *LocalBackend) SubscribeFilterLogs(ctx context.Context, query klaytn.FilterQuery, ch chan<- types.Log) (klaytn.Subscription, error)
func (*LocalBackend) SuggestGasPrice ¶
func (*LocalBackend) TransactionReceipt ¶
type MainBridge ¶
type MainBridge struct { APIBackend *MainBridgeAPI // contains filtered or unexported fields }
CN implements the Klaytn consensus node service.
func NewMainBridge ¶
func NewMainBridge(ctx *node.ServiceContext, config *SCConfig) (*MainBridge, error)
New creates a new CN object (including the initialisation of the common CN object)
func (*MainBridge) APIs ¶
func (s *MainBridge) APIs() []rpc.API
APIs returns the collection of RPC services the ethereum package offers. NOTE, some of these services probably need to be moved to somewhere else.
func (*MainBridge) AccountManager ¶
func (s *MainBridge) AccountManager() *accounts.Manager
func (*MainBridge) BridgePeerSet ¶
func (mb *MainBridge) BridgePeerSet() *bridgePeerSet
implement PeerSetManager
func (*MainBridge) ChainDB ¶
func (s *MainBridge) ChainDB() database.DBManager
func (*MainBridge) Components ¶
func (s *MainBridge) Components() []interface{}
func (*MainBridge) EventMux ¶
func (s *MainBridge) EventMux() *event.TypeMux
func (*MainBridge) IsListening ¶
func (s *MainBridge) IsListening() bool
func (*MainBridge) NetVersion ¶
func (s *MainBridge) NetVersion() uint64
func (*MainBridge) NodeInfo ¶
func (pm *MainBridge) NodeInfo() *MainBridgeInfo
NodeInfo retrieves some protocol metadata about the running host node.
func (*MainBridge) ProtocolVersion ¶
func (s *MainBridge) ProtocolVersion() int
func (*MainBridge) Protocols ¶
func (s *MainBridge) Protocols() []p2p.Protocol
Protocols implements node.Service, returning all the currently configured network protocols to start.
func (*MainBridge) SCProtocol ¶
func (s *MainBridge) SCProtocol() SCProtocol
func (*MainBridge) SendRPCResponseData ¶ added in v1.1.0
func (sb *MainBridge) SendRPCResponseData(data []byte) error
func (*MainBridge) SetComponents ¶
func (sc *MainBridge) SetComponents(components []interface{})
func (*MainBridge) Start ¶
func (s *MainBridge) Start(srvr p2p.Server) error
Start implements node.Service, starting all internal goroutines needed by the Klaytn protocol implementation.
func (*MainBridge) Stop ¶
func (s *MainBridge) Stop() error
Stop implements node.Service, terminating all internal goroutines used by the Klaytn protocol.
type MainBridgeAPI ¶
type MainBridgeAPI struct {
// contains filtered or unexported fields
}
MainBridgeAPI Implementation for main-bridge node
func (*MainBridgeAPI) ConvertServiceChainBlockHashToMainChainTxHash ¶
func (mbapi *MainBridgeAPI) ConvertServiceChainBlockHashToMainChainTxHash(scBlockHash common.Hash) common.Hash
func (*MainBridgeAPI) GetChildChainIndexingEnabled ¶
func (mbapi *MainBridgeAPI) GetChildChainIndexingEnabled() bool
type MainBridgeHandler ¶
type MainBridgeHandler struct {
// contains filtered or unexported fields
}
func NewMainBridgeHandler ¶
func NewMainBridgeHandler(scc *SCConfig, main *MainBridge) (*MainBridgeHandler, error)
func (*MainBridgeHandler) HandleSubMsg ¶
func (mbh *MainBridgeHandler) HandleSubMsg(p BridgePeer, msg p2p.Msg) error
type MainBridgeInfo ¶
type MainBridgeInfo struct { Network uint64 `json:"network"` // Klaytn network ID BlockScore *big.Int `json:"blockscore"` // Total blockscore of the host's blockchain Genesis common.Hash `json:"genesis"` // SHA3 hash of the host's genesis block Config *params.ChainConfig `json:"config"` // Chain configuration for the fork rules Head common.Hash `json:"head"` // SHA3 hash of the host's best owned block }
NodeInfo represents a short summary of the Klaytn sub-protocol metadata known about the host peer.
type MainChainEventHandler ¶
type MainChainEventHandler struct {
// contains filtered or unexported fields
}
func NewMainChainEventHandler ¶
func NewMainChainEventHandler(bridge *MainBridge, handler *MainBridgeHandler) (*MainChainEventHandler, error)
func (*MainChainEventHandler) ConvertServiceChainBlockHashToMainChainTxHash ¶
func (mce *MainChainEventHandler) ConvertServiceChainBlockHashToMainChainTxHash(scBlockHash common.Hash) common.Hash
ConvertServiceChainBlockHashToMainChainTxHash returns a transaction hash of a transaction which contains ChainHashes, with the key made with given service chain block hash. Index is built when service chain indexing is enabled.
func (*MainChainEventHandler) GetChildChainIndexingEnabled ¶
func (mce *MainChainEventHandler) GetChildChainIndexingEnabled() bool
GetChildChainIndexingEnabled returns the current child chain indexing configuration.
func (*MainChainEventHandler) GetLastIndexedBlockNumber ¶
func (mce *MainChainEventHandler) GetLastIndexedBlockNumber() uint64
GetLastIndexedBlockNumber returns the last child block number indexed to chain DB.
func (*MainChainEventHandler) HandleChainHeadEvent ¶
func (mce *MainChainEventHandler) HandleChainHeadEvent(block *types.Block) error
func (*MainChainEventHandler) HandleLogsEvent ¶
func (mce *MainChainEventHandler) HandleLogsEvent(logs []*types.Log) error
func (*MainChainEventHandler) HandleTxEvent ¶
func (mce *MainChainEventHandler) HandleTxEvent(tx *types.Transaction) error
func (*MainChainEventHandler) HandleTxsEvent ¶
func (mce *MainChainEventHandler) HandleTxsEvent(txs []*types.Transaction) error
func (*MainChainEventHandler) WriteChildChainTxHash ¶
func (mce *MainChainEventHandler) WriteChildChainTxHash(ccBlockHash common.Hash, ccTxHash common.Hash)
WriteChildChainTxHash stores a transaction hash of a transaction which contains ChainHashes, with the key made with given child chain block hash. Index is built when child chain indexing is enabled.
func (*MainChainEventHandler) WriteLastIndexedBlockNumber ¶
func (mce *MainChainEventHandler) WriteLastIndexedBlockNumber(blockNum uint64)
WriteLastIndexedBlockNumber writes the last child block number indexed to chain DB.
type PeerSetManager ¶
type PeerSetManager interface {
BridgePeerSet() *bridgePeerSet
}
type RemoteBackend ¶
type RemoteBackend struct {
// contains filtered or unexported fields
}
TODO-Klaytn currently RemoteBackend is only for ServiceChain, especially Bridge SmartContract
func NewRemoteBackend ¶
func NewRemoteBackend(sb *SubBridge) (*RemoteBackend, error)
func (*RemoteBackend) CallContract ¶
func (*RemoteBackend) EstimateGas ¶
func (*RemoteBackend) FilterLogs ¶
func (rb *RemoteBackend) FilterLogs(ctx context.Context, query klaytn.FilterQuery) (result []types.Log, err error)
func (*RemoteBackend) PendingCodeAt ¶
func (*RemoteBackend) PendingNonceAt ¶
func (*RemoteBackend) SendTransaction ¶
func (rb *RemoteBackend) SendTransaction(ctx context.Context, tx *types.Transaction) error
func (*RemoteBackend) SubscribeFilterLogs ¶
func (rb *RemoteBackend) SubscribeFilterLogs(ctx context.Context, query klaytn.FilterQuery, ch chan<- types.Log) (klaytn.Subscription, error)
func (*RemoteBackend) SuggestGasPrice ¶
func (*RemoteBackend) TransactionReceipt ¶
func (*RemoteBackend) TransactionReceiptRpcOutput ¶ added in v1.1.0
type RemoteBackendInterface ¶ added in v1.1.0
type RemoteBackendInterface interface { bind.ContractBackend TransactionReceiptRpcOutput(ctx context.Context, txHash common.Hash) (map[string]interface{}, error) }
RemoteBackendInterface wraps methods for remote backend
type RequestValueTransferEvent ¶
type RequestValueTransferEvent struct {
*bridgecontract.BridgeRequestValueTransfer
}
RequestValueTransferEvent from Bridge contract
func (RequestValueTransferEvent) Nonce ¶ added in v1.1.0
func (rEv RequestValueTransferEvent) Nonce() uint64
type SCConfig ¶
type SCConfig struct { // Name sets the instance name of the node. It must not contain the / character and is // used in the devp2p node identifier. The instance name is "kscn". If no // value is specified, the basename of the current executable is used. Name string `toml:"-"` // BridgeService EnabledMainBridge bool EnabledSubBridge bool DataDir string // Protocol options NetworkId uint64 // Network ID to use for selecting peers to connect to // Database options SkipBcVersionCheck bool `toml:"-"` DatabaseHandles int `toml:"-"` LevelDBCacheSize int TrieCacheSize int TrieTimeout time.Duration TrieBlockInterval uint ChildChainIndexing bool // Network MainBridgePort string SubBridgePort string MaxPeer int // ServiceChain ServiceChainConsensus string AnchoringPeriod uint64 SentChainTxsLimit uint64 ParentChainID uint64 VTRecovery bool VTRecoveryInterval uint64 }
func (*SCConfig) MainBridges ¶
StaticNodes returns a list of node enode URLs configured as static nodes.
func (SCConfig) MarshalTOML ¶
MarshalTOML marshals as TOML.
func (*SCConfig) ResolvePath ¶
ResolvePath resolves path in the instance directory.
func (*SCConfig) UnmarshalTOML ¶
UnmarshalTOML unmarshals from TOML.
type SCProtocol ¶
type SCProtocol struct { // Official short name of the protocol used during capability negotiation. Name string // Supported versions of the Klaytn protocol (first is primary). Versions []uint // Number of implemented message corresponding to different protocol versions. Lengths []uint64 }
Protocol defines the protocol of the consensus
type SubBridge ¶
type SubBridge struct { APIBackend *SubBridgeAPI // contains filtered or unexported fields }
SubBridge implements the Klaytn consensus node service.
func NewSubBridge ¶
func NewSubBridge(ctx *node.ServiceContext, config *SCConfig) (*SubBridge, error)
New creates a new CN object (including the initialisation of the common CN object)
func (*SubBridge) APIs ¶
APIs returns the collection of RPC services the ethereum package offers. NOTE, some of these services probably need to be moved to somewhere else.
func (*SubBridge) AccountManager ¶
func (*SubBridge) BridgePeerSet ¶
func (sb *SubBridge) BridgePeerSet() *bridgePeerSet
implement PeerSetManager
func (*SubBridge) Components ¶
func (s *SubBridge) Components() []interface{}
func (*SubBridge) GetAnchoringTx ¶
func (*SubBridge) GetBridgeTxPool ¶
func (sb *SubBridge) GetBridgeTxPool() *bridgepool.BridgeTxPool
func (*SubBridge) IsListening ¶
func (*SubBridge) NetVersion ¶
func (*SubBridge) NodeInfo ¶
func (pm *SubBridge) NodeInfo() *SubBridgeInfo
NodeInfo retrieves some protocol metadata about the running host node.
func (*SubBridge) ProtocolVersion ¶
func (*SubBridge) Protocols ¶
Protocols implements node.Service, returning all the currently configured network protocols to start.
func (*SubBridge) SCProtocol ¶
func (s *SubBridge) SCProtocol() SCProtocol
func (*SubBridge) SendRPCData ¶ added in v1.1.0
func (*SubBridge) SetAnchoringTx ¶
func (*SubBridge) SetComponents ¶
func (sc *SubBridge) SetComponents(components []interface{})
func (*SubBridge) SetRPCConn ¶ added in v1.1.0
type SubBridgeAPI ¶
type SubBridgeAPI struct {
// contains filtered or unexported fields
}
SubBridgeAPI Implementation for sub-bridge node
func (*SubBridgeAPI) AddPeer ¶
func (sbapi *SubBridgeAPI) AddPeer(url string) (bool, error)
AddPeer requests connecting to a remote node, and also maintaining the new connection at all times, even reconnecting if it is lost.
func (*SubBridgeAPI) Anchoring ¶
func (sbapi *SubBridgeAPI) Anchoring(flag bool) bool
func (*SubBridgeAPI) ConvertRequestTxHashToHandleTxHash ¶
func (sbapi *SubBridgeAPI) ConvertRequestTxHashToHandleTxHash(hash common.Hash) common.Hash
func (*SubBridgeAPI) ConvertServiceChainBlockHashToMainChainTxHash ¶
func (sbapi *SubBridgeAPI) ConvertServiceChainBlockHashToMainChainTxHash(scBlockHash common.Hash) common.Hash
func (*SubBridgeAPI) DeployBridge ¶
func (sbapi *SubBridgeAPI) DeployBridge() ([]common.Address, error)
func (*SubBridgeAPI) DeregisterBridge ¶
func (*SubBridgeAPI) DeregisterToken ¶
func (sbapi *SubBridgeAPI) DeregisterToken(cBridgeAddr, pBridgeAddr, cTokenAddr, pTokenAddr common.Address) error
func (*SubBridgeAPI) GetAnchoring ¶
func (sbapi *SubBridgeAPI) GetAnchoring() bool
func (*SubBridgeAPI) GetAnchoringPeriod ¶
func (sbapi *SubBridgeAPI) GetAnchoringPeriod() uint64
func (*SubBridgeAPI) GetBridgeInformation ¶
func (sbapi *SubBridgeAPI) GetBridgeInformation(bridgeAddr common.Address) (map[string]interface{}, error)
func (*SubBridgeAPI) GetERC20Fee ¶ added in v1.1.0
func (*SubBridgeAPI) GetFeeReceiver ¶ added in v1.1.0
func (*SubBridgeAPI) GetKLAYFee ¶ added in v1.1.0
func (*SubBridgeAPI) GetLatestAnchoredBlockNumber ¶
func (sbapi *SubBridgeAPI) GetLatestAnchoredBlockNumber() uint64
func (*SubBridgeAPI) GetMainChainAccountAddr ¶
func (sbapi *SubBridgeAPI) GetMainChainAccountAddr() string
func (*SubBridgeAPI) GetMainChainAccountNonce ¶
func (sbapi *SubBridgeAPI) GetMainChainAccountNonce() uint64
func (*SubBridgeAPI) GetOperators ¶ added in v1.1.0
func (sbapi *SubBridgeAPI) GetOperators() map[string]interface{}
GetOperators returns the information of bridge operators.
func (*SubBridgeAPI) GetParentTransactionReceipt ¶ added in v1.1.0
func (sbapi *SubBridgeAPI) GetParentTransactionReceipt(txHash common.Hash) (map[string]interface{}, error)
func (*SubBridgeAPI) GetReceiptFromParentChain ¶
func (sbapi *SubBridgeAPI) GetReceiptFromParentChain(blockHash common.Hash) *types.Receipt
func (*SubBridgeAPI) GetSentChainTxsLimit ¶
func (sbapi *SubBridgeAPI) GetSentChainTxsLimit() uint64
func (*SubBridgeAPI) GetServiceChainAccountAddr ¶
func (sbapi *SubBridgeAPI) GetServiceChainAccountAddr() string
func (*SubBridgeAPI) GetServiceChainAccountNonce ¶
func (sbapi *SubBridgeAPI) GetServiceChainAccountNonce() uint64
func (*SubBridgeAPI) ListBridge ¶
func (sbapi *SubBridgeAPI) ListBridge() []*BridgeJournal
func (*SubBridgeAPI) LockChildOperator ¶ added in v1.1.0
func (sbapi *SubBridgeAPI) LockChildOperator() error
LockChildOperator can lock the child bridge operator.
func (*SubBridgeAPI) LockParentOperator ¶ added in v1.1.0
func (sbapi *SubBridgeAPI) LockParentOperator() error
LockParentOperator can lock the parent bridge operator.
func (*SubBridgeAPI) NodeInfo ¶
func (sbapi *SubBridgeAPI) NodeInfo() (*p2p.NodeInfo, error)
NodeInfo retrieves all the information we know about the host node at the protocol granularity.
func (*SubBridgeAPI) Peers ¶
func (sbapi *SubBridgeAPI) Peers() ([]*p2p.PeerInfo, error)
Peers retrieves all the information we know about each individual peer at the protocol granularity.
func (*SubBridgeAPI) RegisterBridge ¶
func (*SubBridgeAPI) RegisterToken ¶
func (sbapi *SubBridgeAPI) RegisterToken(cBridgeAddr, pBridgeAddr, cTokenAddr, pTokenAddr common.Address) error
func (*SubBridgeAPI) RemovePeer ¶
func (sbapi *SubBridgeAPI) RemovePeer(url string) (bool, error)
RemovePeer disconnects from a a remote node if the connection exists
func (*SubBridgeAPI) SetERC20Fee ¶ added in v1.1.0
func (*SubBridgeAPI) SetFeeReceiver ¶ added in v1.1.0
func (*SubBridgeAPI) SetKLAYFee ¶ added in v1.1.0
func (*SubBridgeAPI) SubscribeBridge ¶
func (sbapi *SubBridgeAPI) SubscribeBridge(cBridgeAddr, pBridgeAddr common.Address) error
SubscribeBridge enables the given service/main chain bridges to subscribe the events.
func (*SubBridgeAPI) TxPending ¶
func (sbapi *SubBridgeAPI) TxPending() map[common.Address]types.Transactions
func (*SubBridgeAPI) TxPendingCount ¶
func (sbapi *SubBridgeAPI) TxPendingCount() int
func (*SubBridgeAPI) UnlockChildOperator ¶ added in v1.1.0
func (sbapi *SubBridgeAPI) UnlockChildOperator(passphrase string) error
UnlockChildOperator can unlock the child bridge operator.
func (*SubBridgeAPI) UnlockParentOperator ¶ added in v1.1.0
func (sbapi *SubBridgeAPI) UnlockParentOperator(passphrase string) error
UnlockParentOperator can unlock the parent bridge operator.
func (*SubBridgeAPI) UnsubscribeBridge ¶
func (sbapi *SubBridgeAPI) UnsubscribeBridge(cBridgeAddr, pBridgeAddr common.Address) error
UnsubscribeBridge disables the event subscription of the given service/main chain bridges.
type SubBridgeHandler ¶
type SubBridgeHandler struct {
// contains filtered or unexported fields
}
func NewSubBridgeHandler ¶
func NewSubBridgeHandler(scc *SCConfig, main *SubBridge) (*SubBridgeHandler, error)
func (*SubBridgeHandler) GetAnchoringPeriod ¶
func (sbh *SubBridgeHandler) GetAnchoringPeriod() uint64
GetAnchoringPeriod returns the period to make and send a chain transaction to parent chain.
func (*SubBridgeHandler) GetLatestAnchoredBlockNumber ¶
func (sbh *SubBridgeHandler) GetLatestAnchoredBlockNumber() uint64
GetLatestAnchoredBlockNumber returns the latest block number whose data has been anchored to the parent chain.
func (*SubBridgeHandler) GetMainChainAccountAddr ¶
func (sbh *SubBridgeHandler) GetMainChainAccountAddr() *common.Address
GetMainChainAccountAddr returns a pointer of a hex address of an account used for parent chain. If given as a parameter, it will use it. If not given, it will use the address of the public key derived from chainKey.
func (*SubBridgeHandler) GetNextAnchoringBlockNumber ¶
func (sbh *SubBridgeHandler) GetNextAnchoringBlockNumber() uint64
GetNextAnchoringBlockNumber returns the next block number which is needed to be anchored.
func (*SubBridgeHandler) GetReceiptFromParentChain ¶
func (sbh *SubBridgeHandler) GetReceiptFromParentChain(blockHash common.Hash) *types.Receipt
GetReceiptFromParentChain returns a receipt received from parent chain to child chain with corresponding block hash. It assumes that a child chain has only one parent chain.
func (*SubBridgeHandler) GetSentChainTxsLimit ¶
func (sbh *SubBridgeHandler) GetSentChainTxsLimit() uint64
GetSentChainTxsLimit returns the maximum number of stored chain transactions for resending.
func (*SubBridgeHandler) GetServiceChainAccountAddr ¶
func (sbh *SubBridgeHandler) GetServiceChainAccountAddr() *common.Address
GetServiceChainAccountAddr returns a pointer of a hex address of an account used for service chain. If given as a parameter, it will use it. If not given, it will use the address of the public key derived from chainKey.
func (*SubBridgeHandler) HandleMainMsg ¶
func (sbh *SubBridgeHandler) HandleMainMsg(p BridgePeer, msg p2p.Msg) error
func (*SubBridgeHandler) LocalChainHeadEvent ¶
func (sbh *SubBridgeHandler) LocalChainHeadEvent(block *types.Block)
LocalChainHeadEvent deals with servicechain feature to generate/broadcast service chain transactions and request receipts.
func (*SubBridgeHandler) LockMainChainAccount ¶
func (sbh *SubBridgeHandler) LockMainChainAccount()
func (*SubBridgeHandler) RegisterNewPeer ¶
func (sbh *SubBridgeHandler) RegisterNewPeer(p BridgePeer) error
func (*SubBridgeHandler) SyncNonceAndGasPrice ¶
func (scpm *SubBridgeHandler) SyncNonceAndGasPrice()
SyncNonceAndGasPrice requests the nonce of address used for service chain tx to parent chain peers.
func (*SubBridgeHandler) UnLockMainChainAccount ¶
func (sbh *SubBridgeHandler) UnLockMainChainAccount()
func (*SubBridgeHandler) UpdateLastestAnchoredBlockNumber ¶
func (sbh *SubBridgeHandler) UpdateLastestAnchoredBlockNumber(newLastestAnchoredBN uint64)
UpdateLastestAnchoredBlockNumber set the latestAnchoredBlockNumber to the block number of the last anchoring tx which was added into bridge txPool.
func (*SubBridgeHandler) WriteAnchoredBlockNumber ¶
func (sbh *SubBridgeHandler) WriteAnchoredBlockNumber(blockNum uint64)
WriteAnchoredBlockNumber writes the block number whose data has been anchored to the parent chain.
func (*SubBridgeHandler) WriteReceiptFromParentChain ¶
func (sbh *SubBridgeHandler) WriteReceiptFromParentChain(blockHash common.Hash, receipt *types.Receipt)
WriteReceiptFromParentChain writes a receipt received from parent chain to child chain with corresponding block hash. It assumes that a child chain has only one parent chain.
type SubBridgeInfo ¶
type SubBridgeInfo struct { Network uint64 `json:"network"` // Klaytn network ID Genesis common.Hash `json:"genesis"` // SHA3 hash of the host's genesis block Config *params.ChainConfig `json:"config"` // Chain configuration for the fork rules Head common.Hash `json:"head"` // SHA3 hash of the host's best owned block ChainID *big.Int `json:"chainid"` // ChainID }
NodeInfo represents a short summary of the ServiceChain sub-protocol metadata known about the host peer.