Technical reference
On-chain HTML builder (keel-harness)
Assembles viewer HTML from chunk-stored resources entirely on chain.
Module boundary
Assembles viewer HTML from chunk-stored resources entirely on chain.
keel-harness
Assembles viewer HTML from chunk-stored resources entirely on chain.
- Version
- 0.3.0
- Dependencies
- keel-hold, keel-kernel, keel-artifacts
- Source revision
- ace3fed7aff1765c7d2ee9bba4d0232246f86ffb
KeelHarnessBuilder
ABI reference at contracts revision ace3fed7aff1. Tuple fields are listed in declaration order. Overloads remain separate.
KeelHarnessBuilder
view / pure calls read state; nonpayable / payable calls require a transaction. Source ABI is a versioned interface reference; deployed addresses can be older versions. Compare the target’s implementation and ABI before a write.
- Solidity source ↗
- Download ABI
- Sepolia showcase · 0x7ac86609d6781e896c541210fdd8d1d919c5584a ↗
- Sepolia studio-runtime-20261007 · 0x63a172ae55a6c7413a2f80be9de9cd9cb106973d ↗
Functions · 42 entries
| Signature / parameters | Returns | Mutability |
|---|---|---|
INLINE_PROTECTION_SHELL_ID() | bytes32 | view |
MAX_OBJECT_DEPTH() | uint256 | view |
MAX_RECONSTRUCTED_BYTES() | uint256 | view |
PROTECTION_SHELL_ID() | bytes32 | view |
SHELL_ID_DOMAIN() | bytes32 | view |
assembleWithContext(bytes32 objectId, bytes32 expectedDigest, bytes injection) | bytes | view |
creatorManagedShell(bytes32 shellId) | bool managed | view |
creatorShellImmutable(bytes32 shellId) | bool immutable_ | view |
freezeShell(bytes32 shellId) | uint64 revision | nonpayable |
harnessDataURI(bytes32 objectId, bytes32 expectedDigest) | string | view |
harnessDataURIWithContext(bytes32 objectId, bytes32 expectedDigest, bytes contextJSON) | string | view |
harnessHTML(bytes32 objectId, bytes32 expectedDigest) | bytes output | view |
harnessHTMLWithContext(bytes32 objectId, bytes32 expectedDigest, bytes contextJSON) | bytes | view |
harnessInlineURI(bytes32 objectId, bytes32 expectedDigest) | string | view |
harnessInlineURIWithContext(bytes32 objectId, bytes32 expectedDigest, bytes contextJSON) | string | view |
harnessSourceValid(bytes32 objectId, bytes32 expectedDigest) | bool | view |
itemBytes(bytes32 objectId, bytes32 expectedDigest) | bytes output | view |
keelHold() | address | view |
keeper() | address | view |
percentEscape(bytes input) | bytes output | pure |
preEncodedTokenJSONMiddle(bytes32 objectId, bytes32 expectedDigest) | bytes | view |
preEncodedTokenURI(bytes32 objectId, bytes32 expectedDigest, bytes rawPrefix, bytes rawSuffix) | string | view |
preEncodedTokenURIFragmentValid(bytes32 objectId, bytes32 expectedDigest) | bool | view |
predictShellId(address creator, bytes32 salt) | bytes32 | pure |
preparedTokenURI(bytes32 objectId, bytes32 expectedDigest, bytes encodedPrefix, bytes encodedSuffix) | string | view |
preparedTokenURIFragmentValid(bytes32 objectId, bytes32 expectedDigest) | bool | view |
reconstructHTML(bytes32 objectId, bytes32 expectedDigest) | bytes output | view |
registerShell(bytes32 salt, bytes32 prefix, bytes32 suffix, uint8 payloadMode, bytes32 metadataObjectId) | bytes32 shellId | nonpayable |
registeredPreEncodedTokenURI(bytes32 shellId, bytes32 objectId, bytes32 expectedDigest, bytes rawPrefix, bytes rawSuffix) | string | view |
requireRegistration(bytes32 objectId) | bool compact | view |
setKeeper(address next) | — | nonpayable |
setShell(bytes32 shellId, bytes32 prefix, bytes32 suffix, uint8 payloadMode) | — | nonpayable |
setShell(bytes32 shellId, bytes32 prefix, bytes32 suffix) | — | nonpayable |
setShell(bytes32 shellId, bytes32 prefix, bytes32 suffix, uint8 payloadMode, bytes32 metadataObjectId) | — | nonpayable |
shellCreator(bytes32 shellId) | address creator | view |
shellDataURI(bytes32 shellId, bytes32 artifactObjectId, bytes32 artifactDigest, bytes contextJSON) | string | view |
shellDataURI(bytes32 artifactObjectId, bytes32 artifactDigest, bytes contextJSON) | string | view |
shellLatestRevision(bytes32 shellId) | uint64 revision | view |
shellMetadataObjectId(bytes32 shellId) | bytes32 metadataObjectId | view |
shellRevision(bytes32 shellId, uint64 revision) | bytes32 prefixObjectId, bytes32 suffixObjectId, uint8 payloadMode, bool exists, bytes32 metadataObjectId | view |
shells(bytes32 shellId) | bytes32 prefixObjectId, bytes32 suffixObjectId, uint8 payloadMode, bool exists | view |
updateShell(bytes32 shellId, bytes32 prefix, bytes32 suffix, uint8 payloadMode, bytes32 metadataObjectId) | uint64 revision | nonpayable |
Events · 5 entries
| Signature / parameters |
|---|
KeeperChanged(address from, address to) |
ShellChanged(bytes32 indexed shellId, bytes32 prefix, bytes32 suffix, uint8 payloadMode, address by) |
ShellFrozen(bytes32 indexed shellId, uint64 indexed revision, address indexed creator) |
ShellRegistered(bytes32 indexed shellId, address indexed creator, bytes32 indexed metadataObjectId, bytes32 metadataDigest, bytes32 prefix, bytes32 suffix, uint8 payloadMode) |
ShellRevisionPublished(bytes32 indexed shellId, uint64 indexed revision, address indexed creator, bytes32 metadataObjectId, bytes32 metadataDigest, bytes32 prefix, bytes32 suffix, uint8 payloadMode) |
Custom errors · 32 entries
| Signature / parameters |
|---|
CreatorShellImmutable(bytes32 shellId) |
DigestMismatch() |
FragmentDigestMismatch() |
FragmentDigestMismatch() |
FragmentLengthMismatch() |
FragmentLengthMismatch() |
FragmentTooDeep() |
FragmentTooDeep() |
InvalidAlignment() |
InvalidAlignment() |
InvalidBase64() |
InvalidFragment() |
InvalidFragment() |
InvalidHTMLMediaType() |
InvalidObject() |
InvalidShellId() |
InvalidShellMetadata() |
InvalidShellRevision(bytes32 shellId, uint64 revision) |
InvalidStore() |
LengthMismatch() |
NoContextSlot() |
NoShell(bytes32 shellId) |
NotKeeper() |
NotShellCreator(bytes32 shellId) |
ObjectTooDeep() |
ObjectTooLarge() |
ShellAlreadyExists(bytes32 shellId) |
ShellGraphMismatch(bytes32 shellId, bytes32 objectId) |
ShellNotCreatorManaged(bytes32 shellId) |
StringsInsufficientHexLength(uint256 value, uint256 length) |
UnsupportedCompression() |
UnsupportedShellAssembly(bytes32 shellId, uint8 payloadMode) |
| Signature / parameters | Mutability |
|---|---|
constructor(address keelHold_) | nonpayable |
KeelPercentTokenURIBuilder
ABI reference at contracts revision ace3fed7aff1. Tuple fields are listed in declaration order. Overloads remain separate.
KeelPercentTokenURIBuilder
view / pure calls read state; nonpayable / payable calls require a transaction. Source ABI is a versioned interface reference; deployed addresses can be older versions. Compare the target’s implementation and ABI before a write.
| Signature / parameters | Returns | Mutability |
|---|---|---|
keelHold() | address | view |
preparedTokenURI(bytes32 objectId, bytes32 expectedDigest, bytes encodedPrefix, bytes encodedSuffix) | string | view |
preparedTokenURIEnvelopeValid(bytes32 objectId, bytes32 expectedDigest, bytes encodedPrefix, bytes encodedSuffix) | bool | view |
preparedTokenURIFragmentValid(bytes32 objectId, bytes32 expectedDigest) | bool | view |
requireRegistration(bytes32 objectId) | bool compact | view |
Custom errors · 6 entries
| Signature / parameters |
|---|
FragmentDigestMismatch() |
FragmentLengthMismatch() |
FragmentTooDeep() |
InvalidEnvelope() |
InvalidFragment() |
InvalidStore() |
| Signature / parameters | Mutability |
|---|---|
constructor(address keelHold_) | nonpayable |
KeelObjectURIBuilder
ABI reference at contracts revision ace3fed7aff1. Tuple fields are listed in declaration order. Overloads remain separate.
KeelObjectURIBuilder
view / pure calls read state; nonpayable / payable calls require a transaction. Source ABI is a versioned interface reference; deployed addresses can be older versions. Compare the target’s implementation and ABI before a write.
| Signature / parameters | Returns | Mutability |
|---|---|---|
MAX_OBJECT_BYTES() | uint256 | view |
keelHold() | address | view |
objectBytes(bytes32 objectId, bytes32 expectedDigest) | bytes payload | view |
objectDataURI(bytes32 objectId, bytes32 expectedDigest) | string | view |
objectURIValid(bytes32 objectId, bytes32 expectedDigest) | bool | view |
requireRegistration(bytes32 objectId) | bool compact | view |
Custom errors · 4 entries
| Signature / parameters |
|---|
DigestMismatch() |
InvalidObject() |
InvalidStore() |
ObjectTooLarge(uint256 byteLength, uint256 maximum) |
| Signature / parameters | Mutability |
|---|---|
constructor(address keelHold_) | nonpayable |
KeelRawTokenURIBuilder
ABI reference at contracts revision ace3fed7aff1. Tuple fields are listed in declaration order. Overloads remain separate.
KeelRawTokenURIBuilder
view / pure calls read state; nonpayable / payable calls require a transaction. Source ABI is a versioned interface reference; deployed addresses can be older versions. Compare the target’s implementation and ABI before a write.
Functions · 19 entries
| Signature / parameters | Returns | Mutability |
|---|---|---|
contextURI(bytes contextJSON) | bytes | pure |
harnessInlineURIWithContext(bytes32 objectId, bytes32 digest, bytes contextJSON) | string | view |
keelHold() | address | view |
percentEscape(bytes value) | bytes | pure |
preEncodedTokenJSONMiddle(bytes32 objectId, bytes32 digest) | bytes | view |
preEncodedTokenURI(bytes32 objectId, bytes32 digest, bytes rawPrefix, bytes rawSuffix) | string | view |
preEncodedTokenURIFragmentValid(bytes32 objectId, bytes32 digest) | bool | view |
preEncodedTokenURIFragments(bytes32[] objectIds, bytes32[] digests, bytes rawPrefix, bytes rawSuffix) | string | view |
preEncodedTokenURIFragmentsWithImage(bytes32[] objectIds, bytes32[] digests, bytes32 imageObjectId, bytes32 imageDigest, bytes rawPrefix, bytes rawSuffix) | string | view |
preEncodedTokenURIWithImage(bytes32 objectId, bytes32 digest, bytes32 imageObjectId, bytes rawPrefix, bytes rawSuffix) | string | view |
preparedImageURI(bytes32 objectId, bytes32 digest) | string | view |
preparedTokenURI(bytes32 objectId, bytes32 expectedDigest, bytes encodedPrefix, bytes encodedSuffix) | string | view |
preparedTokenURIEnvelopeValid(bytes32 objectId, bytes32 expectedDigest, bytes encodedPrefix, bytes encodedSuffix) | bool | view |
preparedTokenURIFragmentValid(bytes32 objectId, bytes32 expectedDigest) | bool | view |
rawTokenURI() | bool | pure |
requireRegistration(bytes32 objectId) | bool compact | view |
validatePreparedImageURIFragmentSegment(bytes32 objectId, bytes32 expectedDigest, uint64 offset, uint32 maxBytes, uint8 paddingState) | uint64 nextOffset, uint8 nextState, bool complete | view |
validatePreparedTokenURIFragment(bytes32 objectId, bytes32 expectedDigest) | bool | view |
validatePreparedTokenURIFragmentSegment(bytes32 objectId, bytes32 expectedDigest, uint64 offset, uint32 maxBytes, uint8 percentState) | uint64 nextOffset, uint8 nextState, bool complete | view |
Custom errors · 7 entries
| Signature / parameters |
|---|
FragmentDigestMismatch() |
FragmentLengthMismatch() |
FragmentTooDeep() |
InvalidEnvelope() |
InvalidFragment() |
InvalidStore() |
StringsInsufficientHexLength(uint256 value, uint256 length) |
| Signature / parameters | Mutability |
|---|---|
constructor(address keelHold_) | nonpayable |
KeelRawInlineShellRegistry
ABI reference at contracts revision ace3fed7aff1. Tuple fields are listed in declaration order. Overloads remain separate.
KeelRawInlineShellRegistry
view / pure calls read state; nonpayable / payable calls require a transaction. Source ABI is a versioned interface reference; deployed addresses can be older versions. Compare the target’s implementation and ABI before a write.
| Signature / parameters | Returns | Mutability |
|---|---|---|
MAX_METADATA_BYTES() | uint256 | view |
RAW_INLINE_PROTECTION_SHELL_ID() | bytes32 | view |
RAW_PERCENT_GRAPH() | uint8 | view |
appendShellRevision(bytes32 shellId, uint64 expectedRevision, bytes32 prefix, bytes32 suffix, bytes32 metadataObjectId) | uint64 revision | nonpayable |
creatorManagedShell(bytes32) | bool | pure |
freezeShell(bytes32 shellId, uint64 expectedRevision) | uint64 revision | nonpayable |
frozen() | bool | view |
keelHold() | address | view |
keeper() | address | view |
platformAuthority() | address | view |
rawBuilder() | address | view |
rawFragmentValidationRegistry() | address | view |
shellLatestRevision(bytes32 shellId) | uint64 | view |
shellRevision(bytes32 shellId, uint64 revision) | bytes32 prefix, bytes32 suffix, uint8 payloadMode, bool exists, bytes32 metadataObjectId | view |
Events · 2 entries
| Signature / parameters |
|---|
CanonicalShellFrozen(uint64 indexed revision, bytes32 indexed shellId, address by) |
ShellRevisionPublished(uint64 indexed revision, bytes32 prefix, bytes32 suffix, bytes32 indexed shellId, bytes32 metadataDigest, bytes32 metadataObjectId, address by) |
Custom errors · 6 entries
| Signature / parameters |
|---|
InvalidBinding() |
InvalidMetadata() |
InvalidRevision() |
InvalidShell() |
NotKeeper() |
ShellFrozen() |
| Signature / parameters | Mutability |
|---|---|
constructor(address hold_, address validationRegistry_, address platformAuthority_) | nonpayable |
Native Tezos implementation
SmartPy entrypoints and views come from native source, not an EVM ABI translation. This source inventory does not assert deployment or EVM behavioral parity.
Entrypoints and views
For exact parameter and storage types follow the SmartPy source; an originated target’s /entrypoints RPC is the authoritative deployed parameter schema.
Native interface · 25 entries
| Name | Kind | Source file |
|---|---|---|
predict_shell_id | onchain_view | keel_harness_builder.py |
set_shell | entrypoint | keel_harness_builder.py |
register_shell | entrypoint | keel_harness_builder.py |
update_shell | entrypoint | keel_harness_builder.py |
freeze_shell | entrypoint | keel_harness_builder.py |
shells | onchain_view | keel_harness_builder.py |
shell_revision | onchain_view | keel_harness_builder.py |
shell_latest_revision | onchain_view | keel_harness_builder.py |
shell_data_uri | onchain_view | keel_harness_builder.py |
set_protector | entrypoint | keel_harness_builder.py |
set_keeper | entrypoint | keel_harness_builder.py |
identity | onchain_view | keel_harness_builder.py |
harness_source_valid | onchain_view | keel_harness_builder.py |
item_bytes | onchain_view | keel_harness_builder.py |
reconstruct_html | onchain_view | keel_harness_builder.py |
verified_html | onchain_view | keel_harness_builder.py |
harness_html | onchain_view | keel_harness_builder.py |
harness_data_uri | onchain_view | keel_harness_builder.py |
harness_html_with_context | onchain_view | keel_harness_builder.py |
harness_data_uri_with_context | onchain_view | keel_harness_builder.py |
harness_inline_uri_with_context | onchain_view | keel_harness_builder.py |
base64_encode | onchain_view | keel_harness_builder.py |
percent_escape | onchain_view | keel_harness_builder.py |
protected_harness_data_uri | onchain_view | keel_harness_builder.py |
build_id | onchain_view | keel_harness_builder.py |

