Permission

Methods

  • set_permission
  • create_set_permission_signature
  • set_all_permissions

set_permission

Sets the permission for a specific function call.

Each policy is represented as a mapping from an IP account address to a signer address to a recipient address to a function selector to a permission level. The permission level can be 0 (ABSTAIN), 1 (ALLOW), or 2 (DENY).

By default, all policies are set to 0 (ABSTAIN), which means that the permission is not set. The owner of IP Account by default has all permission.

Method
set_permission

Parameters:

  • ip_id: The IP ID that grants the permission for signer.
  • signer: The address that can call to on behalf of the ipAccount.
  • to: The address that can be called by the signer (currently only modules can be to)
  • permission: The new permission level.
  • func: [Optional] The function selector string of to that can be called by the signer on behalf of the ipAccount. By default, it allows all functions.
  • tx_options: [Optional] Transaction options dictionary.
set_permission_response = story_client.Permission.set_permission(
  ip_id="0x01",
  signer="0x1234567890123456789012345678901234567890",
  to="0x2345678901234567890123456789012345678901",
  permission=1,  # ALLOW
  func="0x12345678"  # Optional function selector
)

create_set_permission_signature

Specific permission overrides wildcard permission with signature.

Method
create_set_permission_signature

Parameters:

  • ip_id: The IP ID that grants the permission for signer.
  • signer: The address that can call to on behalf of the ipAccount.
  • to: The address that can be called by the signer (currently only modules can be to)
  • permission: The new permission level.
  • func: [Optional] The function selector string of to that can be called by the signer on behalf of the ipAccount. By default, it allows all functions.
  • deadline: [Optional] The deadline for the signature in milliseconds, default is 1000ms.
  • tx_options: [Optional] Transaction options dictionary.
response = story_client.PermissionClient.create_set_permission_signature(
  ip_id="0x01",
  signer="0x1234567890123456789012345678901234567890",
  to="0x2345678901234567890123456789012345678901",
  permission=1,  # ALLOW
  func="0x12345678",  # Optional function selector
  deadline=1000  # Optional deadline in milliseconds
)

set_all_permissions

Sets permission to a signer for all functions across all modules.

Method
set_all_permissions

Parameters:

  • ip_id: The IP ID that grants the permission for signer.
  • signer: The address of the signer receiving the permissions.
  • permission: The new permission.
  • tx_options: [Optional] Transaction options dictionary.
response = story_client.PermissionClient.set_all_permissions(
  ip_id="0x01",
  signer="0x1234567890123456789012345678901234567890",
  permission=1  # ALLOW
)