From dfa680f0ee857a678a2d11403faaa8e0741f3912 Mon Sep 17 00:00:00 2001 From: Wizz Wallet <153743376+wizz-wallet-dev@users.noreply.github.com> Date: Tue, 7 May 2024 11:19:30 +0800 Subject: [PATCH] Enables hosting with GitHub Pages (#9) --- .github/workflows/gh-pages.yml | 18 +++ .gitignore | 19 +++ README.md | 13 +- arc20-tokens/README.md | 10 +- arc20-tokens/normal-transfer-rules.md | 4 +- arc20-tokens/substantiation-factor.md | 2 +- collection-containers/dmint-guide.md | 212 +++++++++++++------------- faq.md | 14 +- nfts/splat-operation.md | 2 +- permanent-file-storage.md | 2 +- realm-names/README.md | 6 +- realm-names/mint-sub-realms.md | 4 +- realm-names/payname-format.md | 2 +- recursion-and-references.md | 16 +- reference-and-tools/electrumx-api.md | 5 +- reference-and-tools/specification.md | 9 +- rules-subrealms-and-dmint.md | 2 +- 17 files changed, 187 insertions(+), 153 deletions(-) create mode 100644 .github/workflows/gh-pages.yml create mode 100644 .gitignore diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml new file mode 100644 index 0000000..cf01175 --- /dev/null +++ b/.github/workflows/gh-pages.yml @@ -0,0 +1,18 @@ +name: 'Publish to GitHub Pages' + +on: + workflow_dispatch: + push: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Gitbook Action + uses: ZanderZhao/gitbook-action@master + with: + source_branch: 'main' + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..077d6b8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +.idea/ +.vscode/ + +# Node rules: +## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +## Dependency directory +## Commenting this out is preferred by some people, see +## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git +node_modules + +# Book build output +_book + +# eBook build output +*.epub +*.mobi +*.pdf diff --git a/README.md b/README.md index fbc83bd..a0aa7ec 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,10 @@ description: An Introduction to Atomicals Theory and Digital Objects on Bitcoin ## What is the Atomicals Protocol? -The Atomicals Protocol is a simple, yet flexible protocol for minting, transferring and updating [_digital objects_](broken-reference) _(_traditionally called non-fungible tokens_)_ for unspent transaction output (UTXO) blockchains such as Bitcoin. An Atomical (or "atom") is a way to organize the creation, transfer and updates of digital objects – it is essentially a chain of digital ownership defined according to a few simple rules. +The Atomicals Protocol is a simple, yet flexible protocol for minting, transferring and updating +_digital objects (traditionally called non-fungible tokens)_ +for unspent transaction output (UTXO) blockchains such as Bitcoin. An Atomical (or "atom") is a way to organize the creation, +transfer and updates of digital objects – it is essentially a chain of digital ownership defined according to a few simple rules. ## Why use Atomicals? @@ -24,7 +27,7 @@ The Atomical specification is _the simplest possible way_ to organize digital pr * Virtual land and title registries * Dynamic objects and state for games * Social media profiles, posts and communities -* Anywhere security and decentralization is critical concern. Military grade security and verification requirements. +* Anywhere security and decentralization is critical concern. Military grade security and verification requirements. The usage philosophy of Atomicals is to pass along the complete history of an Atomical digital object from mint inception and including every transfer updates. _Even if an Atomical is updated or exchanges hands 10,000 times – that amounts to only about 2.5 MB of data (250 bytes x 10,000)._ A digital object is self-evident, unforgeable chain of authenticity that does not rely on any third party service or centralized indexer for verification purposes. @@ -62,7 +65,7 @@ Atomicals is a shift to sovereignty and self-ownership over our digital lives. A The best way to understand the differences of Atomicals is to compare it against other popular non-fungible token (NFT) protocols. | | Atomicals | Ordinals | Ethereum ERC721 | -| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | +|-----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------| | **Value Proposition** | Digital Objects | Digital Artifacts | Digital Collectibles | | **Blockchains** | Bitcoin and all UTXO blockchains | Bitcoin and all UTXO blockchains | Ethereum EVM compatible blockchains | | **Mint Technique** | Bitcoin: Commit & reveal w/ "_atom_" envelope. | Bitcoin: Commit & reveal w/ "_ord_" envelope. | Fund and deploy contract account | @@ -78,9 +81,9 @@ The best way to understand the differences of Atomicals is to compare it against ## Atomical Numbers, IDs, REFs -An Atomical Number is a sequential numbering scheme starting from 0. The numbering scheme is used to give a global order of the Atomicals that were minted. The Atomicals numbering scheme provides a simple way to refer to individual Atomicals with a short number that complements the Atomical ID. +An Atomical Number is a sequential numbering scheme starting from 0. The numbering scheme is used to give a global order of the Atomicals that were minted. The Atomicals numbering scheme provides a simple way to refer to individual Atomicals with a short number that complements the Atomical ID. -Atomicals have the Atomical ID which is a unique identifier based on the hash and output of the transaction it was minted in such as _**\**_**i**_**\**_ (Example: _a14e65573ff32b95b91a0ed8367feec64125e5f4ff44d9901002b262da959e6di0_). In contrast, the Atomical number is the sequential ordering of every Atomical that was minted, in the order they appear in the blockchain. +Atomicals have the Atomical ID which is a unique identifier based on the hash and output of the transaction it was minted in such as _**\**_**i**_**\**_ (Example: _a14e65573ff32b95b91a0ed8367feec64125e5f4ff44d9901002b262da959e6di0_). In contrast, the Atomical number is the sequential ordering of every Atomical that was minted, in the order they appear in the blockchain. An Atomical Reference ("REF" for short) is an alternative encoding of the Atomical ID using Crockford-base32 to provide a richer character set to make it more useful for vanity identifiers. (See section on 'Bitwork') diff --git a/arc20-tokens/README.md b/arc20-tokens/README.md index 87e452e..d3daa00 100644 --- a/arc20-tokens/README.md +++ b/arc20-tokens/README.md @@ -4,7 +4,7 @@ description: Fungible Token colored coin standard backed by Satoshis # ARC20 Tokens -The Atomicals Protocol solves the long standing problem of how to represent arbitrary fungible token assets on the Bitcoin blockchain. The ARC-20 fungible token standard finally brings colored coins to Bitcoin and uses each Satoshi to represent ownership units of deployed tokens. This means that every unit of the token is backed by 1 Satoshi forever. _It acts as a kind of "digital gold content" that underpins the value of the token._ It also means every token can never go below 1 Satoshi in value, by definition. +The Atomicals Protocol solves the long standing problem of how to represent arbitrary fungible token assets on the Bitcoin blockchain. The ARC-20 fungible token standard finally brings colored coins to Bitcoin and uses each Satoshi to represent ownership units of deployed tokens. This means that every unit of the token is backed by 1 Satoshi forever. _It acts as a kind of "digital gold content" that underpins the value of the token._ It also means every token can never go below 1 Satoshi in value, by definition. ARC-20 uses the native Satoshi unit to represent each token, and they can be split and combined just like regular Bitcoins. ARC-20 tokens can be minted by anyone, and transferred to any Bitcoin address type, and works with wallets that support UTXO selection such as Sparrow Wallet [(external link)](https://www.sparrowwallet.com/). There are two modes of deployment: direct and decentralized. Learn more below about the different ways the ARC-20 can be minted and their benefits. @@ -45,7 +45,7 @@ _start\_height:_ Starting block height that mints may be begin. Can set block he _image:_ An image icon to represent the token. The name of the file will appear in the token. Use caution and rename the file first completely and include it as "image.jpg" or "image.png" -**Optional Flags:** +**Optional Flags:** _--mintbitworkc=\_ @@ -91,9 +91,9 @@ _--satsbyte=\_ Set the satoshis per byte for the transaction and override the default. -## Direct Mint +## Direct Mint -The second way to mint or create an ARC-20 token type is to directly create a single output which contains the total supply, with each Satoshi representing a single unit of the token. +The second way to mint or create an ARC-20 token type is to directly create a single output which contains the total supply, with each Satoshi representing a single unit of the token. ### Mint entire supply in one step @@ -106,7 +106,7 @@ Optional flags: _**See format of metadata.json below**_ -The second way to mint or create an ARC-20 token type is to directly create a single output which contains the total supply, with each Satoshi representing a single unit of the token. +The second way to mint or create an ARC-20 token type is to directly create a single output which contains the total supply, with each Satoshi representing a single unit of the token. For example, to mint a token with a supply of 100,000,000, simply create a single output with exactly 1 full Bitcoin (since 1 BTC = 100,000,000 Satoshis). An advantage of using the direct minting mode is that the team who creates it must put up the required amount of Bitcoins to substantiate the total minted supply; which greatly reduces dishonest actors from printing tokens out of thin air. diff --git a/arc20-tokens/normal-transfer-rules.md b/arc20-tokens/normal-transfer-rules.md index 3e0fb8a..88e9d0d 100644 --- a/arc20-tokens/normal-transfer-rules.md +++ b/arc20-tokens/normal-transfer-rules.md @@ -11,7 +11,7 @@ The normal operation of an ARC20 token transfer is that the sum total of all the Fully allocating - cleanly assign all inputs to outputs with FIFO rule. Atomicals 1932 ,7920, 0542 are Non-Fungible Tokens (NFT) are assigned in First-In First Out order while skipping unspendable outputs (OP\_RETURN). The first input NFTs are assigned starting from Output 0, and then each subsequent NFT input assigned to the next available output.\ -Multiple Atomicals at the same UTXO input are sorted by atomical\_id. Since “1932” is before “7920” it goes first. +Multiple Atomicals at the same UTXO input are sorted by atomical\_id. Since “1932” is before “7920” it goes first.

Fully allocating - cleanly assign all inputs to outputs with FIFO rule.

@@ -30,7 +30,7 @@ If they Atomicals cannot be “cleanly assigned”, as in the example above the ## Transfers of Fungible Tokens (ARC20) -Insufficient outputs - permanently destroying unallocated units +Insufficient outputs - permanently destroying unallocated units Atomical 86a1 is Fungible Tokens (ARC20) and can be split and merged across outputs.\ \ diff --git a/arc20-tokens/substantiation-factor.md b/arc20-tokens/substantiation-factor.md index 2c2011e..2309309 100644 --- a/arc20-tokens/substantiation-factor.md +++ b/arc20-tokens/substantiation-factor.md @@ -27,7 +27,7 @@ Consider the table of Exponents to represent token units with 1:1 backing, then 10^5 = 100,000 ``` -For example, if we wish to trade 1 unit of a token, while still respect the dust limit. Then we simply need to substantiate each unit of the token with 1,000 regular satoshis and then we can perform a transfer of 1,000 satoshis with Exponent=3. +For example, if we wish to trade 1 unit of a token, while still respect the dust limit. Then we simply need to substantiate each unit of the token with 1,000 regular satoshis and then we can perform a transfer of 1,000 satoshis with Exponent=3. An example will demonstrate how this works, preserving the fungibility and fluidity of the ARC20 transfers. diff --git a/collection-containers/dmint-guide.md b/collection-containers/dmint-guide.md index 18f457d..57b367c 100644 --- a/collection-containers/dmint-guide.md +++ b/collection-containers/dmint-guide.md @@ -12,12 +12,12 @@ description: Atomicals NFT Container DMint Tutorial ## Terms -| Mint | The process of creating content on a blockchain. It typically involves generating and recording new items on the blockchain. | -| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| DMINT | "Decentralized Mint", indicating a decentralized minting operation. | -| Container | A collection or a set of items. | -| Bitwork | The difficulty of minting. The rules for bitwork can be found in the [https://docs.atomicals.xyz/bitwork-mining](https://docs.atomicals.xyz/bitwork-mining). | -| Timestamp | A continuous 10 or 13-digit number used to represent time. | +| Mint | The process of creating content on a blockchain. It typically involves generating and recording new items on the blockchain. | +|-----------|------------------------------------------------------------------------------------------------------------------------------| +| DMINT | "Decentralized Mint", indicating a decentralized minting operation. | +| Container | A collection or a set of items. | +| Bitwork | The difficulty of minting. The rules for bitwork can be found in the [Bitwork Mining](../bitwork-mining.md). | +| Timestamp | A continuous 10 or 13-digit number used to represent time. | ## Overview @@ -32,7 +32,7 @@ The process can be broadly divided into four main blocks: As a project owner, your focus should be on steps 1, 2, and 3. -> ​💰 Before each step, there is a ⛓️ icon indicating that the operation is on-chain, requiring gas consumption.​ +> 💰 Before each step, there is a ⛓️ icon indicating that the operation is on-chain, requiring gas consumption. #### **Prepare Collection Data** @@ -57,7 +57,7 @@ As a project owner, your focus should be on steps 1, 2, and 3. 1. ⛓️ Download NFT data (A) and locally mint using the official command-line tool. -> ​📌 For your convenience in distinguishing between different files, we have marked them with uppercase English labels. Please pay attention to the corresponding files at each step. Using incorrect files may result in unexpected on-chain data.​ +> 📌 For your convenience in distinguishing between different files, we have marked them with uppercase English labels. Please pay attention to the corresponding files at each step. Using incorrect files may result in unexpected on-chain data. From the outlined steps above, it is evident that project owners do not need to upload each NFT individually to the blockchain. Users are responsible for verifying and bearing the gas costs during the Mint process. @@ -67,11 +67,11 @@ From the outlined steps above, it is evident that project owners do not need to The following operations are based on version 0.1.46 of the atomicals-js command-line tool ([@aa34095c](https://github.com/atomicals/atomicals-js/commit/aa34095c673de28166105e26ab2e898179e8039a)). The tool version may be updated periodically, so before proceeding, please check whether your local CLI is the latest or an available version. For installation and configuration, please refer to: [https://github.com/atomicals/atomicals-js#install](https://github.com/atomicals/atomicals-js#install). If you have any questions about a specific command, use **`-h`** when entering the command to get help content. -> ​💡 To avoid errors and unexpected discrepancies during the operation, it is recommended to test the entire process on the testnet before any actions on the mainnet.​ +> 💡 To avoid errors and unexpected discrepancies during the operation, it is recommended to test the entire process on the testnet before any actions on the mainnet. -> ​❗ Each step that includes content with \`#container-name\` represents the container name, and it must start with \`#\`. Otherwise, some commands may identify it as a different type of Atomicals.​ +> ❗ Each step that includes content with \`#container-name\` represents the container name, and it must start with \`#\`. Otherwise, some commands may identify it as a different type of Atomicals. -> ​💰 For each command in the steps with \`--satsbyte\`, please fill in the value based on the on-chain gas situation.​ +> 💰 For each command in the steps with \`--satsbyte\`, please fill in the value based on the on-chain gas situation. *** @@ -80,104 +80,104 @@ The following operations are based on version 0.1.46 of the atomicals-js command 1. Prepare a folder containing all the original NFT files (images). It is recommended to pre-change the file names (e.g., "number.png" to "1234.png") to reduce the possibility and complexity of later data modifications. File names only support digits, English, and hyphens (`-`), and cannot start with a hyphen. The maximum length is 64 characters. 2. Run a command to generate processed data for all NFTs. After completion, a new folder will be generated. -``` -$ yarn cli prepare-dmint-items "path/to/collection-folder" "path/to/output-folder" -``` + ``` + $ yarn cli prepare-dmint-items "path/to/collection-folder" "path/to/output-folder" + ``` 3. The generated folder is named "output-folder" with a timestamp, containing individual item-\*.json files for each NFT. Please note that the data generated at this point only includes the `mainHash` and `data` fields. If necessary, you can specify `bitworkc`/`bitworkr` in the `args`, and after modification, users will be required to use the declared bitwork during minting. -``` -{ -  "mainHash": "0099ad5961eff12096b851d9701bedfe09ec3433dad89857bcaddc5ea2172c98", -  "data": { -    "args": { -      "request_dmitem": "test-1", -      "main": "image.jpg", -      "i": true -   }, -    "image.jpg": { -      "$b": "ffd8ffe000104a4649460001010100600060000ffd9" -   } - } -} -``` + ```json + { + "mainHash": "0099ad5961eff12096b851d9701bedfe09ec3433dad89857bcaddc5ea2172c98", + "data": { + "args": { + "request_dmitem": "test-1", + "main": "image.jpg", + "i": true + }, + "image.jpg": { + "$b": "ffd8ffe000104a4649460001010100600060000ffd9" + } + } + } + ``` 4. Run the following command to generate DMINT data. Replace `path/to/folder` with the path to the folder generated in step 2, and `mintHeight` with the starting block height for minting (a suggested value is `0`, meaning minting can occur immediately after deployment). After completion, a new "dmint-timestamp.json" file will be added to the folder, and all processed data for NFTs will be updated. - -``` -yarn cli prepare-dmint "path/to/folder" 0 "b1d0" -``` - -``` -{ -  "dmint": { -    "v": "1", -    "mint_height": 0, -    "merkle": "5c529dacfb37fc24804c550abc851602a9926016a424390387eb23e38de4cca1", -    "immutable": true, - "items": 10, -    "rules": [ -     { -        "p": ".*", -        "bitworkc": "7baf" -     } -   ] - } -} -``` - -From here, `mint_height` can be modified to specify which block your DMINT should start. -For example: `840000` means the DMINT of the container can only start after the `840000` height block has been confirmed. - -``` -{ -  "mainHash": "0099ad5961eff12096b851d9701bedfe09ec3433dad89857bcaddc5ea2172c98", -  "data": { -    "args": { -      "request_dmitem": "test-1", -      "main": "image.jpg", -      "i": true, -      "proof": [ -       { -          "p": true, -          "d": "3212c74b3b5083433a8111f80369d8c591711c577e45dacb8ccaf7960d96790f" -       } -     ] -   }, -    "image.jpg": { -      "$b": "ffd8ffe000104a4649460001010100600060000ffd9" -   } - }, -  "targetVector": "test-1:any:any:image.jpg:0099ad5961eff12096b851d9701bedfe09ec3433dad89857bcaddc5ea2172c97", -  "targethash": "0099ad5961eff12096b851d9701bedfe09ec3433dad89857bcaddc5ea2172c98" -} -``` - -> ​❗ Each time you run **`prepare-dmint`** a new **`dmint-timestamp.json`** file will be generated, instead of modifying the old one. Please be cautious not to use incorrect data for subsequent operations.​ + + ``` + yarn cli prepare-dmint "path/to/folder" 0 "b1d0" + ``` + + ```json + { + "dmint": { + "v": "1", + "mint_height": 0, + "merkle": "5c529dacfb37fc24804c550abc851602a9926016a424390387eb23e38de4cca1", + "immutable": true, + "items": 10, + "rules": [ + { + "p": ".*", + "bitworkc": "7baf" + } + ] + } + } + ``` + + From here, `mint_height` can be modified to specify which block your DMINT should start. + For example: `840000` means the DMINT of the container can only start after the `840000` height block has been confirmed. + + ```json + { + "mainHash": "0099ad5961eff12096b851d9701bedfe09ec3433dad89857bcaddc5ea2172c98", + "data": { + "args": { + "request_dmitem": "test-1", + "main": "image.jpg", + "i": true, + "proof": [ + { + "p": true, + "d": "3212c74b3b5083433a8111f80369d8c591711c577e45dacb8ccaf7960d96790f" + } + ] + }, + "image.jpg": { + "$b": "ffd8ffe000104a4649460001010100600060000ffd9" + } + }, + "targetVector": "test-1:any:any:image.jpg:0099ad5961eff12096b851d9701bedfe09ec3433dad89857bcaddc5ea2172c97", + "targethash": "0099ad5961eff12096b851d9701bedfe09ec3433dad89857bcaddc5ea2172c98" + } + ``` + + > ❗ Each time you run **`prepare-dmint`** a new **`dmint-timestamp.json`** file will be generated, instead of modifying the old one. Please be cautious not to use incorrect data for subsequent operations. 5. You can modify the bitwork rules for dmint. In the `rules`, `p` represents the Pattern, allowing you to use regular expressions to specify different `bitworkc`. Please refer to available resources on regular expressions for rule composition. In the example below, for instance: -``` -{ -  "dmint": { -    "v": "1", -    "mint_height": 0, -    "merkle": "5c529dacfb37fc24804c550abc851602a9926016a424390387eb23e38de4cca1", -    "immutable": true, - "items": 10, -    "rules": [ -     { -        "p": "1$", -        "bitworkc": "890a" -     }, -     { -        "p": ".*", -        "bitworkc": "7baf" -     } -   ] - } -} -``` + ```json + { + "dmint": { + "v": "1", + "mint_height": 0, + "merkle": "5c529dacfb37fc24804c550abc851602a9926016a424390387eb23e38de4cca1", + "immutable": true, + "items": 10, + "rules": [ + { + "p": "1$", + "bitworkc": "890a" + }, + { + "p": ".*", + "bitworkc": "7baf" + } + ] + } + } + ``` [See Rules Guide for more details](../rules-subrealms-and-dmint.md) @@ -185,12 +185,12 @@ For example: `840000` means the DMINT of the container can only start after the In that case, the rule **`1$`** signifies that the `bitworkc` for items ending with `1` (e.g., `test1`) should be `890a`, while other items (e.g., `test`) should have `7baf` as their `bitworkc`. Rules are ordered from the most specific (minimum subset) to the most general (full set). -> ​❗ If you have individually set `bitworkc`/`bitworkr` for an item, you need to manually declare the corresponding pattern and rule in the \`rules\`. Otherwise, there will be conflicts between them and the base rules, making minting impossible after formal closure and deployment. The tool does not provide any prompts for this, so exercise caution when making modifications.​ +> ❗ If you have individually set `bitworkc`/`bitworkr` for an item, you need to manually declare the corresponding pattern and rule in the \`rules\`. Otherwise, there will be conflicts between them and the base rules, making minting impossible after formal closure and deployment. The tool does not provide any prompts for this, so exercise caution when making modifications. 6. If you modify item data, ensure that you re-run the command from step 4 each time after making changes to regenerate the data. 7. Copy a metadata **`dmint-metadata.json`** from **`template/containers/dmint-collection-general-dmint-metadata.json`** in the tool directory or [https://github.com/atomicals/atomicals-js/blob/master/templates/containers/dmint-collection-general-metadata.json](https://github.com/atomicals/atomicals-js/blob/master/templates/containers/dmint-collection-general-metadata.json), and adjust it according to your content. -> ​❗ You can refer to the [Collection Containers](https://docs.atomicals.xyz/collection-containers#collection-format-recommended) to write this section, but please do not declare \`attrs\` and \`items\` as they are incorrect content for DMINT and will lead to the inability to seal the container.​ +> ❗ You can refer to the [Collection Containers](README.md#collection-format-recommended) to write this section, but please do not declare \`attrs\` and \`items\` as they are incorrect content for DMINT and will lead to the inability to seal the container. *** @@ -204,7 +204,7 @@ $ yarn cli mint-container "#container-name" --initialowner "yourWalletAddress" - 2. ⛓️ Enable the dmint status for the container using the previously generated "dmint-timestamp.json." Replace "dmint-json-path.json" with the file path of data B \[generated in step 2 - Prepare Collection Data]. -> ​❗ You need to wait for 4 block confirmations (turning into verified status) after completing “Configure Container - Step 1”. You can check the container status at https://wizz.cash/live-mint by entering the revealTxid.​ +> ❗ You need to wait for 4 block confirmations (turning into verified status) after completing “Configure Container - Step 1”. You can check the container status at https://wizz.cash/live-mint by entering the revealTxid. ``` $ yarn cli enable-dmint "#container-name" "dmint-json-path.json" --satsbyte=1 @@ -256,7 +256,7 @@ $ yarn cli set-container-data "#container-name" "path/to/container-dmint-metadat 5. Execute the command to seal the container. -> ​❗ This operation is \*\*IRREVERSIBLE\*\*! Before closing, please complete the item validation in \[Validate NFT Item]. Ensure that all items have been validated and are correct.​ +> ❗ This operation is \*\*IRREVERSIBLE\*\*! Before closing, please complete the item validation in \[Validate NFT Item]. Ensure that all items have been validated and are correct. ``` $ yarn cli seal "#container-name" --satsbyte=1 @@ -310,7 +310,7 @@ $ yarn cli validate-container-item "#container-name" "test-item-3" "path/to/item } ``` -> ​❗ It is recommended to validate each item to ensure the effectiveness of all data.​ +> ❗ It is recommended to validate each item to ensure the effectiveness of all data. ### **Mint NFT Item** diff --git a/faq.md b/faq.md index ee596c7..c600f51 100644 --- a/faq.md +++ b/faq.md @@ -4,13 +4,13 @@ description: Frequently Asked Questions About The Atomicals Protocol # FAQ -## What is the Atomicals Protocol? +## What is the Atomicals Protocol? -Atomicals Protocol is the most simple, flexible and secure way of creating digital objects on Bitcoin. Every Atomical is a self-evident and tamper resistant chain of digital signatures, it is a robust file format for every use imaginable. Everything on the internet can now potentially be owned digital property. +Atomicals Protocol is the most simple, flexible and secure way of creating digital objects on Bitcoin. Every Atomical is a self-evident and tamper resistant chain of digital signatures, it is a robust file format for every use imaginable. Everything on the internet can now potentially be owned digital property. -## Does Atomicals require a separate chain, additional layers or any changes to Bitcoin? +## Does Atomicals require a separate chain, additional layers or any changes to Bitcoin? -No! It's here now and works on native Bitcoin and existing wallets today. It leverages the key design of Bitcoin and requires no secondary layers, side-chains and no trusted services to operate. +No! It's here now and works on native Bitcoin and existing wallets today. It leverages the key design of Bitcoin and requires no secondary layers, side-chains and no trusted services to operate. ## What can Atomicals Digital Objects be used for? @@ -27,13 +27,11 @@ Atomicals is designed for the most demanding security requirements with zero roo The heart of Atomicals is a few key simple rules to follow for mint, transfer, and update operations, continue reading to the Protocol Overview to understand the high level flow before diving deeper. If you like, you can just [skip all the theory and go straight to minting your first Atomical within a couple of minutes.](reference-and-tools/javascript-library-cli.md) -## How does Atomicals Protocol work? +## How does Atomicals Protocol work? Learn more about how the protocol works by visiting the Protocol Specification page. -{% content-ref url="reference-and-tools/specification.md" %} -[specification.md](reference-and-tools/specification.md) -{% endcontent-ref %} +{% include "reference-and-tools/specification.md" %} ## Why are Atomicals called "digital objects" instead of "NFTs"? diff --git a/nfts/splat-operation.md b/nfts/splat-operation.md index 1d2feb1..9396f77 100644 --- a/nfts/splat-operation.md +++ b/nfts/splat-operation.md @@ -6,7 +6,7 @@ description: >- # Splat Operation -In the event that NFTs were merged to the same UTXO location, use the `SPLAT(x)` operation to quickly seperate all of them in a single transaction. +In the event that NFTs were merged to the same UTXO location, use the `SPLAT(x)` operation to quickly seperate all of them in a single transaction. Examples: diff --git a/permanent-file-storage.md b/permanent-file-storage.md index 0e37450..5cb2b42 100644 --- a/permanent-file-storage.md +++ b/permanent-file-storage.md @@ -27,4 +27,4 @@ Success sent tx: db8a761ed493627138c5733071558c4caa65912c5cba3e1061c02d6d793346 We will use the _reveal location_ (db8a761ed493627138c5733071558c4caa65912c5cba3e1061c02d6d7933461fi0) to refer to the image _image.png_ below. -Now that the file is on chain, use the [recursion and references URN](https://docs.atomicals.xyz/recursion-and-references) syntax to refer to the file. +Now that the file is on chain, use the [recursion and references URN](recursion-and-references.md) syntax to refer to the file. diff --git a/realm-names/README.md b/realm-names/README.md index 3192c04..0ad2149 100644 --- a/realm-names/README.md +++ b/realm-names/README.md @@ -4,7 +4,7 @@ description: Overview of Realm Digital Objects (Realm Name Service) # Realm Names -This section describes how to mint a special type of Atomical digital object called a _Realm._ You can query and search Realm names on [https://realm.name](https://realm.name) +This section describes how to mint a special type of Atomical digital object called a _Realm._ You can query and search Realm names on [https://realm.name](https://realm.name)

Claim your Realm +name on Bitcoin @ https://realm.name

@@ -34,7 +34,7 @@ Download and install the [atomicals-js](https://github.com/atomicals/atomicals-j The purpose of the wallet is to create p2tr (pay-to-taproot) spend scripts and to receive change from the transactions made for the various operations. _Do not put more funds than you can afford to lose, as this is still beta!_ -To initialize a new `wallet.json` file that will store your address for receiving change use the `wallet-init` command. +To initialize a new `wallet.json` file that will store your address for receiving change use the `wallet-init` command. ``` npm run cli wallet-init @@ -49,7 +49,7 @@ WIF: L5Sa65gNR6QsBjqK.....r6o4YzcqNRnJ1p4a6GPxqQQ ------------------------------------------------------ ``` -#### Step 3. Mint Realm +#### Step 3. Mint Realm The basic format to mint a Realm name using the [Atomicals CLI ](../reference-and-tools/javascript-library-cli.md)is: diff --git a/realm-names/mint-sub-realms.md b/realm-names/mint-sub-realms.md index 902b2ce..b552f55 100644 --- a/realm-names/mint-sub-realms.md +++ b/realm-names/mint-sub-realms.md @@ -54,7 +54,7 @@ Recall that you can convert between output script hex format to addresses and vi ### Step 2. Set the Minting Rules with "enable-subrealms" for your Realm -With the rules file you have created above in Step 1, we will enable it for your particular Realm. +With the rules file you have created above in Step 1, we will enable it for your particular Realm. Using the CLI, execute the following command to enable subrealm minting: @@ -94,7 +94,7 @@ yarn cli realm-info mycoolrealm.nicesubrealm yarn cli mint-subrealm +mycoolrealm.nicesubrealm --satsbyte=100 ``` -Then follow the on-screen instructions. In the case of a mint that requires a payment, then you must use a tool that allows payments. +Then follow the on-screen instructions. In the case of a mint that requires a payment, then you must use a tool that allows payments. #### Step 3. (If payment is required) Make payment for Subrealm during payment window. diff --git a/realm-names/payname-format.md b/realm-names/payname-format.md index ce9bafb..bfe810f 100644 --- a/realm-names/payname-format.md +++ b/realm-names/payname-format.md @@ -65,5 +65,5 @@ To see how to store the data for a Realm, consider the following format layout f **delegate:** It is possible to delegate the entire pay names available for a Realm to an NFT, and it is also possible to delegate an individual inbox. When _delegate_ is set at the top directly underneath _paynames_ field, then it takes precedence and the rest of the data is ignored (since the entire paynames settings are delegated elsewhere) - + diff --git a/recursion-and-references.md b/recursion-and-references.md index 5da9e16..c30fa3f 100644 --- a/recursion-and-references.md +++ b/recursion-and-references.md @@ -29,7 +29,7 @@ Examples of Recursion with References in the `ctx` field: } ``` -**Note:** It is preferably to use the "dat" command to refer to on-chain assets where applicable. When using containers, realms or the dynamic references (using slash "/") it is possible the resource. +**Note:** It is preferably to use the "dat" command to refer to on-chain assets where applicable. When using containers, realms or the dynamic references (using slash "/") it is possible the resource. ## Conventions @@ -55,7 +55,7 @@ The philosophy is that we should be able to unambiguously reference Atomicals di ## References by Atomical ID -**Get general information** +**Get general information** atom:btc:id:\ @@ -77,7 +77,7 @@ atom:btc:id:\/ **Get latest version of a file** -atom:btc:id:\/image.png +atom:btc:id:\/image.png **Get specific version of a file** @@ -91,14 +91,14 @@ The \[txid or version number or blockheight] can be of the form: ## References by Container Name -**Get general information** +**Get general information** atom:btc:container:\ Examples: \ atom:btc:id:my-coolcontainer-name -**Get original minted data** +**Get original minted data** atom:btc:container:\$ @@ -120,7 +120,7 @@ atom:btc:container:\/items@\[txid or version number] ## References by Realms -**Get general information** +**Get general information** atom:btc:realm:\ @@ -147,7 +147,7 @@ The \[txid or version number or blockheight] can be of the form: ## References by ARC20 (Fungible Tokens) -**Get general information** +**Get general information** atom:btc:arc:\ @@ -159,7 +159,7 @@ atom:btc:arc:\$ atom:btc:arc:\/icon.png -**Get event feed at ticker** +**Get event feed at ticker** atom:btc:arc:\/events (To be determined - TBD) diff --git a/reference-and-tools/electrumx-api.md b/reference-and-tools/electrumx-api.md index 4ce773c..38dd229 100644 --- a/reference-and-tools/electrumx-api.md +++ b/reference-and-tools/electrumx-api.md @@ -4,7 +4,4 @@ description: Learn about the Decentralized Atomicals ElectrumX Index Service # ElectrumX API -{% hint style="info" %} -[Open The Atomicals ElectrumX API Documentation ](https://github.com/atomicals/atomicals-electrumx) -{% endhint %} - \ No newline at end of file +[Open The Atomicals ElectrumX API Documentation](https://github.com/atomicals/atomicals-electrumx) diff --git a/reference-and-tools/specification.md b/reference-and-tools/specification.md index d31f559..02b06a3 100644 --- a/reference-and-tools/specification.md +++ b/reference-and-tools/specification.md @@ -4,9 +4,8 @@ description: Detailed Documentation of Atomicals Protocol # Specification -{% hint style="success" %} -The heart of Atomicals Protocol is a **few simple rules** to follow for mint, transfer, update, delete and extract operations. After getting acquainted with the theory, jump to [minting your first Atomical Digital Object](javascript-library-cli.md) in a few minutes -{% endhint %} +The heart of Atomicals Protocol is a **few simple rules** to follow for mint, transfer, update, delete and extract operations. +After getting acquainted with the theory, jump to [minting your first Atomical Digital Object](javascript-library-cli.md) in a few minutes ## ⚠️Warning: The specification is defined in code. Review the commands in the [atomicals-js CLI](https://github.com/atomicals/atomicals-js/tree/master/lib/commands) to see how they function accurately. @@ -29,7 +28,7 @@ The envelope can appear anywhere in the spend script, but it is recommended to p ``` -OP_CHECKSIG     // Perform a check signature against the pubkey-hash +OP_CHECKSIG // Perform a check signature against the pubkey-hash OP_FALSE OP_IF 0x0461746F6D // Push "atom" 4 bytes @@ -38,7 +37,7 @@ OP_IF OP_ENDIF ``` -The format of the `` field is a single push data representing the type of operation that follows. The `` data is interpreted in the context of the operation type. The `` is a [CBOR](https://cbor.io/) encoded data structure and can be decoded in a variety of programming languages. CBOR provides a concise and expressive way to encode data and greatly simplifies parsing Atomicals protocol operations since there are only push datas that contain the necessary information for all the files and their metadata. +The format of the `` field is a single push data representing the type of operation that follows. The `` data is interpreted in the context of the operation type. The `` is a [CBOR](https://cbor.io/) encoded data structure and can be decoded in a variety of programming languages. CBOR provides a concise and expressive way to encode data and greatly simplifies parsing Atomicals protocol operations since there are only push datas that contain the necessary information for all the files and their metadata. diff --git a/rules-subrealms-and-dmint.md b/rules-subrealms-and-dmint.md index ecc32a8..e17ebc9 100644 --- a/rules-subrealms-and-dmint.md +++ b/rules-subrealms-and-dmint.md @@ -74,7 +74,7 @@ In the third example, we specify that if the item name starts with the number `" ### Example 4: Require a payment to a certain address to claim the item -To enable "pay to claim" use the `"o"` (output script) field to indicate what output must be paid in order to successfully claim. +To enable "pay to claim" use the `"o"` (output script) field to indicate what output must be paid in order to successfully claim. ```` ```json