├── .github ├── dependabot.yml └── workflows │ ├── ci-links.yml │ ├── ci-lint.yml │ ├── ci-test.yml │ └── deploy-main.yml ├── .gitignore ├── .gitmodules ├── .markdownlint-cli2.cjs ├── LICENSE ├── LICENSE-docs ├── README.md ├── docs ├── README.mdx ├── adrs ├── build │ ├── README.mdx │ ├── diagrams │ │ ├── opl-contract-flow.mmd │ │ ├── opl-contract-flow.mmd.svg │ │ ├── opl-hyperlane-flow.mmd │ │ ├── opl-hyperlane-flow.mmd.svg │ │ ├── opl-hyperlane-pingpong-flow.mmd │ │ ├── opl-hyperlane-pingpong-flow.mmd.svg │ │ ├── opl-router-pingpong-flow.mmd │ │ └── opl-router-pingpong-flow.mmd.svg │ ├── images │ │ ├── emerald │ │ │ ├── block_explorer1.png │ │ │ ├── block_explorer2.png │ │ │ ├── oasisscan1.png │ │ │ └── oasisscan2.png │ │ ├── opl │ │ │ ├── celer-e2e.png │ │ │ ├── compile-pingpong.png │ │ │ ├── confirm-new-poll.png │ │ │ ├── create-poll.png │ │ │ ├── past-dao-proposals.png │ │ │ ├── privacy-layer-diagram.png │ │ │ ├── router-approve.png │ │ │ ├── router-architecture.png │ │ │ ├── router-deploy-pingpong-amoy.png │ │ │ ├── router-deploy-pingpong-sapphire.png │ │ │ ├── router-faucet.png │ │ │ ├── router-iping.png │ │ │ ├── router-metadata.png │ │ │ └── vote-on-ballot.png │ │ ├── remix │ │ │ ├── remix01.png │ │ │ ├── remix02.png │ │ │ ├── remix03.png │ │ │ ├── remix04.png │ │ │ └── sourcify.png │ │ └── tools │ │ │ ├── abi_playground_import.png │ │ │ ├── abi_playground_load.png │ │ │ ├── abi_playground_localnet.png │ │ │ ├── band_demooracle_smartcontract.png │ │ │ ├── band_deploy_demooracle_smartcontact.png │ │ │ ├── band_get_rates.png │ │ │ ├── band_saveprice.png │ │ │ ├── explorer_abi_playground.png │ │ │ ├── sourcify1.png │ │ │ ├── sourcify2.png │ │ │ └── sourcify3.png │ ├── opl │ │ ├── README.mdx │ │ ├── celer │ │ │ ├── README.md │ │ │ ├── networks.md │ │ │ └── ping-example.md │ │ ├── hyperlane │ │ │ ├── README.md │ │ │ ├── cli.md │ │ │ ├── pingpong-example.md │ │ │ └── relayer.md │ │ ├── opl-sdk │ │ │ ├── README.md │ │ │ └── ping-example.md │ │ └── router-protocol │ │ │ ├── README.md │ │ │ ├── approve.md │ │ │ ├── interface.md │ │ │ └── pingpong-example.md │ ├── rofl │ ├── sapphire │ └── tools │ │ ├── README.mdx │ │ ├── abi-playground.md │ │ ├── band.md │ │ ├── build-paratime │ │ ├── README.mdx │ │ ├── minimal-runtime.md │ │ ├── modules.md │ │ ├── prerequisites.md │ │ └── reproducibility.md │ │ ├── foundry.mdx │ │ ├── localnet.mdx │ │ ├── other-paratimes │ │ ├── README.mdx │ │ ├── cipher │ │ │ ├── README.mdx │ │ │ ├── confidential-smart-contract.md │ │ │ ├── hello-world.md │ │ │ ├── network.mdx │ │ │ └── prerequisites.md │ │ └── emerald │ │ │ ├── README.mdx │ │ │ ├── network.mdx │ │ │ └── writing-dapps-on-emerald.mdx │ │ ├── remix.md │ │ └── verification.md ├── core ├── general │ ├── README.mdx │ ├── images │ │ ├── architecture │ │ │ ├── client-km-compute.svg │ │ │ ├── consensus_paratime_communication.png │ │ │ └── technology_scalability.svg │ │ ├── manage-tokens │ │ │ ├── oasisscan_account_details.png │ │ │ ├── oasisscan_paratime_tx_details.png │ │ │ ├── oasisscan_paratime_txes.png │ │ │ ├── oasisscan_validators.png │ │ │ ├── transfer_deposit_withdrawal.svg │ │ │ └── wormhole │ │ │ │ ├── confirm_transaction_ETH_WETH.png │ │ │ │ ├── connect_wallet.png │ │ │ │ ├── index.png │ │ │ │ ├── redeem_tokens.png │ │ │ │ ├── redeem_tokens2.png │ │ │ │ ├── select_source_dest_amount.png │ │ │ │ ├── send_tokens.png │ │ │ │ ├── send_tokens_to_wormhole.png │ │ │ │ ├── switch_to_emerald.png │ │ │ │ └── yuzuswap.png │ │ ├── oasis-network │ │ │ ├── backers.png │ │ │ └── metrics-background.png │ │ └── wallet │ │ │ ├── bitpie │ │ │ ├── mainscreen.png │ │ │ └── show_private_key.png │ │ │ ├── ext │ │ │ ├── account_derivation.png │ │ │ ├── account_options.png │ │ │ ├── buy.png │ │ │ ├── chrome_web_store.png │ │ │ ├── create_new_wallet_mnemonic1.png │ │ │ ├── create_new_wallet_mnemonic2.png │ │ │ ├── create_profile.png │ │ │ ├── delegate1.png │ │ │ ├── delegate2.png │ │ │ ├── delegate3.png │ │ │ ├── deposit1.png │ │ │ ├── deposit2.png │ │ │ ├── deposit3.png │ │ │ ├── deposit4.png │ │ │ ├── deposit5.png │ │ │ ├── import_wallet.png │ │ │ ├── import_wallet_ledger1.png │ │ │ ├── import_wallet_ledger2.png │ │ │ ├── import_wallet_mnemonic.png │ │ │ ├── import_wallet_private_key.png │ │ │ ├── paratimes.png │ │ │ ├── stake.png │ │ │ ├── transfer.png │ │ │ ├── undelegate1.png │ │ │ ├── undelegate2.png │ │ │ ├── undelegate3.png │ │ │ ├── wallet.png │ │ │ ├── wallet_screen.png │ │ │ ├── withdraw1.png │ │ │ ├── withdraw2.png │ │ │ ├── withdraw3.png │ │ │ ├── withdraw4.png │ │ │ └── withdraw5.png │ │ │ ├── ledger │ │ │ ├── ledger_oasis_approve.jpg │ │ │ ├── ledger_oasis_ready.jpg │ │ │ ├── live_allow_ledger_manager.png │ │ │ ├── live_search_apps.png │ │ │ ├── live_search_results_oasis_install.png │ │ │ └── live_unlock_ledger.png │ │ │ ├── metamask │ │ │ ├── account.png │ │ │ └── settings.png │ │ │ └── web │ │ │ ├── account-popup-theme-dark.png │ │ │ ├── buy.png │ │ │ ├── create_new_wallet_mnemonic1.png │ │ │ ├── create_new_wallet_mnemonic2.png │ │ │ ├── create_new_wallet_select_accounts.png │ │ │ ├── delegate1.png │ │ │ ├── delegate2.png │ │ │ ├── delegate3.png │ │ │ ├── deposit1.png │ │ │ ├── deposit2.png │ │ │ ├── deposit3.png │ │ │ ├── deposit4.png │ │ │ ├── deposit5.png │ │ │ ├── home.png │ │ │ ├── import_wallet.png │ │ │ ├── import_wallet_ledger.png │ │ │ ├── import_wallet_mnemonic.png │ │ │ ├── import_wallet_private_key.png │ │ │ ├── no-profile-dark-theme.png │ │ │ ├── paratimes.png │ │ │ ├── settings-my-accounts.png │ │ │ ├── stake.png │ │ │ ├── transfer.png │ │ │ ├── undelegate1.png │ │ │ ├── undelegate2.png │ │ │ ├── undelegate3.png │ │ │ ├── wallet.png │ │ │ ├── withdraw1.png │ │ │ ├── withdraw2.png │ │ │ ├── withdraw3.png │ │ │ ├── withdraw4.png │ │ │ └── withdraw5.png │ ├── manage-tokens │ │ ├── README.mdx │ │ ├── cli │ │ ├── faq.mdx │ │ ├── holding-rose-tokens │ │ │ ├── custody-providers.md │ │ │ └── ledger-wallet.md │ │ ├── how-to-transfer-eth-erc20-to-emerald-paratime.md │ │ ├── oasis-wallets │ │ │ ├── browser-extension.mdx │ │ │ └── web.mdx │ │ ├── staking-and-delegating.md │ │ └── terminology.md │ └── oasis-network │ │ ├── README.mdx │ │ ├── faq.md │ │ ├── papers.mdx │ │ ├── papers │ │ ├── 2019-ekiden.pdf │ │ ├── 2020-digital_stewardship.pdf │ │ ├── 2020-the_oasis_blockchain_platform.pdf │ │ ├── 2021-an_implementation_of_ekiden.pdf │ │ ├── 2022-shades_of_finality.pdf │ │ └── 2022-short_leashes.pdf │ │ └── token-metrics-and-distribution.mdx ├── get-involved │ ├── README.md │ ├── delegation-policy.md │ ├── network-governance.md │ ├── oasis-core.md │ ├── run-node │ │ ├── paratime-node.mdx │ │ └── validator-node.md │ └── token-delivery-and-kyc.md └── node │ ├── README.mdx │ ├── genesis-doc.md │ ├── grpc.mdx │ ├── mainnet │ ├── README.md │ ├── eden-upgrade.md │ ├── previous-upgrades │ │ ├── cobalt-upgrade.md │ │ ├── damask-upgrade.md │ │ └── mainnet-upgrade.md │ └── upgrade-log.md │ ├── run-your-node │ ├── README.mdx │ ├── advanced │ │ ├── copy-state-from-one-node-to-the-other.md │ │ ├── remote-signer.mdx │ │ └── sync-node-using-state-sync.md │ ├── archive-node.md │ ├── keymanager-node │ │ ├── README.md │ │ ├── key-manager-upgrade.md │ │ └── signing-key-manager-policy.md │ ├── maintenance │ │ ├── adding-or-removing-nodes.md │ │ ├── handling-network-upgrades.md │ │ ├── refreshing-certificates.md │ │ ├── shutting-down-a-node.md │ │ └── wiping-node-state.md │ ├── non-validator-node.mdx │ ├── paratime-client-node.mdx │ ├── paratime-node.mdx │ ├── paratime-observer-node.mdx │ ├── prerequisites │ │ ├── cloud-providers.md │ │ ├── hardware-recommendations.md │ │ ├── oasis-node.md │ │ ├── set-up-trusted-execution-environment-tee.md │ │ ├── stake-requirements.md │ │ └── system-configuration.mdx │ ├── seed-node.md │ ├── sentry-node.md │ ├── troubleshooting.md │ └── validator-node.mdx │ ├── testnet │ ├── README.md │ └── upgrade-log.md │ └── web3.mdx ├── docusaurus.config.ts ├── jest.config.ts ├── linkinator.config.json ├── mermaid-theme.css ├── mermaid.config.json ├── package.json ├── puppeteer-config.json ├── redirects.ts ├── sidebarAdrs.ts ├── sidebarBuild.ts ├── sidebarCore.ts ├── sidebarGeneral.ts ├── sidebarGetInvolved.ts ├── sidebarNode.ts ├── sidebars.ts ├── src ├── AddToMetaMask.tsx ├── PlotlyChart.tsx ├── css │ └── custom.css ├── editUrl.ts ├── plotly-py-templates │ ├── LICENSE.txt │ ├── README.md │ └── plotly_dark.json ├── remark │ ├── code-block-snippets.test.ts │ ├── code-block-snippets.ts │ └── cross-repo-links.ts ├── sidebarUtils.ts ├── staking_rewards │ ├── Chart.tsx │ ├── data.csv │ ├── data.json │ └── fallback.svg └── token_distribution │ ├── Chart.tsx │ ├── data.csv │ ├── data.json │ ├── fallback.svg │ ├── monthly_data.json │ └── pie │ ├── Chart.tsx │ └── fallback.svg ├── static ├── fonts │ ├── Roboto-Medium.ttf │ ├── Roboto-Regular.ttf │ └── RobotoMono-Regular.ttf └── img │ ├── by.svg │ ├── cc.svg │ ├── favicon.svg │ ├── logo.svg │ ├── logo_christmas.svg │ ├── logo_christmas_dark.svg │ └── logo_dark.svg ├── tsconfig.json └── yarn.lock /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | # Manage Git submodules. 4 | - package-ecosystem: gitsubmodule 5 | directory: / 6 | schedule: 7 | interval: daily 8 | # Check for updates at 7am UTC. 9 | time: "07:00" 10 | commit-message: 11 | prefix: "submodules:" 12 | labels: 13 | - c:deps 14 | 15 | # Manage Github Actions versions. 16 | - package-ecosystem: github-actions 17 | directory: / 18 | schedule: 19 | interval: daily 20 | commit-message: 21 | prefix: "ci:" 22 | -------------------------------------------------------------------------------- /.github/workflows/ci-links.yml: -------------------------------------------------------------------------------- 1 | # NOTE: This name appears in GitHub's Checks API and in workflow's status badge. 2 | name: ci-links 3 | 4 | on: 5 | schedule: 6 | # Check for broken links every day at 7:00 AM. 7 | - cron: '0 7 * * *' 8 | 9 | jobs: 10 | links: 11 | # NOTE: This name appears in GitHub's Checks API. 12 | name: links 13 | runs-on: ubuntu-latest 14 | steps: 15 | - name: Checkout code 16 | uses: actions/checkout@v4 17 | with: 18 | submodules: true 19 | - name: Set up Node.js 20 | uses: actions/setup-node@v4 21 | with: 22 | node-version: '20.x' 23 | cache: yarn 24 | - name: Build 25 | env: 26 | # Docs will be served on localhost. Rewrite the host URL. 27 | URL: http://localhost:3000 28 | run: | 29 | yarn install --frozen-lockfile 30 | yarn build 31 | - name: Serve 32 | run: | 33 | yarn serve & 34 | - name: Check links 35 | run: | 36 | yarn blc 37 | -------------------------------------------------------------------------------- /.github/workflows/ci-lint.yml: -------------------------------------------------------------------------------- 1 | name: ci-lint 2 | 3 | on: 4 | pull_request: 5 | branches: [main] 6 | 7 | jobs: 8 | ci-lint: 9 | name: lint 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v4 13 | with: 14 | submodules: true 15 | 16 | - uses: actions/setup-node@v4 17 | with: 18 | node-version: 20.x 19 | cache: yarn 20 | 21 | - name: Install fonts 22 | run: | 23 | sudo apt install fonts-noto-core -y 24 | 25 | - name: Yarn 26 | run: | 27 | yarn install --frozen-lockfile 28 | 29 | - name: Mermaid diagrams synced with sources 30 | run: | 31 | yarn diagrams 32 | git diff --exit-code 33 | -------------------------------------------------------------------------------- /.github/workflows/ci-test.yml: -------------------------------------------------------------------------------- 1 | name: ci-test 2 | 3 | on: 4 | pull_request: 5 | branches: [main] 6 | 7 | jobs: 8 | ci-test: 9 | name: test 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v4 13 | with: 14 | submodules: true 15 | 16 | - uses: actions/setup-node@v4 17 | with: 18 | node-version: 20.x 19 | cache: yarn 20 | 21 | - name: Build 22 | run: | 23 | yarn install --frozen-lockfile 24 | yarn build 25 | 26 | - name: Test 27 | run: | 28 | yarn test 29 | -------------------------------------------------------------------------------- /.github/workflows/deploy-main.yml: -------------------------------------------------------------------------------- 1 | # NOTE: This name appears in GitHub's Checks API and in workflow's status badge. 2 | name: deploy-main 3 | 4 | on: 5 | push: 6 | branches: [main] 7 | 8 | jobs: 9 | deploy-main: 10 | # NOTE: This name appears in GitHub's Checks API. 11 | name: deploy-main 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v4 15 | with: 16 | submodules: true 17 | - uses: actions/setup-node@v4 18 | with: 19 | node-version: 20.x 20 | cache: yarn 21 | - name: Build website 22 | run: | 23 | yarn install --frozen-lockfile 24 | yarn build 25 | - name: Deploy to GitHub Pages 26 | uses: peaceiris/actions-gh-pages@v4 27 | with: 28 | github_token: ${{ secrets.GITHUB_TOKEN }} 29 | publish_dir: ./build 30 | force_orphan: true 31 | cname: docs.oasis.io 32 | user_name: github-actions[bot] 33 | user_email: 41898282+github-actions[bot]@users.noreply.github.com 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 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* 21 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "external/oasis-core"] 2 | path = external/oasis-core 3 | url = https://github.com/oasisprotocol/oasis-core 4 | branch = stable/24.2.x 5 | [submodule "external/oasis-sdk"] 6 | path = external/oasis-sdk 7 | url = https://github.com/oasisprotocol/oasis-sdk 8 | [submodule "external/adrs"] 9 | path = external/adrs 10 | url = https://github.com/oasisprotocol/adrs 11 | [submodule "external/cli"] 12 | path = external/cli 13 | url = https://github.com/oasisprotocol/cli 14 | [submodule "external/sapphire-paratime"] 15 | path = external/sapphire-paratime 16 | url = https://github.com/oasisprotocol/sapphire-paratime 17 | -------------------------------------------------------------------------------- /.markdownlint-cli2.cjs: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | 3 | /** @type {import('markdownlint').Options} */ 4 | const options = { 5 | config: { 6 | // TODO: enable some of these rules 7 | 'line-length': false, 8 | 'no-multiple-blanks': false, 9 | 'no-hard-tabs': false, 10 | 'no-space-in-links': false, 11 | 'no-space-in-emphasis': false, 12 | 'blanks-around-fences': false, 13 | 'list-marker-space': false, 14 | 'ol-prefix': false, 15 | 'ul-style': false, 16 | 'ul-indent': false, 17 | 'no-duplicate-header': false, 18 | 'no-emphasis-as-heading': false, 19 | 'no-trailing-punctuation': false, 20 | 'heading-increment': false, 21 | 'first-line-heading': false, 22 | 'fenced-code-language': false, 23 | 'commands-show-output': false, 24 | 'no-inline-html': false, 25 | 'no-alt-text': false, 26 | }, 27 | customRules: [{ 28 | // Check relative links have a file extension, and file exists 29 | names: ['relative-links-have-ext'], 30 | description: 'for Docusaurus routing', 31 | tags: ['links'], 32 | information: new URL('https://github.com/oasisprotocol/docs/issues/4'), 33 | function: ({ name, tokens }, onError) => { 34 | const fs = require('fs'); 35 | const path = require('path'); 36 | const dir = path.dirname(name); 37 | for (const token of tokens) { 38 | if (token.type === 'inline') { 39 | for (const child of token.children) { 40 | if (child.type === 'link_open') { 41 | const [_key, href] = child.attrs.find(([key, value]) => key === 'href'); 42 | const isAbsoluteUrl = new URL(href, 'relative://a.b').protocol !== 'relative:'; 43 | const isAbsolutePathOrNetworkPath = href.startsWith('/'); 44 | const isFragment = href.startsWith('#'); 45 | 46 | const isRelativePath = !isAbsoluteUrl && !isAbsolutePathOrNetworkPath && !isFragment; 47 | if (isRelativePath) { 48 | const relativePath = href.split('#')[0]; 49 | const missingExtension = !path.extname(relativePath); 50 | const missingFile = !fs.existsSync(path.join(dir, relativePath)); 51 | if (missingExtension) { 52 | const postfixSuggestions = ['.md', '.mdx', 'README.md', 'README.mdx', '/README.md', '/README.mdx', 'index.md', '/index.md']; 53 | const goodPostfix = postfixSuggestions.find( 54 | postfix => fs.existsSync(path.join(dir, relativePath + postfix)) 55 | ); 56 | const postfixColumn = 1 + child.line.indexOf(href) + relativePath.length; 57 | const canFix = goodPostfix && child.line.indexOf(href) >= 0; 58 | onError({ 59 | lineNumber: child.lineNumber, 60 | context: href, 61 | detail: 'Filename extension missing', 62 | fixInfo: !canFix ? undefined : { 63 | insertText: goodPostfix, 64 | editColumn: postfixColumn, 65 | }, 66 | }); 67 | } else if (missingFile) { 68 | onError({ 69 | lineNumber: child.lineNumber, 70 | context: href, 71 | detail: 'File missing', 72 | }); 73 | } 74 | } 75 | } 76 | } 77 | } 78 | } 79 | }, 80 | }], 81 | }; 82 | 83 | module.exports = options; 84 | -------------------------------------------------------------------------------- /docs/README.mdx: -------------------------------------------------------------------------------- 1 | import DocCard from '@theme/DocCard'; 2 | import DocCardList from '@theme/DocCardList'; 3 | import {findSidebarItem} from '@site/src/sidebarUtils'; 4 | 5 | # Getting Started 6 | 7 | ## Use Oasis 8 | 9 | This introductory part contains general overview of the Oasis Network such as 10 | the distinction between the consensus layer and different ParaTimes. It 11 | also covers wallets and other tools for managing your assets across the Oasis 12 | chains and how to use unique Oasis features. 13 | 14 | 19 | 20 | ## Build on Oasis 21 | 22 | Contains learning material for the smart contract developers. Since the Oasis 23 | platform is best known for confidentiality, the most notable ParaTime is 24 | [Oasis Sapphire], an **EVM-compatible** ParaTime with **built-in contract state 25 | encryption**. The Oasis team also prepared a set of libraries called the 26 | [Oasis Privacy Layer] to **bridge existing dApps running on other chains** to 27 | use the unique Sapphire's confidentiality. 28 | 29 | Our [Runtime OFfchain Logic (ROFL)][ROFL] enables you to **build secure applications running 30 | offchain** in a trusted environment (TEE) and that seamlessly communicate with 31 | Oasis Sapphire. This is ideal for trusted oracles, compute-expensive tasks 32 | in AI or as a backend for interactive games. 33 | 34 | 40 | 41 | [Oasis Sapphire]: ./build/sapphire/README.mdx 42 | [Oasis Privacy Layer]: ./build/opl/README.mdx 43 | [ROFL]: ./build/rofl/README.mdx 44 | 45 | ## Get Involved 46 | 47 | Contains information on official channels to get in touch with the Oasis Network 48 | developers and how to contribute to the network. 49 | 50 | 56 | 57 | ## Run Node 58 | 59 | If you want to run your own Oasis node, this part will provide you 60 | with guides on the current Mainnet and Testnet network parameters and how to 61 | set up your node, let it be a validator node, perhaps running a ParaTime or 62 | just a simple client node for your server to submit transactions and perform 63 | queries on the network. 64 | 65 | 71 | 72 | ## Build ParaTimes 73 | 74 | Apart from the Sapphire, Emerald, Cipher and the Key manager ParaTimes, 75 | you can also write, compile, sign and deploy your own ParaTime on the Oasis 76 | Network. This part describes the knobs you need to use to do so. 77 | 78 | 79 | 80 | ## Develop Core 81 | 82 | Whether you want to contribute your code to the core components of the Oasis 83 | Network or just learn more about the Oasis consensus layer and other core 84 | components, this is the part for you. 85 | 86 | 87 | 88 | Additions or changes to the interoperable Oasis network components are always 89 | made with consensus. Similar to the Ethereum's ERC/EIP mechanism Oasis follows 90 | formal Architectural Decision Records (ADRs) which are first proposed, voted on 91 | and finally implemented, if accepted. 92 | 93 | 94 | -------------------------------------------------------------------------------- /docs/adrs: -------------------------------------------------------------------------------- 1 | ../external/adrs -------------------------------------------------------------------------------- /docs/build/diagrams/opl-contract-flow.mmd: -------------------------------------------------------------------------------- 1 | sequenceDiagram 2 | participant User 3 | participant Home as Home Contract
(Host) 4 | participant SGN 5 | participant Executor 6 | participant Sapphire as Sapphire Contract
(Enclave) 7 | User ->> Home: Transaction 8 | Home -->> SGN: SGN Watches Events 9 | SGN -->> Executor: Waits for SGN Approval 10 | Executor ->> Sapphire: Submit Proof Tx 11 | -------------------------------------------------------------------------------- /docs/build/diagrams/opl-hyperlane-flow.mmd: -------------------------------------------------------------------------------- 1 | flowchart TB 2 | subgraph Origin["Origin"] 3 | Sender["Sender"] 4 | M_O[("Mailbox")] 5 | end 6 | subgraph Destination["Destination"] 7 | Recipient["Recipient"] 8 | M_D[("Mailbox")] 9 | ISM["InterchainSecurityModule"] 10 | end 11 | Sender -- "1.dispatch(destination, recipient, body)" --> M_O 12 | M_O -. "2.emit dispatch(sender, destination, recipient, body)" .-> Relayer(("Relayer")) 13 | Relayer -- "3.process(metadata, message)" --> M_D 14 | M_D -. "4.interchainSecurityModule()" .-> Recipient 15 | M_D -- "5.verify(metadata, message)" --> ISM 16 | M_D -- "6.handle(origin, sender, body)" --> Recipient 17 | 18 | style Sender fill:#FFFFFF,color:#000000,stroke-width:1px,stroke-dasharray: 0,stroke:#000000 19 | style M_O stroke-width:1px,stroke-dasharray: 0,stroke:#000000,fill:#0500e2,color:#FFFFFF 20 | style Recipient fill:#FFFFFF,color:#000000,stroke-width:1px,stroke-dasharray: 0,stroke:#000000 21 | style M_D stroke-width:1px,stroke-dasharray: 0,stroke:#000000,fill:#0500e2,color:#FFFFFF 22 | style ISM stroke-width:1px,stroke-dasharray: 0,stroke:#000000,fill:#0500e2,color:#FFFFFF 23 | style Relayer stroke-width:1px,stroke-dasharray: 0,stroke:#000000,fill:#0500e2,color:#FFFFFF 24 | style Origin fill:#BBDEFB,stroke:#000000 25 | style Destination fill:#BBDEFB,stroke:#000000 26 | -------------------------------------------------------------------------------- /docs/build/diagrams/opl-hyperlane-pingpong-flow.mmd: -------------------------------------------------------------------------------- 1 | sequenceDiagram 2 | participant User 3 | participant P-A as PingPong.sol
(Chain A) 4 | participant I-A as ISM
(Chain A) 5 | participant M-A as Mailbox
(Chain A) 6 | participant Relayer as Verifier
& Relayer 7 | participant M-B as Mailbox
(Chain B) 8 | participant I-B as ISM
(Chain B) 9 | participant P-B as PingPong.sol
(Chain B) 10 | User->>+P-A: sendPing() 11 | P-A->>+M-A: disptach() 12 | M-A-->>-Relayer: Listens to event 13 | Relayer-->>+M-B: Relays message
via process() 14 | M-B<<->>+P-B: interchainSecurityModule()
Mailbox default ISM if empty 15 | M-B<<->>+I-B: verify() 16 | M-B->>+P-B: handle() 17 | P-B->>-M-B: disptach() 18 | M-B-->>-Relayer: Listens to event 19 | Relayer-->>+M-A: Relays message
via process() 20 | M-A<<->>P-A: interchainSecurityModule()
Mailbox default ISM if empty 21 | M-A<<->>I-A: verify() 22 | M-A->>-P-A: handle() 23 | -------------------------------------------------------------------------------- /docs/build/diagrams/opl-router-pingpong-flow.mmd: -------------------------------------------------------------------------------- 1 | sequenceDiagram 2 | participant User 3 | participant P-A as PingPong.sol
(Chain A) 4 | participant G-A as Gateway
(Chain A) 5 | participant Relayer as Router Chain
& Relayer 6 | participant G-B as Gateway
(Chain B) 7 | participant P-B as PingPong.sol
(Chain B) 8 | User->>+P-A: iPing() 9 | P-A->>+G-A: iSend() 10 | G-A-->>Relayer: Listens to event 11 | Relayer-->>+G-B: Relays message 12 | G-B->>+P-B: iReceive() 13 | P-B->>-G-B: Response from
iReceive() 14 | G-B-->>-Relayer: Listens to event 15 | Relayer-->>G-A: Relays message 16 | G-A->>-P-A: iAck() 17 | -------------------------------------------------------------------------------- /docs/build/images/emerald/block_explorer1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/emerald/block_explorer1.png -------------------------------------------------------------------------------- /docs/build/images/emerald/block_explorer2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/emerald/block_explorer2.png -------------------------------------------------------------------------------- /docs/build/images/emerald/oasisscan1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/emerald/oasisscan1.png -------------------------------------------------------------------------------- /docs/build/images/emerald/oasisscan2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/emerald/oasisscan2.png -------------------------------------------------------------------------------- /docs/build/images/opl/celer-e2e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/opl/celer-e2e.png -------------------------------------------------------------------------------- /docs/build/images/opl/compile-pingpong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/opl/compile-pingpong.png -------------------------------------------------------------------------------- /docs/build/images/opl/confirm-new-poll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/opl/confirm-new-poll.png -------------------------------------------------------------------------------- /docs/build/images/opl/create-poll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/opl/create-poll.png -------------------------------------------------------------------------------- /docs/build/images/opl/past-dao-proposals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/opl/past-dao-proposals.png -------------------------------------------------------------------------------- /docs/build/images/opl/privacy-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/opl/privacy-layer-diagram.png -------------------------------------------------------------------------------- /docs/build/images/opl/router-approve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/opl/router-approve.png -------------------------------------------------------------------------------- /docs/build/images/opl/router-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/opl/router-architecture.png -------------------------------------------------------------------------------- /docs/build/images/opl/router-deploy-pingpong-amoy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/opl/router-deploy-pingpong-amoy.png -------------------------------------------------------------------------------- /docs/build/images/opl/router-deploy-pingpong-sapphire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/opl/router-deploy-pingpong-sapphire.png -------------------------------------------------------------------------------- /docs/build/images/opl/router-faucet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/opl/router-faucet.png -------------------------------------------------------------------------------- /docs/build/images/opl/router-iping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/opl/router-iping.png -------------------------------------------------------------------------------- /docs/build/images/opl/router-metadata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/opl/router-metadata.png -------------------------------------------------------------------------------- /docs/build/images/opl/vote-on-ballot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/opl/vote-on-ballot.png -------------------------------------------------------------------------------- /docs/build/images/remix/remix01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/remix/remix01.png -------------------------------------------------------------------------------- /docs/build/images/remix/remix02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/remix/remix02.png -------------------------------------------------------------------------------- /docs/build/images/remix/remix03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/remix/remix03.png -------------------------------------------------------------------------------- /docs/build/images/remix/remix04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/remix/remix04.png -------------------------------------------------------------------------------- /docs/build/images/remix/sourcify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/remix/sourcify.png -------------------------------------------------------------------------------- /docs/build/images/tools/abi_playground_import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/tools/abi_playground_import.png -------------------------------------------------------------------------------- /docs/build/images/tools/abi_playground_load.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/tools/abi_playground_load.png -------------------------------------------------------------------------------- /docs/build/images/tools/abi_playground_localnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/tools/abi_playground_localnet.png -------------------------------------------------------------------------------- /docs/build/images/tools/band_demooracle_smartcontract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/tools/band_demooracle_smartcontract.png -------------------------------------------------------------------------------- /docs/build/images/tools/band_deploy_demooracle_smartcontact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/tools/band_deploy_demooracle_smartcontact.png -------------------------------------------------------------------------------- /docs/build/images/tools/band_get_rates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/tools/band_get_rates.png -------------------------------------------------------------------------------- /docs/build/images/tools/band_saveprice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/tools/band_saveprice.png -------------------------------------------------------------------------------- /docs/build/images/tools/explorer_abi_playground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/tools/explorer_abi_playground.png -------------------------------------------------------------------------------- /docs/build/images/tools/sourcify1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/tools/sourcify1.png -------------------------------------------------------------------------------- /docs/build/images/tools/sourcify2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/tools/sourcify2.png -------------------------------------------------------------------------------- /docs/build/images/tools/sourcify3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/build/images/tools/sourcify3.png -------------------------------------------------------------------------------- /docs/build/opl/celer/networks.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Supported networks on Celer IM 3 | --- 4 | 5 | # Supported Networks 6 | 7 | ## Mainnets 8 | 9 | | Name | Int ID | Hex ID | autoswitch name | 10 | | ---- | ------ | ------ | --------------- | 11 | | Ape | 16350 | 0x3fde | ape | 12 | | Arbitrum Nova | 42170 | 0xa4ba | arbitrum-nova | 13 | | Arbitrum One | 42161 | a4b1 | arbitrum-one | 14 | | Astar | 592 | 0x250 | astar | 15 | | Aurora | 1313161554 | 0x4e454152 | aurora | 16 | | Avalanche | 43114 | 0xa86a | avalanche | 17 | | Binance Smart Chain | 56 | 0x38 | bsc | 18 | | Ethereum | 1 | 0x1 | ethereum | 19 | | Fantom | 250 | 0xfa | fantom | 20 | | Filecoin | 314 | 0x13a | filecoin | 21 | | Milkomeda C1 | 2001 | 0x7d1 | milkomeda | 22 | | Moonriver | 1285 | 0x505 | moonriver | 23 | | Polygon | 137 | 0x89 | polygon | 24 | | Sapphire | 23294 | 0x5afe | sapphire | 25 | | Syscoin | 57 | 0x39 | syscoin | 26 | | Polygon zkEVM | 1101 | 0x44d | polygon-zkevm | 27 | | Optimism | 10 | 0xa | optimism | 28 | | zkSync Era | 324 | 0x144 | zksync-era | 29 | 30 | ## Testnets 31 | 32 | :::info 33 | 34 | Oasis operates an IM [executor] supporting Avalanche and BSC testnets. You may 35 | need to deploy your own while developing on another Celer supported network. 36 | 37 | ::: 38 | 39 | [executor]: ../celer/README.md#executor 40 | 41 | | Name | Int ID | Hex ID | autoswitch name | 42 | | ---- | ------ | ------ | --------------- | 43 | | Avalanche C-Chain Fuji Testnet | 43113 | 0xa869 | avalanche-fuji | 44 | | BSC Testnet | 97 | 0x61 | bsc-testnet | 45 | | Dexalot Testnet | 432201 | 0x69849 | dexalot-testnet | 46 | | Fantom Testnet | 4002 | 0xfa2 | fantom-testnet | 47 | | FNCY Testnet | 923018 | 0xe158a | fncy-testnet | 48 | | Godwoken Testnet | 71401 | 0x116e9 | godwoken-testnet | 49 | | Sapphire Testnet | 23295 | 0x5aff | sapphire-testnet | 50 | | Scroll Alpha Testnet | 534353 | 0x82751 | scroll-testnet | 51 | | Shibuya Testnet | 81 | 0x51 | shibuya-testnet | 52 | -------------------------------------------------------------------------------- /docs/build/opl/hyperlane/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Hyperlane Protocol Overview 3 | --- 4 | import DocCard from '@theme/DocCard'; 5 | import DocCardList from '@theme/DocCardList'; 6 | import {findSidebarItem} from '@site/src/sidebarUtils'; 7 | 8 | # Hyperlane Protocol 9 | 10 | [Hyperlane] is a permissionless interoperability protocol that enables seamless 11 | cross-chain communication for developers. Its unique design allows deployment 12 | across various blockchain environments, including layer 1 chains, rollups, and 13 | app-chains, without the need for approvals or intermediaries. This 14 | [permissionless design] empowers developers to build cross-chain applications 15 | with full control over their operations in a multi-chain ecosystem. 16 | 17 | [Hyperlane]: https://hyperlane.xyz/ 18 | [permissionless design]: https://docs.hyperlane.xyz/docs/intro 19 | 20 | ### Architecture 21 | 22 | ![Hyperlane Messaging Flow](../../diagrams/opl-hyperlane-flow.mmd.svg) 23 | 24 | *Basic Hyperlane cross-chain messaging flow[^1]* 25 | 26 | [^1]: Architecture diagram is courtesy of [Hyperlane documentation][hyperlane-architecture] 27 | 28 | [hyperlane-architecture]: https://docs.hyperlane.xyz/docs/protocol/protocol-overview 29 | 30 | Hyperlane's architecture consists of four key components: 31 | 32 | - **[Mailboxes]**: Core messaging contracts deployed on each chain that handle message sending/receiving 33 | - **[Interchain Security Modules (ISMs)][ism]**: Custom security logic that determines how messages are verified 34 | - **[Relayers]**: Off-chain agents that transport messages between chains 35 | - **[Validators]**: Fulfilling the security layer of the Hyperlane protocol 36 | 37 | [Mailboxes]: https://docs.hyperlane.xyz/docs/protocol/mailbox 38 | [ism]: https://docs.hyperlane.xyz/docs/protocol/ISM/modular-security 39 | [Relayers]: https://docs.hyperlane.xyz/docs/protocol/agents/relayer 40 | [Validators]: https://docs.hyperlane.xyz/docs/protocol/agents/validators 41 | 42 | ## Fees 43 | 44 | Hyperlane fees are called **Interchain Gas Payments** and are payed by the 45 | *message sender* to the *relayer*. 46 | 47 | For more info about the Interchain Gas Payments, consult the [Hyperlane documentation][igp] 48 | 49 | [igp]: https://docs.hyperlane.xyz/docs/protocol/interchain-gas-payment 50 | 51 | ## See also 52 | 53 | 58 | -------------------------------------------------------------------------------- /docs/build/opl/hyperlane/cli.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Hyperlane CLI for Sapphire 3 | --- 4 | 5 | # Hyperlane CLI 6 | 7 | :::info 8 | 9 | The standard **Hyperlane CLI** relies on the `eth_getStorageAt` method, 10 | which is incompatible with **Sapphire** by default. To address this, use the 11 | **[custom branch]** of the Hyperlane CLI or follow the guidance in the 12 | [Troubleshooting section] of Hyperlane. 13 | 14 | For more details about `eth_getStorageAt` on Sapphire, refer to the 15 | [Sapphire documentation]. 16 | 17 | ::: 18 | 19 | ## Installation 20 | 21 | 1. Clone the Sapphire-compatible branch: 22 | ```bash 23 | git clone https://github.com/hyperlane-xyz/hyperlane-monorepo.git --branch pb/storage-workaround 24 | cd hyperlane-monorepo 25 | ``` 26 | 27 | 2. Install dependencies and build the project: 28 | ```bash 29 | yarn install && yarn build 30 | ``` 31 | 32 | ## Usage 33 | 34 | Run the modified CLI: 35 | ```bash 36 | yarn workspace @hyperlane-xyz/cli hyperlane 37 | ``` 38 | 39 | ## Hyperlane Core Deployment 40 | 41 | For guidance on how to use the modified CLI for deploying the Hyperlane Core 42 | on Sapphire, refer to the [official deploy documentation][hyperlane-deploy]. 43 | 44 | [custom branch]: https://github.com/hyperlane-xyz/hyperlane-monorepo/tree/pb/storage-workaround 45 | [Sapphire documentation]: https://github.com/oasisprotocol/sapphire-paratime/blob/main/docs/develop/deployment#caution-against-using-eth_getstorageat 46 | [Troubleshooting section]: https://docs.hyperlane.xyz/docs/deploy-hyperlane-troubleshooting#eth_getstorageat-compatibility 47 | [hyperlane-deploy]: https://docs.hyperlane.xyz/docs/deploy-hyperlane 48 | -------------------------------------------------------------------------------- /docs/build/opl/hyperlane/relayer.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Run a Hyperlane Relayer 3 | --- 4 | # Relayer 5 | 6 | [Relayers][relayer] are off-chain agents that transport messages between chains. 7 | 8 | [relayer]: https://docs.hyperlane.xyz/docs/protocol/agents/relayer 9 | 10 | ## Run a Relayer 11 | 12 | The easiest way to run a relayer is with the **[Hyperlane CLI]**. 13 | 14 | [Hyperlane CLI]: https://docs.hyperlane.xyz/docs/reference/cli 15 | 16 | 1. Export your private key to be used with the CLI 17 | 18 | ```shell 19 | export HYP_KEY='' 20 | ``` 21 | 2. Start a relayer which watches `Arbitrum Sepolia` & `SapphireTestnet` 22 | 23 | ```shell 24 | hyperlane relayer --chains sapphiretestnet,arbitrumsepolia 25 | ``` 26 | 27 | :::info Chain Configs 28 | 29 | `Sapphire Testnet` is registered in the *Hyperlane Registry*, if you deploy 30 | the *Hyperlane Core* on `Sapphire Testnet` yourself, make sure you have 31 | *Hyperlane* config files similar to the ones below in 32 | `$HOME/.hyperlane/chains/sapphiretestnet`. 33 | 34 |
35 | metadata.yaml 36 | ```yaml 37 | # yaml-language-server: $schema=../schema.json 38 | blockExplorers: 39 | - apiUrl: https://nexus.oasis.io/v1/ 40 | family: other 41 | name: Oasis Explorer 42 | url: https://explorer.oasis.io/testnet/sapphire 43 | chainId: 23295 44 | displayName: Sapphire Testnet 45 | domainId: 23295 46 | isTestnet: true 47 | name: sapphiretestnet 48 | nativeToken: 49 | decimals: 18 50 | name: TEST 51 | symbol: TEST 52 | protocol: ethereum 53 | rpcUrls: 54 | - http: https://testnet.sapphire.oasis.io 55 | technicalStack: other 56 | ``` 57 |
58 |
59 | addresses.yaml 60 | ```yaml 61 | domainRoutingIsmFactory: "0x3497967f8E5041f486eC559E6B760d8f051A034C" 62 | interchainAccountIsm: "0xD84DE931A0EDA06Af3944a4e9933c24f3B56DCaC" 63 | interchainAccountRouter: "0xFdca43771912CE5F5B4D869B0c05df0b6eF8aEFc" 64 | mailbox: "0x79d3ECb26619B968A68CE9337DfE016aeA471435" 65 | proxyAdmin: "0x5Ed8004e3352df333901b0B2E98Bd98C3B4AA59A" 66 | staticAggregationHookFactory: "0x212c232Ee07E187CF9b4497A30A3a4D034aAC4D6" 67 | staticAggregationIsmFactory: "0xE25A539AdCa1Aac56549997f2bB88272c5D9498c" 68 | staticMerkleRootMultisigIsmFactory: "0x9851EC4C62943E9974370E87E93CE552abE7705E" 69 | staticMerkleRootWeightedMultisigIsmFactory: "0x688dE6d0aBcb60a711f149c274014c865446b49D" 70 | staticMessageIdMultisigIsmFactory: "0xFE0937b1369Bbba59211c4119B91984FF450ccf1" 71 | staticMessageIdWeightedMultisigIsmFactory: "0x1de05675c8cd512A30c17Ea0a3491d74eF290994" 72 | testRecipient: "0x7bf548104F8f500C563Aa6DC7FbF3b1ad93E4E03" 73 | validatorAnnounce: "0xB119f96a106919489b6495128f30e7088e55B05c" 74 | ``` 75 |
76 | 77 | ::: 78 | 79 | :::tip Agents 80 | 81 | For a more complex validator and relayer setup, check Hyperlane's **[Local Agents guide]** 82 | or the more production ready **[Agent Operators guide]**. 83 | 84 | ::: 85 | 86 | [Local Agents guide]: https://docs.hyperlane.xyz/docs/guides/deploy-hyperlane-local-agents 87 | [Agent Operators guide]: https://docs.hyperlane.xyz/docs/operate/overview-agents 88 | -------------------------------------------------------------------------------- /docs/build/opl/opl-sdk/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: OPL sdk 3 | --- 4 | 5 | # OPL SDK 6 | 7 | 8 | The OPL SDK is available in our [Solidity library][sapphire-contracts]. 9 | The SDK wraps the Celer Inter-Chain Message (IM) and makes it easy and straight 10 | forward to integrate [Sapphire] and its privacy features into your existing or 11 | future Web3 applications. 12 | 13 | [sapphire-contracts]: https://www.npmjs.com/package/@oasisprotocol/sapphire-contracts 14 | [Sapphire]: https://oasisprotocol.org/sapphire 15 | 16 | ## Overview 17 | 18 | ![Transaction Flow](../../diagrams/opl-contract-flow.mmd.svg) 19 | 20 | 1. The **user** submits a transaction on the Home network to a contract which uses 21 | `postMessage` to emit an event about a the cross-chain message. 22 | 2. The **Celer *State Guardian Network* (SGN)** monitors for transactions which 23 | trigger a cross-chain message event and create attestation. 24 | 3. The **Executor** waits, when the SGN approves the message the Executor submits a 25 | transaction to the target contract on Sapphire. 26 | 27 | ## Fees 28 | 29 | The Home Contract pays the SGN to watch and approve the message, but the 30 | Executor needs to be run by somebody willing to pay for the gas to submit 31 | transactions to the destination chain. 32 | 33 | More details to the Celer Executor you can find [here][celer-executor]. 34 | 35 | 36 | ## Quickstart 37 | 38 | A pair of contracts are linked bidirectionally 1-1 to each other across chains, 39 | with one end on Sapphire and the other on a supported EVM-compatible chain (the 40 | Home Network). They can post and receive messages to & from each other using the 41 | message-passing bridge, but must register endpoints to define which messages 42 | they handle from each other. 43 | 44 | ### Setup 45 | 46 | Start by adding the [`@oasisprotocol/sapphire-contracts`] NPM package to your 47 | Hardhat project so you can import `OPL.sol`: 48 | 49 | ```shell npm2yarn 50 | npm install @oasisprotocol/sapphire-contracts 51 | ``` 52 | 53 | [`@oasisprotocol/sapphire-contracts`]: http://npmjs.com/package/@oasisprotocol/sapphire-contracts 54 | 55 | Now define the two contracts: 56 | 57 | - A contract on **Sapphire** which runs inside the confidential `enclave` 58 | - A contract on the **home chain** as a `host` which triggers the example 59 | 60 | ### Sapphire Contract 61 | 62 | On Sapphire use the constructor to provide the Sapphire contract with the 63 | location (address and chain) of the contract on the Home chain and register an 64 | endpoint called `secretExample`. 65 | 66 | ```solidity 67 | import {Enclave, Result, autoswitch} from "@oasisprotocol/sapphire-contracts/contracts/OPL.sol"; 68 | 69 | contract SapphireContract is Enclave { 70 | constructor(address otherEnd, string chain) Enclave(otherEnd, autoswitch(chain)) { 71 | registerEndpoint("secretExample", on_example); 72 | } 73 | function on_example(bytes calldata _args) internal returns (Result) { 74 | (uint256 a, bool b) = abi.decode(args, (uint256, bool)); 75 | // TODO: do confidential things here 76 | return Result.Success; 77 | } 78 | } 79 | ``` 80 | 81 | ### Home Contract 82 | 83 | On the other chain, define your contract which can be called via 84 | `triggerExample` to send a message to the contract on Sapphire using the 85 | `postMessage` interface. 86 | 87 | ```solidity 88 | import {Host, Result} from "@oasisprotocol/sapphire-contracts/contracts/OPL.sol"; 89 | 90 | contract HomeContract is Host { 91 | constructor(address otherEnd) Host(otherEnd) { 92 | } 93 | function triggerExample (uint256 a, bool b) external payable { 94 | postMessage("secretExample", abi.encode(a, b)); 95 | } 96 | } 97 | ``` 98 | 99 | After a few minutes the bridge will detect and then the executor will invoke the 100 | `SapphireContract.on_example` method. 101 | 102 | :::info 103 | 104 | As noted in the [fees](#fees) section, an executor needs to relay your messages. 105 | Please refer to the Celer [Executor][celer-executor] section on how to get on 106 | the shared Message Executor or how to set up your own executor. 107 | 108 | ::: 109 | 110 | [celer-executor]: ../celer/README.md#executor 111 | -------------------------------------------------------------------------------- /docs/build/opl/router-protocol/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Cross-chain dApps with Router Protocol 3 | --- 4 | 5 | # Router Protocol 6 | 7 | Router Protocol offers two frameworks for cross-chain interactions: 8 | 9 | - **Router CrossTalk**: Enables stateless and stateful cross-chain messaging 10 | - **Router Nitro**: Facilitates native cross-chain asset transfers 11 | 12 | For guidance on choosing the appropriate framework, refer to Router's [guide]. 13 | 14 | This documentation focuses on **Router CrossTalk**. If you're primarily 15 | interested in asset transfers, please consult the [Router Nitro documentation]. 16 | 17 | [Router Nitro documentation]: https://docs.routerprotocol.com/develop/category/asset-transfer-via-nitro 18 | [guide]: https://docs.routerprotocol.com/overview/choosing-the-right-framework 19 | 20 | ## Router CrossTalk 21 | 22 | Router CrossTalk is designed to enable cross-chain interactions, allowing 23 | developers to create decentralized applications (dApps) that operate across 24 | multiple blockchain networks. This framework supports both stateless and 25 | stateful operations, providing flexible and efficient communication between 26 | contracts on different chains. 27 | 28 | ### Architecture 29 | 30 | ![Router Architecture](../../images/opl/router-architecture.png) 31 | *High-level architecture diagram for Router CrossTalk[^1]* 32 | 33 | [^1]: The CrossTalk high-level architecture diagram is courtesy of [Router documentation][router-architecture]. 34 | 35 | [router-architecture]: https://docs.routerprotocol.com/develop/message-transfer-via-crosstalk/key-concepts/high-level-architecture 36 | 37 | The **CrossTalk** infrastructure consists of three main components: 38 | 39 | - **Gateway** contracts on source and destination chains 40 | - **Orchestrators** on the Router chain 41 | - **Relayers** that forward messages to the Router Gateway contracts 42 | 43 | The process flow is as follows: 44 | 45 | 1. The dApp contract calls the iSend function on the source chain's Gateway 46 | contract. 47 | 2. Orchestrators monitor events emitted by the Gateway contract. 48 | 3. A Relayer picks up the transaction signed by the orchestrator and forwards 49 | the message to the destination chain's Router Gateway contract. 50 | 4. Gateway contract on the destination chain calls the dApp contract's 51 | `iReceive` function. 52 | 5. For acknowledgment, the process is reversed, and the Relayer calls the 53 | `iAck` function on the dApp contract on the source chain. 54 | 55 | ### Fees 56 | 57 | Fees in the cross-chain messaging process are paid by two parties: 58 | 59 | - The dApp **user** pays when initiating the transaction on the source chain. 60 | - The dApp **fee payer** pre-pays the Relayers for calling the Router Gateway 61 | contract. 62 | 63 | To ensure the correct **fee payer** is used, the dApp's contract must register 64 | the fee payer address as metadata with the Router Gateway. Additionally, the 65 | **fee payer** needs to approve the conntract on the Router chain, which can be 66 | done through the [Router Explorer]. 67 | 68 | For more info about the [fee management], consult the Router documentation. 69 | 70 | [Router Explorer]: https://testnet.routerscan.io/feePayer 71 | [fee management]: https://docs.routerprotocol.com/develop/message-transfer-via-crosstalk/key-concepts/fee-management 72 | 73 | 74 | ### Examples 75 | 76 | :::note Example: PingPong 77 | 78 | Explore our [PingPong example] to see Router CrossTalk in action. 79 | 80 | ::: 81 | 82 | [PingPong example]: ./pingpong-example.md 83 | 84 | For more examples, refer to the [Router Protocol documentation]: 85 | 86 | - [Cross-Chain NFT] 87 | - [Cross-Chain Read Request] 88 | 89 | and in the Router Protocol [CrossTalk sample repository]. 90 | 91 | [Router Protocol documentation]: https://docs.routerprotocol.com/develop/message-transfer-via-crosstalk 92 | [Cross-Chain NFT]: https://docs.routerprotocol.com/develop/message-transfer-via-crosstalk/evm-guides/your-first-crosschain-nft-contract 93 | [Cross-Chain Read Request]: https://docs.routerprotocol.com/develop/message-transfer-via-crosstalk/evm-guides/cross-chain-read-requests 94 | [CrossTalk sample repository]: https://github.com/router-protocol/new-crosstalk-sample/ 95 | -------------------------------------------------------------------------------- /docs/build/opl/router-protocol/approve.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Approving fee payer in Router Protocol 3 | --- 4 | 5 | # Approving the Fee Payer 6 | 7 | According to Router Protocol's [fee management] system, cross-chain requests 8 | initiated by a dApp are paid for by the dApp's corresponding fee payer account 9 | on the Router Chain. This fee payer is registered by calling the 10 | `setDappMetadata` function on the gateway contract. 11 | 12 | ## Obtaining Test Tokens 13 | 14 | To interact with the Router Protocol testnet, you'll need `ROUTE` test tokens. 15 | Follow these steps to obtain them from the Router Faucet: 16 | 17 | 1. Visit the [Router Faucet] website. 18 | 2. Connect your MetaMask wallet. 19 | 3. Add the Router Test Network to your MetaMask if prompted. 20 | 4. Enter your account address in the provided field. 21 | 5. Click the `Get Test Tokens` button. 22 | 23 | ![Router Test Faucet](../../images/opl/router-faucet.png) 24 | 25 | ## Approving Contracts in Router Explorer 26 | 27 | After deploying your contracts, you need to approve the fee payer for each of 28 | them. Here's how to do it using the Router Explorer: 29 | 30 | 1. Navigate to the [Router Explorer]. 31 | 2. Connect your wallet by clicking the "Connect Wallet" button. 32 | 3. Once connected, you'll see a list of pending approvals for your deployed 33 | contracts. 34 | 35 | ![Router Approvals](../../images/opl/router-approve.png) 36 | 37 | 4. For each contract listed, click the `Approve` button. 38 | 5. Follow the prompts in your wallet to sign the approval message. 39 | 40 | :::info 41 | 42 | If you don't see your deployed contracts in the list, it's possible you used an 43 | incorrect gateway address for the chain during deployment. Verify the current 44 | gateway addresses in the [Router Protocol documentation]. 45 | 46 | ::: 47 | 48 | ## Troubleshooting 49 | 50 | If you encounter any issues during the approval process, consider the following: 51 | 52 | - Ensure you have sufficient ROUTE test tokens in your wallet. 53 | - Verify that you're connected to the correct network in MetaMask. 54 | - Double-check that the contracts were deployed with the correct gateway 55 | addresses. 56 | 57 | [fee management]: https://docs.routerprotocol.com/develop/message-transfer-via-crosstalk/key-concepts/fee-management 58 | [Router Faucet]: https://faucet.routerprotocol.com/ 59 | [Router Explorer]: https://testnet.routerscan.io/feePayer 60 | [Router Protocol documentation]: https://docs.routerprotocol.com/networks/supported-chains#for-testnet 61 | -------------------------------------------------------------------------------- /docs/build/rofl: -------------------------------------------------------------------------------- 1 | ../../external/oasis-sdk/docs/rofl -------------------------------------------------------------------------------- /docs/build/sapphire: -------------------------------------------------------------------------------- 1 | ../../external/sapphire-paratime/docs/ -------------------------------------------------------------------------------- /docs/build/tools/README.mdx: -------------------------------------------------------------------------------- 1 | import DocCardList from '@theme/DocCardList'; 2 | import {findSidebarItem} from '@site/src/sidebarUtils'; 3 | 4 | # Tools & Services 5 | 6 | Oasis integrates with a number of services and provides tooling support for 7 | developers using [Remix] (*unencrypted transactions only*), [Sourcify], 8 | [Docker images][localnet], [Band], and more. Please reach out to us on 9 | [Discord][discord] if you are using a tool that has problems integrating with 10 | Oasis. 11 | 12 | [Remix]: ./remix.md 13 | [Sourcify]: ./verification.md 14 | [localnet]: ./localnet.mdx 15 | [Band]: ./band.md 16 | [discord]: https://oasis.io/discord 17 | 18 | ## See also 19 | 20 | 27 | -------------------------------------------------------------------------------- /docs/build/tools/abi-playground.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Interacting with contracts in the browser 3 | --- 4 | 5 | # ABI Playground 6 | 7 | The [ABI Playground][abi-playground] provides an interactive environment for 8 | working with verified smart contracts on Oasis networks. Similar to Etherscan's 9 | read/write contract functionality, you can execute functions on verified 10 | contracts deployed to the Sapphire and Emerald networks. 11 | 12 | If your contract isn't verified yet, please see our [verification] chapter. 13 | 14 | ## Access Verified Contracts 15 | 16 | You can access verified contracts in two ways: 17 | 18 | ### Method 1: via Explorer 19 | 20 | 1. Navigate to the [Explorer]. 21 | 2. Search for a verified contract using its address, e.g. Wrapped ROSE: 22 | `0x8Bc2B030b299964eEfb5e1e0b36991352E56D2D3`. 23 | 3. Click `Interact in ABI Playground`. 24 | 25 | ![Explorer](../images/tools/explorer_abi_playground.png) 26 | 27 | 4. The ABI Playground will open with the Wrapped ROSE contract loaded. 28 | 29 | ### Method 2: Direct ABI Playground Access 30 | 31 | 1. Visit the [ABI Playground][abi-playground]. 32 | 2. Enter a verified contract address, e.g., Wrapped ROSE: 33 | `0x8Bc2B030b299964eEfb5e1e0b36991352E56D2D3`. 34 | 3. Click `Load Contract`. 35 | 36 | ![ABI Playground Load](../images/tools/abi_playground_load.png) 37 | 38 | 4. The ABI Playground will open with the Wrapped ROSE contract loaded. 39 | 40 | ## Working with Localnet Contracts 41 | 42 | The ABI Playground also supports interacting with contracts deployed on a 43 | [localnet] for testing purposes. 44 | 45 | 1. Visit the [ABI Playground][abi-playground]. 46 | 2. Select `Oasis Saphhire Localnet` from the network dropdown. 47 | 48 | ![ABI Playground localnet](../images/tools/abi_playground_localnet.png) 49 | 50 | 3. Enter address of the contract you deployed on localnet. 51 | 4. Paste the ABI JSON into the provided text field. 52 | 5. Click `Import ABI` to load the interface. 53 | 54 | ![ABI Playground import](../images/tools/abi_playground_import.png) 55 | 56 | :::info Finding Your Contract's ABI 57 | 58 | When using development frameworks: 59 | 60 | - Hardhat: Look in the `artifacts` directory 61 | - Foundry: Check the `out` directory 62 | 63 | If you encounter format errors, validate your ABI JSON using an online 64 | formatter before importing. 65 | 66 | ::: 67 | 68 | ## Troubleshooting 69 | 70 | ### Contract address not found 71 | 72 | - **Cause**: The contract might not be verified on Sourcify or the address is incorrect. 73 | - **Solution**: Verify the contract on Sourcify or double-check the address. 74 | 75 | ### Invalid ABI format 76 | 77 | - **Cause**: The ABI JSON might not be following standard formatting. 78 | - **Solution**: Use an online JSON formatter to validate and reformat the ABI before importing it. 79 | 80 | Should you have any other problems or questions, do not hesitate to share them with us on the 81 | [#dev-central Discord channel][discord]. 82 | 83 | [abi-playground]: https://abi-playground.oasis.io/ 84 | [Explorer]: https://explorer.oasis.io/ 85 | [localnet]: ./localnet.mdx 86 | [verification]: ./verification.md 87 | [discord]: https://oasis.io/discord 88 | -------------------------------------------------------------------------------- /docs/build/tools/build-paratime/README.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: Build your own ParaTime using Oasis Runtime SDK 3 | --- 4 | 5 | import DocCardList from '@theme/DocCardList'; 6 | import {findSidebarItem} from '@site/src/sidebarUtils'; 7 | 8 | # Build ParaTime 9 | 10 | This chapter will teach you how to build your own ParaTime with [Oasis Runtime 11 | SDK]. 12 | 13 | 20 | 21 | [Oasis Runtime SDK]: 22 | https://github.com/oasisprotocol/oasis-sdk/tree/main/runtime-sdk 23 | -------------------------------------------------------------------------------- /docs/build/tools/build-paratime/minimal-runtime.md: -------------------------------------------------------------------------------- 1 | ../../../../external/oasis-sdk/docs/runtime/minimal-runtime.md -------------------------------------------------------------------------------- /docs/build/tools/build-paratime/modules.md: -------------------------------------------------------------------------------- 1 | ../../../../external/oasis-sdk/docs/runtime/modules.md -------------------------------------------------------------------------------- /docs/build/tools/build-paratime/prerequisites.md: -------------------------------------------------------------------------------- 1 | ../../../../external/oasis-sdk/docs/runtime/prerequisites.md -------------------------------------------------------------------------------- /docs/build/tools/build-paratime/reproducibility.md: -------------------------------------------------------------------------------- 1 | ../../../../external/oasis-sdk/docs/runtime/reproducibility.md -------------------------------------------------------------------------------- /docs/build/tools/other-paratimes/README.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: Other Paratimes 3 | --- 4 | import DocCard from '@theme/DocCard'; 5 | import DocCardList from '@theme/DocCardList'; 6 | import {findSidebarItem} from '@site/src/sidebarUtils'; 7 | 8 | # Other ParaTimes 9 | 10 | In addition to our primary ParaTime, [Sapphire], several additional ParaTimes 11 | are running on top of the consensus layer. 12 | DApp developers can choose a Paratime to build on according to their 13 | specific requirements, such as confidentiality and EVM compatibility. 14 | 15 | Learn more by exploring the ParaTimes below! 16 | 17 | | | EVM-compatible | Oasis Wasm | 18 | |---------------------:|-------------------------------------------------------|-----------------------------------------------------| 19 | | **Confidential** | | | 20 | | **Non-Confidential** | | | 21 | 22 | [Sapphire]: https://github.com/oasisprotocol/docs/blob/main/docs/build/sapphire/README.mdx 23 | -------------------------------------------------------------------------------- /docs/build/tools/other-paratimes/cipher/README.mdx: -------------------------------------------------------------------------------- 1 | import DocCard from '@theme/DocCard'; 2 | import DocCardList from '@theme/DocCardList'; 3 | import {findSidebarItem} from '@site/src/sidebarUtils'; 4 | 5 | # Cipher ParaTime 6 | 7 | Cipher is a confidential ParaTime for executing Wasm smart contracts. 8 | 9 | As an officially supported ParaTime by the Oasis Protocol Foundation, Cipher 10 | allows for: 11 | 12 | * Flexibility: developer can define which data to store in a public 13 | and which data in the (more expensive) confidential storage 14 | * Security: the [Rust language] primarily used for writing Wasm smart contracts 15 | is known for its strict memory management and was developed specifically to 16 | avoid memory leaks 17 | * Scalability: increased throughput of transactions 18 | * Low-cost: 99%+ lower fees than Ethereum 19 | * 6 second finality (1 block) 20 | * Cross-chain bridge to enable cross-chain interoperability (upcoming) 21 | 22 | If you're looking for EVM-compatible ParaTimes, check out the 23 | [Emerald](../emerald/README.mdx) and the confidential 24 | [Sapphire](https://github.com/oasisprotocol/sapphire-paratime/blob/main/docs/README.mdx) paratimes. 25 | 26 | [Rust language]: https://www.rust-lang.org/ 27 | 28 | ## Network Information 29 | 30 | See crucial network information [here][network]. 31 | 32 | [network]: ./network.mdx 33 | 34 | ## Smart Contract Development 35 | 36 | Cipher implements the [Oasis Contract SDK] API. To learn how to write a 37 | confidential smart contract in Rust and deploy it on Cipher, read the related 38 | Oasis Contract SDK chapters: 39 | 40 | 43 | 44 | 47 | 48 | 51 | 52 | ## See also 53 | 54 | 61 | 62 | [Oasis Contract SDK]: 63 | https://github.com/oasisprotocol/oasis-sdk/tree/main/contract-sdk 64 | -------------------------------------------------------------------------------- /docs/build/tools/other-paratimes/cipher/confidential-smart-contract.md: -------------------------------------------------------------------------------- 1 | ../../../../../external/oasis-sdk/docs/contract/confidential-smart-contract.md -------------------------------------------------------------------------------- /docs/build/tools/other-paratimes/cipher/hello-world.md: -------------------------------------------------------------------------------- 1 | ../../../../../external/oasis-sdk/docs/contract/hello-world.md -------------------------------------------------------------------------------- /docs/build/tools/other-paratimes/cipher/network.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: Network Information for Cipher, with detailed information about RPCs, block explorer and indexer 3 | --- 4 | 5 | # Network Information 6 | 7 | ## RPC Endpoints 8 | 9 | :::danger 10 | 11 | The RPC endpoint is a *point of trust*. Beside traffic rate limiting, it can 12 | also perform censorship or even a man-in-the-middle attack. If you have security 13 | considerations, we strongly recommend that you set up your own [ParaTime client 14 | node][paratime-client-node]. 15 | 16 | ::: 17 | 18 | Cipher endpoints share the gRPC protocol with the Oasis Core. You can connect to 19 | one of the public endpoints below (in alphabetic order): 20 | 21 | [paratime-client-node]: ../../../../node/run-your-node/paratime-client-node.mdx 22 | 23 | | Provider | Mainnet RPC URLs | Testnet RPC URLs | 24 | |-----------------------------|---------------------|-----------------------------| 25 | | [Oasis Protocol Foundation] | `grpc.oasis.io:443` | `testnet.grpc.oasis.io:443` | 26 | 27 | [Oasis Protocol Foundation]: https://oasisprotocol.org 28 | 29 | ## Block Explorers 30 | 31 | | Name/Provider | Mainnet URL | Testnet URL | EIP-3091 compatible | 32 | |-----------------------------|-------------------------------------------|-------------------------------------------|---------------------| 33 | | Oasis Scan ([Bit Cat]) | [https://www.oasisscan.com/paratimes/000…7cb](https://www.oasisscan.com/paratimes/000000000000000000000000000000000000000000000000e199119c992377cb) | [https://testnet.oasisscan.com/paratimes/000…000](https://testnet.oasisscan.com/paratimes/0000000000000000000000000000000000000000000000000000000000000000) | No | 34 | 35 | [Bit Cat]: https://www.bitcat365.com/ 36 | 37 | :::tip 38 | 39 | Only rudimentary block explorer features exist for Cipher. Consider debugging 40 | Cipher transactions with the [`oasis paratime show`] command using the 41 | [Oasis CLI]. 42 | 43 | ::: 44 | 45 | [`oasis paratime show`]: ../../../../general/manage-tokens/cli/paratime.md#show 46 | [Oasis CLI]: ../../../../general/manage-tokens/cli/README.md 47 | 48 | ## Indexers 49 | 50 | | Name (Provider) | Mainnet URL | Testnet URL | Documentation | 51 | |-------------------------------------------|-------------------------------------------------------|--------------------------------------|-------------------| 52 | | Oasis Scan ([Bit Cat]) | `https://api.oasisscan.com/v2/mainnet` | `https://api.oasisscan.com/v2/testnet` | [Runtime API][OasisScan-docs] | 53 | 54 | [OasisScan-docs]: https://api.oasisscan.com/v2/swagger/#/runtime 55 | 56 | :::note 57 | 58 | If you are running your own Cipher endpoint, a block explorer, or an indexer 59 | and wish to be added to these docs, open an issue at 60 | [github.com/oasisprotocol/docs]. 61 | 62 | ::: 63 | 64 | [github.com/oasisprotocol/docs]: https://github.com/oasisprotocol/docs 65 | -------------------------------------------------------------------------------- /docs/build/tools/other-paratimes/cipher/prerequisites.md: -------------------------------------------------------------------------------- 1 | ../../../../../external/oasis-sdk/docs/contract/prerequisites.md -------------------------------------------------------------------------------- /docs/build/tools/other-paratimes/emerald/README.mdx: -------------------------------------------------------------------------------- 1 | import DocCardList from '@theme/DocCardList'; 2 | import {findSidebarItem} from '@site/src/sidebarUtils'; 3 | 4 | # Emerald ParaTime 5 | 6 | Emerald is our official ParaTime which executes smart contracts inside the 7 | [Ethereum Virtual Machine (EVM)]. 8 | 9 | Emerald allows for: 10 | 11 | * Full EVM compatibility and easy integration with EVM-based dApps, such as 12 | DeFi, NFT, Metaverse and crypto gaming 13 | * Scalability: increased throughput of transactions 14 | * Low-cost: 99%+ lower fees than Ethereum 15 | * 6 second finality (1 block) 16 | * Cross-chain bridge to enable cross-chain interoperability (upcoming) 17 | 18 | If you're looking for EVM, but with confidentiality, check out the 19 | [Sapphire ParaTime](https://github.com/oasisprotocol/sapphire-paratime/blob/main/docs/README.mdx). 20 | 21 | [Ethereum Virtual Machine (EVM)]: https://ethereum.org/en/developers/docs/evm/ 22 | 23 | ## Network Information 24 | 25 | See crucial network information [here][network]. 26 | 27 | [network]: ./network.mdx 28 | 29 | ## See also 30 | 31 | 39 | -------------------------------------------------------------------------------- /docs/build/tools/remix.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: A guide for the Remix web IDE 3 | --- 4 | 5 | # Remix 6 | 7 | [Remix] is a web-based Integrated Development Environment (IDE) designed for 8 | developing, testing, and deploying smart contracts on the Ethereum Network. 9 | This guide will show you how to use Remix in conjunction with MetaMask on the 10 | Sapphire Network. 11 | 12 | :::info 13 | 14 | For comprehensive details about Remix's features, consult the 15 | [Remix documentation]. 16 | 17 | ::: 18 | 19 | ## Prerequisites 20 | 21 | 1. Install the [MetaMask browser extension][metamask] 22 | 2. Configure your networks: 23 | - Add Sapphire Mainnet or Testnet to MetaMask using the `Add to MetaMask` button on 24 | our [network page] 25 | - (Optional) Configure local network settings if you're using the Sapphire 26 | [localnet] 27 | 28 | ## Getting Started 29 | 30 | When you first launch Remix, it creates a default project structure. 31 | Navigate to the `contracts` folder and open `1_Storage.sol` to begin. 32 | 33 | ![The initial example project in Remix - Ethereum IDE](../images/remix/remix01.png) 34 | 35 | ## Contract Compilation 36 | 37 | 1. Navigate to the **Solidity Compiler** tab 38 | 2. Configure the compiler settings: 39 | 40 | - Compiler version: **`0.8.24`** 41 | - EVM version: **`paris`** (found under Advanced Configuration) 42 | 43 | 3. Click `Compile 1_Storage.sol` 44 | 45 | :::info Compiler Version 46 | 47 | The Sapphire uses the [Rust Ethereum EVM][rust-evm]. This implementation is 48 | compatible with Solidity versions up to **0.8.24**. However, it does not yet 49 | support some transaction types introduced in Solidity **0.8.25**, such as those 50 | mentioned in [rust-ethereum/evm#277][revm-277], pending release of the next version. 51 | 52 | ::: 53 | 54 | :::info EVM Version 55 | 56 | EVM versions after **paris** (shanghai and upwards) include the PUSH0 opcode which 57 | isn't supported on Sapphire. 58 | 59 | ::: 60 | 61 | [rust-evm]:https://github.com/rust-ethereum/evm 62 | [revm-277]: https://github.com/rust-ethereum/evm/issues/277 63 | 64 | ![Solidity compiler tab](../images/remix/remix02.png) 65 | 66 | ## Contract Deployment 67 | 68 | 1. Open the **Deploy and Run Transactions** tab. 69 | 2. Select `Injected Web3` as environment. 70 | 3. Accept in MetaMask the account connection to Remix. 71 | 72 | ![MetaMask connection confirmation](../images/remix/remix03.png) 73 | 74 | 4. Click `Deploy`. 75 | 5. Review and confirm the transaction in MetaMask. 76 | 77 | ![Metamask transaction confirmation](../images/remix/remix04.png) 78 | 79 | If everything goes well, your transaction will be deployed using the selected 80 | account in the MetaMask and the corresponding Sapphire Network. 81 | 82 | ## Working with Confidential Features 83 | 84 | Note that Remix operates without a Sapphire client, meaning transactions and 85 | queries are unencrypted and unsigned by default. To make use of Sapphire's 86 | confidential features, refer to our [Quickstart Tutorial]. 87 | 88 | [Quickstart Tutorial]: https://github.com/oasisprotocol/docs/blob/main/docs/build/sapphire/quickstart.mdx 89 | 90 | Should you have any questions, do not hesitate to share them with us on the 91 | [#dev-central Discord channel][discord]. 92 | 93 | [localnet]: ./localnet.mdx 94 | [network page]: https://github.com/oasisprotocol/docs/blob/main/docs/build/sapphire/network.mdx#rpc-endpoints 95 | [Remix]: https://remix.ethereum.org 96 | [Remix documentation]: https://remix-ide.readthedocs.io/en/latest/ 97 | [metamask]: ../../general/manage-tokens/README.mdx#metamask 98 | [discord]: https://oasis.io/discord 99 | -------------------------------------------------------------------------------- /docs/core: -------------------------------------------------------------------------------- 1 | ../external/oasis-core/docs -------------------------------------------------------------------------------- /docs/general/README.mdx: -------------------------------------------------------------------------------- 1 | import DocCardList from '@theme/DocCardList'; 2 | import {findSidebarItem} from '@site/src/sidebarUtils'; 3 | 4 | # Use Oasis 5 | 6 | This chapter provides general overview of the Oasis Network and introduces 7 | basic tools for you to get started. 8 | 9 | 14 | -------------------------------------------------------------------------------- /docs/general/images/architecture/consensus_paratime_communication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/architecture/consensus_paratime_communication.png -------------------------------------------------------------------------------- /docs/general/images/manage-tokens/oasisscan_account_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/manage-tokens/oasisscan_account_details.png -------------------------------------------------------------------------------- /docs/general/images/manage-tokens/oasisscan_paratime_tx_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/manage-tokens/oasisscan_paratime_tx_details.png -------------------------------------------------------------------------------- /docs/general/images/manage-tokens/oasisscan_paratime_txes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/manage-tokens/oasisscan_paratime_txes.png -------------------------------------------------------------------------------- /docs/general/images/manage-tokens/oasisscan_validators.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/manage-tokens/oasisscan_validators.png -------------------------------------------------------------------------------- /docs/general/images/manage-tokens/wormhole/confirm_transaction_ETH_WETH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/manage-tokens/wormhole/confirm_transaction_ETH_WETH.png -------------------------------------------------------------------------------- /docs/general/images/manage-tokens/wormhole/connect_wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/manage-tokens/wormhole/connect_wallet.png -------------------------------------------------------------------------------- /docs/general/images/manage-tokens/wormhole/index.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/manage-tokens/wormhole/index.png -------------------------------------------------------------------------------- /docs/general/images/manage-tokens/wormhole/redeem_tokens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/manage-tokens/wormhole/redeem_tokens.png -------------------------------------------------------------------------------- /docs/general/images/manage-tokens/wormhole/redeem_tokens2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/manage-tokens/wormhole/redeem_tokens2.png -------------------------------------------------------------------------------- /docs/general/images/manage-tokens/wormhole/select_source_dest_amount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/manage-tokens/wormhole/select_source_dest_amount.png -------------------------------------------------------------------------------- /docs/general/images/manage-tokens/wormhole/send_tokens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/manage-tokens/wormhole/send_tokens.png -------------------------------------------------------------------------------- /docs/general/images/manage-tokens/wormhole/send_tokens_to_wormhole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/manage-tokens/wormhole/send_tokens_to_wormhole.png -------------------------------------------------------------------------------- /docs/general/images/manage-tokens/wormhole/switch_to_emerald.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/manage-tokens/wormhole/switch_to_emerald.png -------------------------------------------------------------------------------- /docs/general/images/manage-tokens/wormhole/yuzuswap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/manage-tokens/wormhole/yuzuswap.png -------------------------------------------------------------------------------- /docs/general/images/oasis-network/backers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/oasis-network/backers.png -------------------------------------------------------------------------------- /docs/general/images/oasis-network/metrics-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/oasis-network/metrics-background.png -------------------------------------------------------------------------------- /docs/general/images/wallet/bitpie/mainscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/bitpie/mainscreen.png -------------------------------------------------------------------------------- /docs/general/images/wallet/bitpie/show_private_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/bitpie/show_private_key.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/account_derivation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/account_derivation.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/account_options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/account_options.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/buy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/buy.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/chrome_web_store.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/chrome_web_store.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/create_new_wallet_mnemonic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/create_new_wallet_mnemonic1.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/create_new_wallet_mnemonic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/create_new_wallet_mnemonic2.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/create_profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/create_profile.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/delegate1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/delegate1.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/delegate2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/delegate2.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/delegate3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/delegate3.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/deposit1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/deposit1.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/deposit2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/deposit2.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/deposit3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/deposit3.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/deposit4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/deposit4.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/deposit5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/deposit5.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/import_wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/import_wallet.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/import_wallet_ledger1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/import_wallet_ledger1.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/import_wallet_ledger2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/import_wallet_ledger2.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/import_wallet_mnemonic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/import_wallet_mnemonic.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/import_wallet_private_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/import_wallet_private_key.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/paratimes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/paratimes.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/stake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/stake.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/transfer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/transfer.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/undelegate1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/undelegate1.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/undelegate2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/undelegate2.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/undelegate3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/undelegate3.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/wallet.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/wallet_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/wallet_screen.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/withdraw1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/withdraw1.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/withdraw2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/withdraw2.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/withdraw3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/withdraw3.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/withdraw4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/withdraw4.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ext/withdraw5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ext/withdraw5.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ledger/ledger_oasis_approve.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ledger/ledger_oasis_approve.jpg -------------------------------------------------------------------------------- /docs/general/images/wallet/ledger/ledger_oasis_ready.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ledger/ledger_oasis_ready.jpg -------------------------------------------------------------------------------- /docs/general/images/wallet/ledger/live_allow_ledger_manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ledger/live_allow_ledger_manager.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ledger/live_search_apps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ledger/live_search_apps.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ledger/live_search_results_oasis_install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ledger/live_search_results_oasis_install.png -------------------------------------------------------------------------------- /docs/general/images/wallet/ledger/live_unlock_ledger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/ledger/live_unlock_ledger.png -------------------------------------------------------------------------------- /docs/general/images/wallet/metamask/account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/metamask/account.png -------------------------------------------------------------------------------- /docs/general/images/wallet/metamask/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/metamask/settings.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/account-popup-theme-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/account-popup-theme-dark.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/buy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/buy.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/create_new_wallet_mnemonic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/create_new_wallet_mnemonic1.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/create_new_wallet_mnemonic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/create_new_wallet_mnemonic2.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/create_new_wallet_select_accounts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/create_new_wallet_select_accounts.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/delegate1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/delegate1.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/delegate2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/delegate2.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/delegate3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/delegate3.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/deposit1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/deposit1.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/deposit2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/deposit2.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/deposit3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/deposit3.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/deposit4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/deposit4.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/deposit5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/deposit5.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/home.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/import_wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/import_wallet.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/import_wallet_ledger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/import_wallet_ledger.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/import_wallet_mnemonic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/import_wallet_mnemonic.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/import_wallet_private_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/import_wallet_private_key.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/no-profile-dark-theme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/no-profile-dark-theme.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/paratimes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/paratimes.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/settings-my-accounts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/settings-my-accounts.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/stake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/stake.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/transfer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/transfer.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/undelegate1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/undelegate1.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/undelegate2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/undelegate2.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/undelegate3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/undelegate3.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/wallet.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/withdraw1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/withdraw1.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/withdraw2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/withdraw2.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/withdraw3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/withdraw3.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/withdraw4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/withdraw4.png -------------------------------------------------------------------------------- /docs/general/images/wallet/web/withdraw5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/images/wallet/web/withdraw5.png -------------------------------------------------------------------------------- /docs/general/manage-tokens/cli: -------------------------------------------------------------------------------- 1 | ../../../external/cli/docs -------------------------------------------------------------------------------- /docs/general/manage-tokens/holding-rose-tokens/custody-providers.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Not comfortable keeping the keys on your own? 3 | --- 4 | 5 | # Custody Providers & Protocols 6 | 7 | Another way to hold your ROSE is by involving custodial partners—either 8 | by giving them complete custody over your tokens 9 | ([Custody Providers](#custody-providers)) or just require a multi-signature 10 | transaction to move them and then splitting some of those keys among trusted 11 | parties ([Decentralized Custody Protocols](#decentralized-custody-protocols)). 12 | We've partnered with industry-leaders who support a number of top crypto 13 | assets. You can pick among the custodial providers or decentralized custody 14 | protocols below. 15 | 16 | 17 | ## Custody Providers 18 | 19 | :::info 20 | 21 | Below are some simple ways to get in touch, but please do reach out to them 22 | directly for more information on insurance, fees and cross-chain support. 23 | 24 | ::: 25 | 26 | ### [Copper.co](https://copper.co) 27 | 28 | Copper.co is a leading provider of digital asset custody and trading solutions. It provides a gateway into the cryptoasset space for institutional investors by offering custody, prime brokerage, and settlements across 250 digital assets and more than 40 exchanges. It offers a comprehensive and secure suite of tools and services required to safely acquire, trade, and store cryptocurrencies, including access to margin lending trading facilities and the DeFi space. 29 | 30 | * **Delegation options:** Copper.co allows delegation to any validator running a node on the Oasis Network. 31 | * **Min holding:** No threshold for assets under custody. They do not onboard individuals as clients. Suitable for larger token holders. 32 | * **Sign up:** Email [betty.sharples@copper.co](mailto:betty.sharples@copper.co) to set up an account. 33 | 34 | ### [Anchorage](https://anchorage.com) 35 | 36 | Anchorage is an advanced digital asset platform, with a solution designed to meet the evolving needs of institutional investors. It offers world class custody, trading, and financing services, as well as on-chain participation like staking and governance. 37 | 38 | * **Delegation options:** Anchorage allows delegation to any validator running a node on the Oasis Network. 39 | * **Min holding:** Minimum custody requirements. Suitable for larger token holders. 40 | * **Sign up:** Please sign up [here](https://www.anchorage.com/get-started/). 41 | 42 | ### [Finoa](https://finoa.io) 43 | 44 | Finoa is a regulated custodian for digital assets, servicing professional investors with custody and staking. The platform enables its users to securely store and manage their crypto-assets, while providing a directly accessible, highly intuitive and unique user-experience, enabling seamless access to the ecosystem of Decentralized Finance (DeFi). 45 | 46 | * **Delegation options:** Finoa offers delegation to a number of select validators including Bison Trails, Blockdaemon, Chorus One, Figment Networks, and more. 47 | * **Min holding:** No threshold for assets under custody. Please check out details at [finoa.io](https://www.finoa.io). 48 | * **Sign up:** Email [oasis@finoa.io](mailto:oasis@finoa.io) to set up an account. 49 | 50 | ## Decentralized Custody Protocols 51 | 52 | ### [Oasis Safe][safe.oasis.io] 53 | 54 | Unlock a new way of ownership! Oasis Safe is the most trusted **decentralized 55 | custody protocol** and collective asset management (*multisignature* support) 56 | platform running on **Oasis Sapphire**. 57 | 58 | Visit [safe.oasis.io] and login with your MetaMask or other Ethereum-compatible 59 | wallet. 60 | 61 | [safe.oasis.io]: https://safe.oasis.io 62 | -------------------------------------------------------------------------------- /docs/general/manage-tokens/staking-and-delegating.md: -------------------------------------------------------------------------------- 1 | # Staking and Delegating 2 | 3 | The Oasis Network is a proof-of-stake network. This means that the **voting 4 | power of an entity in the network is determined by the amount of tokens staked 5 | to that entity**. For example, this amount determines, how frequent the 6 | validator will be elected to propose a new block. Each epoch, the staking 7 | reward is distributed among the validators based on the amount of *staked* 8 | tokens. You can check out the **current staking rewards** in the [Token metrics 9 | chapter][current staking rewards]. 10 | 11 | But it's not just the validators that can stake. You can *delegate* your tokens 12 | to a validator and earn **passive income**, when the validator receives the 13 | staking reward. Of course, the validator may take their cut (the *commission 14 | fee*) for running the validator node hardware, but in essence staking **improves 15 | the security of the network** because paying the commission fee rewards good 16 | validators and expels the malicious ones. Keep in mind that the validator's 17 | misbehavior **will result in _slashing_** or even **losing a portion of the 18 | staked tokens**! 19 | 20 | [current staking rewards]: ../oasis-network/token-metrics-and-distribution.mdx#staking-incentives 21 | 22 | When you undelegate your tokens, you will need to wait the **debonding period** 23 | to pass in which you will not earn any rewards. Currently, this period is **336 24 | epochs (~14 days)**. 25 | 26 | ## How to Delegate? 27 | 28 | Staking can only be performed on the **consensus layer**. Currently, the Oasis 29 | Wallet - Web and the Browser extension require that you delegate your tokens 30 | explicitly from your consensus account. The Oasis CLI and some dApps running in 31 | ParaTimes also allow you to implicitly delegate tokens from your ParaTime 32 | account. 33 | 34 | Check out the current validator set, their escrow of staked tokens, the 35 | commission rate, and the availability in the [Oasis Scan explorer][explorer-validators]. 36 | 37 | ![The validator set in the morning of March 29, 2024](../images/manage-tokens/oasisscan_validators.png) 38 | 39 | :::info 40 | 41 | Some validators prefer anonymity and they do not list their name or any contact 42 | information. In this case only their entity's Oasis address is shown. 43 | 44 | ::: 45 | 46 | Regardless of which validator you pick, **you will earn the same reward as long 47 | as the validator is online, proposes and signs valid blocks**. We recommend 48 | that you consider delegating your tokens to the ones without the largest 49 | delegations since this **concentrates the voting power and potentially reduces 50 | the network security**. 51 | 52 | Once you decided which validator you want to delegate to, consult the following 53 | sections based on your wallet for a step-by-step walkthrough: 54 | 55 | * [ROSE Wallet - Web](oasis-wallets/web.mdx#stake) 56 | * [ROSE Wallet - Browser Extension](oasis-wallets/browser-extension.mdx#stake) 57 | * [Oasis CLI](cli/account.md#delegate) 58 | 59 | :::danger Staking your ROSE is a different transaction than sending them! 60 | 61 | When you stake your tokens (the `staking.Escrow` transaction), you can reclaim 62 | them at any time. Sending your tokens (the `staking.Transfer` transaction) on the 63 | other hand means that the **receiver will own the tokens and there is no way of 64 | retrieving that tokens back by yourself**. 65 | 66 | If you happen to send your tokens to the validator instead of staking them, try 67 | contacting the validator via email or other channels listed on the block 68 | explorers and kindly ask them to send the tokens back to you. Know that it is 69 | completely up to them to send the tokens back and there is no other mechanism of 70 | doing it. 71 | 72 | ::: 73 | 74 | After you delegated your tokens, [check your account balance][check-account]. 75 | If the Escrow is correct, then congratulations, your tokens are successfully 76 | staked! 77 | 78 | :::tip 79 | 80 | Some custody providers may also allow delegation of your tokens. Check out the 81 | [custody providers][custody-providers] chapter to learn more. 82 | 83 | ::: 84 | 85 | [check-account]: ./README.mdx#check-your-account 86 | [explorer-validators]: https://www.oasisscan.com/validators 87 | 88 | ## Become a validator yourself? 89 | 90 | If you find the validator commission rates too high, you may be interested in 91 | **running your own node and become a validator**. You can get started 92 | [here](../../node/README.mdx). Be sure to 93 | [join the **#node-operators** channel on Discord and sign up for the node operator mailing list](../../get-involved/README.md)! 94 | 95 | -------------------------------------------------------------------------------- /docs/general/manage-tokens/terminology.md: -------------------------------------------------------------------------------- 1 | # Terminology 2 | 3 | ## Account 4 | 5 | A staking **account** is an entry in the staking ledger. 6 | 7 | It has two (sub)accounts: 8 | 9 | - **General account** 10 | 11 | It is used to keep the funds that are freely available to the account owner 12 | to transfer, delegate/stake, pay gas fees, etc. 13 | 14 | - **Escrow account** 15 | 16 | It is used to keep the funds needed for specific consensus-layer operations 17 | (e.g. registering and running nodes, staking and delegation of tokens, ...). 18 | 19 | To simplify accounting, each escrow results in the source account being 20 | issued shares which can be converted back into staking tokens during the 21 | reclaim escrow operation. Reclaiming escrow does not complete immediately, 22 | but may be subject to a debonding period during which the tokens still remain 23 | escrowed. 24 | 25 | ## Address 26 | 27 | A staking account **address** is represented by a truncated hash of a 28 | corresponding entity's public key, prefixed by a 1 byte address version. 29 | 30 | It uses [Bech32 encoding] for text serialization with `oasis` as its human 31 | readable part (HRP) prefix. 32 | 33 | EVM-compatible ParaTimes running on the Oasis compute layer **may use** 34 | EVM-compatible 20-byte addresses in hex format (starting with `0x`). 35 | 36 | ## Delegation 37 | 38 | You can **delegate** your tokens by submitting an **escrow** transaction that 39 | deposits a specific number of tokens into someone else’s escrow account (as 40 | opposed to **staking** tokens, which usually refers to depositing tokens into 41 | your own escrow account). 42 | 43 | In other words, delegating your tokens is equivalent to staking your tokens in 44 | someone else's validator node. Delegating your tokens can give you the 45 | opportunity to participate in the Oasis Network's proof-of-stake consensus 46 | system and earn rewards via someone else's validator node. 47 | 48 | ## Staking 49 | 50 | You can stake your tokens by submitting an **escrow** transaction that deposits 51 | a specific number of tokens into your escrow account. 52 | 53 | ## Rewards 54 | 55 | By delegating your tokens to someone else's node, you can earn a portion of the 56 | rewards earned by that node through its participation in the Oasis Network. 57 | 58 | ## Commission 59 | 60 | Node operators collect **commissions** when their node earns a 61 | **staking reward** for delegators. A validator node earns a staking reward for 62 | participating in the consensus protocol each epoch. The **commission rate** is 63 | a fraction of the staking reward. 64 | 65 | For example, if our validator node earns a reward of 0.007 tokens, 0.0035 66 | tokens are added to the escrow pool (increasing the value of our escrow pool 67 | shares uniformly), and 0.0035 tokens are given to us (issuing us new shares as 68 | if we manually deposited them). 69 | 70 | ## Slashing 71 | 72 | A portion of your delegated tokens can be **slashed** (seized) by the network, 73 | if the node that you delegated your tokens to gets slashed, e.g. as a penalty 74 | for equivocating in the protocol by signing diverging blocks for the same 75 | height. 76 | 77 | [Bech32 encoding]: 78 | https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki#bech32 79 | -------------------------------------------------------------------------------- /docs/general/oasis-network/papers.mdx: -------------------------------------------------------------------------------- 1 | # Papers 2 | 3 | 1. **[Keep Your Transactions On Short Leashes or Anchoring For Stability In A 4 | Multiverse of Block Tree Madness](https://arxiv.org/abs/2206.11974)** 5 | \[[PDF](./papers/2022-short_leashes.pdf)\]
6 | Bennet Yee
7 | 2022 Technical Report 8 | 9 | 2. **[Shades of Finality and Layer 2 Scaling](https://arxiv.org/abs/2201.07920)** 10 | \[[PDF](./papers/2022-shades_of_finality.pdf)\]
11 | Bennet Yee, Dawn Song, Patrick McCorry, Chris Buckland
12 | 2022 Technical Report 13 | 14 | 3. **An Implementation of Ekiden on the Oasis Network** 15 | \[[PDF](./papers/2021-an_implementation_of_ekiden.pdf)\]
16 | Oasis Protocol Project
17 | 2021 Technical Report 18 | 19 | 4. **The Oasis Blockchain Platform** 20 | \[[PDF](./papers/2020-the_oasis_blockchain_platform.pdf)\]
21 | Oasis Protocol Project
22 | 2020 Technical Report 23 | 24 | 5. **[Digital Stewardship: An Introductory White Paper](https://ssrn.com/abstract=3669911)** 25 | \[[PDF](./papers/2020-digital_stewardship.pdf)\]
26 | Richard Whitt
27 | 2020 SSRN, Elsevier 28 | 29 | 6. **[Ekiden: A Platform for Confidentiality-Preserving, Trustworthy, and Performant Smart Contracts](https://doi.org/10.1109/EuroSP.2019.00023)** 30 | \[[PDF](./papers/2019-ekiden.pdf)\]
31 | Raymond Cheng, Fan Zhang, Jernej Kos, Warren He, Nicholas Hynes, Noah Johnson, Ari Juels, Andrew Miller, Dawn Song
32 | 2019 IEEE European Symposium on Security and Privacy (EuroS&P) 33 | -------------------------------------------------------------------------------- /docs/general/oasis-network/papers/2019-ekiden.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/oasis-network/papers/2019-ekiden.pdf -------------------------------------------------------------------------------- /docs/general/oasis-network/papers/2020-digital_stewardship.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/oasis-network/papers/2020-digital_stewardship.pdf -------------------------------------------------------------------------------- /docs/general/oasis-network/papers/2020-the_oasis_blockchain_platform.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/oasis-network/papers/2020-the_oasis_blockchain_platform.pdf -------------------------------------------------------------------------------- /docs/general/oasis-network/papers/2021-an_implementation_of_ekiden.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/oasis-network/papers/2021-an_implementation_of_ekiden.pdf -------------------------------------------------------------------------------- /docs/general/oasis-network/papers/2022-shades_of_finality.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/oasis-network/papers/2022-shades_of_finality.pdf -------------------------------------------------------------------------------- /docs/general/oasis-network/papers/2022-short_leashes.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/docs/general/oasis-network/papers/2022-short_leashes.pdf -------------------------------------------------------------------------------- /docs/get-involved/README.md: -------------------------------------------------------------------------------- 1 | # Join our Community 2 | 3 | ## Welcome to the Oasis Community 4 | 5 | Whether you're a blockchain enthusiast, a software developer, or someone who is 6 | just starting to learn about crypto, we're excited to welcome you to our community. 7 | We look forward to working together on our mission to build a responsible data 8 | economy and empower users around the world to take back ownership of their data 9 | and their online privacy. 10 | 11 | ## Social Media Channels 12 | 13 | To stay up-to-date on the latest Oasis Network news, events, and programs, be 14 | sure to join our social media channels: 15 | 16 | * [Discord](https://oasis.io/discord) 17 | * [Twitter](https://twitter.com/OasisProtocol) 18 | * [Public Telegram channel](https://t.me/oasisprotocolcommunity) (for community discussions open to everyone) 19 | * [Telegram Announcement channel](https://t.me/oasisprotocolfoundation) (for one-way updates from the Oasis Foundation) 20 | 21 | ## Regional Communities 22 | 23 | To connect with Oasis community members who live in your home region or speak 24 | your native language, check out our region-based community channels: 25 | 26 | * Arabic Speaking Countries: [https://t.me/OasisNetworkCommunity_Arabic](https://t.me/OasisNetworkCommunity_Arabic) 27 | * Austria: [https://t.me/OasisNetworkCommunity_Austria](https://t.me/OasisNetworkCommunity_Austria) 28 | * Bangladesh: [https://t.me/OasisNetworkCommunity_Bangladesh](https://t.me/OasisNetworkCommunity_Bangladesh) 29 | * Brazil: [https://t.me/OasisNetworkCommunity_Brazil](https://t.me/OasisNetworkCommunity_Brazil) 30 | * China WeChat: [https://t.me/oasisprotocolcommunity/27378](https://t.me/oasisprotocolcommunity/27378) 31 | * France: [https://t.me/OasisNetworkCommunity_France](https://t.me/OasisNetworkCommunity_France) 32 | * Germany: [https://t.me/OasisNetworkCommunity_Germany](https://t.me/OasisNetworkCommunity_Germany) 33 | * India: [https://t.me/OasisNetworkCommunity_India](https://t.me/OasisNetworkCommunity_India) 34 | * Indonesia: [https://t.me/OasisNetworkCommunity_Indonesia](https://t.me/OasisNetworkCommunity_Indonesia) 35 | * Japan: [https://t.me/OasisNetworkCommunity_japan8](https://t.me/OasisNetworkCommunity_japan8) 36 | * Korea: [https://t.me/OasisNetworkCommunity_Korea](https://t.me/OasisNetworkCommunity_Korea) 37 | * Nigeria: [https://t.me/OasisNetworkCommunity_Nigeria](https://t.me/OasisNetworkCommunity_Nigeria) 38 | * Philippines: [https://t.me/OasisNetworkCommunity_Philippine](https://t.me/OasisNetworkCommunity_Philippine) 39 | * Russia: [https://t.me/OasisNetworkCommunity_Russia](https://t.me/OasisNetworkCommunity_Russia) 40 | * Singapore: [https://t.me/OasisNetworkCommunity_Singapore8](https://t.me/OasisNetworkCommunity_Singapore8) 41 | * Spanish Speaking Countries: [https://t.me/OasisNetworkCommunity_Spanish](https://t.me/OasisNetworkCommunity_Spanish) 42 | * Sri Lanka: [https://t.me/OasisNetworkCommunity_SriLanka](https://t.me/OasisNetworkCommunity_SriLanka) 43 | * Sweden: [https://t.me/OasisNetworkCommunity_Sweden8](https://t.me/OasisNetworkCommunity_Sweden8) 44 | * Switzerland: [https://t.me/OasisNetworkCommunitySwitzerland](https://t.me/OasisNetworkCommunitySwitzerland) 45 | * Turkey: [https://t.me/OasisNetworkCommunity_Turkey](https://t.me/OasisNetworkCommunity_Turkey) 46 | * Ukraine: [https://t.me/OasisNetworkCommunity_Ukraine](https://t.me/OasisNetworkCommunity_Ukraine) 47 | * Uzbekistan: [https://t.me/OasisNetworkCommunity_Uzbekistan](https://t.me/OasisNetworkCommunity_Uzbekistan) 48 | * Vietnam: [https://t.me/OasisNetworkCommunity_Vietnam](https://t.me/OasisNetworkCommunity_Vietnam) 49 | -------------------------------------------------------------------------------- /docs/get-involved/delegation-policy.md: -------------------------------------------------------------------------------- 1 | # Delegation Policy 2 | 3 | Oasis Protocol Foundation delegates ROSE tokens to node operators based on their 4 | participation in the Oasis Mainnet, Testnet and ParaTimes on the network, 5 | node reliability and performance, community engagement and overall support of 6 | the network. 7 | 8 | This page describes the Oasis Protocol Foundation's Delegation Policy. 9 | 10 | ## Requirements for Receiving Delegations 11 | 12 | ### Code of Conduct 13 | 14 | 1. Ensure commission rates and commission rate bounds are no greater than 20%. 15 | 2. Ensure commission rates are +/- 10% of the weighted median network commission 16 | rate. 17 | 3. Ensure your entity’s website, social media and/or contact info in the 18 | [Oasis Metadata Registry] is up-to-date. 19 | 4. Do not use 'Oasis' in your entity name, and do not use any Oasis Foundation 20 | logos or branding in your entity logo. 21 | 5. Refrain from dishonest, fraudulent or malicious behavior. 22 | 6. Participate in on-chain governance and network upgrades proposed by Oasis 23 | Foundation. 24 | 7. Be available and coordinate with the node operator community in case of 25 | unplanned network upgrades. 26 | 27 | If there is any violation of the above Code of Conduct, Oasis Foundation 28 | reserves the right to revoke your entire delegation. 29 | 30 | ### Performance Requirements 31 | 32 | 1. Maintain active validator status. 33 | 2. Maintain >99% uptime for your validator node as well as Emerald and/or Cipher 34 | ParaTime nodes (if you run them). 35 | 3. Ensure your nodes are upgraded within 1 hour after a planned network upgrade. 36 | 4. Ensure your nodes are upgraded within 24 hours after an unplanned network 37 | upgrade. 38 | 39 | If any of the above Performance Requirements is not met, Oasis Foundation 40 | reserves the right to revoke delegations. If you run into a complex technical 41 | issue that prevents your node from meeting the above Performance Requirements, 42 | please reach out to the Oasis team as soon as possible. 43 | 44 | ## How to Earn Delegations? 45 | 46 | - Have a meaningful amount of self-delegation and/or delegations from the Oasis 47 | community. 48 | - Operate Emerald and/or Cipher ParaTime nodes on Mainnet. 49 | - Operate validator and/or ParaTime nodes on Testnet 50 | - Participate in community discussion on the network’s future roadmap. 51 | - Actively participate on the Oasis Network Community server on Discord 52 | and help answer questions from other community members. 53 | - Build or contribute to tools, services or dApps that benefit developers, node 54 | operators and/or the overall Oasis community. 55 | - Contribute code to Oasis projects. 56 | - Find and report issues related to any of the network protocols and/or their 57 | implementations. 58 | - Demonstrate a track record of successfully operating nodes on other major 59 | networks. 60 | 61 | [Oasis Metadata Registry]: https://github.com/oasisprotocol/metadata-registry 62 | -------------------------------------------------------------------------------- /docs/get-involved/oasis-core.md: -------------------------------------------------------------------------------- 1 | # Develop Oasis Core 2 | 3 | :::info 4 | 5 | This document outlines our guidelines for contributing to the Oasis Network's 6 | codebase and documentation. If you are interested in learning more about the 7 | Oasis Network's governance model, including the processes for submitting 8 | feature requests and bug fixes, 9 | [please see our governance overview here](network-governance.md). 10 | 11 | ::: 12 | 13 | If you wish to contribute either code, documentation or larger enhancement 14 | proposals, feel free to read our 15 | [Oasis Core Contributing Guidelines](https://github.com/oasisprotocol/oasis-core/blob/master/CONTRIBUTING.md). 16 | 17 | -------------------------------------------------------------------------------- /docs/get-involved/run-node/validator-node.md: -------------------------------------------------------------------------------- 1 | # Consensus Validator Node 2 | 3 | This guide provides an overview of the technical setup and stake requirements to 4 | become a validator on the consensus layer of the Oasis Network. 5 | 6 | ## About Oasis Network 7 | 8 | [Oasis Network](../../general/oasis-network/README.mdx)'s consensus Layer is a decentralised set of validator nodes that maintain a proof-of-stake blockchain. 9 | 10 | Hence, it needs a set of distributed node operators that run different nodes (including validator nodes). 11 | 12 | ## Technical setup 13 | 14 | Make sure your system meets the [Hardware](../../node/run-your-node/prerequisites/hardware-recommendations.md) prerequisites and has [Oasis Node](../../node/run-your-node/prerequisites/oasis-node.md) installed. 15 | 16 | Then proceed by following the [Run a Validator Node](../../node/run-your-node/validator-node.mdx) guide to: 17 | 18 | * Create your entity. 19 | * Initialize and configure your node. 20 | * Put enough stake in your escrow account. 21 | * Register your entity on the network. 22 | 23 | ## Stake requirements 24 | 25 | To become a validator on the Oasis Network, you need to have enough tokens staked in your escrow account. 26 | 27 | :::info 28 | 29 | For more information about obtaining information on your entity's account, see the [Account Get Info](../../general/manage-tokens/cli/account.md#show) doc. 30 | 31 | ::: 32 | 33 | Currently, you should have: 34 | 35 | * 100 ROSE staked for your entity's registration since that is the [current entity's staking threshold](../../node/genesis-doc.md#staking-thresholds). 36 | * 100 ROSE staked for your validator node's registration since that is the [current validator node's staking threshold](../../node/genesis-doc.md#staking-thresholds). 37 | * Enough ROSE staked to be in the top 120 entities (by stake) so your validator will be elected into the consensus committee. 38 | 39 | :::info 40 | 41 | The size of the consensus committee (i.e. the validator set) is configured by the [**max_validators** consensus parameter](../../node/genesis-doc.md#consensus). 42 | 43 | ::: 44 | 45 | :::info 46 | 47 | To determine if you are eligible to receive a delegation from the Oasis Protocol Foundation, see the [Delegation Policy](../delegation-policy.md) document. 48 | 49 | ::: 50 | -------------------------------------------------------------------------------- /docs/get-involved/token-delivery-and-kyc.md: -------------------------------------------------------------------------------- 1 | # Token Delivery & KYC Guide 2 | 3 | If you're visiting this page, you may have recently earned ROSE tokens via the Community Cup program, the Ambassador Rewards program, or a recent hackathon. Congratulations! 4 | 5 | Let's review the process for receiving your ROSE tokens from the Oasis Foundation: 6 | 7 | * **Step 1: Wait to be contacted regarding KYC by an Oasis Foundation core team member.** We will reach out to you via email to the email address we have on file for you for Oasis-related activities. This email will contain information about how to complete the KYC process. Please allow our team approximately 1 to 3 weeks after the day you have won or earned your ROSE tokens before reaching out to us with any questions. If 3 weeks have passed since the day you won or earned your ROSE tokens, you are welcome to reach out to us via our [token delivery question form](https://airtable.com/shrGmpohTNnytBpQU). 8 | 9 | :::caution 10 | 11 | Please be sure to use the same email address for all Oasis-related activities. For example, if you registered for the Oasis Ambassador Rewards program with a specific email address, use that same email address when you complete the KYC process and when you contact the Oasis team if you have any questions. 12 | 13 | ::: 14 | 15 | :::info 16 | 17 | For the Ambassador Rewards program, reward submissions will be tallied up after each quarter (every 3 months) and will require an additional 3 weeks to update the leaderboard and apply any bonuses. Rewards will be sent out on the third Friday following the end of a given quarter. If you have rewards outstanding past any given quarterly distribution date, we will be doing weekly distributions on Fridays, but only if you have completed all of the steps described in his document. 18 | 19 | ::: 20 | 21 | * **Step 2: Complete the KYC process.** The KYC email you receive will contain everything you need to complete the KYC process which lets us know that you are eligible to receive ROSE tokens. In particular, you first need to request access to Synaps, which is the online KYC tool the Oasis Foundation uses. Once you get access to Synaps, you need to get verified in all 3 of the required categories. How long this step takes depends on how long you take to submit all of the required documentation, following all of the required guidelines. Assuming you submit all of the necessary documents correctly right away, you can expect this step to take around 1 week. When your documents and information have been verified, we'll reach out again via email with next steps 22 | 23 | :::info 24 | 25 | The Proof of Residency document required for Synaps must be dated within 3 months of the date you are submitting it, and the document must include your name and your address, matching the information you have submitted to Oasis. 26 | 27 | ::: 28 | 29 | * **Step 3: Submit the address of your Oasis account.** After you complete the KYC process, you will receive a follow-up email from the Oasis Foundation with information on how to submit your Oasis account address via a unique code that connects your wallet to your KYC data. Please allow at least 1 full week to pass after you complete KYC to receive the follow-up email with instructions on how to submit your account address. 30 | * **Step 4: Receive the tokens deposited to your Oasis account.** After you have completed KYC and submitted your Oasis account address, allow 1 to 2 weeks for your ROSE to be deposited into your wallet. We will be doing weekly token distributions on Fridays, but only if you have completed all of the steps described in his document. 31 | 32 | :::caution 33 | 34 | Before reaching out to our team with questions, please make sure you have closely reviewed each of the steps described in this document and that you have correctly completed each step. Please consider only reaching out for support via our [token delivery question form](https://airtable.com/shrGmpohTNnytBpQU) if you have correctly followed all of the instructions but for some reason have not received any communications from our team. Thank you for your cooperation in helping us manage our resources so that we can more effectively support the community. 35 | 36 | ::: 37 | -------------------------------------------------------------------------------- /docs/node/README.mdx: -------------------------------------------------------------------------------- 1 | import DocCardList from '@theme/DocCardList'; 2 | import {findSidebarItem} from '@site/src/sidebarUtils'; 3 | 4 | # Run Node 5 | 6 | Welcome! This documentation is designed to provide you with a comprehensive 7 | understanding and step-by-step guidance for becoming a node operator within the 8 | Oasis Network. 9 | 10 | Embark on your journey by setting up a node on the Testnet. The Testnet serves 11 | as an experimental sandbox, offering a safe environment for learning and 12 | experimentation, free from the risks associated with real token loss. 13 | 14 | For any queries or support related to node operation, our team and community 15 | members are readily available on [Discord] to assist you. 16 | 17 | [Discord]: https://oasis.io/discord 18 | 19 | ## Validator and ParaTime nodes 20 | 21 | [Oasis Network] consists of the consensus layer and ParaTimes. Consensus and 22 | ParaTime nodes can be operated by anyone. 23 | 24 | To run a **validator node**, make sure your system meets the [hardware] and the 25 | [system] prerequisites and has [Oasis Node] installed. 26 | 27 | Then proceed by following the [Run a Validator Node] guide to: 28 | 29 | * Create your entity. 30 | * Initialize and configure your node. 31 | * Put enough stake in your escrow account. 32 | * Register your entity on the network. 33 | 34 | To run a **ParaTime node** make sure to first set up a validator node. Then, 35 | set up a [trusted execution environment (TEE)], if you want to run confidential 36 | ParaTimes. Afterwards, proceed to the [Run a ParaTime node] chapter. 37 | 38 | :::info 39 | 40 | Consensus layer is a decentralised set of 120 validator nodes that are a 41 | backbone of the Oasis Network. The current validator set size is determined by 42 | governance - the network started with 80 nodes in the validator set in 2020 and 43 | has expanded to 120 nodes over the past few network upgrades. Current node 44 | operators can be seen on a block explorer such as [Oasis Scan]. 45 | 46 | ::: 47 | 48 | :::info 49 | 50 | Operating a ParaTime Node on the Mainnet requires the participation of node 51 | operators who have the validator node in the active validator set. ParaTimes 52 | have their own reward system, participation requirements and structure. As a 53 | node operator you can participate in any number of ParaTimes. 54 | 55 | ::: 56 | 57 | [Oasis Network]: ../general/oasis-network/README.mdx 58 | [Oasis Scan]: https://www.oasisscan.com/validators 59 | 60 | ## DApp Developers 61 | 62 | If you are **building a service** on top of the Oasis Network, you will simply 63 | want to set up your own **[Non-validator node]** and (optionally) a 64 | **[ParaTime client node]**. This way, your service will not depend on third 65 | party endpoints which can be behind a traffic limiter, can go down unexpectedly, 66 | or they can have some more CPU-intensive queries disabled which you would like 67 | to use. 68 | 69 | [hardware]: ./run-your-node/prerequisites/hardware-recommendations.md 70 | [system]: ./run-your-node/prerequisites/system-configuration.mdx 71 | [Oasis Node]: ./run-your-node/prerequisites/oasis-node.md 72 | [Run a Validator Node]: ./run-your-node/validator-node.mdx 73 | [trusted execution environment (TEE)]: ./run-your-node/prerequisites/set-up-trusted-execution-environment-tee.md 74 | [Run a ParaTime node]: ./run-your-node/paratime-node.mdx 75 | [ParaTime client node]: ./run-your-node/paratime-node.mdx 76 | [Non-validator node]: ./run-your-node/non-validator-node.mdx 77 | 78 | ## Quick Navigation 79 | 80 | 90 | -------------------------------------------------------------------------------- /docs/node/mainnet/README.md: -------------------------------------------------------------------------------- 1 | # Mainnet 2 | 3 | ## Network Parameters 4 | 5 | These are the current parameters for the Mainnet: 6 | 7 | * [Genesis file](https://github.com/oasisprotocol/mainnet-artifacts/releases/download/2023-11-29/genesis.json): 8 | * SHA256: `b14e45e97da0216a16c25096fd216f591e4d526aa6abac110ac23cb327b64ba1` 9 | 10 | :::info 11 | 12 | Genesis file is signed by [network's current maintainers]. To verify its 13 | authenticity, follow the [PGP verification instructions]. 14 | 15 | ::: 16 | 17 | * Genesis document's hash ([explanation](../genesis-doc.md#genesis-file-vs-genesis-document)): 18 | * `bb3d748def55bdfb797a2ac53ee6ee141e54cd2ab2dc2375f4a0703a178e6e55` 19 | * Oasis seed node addresses: 20 | * `H6u9MtuoWRKn5DKSgarj/dzr2Z9BsjuRHgRAoXITOcU=@35.199.49.168:26656` 21 | * `H6u9MtuoWRKn5DKSgarj/dzr2Z9BsjuRHgRAoXITOcU=@35.199.49.168:9200` 22 | * `90em3ItdQkFy15GtWqCKHi5j7uEUmZPZIzBt7I5d6w4=@146.148.13.130:26656` 23 | * `90em3ItdQkFy15GtWqCKHi5j7uEUmZPZIzBt7I5d6w4=@146.148.13.130:9200` 24 | 25 | :::tip 26 | 27 | Feel free to use other seed nodes besides the one provided here. 28 | 29 | ::: 30 | 31 | * [Oasis Core](https://github.com/oasisprotocol/oasis-core) version: 32 | * [25.3](https://github.com/oasisprotocol/oasis-core/releases/tag/v25.3) 33 | * [Oasis Rosetta Gateway](https://github.com/oasisprotocol/oasis-rosetta-gateway) version: 34 | * [2.7.0](https://github.com/oasisprotocol/oasis-rosetta-gateway/releases/tag/v2.7.0) 35 | 36 | :::info 37 | 38 | The Oasis Node is part of the Oasis Core release. 39 | 40 | ::: 41 | 42 | :::danger 43 | 44 | Do not use a newer version of Oasis Core since it likely contains changes that 45 | are incompatible with the version of Oasis Core used by other nodes. 46 | 47 | ::: 48 | 49 | If you want to join our Testnet, see the [Testnet](../testnet/README.md) docs 50 | for the current Testnet parameters. 51 | 52 | [network's current maintainers]: https://github.com/oasisprotocol/mainnet-artifacts/blob/master/README.md#pgp-keys-of-current-maintainers 53 | [PGP verification instructions]: https://github.com/oasisprotocol/mainnet-artifacts/blob/master/README.md#verifying-genesis-file-signatures 54 | 55 | ## ParaTimes 56 | 57 | This section contains parameters for various ParaTimes known to be deployed on the Mainnet. 58 | 59 | ### Sapphire 60 | 61 | * Oasis Core version: 62 | * [25.3](https://github.com/oasisprotocol/oasis-core/releases/tag/v25.3) 63 | * Runtime identifier: 64 | * `000000000000000000000000000000000000000000000000f80306c9858e7279` 65 | * Runtime bundle version: 66 | * [0.10.3](https://github.com/oasisprotocol/sapphire-paratime/releases/tag/v0.10.3) 67 | * Oasis Web3 Gateway version: 68 | * [5.2.0](https://github.com/oasisprotocol/oasis-web3-gateway/releases/tag/v5.2.0) 69 | 70 | ### Cipher 71 | 72 | * Oasis Core version: 73 | * [25.3](https://github.com/oasisprotocol/oasis-core/releases/tag/v25.3) 74 | * Runtime identifier: 75 | * `000000000000000000000000000000000000000000000000e199119c992377cb` 76 | * Runtime bundle version: 77 | * [3.3.3](https://github.com/oasisprotocol/cipher-paratime/releases/tag/v3.3.3) 78 | 79 | ### Emerald 80 | 81 | * Oasis Core version: 82 | * [25.3](https://github.com/oasisprotocol/oasis-core/releases/tag/v25.3) 83 | * Runtime identifier: 84 | * `000000000000000000000000000000000000000000000000e2eaa99fc008f87f` 85 | * Runtime bundle version (or [build your own](https://github.com/oasisprotocol/emerald-paratime/tree/v11.0.0#building)): 86 | * [11.0.0](https://github.com/oasisprotocol/emerald-paratime/releases/tag/v11.0.0) 87 | * Web3 Gateway version: 88 | * [5.2.0](https://github.com/oasisprotocol/oasis-web3-gateway/releases/tag/v5.2.0) 89 | 90 | :::info 91 | 92 | Check the [Emerald ParaTime page](../../build/tools/other-paratimes/emerald/network#rpc-endpoints) on how to access 93 | the public Web3 endpoint. 94 | 95 | ::: 96 | 97 | ### Key Manager 98 | 99 | * Oasis Core version: 100 | * [25.3](https://github.com/oasisprotocol/oasis-core/releases/tag/v25.3) 101 | * Runtime identifier: 102 | * `4000000000000000000000000000000000000000000000008c5ea5e49b4bc9ac` 103 | * Runtime bundle version: 104 | * [0.6.0](https://github.com/oasisprotocol/keymanager-paratime/releases/tag/v0.6.0) 105 | -------------------------------------------------------------------------------- /docs/node/run-your-node/advanced/copy-state-from-one-node-to-the-other.md: -------------------------------------------------------------------------------- 1 | # Copy State from One Node to the Other 2 | 3 | A network that's been running for some time can accrue significant amount of 4 | state. This means bootstraping a new Oasis node would take quite some time and 5 | resources (bandwidth, CPU) since it would need to fetch (download) and validate 6 | (replay) all the blocks from the genesis height onwards. 7 | 8 | If one has access to an Oasis node that is synced with the latest height, he 9 | could just copy Oasis node's state from the synced node to an unsynced node. 10 | 11 | :::info 12 | 13 | Another way to speed up bootstrapping an Oasis node is to sync the node using 14 | the [State Sync](sync-node-using-state-sync.md). 15 | 16 | ::: 17 | 18 | To bootstrap a new Oasis node by copying state from a synced Oasis node, first 19 | set up your new Oasis node as a [Validator Node](../validator-node.mdx), a 20 | [Non-validator Node](../non-validator-node.mdx) or a 21 | [ParaTime Node](../paratime-node.mdx). 22 | 23 | :::caution 24 | 25 | Make sure you use the **exact same version of Oasis Core** on both the synced 26 | Oasis node and your new Oasis node to prevent **issues or state corruption** if 27 | an Oasis node's state is opened **with an incompatible version** of Oasis 28 | Core. 29 | 30 | ::: 31 | 32 | Before starting your new Oasis node, do the following: 33 | 34 | 1. Stop the synced Oasis node. 35 | 36 | :::danger 37 | 38 | If an Oasis node is **not stopped** before its state is copied, its on-disk 39 | state might not be consistent and up-to-date. This can lead to **state 40 | corruption** and inability to use the state with your new Oasis node. 41 | 42 | ::: 43 | 44 | 2. Copy the following directories from your synced Oasis node's **data 45 | directory** (e.g. `/node/data`) to your new Oasis node's data directory: 46 | 47 | * `consensus/state` 48 | * `consensus/data` 49 | 50 | :::caution 51 | 52 | You could also copy the whole `consensus` directory from your synced Oasis 53 | node's working directory. In that case, you must **omit** the 54 | **`oasis_priv_validator.json` file**, otherwise starting your new Oasis node 55 | with fail with something like: 56 | 57 | ```json 58 | {"caller":"node.go:541","err":"cometbft/crypto: public key mismatch, state corruption?: %!w()","level":"error","module":"oasis-node","msg":"failed to initialize cometbft service","ts":"2023-11-25T14:13:17.919296668Z"} 59 | ``` 60 | 61 | ::: 62 | 63 | :::caution 64 | 65 | If you are copying data from a node that is running [TEE-enabled ParaTimes], 66 | you must make sure to **remove** the `runtimes/*/worker-local-storage.badger.db` 67 | as otherwise the ParaTime binary may fail to start on a different node since 68 | it contains data sealed to the source CPU. 69 | 70 | ::: 71 | 72 | 3. Start back the synced Oasis node. 73 | 74 | Finally, you can start your new Oasis node for the first time. 75 | 76 | [TEE-enabled ParaTimes]: ../prerequisites/set-up-trusted-execution-environment-tee.md 77 | -------------------------------------------------------------------------------- /docs/node/run-your-node/archive-node.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: This page describes how to run an archive node on the Oasis Network. 3 | --- 4 | 5 | # Archive Node 6 | 7 | This guide will cover setting up an archive node for the Oasis Network. Node 8 | started in archive mode only serves existing consensus and runtime states. 9 | The node has all unneeded consensus and P2P functionality disabled, therefore 10 | it will not participate in the network. Archive nodes can be used to access 11 | historic state which is pruned in dump-restore network upgrades. 12 | 13 | ## Prerequisites 14 | 15 | Running an archive node requires a pre-existing `oasis-node` state. If you don't have one, 16 | you can download a snapshot of a specific network state [here][snapshots]. 17 | 18 | [snapshots]: https://snapshots.oasis.io 19 | 20 | ## Configuration (Oasis Core 23 and later) 21 | 22 | Starting from the Oasis Core version 23, the configuration for enabling archive mode has changed. 23 | Use the `mode` setting: 24 | 25 | :::info 26 | 27 | This setting configures the node to act as an archive node. 28 | 29 | ::: 30 | 31 | ```yaml 32 | mode: archive 33 | common: 34 | data_dir: /node/data 35 | log: 36 | format: JSON 37 | level: 38 | cometbft: info 39 | cometbft/context: error 40 | default: info 41 | genesis: 42 | file: /node/etc/genesis.json 43 | runtime: 44 | # Paths to ParaTime bundles for all of the supported ParaTimes. 45 | paths: 46 | - {{ runtime_orc_path }} 47 | ``` 48 | 49 | :::info 50 | 51 | Keep all other settings the same as those for a full client node. For example, to serve archived runtime 52 | state, the node needs to have the runtime configured and the state present. 53 | 54 | ::: 55 | 56 | ## Configuration (Oasis Core 22 and earlier) 57 | 58 | For all pre-Eden networks, such as Damask, the configuration remains the same but requires the 59 | appropriate version of `oasis-node` and the node state. 60 | 61 | #### Damask 62 | 63 | To run an archive node for Damask, use [Oasis Core v22.2.12] and the following 64 | configuration: 65 | 66 | ```yaml 67 | datadir: /node/data 68 | 69 | log: 70 | level: 71 | default: info 72 | tendermint: info 73 | tendermint/context: error 74 | format: JSON 75 | 76 | genesis: 77 | file: /node/etc/genesis.json 78 | 79 | consensus: 80 | tendermint: 81 | mode: archive 82 | 83 | runtime: 84 | mode: client 85 | paths: 86 | # Paths to ParaTime bundles for all of the supported ParaTimes. 87 | - "{{ runtime_orc_path }}" 88 | ``` 89 | 90 | #### Cobalt 91 | 92 | To run an archive node for Cobalt, use [Oasis Core v21.3.14] and the following configuration: 93 | 94 | ```yaml 95 | datadir: /node/data 96 | 97 | log: 98 | level: 99 | default: info 100 | tendermint: info 101 | tendermint/context: error 102 | format: JSON 103 | 104 | genesis: 105 | file: /node/etc/genesis.json 106 | 107 | consensus: 108 | tendermint: 109 | mode: archive 110 | 111 | runtime: 112 | supported: 113 | - "{{ runtime_id }}" 114 | 115 | paths: 116 | "{{ runtime_id }}": {{ paratime_binary_path }} 117 | 118 | worker: 119 | storage: 120 | enabled: true 121 | ``` 122 | 123 | :::warning 124 | 125 | Ensure you are using the correct version of oasis-node and the pre-existing state for your specific pre-Eden network. 126 | 127 | ::: 128 | 129 | ## Starting the Oasis Node 130 | 131 | You can start the node by running the following command: 132 | 133 | ```bash 134 | oasis-node --config /node/etc/config.yml 135 | ``` 136 | 137 | ### Archive node status 138 | 139 | :::info 140 | 141 | The mode field is currently unavailable in the control status output. It will 142 | be included in an upcoming release. 143 | 144 | ::: 145 | 146 | To ensure the node is running in archive mode, run the following command: 147 | 148 | ```bash 149 | oasis-node control status -a unix:/node/data/internal.sock 150 | ``` 151 | 152 | Output should report `archive` consensus mode status: 153 | 154 | ```json 155 | { 156 | // other fields omitted ... 157 | "mode": "archive", 158 | // ... 159 | } 160 | ``` 161 | 162 | ## See also 163 | 164 | [Archive Web3 Gateway](../web3.mdx#archive-web3-gateway) 165 | 166 | [Oasis Core v22.2.12]: https://github.com/oasisprotocol/oasis-core/releases/tag/v22.2.12 167 | [Oasis Core v21.3.14]: https://github.com/oasisprotocol/oasis-core/releases/tag/v21.3.14 168 | -------------------------------------------------------------------------------- /docs/node/run-your-node/keymanager-node/key-manager-upgrade.md: -------------------------------------------------------------------------------- 1 | # Upgrading Key Managers 2 | 3 | This guide will describe how to upgrade a key manager node. 4 | 5 | ## About the Upgrade 6 | 7 | Every key manager node contains all the keys used by confidential ParaTimes 8 | inside its TEE-encrypted state. The key material is sealed and can only be 9 | decrypted by exactly the same TEE enclave running on the exactly same CPU. This 10 | means that newer key manager ParaTimes can not read the key material and that 11 | key material can not be restored on another machine. 12 | 13 | :::danger 14 | 15 | During a key manager node upgrade it is therefore essential that the key 16 | material is not lost, not even due to an operational error or even a 17 | catastrophically failed upgrade. 18 | 19 | ::: 20 | 21 | ## Safe Upgrade Procedure 22 | 23 | A key manager node's upgrade procedure differs from other Oasis nodes upgrades 24 | because the upgraded node cannot unseal/decrypt the old key manager's state. 25 | 26 | To upgrade a key manager node, we need to delete the local state and let the 27 | key manager's state replicate itself from other nodes. Only one key manager 28 | runtime in the configuration file can be present at once. 29 | 30 | **In case you are running multiple key manager nodes always follow the safe 31 | upgrade procedure:** 32 | 1. Keep approximately one half of nodes running the old version. 33 | 2. Upgrade the other half. 34 | 3. Wait for the ParaTime upgrade epoch. 35 | 4. Verify that secrets have been replicated [as shown below]. 36 | 5. **Verify again.** 37 | 6. Upgrade the rest of the nodes. 38 | 39 | [as shown below]: #verifying-successful-replication 40 | 41 | ### Upgrade Nodes 42 | 43 | To upgrade a key manager node, follow the next steps: 44 | 1. Stop the node. 45 | 2. Wipe its local state `worker-local-storage.badger.db`, e.g.: 46 | ``` 47 | rm -rf runtimes/4000000000000000000000000000000000000000000000004a1a53dff2ae482d/worker-local-storage.badger.db/ 48 | ``` 49 | 3. Upgrade the key manager runtime: 50 | - get the new ORC file ([mainnet], [testnet]); 51 | - update the configuration to replace the ORC file; and 52 | - restart the node. 53 | 4. Wait for the key material to get replicated from active nodes before 54 | continuing. 55 | 5. Verify that secrets have been replicated [as shown below]. 56 | 57 | [mainnet]: ../../mainnet/#key-manager 58 | [testnet]: ../../testnet/#key-manager 59 | 60 | ### After the Upgrade 61 | 62 | #### Verifying Successful Replication 63 | 64 | After the upgrade epoch and when the key material is successfully replicated, 65 | the `control status` output should show `keymanager.status="ready"` and 66 | `registration.descriptor.runtimes.0.extra_info` should contain a hash of the 67 | key material state: 68 | ``` 69 | $ oasis-node -a unix:/node/data/internal.sock control status 70 | ... 71 | "registration": { 72 | "last_registration": "2023-02-06T08:40:30Z", 73 | "descriptor": { 74 | ... 75 | "runtimes": [ 76 | { 77 | "id": "4000000000000000000000000000000000000000000000004a1a53dff2ae482d", 78 | "version": { 79 | "minor": 3, 80 | "patch": 3 81 | }, 82 | "capabilities": { 83 | "tee": { 84 | "hardware": 1, 85 | ... 86 | } 87 | }, 88 | "extra_info": "omlzaWduYXR1cmVYQG7nDuKTOUKAlJAfukdY6Xljox376lCLI0cIP0zPw2B8abJxa31j+NoQAWA0KZuHD41XPyICmjXDTpjDXukEEgVtaW5pdF9yZXNwb25zZaNoY2hlY2tzdW1YIEWZF5YaFQChstrZ9u1UdgyqZCagmNfghvyQna9WkmvyaWlzX3NlY3VyZfVvcG9saWN5X2NoZWNrc3VtWCCsrqRzYjx05t+KoCYz7wFSdKJ720g2LQBAsRKXmClMvw==" 89 | } 90 | ], 91 | "roles": "key-manager", 92 | } 93 | } 94 | ... 95 | "keymanager": { 96 | "status": "ready", 97 | "may_generate": false, 98 | "runtime_id": "4000000000000000000000000000000000000000000000004a1a53dff2ae482d", 99 | "client_runtimes": [ 100 | "000000000000000000000000000000000000000000000000a6d1e3ebf60dff6c", 101 | "0000000000000000000000000000000000000000000000000000000000000000" 102 | ], 103 | "access_list": [ 104 | ... 105 | ], 106 | "private_peers": [ 107 | ... 108 | ] 109 | } 110 | ``` 111 | 112 | ## Troubleshooting 113 | 114 | If you forgot to wipe the key manager's state when upgrading, the upgraded Key 115 | Manager will be unable to unseal the old state and will abort: 116 | ``` 117 | {"level":"warn","module":"runtime","msg":"thread 'main' panicked at 'runtime execution failed: Enclave panicked.', runtime-loader/bin/main.rs:57:10","runtime_id":"4000000000000000000000000000000000000000000000004a1a53dff2ae482d","runtime_name":"keymanager","ts":"2022-11-11T13:38:18.805919693Z"} 118 | ``` 119 | -------------------------------------------------------------------------------- /docs/node/run-your-node/maintenance/adding-or-removing-nodes.md: -------------------------------------------------------------------------------- 1 | # Adding or Removing Nodes 2 | 3 | At some point you may wish to add or remove nodes from your entity. In order to 4 | do so, you will need to have at least the following: 5 | 6 | * Access to a synced node 7 | * Access to your entity's private key 8 | 9 | :::tip 10 | 11 | If you just need to temporarily disable your node (e.g. to perform system 12 | updates), use [graceful shutdown] instead. This will assure you that your 13 | entity will not get penalized during node's downtime. 14 | 15 | ::: 16 | 17 | ## Overview 18 | 19 | The process for adding/removing nodes is similar and has the following steps: 20 | 21 | 1. Obtain the ID of your running Oasis node 22 | 2. Download your entity descriptor (`entity.json`) from the network registry 23 | 3. Update the entity descriptor by adding/removing a node 24 | 4. Submitting the updated entity descriptor to the network 25 | 26 | [graceful shutdown]: shutting-down-a-node.md 27 | 28 | ## Obtain the ID of your Node 29 | 30 | Connect to your `server` and obtain the ID of your node by running: 31 | 32 | ```shell 33 | oasis-node control status -a unix:/node/data/internal.sock | jq .identity.node 34 | ``` 35 | 36 | ## Download Your Latest Entity Descriptor 37 | 38 | To ensure that we do not update your entity descriptor (`entity.json`) 39 | incorrectly we should get the latest entity descriptor state from the network. 40 | For this operation, you will need to know the base64 encoding of your entity's 41 | public key. 42 | 43 | Use [`oasis network show`] command on your `localhost` to get the latest entity 44 | descriptor stored in the network registry. This command is part of [Oasis CLI]. 45 | For example: 46 | 47 | ![code shell](../../../../external/cli/examples/network-show/id-entity.in) 48 | 49 | Now store the obtained JSON as `entity.json`. 50 | 51 | [`oasis network show`]: ../../../general/manage-tokens/cli/network.md#show-id 52 | [Oasis CLI]: ../../../general/manage-tokens/cli/README.md 53 | 54 | ## Updating Your Entity Descriptor 55 | 56 | ### To Add a Node 57 | 58 | :::info 59 | 60 | Due to how the node election process works, only a single node from your entity 61 | can be selected as a validator for any given epoch. Additional nodes will _not_ 62 | give you more voting power nor will it, inherently, provide high availability 63 | to have multiple nodes. 64 | 65 | ::: 66 | 67 | To attach a new node with your entity, add the ID of your node obtained in 68 | the [section above](#obtain-the-id-of-your-node) to the `nodes` field in your 69 | `entity.json`. For example: 70 | 71 | ```json 72 | { 73 | "v": 2, 74 | "id": "xQN6ffLSdc51EfEQ2BzltK1iWYAw6Y1CkBAbFzlhhEQ=", 75 | "nodes": [ 76 | "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", 77 | "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB=" 78 | ] 79 | } 80 | ``` 81 | 82 | In the above entity descriptor 2 nodes are attached to the entity: 83 | 84 | 1. A node with an identity `AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=` 85 | 2. A node with an identity `BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB=` 86 | 87 | ## To Remove a Node 88 | 89 | To remove node with ID `BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB=` from your 90 | entity descriptor, simply remove the record from the array in the `nodes` field. 91 | For example: 92 | 93 | ```json 94 | { 95 | "v": 2, 96 | "id": "xQN6ffLSdc51EfEQ2BzltK1iWYAw6Y1CkBAbFzlhhEQ=", 97 | "nodes": [ 98 | "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" 99 | ], 100 | } 101 | ``` 102 | 103 | ## Submitting Your Entity Registration to the Network 104 | 105 | Finally, to commit the changes on the network, invoke the [`oasis account entity 106 | register`] command on your `localhost`: 107 | 108 | ```shell 109 | oasis account entity register entity.json --account my_entity 110 | ``` 111 | 112 | The account used to sign the transaction (`my_entity` in the snippet above) must 113 | correspond to the entity ID in `entity.json`. 114 | 115 | If there are no errors, your entity registration should be updated. You can run 116 | the [`oasis network show`] command again to see the changes. 117 | -------------------------------------------------------------------------------- /docs/node/run-your-node/maintenance/shutting-down-a-node.md: -------------------------------------------------------------------------------- 1 | # Shutting Down a Node 2 | 3 | When a node registers for an epoch, it is committing to being available 4 | to service requests for the entire epoch. Due to this availability 5 | commitment, validator and non-client paratime nodes must be shutdown 6 | gracefully to avoid network disruption. 7 | 8 | The graceful shutdown process involves the following steps: 9 | 10 | 1. Ensure your service manager (e.g. systemd) will not restart the node after 11 | exit. Otherwise the node may re-register on startup and you will need to wait 12 | another epoch for it to expire. 13 | 2. Halt the automatic re-registration. 14 | 3. Wait for the node's existing registration to expire. 15 | 4. Terminate the node binary. 16 | 17 | To have the node gracefully shutdown, run: 18 | 19 | ```bash 20 | # Issue a graceful shutdown request. 21 | oasis-node control shutdown 22 | 23 | # Issue a graceful shutdown request, and block until the node terminates. 24 | # Note: This can take up to a full epoch to complete. 25 | oasis-node control shutdown \ 26 | --wait 27 | ```` 28 | 29 | :::caution 30 | 31 | Failure to gracefully shutdown the node may result in the node being 32 | frozen (and potentially stake being slashed) due to the node being 33 | unavailable to service requests in an epoch that it is registered for. 34 | 35 | ::: 36 | -------------------------------------------------------------------------------- /docs/node/run-your-node/maintenance/wiping-node-state.md: -------------------------------------------------------------------------------- 1 | # Wiping Node State 2 | 3 | In certain situations, you may need to do a complete node redeployment with a 4 | clean state. Two common scenarios for this are during a breaking network upgrade 5 | or in cases of severe data corruption. If you need to wipe your node due to 6 | severe corruption, it's important to note that your node will need some time to 7 | catch up with the rest of the network. 8 | 9 | The following instructions are based on the assumption that you have defined 10 | your `datadir` as `/node/data` in your node's configuration. 11 | 12 | ## State Wipe and Keep Node Identity 13 | 14 | :::info 15 | 16 | Note that by default, the `--preserve.mkvs_database` flag is set to true, 17 | preserving the runtime/paratime state. 18 | 19 | ::: 20 | 21 | To wipe consensus state while preserving the runtime/paratime state follow 22 | these instructions: 23 | 24 | 1. Stop the `oasis-node` server process (this will depend on your own deployment 25 | setup). 26 | 2. Remove consensus state using the `oasis-node unsafe-reset` command: 27 | 28 | ```bash 29 | # Do a dry run first to see which files will get deleted. 30 | oasis-node unsafe-reset \ 31 | --datadir=/node/data \ 32 | --dry_run 33 | 34 | # Delete. 35 | oasis-node unsafe-reset \ 36 | --datadir /node/data 37 | ``` 38 | 3. Start the `oasis-node` server process. 39 | 40 | :::info 41 | 42 | `oasis-node` is very strict regarding the ownership of the files. If you 43 | encounter the following error: 44 | 45 | ``` 46 | common/Mkdir: path '/node/data' has invalid owner: 1000. Expected owner: 0 47 | ``` 48 | 49 | you need to run the `oasis-node` command as the exact user that owns the files, 50 | e.g.: 51 | 52 | ``` 53 | sudo --user=#1000 -- oasis-node unsafe-reset --datadir=/node/data --dry_run --log.level info 54 | ``` 55 | 56 | ::: 57 | 58 | ## Full State Wipe 59 | 60 | :::danger 61 | 62 | This is likely not what you want to do. This is destructive and will result in 63 | losing private state required to operate the given node. **USE AT YOUR OWN 64 | RISK.** A full state wipe will also mean that you'll need to generate a new node 65 | identity (or copy the old one). 66 | 67 | ::: 68 | 69 | To perform a full state wipe follow these steps: 70 | 71 | 1. Stop the `oasis-node` server process (this will depend on your own deployment 72 | setup) 73 | 2. Remove the `/node/data` directory. 74 | 3. Redeploy your node. You'll need to copy your Node artifacts or create brand 75 | new ones. 76 | -------------------------------------------------------------------------------- /docs/node/run-your-node/non-validator-node.mdx: -------------------------------------------------------------------------------- 1 | import DocCard from '@theme/DocCard'; 2 | import {findSidebarItem} from '@site/src/sidebarUtils'; 3 | 4 | # Non-validator Node 5 | 6 | :::info 7 | 8 | These instructions are for setting up a _non-validator_ node. If you want to run a _validator_ node instead, see the [instructions for running a validator node](validator-node.mdx). Similarly, if you want to run a _ParaTime_ node instead, see the [instructions for running a ParaTime node](paratime-node.mdx). 9 | 10 | ::: 11 | 12 | This guide will cover setting up your non-validator node for the Oasis Network. This guide assumes some basic knowledge on the use of command line tools. 13 | 14 | ## Prerequisites 15 | 16 | Before following this guide, make sure you've followed the [Prerequisites](prerequisites) chapter and have the Oasis Node binary installed on your systems. 17 | 18 | ### Creating a Working Directory 19 | 20 | We will be creating the following directory structure inside a chosen top-level `/node` (feel free to name your directories however you wish) directory: 21 | 22 | * `etc`: This will store the node configuration and genesis file. 23 | * `data`: This will store the data directory needed by the running `oasis-node` binary, including the complete blockchain state. 24 | 25 | The directory permissions should be `rwx------`. 26 | 27 | To create the directory structure, use the following command: 28 | 29 | ```bash 30 | mkdir -m700 -p /node/{etc,data} 31 | ``` 32 | 33 | ### Copying the Genesis File 34 | 35 | The latest genesis file can be found in the Network Parameters page ([Mainnet], [Testnet]). You should download the latest `genesis.json` file and copy it to the `/node/etc` directory we just created. 36 | 37 | [Mainnet]: ../mainnet/README.md 38 | [Testnet]: ../testnet/README.md 39 | 40 | ## Configuration 41 | 42 | :::info 43 | 44 | This will configure the given node to only follow the consensus layer. 45 | 46 | ::: 47 | 48 | In order to configure the node create the `/node/etc/config.yml` file with the following content: 49 | 50 | ```yaml 51 | mode: client 52 | common: 53 | data_dir: /node/data 54 | log: 55 | format: JSON 56 | level: 57 | cometbft: info 58 | cometbft/context: error 59 | default: info 60 | 61 | genesis: 62 | file: /node/etc/genesis.json 63 | p2p: 64 | # List of seed nodes to connect to. 65 | # NOTE: You can add additional seed nodes to this list if you want. 66 | seeds: 67 | - {{ seed_node_address }} 68 | ``` 69 | 70 | Before using this configuration you should collect the following information to replace the variables present in the configuration file: 71 | 72 | * `{{ seed_node_address }}`: The seed node address in the form `ID@IP:port`. 73 | 74 | You can find the current Oasis Seed Node address in the Network Parameters page ([Mainnet], [Testnet]). 75 | 76 | :::caution 77 | 78 | Make sure the `consensus` port (default: `26656`) and `p2p.port` (default: `9200`) are exposed and publicly 79 | accessible on the internet (for `TCP` and `UDP` traffic). 80 | 81 | ::: 82 | 83 | ## Starting the Oasis Node 84 | 85 | You can start the node by running the following command: 86 | 87 | ```bash 88 | oasis-node --config /node/etc/config.yml 89 | ``` 90 | 91 | ## Checking Node Status 92 | 93 | To ensure that your node is properly connected with the network, you can run the following command after the node has started: 94 | 95 | ```bash 96 | oasis-node control status -a unix:/node/data/internal.sock 97 | ``` 98 | 99 | ## See also 100 | 101 | 102 | -------------------------------------------------------------------------------- /docs/node/run-your-node/prerequisites/cloud-providers.md: -------------------------------------------------------------------------------- 1 | # Cloud Providers 2 | 3 | Before committing to a service be sure to verify the processor compatibility and 4 | enquire with the provider about the status of Intel SGX support. Intel maintains 5 | a comprehensive list of processors that support Intel SGX: 6 | 7 | * https://www.intel.com/content/www/us/en/architecture-and-technology/software-guard-extensions-processors.html 8 | 9 | 10 | ## Possible Limitations 11 | 12 | While many bare-metal or dedicated server providers use Intel processors that 13 | support SGX, there are potential limitations: 14 | 15 | * **BIOS Configuration:** Some providers may not allow customers to access or 16 | modify BIOS settings, which may be necessary to correctly configure Intel 17 | SGX. 18 | * **Outdated Firmware:** SGX requires up-to-date firmware. Some providers may 19 | not maintain their systems with the latest firmware updates, preventing SGX from functioning correctly. 20 | * **Lack of SGX-specific Offerings:** Many providers may not advertise or 21 | specifically offer SGX-enabled servers, making it difficult for customers to 22 | know if the feature is available. 23 | * **Limited Support:** Even if SGX is available, the provider's support team 24 | may not be familiar with SGX-specific issues or configurations. 25 | * **Hardware Provisioning:** If you use keys (such as SGX sealing keys) that 26 | are bound to hardware to encrypt the data of an instance within an Intel SGX 27 | enclave, the encrypted data cannot be decrypted after the host of the 28 | instance is changed. 29 | 30 | ## Known Providers 31 | 32 | 33 | | Provider | Product | Documentation | Last Updated | 34 | | - | - | - | - | 35 | | [Alibaba Cloud](https://www.alibabacloud.com) | [(ECS) Bare Metal Instances](https://www.alibabacloud.com/en/product/ebm) | [Build an SGX confidential computing environment](https://www.alibabacloud.com/help/en/ecs/user-guide/build-an-sgx-encrypted-computing-environment) | 2024-09-25 | 36 | | [Azure](https://azure.microsoft.com/) | [Some Dedicated Host SKUs](https://learn.microsoft.com/en-us/azure/virtual-machines/dedicated-host-general-purpose-skus) | [Solutions on Azure for Intel SGX](https://learn.microsoft.com/en-us/azure/confidential-computing/virtual-machine-solutions-sgx) | 2024-09-25 | 37 | | [Gcore](https://gcore.com) | [Bare Metal](https://gcore.com/cloud/bare-metal-servers) | [Computing with Intel SGX](https://gcore.com/cloud/intel-sgx) | 2024-09-25 | 38 | | [IBM Cloud](https://cloud.ibm.com/) | [Virtual Private Cloud (VPC)](https://www.ibm.com/cloud/vpc) | [Confidential computing with SGX for VPC](https://cloud.ibm.com/docs/vpc?topic=vpc-about-sgx-vpc). | 2024-09-25 | 39 | | [OVH](https://www.ovhcloud.com/) | [Bare Metal servers](https://www.ovhcloud.com/en/bare-metal/prices/?use_cases=confidential-computing) | [SGX for Confidential Computing](https://www.ovhcloud.com/en/bare-metal/intel-software-guard-extensions/) | 2024-09-25 | 40 | | [PhoenixNAP](https://phoenixnap.com/) | [Bare Metal Cloud](https://phoenixnap.com/bare-metal-cloud) | [What is Intel SGX and What are the Benefits?](https://phoenixnap.com/kb/intel-sgx) | 2024-09-25 | 41 | | [Vultr](https://www.vultr.com/) | [Bare Metal](https://www.vultr.com/products/bare-metal/) | [Intel SGX development on Vultr](https://zenlot.medium.com/intel-sgx-development-on-vultr-30cdfd5c9754) | 2024-09-25 | 42 | 43 | If you are aware of more cloud or dedicated server providers that actively 44 | support Intel SGX or Intel TDX, or have updated information about the providers 45 | listed on this page, please [create an issue on Github] with the additional 46 | details. 47 | 48 | [create an issue on Github]: https://github.com/oasisprotocol/docs/issues/new -------------------------------------------------------------------------------- /docs/node/run-your-node/prerequisites/oasis-node.md: -------------------------------------------------------------------------------- 1 | # Install the Oasis Node 2 | 3 | The Oasis node is a binary that is created from the [Oasis Core] repository's 4 | [`go/`] directory. It is a single executable that contains the logic for running 5 | your node in various [roles]. 6 | 7 | :::caution 8 | 9 | The Oasis Node is currently only supported on x86_64 Linux systems. 10 | 11 | ::: 12 | 13 | [Oasis Core]: https://github.com/oasisprotocol/oasis-core 14 | [`go/`]: https://github.com/oasisprotocol/oasis-core/tree/master/go 15 | [roles]: ../../README.mdx#validator-and-paratime-nodes 16 | 17 | ## Set up the Oasis Node's Working Directory 18 | 19 | Before we install the Oasis node we need to ensure that we have a place to 20 | store necessary files. 21 | 22 | :::info 23 | 24 | We will reference the working directory on the server as `/node` 25 | throughout the documentation. 26 | 27 | ::: 28 | 29 | ### Setting Up the `/node` Directory 30 | 31 | In the `/node` directory, create the following subdirectories: 32 | 33 | * `etc/`: this is to store the configuration and `entity.json` 34 | * `data/`: this is to store the node's data 35 | * `bin/`: this is to store the `oasis-node` binary 36 | * `runtimes/`: this is to store the ParaTime `.orc` bundles 37 | 38 | You can make this directory structure with the **corresponding permissions** by 39 | executing the following command: 40 | 41 | ```shell 42 | mkdir -m700 -p /node/{etc,bin,runtimes,data} 43 | ``` 44 | 45 | ### Copying the Genesis File to the server 46 | 47 | The latest Genesis file can be found in the Network Parameters page ([Mainnet], 48 | [Testnet]). You should download the latest `genesis.json` file and 49 | copy it to `/node/etc/genesis.json` on the `server`. 50 | 51 | [Mainnet]: ../../mainnet/README.md 52 | [Testnet]: ../../testnet/README.md 53 | 54 | ## Obtain the `oasis-node` Binary 55 | 56 | ### Downloading a Binary Release 57 | 58 | For convenience, we provide binaries that have been built by the Oasis Protocol 59 | Foundation. Links to the binaries are provided in the Network Parameters page 60 | ([Mainnet], [Testnet]). 61 | 62 | [Mainnet]: ../../mainnet/README.md 63 | [Testnet]: ../../testnet/README.md 64 | 65 | ### Building From Source 66 | 67 | Although highly suggested, building from source is currently beyond the scope of 68 | this documentation. 69 | 70 | See [Oasis Core's Build Environment Setup and Building][oasis-core-build] 71 | documentation for more details. 72 | 73 | :::caution 74 | 75 | The code in the current [`master`] branch may be incompatible with the code used 76 | by other nodes on the network. Make sure to use the version specified on the 77 | Network Parameters page ([Mainnet], [Testnet]). 78 | 79 | ::: 80 | 81 | [oasis-core-build]: ../../../core/development-setup/build-environment-setup-and-building 82 | [`master`]: https://github.com/oasisprotocol/oasis-core/tree/master/ 83 | 84 | ### Adding `oasis-node` Binary to `PATH` 85 | 86 | To install the `oasis-node` binary next to your Oasis node data directory, 87 | copy/symlink it to e.g. `/node/bin`. 88 | 89 | To install the `oasis-node` binary for the current user, copy/symlink it to 90 | `~/.local/bin`. 91 | 92 | To install the `oasis-node` binary for all users of the system, copy it to 93 | `/usr/local/bin`. 94 | 95 | ## Running ParaTimes 96 | 97 | If you intend to [run a ParaTime node](../paratime-node.mdx) you will need to 98 | additionally install the following software packages: 99 | 100 | * [Bubblewrap](https://github.com/projectatomic/bubblewrap) 0.4.1+, needed for 101 | creating process sandboxes. 102 | 103 | On Ubuntu 20.04+, you can install it with: 104 | 105 | ```shell 106 | sudo apt install bubblewrap 107 | ``` 108 | 109 | On Fedora, you can install it with: 110 | 111 | ```shell 112 | sudo dnf install bubblewrap 113 | ``` 114 | 115 | -------------------------------------------------------------------------------- /docs/node/run-your-node/seed-node.md: -------------------------------------------------------------------------------- 1 | # Seed Node 2 | 3 | This guide will cover setting up a seed node for the Oasis Network. This guide assumes some basic knowledge on the use of command line tools. 4 | 5 | ## Prerequisites 6 | 7 | Before following this guide, make sure you've followed the [Prerequisites Guide](prerequisites/oasis-node.md) and understand how to use the `oasis-node` binary. 8 | 9 | ### Creating a Working Directory 10 | 11 | We will be creating the following directory structure inside a chosen top-level `/node` (feel free to name your directories however you wish) directory: 12 | 13 | * `etc`: This will store the node configuration and genesis file. 14 | * `data`: This will store the data directory needed by the running `oasis-node` binary, including the complete blockchain state. 15 | 16 | The directory permissions should be `rwx------`. 17 | 18 | To create the directory structure, use the following command: 19 | 20 | ```text 21 | mkdir -m700 -p /node/{etc,data} 22 | ``` 23 | 24 | ### Copying the Genesis File 25 | 26 | The latest genesis file can be found in the Network Parameters page ([Mainnet], [Testnet]). You should download the latest `genesis.json` file and copy it to the `/node/etc` directory we just created. 27 | 28 | [Mainnet]: ../mainnet/README.md 29 | [Testnet]: ../testnet/README.md 30 | 31 | ## Configuration 32 | 33 | :::info 34 | 35 | This will configure the given node to only act as a seed node. 36 | 37 | ::: 38 | 39 | In order to configure the node create the `/node/etc/config.yml` file with the following content: 40 | 41 | ```yaml 42 | mode: seed 43 | common: 44 | data_dir: /node/data 45 | log: 46 | format: JSON 47 | level: 48 | cometbft: info 49 | cometbft/context: error 50 | default: info 51 | 52 | genesis: 53 | file: /node/etc/genesis.json 54 | ``` 55 | 56 | :::caution 57 | 58 | Make sure the `consensus` port (default: `26656`) and `p2p.port` (default: `9200`) are exposed and publicly 59 | accessible on the internet (for `TCP` and `UDP` traffic). 60 | 61 | ::: 62 | 63 | ## Starting the Oasis Node 64 | 65 | You can start the node by running the following command: 66 | 67 | ```bash 68 | oasis-node --config /node/etc/config.yml 69 | ``` 70 | 71 | ### Seed node address 72 | 73 | To get the seed node Tendermint identity, run the following command: 74 | 75 | ```bash 76 | oasis-node identity tendermint show-node-address --datadir /node/data/ 77 | ``` 78 | 79 | ### Share seed node address 80 | 81 | Nodes can now use your seed node by specifying it via a configuration flag: 82 | 83 | ```bash 84 | --consensus.tendermint.p2p.seed @:26656 85 | ``` 86 | 87 | -------------------------------------------------------------------------------- /docs/node/run-your-node/troubleshooting.md: -------------------------------------------------------------------------------- 1 | # Troubleshooting 2 | 3 | :::info **BEFORE YOU BEGIN TROUBLESHOOTING** 4 | 5 | Before you begin troubleshooting we suggest you check all of the following: 6 | 7 | * Check that your current binary version is the latest listed on the Network Parameters page ([Mainnet](../mainnet/README.md), [Testnet](../testnet/README.md)) 8 | * Check the version on your localhost using `oasis-node --version` 9 | * Check the version on your server using `oasis-node --version` 10 | * If upgrading, make sure that you've wiped state (unless that is explicitly not required) 11 | 12 | * If you're doing anything with the entity: 13 | * Do you have the latest genesis? 14 | * Do you have the correct private key (or Ledger device). 15 | * If you're signing a transaction: 16 | * Do you sufficient account balance to make the transaction? 17 | * Run `oasis-node stake account info` 18 | * Are you using the correct nonce? 19 | * Run `oasis-node stake account info` 20 | * If you're generating a transaction: 21 | * Do you have the latest genesis? 22 | * If you're submitting a transaction: 23 | * Do you have the latest genesis? 24 | * Is your node synced? If not, the transaction will fail to run properly 25 | 26 | ::: 27 | 28 | ## Running a Node 29 | 30 | ### Invalid Permissions 31 | 32 | #### Permissions for node and entity 33 | 34 | Error Message: 35 | 36 | ```text 37 | common/Mkdir: path '/node/data' has invalid permissions: -rwxr-xr-x 38 | ``` 39 | 40 | The `entity` and `node` directories both need to have permissions `rwx------`. Make sure you initialize the directory with correct permissions or change them using `chmod`: 41 | 42 | ```bash 43 | mkdir --mode 700 --parents {entity,node} 44 | ``` 45 | 46 | ```bash 47 | chmod 700 /node/data 48 | chmod 700 /node/etc 49 | ``` 50 | 51 | #### Permissions for .pem files 52 | 53 | Error Message example: 54 | 55 | ```text 56 | signature/signer/file: invalid PEM file permissions 700 on /node/data/identity.pem 57 | ``` 58 | 59 | All `.pem` files should have the permissions `600`. You can set the permissions for all `.pem` files in a directory using the following command: 60 | 61 | ```bash 62 | chmod -R 600 /path/*.pem 63 | ``` 64 | 65 | #### Node directory Ownership 66 | 67 | Another possible cause of permission issues is not giving ownership of your `node/` to the user running the node (e.g. `docker-host` or replace with your user): 68 | 69 | ```bash 70 | chown -R docker-host:docker-host /node 71 | ``` 72 | 73 | In general, to avoid problems when running docker, specify the user when running `docker` commands by adding the flag `--user $(id -u):$(id -g)`. 74 | 75 | ### Cannot Find File 76 | 77 | Error Message examples: 78 | 79 | ```text 80 | no such file or directory 81 | ``` 82 | 83 | ```text 84 | file does not exist 85 | ``` 86 | 87 | ```text 88 | ts=2019-11-17T03:42:09.778647033Z level=error module=cmd/registry/node caller=node.go:127 msg="failed to load entity" err="file does not exist" 89 | ``` 90 | 91 | More often than you'd expect, this error is the result of setting the path incorrectly. You may have left something like `--genesis.file $GENESIS_FILE_PATH` in the command without setting `$GENESIS_FILE_PATH` first, or set the path incorrectly. Check that `echo $GENESIS_FILE_PATH` matches your expectation or provide a path in the command. 92 | 93 | Another possible cause: the files in your localhost directory cannot be read from the container. Make sure to run commands in the same session within the container. 94 | 95 | ## Staking and Registering 96 | 97 | ### Transaction Out of Gas 98 | 99 | Error message: 100 | 101 | ```text 102 | module=cmd/stake caller=stake.go:70 msg="failed to submit transaction" err="rpc error: code = Unknown desc = staking: add escrow transaction failed: out of gas" attempt=1 103 | ``` 104 | 105 | The docs are now updated to show that you need to add `--stake.transaction.fee.gas` and `--stake.transaction.fee.amount` flags when generating your transaction. Note that if you're re-generating a transaction, you will need to increment the `--nonce` flag. 106 | 107 | -------------------------------------------------------------------------------- /docs/node/testnet/README.md: -------------------------------------------------------------------------------- 1 | # Testnet 2 | 3 | These are the current parameters for the Testnet, a test-only network for 4 | testing out upcoming features and changes to the protocol. 5 | 6 | :::danger 7 | 8 | **The Testnet may be subject to frequent version upgrades and state resets.** 9 | 10 | Also note that while the Testnet does use actual TEEs, due to experimental 11 | software and different security parameters, **confidentiality of confidential 12 | ParaTimes on the Testnet is not guaranteed** -- all transactions and state 13 | published on the Testnet should be considered public even when stored inside 14 | confidential ParaTimes. 15 | 16 | ::: 17 | 18 | :::info 19 | 20 | On the Testnet, TEST tokens are in use -- if you need some to test your clients, nodes or paratimes, feel free to use our [Testnet Faucet](https://faucet.testnet.oasis.io). Note that these are test-only tokens and account balances, as any other state, may be frequently reset. 21 | 22 | ::: 23 | 24 | This page is meant to be kept up to date with the information from the currently released Testnet. Use the information here to deploy or upgrade your node on the Testnet. 25 | 26 | * Latest Testnet version: **2023-10-12** 27 | * [Genesis file](https://github.com/oasisprotocol/testnet-artifacts/releases/download/2023-10-12/genesis.json): 28 | * SHA256: `02ce385c050b2a5c7cf0e5e34f5e4930f7804bb21efba2d1d3aa8215123aab68` 29 | * Genesis document's hash ([explanation](../genesis-doc.md#genesis-file-vs-genesis-document)): 30 | * `0b91b8e4e44b2003a7c5e23ddadb5e14ef5345c0ebcb3ddcae07fa2f244cab76` 31 | * Oasis seed node addresses: 32 | * `HcDFrTp/MqRHtju5bCx6TIhIMd6X/0ZQ3lUG73q5898=@34.86.165.6:26656` 33 | * `HcDFrTp/MqRHtju5bCx6TIhIMd6X/0ZQ3lUG73q5898=@34.86.165.6:9200` 34 | * `kqsc8ETIgG9LCmW5HhSEUW80WIpwKhS7hRQd8FrnkJ0=@34.140.116.202:26656` 35 | * `kqsc8ETIgG9LCmW5HhSEUW80WIpwKhS7hRQd8FrnkJ0=@34.140.116.202:9200` 36 | 37 | :::tip 38 | 39 | Feel free to use other seed nodes besides the one provided here. 40 | 41 | ::: 42 | 43 | * [Oasis Core](https://github.com/oasisprotocol/oasis-core) version: 44 | * [25.3](https://github.com/oasisprotocol/oasis-core/releases/tag/v25.3) 45 | * [Oasis Rosetta Gateway](https://github.com/oasisprotocol/oasis-rosetta-gateway) version: 46 | * [2.7.0](https://github.com/oasisprotocol/oasis-rosetta-gateway/releases/tag/v2.7.0) 47 | 48 | :::info 49 | 50 | The Oasis Node is part of the Oasis Core release. 51 | 52 | ::: 53 | 54 | [handling network upgrades]: ../run-your-node/maintenance/handling-network-upgrades.md 55 | 56 | ## ParaTimes 57 | 58 | This chapter contains parameters for various ParaTimes known to be deployed on the Testnet. Similar to the Testnet, these may be subject to frequent version upgrades and/or state resets. 59 | 60 | ### Sapphire 61 | 62 | * Oasis Core version: 63 | * [25.3](https://github.com/oasisprotocol/oasis-core/releases/tag/v25.3) 64 | * Runtime identifier: 65 | * `000000000000000000000000000000000000000000000000a6d1e3ebf60dff6c` 66 | * Runtime bundle version: 67 | * [0.10.3-testnet](https://github.com/oasisprotocol/sapphire-paratime/releases/tag/v0.10.3-testnet) 68 | * Web3 Gateway version: 69 | * [5.2.0](https://github.com/oasisprotocol/oasis-web3-gateway/releases/tag/v5.2.0) 70 | 71 | ### Cipher 72 | 73 | * Oasis Core version: 74 | * [25.3](https://github.com/oasisprotocol/oasis-core/releases/tag/v25.3) 75 | * Runtime identifier: 76 | * `0000000000000000000000000000000000000000000000000000000000000000` 77 | * Runtime bundle version: 78 | * [3.3.3-testnet](https://github.com/oasisprotocol/cipher-paratime/releases/tag/v3.3.3-testnet) 79 | 80 | ### Emerald 81 | 82 | * Oasis Core version: 83 | * [25.3](https://github.com/oasisprotocol/oasis-core/releases/tag/v25.3) 84 | * Runtime identifier: 85 | * `00000000000000000000000000000000000000000000000072c8215e60d5bca7` 86 | * Runtime bundle version (or [build your own](https://github.com/oasisprotocol/emerald-paratime/tree/v11.0.0-testnet#building)): 87 | * [11.0.0-testnet](https://github.com/oasisprotocol/emerald-paratime/releases/tag/v11.0.0-testnet) 88 | * Web3 Gateway version: 89 | * [5.2.0](https://github.com/oasisprotocol/oasis-web3-gateway/releases/tag/v5.2.0) 90 | 91 | ### Key Manager 92 | 93 | * Oasis Core version: 94 | * [25.3](https://github.com/oasisprotocol/oasis-core/releases/tag/v25.3) 95 | * Runtime identifier: 96 | * `4000000000000000000000000000000000000000000000004a1a53dff2ae482d` 97 | * Runtime bundle version: 98 | * [0.5.0-testnet](https://github.com/oasisprotocol/keymanager-paratime/releases/tag/v0.5.0-testnet) 99 | * [0.6.0-testnet](https://github.com/oasisprotocol/keymanager-paratime/releases/tag/v0.6.0-testnet) 100 | -------------------------------------------------------------------------------- /jest.config.ts: -------------------------------------------------------------------------------- 1 | import type {JestConfigWithTsJest} from 'ts-jest'; 2 | 3 | const config: JestConfigWithTsJest = { 4 | verbose: true, 5 | preset: 'ts-jest/presets/js-with-babel-esm', 6 | }; 7 | 8 | export default config; 9 | -------------------------------------------------------------------------------- /linkinator.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "concurrency": 1, 3 | "recurse": true, 4 | "skip": [ 5 | "oasis.fish", 6 | "support.ledger.com", 7 | "www.coinbase.com", 8 | "www.coinspeaker.com", 9 | "www.linkedin.com" 10 | ], 11 | "verbosity": "error", 12 | "timeout": 0, 13 | "markdown": false, 14 | "retry": true, 15 | "retryErrors": true, 16 | "retryErrorsCount": 3, 17 | "retryErrorsJitter": 5 18 | } 19 | -------------------------------------------------------------------------------- /mermaid-theme.css: -------------------------------------------------------------------------------- 1 | .actor, .labelBox { 2 | stroke: black !important; 3 | stroke-width: 1.5px !important; 4 | fill: #007bff !important; 5 | } 6 | 7 | .note { 8 | fill: #007bff !important; 9 | stroke-width: 1px !important; 10 | stroke: black !important; 11 | } 12 | 13 | .noteText tspan, .actor tspan, .labelText { 14 | fill: white !important; 15 | } 16 | 17 | .loopText, .loopText tspan { 18 | fill: #007bff !important; 19 | } 20 | 21 | .actor-line { 22 | stroke: #007bff !important; 23 | stroke-width: 1px; 24 | } 25 | 26 | .messageText, .loopText, .labelText, .noteText { 27 | font-size: 15px !important; 28 | stroke: none !important; 29 | background: white !important; 30 | } 31 | 32 | .loopLine, line { 33 | stroke: #333 !important; 34 | stroke-width: 1px; 35 | fill: none !important; 36 | } 37 | 38 | .activation0 { 39 | fill: #eaecef; 40 | stroke: #333; 41 | } 42 | 43 | @media (prefers-color-scheme: dark) { 44 | background-color: #1b1b1d !important; 45 | 46 | #arrowhead path{fill:white !important;stroke:white !important;} 47 | 48 | .actor, .labelBox { 49 | stroke: white !important; 50 | stroke-width: 1.5px !important; 51 | fill: #1E88E5 !important; 52 | } 53 | 54 | .note { 55 | fill: #1E88E5 !important; 56 | stroke-width: 1px !important; 57 | } 58 | 59 | .noteText tspan, .actor tspan, .labelText { 60 | fill: white !important; 61 | } 62 | 63 | .actor-line { 64 | stroke: white !important; 65 | stroke-width: 1px; 66 | } 67 | 68 | .messageLine0, line { 69 | stroke: white !important; 70 | } 71 | 72 | .messageText, .labelText, .noteText { 73 | font-size: 15px !important; 74 | fill: white !important; 75 | } 76 | 77 | .loopText, .loopText tspan { 78 | font-size: 15px !important; 79 | fill: #1E88E5 !important; 80 | } 81 | 82 | .loopLine, line { 83 | stroke: white !important; 84 | stroke-width: 1px; 85 | } 86 | 87 | .activation0 { 88 | fill: #666666 !important; 89 | stroke: white; 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /mermaid.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "themeCSS": ".actor, .labelBox { stroke: black !important; stroke-width: 1.5px !important; fill: #007bff !important;}.note { fill: #007bff !important; stroke-width: 1px !important; stroke: black !important;}.noteText tspan, .actor tspan, .labelText { fill: white !important;}.loopText, .loopText tspan { fill: #007bff !important;}.actor-line { stroke: #007bff !important; stroke-width: 1px;}.messageText, .loopText, .labelText, .noteText { font-size: 15px !important; stroke: none !important; background: white !important;}.loopLine, line { stroke: #333 !important; stroke-width: 1px; fill: none !important; }.activation0 { fill: #eaecef; stroke: #333;}@media (prefers-color-scheme: dark) { background-color: #1b1b1d !important; #arrowhead path{fill:white !important;stroke:white !important;} .actor, .labelBox { stroke: white !important; stroke-width: 1.5px !important; fill: #1E88E5 !important; } .note { fill: #1E88E5 !important; stroke-width: 1px !important; } .noteText tspan, .actor tspan, .labelText { fill: white !important; } .actor-line { stroke: white !important; stroke-width: 1px; } .messageLine0, line { stroke: white !important; } .messageText, .labelText, .noteText { font-size: 15px !important; fill: white !important; } .loopText, .loopText tspan { font-size: 15px !important; fill: #1E88E5 !important; } .loopLine, line { stroke: white !important; stroke-width: 1px; } .activation0 { fill: #666666 !important; stroke: white; }}", 3 | "deterministicIds": true, 4 | "fontFamily": "Noto Sans", 5 | "actorFontFamily": "Noto Sans", 6 | "noteFontFamily": "Noto Sans", 7 | "messageFontFamily": "Noto Sans", 8 | "personFontFamily": "Noto Sans" 9 | } 10 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "docs-oasis-io", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "docusaurus": "docusaurus", 7 | "start": "docusaurus start --no-open", 8 | "build": "docusaurus build", 9 | "mermaid:theme": "CSS_STRING=$(tr -s ' ' < mermaid-theme.css | tr -d '\n') && jq --arg themeCSS \"$CSS_STRING\" '.themeCSS = $themeCSS' mermaid.config.json > mermaid.config.json.temp && mv mermaid.config.json.temp mermaid.config.json", 10 | "diagrams": "yarn mermaid:theme && find -L docs -name '*.mmd' -exec mmdc -i {} -p puppeteer-config.json -c mermaid.config.json ';'", 11 | "swizzle": "docusaurus swizzle", 12 | "deploy": "docusaurus deploy", 13 | "clear": "docusaurus clear", 14 | "serve": "docusaurus serve", 15 | "test": "NODE_OPTIONS='--experimental-vm-modules' jest src", 16 | "write-translations": "docusaurus write-translations", 17 | "write-heading-ids": "docusaurus write-heading-ids", 18 | "typecheck": "tsc", 19 | "blc": "linkinator http://localhost:3000 --config linkinator.config.json", 20 | "lint-markdown": "markdownlint-cli2 'docs/**/*.md' 'docs/**/*.mdx'", 21 | "fmt-markdown": "markdownlint-cli2-fix 'docs/**/*.md' 'docs/**/*.mdx'" 22 | }, 23 | "dependencies": { 24 | "@docusaurus/core": "^3.7.0", 25 | "@docusaurus/plugin-client-redirects": "^3.7.0", 26 | "@docusaurus/preset-classic": "^3.7.0", 27 | "@docusaurus/remark-plugin-npm2yarn": "^3.7.0", 28 | "@easyops-cn/docusaurus-search-local": "0.45.0", 29 | "@mdx-js/react": "^3.0.0", 30 | "@mermaid-js/mermaid-cli": "^11.4.0", 31 | "clsx": "^2.0.0", 32 | "linkinator": "^6.0.3", 33 | "markdownlint-cli2": "^0.11.0", 34 | "plotly.js-basic-dist": "^2.27.1", 35 | "prism-react-renderer": "^2.3.0", 36 | "puppeteer": "^23", 37 | "react": "^19.0.0", 38 | "react-dom": "^19.0.0", 39 | "react-plotly.js": "^2.6.0" 40 | }, 41 | "browserslist": { 42 | "production": [ 43 | ">0.5%", 44 | "not dead", 45 | "not op_mini all" 46 | ], 47 | "development": [ 48 | "last 3 chrome version", 49 | "last 3 firefox version", 50 | "last 3 safari version" 51 | ] 52 | }, 53 | "devDependencies": { 54 | "@docusaurus/module-type-aliases": "^3.7.0", 55 | "@docusaurus/tsconfig": "^3.7.0", 56 | "@docusaurus/types": "^3.7.0", 57 | "@types/plotly.js-basic-dist": "^1.54.4", 58 | "@types/react-plotly.js": "^2.6.3", 59 | "jest": "^29.7.0", 60 | "ts-jest": "^29.1.1", 61 | "ts-node": "^10.9.2", 62 | "typescript": "~5.6.2" 63 | }, 64 | "engines": { 65 | "node": ">=20.0" 66 | }, 67 | "packageManager": "yarn@1.22.22" 68 | } 69 | -------------------------------------------------------------------------------- /puppeteer-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "args": ["--no-sandbox"] 3 | } 4 | -------------------------------------------------------------------------------- /sidebarAdrs.ts: -------------------------------------------------------------------------------- 1 | import {SidebarsConfig} from '@docusaurus/plugin-content-docs'; 2 | 3 | export const sidebarAdrs: SidebarsConfig = { 4 | adrs: [ 5 | { 6 | type: 'category', 7 | label: 'Architectural Decision Records', 8 | link: { 9 | type: 'generated-index', 10 | description: "This page contains a list of accepted Oasis ADRs. To see the currently discussed ADRs or to open a new ADR, visit the official oasisprotocol/adrs repository on github.com.", 11 | slug: '/adrs', 12 | }, 13 | items: [ 14 | { 15 | type: 'autogenerated', 16 | dirName: 'adrs', 17 | }, 18 | ], 19 | } 20 | ], 21 | }; 22 | -------------------------------------------------------------------------------- /sidebarGeneral.ts: -------------------------------------------------------------------------------- 1 | import {SidebarsConfig} from '@docusaurus/plugin-content-docs'; 2 | 3 | export const sidebarGeneral: SidebarsConfig = { 4 | general: [ 5 | { 6 | type: 'doc', 7 | label: 'Overview', 8 | id: 'general/README', 9 | }, 10 | { 11 | type: 'category', 12 | label: 'Oasis Network', 13 | collapsible: false, 14 | link: { 15 | type: 'doc', 16 | id: 'general/oasis-network/README', 17 | }, 18 | items: [ 19 | 'general/oasis-network/token-metrics-and-distribution', 20 | 'general/oasis-network/papers', 21 | 'general/oasis-network/faq', 22 | ], 23 | }, 24 | { 25 | type: 'category', 26 | label: 'Manage your Tokens', 27 | collapsible: false, 28 | link: { 29 | type: 'doc', 30 | id: 'general/manage-tokens/README', 31 | }, 32 | items: [ 33 | 'general/manage-tokens/terminology', 34 | 'general/manage-tokens/staking-and-delegating', 35 | { 36 | type: 'category', 37 | label: 'ROSE Wallet', 38 | link: { 39 | type: 'generated-index', 40 | description: "The Oasis team developed two wallets specialized for the Oasis Network transactions. You can learn how to use them below.", 41 | slug: 'general/manage-tokens/oasis-wallets', 42 | }, 43 | items: [ 44 | { 45 | type: 'doc', 46 | label: 'Web', 47 | id: 'general/manage-tokens/oasis-wallets/web' 48 | }, 49 | { 50 | type: 'doc', 51 | label: 'Browser Extension', 52 | id: 'general/manage-tokens/oasis-wallets/browser-extension' 53 | } 54 | ] 55 | }, 56 | { 57 | type: 'category', 58 | label: '3rd Party Wallets and Services', 59 | link: { 60 | type: 'generated-index', 61 | description: "There is a number of 3rd party services, tools and wallets out there which support the Oasis network. Some of them are categorized below. Keep in mind that these products were developed by 3rd parties and the Oasis Protocol Foundation cannot be held responsible for any security vulnerabilities or malicious activity.", 62 | slug: 'general/manage-tokens/holding-rose-tokens', 63 | }, 64 | items: [ 65 | 'general/manage-tokens/holding-rose-tokens/custody-providers', 66 | 'general/manage-tokens/holding-rose-tokens/ledger-wallet', 67 | ] 68 | }, 69 | 'general/manage-tokens/how-to-transfer-eth-erc20-to-emerald-paratime', 70 | { 71 | type: 'category', 72 | label: 'Oasis CLI', 73 | link: { 74 | type: 'doc', 75 | id: 'general/manage-tokens/cli/README', 76 | }, 77 | items: [ 78 | 'general/manage-tokens/cli/setup', 79 | 'general/manage-tokens/cli/network', 80 | 'general/manage-tokens/cli/paratime', 81 | 'general/manage-tokens/cli/wallet', 82 | 'general/manage-tokens/cli/account', 83 | 'general/manage-tokens/cli/transaction', 84 | 'general/manage-tokens/cli/addressbook', 85 | 'general/manage-tokens/cli/rofl', 86 | ] 87 | }, 88 | 'general/manage-tokens/faq', 89 | ], 90 | }, 91 | ], 92 | }; 93 | -------------------------------------------------------------------------------- /sidebarGetInvolved.ts: -------------------------------------------------------------------------------- 1 | import {SidebarsConfig} from '@docusaurus/plugin-content-docs'; 2 | 3 | export const sidebarGetInvolved: SidebarsConfig = { 4 | getInvolved: [ 5 | 'get-involved/README', 6 | { 7 | type: 'link', 8 | label: 'Become our Ambassador', 9 | href: 'https://oasisprotocol.org/ambassador-program', 10 | }, 11 | { 12 | type: 'link', 13 | label: 'Become our Influencer', 14 | href: 'https://oasisprotocol.org/influencer', 15 | }, 16 | { 17 | type: 'link', 18 | label: 'Apply for Grant', 19 | href: 'https://oasisprotocol.org/grant-programs', 20 | }, 21 | { 22 | type: 'link', 23 | label: 'Join our University Program', 24 | href: 'https://oasisprotocol.org/university-program', 25 | }, 26 | { 27 | type: 'link', 28 | label: 'Follow Community Portal', 29 | href: 'https://oasisrose.garden', 30 | }, 31 | { 32 | type: 'category', 33 | label: 'Run a Node', 34 | collapsible: false, 35 | link: { 36 | type: 'generated-index', 37 | slug: 'get-involved/run-node', 38 | }, 39 | items: [ 40 | 'get-involved/run-node/validator-node', 41 | 'get-involved/run-node/paratime-node', 42 | ], 43 | }, 44 | 'get-involved/oasis-core', 45 | 'get-involved/network-governance', 46 | 'get-involved/delegation-policy', 47 | 'get-involved/token-delivery-and-kyc', 48 | ], 49 | }; 50 | -------------------------------------------------------------------------------- /sidebars.ts: -------------------------------------------------------------------------------- 1 | import {SidebarsConfig} from '@docusaurus/plugin-content-docs'; 2 | 3 | import {sidebarAdrs} from './sidebarAdrs'; 4 | import {sidebarCore} from './sidebarCore'; 5 | import {sidebarBuild} from './sidebarBuild'; 6 | import {sidebarGeneral} from './sidebarGeneral'; 7 | import {sidebarGetInvolved} from './sidebarGetInvolved'; 8 | import {sidebarNode} from './sidebarNode'; 9 | 10 | const sidebars: SidebarsConfig = { 11 | ...sidebarAdrs, 12 | ...sidebarCore, 13 | ...sidebarBuild, 14 | ...sidebarGeneral, 15 | ...sidebarGetInvolved, 16 | ...sidebarNode, 17 | }; 18 | 19 | export default sidebars; 20 | -------------------------------------------------------------------------------- /src/AddToMetaMask.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const AddToMetaMask = (props: { 4 | name: string, 5 | chainId: string, 6 | token: string, 7 | rpcs: string[], 8 | be: string[], 9 | }) => { 10 | return ( 11 | 12 | {props.rpcs.map(item => ( 13 | {item}
14 | ))} 15 | 46 |
47 | ); 48 | }; 49 | 50 | export const AddSapphireToMetaMask = (props: { 51 | rpcs: string[], 52 | }) => { 53 | return AddToMetaMask({ 54 | name: 'Oasis Sapphire', 55 | chainId: '0x5afe', 56 | token: 'ROSE', 57 | rpcs: props.rpcs, 58 | be: ['https://explorer.oasis.io/mainnet/sapphire'], 59 | }); 60 | }; 61 | 62 | export const AddSapphireTestnetToMetaMask = (props: { 63 | rpcs: string[], 64 | }) => { 65 | return AddToMetaMask({ 66 | name: 'Oasis Sapphire Testnet', 67 | chainId: '0x5aff', 68 | token: 'TEST', 69 | rpcs: props.rpcs, 70 | be: ['https://explorer.oasis.io/testnet/sapphire'], 71 | }); 72 | }; 73 | 74 | export const AddEmeraldToMetaMask = (props: { 75 | rpcs: string[], 76 | }) => { 77 | return AddToMetaMask({ 78 | name: 'Oasis Emerald', 79 | chainId: '0xa516', 80 | token: 'ROSE', 81 | rpcs: props.rpcs, 82 | be: ['https://explorer.oasis.io/mainnet/emerald'], 83 | }); 84 | }; 85 | 86 | export const AddEmeraldTestnetToMetaMask = (props: { 87 | rpcs: string[], 88 | }) => { 89 | return AddToMetaMask({ 90 | name: 'Oasis Emerald Testnet', 91 | chainId: '0xa515', 92 | token: 'TEST', 93 | rpcs: props.rpcs, 94 | be: ['https://explorer.oasis.io/testnet/emerald'], 95 | }); 96 | }; 97 | -------------------------------------------------------------------------------- /src/PlotlyChart.tsx: -------------------------------------------------------------------------------- 1 | import React, { ComponentType, SVGProps } from 'react'; 2 | import BrowserOnly from '@docusaurus/BrowserOnly'; 3 | import { useColorMode } from '@docusaurus/theme-common'; 4 | import plotlyPyDark from '@site/src/plotly-py-templates/plotly_dark.json'; 5 | 6 | import type { PlotlyDataLayoutConfig } from 'plotly.js-basic-dist'; 7 | 8 | const PlotlyChart = (props: { 9 | chart: PlotlyDataLayoutConfig, 10 | fallbackSvg: string, 11 | label: string, 12 | height?: number 13 | }) => { 14 | 15 | const { colorMode } = useColorMode(); 16 | 17 | const chart: PlotlyDataLayoutConfig = { 18 | ...props.chart, 19 | layout: { 20 | template: colorMode === 'dark' ? plotlyPyDark : undefined, 21 | paper_bgcolor: colorMode === 'dark' ? '#1b1b1d' : undefined, // Match --ifm-background-color 22 | plot_bgcolor: colorMode === 'dark' ? '#1b1b1d' : undefined, // Match --ifm-background-color 23 | autosize: true, 24 | ...props.chart.layout, 25 | }, 26 | config: { 27 | showLink: true, 28 | plotlyServerURL: 'https://chart-studio.plotly.com', 29 | ...props.chart.config, 30 | }, 31 | }; 32 | 33 | return ( 34 |
35 | 38 | {props.label} 39 |

Enable javascript to see interactive chart

40 |
41 | } 42 | > 43 | {() => { 44 | const PlotlyBasic: typeof import('plotly.js-basic-dist') = require('plotly.js-basic-dist'); 45 | const createPlotlyComponent: typeof import('react-plotly.js/factory').default = require('react-plotly.js/factory').default; 46 | const Plot = createPlotlyComponent(PlotlyBasic); 47 | 48 | return ( 49 | 56 | ); 57 | }} 58 | 59 |

60 | 61 | ); 62 | }; 63 | 64 | export default PlotlyChart; 65 | -------------------------------------------------------------------------------- /src/editUrl.ts: -------------------------------------------------------------------------------- 1 | import * as path from "path"; 2 | import * as fs from "fs"; 3 | import type { EditUrlFunction } from '@docusaurus/plugin-content-docs' 4 | 5 | const gitModules = { 6 | 'external/adrs/': 'https://github.com/oasisprotocol/adrs/{mode}/main/', 7 | 'external/cli/': 'https://github.com/oasisprotocol/cli/{mode}/master/', 8 | 'external/oasis-core/': 'https://github.com/oasisprotocol/oasis-core/{mode}/stable/24.2.x/', 9 | 'external/oasis-sdk/': 'https://github.com/oasisprotocol/oasis-sdk/{mode}/main/', 10 | 'external/sapphire-paratime/': 'https://github.com/oasisprotocol/sapphire-paratime/{mode}/main/', 11 | }; 12 | 13 | /** 14 | * Generates cross-repo edit URL link. 15 | */ 16 | export const editLinkUrl: EditUrlFunction = (params) => { 17 | const relFilepath = path.join(params.versionDocsDirPath, params.docPath); 18 | return linkUrl(relFilepath, 'edit'); 19 | } 20 | 21 | /** 22 | * Generates cross-repo view URL link (e.g. for viewing example sources). 23 | */ 24 | export function viewLinkUrl(relFilePath: string) { 25 | return linkUrl(relFilePath, 'blob'); 26 | } 27 | 28 | function linkUrl(filename: string, mode: string) { 29 | // Resolve composed paths and symlinks, if needed. 30 | filename = fs.realpathSync(filename); 31 | 32 | // Obtain relative filename to project root. 33 | filename = path.relative(process.cwd(), filename) 34 | 35 | let r: keyof typeof gitModules 36 | for (r in gitModules) { 37 | if (filename.startsWith(r)) { 38 | // Extract relative filename inside the git submodule. 39 | return filename.replace(r, gitModules[r]).replace("{mode}", mode); 40 | } 41 | } 42 | 43 | return `https://github.com/oasisprotocol/docs/{mode}/main/${filename}`.replace("{mode}", mode); 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/plotly-py-templates/LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016-2018 Plotly, Inc 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/plotly-py-templates/README.md: -------------------------------------------------------------------------------- 1 | From https://github.com/plotly/plotly.py/tree/1f19f5f76a7bebe6241fc7402233f22931dbe89a/packages/python/plotly/plotly/package_data/templates 2 | -------------------------------------------------------------------------------- /src/remark/cross-repo-links.ts: -------------------------------------------------------------------------------- 1 | import type {Transformer} from 'unified'; 2 | import type mdast from 'mdast' 3 | import {visit} from 'unist-util-visit'; 4 | 5 | const cliRegex = /https:\/\/github\.com\/oasisprotocol\/cli\/blob\/master\/docs\/(.*)\.mdx?(#.*)?/; 6 | const oasisSdkContractRegex = /https:\/\/github\.com\/oasisprotocol\/oasis-sdk\/blob\/main\/docs\/contract\/(.*)\.mdx?(#.*)?/; 7 | const oasisSdkRuntimeRegex = /https:\/\/github\.com\/oasisprotocol\/oasis-sdk\/blob\/main\/docs\/runtime\/(.*)\.mdx?(#.*)?/; 8 | const oasisSdkRoflRegex = /https:\/\/github\.com\/oasisprotocol\/oasis-sdk\/blob\/main\/docs\/rofl\/(.*)\.mdx?(#.*)?/; 9 | const oasisCoreRegex = /https:\/\/github\.com\/oasisprotocol\/oasis-core\/blob\/master\/docs\/(.*)\.mdx?(#.*)?/; 10 | const adrsRegex = /https:\/\/github\.com\/oasisprotocol\/adrs\/blob\/main\/(.*)\.mdx?(#.*)?/; 11 | const sapphireParatimeRegex = /https:\/\/github\.com\/oasisprotocol\/sapphire-paratime\/blob\/main\/docs\/(.*)\.mdx?(#.*)?/; 12 | const docsRegex = /https:\/\/github\.com\/oasisprotocol\/docs\/blob\/main\/docs\/(.*)\.mdx?(#.*)?/; 13 | 14 | const indexReadmeRegex = /(index|README)($|#)/; 15 | 16 | export default function plugin(): Transformer { 17 | /** 18 | * Replace github.com URLs pointing to markdown files of the docs/ folders in various github 19 | * repos with relative website links depending on the specific component. 20 | * 21 | * Examples: 22 | * https://github.com/oasisprotocol/oasis-sdk/blob/main/docs/runtime/prerequisites.md -> 23 | * /paratime/prerequisites 24 | * https://github.com/oasisprotocol/oasis-core/blob/master/docs/runtime/index.md -> 25 | * /core/runtime/ 26 | * https://github.com/oasisprotocol/docs/blob/main/docs/node/genesis-doc.md#committee-scheduler -> 27 | * /node/genesis-doc#committee-scheduler 28 | */ 29 | function visitor(untypedNode: mdast.Node) { 30 | const node = untypedNode as mdast.Definition | mdast.Link 31 | if (oasisSdkContractRegex.test(node.url)) { 32 | node.url = node.url.replace(oasisSdkContractRegex, '/build/tools/other-paratimes/cipher/$1$2'); 33 | } else if (oasisSdkRuntimeRegex.test(node.url)) { 34 | node.url = node.url.replace(oasisSdkRuntimeRegex, '/build/tools/build-paratime/$1$2'); 35 | } else if (oasisSdkRoflRegex.test(node.url)) { 36 | node.url = node.url.replace(oasisSdkRoflRegex, '/build/rofl/$1$2'); 37 | } else if (cliRegex.test(node.url)) { 38 | node.url = node.url.replace(cliRegex, '/general/manage-tokens/cli/$1$2'); 39 | } else if (oasisCoreRegex.test(node.url)) { 40 | node.url = node.url.replace(oasisCoreRegex, '/core/$1$2'); 41 | } else if (adrsRegex.test(node.url)) { 42 | node.url = node.url.replace(adrsRegex, '/adrs/$1$2'); 43 | } else if (sapphireParatimeRegex.test(node.url)) { 44 | node.url = node.url.replace(sapphireParatimeRegex, '/build/sapphire/$1$2'); 45 | } else if (docsRegex.test(node.url)) { 46 | node.url = node.url.replace(docsRegex, '/$1$2'); 47 | } else { 48 | return; 49 | } 50 | 51 | // Trim trailing "index" or "README" in URLs. 52 | node.url = node.url.replace(indexReadmeRegex, '$2'); 53 | } 54 | 55 | return (root, _) => { 56 | visit(root, ['definition', 'link'], visitor); 57 | }; 58 | }; 59 | -------------------------------------------------------------------------------- /src/sidebarUtils.ts: -------------------------------------------------------------------------------- 1 | import {useDocsVersion} from "@docusaurus/plugin-content-docs/client"; 2 | import {PropSidebar} from "@docusaurus/plugin-content-docs"; 3 | import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; 4 | 5 | /** 6 | * Builds an index of href => sidebar item. 7 | * Indexed sidebar items are doc, category (with defined link) and link. 8 | */ 9 | function reindex(sidebarItems: PropSidebar) { 10 | for (const item of sidebarItems) { 11 | const key = item.href; 12 | if (key && globalThis.sidebarItemsMap[key] === undefined) { 13 | globalThis.sidebarItemsMap[key] = item; 14 | } 15 | 16 | if (item.type === 'category') { 17 | reindex(item.items) 18 | } 19 | } 20 | } 21 | 22 | /** 23 | * Finds sidebar item object in the sidebars given the item's href. 24 | */ 25 | export function findSidebarItem(href: string) { 26 | const {siteConfig, siteMetadata} = useDocusaurusContext(); 27 | const docsVersion = useDocsVersion(); 28 | 29 | if (!docsVersion) { 30 | throw new Error('Unexpected: cant find docsVersion in current context'); 31 | } 32 | 33 | // Build the index on the first sidebar call. 34 | if (globalThis.sidebarItemsMap === undefined) { 35 | globalThis.sidebarItemsMap = {}; 36 | for (const s in docsVersion.docsSidebars) { 37 | reindex(docsVersion.docsSidebars[s]); 38 | } 39 | } 40 | 41 | // Throw error, if the sidebar item is still not found. 42 | if (globalThis.sidebarItemsMap[href] === undefined) { 43 | console.log(`Item ${href} not found. Registered sidebar items:`); 44 | console.log(globalThis.sidebarItemsMap); 45 | if (siteConfig.onBrokenMarkdownLinks == 'throw') { 46 | throw new Error(`Unexpected: sidebar item with href ${href} does not exist.`); 47 | } else { 48 | return globalThis.sidebarItemsMap['/general/']; // TODO: route to 404 49 | } 50 | } 51 | 52 | return globalThis.sidebarItemsMap[href]; 53 | } 54 | -------------------------------------------------------------------------------- /src/token_distribution/data.csv: -------------------------------------------------------------------------------- 1 | T [months],Strategic Partners & Reserve,Community & Ecosystem,Foundation,Core Contributors,Backers 2 | 0,12500000,370000000,250000000,0,759000000 3 | 3,0,0,0,0,0 4 | 6,12500000,0,0,0,0 5 | 9,12500000,0,0,0,0 6 | 12,12500000,407000000,0,300000000,759000000 7 | 15,12500000,0,0,150000000,0 8 | 18,12500000,370000000,0,150000000,782000000 9 | 21,12500000,37000000,0,150000000,0 10 | 24,12500000,37000000,100000000,150000000,0 11 | 27,12500000,37000000,0,150000000,0 12 | 30,12500000,37000000,0,150000000,0 13 | 33,12500000,18500000,0,140000000,0 14 | 36,12500000,18500000,25000000,140000000,0 15 | 39,12500000,18500000,0,140000000,0 16 | 42,12500000,18500000,0,140000000,0 17 | 45,12500000,18500000,0,120000000,0 18 | 48,12500000,18500000,25000000,120000000,0 19 | 51,12500000,18500000,25000000,0,0 20 | 54,12500000,18500000,25000000,0,0 21 | 57,12500000,18500000,25000000,0,0 22 | 60,12500000,18500000,25000000,0,0 23 | 63,12500000,18500000,25000000,0,0 24 | 66,12500000,18500000,25000000,0,0 25 | 69,12500000,18500000,25000000,0,0 26 | 72,12500000,18500000,25000000,0,0 27 | 75,12500000,18500000,25000000,0,0 28 | 78,12500000,18500000,25000000,0,0 29 | 81,12500000,18500000,25000000,0,0 30 | 84,12500000,18500000,25000000,0,0 31 | 87,12500000,18500000,25000000,0,0 32 | 90,12500000,18500000,25000000,0,0 33 | 93,12500000,18500000,25000000,0,0 34 | 96,12500000,18500000,25000000,0,0 35 | 99,12500000,18500000,25000000,0,0 36 | 102,12500000,18500000,25000000,0,0 37 | 105,12500000,18500000,25000000,0,0 38 | 108,12500000,18500000,25000000,0,0 39 | 111,12500000,18500000,25000000,0,0 40 | 114,12500000,18500000,25000000,0,0 41 | 117,12500000,18500000,25000000,0,0 42 | 120,12500000,18500000,25000000,0,0 43 | -------------------------------------------------------------------------------- /src/token_distribution/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "months": [ 3 | 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 4 | 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 5 | 114, 117, 120 6 | ], 7 | "strategicPartnersAndReserve": [ 8 | 12500000, 0, 12500000, 12500000, 12500000, 12500000, 12500000, 12500000, 9 | 12500000, 12500000, 12500000, 12500000, 12500000, 12500000, 12500000, 10 | 12500000, 12500000, 12500000, 12500000, 12500000, 12500000, 12500000, 11 | 12500000, 12500000, 12500000, 12500000, 12500000, 12500000, 12500000, 12 | 12500000, 12500000, 12500000, 12500000, 12500000, 12500000, 12500000, 13 | 12500000, 12500000, 12500000, 12500000, 12500000 14 | ], 15 | "communityAndEcosystem": [ 16 | 370000000, 0, 0, 0, 407000000, 0, 370000000, 37000000, 37000000, 37000000, 17 | 37000000, 18500000, 18500000, 18500000, 18500000, 18500000, 18500000, 18 | 18500000, 18500000, 18500000, 18500000, 18500000, 18500000, 18500000, 19 | 18500000, 18500000, 18500000, 18500000, 18500000, 18500000, 18500000, 20 | 18500000, 18500000, 18500000, 18500000, 18500000, 18500000, 18500000, 21 | 18500000, 18500000, 18500000 22 | ], 23 | "foundation": [ 24 | 250000000, 0, 0, 0, 0, 0, 0, 0, 100000000, 0, 0, 0, 25000000, 0, 0, 0, 25 | 25000000, 25000000, 25000000, 25000000, 25000000, 25000000, 25000000, 26 | 25000000, 25000000, 25000000, 25000000, 25000000, 25000000, 25000000, 27 | 25000000, 25000000, 25000000, 25000000, 25000000, 25000000, 25000000, 28 | 25000000, 25000000, 25000000, 25000000 29 | ], 30 | "coreContributors": [ 31 | 0, 0, 0, 0, 300000000, 150000000, 150000000, 150000000, 150000000, 150000000, 32 | 150000000, 140000000, 140000000, 140000000, 140000000, 120000000, 120000000, 33 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 34 | ], 35 | "backers": [ 36 | 759000000, 0, 0, 0, 759000000, 0, 782000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 38 | ] 39 | } 40 | -------------------------------------------------------------------------------- /src/token_distribution/monthly_data.json: -------------------------------------------------------------------------------- 1 | { 2 | "months": [ 3 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 4 | 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 5 | 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 6 | 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 7 | 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 8 | 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 9 | 113, 114, 115, 116, 117, 118, 119, 120, 121, 122 10 | ], 11 | "strategicPartnersAndReserve": [ 12 | 12500000, 0, 0, 0, 0, 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 0, 13 | 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 14 | 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 15 | 0, 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 0, 16 | 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 17 | 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 18 | 0, 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 0, 19 | 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 20 | 0, 12500000, 0, 0, 12500000, 0, 0, 12500000, 0, 0 21 | ], 22 | "communityAndEcosystem": [ 23 | 370000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 407000000, 0, 0, 0, 0, 0, 24 | 370000000, 0, 0, 37000000, 0, 0, 37000000, 0, 0, 37000000, 0, 0, 37000000, 25 | 0, 0, 18500000, 0, 0, 18500000, 0, 0, 18500000, 0, 0, 18500000, 0, 0, 26 | 18500000, 0, 0, 18500000, 0, 0, 18500000, 0, 0, 18500000, 0, 0, 18500000, 0, 27 | 0, 18500000, 0, 0, 18500000, 0, 0, 18500000, 0, 0, 18500000, 0, 0, 18500000, 28 | 0, 0, 18500000, 0, 0, 18500000, 0, 0, 18500000, 0, 0, 18500000, 0, 0, 29 | 18500000, 0, 0, 18500000, 0, 0, 18500000, 0, 0, 18500000, 0, 0, 18500000, 0, 30 | 0, 18500000, 0, 0, 18500000, 0, 0, 18500000, 0, 0, 18500000, 0, 0, 18500000, 31 | 0, 0, 18500000, 0, 0, 18500000, 0, 0 32 | ], 33 | "foundation": [ 34 | 250000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35 | 0, 100000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25000000, 0, 0, 0, 0, 0, 0, 36 | 0, 0, 0, 0, 0, 25000000, 0, 0, 25000000, 0, 0, 25000000, 0, 0, 25000000, 0, 37 | 0, 25000000, 0, 0, 25000000, 0, 0, 25000000, 0, 0, 25000000, 0, 0, 25000000, 38 | 0, 0, 25000000, 0, 0, 25000000, 0, 0, 25000000, 0, 0, 25000000, 0, 0, 39 | 25000000, 0, 0, 25000000, 0, 0, 25000000, 0, 0, 25000000, 0, 0, 25000000, 0, 40 | 0, 25000000, 0, 0, 25000000, 0, 0, 25000000, 0, 0, 25000000, 0, 0, 25000000, 41 | 0, 0, 25000000, 0, 0, 25000000, 0, 0 42 | ], 43 | "coreContributors": [ 44 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 300000000, 0, 0, 150000000, 0, 0, 45 | 150000000, 0, 0, 150000000, 0, 0, 150000000, 0, 0, 150000000, 0, 0, 46 | 150000000, 0, 0, 140000000, 0, 0, 140000000, 0, 0, 140000000, 0, 0, 47 | 140000000, 0, 0, 120000000, 0, 0, 120000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 51 | ], 52 | "backers": [ 53 | 759000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 759000000, 0, 0, 0, 0, 0, 54 | 782000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58 | 0, 0, 0, 0, 0, 0, 0 59 | ], 60 | "labels": { 61 | "coreContributors": "Core Contributors", 62 | "backers": "Backers", 63 | "foundation": "Foundation Endowment", 64 | "communityAndEcosystem": "Community & Ecosystem", 65 | "strategicPartnersAndReserve": "Strategic Partners & Reserve", 66 | "stakingRewards": "Staking Rewards" 67 | }, 68 | "colors": { 69 | "coreContributors": "#4f78ee", 70 | "backers": "#f04a3c", 71 | "foundation": "#fbc339", 72 | "communityAndEcosystem": "#00ab5b", 73 | "strategicPartnersAndReserve": "#ff7426", 74 | "stakingRewards": "#36bbc5" 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /src/token_distribution/pie/Chart.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import PlotlyChart from '@site/src/PlotlyChart'; 3 | import FallbackSvg from '!!file-loader!./fallback.svg'; 4 | 5 | import type { PlotlyDataLayoutConfig } from 'plotly.js-basic-dist'; 6 | 7 | import data from '../monthly_data.json'; 8 | 9 | const sum = (values: number[]) => { 10 | return values.reduce((acc, value) => acc + value, 0); 11 | }; 12 | 13 | const FinalDistributionPieChart = () => { 14 | const chart: PlotlyDataLayoutConfig = { 15 | data: [ 16 | { 17 | values: [ 18 | sum(data.coreContributors), 19 | sum(data.backers), 20 | sum(data.foundation), 21 | sum(data.communityAndEcosystem), 22 | sum(data.strategicPartnersAndReserve), 23 | 2_350_000_000, 24 | ], 25 | labels: [ 26 | data.labels.coreContributors, 27 | data.labels.backers, 28 | data.labels.foundation, 29 | data.labels.communityAndEcosystem, 30 | data.labels.strategicPartnersAndReserve, 31 | data.labels.stakingRewards, 32 | ], 33 | type: 'pie', 34 | marker: { 35 | colors: [ 36 | data.colors.coreContributors, 37 | data.colors.backers, 38 | data.colors.foundation, 39 | data.colors.communityAndEcosystem, 40 | data.colors.strategicPartnersAndReserve, 41 | data.colors.stakingRewards, 42 | ], 43 | }, 44 | textinfo: 'label+percent', 45 | textposition: 'outside', 46 | automargin: true, 47 | }, 48 | ], 49 | 50 | layout: { 51 | title: { 52 | text: 'Token Distribution', 53 | font: { 54 | size: 20, 55 | }, 56 | x: 0.05, 57 | yref: 'container', 58 | y: 0.95, 59 | }, 60 | margin: { 61 | t: 50, 62 | b: 50, 63 | l: 0, 64 | r: 0, 65 | }, 66 | showlegend: false, 67 | }, 68 | 69 | config: { 70 | }, 71 | }; 72 | 73 | // To generate fallback.svg: 74 | // const PlotlyBasic: typeof import('plotly.js-basic-dist') = require('plotly.js-basic-dist'); 75 | // PlotlyBasic.downloadImage(chart, { filename: 'fallback', format:'svg', width: 960, height: 400 }); 76 | 77 | return ; 78 | }; 79 | 80 | export default FinalDistributionPieChart; 81 | -------------------------------------------------------------------------------- /static/fonts/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/static/fonts/Roboto-Medium.ttf -------------------------------------------------------------------------------- /static/fonts/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/static/fonts/Roboto-Regular.ttf -------------------------------------------------------------------------------- /static/fonts/RobotoMono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oasisprotocol/docs/fce41bce5cd368b9f0a2c45f32c1d91d0d648d64/static/fonts/RobotoMono-Regular.ttf -------------------------------------------------------------------------------- /static/img/by.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /static/img/cc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /static/img/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@docusaurus/tsconfig", 3 | "compilerOptions": { 4 | "jsx": "react", 5 | "resolveJsonModule": true, 6 | "allowSyntheticDefaultImports": true, 7 | "strict": true, 8 | 9 | "baseUrl": ".", 10 | "paths": { 11 | "@site/*": ["./*"] 12 | }, 13 | }, 14 | } 15 | --------------------------------------------------------------------------------