Skip to content

Commit af633d8

Browse files
committed
init
0 parents  commit af633d8

26 files changed

+13422
-0
lines changed

.cspell.json

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{
2+
"version": "0.2",
3+
"$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/master/cspell.schema.json",
4+
"language": "en",
5+
"words": [
6+
"authchains",
7+
"BCMR",
8+
"rebranded",
9+
"rebranding",
10+
"redenominated",
11+
"redenomination",
12+
"sublicensable",
13+
"TXLOCKTIME"
14+
],
15+
"flagWords": [],
16+
"ignorePaths": [],
17+
"patterns": [
18+
{
19+
"name": "cash-address-format",
20+
"pattern": "/:[qpzry9x8gf2tvdw0s3jn54khce6mua7l]+/g"
21+
},
22+
{
23+
"name": "likely-ticker-symbol",
24+
"pattern": "/[\"\\w]+[A-Z]+[\"\\w]+/g"
25+
}
26+
],
27+
"ignoreRegExpList": [
28+
"Base64",
29+
"HexValues",
30+
"cash-address-format",
31+
"likely-ticker-symbol"
32+
]
33+
}

.github/workflows/publish.yml

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: Deploy to GitHub Pages
2+
on:
3+
push:
4+
branches:
5+
- master
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
concurrency:
14+
group: "pages"
15+
cancel-in-progress: true
16+
17+
jobs:
18+
build-and-deploy:
19+
name: Build & Deploy Website
20+
runs-on: ubuntu-latest
21+
steps:
22+
- uses: actions/checkout@v3
23+
with:
24+
submodules: 'true'
25+
- name: Setup node
26+
uses: actions/setup-node@v3
27+
with:
28+
node-version: 18
29+
- name: Prepare dependencies
30+
run: npm install
31+
- name: Build site
32+
run: npm run build
33+
- name: Setup Pages
34+
uses: actions/configure-pages@v3
35+
- name: Upload artifact
36+
uses: actions/upload-pages-artifact@v1
37+
with:
38+
path: 'build'
39+
- name: Deploy to GitHub Pages
40+
id: github-pages
41+
uses: actions/deploy-pages@v1

.github/workflows/test.yml

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: Test Build
2+
on:
3+
pull_request:
4+
branches:
5+
- master
6+
7+
jobs:
8+
build:
9+
name: Test Build
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v3
13+
with:
14+
submodules: 'true'
15+
- name: Setup node
16+
uses: actions/setup-node@v3
17+
with:
18+
node-version: 18
19+
- name: Prepare dependencies
20+
run: npm install
21+
- name: Build site
22+
run: npm run build

.gitignore

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Dependencies
2+
/node_modules
3+
4+
# Production
5+
/build
6+
7+
# Generated files
8+
.docusaurus
9+
.cache-loader
10+
11+
# Misc
12+
.DS_Store
13+
.env.local
14+
.env.development.local
15+
.env.test.local
16+
.env.production.local
17+
18+
npm-debug.log*
19+
yarn-debug.log*
20+
yarn-error.log*

LICENSE.md

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# CC0 1.0 Universal
2+
3+
## Statement of Purpose
4+
5+
The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an “owner”) of an original work of authorship and/or a database (each, a “Work”).
6+
7+
Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works (“Commons”) that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others.
8+
9+
For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the “Affirmer”), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights.
10+
11+
1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights (“Copyright and Related Rights”). Copyright and Related Rights include, but are not limited to, the following:
12+
13+
1. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work;
14+
2. moral rights retained by the original author(s) and/or performer(s);
15+
3. publicity and privacy rights pertaining to a person’s image or likeness depicted in a Work;
16+
4. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(i), below;
17+
5. rights protecting the extraction, dissemination, use and reuse of data in a Work;
18+
6. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and
19+
7. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof.
20+
21+
2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer’s Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the “Waiver”). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer’s heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer’s express Statement of Purpose.
22+
23+
3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer’s express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer’s Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the “License”). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer’s express Statement of Purpose.
24+
25+
4. Limitations and Disclaimers.
26+
1. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document.
27+
2. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law.
28+
3. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person’s Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work.
29+
4. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.
30+
31+
For more information, please see https://creativecommons.org/publicdomain/zero/1.0/.

README.md

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Website
2+
3+
This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
4+
5+
### Installation
6+
7+
```
8+
$ yarn
9+
```
10+
11+
### Local Development
12+
13+
```
14+
$ yarn start
15+
```
16+
17+
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
18+
19+
### Build
20+
21+
```
22+
$ yarn build
23+
```
24+
25+
This command generates static content into the `build` directory and can be served using any static contents hosting service.
26+
27+
### Deployment
28+
29+
Using SSH:
30+
31+
```
32+
$ USE_SSH=true yarn deploy
33+
```
34+
35+
Not using SSH:
36+
37+
```
38+
$ GIT_USER=<Your GitHub username> yarn deploy
39+
```
40+
41+
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.

babel.config.js

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = {
2+
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
3+
};

docs/integrate.md

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
sidebar_position: 3
3+
---
4+
5+
# Integration for Developers
6+
7+
Before you begin, read the [Bitcoin Cash Metadata Registry (BCMR) Specification](https://cashtokens.org/docs/bcmr/chip/). You can also join [CashToken Devs on Telegram](https://t.me/cashtoken_devs) to ask questions and chat with other developers.
8+
9+
### Add an Embedded Registry
10+
11+
Start by creating an [Embedded Registry](https://cashtokens.org/docs/bcmr/chip/#embedded-registries) in your application. You can simply pull [the BMCR](/.well-known/bitcoin-cash-metadata-registry.json) (hosted at the [standard URI](https://cashtokens.org/docs/bcmr/chip/#well-known-uri) on `otr.cash`) from OpenTokenRegistry (OTR) into your codebase on a regular interval, or you may choose to copy OTR's data into a larger registry that you independently maintain.
12+
13+
### Use the Embedded Registry
14+
15+
Using the embedded registry, render token names, icons, symbols, and URIs in your user interfaces. Review the [JSON Schema overview](https://cashtokens.org/docs/bcmr/chip/#metadata-registry-json-schema), [Guidelines for Client Software](https://cashtokens.org/docs/bcmr/chip/#guidelines-for-client-software), and [fully-documented types](https://github.com/bitjson/chip-bcmr/blob/master/bcmr-v2.schema.ts) for usage information.
16+
17+
### Add Runtime Updating
18+
19+
To increase the velocity at which end users can receive registry updates, consider adding support for updating the embedded registry at runtime [via DNS](https://cashtokens.org/docs/bcmr/chip/#dns-resolved-registries) and/or via [on-chain transactions](https://cashtokens.org/docs/bcmr/chip/#chain-resolved-registries).
20+
21+
## Advanced Integrations
22+
23+
Some applications may choose to enable greater user control over BCMR usage, and more advanced applications may add registry editing and export features.
24+
25+
### Enable Registry Import
26+
27+
Some applications provide advanced users with the ability to manually import registries (e.g. from a file or from an arbitrary URL).
28+
29+
Note that malicious registries can mislead users into mislabeling token, identities, and contract applications, leading to loss of value; implementers supporting manually-imported registries should review [Adding and Updating Registries](https://cashtokens.org/docs/bcmr/chip/#adding-and-updating-registries).
30+
31+
### Enable Registry Edit & Export
32+
33+
Some applications allow advanced users to edit an internal, user-managed registry to add new entries or overwrite entries in the application's embedded registry. The user-managed registry may be made exportable as a JSON file, simplifying publishing or contributing to public registries like OpenTokenRegistry.
34+
35+
Note that registry edit or overwrite abilities pose similar risk for misleading unsuspecting users as those posed by manually-imported registries.

docs/intro.md

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
sidebar_position: 1
3+
---
4+
5+
# Introduction
6+
7+
OpenTokenRegistry (OTR) is an open source, volunteer-maintained registry of tokens issued on Bitcoin Cash. OTR is used to display human-readable names, icons, ticker symbols, and other token information in some Bitcoin Cash wallets, block explorers, indexers, and other software.
8+
9+
### Free & Transparent
10+
11+
OpenTokenRegistry is free to use in your software ([CC0](https://creativecommons.org/publicdomain/zero/1.0/)), there are no fees to list or update token information, and the listing and verification process is public and transparent.
12+
13+
## Using the Registry
14+
15+
Some wallets, explorers, and other types of software come with built-in support for OpenTokenRegistry. This enables the most secure usage, as developers may enable additional verification to suit their applications. For details, see [Integration for Developers](./integrate).
16+
17+
To use OpenTokenRegistry (OTR) in software without built-in support, import OpenTokenRegistry's [Bitcoin Cash Metadata Registry (BCMR)](https://cashtokens.org/docs/bcmr/chip) into your software via URL: `https://otr.cash`. Compatible software will automatically fetch the [latest version of the registry](/.well-known/bitcoin-cash-metadata-registry.json), and if supported, upgrade to on-chain resolution for future updates.

docs/list.md

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
sidebar_position: 2
3+
---
4+
5+
# List a Token
6+
7+
New tokens may be listed by submitting a pull request directly to [the project repository](https://github.com/OpenTokenRegistry/otr.cash). Please ensure your changes conform to the [Bitcoin Cash Metadata Registry (BCMR) JSON Schema](https://cashtokens.org/docs/bcmr/chip/#metadata-registry-json-schema) and that all tokens meet the criteria for inclusion below.
8+
9+
## Inclusion Criteria
10+
11+
OpenTokenRegistry requires submissions to meet minimum standards for inclusion:
12+
13+
- **Complete, accurate, neutral information** – All required and recommended properties have been included (`name`, `description`, `token` fields, and at least `icon` and `web` URIs), any relevant historical information is accurately portrayed by previous snapshots, and all claims are verifiably accurate and neutral in tone. If relevant, please publicly submit any additional information that may help reviewers to corroborate statements of fact.
14+
- **IPFS URIs for static data** – The `icon` and [other URIs for static data](https://github.com/bitjson/chip-bcmr#authentication-of-static-data) must use IPFS to enable caching and deduplication across registries, more resilient resource resolution, and data integrity guarantees. Consider using a pinning service like [nft.storage](https://nft.storage/).
15+
- **Globally unique `symbol`** – Chosen symbols should be either widely accepted within the Bitcoin Cash ecosystem or demonstrate a good-faith effort to avoid misleading conflicts, both within OpenTokenRegistry and with assets not issued on Bitcoin Cash.
16+
- **An active web presence** – At a minimum, all entries must have an active `web` URI offering information about the token. Entries with consistently non-responsive `web` URIs may be moved to an archival registry or removed from OpenTokenRegistry. Note, `web` URIs may use IPFS gateways (or similar bridging solutions for content-addressed content), but such entries must still demonstrate liveness by other means, e.g. an active `forum`, `chat`, `support`, or other [optional URI identifiers](https://cashtokens.org/docs/bcmr/chip/#optional-uri-identifiers).
17+
18+
## Review Process
19+
20+
Following submission of a complete [pull request on the project repository](https://github.com/OpenTokenRegistry/otr.cash/pulls), volunteer contributors and maintainers will review the pull request for conformance with the [Inclusion Criteria](#inclusion-criteria).
21+
22+
All discussion regarding the submission should take place in the public pull request.
23+
24+
When a particular pull request has been approved by at least two members of the OpenTokenRegistry GitHub organization, the pull request may be merged by a maintainer. In the case of disputes, pull requests should remain unmerged until the the pull request has been revised to resolve concerns of all OpenTokenRegistry organization members (and where reasonable, all other participants in the review).
25+
26+
New contributors and maintainers are welcome! Consistent contributors and reviewers will be added as members to the OpenTokenRegistry GitHub organization.
27+
28+
## Process Improvements
29+
30+
OpenTokenRegistry is a relatively new project and community – our review process and inclusion criteria may change over time. Contributions that improve on this review process, documentation, or automated tooling are welcome and encouraged.

0 commit comments

Comments
 (0)