aflpp
AFL++はAFLをベースに、より高いファジング性能と高度な機能を備えたフォークです。C/C++プロジェクトのマルチコアファジングに活用できます。
description の原文を見る
> AFL++ is a fork of AFL with better fuzzing performance and advanced features. Use for multi-core fuzzing of C/C++ projects.
SKILL.md 本文
AFL++
AFL++ は元々の AFL ファザーの改良版で、安定性を保ちながら優れたファジング性能と高度な機能を提供します。libFuzzer と比べた大きな利点として、AFL++ は複数コアでのファジングキャンペーン実行に安定した対応があり、大規模なファジング活動に最適です。
使い分け
| ファザー | 最適な用途 | 複雑度 |
|---|---|---|
| AFL++ | マルチコアファジング、多様なミューテーション、成熟したプロジェクト | 中 |
| libFuzzer | 迅速なセットアップ、シングルスレッド、シンプルなハーネス | 低 |
| LibAFL | カスタムファザー、リサーチ、高度な用途 | 高 |
以下の場合に AFL++ を選択してください:
- スループット最大化のためにマルチコアファジングが必要な場合
- プロジェクトが Clang または GCC でコンパイル可能な場合
- 多様なミューテーション戦略と成熟したツール環境が必要な場合
- libFuzzer がプラトーに達し、さらなるカバレッジが必要な場合
- 並列実行の恩恵を受ける本番コードベースをファジングしている場合
クイックスタート
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
// ファザーが提供するデータでコードを呼び出す
check_buf((char*)data, size);
return 0;
}
コンパイルと実行:
# 最初に AFL++ ラッパースクリプトをセットアップする (インストール参照)
./afl++ docker afl-clang-fast++ -DNO_MAIN=1 -O2 -fsanitize=fuzzer harness.cc main.cc -o fuzz
mkdir seeds && echo "aaaa" > seeds/minimal_seed
./afl++ docker afl-fuzz -i seeds -o out -- ./fuzz
インストール
AFL++ は LLVM、Python、Rust など多数の依存関係があります。AFL++ でのファジングには、最近の Debian または Ubuntu ディストリビューションの使用をお勧めします。
| 方法 | 用途 | サポートコンパイラ |
|---|---|---|
| Ubuntu/Debian リポジトリ | 最近の Ubuntu、基本機能のみ | Ubuntu 23.10: Clang 14 & GCC 13<br>Debian 12: Clang 14 & GCC 12 |
| Docker (Docker Hub) | 特定の AFL++ バージョン、Apple Silicon サポート | 4.35c 時点: Clang 19 & GCC 11 |
| Docker (ソースから) | 未リリース機能のテスト、パッチ適用 | Dockerfile で設定可能 |
| ソースから | Docker 回避、特定パッチが必要 | LLVM_CONFIG 環境変数で調整可能 |
Ubuntu/Debian
afl++ をインストールする前に、apt-cache show afl++ でパッケージの clang バージョン依存関係を確認し、対応する lld バージョン (例:lld-17) をインストールしてください。
apt install afl++ lld-17
Docker (Docker Hub)
docker pull aflplusplus/aflplusplus:stable
Docker (ソースから)
git clone --depth 1 --branch stable https://github.com/AFLplusplus/AFLplusplus
cd AFLplusplus
docker build -t aflplusplus .
ソースから
Ubuntu バージョン要件と依存関係については Dockerfile を参照してください。LLVM_CONFIG を設定して Clang バージョンを指定してください (例:llvm-config-18)。
ラッパースクリプトのセットアップ
ホストまたは Docker で AFL++ を実行するラッパースクリプトを作成します:
cat <<'EOF' > ./afl++
#!/bin/sh
AFL_VERSION="${AFL_VERSION:-"stable"}"
case "$1" in
host)
shift
bash -c "$*"
;;
docker)
shift
/usr/bin/env docker run -ti \
--privileged \
-v ./:/src \
--rm \
--name afl_fuzzing \
"aflplusplus/aflplusplus:$AFL_VERSION" \
bash -c "cd /src && bash -c \"$*\""
;;
*)
echo "Usage: $0 {host|docker}"
exit 1
;;
esac
EOF
chmod +x ./afl++
セキュリティ警告: afl-system-config と afl-persistent-config スクリプトは root 権限が必要で、OS のセキュリティ機能を無効化します。本番システムや開発環境でファジングを行わないでください。代わりに専用 VM を使用してください。
システム設定
再起動後に毎回実行すると、最大 15% の実行秒数増加が得られます:
./afl++ <host/docker> afl-system-config
最大のパフォーマンスを得るため、カーネルのセキュリティ緩和を無効化します (grub ブートローダーが必要で、Docker ではサポートされません):
./afl++ host afl-persistent-config
update-grub
reboot
./afl++ <host/docker> afl-system-config
cat /proc/cmdline で検証します。出力に mitigations=off が含まれる必要があります。
ハーネスの作成
ハーネス構造
AFL++ は libFuzzer スタイルのハーネスをサポートします:
#include <stdint.h>
#include <stddef.h>
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
// 1. 必要に応じて入力サイズを検証する
if (size < MIN_SIZE || size > MAX_SIZE) return 0;
// 2. ファジデータを使用してターゲット関数を呼び出す
target_function(data, size);
// 3. 0 を返す (0 以外は将来の使用のために予約)
return 0;
}
ハーネスルール
| すべき | すべきでない |
|---|---|
| 実行間でグローバル状態をリセット | 前回の実行からの状態に依存 |
| エッジケースを正常に処理 | 無効な入力で終了 |
| ハーネスを決定論的に保つ | 乱数生成器を使用 |
| 割り当てられたメモリを解放 | メモリリークを作成 |
| 入力サイズを検証 | 無限の入力を処理 |
関連も参照: 詳細なハーネス作成技術、複雑な入力の処理パターン、高度な戦略については、fuzz-harness-writing テクニックスキルを参照してください。
コンパイル
AFL++ は異なるトレードオフを持つ複数のコンパイルモードを提供します。
コンパイルモード判定ツリー
コンパイルモードを選択します:
- LTO モード (
afl-clang-lto):最高のパフォーマンスとインストルメンテーション。最初に試してください。 - LLVM モード (
afl-clang-fast):LTO がコンパイル失敗時にフォールバック。 - GCC プラグイン (
afl-gcc-fast):GCC が必要なプロジェクト向け。
基本的なコンパイル (LLVM モード)
./afl++ <host/docker> afl-clang-fast++ -DNO_MAIN=1 -O2 -fsanitize=fuzzer harness.cc main.cc -o fuzz
GCC コンパイル
./afl++ <host/docker> afl-g++-fast -DNO_MAIN=1 -O2 -fsanitize=fuzzer harness.cc main.cc -o fuzz
重要: GCC バージョンは AFL++ GCC プラグインのコンパイルに使用されたバージョンと一致する必要があります。
Sanitizer 付きコンパイル
./afl++ <host/docker> AFL_USE_ASAN=1 afl-clang-fast++ -DNO_MAIN=1 -O2 -fsanitize=fuzzer harness.cc main.cc -o fuzz
関連も参照: 詳細な sanitizer 設定、一般的な問題、高度なフラグについては、address-sanitizer と undefined-behavior-sanitizer テクニックスキルを参照してください。
ビルドフラグ
-g は必須ではありません。AFL++ コンパイラによってデフォルトで追加されます。
| フラグ | 目的 |
|---|---|
-DNO_MAIN=1 | libFuzzer ハーネス使用時に main 関数をスキップ |
-O2 | 本番最適化レベル (ファジングに推奨) |
-fsanitize=fuzzer | libFuzzer 互換モードを有効にしてリンク時にファザーランタイムを追加 |
-fsanitize=fuzzer-no-link | ファザーランタイムをリンクせずにインストルメント (静的ライブラリとオブジェクトファイル向け) |
コーパス管理
初期コーパスの作成
AFL++ には最低限 1 つの空でないシードファイルが必要です:
mkdir seeds
echo "aaaa" > seeds/minimal_seed
実際のプロジェクトでは、代表的な入力を収集します:
- ファジング対象形式の例ファイルをダウンロード
- プロジェクトのテストスイートからテストケースを抽出
- ファイル形式の最小限の有効な入力を使用
コーパス最小化
キャンペーン後、ユニークなカバレッジのみを保つようコーパスを最小化します:
./afl++ <host/docker> afl-cmin -i out/default/queue -o minimized_corpus -- ./fuzz
関連も参照: コーパス作成戦略、辞書、シード選択については、fuzzing-corpus テクニックスキルを参照してください。
キャンペーン実行
基本的な実行
./afl++ <host/docker> afl-fuzz -i seeds -o out -- ./fuzz
環境変数の設定
./afl++ <host/docker> AFL_FAST_CAL=1 afl-fuzz -i seeds -o out -- ./fuzz
出力の解釈
AFL++ UI はリアルタイムファジング統計を表示します:
| 出力 | 意味 |
|---|---|
| execs/sec | 実行速度 - 高いほど良い |
| cycles done | 完了したキューパス数 |
| corpus count | キュー内のユニークなテストケース数 |
| saved crashes | 見つかったユニークなクラッシュ数 |
| stability | 安定エッジの % (100% に近い必要) |
出力ディレクトリ構造
out/default/
├── cmdline # SUT はどのように呼び出されたか?
├── crashes/ # SUT をクラッシュさせた入力
│ └── id:000000,sig:06,src:000002,time:286,execs:13105,op:havoc,rep:4
├── hangs/ # SUT がハングした入力
├── queue/ # 最終ファザー状態を再現するテストケース
│ ├── id:000000,time:0,execs:0,orig:minimal_seed
│ └── id:000001,src:000000,time:0,execs:8,op:havoc,rep:6,+cov
├── fuzzer_stats # キャンペーン統計
└── plot_data # プロット用データ
結果の分析
ライブキャンペーン統計を表示:
./afl++ <host/docker> afl-whatsup out
カバレッジプロットを作成:
apt install gnuplot
./afl++ <host/docker> afl-plot out/default out_graph/
テストケースの再実行
./afl++ <host/docker> ./fuzz out/default/crashes/<test_case>
ファザーオプション
| オプション | 目的 |
|---|---|
-G 4000 | 最大テスト入力長 (デフォルト: 1048576 バイト) |
-t 1000 | 各テストケースのタイムアウト (ミリ秒) (デフォルト: 1000ms) |
-m 1000 | メモリ制限 (メガバイト) (デフォルト: 0 = 無限) |
-x ./dict.dict | 辞書ファイルを使用してミューテーションをガイド |
重要な環境変数
AFL++ には多くの環境変数がありますが、ほとんどはニッチです。実際に重要なものはこれらです。
常に設定すべき
# すべてのキャンペーンは tmpfs を使用する必要があります — SSD に感謝され、速度も向上
AFL_TMPDIR=/dev/shm
AFL_TMPDIR は副作用なしの無料パフォーマンス向上です — 設定しないと SSD が消耗しファジング速度が低下します。
スロータゲット向け
# キャリブレーション速度を約 2.5 倍高速化 — ターゲットが遅い場合に使用 (例: >10 ms/exec)
AFL_FAST_CAL=1
AFL_FAST_CAL はキャリブレーション時間を無視できる精度低下で削減します。キャリブレーションに長時間かかるスロータゲット向けに推奨されます。
マルチコアキャンペーン向け
# プライマリ (-M) インスタンスのみで設定 — afl-cmin に必要、ファジング自体には不要
AFL_FINAL_SYNC=1
# すべてのインスタンスで設定 — テストケースをメモリにキャッシュ (デフォルト: 50 MB、推奨範囲: 50-250 MB)
AFL_TESTCACHE_SIZE=100
AFL_FINAL_SYNC はプライマリインスタンスにすべてのセカンダリからの最終インポートを停止時に実行させます。ファジングプロセス自体には影響しません — 後で afl-cmin を実行してコーパス最小化するときのみ重要であり、プライマリのキューに完全な結合コーパスが確保されます。AFL_TESTCACHE_SIZE はディスク I/O を削減するためテストケースをメモリにキャッシュします。デフォルトは 50 MB で、ほとんどのキャンペーンには 50-250 MB の値が適切です。
CI/自動ファジング向け
# ファジングが何も見つけていない場合は早期終了
AFL_EXIT_ON_TIME=3600 # 新しいパスなしで 1 時間 = 停止
# またはすべてのキュー入力が処理されるまで実行
AFL_EXIT_WHEN_DONE=1
# ヘッドレス環境
AFL_NO_UI=1
CI での無限ファジングはリソースを浪費します。時間制限または終了条件を設定します。
避けるべき変数
| 変数 | スキップする理由 |
|---|---|
AFL_NO_ARITH | バイナリ形式ではカバレッジを損なう可能性、テキストベースターゲットには有用 |
AFL_SHUFFLE_QUEUE | 特殊なセットアップのみ、通常は有害 |
AFL_DISABLE_TRIM | トリミングは価値がある、理由なしに無効にしない |
マルチコアファジング
AFL++ はマルチコアファジングに優れており、2 つの主な利点があります:
- より多くの実行秒数 (物理コア数に比例スケーリング)
- 非対称ファジング (例:1 つの ASan ジョブ、残りは sanitizer なし)
キャンペーン開始
プライマリファザーを開始 (バックグラウンド):
./afl++ <host/docker> afl-fuzz -M primary -i seeds -o state -- ./fuzz 1>primary.log 2>primary.error &
セカンダリファザーを開始 (コア数と同じ数):
./afl++ <host/docker> afl-fuzz -S secondary01 -i seeds -o state -- ./fuzz 1>secondary01.log 2>secondary01.error &
./afl++ <host/docker> afl-fuzz -S secondary02 -i seeds -o state -- ./fuzz 1>secondary02.log 2>secondary02.error &
マルチコアキャンペーンのモニタリング
実行中のジョブをリスト:
jobs
ライブ統計を表示 (1 秒ごとに更新):
./afl++ <host/docker> watch -n1 --color afl-whatsup state/
すべてのファザーの停止
kill $(jobs -p)
カバレッジ分析
AFL++ はエッジインストルメンテーションを通じてカバレッジを自動的に追跡します。カバレッジ情報は fuzzer_stats と plot_data に保存されます。
カバレッジの測定
afl-plot を使用してカバレッジ経時変化を可視化:
./afl++ <host/docker> afl-plot out/default out_graph/
カバレッジの向上
- 形式認識ファジング向けに辞書を使用
- 長いキャンペーンを実行 (cycles_wo_finds はプラトーを示唆)
- マルチコアファジングで異なるミューテーション戦略を試す
- カバレッジギャップを分析し、対象シード入力を追加
関連も参照: 詳細なカバレッジ分析技術、カバレッジギャップの識別、システマティックなカバレッジ向上については、coverage-analysis テクニックスキルを参照してください。
CMPLOG
CMPLOG/RedQueen は、すべてのファザーで利用可能な最高のパス制約解決メカニズムです。 これを有効化するには、ファズターゲットをインストルメントする必要があります。 ファジングターゲットをビルドする前に、環境変数を設定します:
./afl++ <host/docker> AFL_LLVM_CMPLOG=1 make
ハーネスのコンパイルとリンクについて特別なアクションは不要です。
CMPLOG インストルメントされたファジングターゲットでファザーインスタンスを実行するには、コマンドライン引数に -c0 を追加します:
./afl++ <host/docker> afl-fuzz -c0 -S cmplog -i seeds -o state -- ./fuzz 1>secondary02.log 2>secondary02.error &
Sanitizer 統合
Sanitizer は、即座のクラッシュを引き起こさないメモリ破損バグを見つけるために不可欠です。
AddressSanitizer (ASan)
./afl++ <host/docker> AFL_USE_ASAN=1 afl-clang-fast++ -DNO_MAIN=1 -O2 -fsanitize=fuzzer harness.cc main.cc -o fuzz
注意: メモリ制限 (-m) は ASan では 20TB の仮想メモリ予約のためサポートされていません。
UndefinedBehaviorSanitizer (UBSan)
./afl++ <host/docker> AFL_USE_UBSAN=1 afl-clang-fast++ -DNO_MAIN=1 -O2 -fsanitize=fuzzer,undefined harness.cc main.cc -o fuzz
一般的な Sanitizer の問題
| 問題 | 解決方法 |
|---|---|
| ASan がファジングを遅くする | マルチコアセットアップで 1 つの ASan ジョブのみ使用 |
| スタック枯渇 | ASAN_OPTIONS=stack_size=... でスタックを増やす |
| GCC バージョン不一致 | システム GCC が AFL++ プラグインバージョンと一致することを確認 |
関連も参照: 包括的な sanitizer 設定とトラブルシューティングについては、address-sanitizer テクニックスキルを参照してください。
高度な用途
ヒントとコツ
| ヒント | 役立つ理由 |
|---|---|
| 可能な限り LLVMFuzzerTestOneInput ハーネスを使用 | ファジングキャンペーンの安定性が少なくとも 85% あれば、これは最も効率的なファジングスタイル。そうでなければ標準入力またはファイル入力ファジングを試す |
| 辞書を使用 | ファザーが形式固有のキーワードとマジックバイトを発見するのに役立つ |
| 現実的なタイムアウトを設定 | システム負荷から偽陽性を防ぐ |
| 入力サイズを制限 | 大きい入力は必ずしもより多くのスペースを探索しない |
| 安定性をモニタリング | 低い安定性は非決定論的動作を示唆 |
標準入力ファジング
AFL++ は libFuzzer ハーネスなしで stdin から読み取るプログラムをファジングできます:
./afl++ <host/docker> afl-clang-fast++ -O2 main_stdin.c -o fuzz_stdin
./afl++ <host/docker> afl-fuzz -i seeds -o out -- ./fuzz_stdin
これは永続モードより遅いですがハーネスコードは不要です。
ファイル入力ファジング
ファイルを読み込むプログラムの場合、@@ プレースホルダーを使用:
./afl++ <host/docker> afl-clang-fast++ -O2 main_file.c -o fuzz_file
./afl++ <host/docker> afl-fuzz -i seeds -o out -- ./fuzz_file @@
パフォーマンス向上のため、fmemopen を使用してメモリからファイルディスクリプタを作成します。
引数ファジング
argv-fuzz-inl.h を使用してコマンドライン引数をファジング:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef __AFL_COMPILER
#include "argv-fuzz-inl.h"
#endif
void check_buf(char *buf, size_t buf_len) {
if(buf_len > 0 && buf[0] == 'a') {
if(buf_len > 1 && buf[1] == 'b') {
if(buf_len > 2 && buf[2] == 'c') {
abort();
}
}
}
}
int main(int argc, char *argv[]) {
#ifdef __AFL_COMPILER
AFL_INIT_ARGV();
#endif
if (argc < 2) {
fprintf(stderr, "Usage: %s <input_string>\n", argv[0]);
return 1;
}
char *input_buf = argv[1];
size_t len = strlen(input_buf);
check_buf(input_buf, len);
return 0;
}
ヘッダーをダウンロード:
curl -O https://raw.githubusercontent.com/AFLplusplus/AFLplusplus/stable/utils/argv_fuzzing/argv-fuzz-inl.h
コンパイルと実行:
./afl++ <host/docker> afl-clang-fast++ -O2 main_arg.c -o fuzz_arg
./afl++ <host/docker> afl-fuzz -i seeds -o out -- ./fuzz_arg
パフォーマンスチューニング
| 設定 | 影響 |
|---|---|
| CPU コア数 | 物理コア数による線形スケーリング |
| 永続モード | fork サーバーより 10-20 倍高速 |
-G 入力サイズ制限 | より小さい = より高速だが、バグを見逃す可能性 |
| ASan 比率 | 4-8 個の非 ASan ジョブあたり 1 つの ASan ジョブ |
トラブルシューティング
| 問題 | 原因 | 解決方法 |
|---|---|---|
| 低い exec/sec (<1k) | 永続モード未使用 | LLVMFuzzerTestOneInput スタイルハーネスを作成 |
| 低い安定性 (<85%) | 非決定論的コード | stdin またはファイル入力経由でプログラムをファジング、またはそのようなハーネスを作成 |
| GCC プラグインエラー | GCC バージョン不一致 | システム GCC が AFL++ ビルドと一致し、gcc-$GCC_VERSION-plugin-dev をインストールすることを確認 |
| クラッシュが見つからない | Sanitizer が必要 | AFL_USE_ASAN=1 で再コンパイル |
| メモリ制限超過 | ASan が 20TB 仮想メモリを使用 | ASan 使用時に -m フラグを削除 |
| Docker パフォーマンス低下 | 仮想化オーバーヘッド | 本番ファジングにはベアメタルまたは VM を使用 |
関連スキル
テクニックスキル
| スキル | 用途 |
|---|---|
| fuzz-harness-writing | 効果的なハーネス作成に関する詳細ガイダンス |
| address-sanitizer | ファジング中のメモリエラー検出 |
| undefined-behavior-sanitizer | 未定義動作バグの検出 |
| fuzzing-corpus | シードコーパスの構築と管理 |
| fuzzing-dictionaries | 形式認識ファジング向け辞書の作成 |
関連ファザー
| スキル | 検討時期 |
|---|---|
| libfuzzer | クイックプロトタイピング、シングルスレッドファジングで十分 |
| libafl | カスタムミューテータまたはリサーチグレード機能が必要 |
リソース
主要な外部リソース
AFL++ GitHub リポジトリ 包括的なドキュメント、例、イシュートラッカーを備えた公式リポジトリ。
Fuzzing in Depth AFL++ チームによる高度なドキュメント、インストルメンテーションモード、最適化技術、高度な用途をカバー。
AFL++ Under The Hood AFL++ 内部、ミューテーション戦略、カバレッジ追跡メカニズムへの技術的な深掘り。
AFL++: Combining Incremental Steps of Fuzzing Research AFL++ アーキテクチャと元々の AFL との比較パフォーマンス向上について説明するリサーチペーパー。
ビデオリソース
- Fuzzing cURL - Trail of Bits のブログ記事 (AFL++ 引数ファジングを使用した cURL)
- Sudo Vulnerability Walkthrough - CVE-2021-3156 の再発見に関する LiveOverflow シリーズ
- libpng バグの再発見 - CVE-2023-4863 の検見に関する LiveOverflow ビデオ
ライセンス: CC-BY-SA-4.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- trailofbits
- リポジトリ
- trailofbits/skills
- ライセンス
- CC-BY-SA-4.0
- 最終更新
- 不明
Source: https://github.com/trailofbits/skills / ライセンス: CC-BY-SA-4.0
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。