Ask a Question

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"

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" }

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();

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

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?

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

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

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 } ```

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}

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