-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add documentation to clarify that inscriptions are served from /content/<INSCRIPTION_ID> #3209
Conversation
Looks great! |
It would also be helpful if the handbook documented that the content-type and content-encoding are delegated along with the body when delegating. Some sites don't implement this. If you view a delegate inscription on MagicEden it won't display correctly unless the delegate inscription has its own copy of the content-type tag, which is obviously wasteful. |
It is too opinionated to make it part of the protocol that when you build a client an inscription needs to "retrieve its own inscription ID from |
Thanks for the feedback @leonidasord. I actually agree with you. I made similar comments towards the end of the issue I raised about this: #3208. But after talking with a few people, I feel like the pathname is the only option for self referencing. A self endpoint is a great idea in principle, but I don't see how it would work in practice. If the server receives a request to I know that dictating the structure of the url is not ideal, but I think it's important we work out some way to self reference. Without it, you can't make dynamic/recursive collections with delegates (unless every item is identical), and for certain projects, this would be a significant cost saving. Would love to hear other proposals for how inscriptions can self reference. |
@leonidasord Problem is, server would have no way of figuring out what |
What I am imagining is a /self recursive endpoint where all it does is return the inscription ID of the inscription that is calling it. This can happen completely client side. I haven't thought through the edge cases very hard though like if you recursively bring in an inscription and that inscription uses /self the client would need to know to give it its id still. What are the best reasons for why this wouldn't work? The alternative of calling window like this and relying on clients implementing several things a specific way for that to work feels overly constraining to devs. If for some reason it doesn't end up making sense to do the /self endpoint client side idea I would like to see an improved version of this PR that mandates that all clients attach an object with a specific set of key value pairs to the window that includes the inscription id so that there is a very clear spec for for developers to implement. The current form of this PR is yucky to me because it's basically telling devs they have to structure their client a very specific way in order for people to do this hacky window call. If we are going to do the window call just make devs be required to provide a specific set of data in an object and that is all. |
As I said, the caller of |
Yeah, I'm not sure having the I do like the idea of injecting some global object into the window/iframe though. Depending on how it is designed, it may be possible that the inscription code runs before the global object is set, so you may also need to fire an event to indicate it's been set, and the inscription code can listen for the event. Similar to the design pattern used for the if (window.inscription === undefined) {
document.addEventListener("InscriptionDataLoaded", () => console.log(window.inscription))
} else {
console.log(window.inscription)
} The variable would need to be called something non-obvious though. If we chose a name that an existing inscription is already using as a global variable, then that inscription would break, because we just overwrote it with something it wasn't expecting. Maybe add a couple of underscores or something like that (i.e. |
@Vanniix Seems very convoluted for explorers to inject the state like that into 3rd party content, just in order to avoid relying on specific URL paths. "Recursion" is essentially a CSP directive, which is a very web/HTTP specific thing. I am not sure why protocol cannot take a position on how content/preview URLs must look like, considering all recursive endpoints are tied to specific URLs + the fact that using |
I agree this PR is to specific should not enforce any examples of front end implementation. The intent of the issue that raised this PR was that its clear from the rules of recursion and prior that an inscription is returned from a server using the From the handbook this just needs updating to be more explicit that it needs to be returned from
|
docs/src/inscriptions.md
Outdated
The iframe has a URL of `/content/<INSCRIPTION_ID>`, where `<INSCRIPTION_ID>` is | ||
the ID of the rendered inscription. If an inscription has a delegate, | ||
`<INSCRIPTION_ID>` is the ID of the inscription being rendered, *not* the ID of | ||
the delegate. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is actually wrong for the ord explorer the /inscription page the iframe src is under /preview/ for some mime-types like html. The html preview template uses the /content/
However all this is redundant because it was stated above I would remove these changes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oops, forgot about it having the preview url
I know you want this removed, but I think this part is necessary. You want it to just be that the inscription is served from /content/:id
, and thats all we say on the matter, but just because the inscription is served from that url, doesn't mean you can use the path name to get the id (which is the whole point of this PR). Your point about /preview/
partially demonstrates this problem. ordinals.com serves its inscriptions from /content/:id
, but it also serves them from /preview/:id
, which is used for the iframes in the front end. They are different urls, implying the explorer is free to choose the iframe url however they choose (provided it serves the right inscription). So, if we don't say anything about the iframes in the handbook, who's to say some explorer doesn't decide to use some other weird format for the iframe url?
The question then is what do we enforce? Do we just say it must end in /:id
, and leave the start of the path up to the implementation?
@gmart7t2, yep, good point. |
The more I think about this the less I like my ideas of a client-side /self endpoint or appending an object to window. Yall are making good points. I also agree that it would be very helpful for inscriptions to be able to know their ID. All of that said it still feels yucky to me to make it part of the Ordinals protocol that for the next 100 years clients have to support allowing people to call |
This is a similar conclusion to what I came to as well, initially I wasn’t a fan of it not being fully contained within the inscription as it does feel a little hacky but the benefits of self referencing would unlock a lot of cool development and it seems like there aren’t many better options. Unless @rot13maxi @casey or @raphjaph have any ideas on cleaner ways to achieve an inscription self referencing? |
Yeah, I think we are agreed on this @leonidasord. I have felt for a long time that getting the id from the url felt "wrong" in some way, but since everyone was doing it, I just went along with it. It would be awesome to have a better solution, but I can't think of anything better. The idea of adding a global object would work, but as @devords mentions, its convoluted, and ultimately it has similar problems to the url in that it relies on the client doing something specific. I think the url is just the simplest option to self reference even if it does lock explorers into a specific front end implementation It's probably also going to be the case that ordinals implementations will find it easier and simpler to just use include the id in the url than adding an extra endpoint or doing some other complex workaround. |
There really isn't a better way than the url, which is already mandated to work for the /inscription/ endpoint anyways because of recursion. Stateless web means the server can't know the inscription id of the caller without passing it first (cookie, header, injecting into content, etc), and any other way of client getting it is messier for server to push it. While it would be nice to store a delegate once on say a CDN....there you are also stuck in that you still have a way to inject the id in the response, url or otherwise. So - if the key problem with a site like ord.io is the CDN duplication - maybe they have a way to push a alt/vanity url of some type that doesn't redirect but returns the content stored another place from more than one endpoint? This might be what is needed to achieve unique inscription urls for delegates on ord.io @leonidasord |
I've thought of one solution that may sound convoluted at first but it avoids URLs and feels more self-contained. It's similar to the method I'm using currently (passing target sat number via JS) but would be much more efficient. You could implement a special type of delegation whereby a tiny "sat_number:reinscription_point" file/metadata is inscribed for each batch/delegated inscription. The inscriber would need to inscribe onto specific sats, but this is fairly straightforward with batch inscribing, and could even be coded into the batch process behind the scenes, so that the inscriber doesn't need to think/plan it out. That way each inscription knows which sat it's on and which reinscription it is on that sat. It should only be a few extra bytes per inscription. e.g. I inscribe on sat range 10000 to 20000 and set postage to 500. Inscription 1 is passed "10000:0", Inscription 2 is passed "10500:0" etc. The number after the colon designates reinscription number, so this would be incremented if inscriptions already exist on the sat. Ord still delegates the inscriptions to the delegation target (is there a proper name for this? [Edit: guess it's called the "delegate" but it's confusing when the verb is the same as the noun for the thing not doing the verb!]), but it passes along the sat_number:reinscription_point data that can be read via an endpoint. Then the inscriptions can refer to themselves using /r/sat/SAT_NUMBER/at/REINSCRIPTION_POINT. In short, ord knows which sats it's inscribing on, so it attaches that sat number to each delegated inscription at the time of inscribing. The delegation target then uses this data to identify each inscription. Thoughts? |
0f700bc
to
2e36c7a
Compare
* Fix type in runes docs (ordinals#3447) * Fix deploy bitcoin.conf typo (ordinals#3443) * Remove `etch` from error message (ordinals#3449) * Update rune docs for Chinese version (ordinals#3457) * Update testing.md (ordinals#3463) * Fix typo in zh.po (ordinals#3464) * Update required Rust version in README (ordinals#3466) * Add package necessary for Ubuntu (ordinals#3462) * Add rune logo and link to navbar (ordinals#3442) * Fix maturation loop (ordinals#3480) * Add wallet batch outputs and inscriptions endpoints (ordinals#3456) * Check etching commit confirmations correctly (ordinals#3507) Previously, we were checking if an etching commit transaction had matured by asking bitcoind how many confirmations it had. This was incorrect, because if ord was behind bitcoind, the number of confirmations would be based on bitcoind's current block height, and would be greater than the number of confirmations the commit transaction had as of the reveal transaction block height. This commit fixes this by calculating the number of confirmations using the block height of the commit transaction, which is correct even if bitcoind is ahead. * Show decimal rune balances (ordinals#3505) * Allow inscribing without file (ordinals#3451) This allows inscribing only the delegate without having to specify a file. In the batch it allows you to comletely omit the file as well. * Add etching turbo flag (ordinals#3511) Future runes features may be opt-in, for example, if they increase light client validation costs, or if they are simply too degenerate. This commit adds a "turbo" flag, which, if set, premptively opts in to such future features. It also sets the "turbo" flag on the genesis rune, UNCOMMON•GOODS. Because the genesis rune is inserted into the index when it is created, the schema version is also incremented, to force rebuilding indices created before this commit. * Update data carriersize to match with ord (ordinals#3506) * Document allowed opcodes in runestones (ordinals#3461) Document that data push opcodes 0 through 78 inclusive are allowed in runestones, and opcodes 79 and above will produce a cenotaph. Also add a test that makes sure that this is actually true. * Fix typo in zh.po (ordinals#3498) * Better error message when bitcoind doesn't start (ordinals#3500) * Updated rust-version to 1.74.0 (ordinals#3492) Ord now requires Rust 1.74 to build, update `rust-version` in Cargo.toml files to reflect this. * Mint with destination (ordinals#3497) * Bump ord crate required rust version to 1.76 (ordinals#3512) * Add postage flag to mint command (ordinals#3482) * Test that mints without a cap are unmintable (ordinals#3495) Test that if the `cap` field of an etching is unset, it is treated as being zero, and the rune is unmintable.Test that if the `cap` field of an etching is unset, it is treated as being zero, and the rune is unmintable. * Release 0.18.0 (ordinals#3513) - Bump version: 0.17.1 → 0.18.0 - Update changelog - Update changelog contributor credits - Update dependencies * Fix off-by-one in wallet when waiting for etching commitment to mature (ordinals#3515) While waiting to broadcast a rune etching, take into account the fact that the commit transaction will have an additional confirmation in the next block. Previously we weren't, so the wallet was waiting for one confirmation too many. * Release 0.18.1 (ordinals#3522) - Bump version: 0.18.0 → 0.18.1 - Update changelog - Update changelog contributor credits * Forbid etching below rune activation height (ordinals#3523) Don't allow etching if the etching reveal height is below the runes activation height, otherwise the user would waste funds on an ineffective etching. * Put rune higher on /inscription (ordinals#3363) * Fix typo in recursion docs (ordinals#3529) * Add Red Had build instructions to readme (ordinals#3531) * Add runes pagination (ordinals#3215) * Lookup rune by number (ordinals#3440) * Emit rune-related events (ordinals#3219) Emit rune etched, rune minted, rune transferred, and rune burned events to the index event channel. * Address runes review comments (ordinals#3547) - Fix overflow in Rune::from_str - Use checked_pow in Pile Display implementation - Only report first flaw in cenotaph - Add comment to Edict::from_integers for output == tx.output.len() - Avoid divide by zero in RuneUpdater - Add test for zero rune ID delta - Make varint::decode return a Result instead of an Option * Lock runes commit output (ordinals#3504) * Display etched runes on /block (ordinals#3366) * Remove /runes/balances page (ordinals#3555) * Fix typo in zh.po (ordinals#3540) * Fix typos (ordinals#3541) * Store wallets in /wallets subdir of data dir (ordinals#3553) Makes the data dir cleaner, and avoids a conflict with wallet named `index`, since there's already an `index.redb`. * Add command to export BIP-329 labels for wallet outputs (ordinals#3120) Add `ord wallet label`, which exports BIP-320 wallet output labels. Especially useful for labeling outputs in Sparrow wallets. * Add open mint tests (ordinals#3558) * Document turbo flag (ordinals#3579) * Release 0.18.2 (ordinals#3582) - Bump version: 0.18.1 → 0.18.2 - Update changelog - Update changelog contributor credits - Update dependencies * Bump ord version to 0.18.2 in Cargo.toml (ordinals#3583) * Resume cycles through all pending etchings (ordinals#3566) * Generate sample batch.yaml in env command (ordinals#3530) * Add default content proxy and decompress to env command (ordinals#3509) * Address runes review comments (ordinals#3605) - Use inclusive range in Index::get_runes_in_block - Remove out-of-date comment - Use checked_pow in Decimal Display impl - Use checked_pow in impl FromStr for Decimal * Remove duplicated word (ordinals#3598) * Show premine percentage (ordinals#3567) * Add back runes balances API (ordinals#3571) * Remove timeout for wallet client (ordinals#3621) * Add `dry-run` flag to `resume` command (ordinals#3592) * Clear etching when rune commitment is spent (ordinals#3618) * Add test Rune cannot be minted less than limit amount (ordinals#3556) * Update recursion.md with consistant syntax (ordinals#3585) * Check rune minimum at height before sending (ordinals#3626) * Release 0.18.3 (ordinals#3625) * Update sparrow-wallet.md --name flag update (ordinals#3635) * Fix zh.po translations (ordinals#3588) * Allow minting if mint begins next block (ordinals#3659) Make `ord wallet mint` check whether the rune to be minted is mintable in the next block, since that's the block in which our mint transaction might actually be mined. * Do not show runic outputs in cardinals command (ordinals#3656) * Update sat-hunting.md with how to transfer specific sats (ordinals#3666) * Allow longer request body for JSON API (ordinals#3655) * Clarify that inscriptions must be served from URLs with path /content/<INSCRIPTION_ID> (ordinals#3209) In order for inscriptions to retrieve their own inscription ID, inscription content must be served from URLs with path `/content/<INSCRIPTION_ID>`. When an inscription with ID X delegates to another inscription with ID Y, meaning that X has a delegate field whose value is Y, when requesting the content of inscription ID X, the content of inscription Y must be returned from the URL with path `/content/X`. This allows inscription Y to use the ID of delegating inscriptions as seeds for generative content, since the delegating inscriptions will all have different inscription IDs. * Use contains_key instead of get / is_some (ordinals#3705) * Fix typo on sat hunting page (ordinals#3668) * Add support for mjs files (ordinals#3653) * Use correct content type for .mjs inscriptions (ordinals#3712) `text/javascript` is the preferred MIME type for JavaScript, so use it instead of `application/x-javascript` when inscribing `.mjs` files. * Remove duplicate endpoint from explorer.md (ordinals#3716) Output `/output/<OUTPOINT>` was listed twice. * Persist config files for ord env command (ordinals#3715) * Add alt text to preview image (ordinals#3713) * Fix send runes (ordinals#3484) * Release 0.18.4 (ordinals#3720) - Bump version: 0.18.3 → 0.18.4 - Update changelog - Update changelog contributor credits - Update dependencies * Show progress bar for etching (ordinals#3673) * Bump rustfmt version 2018 to 2021 (ordinals#3721) * Patch some omissions in the Chinese translation (ordinals#3694) * Update runes.md docs (ordinals#3681) * Update sat-hunting.md (ordinals#3724) * Allow higher rpcworkqueue limit conf (ordinals#3615) * Allow specifying different output formats (ordinals#3424) * Release 0.18.5 (ordinals#3741) * Fix old conflicts * Resolve issues with Ordzaar modifications * Remove duplicate /inscriptions endpoint --------- Co-authored-by: twosatsmaxi <112330467+twosatsmaxi@users.noreply.github.com> Co-authored-by: bitspill <github@bitspill.net> Co-authored-by: Ordinarius <137325073+ordinariusprof@users.noreply.github.com> Co-authored-by: Dr.JingLee <95461562+DrJingLee@users.noreply.github.com> Co-authored-by: gmart7t2 <49558347+gmart7t2@users.noreply.github.com> Co-authored-by: RandolphJiffy <RandolphJiffy@hotmail.com> Co-authored-by: nine <118634361+cryptoni9n@users.noreply.github.com> Co-authored-by: Petrius Lima <petrius.lima@gmail.com> Co-authored-by: 0xLugon <lugon@alphatrue.com> Co-authored-by: raph <raphjaph@protonmail.com> Co-authored-by: Casey Rodarmor <casey@rodarmor.com> Co-authored-by: tgscan-dev <136890925+tgscan-dev@users.noreply.github.com> Co-authored-by: ynohtna92 <ynohtna92@users.noreply.github.com> Co-authored-by: nix.eth <113411347+nix-eth@users.noreply.github.com> Co-authored-by: rongyi <sqrongyi@163.com> Co-authored-by: Felipe Lincoln <mail.felipelincoln@gmail.com> Co-authored-by: blackj <yuan_gou@hotmail.com> Co-authored-by: StevenMia <166844090+StevenMia@users.noreply.github.com> Co-authored-by: Javier Villanueva <javiervd@gmail.com> Co-authored-by: oxSaturn <oxSaturn@proton.me> Co-authored-by: zmeyer44 <54515037+zmeyer44@users.noreply.github.com> Co-authored-by: Taha Abbasi <taha.abbasi@ferrum.network> Co-authored-by: losingle <losingle@gmail.com> Co-authored-by: Vannix <134819232+Vanniix@users.noreply.github.com> Co-authored-by: knowmost <167442703+knowmost@users.noreply.github.com> Co-authored-by: Eloc <42568538+elocremarc@users.noreply.github.com> Co-authored-by: bingryan <41174435+bingryan@users.noreply.github.com> Co-authored-by: AM shadow <154503348+shadowv0vshadow@users.noreply.github.com> Co-authored-by: Han Tuzun <hantuzun@users.noreply.github.com> Co-authored-by: Jeremy Rubin <j@rubin.io>
* Fix type in runes docs (ordinals#3447) * Fix deploy bitcoin.conf typo (ordinals#3443) * Remove `etch` from error message (ordinals#3449) * Update rune docs for Chinese version (ordinals#3457) * Update testing.md (ordinals#3463) * Fix typo in zh.po (ordinals#3464) * Update required Rust version in README (ordinals#3466) * Add package necessary for Ubuntu (ordinals#3462) * Add rune logo and link to navbar (ordinals#3442) * Fix maturation loop (ordinals#3480) * Add wallet batch outputs and inscriptions endpoints (ordinals#3456) * Check etching commit confirmations correctly (ordinals#3507) Previously, we were checking if an etching commit transaction had matured by asking bitcoind how many confirmations it had. This was incorrect, because if ord was behind bitcoind, the number of confirmations would be based on bitcoind's current block height, and would be greater than the number of confirmations the commit transaction had as of the reveal transaction block height. This commit fixes this by calculating the number of confirmations using the block height of the commit transaction, which is correct even if bitcoind is ahead. * Show decimal rune balances (ordinals#3505) * Allow inscribing without file (ordinals#3451) This allows inscribing only the delegate without having to specify a file. In the batch it allows you to comletely omit the file as well. * Add etching turbo flag (ordinals#3511) Future runes features may be opt-in, for example, if they increase light client validation costs, or if they are simply too degenerate. This commit adds a "turbo" flag, which, if set, premptively opts in to such future features. It also sets the "turbo" flag on the genesis rune, UNCOMMON•GOODS. Because the genesis rune is inserted into the index when it is created, the schema version is also incremented, to force rebuilding indices created before this commit. * Update data carriersize to match with ord (ordinals#3506) * Document allowed opcodes in runestones (ordinals#3461) Document that data push opcodes 0 through 78 inclusive are allowed in runestones, and opcodes 79 and above will produce a cenotaph. Also add a test that makes sure that this is actually true. * Fix typo in zh.po (ordinals#3498) * Better error message when bitcoind doesn't start (ordinals#3500) * Updated rust-version to 1.74.0 (ordinals#3492) Ord now requires Rust 1.74 to build, update `rust-version` in Cargo.toml files to reflect this. * Mint with destination (ordinals#3497) * Bump ord crate required rust version to 1.76 (ordinals#3512) * Add postage flag to mint command (ordinals#3482) * Test that mints without a cap are unmintable (ordinals#3495) Test that if the `cap` field of an etching is unset, it is treated as being zero, and the rune is unmintable.Test that if the `cap` field of an etching is unset, it is treated as being zero, and the rune is unmintable. * Release 0.18.0 (ordinals#3513) - Bump version: 0.17.1 → 0.18.0 - Update changelog - Update changelog contributor credits - Update dependencies * Fix off-by-one in wallet when waiting for etching commitment to mature (ordinals#3515) While waiting to broadcast a rune etching, take into account the fact that the commit transaction will have an additional confirmation in the next block. Previously we weren't, so the wallet was waiting for one confirmation too many. * Release 0.18.1 (ordinals#3522) - Bump version: 0.18.0 → 0.18.1 - Update changelog - Update changelog contributor credits * Forbid etching below rune activation height (ordinals#3523) Don't allow etching if the etching reveal height is below the runes activation height, otherwise the user would waste funds on an ineffective etching. * Put rune higher on /inscription (ordinals#3363) * Fix typo in recursion docs (ordinals#3529) * Add Red Had build instructions to readme (ordinals#3531) * Add runes pagination (ordinals#3215) * Lookup rune by number (ordinals#3440) * Emit rune-related events (ordinals#3219) Emit rune etched, rune minted, rune transferred, and rune burned events to the index event channel. * Address runes review comments (ordinals#3547) - Fix overflow in Rune::from_str - Use checked_pow in Pile Display implementation - Only report first flaw in cenotaph - Add comment to Edict::from_integers for output == tx.output.len() - Avoid divide by zero in RuneUpdater - Add test for zero rune ID delta - Make varint::decode return a Result instead of an Option * Lock runes commit output (ordinals#3504) * Display etched runes on /block (ordinals#3366) * Remove /runes/balances page (ordinals#3555) * Fix typo in zh.po (ordinals#3540) * Fix typos (ordinals#3541) * Store wallets in /wallets subdir of data dir (ordinals#3553) Makes the data dir cleaner, and avoids a conflict with wallet named `index`, since there's already an `index.redb`. * Add command to export BIP-329 labels for wallet outputs (ordinals#3120) Add `ord wallet label`, which exports BIP-320 wallet output labels. Especially useful for labeling outputs in Sparrow wallets. * Add open mint tests (ordinals#3558) * Document turbo flag (ordinals#3579) * Release 0.18.2 (ordinals#3582) - Bump version: 0.18.1 → 0.18.2 - Update changelog - Update changelog contributor credits - Update dependencies * Bump ord version to 0.18.2 in Cargo.toml (ordinals#3583) * Resume cycles through all pending etchings (ordinals#3566) * Generate sample batch.yaml in env command (ordinals#3530) * Add default content proxy and decompress to env command (ordinals#3509) * Address runes review comments (ordinals#3605) - Use inclusive range in Index::get_runes_in_block - Remove out-of-date comment - Use checked_pow in Decimal Display impl - Use checked_pow in impl FromStr for Decimal * Remove duplicated word (ordinals#3598) * Show premine percentage (ordinals#3567) * Add back runes balances API (ordinals#3571) * Remove timeout for wallet client (ordinals#3621) * Add `dry-run` flag to `resume` command (ordinals#3592) * Clear etching when rune commitment is spent (ordinals#3618) * Add test Rune cannot be minted less than limit amount (ordinals#3556) * Update recursion.md with consistant syntax (ordinals#3585) * Check rune minimum at height before sending (ordinals#3626) * Release 0.18.3 (ordinals#3625) * Update sparrow-wallet.md --name flag update (ordinals#3635) * Fix zh.po translations (ordinals#3588) * Allow minting if mint begins next block (ordinals#3659) Make `ord wallet mint` check whether the rune to be minted is mintable in the next block, since that's the block in which our mint transaction might actually be mined. * Do not show runic outputs in cardinals command (ordinals#3656) * Update sat-hunting.md with how to transfer specific sats (ordinals#3666) * Allow longer request body for JSON API (ordinals#3655) * Clarify that inscriptions must be served from URLs with path /content/<INSCRIPTION_ID> (ordinals#3209) In order for inscriptions to retrieve their own inscription ID, inscription content must be served from URLs with path `/content/<INSCRIPTION_ID>`. When an inscription with ID X delegates to another inscription with ID Y, meaning that X has a delegate field whose value is Y, when requesting the content of inscription ID X, the content of inscription Y must be returned from the URL with path `/content/X`. This allows inscription Y to use the ID of delegating inscriptions as seeds for generative content, since the delegating inscriptions will all have different inscription IDs. * Use contains_key instead of get / is_some (ordinals#3705) * Fix typo on sat hunting page (ordinals#3668) * Add support for mjs files (ordinals#3653) * Use correct content type for .mjs inscriptions (ordinals#3712) `text/javascript` is the preferred MIME type for JavaScript, so use it instead of `application/x-javascript` when inscribing `.mjs` files. * Remove duplicate endpoint from explorer.md (ordinals#3716) Output `/output/<OUTPOINT>` was listed twice. * Persist config files for ord env command (ordinals#3715) * Add alt text to preview image (ordinals#3713) * Fix send runes (ordinals#3484) * Release 0.18.4 (ordinals#3720) - Bump version: 0.18.3 → 0.18.4 - Update changelog - Update changelog contributor credits - Update dependencies * Show progress bar for etching (ordinals#3673) * Bump rustfmt version 2018 to 2021 (ordinals#3721) * Patch some omissions in the Chinese translation (ordinals#3694) * Update runes.md docs (ordinals#3681) * Update sat-hunting.md (ordinals#3724) * Allow higher rpcworkqueue limit conf (ordinals#3615) * Allow specifying different output formats (ordinals#3424) * Release 0.18.5 (ordinals#3741) * Update index.rs to fix ord list command (ordinals#3762) * Add `ord wallet runics` command (ordinals#3734) * Clarify teleburning.md (ordinals#3744) * Allow postage equal to dust limit in mint.rs (ordinals#3756) * Update runes spec (ordinals#3745) * Fix fuzz testers (ordinals#3740) * Add command to list pending etchings (ordinals#3732) * Enable resuming a specific rune etching (ordinals#3679) * Add decode api (ordinals#3733) * Make settings public (ordinals#3768) * Index addresses (ordinals#3757) * Add parents recursive endpoint (ordinals#3749) * Remove duplicate example (ordinals#3776) * Add /inscription/:query/:child_number route (ordinals#3777) * Add mint progress field to rune.html (ordinals#3748) * Add feerate percentiles to blockinfo endpoint (ordinals#3753) * Update `ord list` to include inscriptions and runes information (ordinals#3766) * Add delegate value to recursive inscription endpoint (ordinals#3751) * Fix old conflicts * Resolve issues with Ordzaar modifications * Remove duplicate /inscriptions endpoint * Add recursive endpoint with more details about children (ordinals#3771) * Fix panic in ord env shutdown (ordinals#3787) * Make recursive endpoints proxiable (ordinals#3797) * Make settings public (ordinals#3800) * Link address on inscription.html (ordinals#3801) * Link address on output & tx (ordinals#3799) * Add --http-port to settings yaml (ordinals#3796) * Add sat balance to address page (ordinals#3810) * Make Index public (ordinals#3807) * Add -dev suffix to version (ordinals#3812) * Add all transaction hex to block json response (ordinals#3805) * Add public `shut_down()` function (ordinals#3811) * Add typed errors with `snafu` (ordinals#3832) * Add debugging tips README (ordinals#3823) * Add sat name to inscription page (ordinals#3826) * Add sat ranges to output (ordinals#3817) * Add --all flag on `ord wallet sats` (ordinals#3824) * Display aggregated rune balances in address page (ordinals#3831) * Update Spanish Translation (ordinals#3835) * Add charm to burned inscriptions (ordinals#3836) * Add ability to cancel shutdown (ordinals#3820) * Add inscriptions to address page (ordinals#3843) * Release 0.19.0 (ordinals#3844) - Bump version: 0.18.5 → 0.19.0 - Update changelog - Update changelog contributor credits - Update dependencies * Update index method name --------- Co-authored-by: twosatsmaxi <112330467+twosatsmaxi@users.noreply.github.com> Co-authored-by: bitspill <github@bitspill.net> Co-authored-by: Ordinarius <137325073+ordinariusprof@users.noreply.github.com> Co-authored-by: Dr.JingLee <95461562+DrJingLee@users.noreply.github.com> Co-authored-by: gmart7t2 <49558347+gmart7t2@users.noreply.github.com> Co-authored-by: RandolphJiffy <RandolphJiffy@hotmail.com> Co-authored-by: nine <118634361+cryptoni9n@users.noreply.github.com> Co-authored-by: Petrius Lima <petrius.lima@gmail.com> Co-authored-by: 0xLugon <lugon@alphatrue.com> Co-authored-by: raph <raphjaph@protonmail.com> Co-authored-by: Casey Rodarmor <casey@rodarmor.com> Co-authored-by: tgscan-dev <136890925+tgscan-dev@users.noreply.github.com> Co-authored-by: ynohtna92 <ynohtna92@users.noreply.github.com> Co-authored-by: nix.eth <113411347+nix-eth@users.noreply.github.com> Co-authored-by: rongyi <sqrongyi@163.com> Co-authored-by: Felipe Lincoln <mail.felipelincoln@gmail.com> Co-authored-by: blackj <yuan_gou@hotmail.com> Co-authored-by: StevenMia <166844090+StevenMia@users.noreply.github.com> Co-authored-by: Javier Villanueva <javiervd@gmail.com> Co-authored-by: oxSaturn <oxSaturn@proton.me> Co-authored-by: zmeyer44 <54515037+zmeyer44@users.noreply.github.com> Co-authored-by: Taha Abbasi <taha.abbasi@ferrum.network> Co-authored-by: losingle <losingle@gmail.com> Co-authored-by: Vannix <134819232+Vanniix@users.noreply.github.com> Co-authored-by: knowmost <167442703+knowmost@users.noreply.github.com> Co-authored-by: Eloc <42568538+elocremarc@users.noreply.github.com> Co-authored-by: bingryan <41174435+bingryan@users.noreply.github.com> Co-authored-by: AM shadow <154503348+shadowv0vshadow@users.noreply.github.com> Co-authored-by: Han Tuzun <hantuzun@users.noreply.github.com> Co-authored-by: Jeremy Rubin <j@rubin.io> Co-authored-by: Luis Aguilar <ldiego08@gmail.com> Co-authored-by: Jeason <me@cowpoke.cc> Co-authored-by: phorkish <164674569+phorkish@users.noreply.github.com> Co-authored-by: Daniel <daniel@adip.me> Co-authored-by: benbuschmann <ben@rootnaturally.com> Co-authored-by: thewrlck <138235209+thewrlck@users.noreply.github.com> Co-authored-by: Nick <113782315+nick07002@users.noreply.github.com> Co-authored-by: Young <63138174+yoitsyoung@users.noreply.github.com> Co-authored-by: Zerone495 <62160815+Zerone495@users.noreply.github.com> Co-authored-by: onchainguy <1436535+onchainguy-btc@users.noreply.github.com>
Closes #2903
Closes #3208
Adds a few lines to the documentation to make it clear that inscriptions are served from /content/<INSCRIPTION_ID>. Many inscriptions rely on this fact to get their own inscription ID, so it is important that this is properly documented so we know we can rely on this.
Also added clarification regarding the url of inscriptions that have delegates. Happy to remove this if people think it is implicit in the other sentences, but since ord.io is currently making this mistake, I thought it is better to clarify.
Also added an example for how inscriptions can self reference and fetch their own inscription ID. Also happy to remove this, as it isn't directly about the protocol, but rather how to use it. But a lot of people ask how to do this, so having it in the handbook would be helpful.