Discussions

Ask a Question

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

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

Improved error messaging when hooks don't conform to the engine contract?

I'm hoping to start a discussion orbiting around the error messages that the XRPL engine is returning when someone new (like me) is fumbling through all of this. I understand that _g is required from the documentation's perspective. However the error message we get back from the engine isn't helpful for seeing this is the problem when you don't include it. For instance if we don't include _g as an import you get a "Malformed transaction" error from the XRPL engine. Not super helpful for someone "down in the weeds" trying to learn. Interestingly if you include _g but don't use it in your hook you get a "temBAD_SIGNATURE" error from the engine. Again, not super helpful because it leads you down the path of "debugging" how you signed the transaction. I wonder if it could be a more clear about the reason for the "Bad Signature"? Any thoughts?

Xumm KYC

Is there a way to add the KYC status to the ripple account? Is there a way to call an outside api though a hook? I've got a hook that can only accept a specific issuer/token but I also want this to be pinned to the KYC that is done through Xumm.. Any thoughts?

Can I use AssemblyScript?

Hi team, Do you see any issue with using https://www.assemblyscript.org/ ? I tried to compile your simple `accept` hook with AssemblyScript but when I submit the transaction with ripple-lib I get an error message: ``` data: { resultCode: 'temMALFORMED', resultMessage: 'Malformed transaction.', engine_result: 'temMALFORMED', engine_result_code: -299, engine_result_message: 'Malformed transaction.', tx_blob: '12001622800000002400441FC5201B004565333010000000000000000068400000000000000C7321031707DDB63EB8B5447371F1EA5B83009475AE0981388BB7352403393F82230E1B74473045022100E4F443EE595F93F4F604117D215A21CE5AC81974364155AA45BE6286E3A3978002203487A9EA95C297CD82281089DBC0B09A87384C99866B2BC1EDAD00AA1BE1698D7BA50061736D0100000001130360017E017E60037F7F7E017E60027F7F017F021D0207636F6E74726F6C066163636570740001057574696C73025F67000203030200000503010000071803046362616B000204686F6F6B0003066D656D6F727902000A1B02040042000B140041004100420010001A4101410110011A42000B002610736F757263654D617070696E6755524C142E2F6F7074696D697A65642E7761736D2E6D61708114A9E75BEA9E40D24E411DC9E5B1E209C5F015BA10', tx_json: { Account: 'rGV4MXcjPTkdhVZLFrddVQPHz1WdXkvK6g', CreateCode: '0061736D0100000001130360017E017E60037F7F7E017E60027F7F017F021D0207636F6E74726F6C066163636570740001057574696C73025F67000203030200000503010000071803046362616B000204686F6F6B0003066D656D6F727902000A1B02040042000B140041004100420010001A4101410110011A42000B002610736F757263654D617070696E6755524C142E2F6F7074696D697A65642E7761736D2E6D6170', Fee: '12', Flags: 2147483648, HookOn: '0000000000000000', LastLedgerSequence: 4547891, Sequence: 4464581, SigningPubKey: '031707DDB63EB8B5447371F1EA5B83009475AE0981388BB7352403393F82230E1B', TransactionType: 'SetHook', TxnSignature: '3045022100E4F443EE595F93F4F604117D215A21CE5AC81974364155AA45BE6286E3A3978002203487A9EA95C297CD82281089DBC0B09A87384C99866B2BC1EDAD00AA1BE1698D', hash: 'BA20CC222EE7A87D8C969B732041C3E92FDA7D6E66B9550294C65B3ADB7EAA29' } } ``` Also in the rippled logs are showing: ``` 2021-Sep-27 10:55:29.827798400 UTC OpenLedger:TRC HookSet[rGV4MXcjPTkdhVZLFrddVQPHz1WdXkvK6g-BA20CC222EE7A87D8C969B732041C3E92FDA7D6E66B9550294C65B3ADB7EAA29]: Malformed transaction. Hook attempted to specify import module other than 'env' ``` Thank you

[accept Hook] - Cannot read property 'toBytesSink' of undefined

Hi, I am learning about Hooks and I wanted to try first with something simple and the "accept" hook. I am using your code in accept.js and when I run it with "node accept.js ssXUB..." I get the following error: TypeError: Cannot read property 'toBytesSink' of undefined at BinarySerializer.writeFieldAndValue (/Users/fuzio/Documents/Ripple/Github/webassembly-typescript/node_modules/ripple-binary-codec/dist/serdes/binary-serializer.js:125:32) at /Users/fuzio/Documents/Ripple/Github/webassembly-typescript/node_modules/ripple-binary-codec/dist/types/st-object.js:130:19 at Array.forEach (<anonymous>) at Function.STObject.from (/Users/fuzio/Documents/Ripple/Github/webassembly-typescript/node_modules/ripple-binary-codec/dist/types/st-object.js:128:16) at serializeObject (/Users/fuzio/Documents/Ripple/Github/webassembly-typescript/node_modules/ripple-binary-codec/dist/binary.js:59:32) at signingData (/Users/fuzio/Documents/Ripple/Github/webassembly-typescript/node_modules/ripple-binary-codec/dist/binary.js:75:12) at Object.encodeForSigning (/Users/fuzio/Documents/Ripple/Github/webassembly-typescript/node_modules/ripple-binary-codec/dist/index.js:37:12) at computeSignature (/Users/fuzio/Documents/Ripple/Github/webassembly-typescript/node_modules/ripple-lib/dist/npm/transaction/sign.js:36:41) at signWithKeypair (/Users/fuzio/Documents/Ripple/Github/webassembly-typescript/node_modules/ripple-lib/dist/npm/transaction/sign.js:59:42) at RippleAPI.sign (/Users/fuzio/Documents/Ripple/Github/webassembly-typescript/node_modules/ripple-lib/dist/npm/transaction/sign.js:163:16) Have you already faced this issue? Thank you

Removing Hooks

Whats the plan here? Are hooks overwritten?

How to store private information on a Hook?

I'm still new to Hooks and C in general but how can a Hooks developer store personal and confidential information on a Hook (e.x: Full Name, Age, ID) without it being publicly available. I'm planning to code a Hook that only accepts KYC/AML enabled accounts' transactions to avoid unwanted transactions to the receiving account. Any centralized or decentralized structures are accepted. Thank you.