fix up NFToken xpop hook

This commit is contained in:
Richard Holland
2023-07-14 09:26:18 +00:00
parent e9fc4ced98
commit 17df89c075
3 changed files with 19 additions and 21 deletions

View File

@@ -519,16 +519,11 @@ int out_len = 0;\
#define _07_03_ENCODE_SIGNING_PUBKEY(buf_out, pkey )\
ENCODE_SIGNING_PUBKEY(buf_out, pkey );
#define ENCODE_SIGNING_PUBKEY_NULL_SIZE 35
#define ENCODE_SIGNING_PUBKEY_NULL_SIZE 2
#define ENCODE_SIGNING_PUBKEY_NULL(buf_out )\
{\
buf_out[0] = 0x73U;\
buf_out[1] = 0x21U;\
*(uint64_t*)(buf_out+2) = 0;\
*(uint64_t*)(buf_out+10) = 0;\
*(uint64_t*)(buf_out+18) = 0;\
*(uint64_t*)(buf_out+25) = 0;\
buf_out += ENCODE_SIGNING_PUBKEY_NULL_SIZE;\
*buf_out++ = 0x73U;\
*buf_out++ = 0x00U;\
}
#define _07_03_ENCODE_SIGNING_PUBKEY_NULL(buf_out )\

View File

@@ -164,6 +164,6 @@ mint:
-Oz
hook-cleaner mint.wasm
guard_checker mint.wasm
xpop:
wasmcc xpop.c -o xpop.wasm -Oz -Wl,--allow-undefined -I../
hook-cleaner xpop.wasm
nftoken:
wasmcc nftoken.c -o nftoken.wasm -Oz -Wl,--allow-undefined -I../
hook-cleaner nftoken.wasm

View File

@@ -174,14 +174,15 @@ int64_t hook(uint32_t r)
{
uint8_t* buf_out = txn_buf;
uint32_t cls = (uint32_t)ledger_seq();
_01_02_ENCODE_TT (buf_out, ttURITOKEN_MINT ); /* uint16 | size 3 */
_02_02_ENCODE_FLAGS (buf_out, tfCANONICAL ); /* uint32 | size 5 */
_02_04_ENCODE_SEQUENCE (buf_out, 0 ); /* uint32 | size 5 */
_02_26_ENCODE_FLS (buf_out, cls + 1 ); /* uint32 | size 6 */
_02_27_ENCODE_LLS (buf_out, cls + 5 ); /* uint32 | size 6 */
_01_02_ENCODE_TT (buf_out, ttURITOKEN_MINT );
_02_02_ENCODE_FLAGS (buf_out, tfCANONICAL );
_02_04_ENCODE_SEQUENCE (buf_out, 0 );
_02_26_ENCODE_FLS (buf_out, cls + 1 );
_02_27_ENCODE_LLS (buf_out, cls + 5 );
_06_01_ENCODE_DROPS_AMOUNT (buf_out, 0 );
uint8_t* fee_ptr = buf_out;
_06_08_ENCODE_DROPS_FEE (buf_out, 0 ); /* amount | size 9 */
_07_03_ENCODE_SIGNING_PUBKEY_NULL (buf_out ); /* pk | size 35 */
_06_08_ENCODE_DROPS_FEE (buf_out, 0 );
_07_03_ENCODE_SIGNING_PUBKEY_NULL (buf_out );
// URI
*buf_out++ = 0x75U;
@@ -189,9 +190,9 @@ int64_t hook(uint32_t r)
*(((uint64_t*)buf_out) + i) = *(((uint64_t*)uri) + i);
buf_out += urilen;
_08_01_ENCODE_ACCOUNT_SRC (buf_out, hook_acc ); /* account | size 22 */
_08_03_ENCODE_ACCOUNT_DST (buf_out, otxn_acc ); /* account | size 22 */
int64_t edlen = etxn_details((uint32_t)buf_out, 512); /* emitdet | size 1?? */
_08_01_ENCODE_ACCOUNT_SRC (buf_out, hook_acc );
_08_03_ENCODE_ACCOUNT_DST (buf_out, otxn_acc );
int64_t edlen = etxn_details((uint32_t)buf_out, 512);
trace_num(SBUF("edlen"), edlen);
buf_out += edlen;
txn_len = buf_out - txn_buf;
@@ -200,6 +201,8 @@ int64_t hook(uint32_t r)
}
trace(SBUF("emit txn"), txn_buf, txn_len, 1);
uint8_t etxid[32];
if (emit(SBUF(etxid), txn_buf, txn_len) < 0)
NOPE("Emission failed");