Repository navigation
Zora coin metadata guide, and EVM and x402 on the turbo-upload page - #190
Draft
vilenarios wants to merge 5 commits into
Draft
vilenarios wants to merge 5 commits into
vilenarios wants to merge 5 commits into
Conversation
…rbo-upload - build/guides/zora-coin-metadata: store a Zora coin's metadata and image with @ardrive/turbo-zora-uploader. Quickstart matches the package README; covers who pays (free signed uploads, x402 in USDC), why the URL is https, browser and smart-contract wallets, testnet and its metadata-check gap, and the errors to catch. - sdks/turbo-upload: EVM signers (ANS-104 type 3) and x402 uploads from 0.7.0; the comparison table and requirements no longer say Node only. - sdks/index: turbo-upload runs in browsers, through a wallet signer. - public/SKILL.md: turbo-upload EVM and x402 recipes, and the Zora recipe. - public/llms.txt, build/guides nav and landing card: link the guide. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015JYw2Nzv95CXaVZwUKS5n8
The page said unsigned x402 uploads under 105 KiB are free and work from an unauthenticated client. They are not: an unpaid POST of five bytes to /v1/x402/upload/unsigned (and to /v1/x402/data-item/unsigned) answers 402 with a USDC price. Only signed items within the free tier upload free. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015JYw2Nzv95CXaVZwUKS5n8
The uploader returns ar://ITEM_ID and assumes no gateway (package head 3411139). The guide's quickstart and testnet sample are re-synced from its README, so the createCoin call sets skipMetadataValidation: true. - "Why the URLs are ar://": ar:// is gateway-neutral and permanent; Zora's SDK 0.8.0 fetches ar:// through http://arweave.net/, which can lag a fresh upload, so the check is skipped; createCoin succeeds, and Zora's app might not show the name, image or description until arweave.net serves the metadata. uri "https" with a gateway you choose keeps the check. - Removes every sentence that made turbo-gateway.com the default. - Node.js 20.3 or later; the item limit is freeUploadLimitBytes; adds a TurboValidationError row; mode "signed" refuses maxUsdc. - public/SKILL.md, public/llms.txt and the guides landing card match. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015JYw2Nzv95CXaVZwUKS5n8
Zora's create API refuses an ar:// coin metadata URI ("uri is required and
needs to be an ipfs:// or https:// uri", checked on Base and Base Sepolia).
The uploader (package head 9520ff4) defaults to uri "auto": the metadata
JSON returns https://turbo-gateway.com/ITEM_ID and media returns
ar://ITEM_ID. The quickstart, testnet and browser samples are re-synced
from its README, so skipMetadataValidation is gone.
- "The URLs it returns": why the pointer is https, why turbo-gateway.com
passes Zora's check, and that media names no gateway.
- Testnet: uploads work; creating a coin does not (ar-io.dev adds a
charset, and Zora's API reverts coinAddress on Base Sepolia).
- Errors: tags over 3072 bytes are TurboConfigError at creation;
TurboValidationError covers a file over about 75 MiB or tags plus the
Content-Type tag over 3072 bytes at upload.
- tsx in the install step; the notice carries no cross-reference; a signer
with signMessage and recoverPublicKey is tried on the signed path first.
- x402 page: maxMUSDCAmount is optional; x402-fetch caps at 0.10 USDC.
- turbo-upload page and sdks index: signer list widened.
- public/SKILL.md: uploader install line, ar://ITEM_ID, imageFile
declared, free-tier wording. llms.txt and the landing card match.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015JYw2Nzv95CXaVZwUKS5n8
Guide (matches @ardrive/turbo-zora-uploader at 340a3b9): - The 1.2 s check result is dated rather than credited to tests that do not ship; the Base Sepolia refusal, ar-io.dev's charset and the ar:// refusal are dated too. - Carries the README caveat that how Zora's apps display ar:// media is not verified; "a gateway that has the item" can resolve ar://. - ITEM_ID is defined before its first use; the smart-wallet sample wraps at 80 columns; Node.js 20 or later, as the package's engines say. - Errors table: one TurboTimeoutError / AbortError / TimeoutError row, and the TurboPaymentError caveat to check transfers before retrying. x402 page: uploadRawX402Data takes maxMUSDCAmount as a BigNumber from bignumber.js 9 (a number, or BigNumber from another major, fails to type-check against turbo-sdk 2.1.2); x402-fetch is an optional peer to install. Testnet Sandbox: the free item size is 5 MiB, as /v1/info reports, not 105 KiB. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015JYw2Nzv95CXaVZwUKS5n8
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a guide for storing a Zora coin's metadata and image on Arweave with
@ardrive/turbo-zora-uploader. The coin's metadata pointer ishttps://turbo-gateway.com/ITEM_ID, because Zora's create API accepts only an https or ipfs pointer, and media inside the metadata isar://ITEM_ID. It also brings the turbo-upload page up to 0.7.0: EVM signing (ANS-104 type 3) and x402 uploads.Merge after @ardrive/turbo-zora-uploader is published on npm. The guide links its npm page and installs it by name, and neither works until it is published. The guide matches the package at commit 340a3b9; if the package changes before publishing, re-sync the quickstart, testnet and browser samples.
@ardrive/turbo-upload@0.7.0is already on npm.Merging deploys nothing: deploys are manual.
It also corrects a false claim on
build/upload/x402-uploading-to-turbo: the unsigned x402 route has no free tier. An unpaid POST of five bytes to/v1/x402/upload/unsignedanswers402with a USDC price; only signed items within the free tier upload free. The page also says thatmaxMUSDCAmountis optional, and that without it x402-fetch caps the price at 0.10 USDC. It says thatx402-fetchis an optional peer you install. And it fixes theuploadRawX402Datasample, which passed a number where turbo-sdk 2.1.2 typesmaxMUSDCAmountas aBigNumber: the sample now usesnew BigNumber(...)frombignumber.js9. ABigNumberfrom another major version fails to type-check. The same free-tier claim lives in generated copies of the Turbo SDK README (sdks/turbo-sdk/(apis)/turboauthenticatedclient.mdx,sdks/turbo-sdk/llm.txt,public/sdks/turbo-sdk/llm.txt,public/llms-full.txt), which this PR does not edit: the fix belongs in theardriveapp/turbo-sdkREADME, and the weekly regenerate run carries it here.Needs your judgement
uri: "auto", the metadata JSON returnshttps://turbo-gateway.com/ITEM_IDand every other filear://ITEM_ID. Zora's create API refuses anar://pointer with HTTP 500,uri is required and needs to be an ipfs:// or https:// uri(checked on Base and Base Sepolia, with no transaction sent). turbo-gateway.com serves a fresh item at once as exactlyapplication/json, so Zora's metadata check passes. The guide makes no claim about how Zora's app rendersar://media.coinAddresscall. The uploads themselves work on testnet.content/build/testnet/index.mdxsaid 105 KiB uploads free on testnet, where the same page and the live/v1/infosay 5 MiB. The guide links this page, so this PR fixes that line.content/sdks/index.mdxsaid turbo-upload is server-side only. The web build has shipped since 0.5.0, so this PR changes that sentence and widens the turbo-upload line.What changed
content/build/guides/zora-coin-metadata.mdx(new): when to use the uploader, install (withtsx), the package README's quickstart verbatim, who pays (signed free tier or x402 in USDC; the item limit isfreeUploadLimitBytesin the upload service's/v1/info), the URLs it returns and why, private key, browser and smart-contract wallet signers, testnet, and the errors to catch.content/sdks/turbo-upload/index.mdx: EVM signers and x402 uploads sections, the comparison table (keys, browser support, size measured for 0.7.0), requirements, and the description.content/build/upload/x402-uploading-to-turbo.mdx: the unsigned-route correction described earlier.public/SKILL.md: an install line for each package, turbo-upload EVM and x402 recipes, and a Zora recipe matching the guide.public/llms.txt: one line for the guide (the file is hand-written; no generator touches it).content/build/testnet/index.mdx: the testnet free item size is 5 MiB.content/build/guides/meta.jsonand the guides landing page: list the guide. The folder sorts by title, so it lands last.Not changed:
content/sdks/turbo-upload/llm.txt,public/sdks/turbo-upload/llm.txtandpublic/llms-full.txtare generated, so the weekly regenerate run picks these edits up.Checks
npm run lint,npx tsc --noEmit: pass.npm run check-links: 344 files, 0 errors.npm run build: passes; the guide renders at/build/guides/zora-coin-metadata/and sits last in the Guides sidebar.@zoralabs/coins-sdk@0.8.0,viem@2.53.1,@ardrive/turbo-upload@0.7.0and the uploader packed from 340a3b9. The guide's quickstart, testnet and browser samples are byte-identical to the package README at 340a3b9. The x402 page's two turbo-sdk samples type-check against@ardrive/turbo-sdk@2.1.2.ar://for an image and the gateway URL for JSON.testnet: trueon Base Sepolia, uploaded for free, and its metadata names the image asar://.createCointhen failed Zora's check, as the guide says.402quote and stopped before signing, so nothing was paid.coin.png, with no file present, so nothing was uploaded and no transaction was sent. No production upload or Base transaction was made from this PR.🤖 Generated with Claude Code
https://claude.ai/code/session_015JYw2Nzv95CXaVZwUKS5n8