Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Chain ¶
type Chain interface { // Ready checks whether the relay is active (i.e. genesis has been performed). // Note that if the relay is used by querying the current and previous epoch // difficulty, at least one retarget needs to be provided after genesis; // otherwise the prevEpochDifficulty will be uninitialized and zero. Ready() (bool, error) // IsAuthorized checks whether the given address has been authorized to // submit a retarget directly to LightRelay. This function should be used // when retargetting via LightRelayMaintainerProxy is disabled. IsAuthorized(address chain.Address) (bool, error) // IsAuthorizedForRefund checks whether the given address has been // authorized to submit a retarget via LightRelayMaintainerProxy. This // function should be used when retargetting via LightRelayMaintainerProxy // is not disabled. IsAuthorizedForRefund(address chain.Address) (bool, error) // Signing returns the signing associated with the chain. Signing() chain.Signing // Retarget adds a new epoch to the relay by providing a proof of the // difficulty before and after the retarget. The cost of calling this // function is not refunded to the caller. Retarget(headers []*bitcoin.BlockHeader) error // RetargetWithRefund adds a new epoch to the relay by providing a proof of // the difficulty before and after the retarget. The cost of calling this // function is refunded to the caller. RetargetWithRefund(headers []*bitcoin.BlockHeader) error // CurrentEpoch returns the number of the latest difficulty epoch which is // proven to the relay. If the genesis epoch's number is set correctly, and // retargets along the way have been legitimate, this equals the height of // the block starting the most recent epoch, divided by 2016. CurrentEpoch() (uint64, error) // ProofLength returns the number of blocks required for each side of a // retarget proof. ProofLength() (uint64, error) // GetCurrentAndPrevEpochDifficulty returns the difficulties of the current // and previous Bitcoin epochs. GetCurrentAndPrevEpochDifficulty() (*big.Int, *big.Int, error) }
Chain is an interface that provides the ability to communicate with the Bitcoin difficulty on-chain contract.
type Config ¶
type Config struct { // Enabled indicates whether the Bitcoin difficulty maintainer // should be started. Enabled bool // DisableProxy indicates whether the Bitcoin difficulty // maintainer proxy should be disabled. By default, the Bitcoin difficulty // maintainer submits the epoch headers to the relay via the proxy to be // reimbursed for the transaction. If this option is set to true, the epoch // headers will be submitted directly to the relay. DisableProxy bool // IdleBackOffTime is a wait time which should be applied when there are no // more Bitcoin epochs to be proven because the difficulty maintainer is // up-to-date with the Bitcoin blockchain or there are not enough blocks yet // to prove the new epoch. IdleBackOffTime time.Duration // RestartBackOffTime is a restart backoff which should be applied when the Bitcoin // difficulty maintainer is restarted. It helps to avoid being flooded with // error logs in case of a permanent error in the Bitcoin difficulty // maintainer. RestartBackOffTime time.Duration }
Config contains maintainer configuration.
Click to show internal directories.
Click to hide internal directories.