Discussions
SetHook with field HookHash "xrpl-hooks" issue?
Hi.
below seems to be an issue about "hookDefinition sharing" feature as documented here:
https://xrpl-hooks.readme.io/docs/sethook-transaction#install-operation
https://xrpl-hooks.readme.io/docs/reference-counting
So
To make all easier, I wasm compiled the tiny "starter.c" with no parameters.
1) using HookBuilder (or my environment) I defined a "SetHook" transaction to account (A) as below
txn hash: "9BA7315CDE3D50A0DDC88EB4A3E41A0E2FA886A8B11061AA16D4D531E183E4FF"
...omiss....
Fee: "10000000",
Flags: 0,
Hooks: [
{
Hook: {
CreateCode: "0061736D01000000011C0460057F7F7F7F7F017E60037F7F7E017E60027F7F017F60017F017E02230303656E76057472616365000003656E7606616363657074000103656E76025F670002030201030503010002062B077F0141C088040B7F004180080B7F0041BA080B7F004180080B7F0041C088040B7F0041000B7F0041010B07080104686F6F6B00030AC4800001C0800001017F230041106B220124002001200036020C419C08411D418008411C410010001A410022002000420010011A41012200200010021A200141106A240042000B0B4001004180080B39537461727465722E633A2043616C6C65642C205061706572696E6F0022537461727465722E633A2043616C6C65642C205061706572696E6F22",
Flags: 1,
HookApiVersion: 0,
HookNamespace: "A0800997EB2FED3F3B33D86DE629F548449450ECF40530106224132D616061BE",
HookOn: "3FF5BE"
}
}
]
...omiss....
2) using only my environment I defined a second "SetHook" transaction to account (B) as below,
just by referring the same hook by its hash
txn hash: N.D.
...omiss....
Fee: "10000000",
Flags: 0,
Hooks: [
{
Hook: {
HookHash: "A8DDA006B1DA5008CE6FC7C8E6C9A93F08CEA24DA1F2AD8ED03274E3FFB93D59",
Flags: 1,
HookApiVersion: 0,
HookNamespace: "A0800997EB2FED3F3B33D86DE629F548449450ECF40530106224132D616061BE",
HookOn: "3FF5BE"
}
}
]
...omiss....
I simply am using something like this js call
const txnResponse = await xclient.submitAndWait(txnBlob);
and "npm update" to all the latest packages including:
"dependencies": {
"xrpl-hooks": "^2.2.1"
}
I don't know much more about, but I suspect the problem is in the client-side "xrpl-hooks".
It seems it simply doesn't handle a transaction with field "HookHash" and without "CreateCode"
Posted by f1f47a23 11 months ago
hook namespace bug
Hi
below might be the same bug on namespaces seen yesterday
I set 2 peggy.c hooks with 2 different namespaces.
when I tried to reset both namespaces I had the results below
/////////////////////////////////////////////////////
step 1) RESET namespace 2F8A0C01F668BCA73EC51C0D8DA77D419582347055E99D5D04FCF73B47BEBCED
Result Step 1)
Account info
{
Account: "rnxdRkDeLxVKeRyxsUSpNJBqoDQXUHff7m",
Balance: "15064638417",
Flags: 0,
HookNamespaces: [
"0000000000000000000000000000000000000000000000000000000000000000",
"64254733CF035704661D093F45812F0E22020B7034EBD6565DAA3834420B382A"
]
HookStateCount: 1,
LedgerEntryType: "AccountRoot",
OwnerCount: 2,
PreviousTxnID: "4C78C3A343D0F2DD9FC4D6DF240321863B6AA7619463C1C2F1035E8B004CA81F",
PreviousTxnLgrSeq: 5500013,
Sequence: 4132842,
index: "14AEF56D0C89E1DE65F4B84983800C1DAE70310691037986D0BBE145796D70E1"
}
---------------------
step 2) RESET namespace 64254733CF035704661D093F45812F0E22020B7034EBD6565DAA3834420B382A
Result Step 2)
Account info
{
Account: "rnxdRkDeLxVKeRyxsUSpNJBqoDQXUHff7m",
Balance: "15054638417",
Flags: 0,
HookNamespaces: [
"0000000000000000000000000000000000000000000000000000000000000000",
"0000000000000000000000000000000000000000000000000000000000000000"
]
HookStateCount: 0,
LedgerEntryType: "AccountRoot",
OwnerCount: 2,
PreviousTxnID: "CF4D0DD1A4F1CED0E56918BE9BFED41AD767C8692E764B41D42B13C0EBD6F1A4",
PreviousTxnLgrSeq: 5500189,
Sequence: 4132843,
index: "14AEF56D0C89E1DE65F4B84983800C1DAE70310691037986D0BBE145796D70E1"
}
Posted by f1f47a23 about 1 year ago
RESET hook namespace data
Hi while testing peggy example I tried to RESET the hook namespace data
https://xrpl-hooks.readme.io/docs/sethook-transaction#namespace-reset
Is there a quick way to do this task inside the online hook ide tool filled with examples I am testing currently
or maybe do I have to create a small project outside here that sends the right "SetHook" txn using Richard's xrpl-hooks lib
below is the code I wrote online but it doesn't work, probably for "xrpl-accountlib" not supporting hooks.
thank you.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// reset-nshook.js
// RESET HOOK NAMESPACE
// from modified trust-user.js
import lib from "https://esm.sh/xrpl-accountlib?bundle";
import { XrplClient } from "https://esm.sh/xrpl-client?bundle";
import keypairs from "https://esm.sh/ripple-keypairs?bundle";
/**
* @input {Account.secret} hook_secret Hook Account
*/
const { hook_secret} = process.env
const hook_keypair = lib.derive.familySeed(hook_secret);
const hook_account = keypairs.deriveAddress(hook_keypair.keypair.publicKey);
const client = new XrplClient('wss://hooks-testnet-v2.xrpl-labs.com');
const main = async () => {
const { account_data } = await client.send({ command: 'account_info', 'account': hook_account });
if (!account_data) {
console.log('Account not found.');
client.close();
return;
}
const tx = {
TransactionType: "SetHook",
Account: hook_account,
Fee: "2000000",
Sequence: account_data.Sequence,
//Flags: 262144,
Hooks:
[
{
Hook: {
// absent CreateCode: fs.readFileSync('accept.wasm').toString('hex').toUpperCase(),
// absent HookOn: '0000000000000000',
HookNamespace: "2F8A0C01F668BCA73EC51C0D8DA77D419582347055E99D5D04FCF73B47BEBCED",
// absent HookApiVersion: 0,
Flags:2 // hsfOVERRIDE: 1, hsfNSDELETE: 2,
}
}
]
};
//!!!! lib.sign() doesn't handle "SetHook"
const { signedTransaction } = lib.sign(tx, hook_keypair);
const submit = await client.send({ command: 'submit', 'tx_blob': signedTransaction });
console.log(submit);
console.log('Shutting down...');
client.close();
};
main();
Posted by f1f47a23 about 1 year ago
Tx Sucess in Callback?
Hi,
I'm trying to find out whether an emitted tx was successful or not(from within the cbak function).
Since I have neither access to "engine_result" nor "meta" data in the cbak function, the emitted Tx might not be sufficiently financed (tecPATH_PARTIAL) and the cbak function would still be called with "0".
Is there a way to make sure the emitted tx went through properly?
Best greets Chris
Posted by Chris about 1 year ago
On hook state management.
Using the firewall example, i noticed that removing the hook, its hook-state remains still there, instead of being cleared along with the hook.
I did some testing by deleting and setting again hooks even with different namespaces.
This seems strange to me.
In this case, how can the hook-state memory be permanently deleted if the hook namespace and all stored keys are lost?
maybe the "reset" and "iteration" hook state functions of the key-values map are missing?
Posted by f1f47a23 about 1 year ago
trace(...) doesn't log the value string
While running blacklist.c (hooks-v2) I noticed that the trace() function
shows the message but not the value.
for example at line 43
trace(SBUF("Memo: "), memo_ptr, memo_len, 1);
it logs only "Memo :"
I tried several cases in others places but had the same result.
As a workaround, I suppose, it could work by concat message+value
Posted by f1f47a23 about 1 year ago
Hook state
Hi,
is there a way to query the ledger for a hook state from a specific account? Not from another hook (state foreign), but via an RPC/Websocket connection?
Mike
Posted by Mike Ivan about 1 year ago
Emitted Tx fees
Hi Richard.
Emitted Tx's pay ETH-like fees on both V1 and V2. Was there a change I didn't notice?
I'm currently working with V1 since I can't get anything to work since the last changes to V2.
At first I thought there was something wrong in my code, but it's the same in your "Doubler" example.
EmitGeneration is 2 here, shouldn't it be 1? Is that the only reason for the high fees?
```JSON
{
Account:"rptaBzoWgDqCY3U9Vxc5k2eoNUdg1N1RHi",
Amount:"2000000",
Destination:"rnqi5WL2U7L2egV5x1o1ZzxeSpkB3VrxMg",
DestinationTag:0,
EmitDetails:{
EmitBurden:"0000000000000001",
EmitCallback:"rptaBzoWgDqCY3U9Vxc5k2eoNUdg1N1RHi",
EmitGeneration:2,
EmitNonce:"8E4C1547EE4B206C26F46929530B4B14F0B0623C7D15D1A84F20F895714C3BA8",
EmitParentTxnID:"D1A1517F8CA009D6614A73B94948F9167E3E124F991020021EAD0DBAC57FA2FD"
}
Fee:"81468750",
FirstLedgerSequence:11502201,
Flags:2147483648,
LastLedgerSequence:11502205,
Sequence:0,
SigningPubKey:"000000000000000000000000000000000000000000000000000000000000000000",
SourceTag:0,
TransactionType:"Payment",
date:707141532,
hash:"6E4783C632353E2DF23AA554B21A5C783844B4C863BC071CC7CC35A419F9E67E",
inLedger:11502201,
ledger_index:11502201
}
{
Account:"rnqi5WL2U7L2egV5x1o1ZzxeSpkB3VrxMg",
Amount:"1000000",
Destination:"rptaBzoWgDqCY3U9Vxc5k2eoNUdg1N1RHi",
Fee:"12",
Flags:0,
LastLedgerSequence:11502218,
Sequence:10128668,
SigningPubKey:"02175515AEF59E81E1E54BB8BC84EAEDD06EB376EF3AEE9D07A647CDDCBF0B5FC1",
TransactionType:"Payment",
TxnSignature:"304402205F533418F68DA85BEA010C47B4407B1E56572DF977040BD3A5125C63A44BEF2802204BA85F2CDF79327B092275C98D647712AB5B794FEBE4DFEA8AC01FED442009EC",
date:707141531,
hash:"D1A1517F8CA009D6614A73B94948F9167E3E124F991020021EAD0DBAC57FA2FD",
inLedger:11502200,
ledger_index:11502200
}
```
Posted by Chris over 1 year ago
install on v2 fails 2
txhash: 06A1985A7466547795C0049ABA17DE9CC2CC298E742AC2E542C7F0F0CDEE692D
this is my first attempt on v2, I need help for this case
I get a generic temMALFORMED response using accept.wasm hex string
{"Hooks":[{"Hook":{"CreateCode":"0061736D01000000011F0560057F7F7F7F7F017E60037F7F7E017E60027F7F017F60000060017E017E02230303656E76057472616365000003656E7606616363657074000103656E76025F6700020304030304040405017001010105030100020621057F0141B088040B7F0041A6080B7F004180080B7F0041B088040B7F004180080B076608066D656D6F72790200115F5F7761736D5F63616C6C5F63746F727300030A5F5F646174615F656E6403010D5F5F676C6F62616C5F6261736503020B5F5F686561705F6261736503030C5F5F64736F5F68616E646C650304046362616B000404686F6F6B00050ABB010302000B2702037F017E238080808000210141102102200120026B2103420021042003200037030820040F0B8D0103037F017E087F238080808000210141102102200120026B2103200324808080800042002104410121054100210641808880800021074114210841948880800021094112210A20032000370308200720082009200A20061080808080001A2006200620041081808080001A200520051082808080001A4110210B2003200B6A210C200C24808080800020040F0B0B2D01004180080B26224163636570742E633A2043616C6C65642E22004163636570742E633A2043616C6C65642E00003A046E616D6501330600057472616365010661636365707402025F6703115F5F7761736D5F63616C6C5F63746F727304046362616B0504686F6F6B00750970726F647563657273010C70726F6365737365642D62790105636C616E6755392E302E30202868747470733A2F2F6769746875622E636F6D2F6C6C766D2F6C6C766D2D70726F6A656374203033393964356139363832623363656637316336353333373365333838393063363363346333363529","HookApiVersion":0,"HookNamespace":"C125D0397B605657BC89340953F5F2897A7E00A9B7D3474FA53720C8CCBBB3E3","HookOn":"0000000000000000"}}],"TransactionType":"SetHook","Account":"rLnT5MeahSnbR8j7dRXa39iD3Wpd9b8E2F","Sequence":1797094,"LastLedgerSequence":2091835,"Fee":"10000000","Flags":0}
Posted by alor over 1 year ago
V2 Trace and Fee
Hallo,
I migrated my code from v1 to v2 and am having some issues.
1) I have to pay at least 2 XRP for all transactions (not just the setHook tx) to be validated. And even then it takes between 5 and 10 ledgers. Is that normal?
2) I can't "trace" variables. Example:
Works: TRACEVAR(5); - logs: "5 5"
Doesn't work: uint8_t x = 5; TRACEVAR(x); - logs: "x "
I've tried with and without the TRACEVAR macro, with self-set variables and variables retrieved from state, but it doesn't work. But the variables are set because the code works fine. Did something change when logging into v2 that I missed?
Appreciate any help!
Greets Chris
Posted by Chris over 1 year ago