Technical reference
IP control (keel-ip-control)
On-chain IP rights control, wrapped-721 custody, and the executor that acts on granted rights.
Module boundary
On-chain IP rights control, wrapped-721 custody, and the executor that acts on granted rights.
keel-ip-control
On-chain IP rights control, wrapped-721 custody, and the executor that acts on granted rights.
- Version
- 0.3.0
- Dependencies
- keel-hold, keel-artifacts, keel-kernel
- Source revision
- ace3fed7aff1765c7d2ee9bba4d0232246f86ffb
KeelIPActionExecutor
ABI reference at contracts revision ace3fed7aff1. Tuple fields are listed in declaration order. Overloads remain separate.
KeelIPActionExecutor
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 · 20 entries
| Signature / parameters | Returns | Mutability |
|---|---|---|
ACTION_DOWNLOAD() | uint8 | view |
ACTION_MINT_TO_BACKPACK() | uint8 | view |
ACTION_REMINT() | uint8 | view |
ACTION_VIEW() | uint8 | view |
DEFAULT_ADMIN_ROLE() | bytes32 | view |
DOWNLOAD_RECEIPT_DOMAIN() | bytes32 | view |
control() | address | view |
downloadReceiptId((bytes32,bytes32,address,uint8,uint256,uint256,bytes32) request) | bytes32 | view |
downloadReceipts(bytes32 receiptId) | bool consumed | view |
executeDownload((bytes32,bytes32,address,uint8,uint256,uint256,bytes32) request, bytes signature) | bytes32 receiptId | nonpayable |
executeMintToBackpack((bytes32,bytes32,address,uint8,uint256,uint256,bytes32) request, bytes signature, address hostCollection, uint256 hostTokenId, bytes data) | address backpack, uint256 tokenId | nonpayable |
executeRemint((bytes32,bytes32,address,uint8,uint256,uint256,bytes32) request, bytes signature, bytes data) | uint256 tokenId | nonpayable |
executionConfig(bytes32 policyId, bytes32 resourceObjectId) | (address,address,address,bytes32,bool) config_ | view |
getRoleAdmin(bytes32 role) | bytes32 | view |
grantRole(bytes32 role, address account) | — | nonpayable |
hasRole(bytes32 role, address account) | bool | view |
renounceRole(bytes32 role, address callerConfirmation) | — | nonpayable |
revokeRole(bytes32 role, address account) | — | nonpayable |
setExecutionConfig(bytes32 policyId, bytes32 resourceObjectId, (address,address,address,bytes32,bool) config_) | — | nonpayable |
supportsInterface(bytes4 interfaceId) | bool | view |
Events · 7 entries
| Signature / parameters |
|---|
DownloadAuthorized(bytes32 indexed receiptId, bytes32 indexed policyId, bytes32 indexed resourceObjectId, address account, bytes32 contextHash) |
ExecutionConfigUpdated(bytes32 indexed policyId, bytes32 indexed resourceObjectId, address remintTarget, address backpackRegistry, address backpackImplementation, bytes32 backpackSalt) |
MintedToBackpack(bytes32 indexed policyId, bytes32 indexed resourceObjectId, address indexed account, address hostCollection, uint256 hostTokenId, address backpack, uint256 tokenId, bytes32 contextHash) |
Reminted(bytes32 indexed policyId, bytes32 indexed resourceObjectId, address indexed account, address recipient, uint256 tokenId, bytes32 contextHash) |
RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) |
RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) |
RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) |
Custom errors · 12 entries
| Signature / parameters |
|---|
AccessControlBadConfirmation() |
AccessControlUnauthorizedAccount(address account, bytes32 neededRole) |
ActionDenied() |
BackpackUnavailable() |
DownloadReceiptAlreadyUsed() |
InvalidAction() |
InvalidBackpackOwner() |
InvalidConfig() |
InvalidContract() |
InvalidSignature() |
Unauthorized() |
ZeroAddress() |
| Signature / parameters | Mutability |
|---|---|
constructor(address administrator, address control_) | nonpayable |
KeelIPControl
ABI reference at contracts revision ace3fed7aff1. Tuple fields are listed in declaration order. Overloads remain separate.
KeelIPControl
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 ip-v1 · 0x9f62Aec9E1bd5117864C6A19a7FC8C4e51F39aD0 ↗
- Sepolia showcase · 0x1b982718504aef51423f20856b79c62378cb62eb ↗
Functions · 49 entries
| Signature / parameters | Returns | Mutability |
|---|---|---|
ACCESS_AUTHORIZATION_TYPEHASH() | bytes32 | view |
ACTION_ALL() | uint8 | view |
ACTION_DOWNLOAD() | uint8 | view |
ACTION_MINT_TO_BACKPACK() | uint8 | view |
ACTION_REMINT() | uint8 | view |
ACTION_VIEW() | uint8 | view |
CUSTOM_LICENSE_DOMAIN() | bytes32 | view |
DEFAULT_ADMIN_ROLE() | bytes32 | view |
LICENSE_DOMAIN() | bytes32 | view |
MAX_TOKEN_REQUIREMENTS() | uint256 | view |
POLICY_DOMAIN() | bytes32 | view |
STANDARD_LICENSE_DOMAIN() | bytes32 | view |
allowlist(bytes32 policyId, bytes32 resourceObjectId, address account) | bool | view |
artifactRegistry() | address | view |
authorizationDigest((bytes32,bytes32,address,uint8,uint256,uint256,bytes32) authorization) | bytes32 | view |
authorizationStatus(bytes32 policyId, bytes32 resourceObjectId, address account, uint8 action) | bool allowed, uint8 mode, uint8 actionMask, uint64 grantExpiry, bytes32 effectiveRuleId, bytes32 licenseId, uint64 policyVersion | view |
canonicalStandardLicenseId(uint8 index) | bytes32 | pure |
canonicalStandardLicenseIdentifier(uint8 index) | string | pure |
checkSignedAccess((bytes32,bytes32,address,uint8,uint256,uint256,bytes32) authorization, bytes signature) | bool | view |
consumeSignedAccess((bytes32,bytes32,address,uint8,uint256,uint256,bytes32) authorization, bytes signature) | bytes32 digest | nonpayable |
createPolicy((bytes32,uint64,bytes32,uint8,uint8,uint8,address,bytes32,bool,(uint8,uint8,address,uint256,uint256)[]) config) | bytes32 policyId | nonpayable |
eip712Domain() | bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions | view |
freezePolicy(bytes32 policyId) | — | nonpayable |
getRoleAdmin(bytes32 role) | bytes32 | view |
grant(bytes32 policyId, bytes32 resourceObjectId, address account) | (uint64,uint8,bool) | view |
grantAccess(bytes32 policyId, bytes32 resourceObjectId, address account, uint64 expiresAt, uint8 actionMask) | — | nonpayable |
grantRole(bytes32 role, address account) | — | nonpayable |
hasRole(bytes32 role, address account) | bool | view |
isAuthorized(bytes32 policyId, bytes32 resourceObjectId, address account, uint8 action) | bool | view |
keelHold() | address | view |
license(bytes32 licenseId) | (bytes32,bytes32,uint64,uint64,uint8,string,string,address,bool,bool) | view |
licenseExists(bytes32 licenseId) | bool | view |
nonces(address account) | uint256 nonce | view |
policy(bytes32 policyId) | (bytes32,uint64,address,bytes32,uint64,bool,bool) | view |
policyIdFor(bytes32 objectId, uint64 artifactRevision) | bytes32 | pure |
registerCustomLicense(string identifier, string name, bytes32 contentObjectId) | bytes32 licenseId | nonpayable |
registerStandardLicense(bytes32 licenseId, string identifier, string name, bytes32 contentObjectId) | — | nonpayable |
registerStandardLicenses((bytes32,string,string,bytes32)[] configs) | — | nonpayable |
renounceRole(bytes32 role, address callerConfirmation) | — | nonpayable |
revokeAccess(bytes32 policyId, bytes32 resourceObjectId, address account) | — | nonpayable |
revokeRole(bytes32 role, address account) | — | nonpayable |
rule(bytes32 policyId, bytes32 resourceObjectId) | (uint8,uint8,uint8,address,bytes32,uint64,bool) | view |
ruleIdFor(bytes32 policyId, bytes32 resourceObjectId) | bytes32 | pure |
setAllowlist(bytes32 policyId, bytes32 resourceObjectId, address account, bool allowed) | — | nonpayable |
setRule(bytes32 policyId, bytes32 resourceObjectId, uint64 resourceRevision, uint8 mode, uint8 tokenLogic, uint8 actionMask, address externalRule, bytes32 externalRuleCodeHash, (uint8,uint8,address,uint256,uint256)[] requirements) | — | nonpayable |
standardLicenseId(string identifier) | bytes32 | pure |
supportsInterface(bytes4 interfaceId) | bool | view |
tokenRequirement(bytes32 policyId, bytes32 resourceObjectId, uint256 index) | (uint8,uint8,address,uint256,uint256) | view |
tokenRequirementCount(bytes32 policyId, bytes32 resourceObjectId) | uint256 | view |
Events · 12 entries
| Signature / parameters |
|---|
AllowlistUpdated(bytes32 indexed policyId, bytes32 indexed resourceObjectId, address indexed account, bool allowed) |
CustomLicenseRegistered(bytes32 indexed licenseId, address indexed publisher, string identifier, bytes32 indexed contentObjectId) |
EIP712DomainChanged() |
GrantUpdated(bytes32 indexed policyId, bytes32 indexed resourceObjectId, address indexed account, uint64 expiresAt, uint8 actionMask, bool active) |
PolicyConfigFrozen(bytes32 indexed policyId, uint64 version) |
PolicyCreated(bytes32 indexed policyId, bytes32 indexed objectId, uint64 indexed artifactRevision, address creator, bytes32 licenseId, uint8 mode, uint8 actionMask) |
RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) |
RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) |
RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) |
RuleSet(bytes32 indexed policyId, bytes32 indexed resourceObjectId, uint64 artifactRevision, uint8 mode, uint8 tokenLogic, uint8 actionMask) |
SignedAccessConsumed(bytes32 indexed authorizationDigest, bytes32 indexed policyId, bytes32 indexed resourceObjectId, address account, uint8 action, uint256 nonce, bytes32 contextHash) |
StandardLicenseRegistered(bytes32 indexed licenseId, string identifier, bytes32 indexed contentObjectId) |
Custom errors · 25 entries
| Signature / parameters |
|---|
AccessControlBadConfirmation() |
AccessControlUnauthorizedAccount(address account, bytes32 neededRole) |
AccessDenied() |
AuthorizationExpired() |
ConfigFrozen() |
InvalidAction() |
InvalidAuthorizationNonce() |
InvalidAuthorizationSignature() |
InvalidContract() |
InvalidLicense() |
InvalidObject() |
InvalidRule() |
InvalidShortString() |
InvalidTokenRequirement() |
LicenseAlreadyExists() |
LicenseMissing() |
PolicyAlreadyExists() |
PolicyMissing() |
RuleMissing() |
StringTooLong(string str) |
TokenRequirementMissing() |
TooManyTokenRequirements() |
Unauthorized() |
UnsupportedToken() |
ZeroAddress() |
| Signature / parameters | Mutability |
|---|---|
constructor(address administrator, address artifactRegistry_, address keelHold_) | nonpayable |
KeelIPWrapped721
ABI reference at contracts revision ace3fed7aff1. Tuple fields are listed in declaration order. Overloads remain separate.
KeelIPWrapped721
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 |
|---|---|---|
approve(address to, uint256 tokenId) | — | nonpayable |
balanceOf(address owner) | uint256 | view |
executor() | address | view |
getApproved(uint256 tokenId) | address | view |
isApprovedForAll(address owner, address operator) | bool | view |
mintFromKeel(bytes32 policyId, bytes32 resourceObjectId, address recipient, bytes data) | uint256 tokenId | nonpayable |
name() | string | view |
nextTokenId() | uint256 | view |
ownerOf(uint256 tokenId) | address | view |
provenance(uint256 tokenId) | (bytes32,bytes32,bytes32) | view |
safeTransferFrom(address from, address to, uint256 tokenId) | — | nonpayable |
safeTransferFrom(address from, address to, uint256 tokenId, bytes data) | — | nonpayable |
setApprovalForAll(address operator, bool approved) | — | nonpayable |
supportsInterface(bytes4 interfaceId) | bool | view |
symbol() | string | view |
tokenURI(uint256 tokenId) | string | view |
transferFrom(address from, address to, uint256 tokenId) | — | nonpayable |
Events · 3 entries
| Signature / parameters |
|---|
Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) |
ApprovalForAll(address indexed owner, address indexed operator, bool approved) |
Transfer(address indexed from, address indexed to, uint256 indexed tokenId) |
Custom errors · 12 entries
| Signature / parameters |
|---|
ERC721IncorrectOwner(address sender, uint256 tokenId, address owner) |
ERC721InsufficientApproval(address operator, uint256 tokenId) |
ERC721InvalidApprover(address approver) |
ERC721InvalidOperator(address operator) |
ERC721InvalidOwner(address owner) |
ERC721InvalidReceiver(address receiver) |
ERC721InvalidSender(address sender) |
ERC721NonexistentToken(uint256 tokenId) |
InvalidExecutor() |
StringsInsufficientHexLength(uint256 value, uint256 length) |
Unauthorized() |
ZeroAddress() |
| Signature / parameters | Mutability |
|---|---|
constructor(string name_, string symbol_, address executor_) | 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.
SmartPy contracts
KeelIPControl, KeelIPActionExecutor, KeelIPLicenseRegistry, KeelIPTokenGate, KeelIPWrappedFA2, KeelIPBackpackFA2
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 · 36 entries
| Name | Kind | Source file |
|---|---|---|
create_policy | entrypoint | keel_ip_control.py |
set_rule | entrypoint | keel_ip_control.py |
set_allowlist | entrypoint | keel_ip_control.py |
grant_access | entrypoint | keel_ip_control.py |
revoke_access | entrypoint | keel_ip_control.py |
authorization_status | onchain_view | keel_ip_control.py |
set_execution_config | entrypoint | keel_ip_action_executor.py |
execute_download | entrypoint | keel_ip_action_executor.py |
execute_remint | entrypoint | keel_ip_action_executor.py |
execute_mint_to_backpack | entrypoint | keel_ip_action_executor.py |
download_receipt_id | onchain_view | keel_ip_action_executor.py |
policy_control | onchain_view | keel_ip_action_executor.py |
signature_payload | onchain_view | keel_ip_action_executor.py |
nonce | onchain_view | keel_ip_action_executor.py |
download_receipt | onchain_view | keel_ip_action_executor.py |
execution_config | onchain_view | keel_ip_action_executor.py |
register_standard_license | entrypoint | keel_ip_license.py |
register_standard_licenses | entrypoint | keel_ip_license.py |
register_custom_license | entrypoint | keel_ip_license.py |
get_license | onchain_view | keel_ip_license.py |
standard_license_id | onchain_view | keel_ip_license.py |
canonical_license_identifier | onchain_view | keel_ip_license.py |
canonical_standard_license_id | onchain_view | keel_ip_license.py |
set_controller | entrypoint | keel_ip_token_gate.py |
set_requirements | entrypoint | keel_ip_token_gate.py |
is_authorized | onchain_view | keel_ip_token_gate.py |
evaluate | onchain_view | keel_ip_token_gate.py |
requirement_count | onchain_view | keel_ip_token_gate.py |
token_requirement | onchain_view | keel_ip_token_gate.py |
mint_from_keel | entrypoint | keel_ip_wrapped_fa2.py |
get_balance | onchain_view | keel_ip_wrapped_fa2.py |
token_provenance | onchain_view | keel_ip_wrapped_fa2.py |
mint_to_backpack | entrypoint | keel_ip_wrapped_fa2.py |
backpack_id | onchain_view | keel_ip_wrapped_fa2.py |
get_balance | onchain_view | keel_ip_wrapped_fa2.py |
token_provenance | onchain_view | keel_ip_wrapped_fa2.py |

