hoddukzoa
@hoddukzoa12
Boutlet AI Agent x402 Challenge 제출용 기록
사용한 AI Agent / 도구
- Hermes Agent
- Node.js script
@x402/fetch@x402/evmExactEvmSchemeviem- Base mainnet burner wallet
탐색 흐름
https://www.boutlet.io/llms.txt확인/md/channels?keyword=Bug%20Bounty&limit=50에서bug-bounty채널 발견/md/channels/bug-bounty에서 Bug Bounty 채널의 public posts 확인- 1 USDC paywall post 후보 확인
/md/posts/cmq7shdsi00n810qfr66kqh9f에서 paywall metadata 확인- protected markdown endpoint 접근
HTTP 402 Payment Required및PAYMENT-REQUIREDheader 확인- x402 결제 signature 생성 후 재요청
- 유료 markdown content unlock 성공
구매 대상
- Channel: Boutlet Bug Bounty
- Post ID:
cmq7shdsi00n810qfr66kqh9f - Paywall Key:
pw_758e2e67c553478da5eefc23d1232392 - Paywall Title:
유료 글 등록 기능 외 8건 - Protected endpoint:
https://www.boutlet.io/md/posts/cmq7shdsi00n810qfr66kqh9f/paywalls/pw_758e2e67c553478da5eefc23d1232392결제 요구사항
PAYMENT-REQUIRED header decoded summary:
{
"x402Version": 2,
"resource": {
"url": "/md/posts/cmq7shdsi00n810qfr66kqh9f/paywalls/pw_758e2e67c553478da5eefc23d1232392",
"description": "Protected paywall markdown",
"mimeType": "text/plain"
},
"accepts": [
{
"scheme": "exact",
"network": "eip155:8453",
"amount": "1000000",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo": "0x5cdfD64CE15983e937268Bba7f913916dc756DFb",
"maxTimeoutSeconds": 300,
"extra": {
"tokenSymbol": "USDC",
"tokenDecimals": 6,
"settlementMethod": "x402"
}
}
]
}결제 결과
- Payer:
0x8e60d16c0025d9B96f9CDa5F9Fa842172Cba71A9 - Network: Base mainnet /
eip155:8453 - Token: USDC
- Amount:
1 USDC - Transaction:
0x59d2329d87d5de16308f3a3a422495682aab3bcec44c62eddc1980a53f2ff697- BaseScan:https://basescan.org/tx/0x59d2329d87d5de16308f3a3a422495682aab3bcec44c62eddc1980a53f2ff697
- On-chain receipt status:
success - Block number:
47452695
PAYMENT-RESPONSE decoded:
{
"network": "eip155:8453",
"payer": "0x8e60d16c0025d9B96f9CDa5F9Fa842172Cba71A9",
"success": true,
"transaction": "0x59d2329d87d5de16308f3a3a422495682aab3bcec44c62eddc1980a53f2ff697"
}Agent 실행 로그 요약
[2026-06-17T11:12:11.831Z] Boutlet x402 challenge agent started
[2026-06-17T11:12:11.832Z] Agent/tool: Hermes Agent + Node.js + @x402/fetch + @x402/evm ExactEvmScheme
[2026-06-17T11:12:11.832Z] Payer address: 0x8e60d16c0025d9B96f9CDa5F9Fa842172Cba71A9
[2026-06-17T11:12:12.683Z] Protected endpoint probe -> HTTP 402
[2026-06-17T11:12:12.929Z] Base USDC balance: 2 USDC
[2026-06-17T11:12:12.931Z] Submitting x402 payment signature and retrying protected endpoint...
[2026-06-17T11:12:17.831Z] Paid fetch -> HTTP 200, content-type=text/plain; charset=utf-8, bytes=2740
[2026-06-17T11:12:17.831Z] Decoded PAYMENT-RESPONSE: success=true, transaction=0x59d2329d87d5de16308f3a3a422495682aab3bcec44c62eddc1980a53f2ff697
[2026-06-17T11:12:17.832Z] Unlocked markdown content savedUnlock된 마크다운 콘텐츠 결과
<!-- Protected paywall asset URLs below are temporary signed URLs that expire in 300 seconds. If any asset URL expires, request this markdown again. -->

1. 유료 글의 본문을 B에만 작성하면 유료 글 등록이 안되는데(Cannot publish a post with empty paywall) A는 왼쪽 화살표를 눌러야 나오기 때문에 본문을 작성했는데 왜 글 등록이 안되는지 유저가 헷갈리게 됩니다. A 와 B 를 구분하지 않아도 될 것 같아 보입니다.
2. 또 유료 글 입력하다가 delete 나 enter 잘못 누르면 무료 글 등록으로 넘어가는데, 이게 유료 부분인지 무료 부분인지 확인도 어렵고 글 옮기기 귀찮습니다.
1. 유료 블록 내용을 추가하거나 초기화하려면 클릭하세요. > 초기화 기능 필요없는 것 같습니다. 글쓰다가 블록 추가되는 줄 알고 실수로 누르면 당황스러울 것 같습니다.

1. 스래시 커맨드: 화면 비율에 따라 사이즈가 조절되는 것 같은데 작을 때 너무 작아서 불편합니다. 텍스트 위로 표기되어야 할 것 같습니다.

1. (엄청 사소하긴 한데) 이미지 추가를 선택했을 때, 업로드 버튼이 따로 있는 것보다 회색 긴 사각형의 이미지 추가를 클릭했을 때 업로드할 이미지 선택으로 연결되는게 더 직관적일 것 같습니다.
2. 작성자 본인의 유료 글은 무료글과 똑같이 보여져서 이게 유료로 잘 올라간건지 헷갈립니다. 로그인되지 않은 계정으로 확인해야 하는 번거로움이 있습니다.

1. 어떤 조건인지는 모르겠는데, 가끔 ' / ' 를 입력하지 않아도 슬래시 커맨드가 켜지고 잘 안꺼집니다.
2. Auto numbering 작성시 2 이상의 숫자를 임의로 작성하면 글 등록 후에는 전부 1로 통 표기됩니다.
3. 글을 쓰다가 블록을 지우면, 이전 블록이나 바로 위 문장에 text cursor 이동하는게 아니라 화면이 본문 최상단 블록으로 강제 스크롤됩니다.로컬 증빙 파일
Google Drive : https://drive.google.com/drive/folders/1BIkARjCND-ywpXeY5_tlLkZIuWy85tbs?usp=sharing
evidence/01_llms.txtevidence/02_channels_bug_bounty.mdevidence/03_channel_bug_bounty.mdevidence/04_post_event.mdevidence/06_post_paywall_8_items.mdevidence/07_payment_required.jsonevidence/08_payment_response.jsonevidence/09_unlocked_content.mdevidence/10_onchain_receipt_summary.jsonevidence/unlocked_assets/asset_01.pngevidence/unlocked_assets/asset_02.pngevidence/unlocked_assets/asset_03.pngevidence/unlocked_assets/asset_04.png
(수정됨)