Skip to content
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

chore(doc): make OISY name uppercase #2725

Merged
merged 4 commits into from
Oct 8, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions HACKING.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,13 @@ Translations are handled in JSON file - for example [en.json](src/frontend/src/l

To add support for an additional language, proceed as following:

> Note that Oisy's repo **does not** accept external contributions yet.
> Note that OISY's repo **does not** accept external contributions yet.

1. Copy `en.json` to a new filename reflecting the language ISO code (such as for example `zh-cn.json` for simplified Chinese).
2. Translate each key of the newly created file.
3. Replace the file imported in [i18n.store.ts](src/frontend/src/lib/stores/i18n.store.ts).

In the future, Oisy might be extended to support multiple languages on production.
In the future, OISY might be extended to support multiple languages on production.

### Adding additional keys

Expand Down Expand Up @@ -116,11 +116,11 @@ This last step will generate the screenshots for the CI and add them to your PR.

## Integrate ckERC20 Tokens

While the weekly GitHub Action that runs the job [./scripts/build.tokens.ckerc20.mjs] helps discover new ckERC20 tokens deployed on the IC mainnet for testnet purposes or through proposals for effective production usage, some manual steps are still required to integrate them within Oisy.
While the weekly GitHub Action that runs the job [./scripts/build.tokens.ckerc20.mjs] helps discover new ckERC20 tokens deployed on the IC mainnet for testnet purposes or through proposals for effective production usage, some manual steps are still required to integrate them within OISY.

The steps are as follows:

1. **Collect the Ethereum logo** for the specific token as an SVG, ideally from an official source. Ensure using the logo in Oisy respects brand/trade guidelines.
1. **Collect the Ethereum logo** for the specific token as an SVG, ideally from an official source. Ensure using the logo in OISY respects brand/trade guidelines.
2. **Verify the SVG asset size** is acceptable (small) and **copy** it into [src/frontend/src/icp-eth/assets].
3. Create a new source environment file in [src/frontend/src/env] by cloning [src/frontend/src/env/tokens.usdc.env.ts] and renaming `usdc` to the token's name.
4. **Adapt the content of the tokens:**
Expand Down
16 changes: 8 additions & 8 deletions HOW-TO.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
# How-to

This document provides valuable information regarding Oisy Wallet integration and features.
This document provides valuable information regarding OISY Wallet integration and features.

## SNS Token Support

The [SNS aggregator](https://3r4gx-wqaaa-aaaaq-aaaia-cai.icp0.io/) is used to pre-populate the list of available SNSes. This information is not fetched at runtime because it does not change frequently. Moreover, this approach is best suited for a smoother UI/UX experience.

> Note: Some SNSes may not be enabled due to their related Index canister version being outdated and therefore not compatible with Oisy Wallet. If you wish to use these, contact the related project to propose an upgrade to their canister.
> Note: Some SNSes may not be enabled due to their related Index canister version being outdated and therefore not compatible with OISY Wallet. If you wish to use these, contact the related project to propose an upgrade to their canister.

See script [./script/buil.dsns.tokens.mjs](./script/buil.dsns.tokens.mjs) for more details.

## Custom ICRC Token Integration

Oisy Wallet allows users to add custom [ICRC](https://internetcomputer.org/docs/current/developer-docs/defi/overview/#icrc-1-ledgers) tokens to their wallet. However, certain requirements must be met to ensure compatibility and security.
OISY Wallet allows users to add custom [ICRC](https://internetcomputer.org/docs/current/developer-docs/defi/overview/#icrc-1-ledgers) tokens to their wallet. However, certain requirements must be met to ensure compatibility and security.

This chapter outlines the necessary steps and considerations for integrating a custom token into Oisy Wallet.
This chapter outlines the necessary steps and considerations for integrating a custom token into OISY Wallet.

### Requirements

To add a custom token to Oisy Wallet, users must provide both a Ledger and Index canister ID. The Ledger canister ID is straightforward, representing the ledger where the token transactions are recorded. However, the Index canister ID is also required because Oisy Wallet does not index transactions and balances. Instead, Oisy reads balance and transactions from an indexer, the Index canister.
To add a custom token to OISY Wallet, users must provide both a Ledger and Index canister ID. The Ledger canister ID is straightforward, representing the ledger where the token transactions are recorded. However, the Index canister ID is also required because OISY Wallet does not index transactions and balances. Instead, OISY reads balance and transactions from an indexer, the Index canister.

### Index Canister

Custom tokens seeking compatibility with Oisy Wallet can choose one of the following options for the Index canister:
Custom tokens seeking compatibility with OISY Wallet can choose one of the following options for the Index canister:

1. Spin up an Index canister on mainnet using the index-ng WASM.

Expand Down Expand Up @@ -51,7 +51,7 @@ If opting for a custom canister, it must implement the following two endpoints:

It's important to note that although both functions are queries, for security reasons, they are called with both query and update.

> Oisy uses the JavaScript library [@dfinity/ledger-icrc](https://github.com/dfinity/ic-js/tree/main/packages/ledger-icrc) to interact with the canister.
> OISY uses the JavaScript library [@dfinity/ledger-icrc](https://github.com/dfinity/ic-js/tree/main/packages/ledger-icrc) to interact with the canister.

#### Ledger ID

Expand All @@ -63,7 +63,7 @@ ledger_id : () -> (principal) query;

#### Get balance and transactions

This function allows querying of balance and transactions for a specific account. Oisy Wallet uses the principal provided by Internet Identity for the current account without a sub-account.
This function allows querying of balance and transactions for a specific account. OISY Wallet uses the principal provided by Internet Identity for the current account without a sub-account.

```
get_account_transactions : (GetAccountTransactionsArgs) -> (GetTransactionsResult) query;
Expand Down
28 changes: 14 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<div style="display:flex;flex-direction:column;">
<a href="https://oisy.com/">
<img src="./src/frontend/static/images/meta-share-v2.jpg" alt="Oisy Wallet logo" role="presentation"/>
<img src="./src/frontend/static/images/meta-share-v2.jpg" alt="OISY Wallet logo" role="presentation"/>
</a>

<br/>
Expand All @@ -14,39 +14,39 @@

---

## What is the Oisy wallet
## What is the OISY wallet

Oisy is a new browser-based, self-custodial and multi-chain wallet powered by Internet Computer's [chain fusion](https://internetcomputer.org/chainfusion) technology.
OISY is a new browser-based, self-custodial and multi-chain wallet powered by Internet Computer's [chain fusion](https://internetcomputer.org/chainfusion) technology.

## Features

The Oisy wallet provides a convenient user experience known from custodial wallets but without their strong trust assumptions. In contrast, Oisy provides trust assumptions comparable to self-custody solutions. Different from self-custody wallets though, Oisy requires no browser extensions or additional mobile app, a standard off-the-shelf web browser is sufficient. In conclusion, Oisy provides an attractive user experience with a low entry barrier, yet requires no strong trust assumptions.
The OISY wallet provides a convenient user experience known from custodial wallets but without their strong trust assumptions. In contrast, OISY provides trust assumptions comparable to self-custody solutions. Different from self-custody wallets though, OISY requires no browser extensions or additional mobile app, a standard off-the-shelf web browser is sufficient. In conclusion, OISY provides an attractive user experience with a low entry barrier, yet requires no strong trust assumptions.

Building on ICP, Oisy achieves a unique set of features:
Building on ICP, OISY achieves a unique set of features:

- **Browser-based:** no matter your browser and operating system preferences, Oisy allows you to receive, hold, and send native ICP, ICRC-1, ETH, ERC20 (and in the near future BTC).
- **Browser-based:** no matter your browser and operating system preferences, OISY allows you to receive, hold, and send native ICP, ICRC-1, ETH, ERC20 (and in the near future BTC).

- **Cross-device:** due to the use of Internet Identity, Oisy can easily be used across all devices you have linked to your Internet Identity.
- **Cross-device:** due to the use of Internet Identity, OISY can easily be used across all devices you have linked to your Internet Identity.

- **Self-custody:** the key controlling your multi-chain assets is not controlled by a single entity nor has it ever existed as such. The key was generated using advanced cryptography that distributed key-shares among dedicated ICP replica nodes and signatures are created using [threshold ECDSA](https://internetcomputer.org/docs/current/developer-docs/integrations/t-ecdsa/).

- **Fully on-chain:** not only the keys but the entire wallet application is stored on-chain and served directly to your browser. The entire wallet is secured by a decentralized trust model, which guarantees that neither the front-end, nor the back-end have been tampered with.

- **Interoperable:** Oisy integrates with the [WalletConnect](https://walletconnect.com/) protocol allowing you to use it as a wallet for many established web3 services, such as Uniswap. The Oisy team is actively working on integrating Oisy with [ICP's signer standards](https://github.com/dfinity/wg-identity-authentication/blob/main/topics/signer_standards_overview.md) allowing Oisy to interact with [ICP's rich dapp ecosystem](https://internetcomputer.org/ecosystem).
- **Interoperable:** OISY integrates with the [WalletConnect](https://walletconnect.com/) protocol allowing you to use it as a wallet for many established web3 services, such as Uniswap. The OISY team is actively working on integrating OISY with [ICP's signer standards](https://github.com/dfinity/wg-identity-authentication/blob/main/topics/signer_standards_overview.md) allowing OISY to interact with [ICP's rich dapp ecosystem](https://internetcomputer.org/ecosystem).

- **Free to use and develop:** Oisy is open-source software and licensed under [Apache 2.0](LICENSE). Feel free to fork it or propose improvements.
- **Free to use and develop:** OISY is open-source software and licensed under [Apache 2.0](LICENSE). Feel free to fork it or propose improvements.

## ICP building blocks used

What are the unique ICP technical building blocks enabling the creation of Oisy?
What are the unique ICP technical building blocks enabling the creation of OISY?

- **Chain-key signatures:** the world's best threshold ECDSA signature [protocol suite](https://eprint.iacr.org/2022/506) (only available on ICP) enables smart contracts to perform cryptographic signatures without a single entity having full access to the private key. Read more about [chain-key cryptography](https://internetcomputer.org/how-it-works/chain-key-technology/) or start building based on [chain-key signature sample code](https://github.com/dfinity/examples/tree/master/rust/threshold-ecdsa).

- **Internet Identity (II):** based on ICP's threshold BLS signature schemes and WebAuthn, Internet Identity (II) is an authentication and key management system with strong privacy and security guarantees. Using [WebAuthn](https://www.w3.org/TR/webauthn-3), users can conveniently create secure sessions with their fingerprint or other biometric identifiers. Read more about [Internet Identity technology](https://internetcomputer.org/internet-identity) or [start integrating II](https://internetcomputer.org/docs/current/developer-docs/integrations/internet-identity/integrate-identity) into your canister smart contract.

- **Web applications served from chain:** ICP is not only designed to run _backends_, such as ledgers, on chain, its low storage cost and low latency allow it to serve _frontends_, such as HTML files and images, from chain, too. Read more about [smart contracts serving web applications](https://internetcomputer.org/how-it-works/smart-contracts-serve-the-web/) or directly start [building your first decentralized web frontend](https://internetcomputer.org/docs/current/developer-docs/frontend/).

- (Upcoming) **HTTP outcalls:** for now, Oisy calls centralized Ethereum endpoints, such as Infura or Alchemy, from the frontend. In the future, Oisy might be improved to use [HTTP outcalls](https://internetcomputer.org/https-outcalls) to call these endpoints in a decentralized fashion. Check out the [HTTP outcalls sample code](https://internetcomputer.org/docs/current/developer-docs/integrations/https-outcalls/https-outcalls-how-to-use) to explore how to use Web 2.0 services on ICP.
- (Upcoming) **HTTP outcalls:** for now, OISY calls centralized Ethereum endpoints, such as Infura or Alchemy, from the frontend. In the future, OISY might be improved to use [HTTP outcalls](https://internetcomputer.org/https-outcalls) to call these endpoints in a decentralized fashion. Check out the [HTTP outcalls sample code](https://internetcomputer.org/docs/current/developer-docs/integrations/https-outcalls/https-outcalls-how-to-use) to explore how to use Web 2.0 services on ICP.

## Status

Expand Down Expand Up @@ -74,7 +74,7 @@ dfx stop

from the project directory will stop the local replica.

### Run Oisy locally
### Run OISY locally

Make sure you switch back to the project root directory.

Expand All @@ -84,7 +84,7 @@ First, install the frontend dependencies by running
npm ci
```

To build and deploy the project locally, first create a `.env.development` file by copying the [.env.example](.env.example) file. Once you've correctly set the api keys for all the different services that Oisy needs, then run:
To build and deploy the project locally, first create a `.env.development` file by copying the [.env.example](.env.example) file. Once you've correctly set the api keys for all the different services that OISY needs, then run:

```
npm run deploy
Expand All @@ -103,7 +103,7 @@ URLs:
internet_identity: http://127.0.0.1:4943/?canisterId=bd3sg-teaaa-aaaaa-qaaba-cai&id=be2us-64aaa-aaaaa-qaabq-cai
```

Click on the **frontend** URL to access the Oisy Wallet that is running locally.
Click on the **frontend** URL to access the OISY Wallet that is running locally.

### Local development

Expand Down
4 changes: 2 additions & 2 deletions src/frontend/src/env/oisy.metadata.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"OISY_NAME": "Oisy Wallet",
"OISY_NAME": "OISY Wallet",
"OISY_ONELINER": "A multi-chain wallet powered by chainfusion",
"OISY_DESCRIPTION": "Oisy Wallet provides a seamless on-chain experience to manage your Ethereum and ICP assets. By leveraging native web technologies and advanced cryptography, it eliminates the need for browser extensions or mobile apps. And accessing the wallet is easy using passkeys on a computer or mobile device.",
"OISY_DESCRIPTION": "OISY Wallet provides a seamless on-chain experience to manage your Ethereum and ICP assets. By leveraging native web technologies and advanced cryptography, it eliminates the need for browser extensions or mobile apps. And accessing the wallet is easy using passkeys on a computer or mobile device.",
"OISY_REPO_URL": "https://github.com/dfinity/oisy-wallet",
"OISY_ALPHA_WARNING_URL": "https://github.com/dfinity/oisy-wallet#status"
}
6 changes: 3 additions & 3 deletions src/frontend/src/lib/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
"error": {
"no_internet_identity": "No internet identity.",
"invalid_pouh_credential": "Sorry, but there was an error while validating the Humanity Credential. Please contact the issuer and request the credential again.",
"error_validating_pouh_credential_oisy": "Sorry, but there was an error while validating the Humanity Credential in Oisy: $error",
"error_validating_pouh_credential_oisy": "Sorry, but there was an error while validating the Humanity Credential in OISY: $error",
"error_validating_pouh_credential": "Sorry, but there was an error while validating the Humanity Credential.",
"error_requesting_pouh_credential": "Sorry, but there was an error while requesting the Humanity Credential.",
"missing_pouh_issuer_origin": "Sorry, but there was an error while requesting the Humanity Credential. The issuer origin is missing.",
Expand Down Expand Up @@ -171,7 +171,7 @@
},
"alt": {
"testnets_toggle": "Toggle to show or hide testnets",
"github_release": "Oisy release notes on GitHub"
"github_release": "OISY release notes on GitHub"
},
"error": {
"loading_profile": "Error while loading the profile. Please refresh the page to have the full experience."
Expand Down Expand Up @@ -624,7 +624,7 @@
"fully_on_chain": "<strong>Fully on-chain</strong><br>Not only the keys but the entire wallet application is <a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https://internetcomputer.org/capabilities\">stored on chain</a> and served directly into users’ browsers from ICP. Therefore the entire wallet is secured by a decentralized trust model making it tamper-proof.",
"cross_device": "<strong>Cross-device</strong><br>Using <a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https://identity.ic0.app/\">Internet Identity</a> means that $oisy_name can easily be used across all devices you have linked to a particular identity.",
"verifiable_credentials": "<strong>Compatible with verifiable credentials</strong><br>$oisy_name is designed to integrate with Internet Computer’s <a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https://internetcomputer.org/docs/current/developer-docs/identity/verifiable-credentials/overview\">verifiable credentials platform</a>. Users can access additional functionality, like airdrops, if they acquire credentials of a certain type.",
"open_source": "<strong>Open source</strong><br>Oisy is an <a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https://github.com/dfinity/oisy-wallet\">open-source project</a> lead by a dedicated team within the <a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https://dfinity.org/\">DFINITY foundation</a> supported by the organization’s 200 world-leading cryptographers and engineers."
"open_source": "<strong>Open source</strong><br>OISY is an <a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https://github.com/dfinity/oisy-wallet\">open-source project</a> lead by a dedicated team within the <a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https://dfinity.org/\">DFINITY foundation</a> supported by the organization’s 200 world-leading cryptographers and engineers."
}
}
}
Expand Down