object ConfigurationErrors extends ErrorGroup
Linear Supertypes
Ordering
- Alphabetic
- By Inheritance
Inherited
- ConfigurationErrors
- ErrorGroup
- AnyRef
- Any
- Hide All
- Show All
Visibility
- Public
- Protected
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- implicit val errorClass: ErrorClass
- Definition Classes
- ErrorGroup
- val fullClassName: String
- Definition Classes
- ErrorGroup
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- object AheadOfHead extends ErrorCode
- Annotations
- @Explanation("""This warning is logged on startup if the sequencer is configured to only start reading from a block
|that wasn't mined yet by the blockchain (e.g. sequencer is supposed to start reading from block 500, but
|the latest block is only 100). This is likely due to a misconfiguration.
|""") @Resolution("""This issue frequently occurs when the blockchain is reset but the sequencer database configuration is
| not updated or the sequencer database (which persists the last block that was read by the sequencer) is not reset.
| Validate these settings and ensure that the sequencer is still reading from the same blockchain. """)
- object AttemptToChangeImmutableValue extends ErrorCode
- Annotations
- @Explanation("""The sequencer smart contract has detected that a value that is immutable after being set for the first time
| (either the signing tolerance or the topology manager ID) was attempted to be changed.
| Most frequently this error occurs during testing when a Canton Ethereum sequencer process without persistence
| is restarted while pointing to the same smart sequencer contract. An Ethereum sequencer attempts to set the
| topology manager ID during initialization, however, without persistence the topology manager ID is randomly
| regenerated on the restart which leads to the sequencer attempting to change the topology manager ID in the
| sequencer smart contract.
|""") @Resolution("""Deploy a new instance of the sequencer contract (Console command `ethereum.deploy_sequencer_contract`) and configure
| the Ethereum sequencer to use that instance. If the errors occur because an Ethereum sequencer process is
| restarted without persistence, deploy a fresh instance of the sequencer contract and configure persistence
| for restarts.
|""")
- object AuthorizationEnabledMismatch extends ErrorCode
- Annotations
- @Explanation("""This error is logged when the sequencer detects that (according to the configuration)
|the corresponding Sequencer.sol contract should have authorization enabled but doesn't (and vice versa).
|""") @Resolution("""Validate that the sequencer is configured with the correct Sequencer.sol contract and whether it
|should be using authorization or not. """)
- object ManyBlocksBehindHead extends ErrorCode
- Annotations
- @Explanation("""This error is logged when the sequencer is currently processing blocks that are very far behind
|the head of the blockchain of the connected Ethereum network. The Ethereum sequencer won't observe new transactions
|in the blockchain until it has caught up to the head. This may take a long time depending on the blockchain length
|and number of Canton transaction in the blocks. Empirically, we have observed that the Canton sequencer
| processes roughly 500 empty blocks/second. This may vary strongly for non-empty blocks.
| The sequencer logs once it has caught up to within `blocksBehindBlockchainHead` blocks behind the blockchain head.
|""") @Resolution("""Change the configuration of `blockToReadFrom` for the Ethereum sequencer when working
|with an existing (not fresh) Ethereum network. Alternatively, wait until the sequencer has caught up to the head
| of the blockchain. """)
- object NotFreeGasNetwork extends ErrorCode
- Annotations
- @Explanation("""This error is logged when during setup the sequencer detects that it isn't
|connected to a free-gas network. This usually leads to transactions silently being dropped by Ethereum nodes.
|You should only use a non-free-gas network, if you have configured an Ethereum wallet for the sequencer to use
|and have given it gas.
|""") @Resolution("""Change the configuration of the Ethereum network to a free-gas network. """)
- object UnableToQueryVersion extends ErrorCode
- Annotations
- @Explanation("""
|As one of the first steps when initializing a Besu sequencer, Canton attempts to query the version (attribute)
|of the Sequencer.sol contract.
|""") @Resolution("""Usually, the root cause of this is a deployment or configuration problem.
| Ensure that a Sequencer.sol contract is deployed on the configured address on the latest block when attempting
| to initialize the Canton Besu sequencer node. If this error persists, a malicious user may
| be attempting to interfere with the Ethereum network.
|""")
- object Unauthorized extends ErrorCode
- Annotations
- @Explanation("""This error is logged during setup when the sequencer detects that authorization is enabled on
|the Sequencer.sol contract, but the Ethereum account used by the sequencer node is not authorized to interact with the contract.
|""") @Resolution("""Authorize this sequencer node from another already-authorized sequencer node (see console
|command `authorize_ledger_identity`).
|
|""")
- object WrongEVMBytecode extends ErrorCode
- Annotations
- @Explanation("""Canton validates on startup that the configured address on the blockchain contains the EVM bytecode of the
| sequencer smart contract in the latest block. This error indicates that no bytecode or the wrong bytecode was found.
| This is a serious error and means that the sequencer can't sequence events.
|""") @Resolution("""This frequently error occurs when updating the Canton system without updating the sequencer
|contract deployed on the blockchain. Validate that the sequencer contract corresponding to the current Canton release
| is deployed in the latest blockchain blocks on the configured address (see also `ethereum.deploy_sequencer_contract`).
| Another common reason for this error is that the wrong contract address was configured.
|""")