xrplwin/xrpl-hookparser

为启用钩子的XRPL/Xahau网络提供的交易钩子解析器。

v2.0.1 2024-03-10 21:43 UTC

This package is auto-updated.

Last update: 2024-09-10 22:41:37 UTC


README

main workflow GitHub license Total Downloads

HookParser

为启用钩子的XRPL/Xahau网络提供的交易钩子解析器。

本包接收单个交易,解析元数据并提供关于HookHash和账户的信息。

需求

安装

composer require xrplwin/xrpl-hookparser

用法

交易解析器

use XRPLWin\XRPLHookParser\TxHookParser;

$tx = (object)[ // Full transaction, containing Account, Destination, meta, ...
    "Account": "rA...",
    "Amount": "100300000",
    "Destination": "rD....",
    "Fee": "10000",
    ...
    "meta" => [ ... ],
    ...
];

$TxHookParser = new TxHookParser($tx);

// All examples below return array:

# List of all hooks in transaction
$hooks = $TxHookParser->hooks();
# List of all accounts that are affected by hooks in transaction
$accounts = $TxHookParser->accounts();
# List of hooks by account*
$accountHooks = $TxHookParser->accountHooks('raddress...');
# List of accounts by hook
$hookAccounts = $TxHookParser->hookAccounts('5EDF6...2DC77');

# List of newly created hooks (new HookDefinition created)
$createdHooks = $TxHookParser->createdHooks();
# List of newly created hooks - detailed
$createdHooksDetails = $TxHookParser->createdHooksDetailed();
# Array key-value parameters contained in created hook
$hookInitialParams = TxHookParser::toParams($createdHooksDetails['5EDF6...2DC77']);
# Check if specific hook is created
$isCreated = $TxHookParser->isHookCreated('5EDF6...2DC77');

# List of destroyed hooks (HookDefinition deleted)
$destroyedHooks = $TxHookParser->destroyedHooks();
# Check if specific hook is destroyed
$isDestroyed = $TxHookParser->isHookDestroyed('5EDF6...2DC77');

# List of uninstalled hooks* (eg. SetHook transaction)
$uninstalledHooks = $TxHookParser->uninstalledHooks();
# List of uninstalled hooks with positions*
$uninstalledHooksPos = $TxHookParser->uninstalledHooksPos();
# List of uninstalled hooks with num uninstalls
$uninstalledHooksStats = $TxHookParser->uninstalledHooksStats();
# List of installed hooks* (eg. SetHook transaction)
$installedHooks = $TxHookParser->installedHooks();
# List of installed hooks with positions*
$installedHooksPos = $TxHookParser->installedHooksPos();
# List of installed hooks with num installs
$installedHooksStats = $TxHookParser->installedHooksStats();
# List of modified hooks*
$modifiedHooks = $TxHookParser->modifiedHooks();
# List of modified hooks with positions*
$modifiedHooksPos = $TxHookParser->modifiedHooksPos();
# List of unmodified hooks*
$unmodifiedHooks = $TxHookParser->unmodifiedHooks();
# List of unmodified hooks with positions*
$unmodifiedHooksPos = $TxHookParser->unmodifiedHooksPos();
# Manual data lookup (lookup any combination of mapped data)
$lookup = $TxHookParser->lookup('raddress...','Hook','installed');


# * Methods that can return multiple same hook hashes, for example if
#   account has same hook on two or more positions installed, it is 
#   important to differentiate hook "instance" on account vs hook 
#   create and destroy actions. List of hooks always returns unique hashes.

HookOn字段

有关参考,请参阅https://richardah.github.io/xrpl-hookon-calculator/

解码HookOnString

use XRPLWin\XRPLHookParser\HookOn;

$triggered = HookOn::decode('0xfffffffffffffffffffffffffffffffffffffff7fffffffffffc1fffffc00a40'); //array
/*
$triggered = array:26 [
  0 => "ttPAYMENT"
  1 => "ttESCROW_CREATE"
  ...
]
*/
//No triggers in this sample:
HookOn::decode('0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfffff');
//Works without prefix:
HookOn::decode('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfffff');
//Works with uppercase and lowercase:
HookOn::decode('FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFF');
HookOn::decode('0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFF');
HookOn::decode('0XFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFF');

编码HookOnString

use XRPLWin\XRPLHookParser\HookOn;

HookOn::encode([HookOn::ttACCOUNT_DELETE]);
//= (string)'0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffff'

HookOn::encode([]);
//= (string)'0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfffff'

HookOn::encode([HookOn::ttACCOUNT_DELETE,HookOn::ttACCOUNT_SET]);
//= (string)'0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffff7'

2.x版本的新功能

2.x版本带来了钩子检测代码的重构,现在可以跟踪位置,这反过来又允许使用以下列出的新方法。对于每个账户安装、修改和卸载的钩子,都可以获取更改发生的位置。修改钩子方法现在不返回重新安装但内容未更改的钩子(标志=0已归一化),这些钩子现在可在unmodifiedHooksunmodifiedHooksPos方法中找到。

  • 添加了uninstalledHooksPos()方法
  • 添加了installedHooksPos()方法
  • 修改了modifiedHooks()方法
  • 添加了modifiedHooksPos()方法
  • 添加了unmodifiedHooks()方法
  • 添加了unmodifiedHooksPos()方法

运行测试

在"tests"目录中运行所有测试。

composer test

./vendor/bin/phpunit --testdox

参考

https://docs.xahau.network/