Skip to content

Known issues

These gaps are in the latest preview, and we plan to fix them in a coming release. Follow progress in issue #738.

IssueWhat happensWhat to do
Partitioned bootstrap(true)start() fails with TXSTREAM_BOOTSTRAP_FAILED, because the bootstrap transaction has no signerFund the lanes yourself and use bootstrap(false)
batching(...) on an address laneThe batch fails with No signers found, and no funds moveUse a funding-ref lane (ofFundingRef or from_ref)
Secure referencesNothing resolves withSecureBindingReference values, so a durable stream can’t deliver a secret to a templateKeep secrets in signer and resource registries
awaitResolution on FlowRuntimeIt can’t change a RECOVERY_REQUIRED answer, and ends in TxStreamTimeoutExceptionLook the transaction hash up on chain, or use an engine with a store

These also affect TxStream, which runs on the same engine.

IssueWhat happensWhat to do
engine.recover(...)It never finishes an execution, and on a finished one it moves the state back to RUNNING. A later replay of the same key returns RECOVERY_REQUIREDUse the recovery result and an on-chain lookup as your answer. Don’t call it on a finished execution
spec.execution.validityIt has no effect, so the transaction gets no validity interval from itSet valid_from_slot and valid_to_slot in the transaction’s context
Rollback actions with the default wiringDefaultChainDataSupplier doesn’t declare authoritative absence, so RollbackAction isn’t applied, and a vanished transaction ends RECOVERY_REQUIRED. FlowRuntime can’t supply another adapterWith FlowEngine, opt in with ObservationCapabilities.withAuthoritativeAbsence(...)
FlowExecutionState.ROLLED_BACKA run never produces itDetect a rollback through FlowErrorCategory.ROLLBACK

Follow progress on these in issue #739.

IssueWhat happensWhat to do
CIP67AssetNameUtil.isValidAssetNameIt doesn’t check every padding bit, so a bad prefix such as 000de144 is reported as validCompare the prefix with labelToPrefix(label)
NFTMetadata.create(byte[])Calling getNFT or addNFT on the result throws NullPointerExceptionRead the values through getData()
DefaultWallet.setAccountNoThe wallet keeps the stake address of its previous accountCreate a new wallet for each account, and set the account before asking for the stake address