Skip to content

Commit

Permalink
Enables hosting with GitHub Pages (#9)
Browse files Browse the repository at this point in the history
  • Loading branch information
wizz-wallet-dev authored May 7, 2024
1 parent 19feb92 commit dfa680f
Show file tree
Hide file tree
Showing 17 changed files with 187 additions and 153 deletions.
18 changes: 18 additions & 0 deletions .github/workflows/gh-pages.yml
Original file line number Diff line number Diff line change
@@ -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 }}
19 changes: 19 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -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
13 changes: 8 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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?

Expand All @@ -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.

Expand Down Expand Up @@ -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 |
Expand All @@ -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 _**\<txid>**_**i**_**\<index>**_ (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.&#x20;
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 _**\<txid>**_**i**_**\<index>**_ (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')

Expand Down
10 changes: 5 additions & 5 deletions arc20-tokens/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.&#x20;
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.

Expand Down Expand Up @@ -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:**&#x20;
**Optional Flags:**

_--mintbitworkc=\<prefix>_

Expand Down Expand Up @@ -91,9 +91,9 @@ _--satsbyte=\<number>_

Set the satoshis per byte for the transaction and override the default.

## Direct Mint&#x20;
## 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.&#x20;
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

Expand All @@ -106,7 +106,7 @@ Optional flags:

_<mark style="color:red;">**See format of metadata.json below**</mark>_

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.&#x20;
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.

Expand Down
4 changes: 2 additions & 2 deletions arc20-tokens/normal-transfer-rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.&#x20;
Multiple Atomicals at the same UTXO input are sorted by atomical\_id. Since “1932” is before “7920” it goes first.

<figure><img src="../.gitbook/assets/Transfers of Fungible Tokens (ARC20) (7).jpg" alt=""><figcaption><p>Fully allocating - cleanly assign all inputs to outputs with FIFO rule.</p></figcaption></figure>

Expand All @@ -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&#x20;
Insufficient outputs - permanently destroying unallocated units

Atomical 86a1 is Fungible Tokens (ARC20) and can be split and merged across outputs.\
\
Expand Down
2 changes: 1 addition & 1 deletion arc20-tokens/substantiation-factor.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.&#x20;
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.

Expand Down
Loading

0 comments on commit dfa680f

Please sign in to comment.