Skip to content

Commit ac77ab4

Browse files
committed
doc: update README
1 parent c169f9f commit ac77ab4

File tree

2 files changed

+112
-118
lines changed

2 files changed

+112
-118
lines changed

README.md

Lines changed: 6 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# Linea Token List
22

3-
This repository maintains lists of ERC20 tokens available on Linea. There are two lists: one for Linea Mainnet and one for
4-
Linea Sepolia. It is manually curated by our team, and updated based on submitted PRs.
3+
This repository maintains lists of ERC20 tokens available on Linea. There are two lists: one for Linea Mainnet and one
4+
for Linea Sepolia. It is manually curated by our team, and updated based on submitted PRs via
5+
the [Linea Developer Hub](https://developer.linea.build).
56

67
The information in this repository is also available in a [frontend app](https://consensys.github.io/linea-token-list/).
78

@@ -14,125 +15,12 @@ reflected in the UI of the Linea canonical bridge.
1415

1516
> [!IMPORTANT]
1617
> Before adding a new token, you must verify the token's smart contract on an explorer. This ensures the authenticity
17-
> and security of the token. You can verify the smart contract through [LineaScan](https://lineascan.build/verifyContract)
18+
> and security of the token. You can verify the smart contract
19+
> through [LineaScan](https://lineascan.build/verifyContract)
1820
> or [other tools](https://docs.linea.build/get-started/how-to/verify-smart-contract).
1921
> The same verification should be done on Ethereum L1 and Linea if necessary.
2022
21-
To add a new token:
22-
23-
1. `Fork` this repository to your own GitHub account, then `clone` your fork and create a new branch.
24-
25-
Example:
26-
27-
```
28-
git clone https://github.com/<your-github-username>/linea-token-list.git
29-
cd linea-token-list
30-
git checkout -b feat/<token-name>
31-
```
32-
33-
2. Fill out the [linea-mainnet-token-shortlist.json](./json/linea-mainnet-token-shortlist.json) with your token's
34-
information. Make sure you adhere to the [guidelines](#guidelines).
35-
36-
Example:
37-
38-
```json
39-
"tokens": [
40-
...
41-
{
42-
"chainId": 59141,
43-
"chainURI": "https://sepolia.lineascan.build/block/0",
44-
"tokenId": "https://sepolia.lineascan.build/address/0xFEce4462D57bD51A6A552365A011b95f0E16d9B7",
45-
"tokenType": ["bridge-reserved", "external-bridge"],
46-
"address": "0xFEce4462D57bD51A6A552365A011b95f0E16d9B7",
47-
"name": "USD//C",
48-
"symbol": "USDC",
49-
"decimals": 6,
50-
"createdAt": "2024-03-27",
51-
"updatedAt": "2024-10-01",
52-
"logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/3408.png",
53-
"extension": {
54-
"rootChainId": 11155111,
55-
"rootChainURI": "https://sepolia.etherscan.io/block/0",
56-
"rootAddress": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238"
57-
}
58-
}
59-
...
60-
]
61-
```
62-
63-
Fields:
64-
65-
| Name | Description | type | Required? |
66-
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----------------------------------------------------------- |
67-
| chainId | The typically used number identifier for the chain on which the token was issued | number | Mandatory |
68-
| chainURI | A resolvable URI to the genesis block of the chain on which the token was issued following the RFC 3986 standard | string | Mandatory |
69-
| tokenId | A resolvable URI of the token following the RFC 3986 standard to for example the deployment transaction of the token, or a DID identifying the token and its issuer | string | Mandatory |
70-
| tokenType | Describes the type of token (eg: `canonical-bridge`, `bridge-reserved`, `external-bridge`, `native`), see details below. | string | Mandatory |
71-
| address | Address of the token smart contract | string | Mandatory |
72-
| name | Token name | string | Mandatory |
73-
| symbol | Token symbol e.g. UNI | string | Mandatory |
74-
| decimals | Allowed number of decimals for the listed token | integer | Mandatory |
75-
| createdAt | Date and time token was created | string | Mandatory |
76-
| updatedAt | Date and time token was last updated | string | Mandatory |
77-
| logoURI | URI or URL of the token logo following the RFC 3986 standard | string | Optional |
78-
| extension | Extension to specify information about the token on its native chain if it was bridged | Array | Mandatory if the token has been bridged, otherwise optional |
79-
| rootChainId | The typically used number identifier for the chain on which the token was originally issued | number | Mandatory if the token has been bridged, otherwise optional |
80-
| rootChainURI | A resolvable URI to the genesis block of the root chain on which the token was originally issued following the RFC 3986 standard | string | Mandatory if the token has been bridged, otherwise optional |
81-
| rootAddress | Address of the token on its native chain | string | Mandatory if the token has been bridged, otherwise optional |
82-
83-
Token types:
84-
85-
- `canonical-bridge`: token originally on Ethereum, which has been bridged to Linea with
86-
the [Linea canonical bridge](https://bridge.linea.build/) (also known as the native bridge).
87-
88-
**Example**: DAI on Ethereum Mainnet has this address `0x6b175474e89094c44da98b954eedeac495271d0f`, after being
89-
bridged on Linea it has this address `0x4AF15ec2A0BD43Db75dd04E62FAA3B8EF36b00d5`
90-
91-
- `bridge-reserved`: token reserved in the canonical bridge smart contract to prevent any bridged **Linea Canonical
92-
Bridge**.
93-
94-
This type needs to be added manually.
95-
96-
**Example**: USDC, WETH.
97-
98-
- `external-bridge`: token bridged on another layer (Ethereum in general) and Linea using a custom protocol bridge.
99-
100-
This type needs to be added manually.
101-
102-
**Example**: PEEL, USDC.
103-
104-
- `native`: Token first created on Linea.
105-
106-
This type needs to be added manually.
107-
108-
**Example**: WETH.
109-
110-
3. Commit your changes and push your branch.
111-
112-
> [!NOTE]
113-
> Only commit the list file. Do not modify the schema or the templates.
114-
115-
4. Go to the [pull requests page](https://github.com/ConsenSys/linea-token-list/pulls) and create a new PR. Make sure to
116-
set the base branch as `main`.
117-
118-
A GitHub Actions workflow will automatically verify the integrity of your JSON. If the check passes, validators will
119-
review the new list. If all the information are correct, they will approve the token addition.
120-
121-
In case of a failing check, refer to the error message in
122-
the [Actions](https://github.com/ConsenSys/linea-token-list/actions) tab. Make necessary modifications and try again.
123-
124-
Happy contributing!
125-
126-
## Guidelines
127-
128-
- Please ensure the completed JSON follows the schema outlined
129-
in [./json/schema/l2-token-list-schema.json](./json/schema/l2-token-list-schema.json).
130-
- Make sure to add the token following alphabetical order of the `symbol` field.
131-
- Update the `updatedAt` (and potentially `createdAt`) fields for the file and the token
132-
- Update the file version:
133-
- Increase `patch` when modifying information of an existing token.
134-
- Increase `minor` when modifying adding a new token.
135-
- Increase `major` when changing the structure of the file.
23+
To add a new token, you need to go through the [Linea Developer Hub](https://developer.linea.build) registration process.
13624

13725
## Technical resources (for maintainers)
13826

docs/development.md

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,109 @@ npm run lint
5555
The GitHub page content is generated using [index.html](../index.html).
5656

5757
Use the `Live Server` extension in Visual Studio Code to preview this page.
58+
59+
## Manually add a token to the list
60+
61+
1. Fill out the [linea-mainnet-token-shortlist.json](./json/linea-mainnet-token-shortlist.json) with the token's
62+
information. Make sure you adhere to the [guidelines](#guidelines).
63+
64+
Example:
65+
66+
```json
67+
"tokens": [
68+
...
69+
{
70+
"chainId": 59141,
71+
"chainURI": "https://sepolia.lineascan.build/block/0",
72+
"tokenId": "https://sepolia.lineascan.build/address/0xFEce4462D57bD51A6A552365A011b95f0E16d9B7",
73+
"tokenType": ["bridge-reserved", "external-bridge"],
74+
"address": "0xFEce4462D57bD51A6A552365A011b95f0E16d9B7",
75+
"name": "USD//C",
76+
"symbol": "USDC",
77+
"decimals": 6,
78+
"createdAt": "2024-03-27",
79+
"updatedAt": "2024-10-01",
80+
"logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/3408.png",
81+
"extension": {
82+
"rootChainId": 11155111,
83+
"rootChainURI": "https://sepolia.etherscan.io/block/0",
84+
"rootAddress": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238"
85+
}
86+
}
87+
...
88+
]
89+
```
90+
91+
Fields:
92+
93+
| Name | Description | type | Required? |
94+
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----------------------------------------------------------- |
95+
| chainId | The typically used number identifier for the chain on which the token was issued | number | Mandatory |
96+
| chainURI | A resolvable URI to the genesis block of the chain on which the token was issued following the RFC 3986 standard | string | Mandatory |
97+
| tokenId | A resolvable URI of the token following the RFC 3986 standard to for example the deployment transaction of the token, or a DID identifying the token and its issuer | string | Mandatory |
98+
| tokenType | Describes the type of token (eg: `canonical-bridge`, `bridge-reserved`, `external-bridge`, `native`), see details below. | string | Mandatory |
99+
| address | Address of the token smart contract | string | Mandatory |
100+
| name | Token name | string | Mandatory |
101+
| symbol | Token symbol e.g. UNI | string | Mandatory |
102+
| decimals | Allowed number of decimals for the listed token | integer | Mandatory |
103+
| createdAt | Date when the token was added to the list | string | Mandatory |
104+
| updatedAt | Date when the token listing was updated | string | Mandatory |
105+
| logoURI | URI or URL of the token logo following the RFC 3986 standard | string | Optional |
106+
| extension | Extension to specify information about the token on its native chain if it was bridged | Array | Mandatory if the token has been bridged, otherwise optional |
107+
| rootChainId | The typically used number identifier for the chain on which the token was originally issued | number | Mandatory if the token has been bridged, otherwise optional |
108+
| rootChainURI | A resolvable URI to the genesis block of the root chain on which the token was originally issued following the RFC 3986 standard | string | Mandatory if the token has been bridged, otherwise optional |
109+
| rootAddress | Address of the token on its native chain | string | Mandatory if the token has been bridged, otherwise optional |
110+
111+
Token types:
112+
113+
- `canonical-bridge`: token originally on Ethereum, which has been bridged to Linea with
114+
the [Linea canonical bridge](https://bridge.linea.build/) (also known as the native bridge).
115+
116+
**Example**: DAI on Ethereum Mainnet has this address `0x6b175474e89094c44da98b954eedeac495271d0f`, after being
117+
bridged on Linea it has this address `0x4AF15ec2A0BD43Db75dd04E62FAA3B8EF36b00d5`
118+
119+
- `bridge-reserved`: token reserved in the canonical bridge smart contract to prevent any bridged **Linea Canonical
120+
Bridge**.
121+
122+
This type needs to be added manually.
123+
124+
**Example**: USDC, WETH.
125+
126+
- `external-bridge`: token bridged on another layer (Ethereum in general) and Linea using a custom protocol bridge.
127+
128+
This type needs to be added manually.
129+
130+
**Example**: PEEL, USDC.
131+
132+
- `native`: Token first created on Linea.
133+
134+
This type needs to be added manually.
135+
136+
**Example**: WETH.
137+
138+
3. Commit your changes and push your branch.
139+
140+
> [!NOTE]
141+
> Only commit the list file. Do not modify the schema or the templates.
142+
143+
4. Go to the [pull requests page](https://github.com/ConsenSys/linea-token-list/pulls) and create a new PR. Make sure to
144+
set the base branch as `main`.
145+
146+
A GitHub Actions workflow will automatically verify the integrity of your JSON. If the check passes, validators will
147+
review the new list. If all the information are correct, they will approve the token addition.
148+
149+
In case of a failing check, refer to the error message in
150+
the [Actions](https://github.com/ConsenSys/linea-token-list/actions) tab. Make necessary modifications and try again.
151+
152+
Happy contributing!
153+
154+
## Guidelines
155+
156+
- Please ensure the completed JSON follows the schema outlined
157+
in [./json/schema/l2-token-list-schema.json](./json/schema/l2-token-list-schema.json).
158+
- Make sure to add the token following alphabetical order of the `symbol` field.
159+
- Update the `updatedAt` (and potentially `createdAt`) fields for the file and the token
160+
- Update the file version:
161+
- Increase `patch` when modifying information of an existing token.
162+
- Increase `minor` when adding a new token.
163+
- Increase `major` when changing the structure of the file.

0 commit comments

Comments
 (0)