Set the Hook State on another account for a given key, value and namespace
Behaviour
- Read a 32 byte Hook State key from the kread_ptr
- Read an arbitrary amount of data from read_ptr(the value)
- Read a 32 byte Namespace from the nread_ptr
- Read a 20 byte Account ID from aread_ptr
- Update the Hook State key on the specified account within the specified namespace with the value
- But only if a Grant on that account allows this.
- If the Hook Account is specified in aread_ptrthen the behaviour is that of state_set but still allows specification of namespace throughnread_ptr
Definition
int64_t state_foreign_set (
    uint32_t read_ptr,
    uint32_t read_len,
    uint32_t kread_ptr,
    uint32_t kread_len,
    uint32_t nread_ptr,
    uint32_t nread_len,
    uint32_t aread_ptr,
    uint32_t aread_len  
);
Example
#define SBUF(str) (uint32_t)(str), sizeof(str)
if (state_foreign_set(SBUF(vault), SBUF(vault_key), SBUF(namespace), SBUF(account)) < 0)
		rollback(SBUF("Error: could not set foreign state!"), 1);
Parameters
| Name | Type | Description | 
|---|---|---|
| read_ptr | uint32_t | Pointer to the data (value) to write into Hook State. If this is 0(null) then delete the data at this key. May be null. | 
| read_len | uint32_t | The length of the data. If this is 0(null) then delete the data at this key. May be null. | 
| kread_ptr | uint32_t | A pointer to the Hook State key at which to store the value. | 
| kread_len | uint32_t | The length of the key. (Should always be 32.) | 
| nread_ptr | uint32_t | A pointer to the namespace which the key belongs to. | 
| nread_len | uint32_t | The length of the namespace. (Should always be 32.) | 
| aread_ptr | uint32_t | A pointer to the Account ID whose state we are trying to modify. | 
| aread_len | uint32_t | The length of the Account ID. (Should always be 20.) | 
Caution
XRPL sets internally a maximum hook data size. At time of writing and for public testnet this is hard coded at 128 bytes, however in future it will be a validator-votable number.
Return Code
| Type | Description | 
|---|---|
| int64_t | The number of bytes written to Hook State (the length of the data.) If negative, an error: OUT_OF_BOUNDS- pointers/lengths specified outside of hook memory. TOO_BIG- kread_lenwas greater than 32, or- read_lenwas greater than the maximum hook data size.TOO_SMALL- kread_lenwas 0.NOT_AUTHORIZED- no appropriate HookGrant was present on the foreign account to allow this state mutation. PREVIOUS_FAILURE_PREVENTS_RETRY- during this execution a previous state_foreign_setfailed with NOT_AUTHORIZED, and consequently no further calls to this API are allowed during this execution. |