Discussions

Ask a Question
ANSWERED

Welcome to XRPL Hooks documentation

If you have (technical) questions, please post them here. Try to help each other, and we (the XRPL Labs team, working on Hooks) will actively monitor discussions as well. If something is unclear (how to, why, design decisions, how would X work, etc.), please let us know as well: we may be able to update the documentation, examples, etc. based on your input.

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
ANSWERED

Can someone help with a simple EVM smart contract to Hook example?

Its difficult for me to understand the hooks because I have so little experience in C++. I think it would be great if we did a cross EVM / Hook example? Also, I noticed there ins't a lot of tutorials. Its just straight documentation. When I started with solidity and EVM, the medium articles really helped me. I could write one for more exposure maybe showing the example of a very simple smart contract? Also, I wanted to say thank you to those who already put in work. The C files really include good notes and it has helped me a lot in the beginning. Docker was a breeze. Now I'm just trying to understand state/slot and STO. YOU GUYS ROCK!!!
ANSWERED

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
ANSWERED

Progress on Hooks?

Hey, I was just wondering if the Hooks amendments is being delayed or everything is going as planned? When do you guys think the Hooks Amendment is being published on the mainnet, any guesstimate? Thank you.
ANSWERED

No RPC endpoint?

I noticed there is no RPC endpoint on the hooknet. Is this your subtle way of telling me to migrate to web sockets in all my api calls to the XRPL? :) I realize I could open up one on my own, I just had some tests running that use RPC so I was curious.

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.
ANSWERED

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}