From 64e6875217ee3709e2542b73f6a7d082fcad8552 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Thu, 24 Nov 2022 11:45:21 +0100 Subject: [PATCH 001/193] Tokens in Android wallet --- source/mainnet/net/guides/tokens.rst | 64 +++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/tokens.rst b/source/mainnet/net/guides/tokens.rst index 86b2578308..3930fb8b07 100644 --- a/source/mainnet/net/guides/tokens.rst +++ b/source/mainnet/net/guides/tokens.rst @@ -5,7 +5,7 @@ Tokens in the wallet ======================== -You can add, inspect, and send tokens in the |bw|. +You can add, inspect, and send tokens in the |bw| and |mw-gen2| for Android devices. .. dropdown:: |bw| @@ -69,6 +69,68 @@ You can add, inspect, and send tokens in the |bw|. #. Click **Finish**. +.. driodiwb:: |mw-gen2| for Android + + To access tokens and token transactions, click Tokens |token-bw|. Tabs appear for tokens. + + .. dropdown:: Add tokens + + #. Click **Manage**. + + .. image:: ../images/browser-wallet/manage-tokens.png + :width: 50% + + #. Enter a smart contract address on which to look for tokens. Click **Look for tokens**. If you get an error this means that the smart contract doesn’t exist, the smart contract doesn’t live up to the CIS-2 standard, or the smart contract doesn’t contain any tokens. + + .. image:: ../images/browser-wallet/add-token-contract.png + :width: 50% + + #. Select the token(s) you want to add. You can click on a token to see more information about it and then click **X** to return to the list to select tokens. You can also search by token ID at the top of the screen. Click **Add tokens** once you have made your selection(s). + + .. image:: ../images/browser-wallet/select-tokens.png + :width: 50% + + If you have purchased tokens on a marketplace, you can add the tokens to your wallet from the dApp or service so you do not have to go through the steps above. The screen below appears when the purchase is triggered and your wallet is connected. Click **Add selected** to add the selected tokens to your wallet. + + .. image:: ../images/browser-wallet/add-tokens.png + :width: 50% + + .. Note:: + + You can add NFTs that are not owned by your account to your wallet. This does not mean that you have ownership of the NFT. + + Once the tokens are added you can see them on the relevant tab. + + An easy way to see how this works is to use the `wCCD example dApp hosted by Concordium `_. Connect it to your |bw| and convert some CCD to wrapped CCD. When you do this, you get the a smart contract index. You can then use this smart contract index to search for tokens on the contract and add them to your |bw|. + + .. dropdown:: Inspect tokens + + Click the tab for the type of token that you want to inspect. Then click on the token to see details for that token. + + You can click **Show raw metadata** to see the raw metadata for the token. You can also click **Don't show token in wallet** if you don't want the token to appear in your wallet. + + .. dropdown:: Send tokens + + #. Click Send |send-bw| in the Accounts overview. + + #. Click the field for what to send. + + .. image:: ../images/browser-wallet/send-tokens-select.png + :width: 25% + + .. image:: ../images/browser-wallet/send-tokens-select2.png + :width: 25% + + #. In the amount field enter the amount of the token you want to send. The number of decimal places depends on the token. To find the number of decimal places, you can click on the token as described in Inspect tokens. + + #. Add the receiver address. + + #. Click **Continue**. + + #. Review the transaction. When satisfied, click **Send**. + + #. Click **Finish**. + .. Warning:: If you had previously configured your wallet to be able to view selected tokens and you recover your wallet, the tokens will not be recovered. You must add the tokens again to view them in your wallet. From 73285cf0a1fb0d09773f8bd7e40521bb064ac9cf Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Thu, 1 Dec 2022 14:41:38 +0100 Subject: [PATCH 002/193] Added section about removing tokens. --- source/mainnet/net/guides/tokens.rst | 30 ++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/source/mainnet/net/guides/tokens.rst b/source/mainnet/net/guides/tokens.rst index 3930fb8b07..b50712772a 100644 --- a/source/mainnet/net/guides/tokens.rst +++ b/source/mainnet/net/guides/tokens.rst @@ -28,7 +28,7 @@ You can add, inspect, and send tokens in the |bw| and |mw-gen2| for Android devi .. image:: ../images/browser-wallet/select-tokens.png :width: 50% - If you have purchased tokens on a marketplace, you can add the tokens to your wallet from the dApp or service so you do not have to go through the steps above. The screen below appears when the purchase is triggered and your wallet is connected. Click **Add selected** to add the selected tokens to your wallet. + If you have purchased tokens on a marketplace, it can suggest tokens to be added directly without going through the steps above. In this case the screen below appears when your wallet is connected and the service suggests the tokens to be added. Click **Add selected** to add the selected tokens to your wallet. .. image:: ../images/browser-wallet/add-tokens.png :width: 50% @@ -90,7 +90,7 @@ You can add, inspect, and send tokens in the |bw| and |mw-gen2| for Android devi .. image:: ../images/browser-wallet/select-tokens.png :width: 50% - If you have purchased tokens on a marketplace, you can add the tokens to your wallet from the dApp or service so you do not have to go through the steps above. The screen below appears when the purchase is triggered and your wallet is connected. Click **Add selected** to add the selected tokens to your wallet. + If you have purchased tokens on a marketplace, it can suggest tokens to be added directly without going through the steps above. In this case the screen below appears when your wallet is connected and the service suggests the tokens to be added. Click **Add selected** to add the selected tokens to your wallet. .. image:: ../images/browser-wallet/add-tokens.png :width: 50% @@ -105,15 +105,15 @@ You can add, inspect, and send tokens in the |bw| and |mw-gen2| for Android devi .. dropdown:: Inspect tokens - Click the tab for the type of token that you want to inspect. Then click on the token to see details for that token. + Tap on the tab for the type of token that you want to inspect. Then tap on the token to see details for that token. - You can click **Show raw metadata** to see the raw metadata for the token. You can also click **Don't show token in wallet** if you don't want the token to appear in your wallet. + You can tap **Show raw metadata** to see the raw metadata for the token. You can also tap **Don't show token in wallet** if you don't want the token to appear in your wallet. .. dropdown:: Send tokens - #. Click Send |send-bw| in the Accounts overview. + #. Tap Send |send-bw| in the Accounts overview. - #. Click the field for what to send. + #. Tap the field for what to send. .. image:: ../images/browser-wallet/send-tokens-select.png :width: 25% @@ -121,15 +121,25 @@ You can add, inspect, and send tokens in the |bw| and |mw-gen2| for Android devi .. image:: ../images/browser-wallet/send-tokens-select2.png :width: 25% - #. In the amount field enter the amount of the token you want to send. The number of decimal places depends on the token. To find the number of decimal places, you can click on the token as described in Inspect tokens. + #. In the amount field enter the amount of the token you want to send. The number of decimal places depends on the token. To find the number of decimal places, you can inspect the token as described in Inspect tokens. #. Add the receiver address. - #. Click **Continue**. + #. Tap **Continue**. - #. Review the transaction. When satisfied, click **Send**. + #. Review the transaction. When satisfied, tap **Send**. - #. Click **Finish**. + #. Tap **Finish**. + + .. dropdown:: Remove tokens + + If you do not want the token to appear in your wallet you can remove it. This does not change the ownership of the token. + + There are two ways to remove tokens. + + 1. Tap on the tab for the token type and then tap on the token you want to remove. Tap **Don't show token in wallet**. + + 2. Tap the **Manage** tab. Search for the token by the Contract index. Once the tokens on the contract are shown the tokens that are in your account have a checkmark next to them. Remove the check and tap **Update tokens**. .. Warning:: From e6c0d15f4a8ef20828119a01ce5b348fa66b9d1d Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Tue, 10 Jan 2023 14:23:54 +0100 Subject: [PATCH 003/193] Updates to wording --- source/mainnet/net/guides/tokens.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/mainnet/net/guides/tokens.rst b/source/mainnet/net/guides/tokens.rst index e8172d7fe2..52ac0d45dc 100644 --- a/source/mainnet/net/guides/tokens.rst +++ b/source/mainnet/net/guides/tokens.rst @@ -81,26 +81,26 @@ You can add, inspect, and send tokens in the |bw| and |mw-gen2| for Android devi .. dropdown:: |mw-gen2| for Android - To access tokens and token transactions, click Tokens |token-bw|. Tabs appear for tokens. + To access tokens and token transactions, tap Tokens |token-bw|. Tabs appear for tokens. .. dropdown:: Add tokens - #. Click **Manage**. + #. Tap **Manage**. .. image:: ../images/browser-wallet/manage-tokens.png :width: 50% - #. Enter a smart contract address on which to look for tokens. Click **Look for tokens**. If you get an error this means that the smart contract doesn’t exist, the smart contract doesn’t live up to the CIS-2 standard, or the smart contract doesn’t contain any tokens. + #. Enter a smart contract address on which to look for tokens. Tap **Look for tokens**. If you get an error this means that the smart contract doesn’t exist, the smart contract doesn’t live up to the CIS-2 standard, or the smart contract doesn’t contain any tokens. .. image:: ../images/browser-wallet/add-token-contract.png :width: 50% - #. Select the token(s) you want to add. You can click on a token to see more information about it and then click **X** to return to the list to select tokens. You can also search by token ID at the top of the screen. Click **Add tokens** once you have made your selection(s). + #. Select the token(s) you want to add. You can tap on a token to see more information about it and then tap **X** to return to the list to select tokens. You can also search by token ID at the top of the screen. Tap **Add tokens** once you have made your selection(s). .. image:: ../images/browser-wallet/select-tokens.png :width: 50% - If you have purchased tokens on a marketplace, it can suggest tokens to be added directly without going through the steps above. In this case the screen below appears when your wallet is connected and the service suggests the tokens to be added. Click **Add selected** to add the selected tokens to your wallet. + If you have purchased tokens on a marketplace, it can suggest tokens to be added directly without going through the steps above. In this case the screen below appears when your wallet is connected and the service suggests the tokens to be added. Tap **Add selected** to add the selected tokens to your wallet. .. image:: ../images/browser-wallet/add-tokens.png :width: 50% @@ -111,7 +111,7 @@ You can add, inspect, and send tokens in the |bw| and |mw-gen2| for Android devi Once the tokens are added you can see them on the relevant tab. - An easy way to see how this works is to use the `wCCD example dApp hosted by Concordium `_. Connect it to your |bw| and convert some CCD to wrapped CCD. When you do this, you get the a smart contract index. You can then use this smart contract index to search for tokens on the contract and add them to your |bw|. + An easy way to see how this works is to use the `wCCD example dApp hosted by Concordium `_. Connect it to your |mw-gen2| and convert some CCD to wrapped CCD. When you do this, you get the a smart contract index. You can then use this smart contract index to search for tokens on the contract and add them to your |mw-gen2|. .. dropdown:: Inspect tokens From 54dd50581961905b0b420dcc410f8d6b2bab52aa Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Mon, 13 Mar 2023 10:06:55 +0100 Subject: [PATCH 004/193] WalletConnect for iOS --- source/mainnet/net/browser-wallet/connect-app.rst | 4 ---- source/mainnet/net/guides/dapp-examples.rst | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/source/mainnet/net/browser-wallet/connect-app.rst b/source/mainnet/net/browser-wallet/connect-app.rst index ad3b209fd3..15290134b0 100644 --- a/source/mainnet/net/browser-wallet/connect-app.rst +++ b/source/mainnet/net/browser-wallet/connect-app.rst @@ -31,10 +31,6 @@ You can connect the |bw| and |mw-gen2| to a `dApp `__ -to implement integrations to the |bw| and |mw-gen2| on Android devices using WalletConnect. +to implement integrations to the |bw| and |mw-gen2| using WalletConnect. From bacb1428a671deeef61a9f49fb8baae30413cc63 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Wed, 19 Apr 2023 10:02:31 +0200 Subject: [PATCH 005/193] iOS 1.0.1 release --- source/mainnet/net/resources/release-notes-mainnet.rst | 9 +++++++++ source/mainnet/net/resources/release-notes.rst | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index bb4caa0190..94275524b9 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -11,6 +11,15 @@ Release notes - Mainnet To subscribe to updates on the Mainnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. +April 27, 2023 + +|mw-gen2| for iOS 1.0.1 +------------------------------- + +The terms and conditions have been updated and now point to a link where you can read the updated terms and conditions before accepting. Additionally, when the terms and conditions have been updated, you will be prompted to accept them again. + +Also, a minor change was made to support integration with eID verifiers. + April 12, 2023 Cargo concordium 2.7.1 diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index 169357e8a7..97868ab2c5 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -11,6 +11,15 @@ Release Notes - Testnet To subscribe to updates on the Testnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. +April 27, 2023 + +|mw-gen2| for iOS 1.0.1 +------------------------------- + +The terms and conditions have been updated and now point to a link where you can read the updated terms and conditions before accepting. Additionally, when the terms and conditions have been updated, you will be prompted to accept them again. + +Also, a minor change was made to support integration with eID verifiers. + April 12, 2023 Cargo concordium 2.7.1 From 95a635fa3c8cdf5377ba165e1a77faa1ed5dae3c Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Wed, 19 Apr 2023 10:28:46 +0200 Subject: [PATCH 006/193] Updates to add veriff crash issue --- source/mainnet/net/resources/release-notes-mainnet.rst | 4 +++- source/mainnet/net/resources/release-notes.rst | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index 94275524b9..74275c8a7b 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -18,7 +18,9 @@ April 27, 2023 The terms and conditions have been updated and now point to a link where you can read the updated terms and conditions before accepting. Additionally, when the terms and conditions have been updated, you will be prompted to accept them again. -Also, a minor change was made to support integration with eID verifiers. +A minor change to the identity user interface was made to support integration with eID verifiers. + +Fixed a crash caused by a change implemented by identity provider Notabene where the user is asked for access to the microphone, and if denied, crashed the app. Microphone access is required by the identity provider for proof-of-life. April 12, 2023 diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index 97868ab2c5..ad5fcbb1c0 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -20,6 +20,8 @@ The terms and conditions have been updated and now point to a link where you can Also, a minor change was made to support integration with eID verifiers. +Fixed a crash caused by a change implemented by identity provider Notabene where the user is asked for access to the microphone, and if denied, crashed the app. Microphone access is required by the identity provider for proof-of-life. + April 12, 2023 Cargo concordium 2.7.1 From 4f8d8f137124842748f7838b2fc6058957e9ab56 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Fri, 21 Apr 2023 13:52:58 +0200 Subject: [PATCH 007/193] Add .NET SDK to grpc2 --- source/mainnet/net/references/grpc2.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/references/grpc2.rst b/source/mainnet/net/references/grpc2.rst index 70885eaa4f..48b8ca8018 100644 --- a/source/mainnet/net/references/grpc2.rst +++ b/source/mainnet/net/references/grpc2.rst @@ -26,7 +26,7 @@ through an SDK. However the new interface makes it substantially easier to build an SDK since there is a canonical schema of responses. At present the `Concordium Rust SDK -`_, `Concordium Javascript (Node / Web) SDK `_, and `Rosetta `__ have support for the new +`_, `Concordium Javascript (Node / Web) SDK `_, `.NET SDK `__ and `Rosetta `__ have support for the new interface. Other SDKs will be migrated in the future, before the V1 interface is deprecated. From c6c85c7f504ce7caefa3ceb7f7b6cc6201df6c8c Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Mon, 24 Apr 2023 13:35:51 +0200 Subject: [PATCH 008/193] Q2 documentation refactoring --- .../net/desktop-wallet/accounts-desktop.rst | 85 +----- source/mainnet/net/desktop-wallet/index.rst | 18 -- .../desktop-wallet/single-sign-schedule.rst | 4 + source/mainnet/net/guides/address-book.rst | 15 +- .../net/guides/change-account-name.rst | 7 + .../mainnet/net/guides/company-identities.rst | 2 +- source/mainnet/net/guides/create-account.rst | 7 + source/mainnet/net/guides/deciding-wallet.rst | 2 +- .../mainnet/net/guides/overview-desktop.rst | 3 + .../net/guides/overview-shared-accounts.rst | 2 +- source/mainnet/net/guides/recovery.rst | 36 +++ source/mainnet/net/guides/run-node-macos.rst | 4 +- .../mainnet/net/guides/run-node-windows.rst | 4 +- .../mainnet/net/guides/scheduled-release.rst | 16 ++ .../mainnet/net/guides/transaction-report.rst | 31 +++ .../images/desktop-wallet/dw-change-pw.png | Bin 0 -> 47992 bytes .../desktop-wallet/dw-settings-button.png | Bin 0 -> 4190 bytes source/mainnet/net/index.rst | 29 +- .../net/installation/downloads-testnet.rst | 224 ---------------- source/mainnet/net/installation/downloads.rst | 249 +++++++++++++----- .../net/mobile-wallet/change-passcode-mw.rst | 18 +- .../inspect-release-schedule-mw.rst | 2 - source/mainnet/net/nodes/run-node-ubuntu.rst | 2 +- .../net/release-notes/release-notes-lp.rst | 68 +++++ .../release-notes-mainnet.rst | 2 + .../release-notes.rst | 2 + .../net/resources/ccd-scan-accounts.rst | 3 + .../mainnet/net/resources/ccd-scan-blocks.rst | 2 + .../mainnet/net/resources/ccd-scan-nodes.rst | 2 + .../net/resources/ccd-scan-staking.rst | 5 + .../net/resources/ccd-scan-transactions.rst | 3 + source/mainnet/net/resources/ccd-scan.rst | 2 + .../smart-contracts-v0/sc-v0-rollup.rst | 17 ++ .../smart-contracts/guides/quick-start.rst | 6 +- .../smart-contracts/tutorials/setup-env.rst | 4 +- .../tutorials/wCCD/wCCD-front-end-set-up.rst | 2 +- source/mainnet/variables.rst | 5 + 37 files changed, 464 insertions(+), 419 deletions(-) delete mode 100644 source/mainnet/net/desktop-wallet/index.rst create mode 100644 source/mainnet/net/guides/recovery.rst create mode 100644 source/mainnet/net/guides/scheduled-release.rst create mode 100644 source/mainnet/net/guides/transaction-report.rst create mode 100644 source/mainnet/net/images/desktop-wallet/dw-change-pw.png create mode 100644 source/mainnet/net/images/desktop-wallet/dw-settings-button.png delete mode 100644 source/mainnet/net/installation/downloads-testnet.rst create mode 100644 source/mainnet/net/release-notes/release-notes-lp.rst rename source/mainnet/net/{resources => release-notes}/release-notes-mainnet.rst (99%) rename source/mainnet/net/{resources => release-notes}/release-notes.rst (99%) create mode 100644 source/mainnet/smart-contracts-v0/sc-v0-rollup.rst diff --git a/source/mainnet/net/desktop-wallet/accounts-desktop.rst b/source/mainnet/net/desktop-wallet/accounts-desktop.rst index 3683762b0a..1ec7d8717a 100644 --- a/source/mainnet/net/desktop-wallet/accounts-desktop.rst +++ b/source/mainnet/net/desktop-wallet/accounts-desktop.rst @@ -1,15 +1,16 @@ .. _overview-account-desktop: -====================== -Use the Desktop Wallet -====================== +====================================== +Desktop Wallet navigation and settings +====================================== This topic describes the information and the tasks that are available in the Desktop Wallet. To learn more about creating accounts, see :ref:`Create an account in the Desktop Wallet `. To view information about an account, go to **Accounts** and select the relevant account. At the top of the window you see the following: .. image:: ../images/desktop-wallet/dw-wallet-totals.png + :alt: area in desktop wallet showing totals - **Wallet total** shows the total amount of CCDs in all accounts in this wallet, including shielded balances and CCDs that are scheduled to be released to your account on a future date. @@ -28,6 +29,7 @@ The most common tasks on an account are: In the account card in the accounts list, you can see the following information: .. image:: ../images/desktop-wallet/dw-acct-card-in-list.png + :alt: example of account card with information, baking icon, ledger icon shown - The **Account Total** shows the total number of CCDs on the account, which includes the CCDs that are available and any staked CCDs or shielded CCDs. It also includes CCDs that are scheduled to be released to your account on a future date. @@ -42,6 +44,7 @@ In the account card in the accounts list, you can see the following information: In addition, you can see the following information about the selected account on the **Balance** tab in the account details: .. image:: ../images/desktop-wallet/dw-balance-details.png + :alt: dark screen showing balance details for one account - The **Balance Total** shows the total number of CCD on the account, which includes the CCD that is available and any staked CCD or CCDs that are scheduled to be released to your account on a future date. It does *not* include shielded CCDs. @@ -66,14 +69,17 @@ More options When you select **Account list** at the top of the window, the button name toggles to **More options**. .. image:: ../images/desktop-wallet/dw-screen-toggle.png + :alt: wallet balance area with account list button shown **Account list** toggles to **More options**. .. image:: ../images/desktop-wallet/dw-screen-toggle2.png + :alt: wallet balance area with more options button shown You'll see a variety of information in **More options** about your account and a number of tasks you can perform: .. image:: ../images/desktop-wallet/dw-account-menu-regular.png + :alt: dark account balance area with actions shown on a gray area below that on rectangular buttons - **Transaction log**. View a list of transactions on the account. Use **Filters** to specify which transaction types you want to be displayed in the **Transfers** list. See :ref:`Apply a transaction log filter `. @@ -93,46 +99,6 @@ You'll see a variety of information in **More options** about your account and a - **Register as a delegator**: Register the account as a delegator. See :ref:`Delegation` for information about delegation. If you are already delegating, you'll see **Delegation** which contains a list of options for managing delegation. -Edit account name ------------------ - -You can edit the name of the account. Click |edit| to edit the account name. Click |save| to save the change. - -.. image:: ../images/desktop-wallet/dw-edit-account-name.png - -.. |edit| image:: ../images/edit.png - :width: 20px - :alt: small square with pencil -.. |save| image:: ../images/save.png - :width: 20px - :alt: check mark - -Set default account -------------------- - -To make the currently selected account the default account, click the star icon. Setting this means that this will be the account initially visible when opening the account page. - -.. image:: ../images/desktop-wallet/dw-favorite-account.png - -.. _dw-address-book: - -Address book overview -===================== - -The address book is where you can see all addresses of accounts that you've created in or imported into the Desktop Wallet (1). In addition, you have the option of adding accounts (5), for example, if you want to send CCD from the desktop wallet to addresses on the mobile wallet. - -.. image:: ../images/desktop-wallet/dw-address-book.png - -- When you select a recipient, the recipient's account address is displayed as well as any notes that you’ve added (2). - -- To copy an address, select the **Copy** icon to the right of the address (4). - -- To add a note, select the **Edit** icon (3), add your note, and then select **Save recipient**. - -- To add an address, select the plus sign in the upper right corner (5). Enter the name of the recipient, paste the account address, optionally add a note, and then select **Save recipient**. The account address could, for example, be an account address that you've copied from the Mobile Wallet or that somebody sent you. - -- To find a specific recipient among a long list of recipients, use the search function (6). - Desktop Wallet settings ======================= @@ -158,18 +124,6 @@ Here you specify which node on the blockchain that you want to connect to. You can run a node using :ref:`Windows`, :ref:`macOS `, and :ref:`with Docker ` or :ref:`a Debian package ` on Linux. -Change wallet password ----------------------- - -On the this page, you can update the existing password for the Desktop Wallet, providing that you remember the current password. - -Concordium strongly recommends that you create a backup of your Desktop Wallet database to ensure that you can recover your accounts, identities, and addresses if, for example, you lose the password to the Desktop Wallet. For more information, see :ref:`Make a backup of identities, accounts, and addresses `. - -Recover existing accounts -------------------------- - -If you lose your accounts, you can recover the accounts by using the LEDGER device that you used to create the accounts. You only have to perform a recovery if you have lost the backup of your accounts and identities. For more information, see `Account recovery `_. - Terms and conditions -------------------- @@ -180,24 +134,3 @@ To view the latest version of the *License notices* and *Terms and conditions fo - On Linux, press **Alt** to display the menu bar, and then in the **Help** menu, choose the document you want to view. - On macOS, select **Help** in the menu bar, and then choose the document you want to view. - - -Make an account report -====================== - -When you select an account, you can see a list of all transfers in and out of the account. However, if you need a more structured view of the transfers or, for example, want to compare transfers on different accounts, you have the option of creating an account report. The report is saved as a CSV file on your computer, and the CSV format enables you to sort and organize the data in a spreadsheet. - -Create a report of transactions on one or more accounts -------------------------------------------------------- - -#. Go to **Accounts** and select the account you want to create a report for. - -#. Select **Change view**, and then select **Make account report**. - -#. Select the time period that you want the report to cover. - -#. Select the transaction types that you want to include in the report. - -#. If you want to include more accounts in the report, select **Add another account** in the right pane, and then select the relevant account. Repeat this step for each account you want to add to the report. - -#. Select **Make account report**. A CSV file with the selected account and types of transactions is generated and stored on your computer. If you have selected multiple accounts, you will get a .zip file containing a .CSV for each account. diff --git a/source/mainnet/net/desktop-wallet/index.rst b/source/mainnet/net/desktop-wallet/index.rst deleted file mode 100644 index b8f409b7e6..0000000000 --- a/source/mainnet/net/desktop-wallet/index.rst +++ /dev/null @@ -1,18 +0,0 @@ -.. _dw-index: - -============== -Desktop Wallet -============== - -The following topics are specific to Desktop Wallet. - -.. toctree:: - :maxdepth: 2 - - ../guides/overview-desktop - accounts-desktop - single-sign-schedule - transaction-log-filter - update-application - reset-data - ../guides/overview-shared-accounts diff --git a/source/mainnet/net/desktop-wallet/single-sign-schedule.rst b/source/mainnet/net/desktop-wallet/single-sign-schedule.rst index 01bbb8dd64..1b9b027bb3 100644 --- a/source/mainnet/net/desktop-wallet/single-sign-schedule.rst +++ b/source/mainnet/net/desktop-wallet/single-sign-schedule.rst @@ -34,11 +34,13 @@ schedule and an explicit schedule. 5. Select the recipient and select **Continue**. .. image:: ../images/desktop-wallet/dw-send-ccd-schedule.png + :alt: transaction screen with amount for scheduled transfer Option 1: Create a regular interval schedule -------------------------------------------- .. image:: ../images/desktop-wallet/dw-send-ccd-regular-interval.png + :alt: transaction screen with amount for scheduled transfer and transfer options #. Select **Regular interval** in **Schedule type**. @@ -68,9 +70,11 @@ Option 2: Create an explicit schedule .. image:: ../images/desktop-wallet/dw-send-ccd-explicit-schedule1.png :width: 35% + :alt: screen with amount for explicit transfer .. image:: ../images/desktop-wallet/dw-send-ccd-explicit-schedule2.png :width: 35% + :alt: screen with amount for explicit transfer and schedule #. Select **Explicit schedule**. For each release you want in the schedule, you have to specify the amount and the release time. diff --git a/source/mainnet/net/guides/address-book.rst b/source/mainnet/net/guides/address-book.rst index db4e94354d..30c4c85a46 100644 --- a/source/mainnet/net/guides/address-book.rst +++ b/source/mainnet/net/guides/address-book.rst @@ -41,7 +41,20 @@ The address book helps you select a recipient quickly for transactions. .. dropdown:: Desktop Wallet - For information about the address book in the Desktop Wallet, see :ref:`Use the Desktop Wallet`. + The address book is where you can see all addresses of accounts that you've created in or imported into the Desktop Wallet (1). In addition, you have the option of adding accounts (5), for example, if you want to send CCD from the desktop wallet to addresses on the mobile wallet. + + .. image:: ../images/desktop-wallet/dw-address-book.png + :alt: address book with single address card shown + + When you select a recipient, the recipient's account address is displayed as well as any notes that you’ve added (2). + + - To copy an address, select the **Copy** icon to the right of the address (4). + + - To add a note, select the **Edit** icon (3), add your note, and then select **Save recipient**. + + - To add an address, select the plus sign in the upper right corner (5). Enter the name of the recipient, paste the account address, optionally add a note, and then select **Save recipient**. The account address could, for example, be an account address that you've copied from the Mobile Wallet or that somebody sent you. + + - To find a specific recipient among a long list of recipients, use the search function (6). .. |wallet-settings| image:: ../images/settings.png :alt: gear wheel diff --git a/source/mainnet/net/guides/change-account-name.rst b/source/mainnet/net/guides/change-account-name.rst index 8de5bc1e30..9995322cff 100644 --- a/source/mainnet/net/guides/change-account-name.rst +++ b/source/mainnet/net/guides/change-account-name.rst @@ -17,6 +17,13 @@ Change account name #. Change the name and click |save| to save the change. +.. dropdown:: Desktop Wallet + + You can edit the name of the account. Click |edit| to edit the account name. Click |save| to save the change. + + .. image:: ../images/desktop-wallet/dw-edit-account-name.png + :alt: dark account balance area with edit button highlighted + .. |hamburger| image:: ../images/hamburger.png :alt: Three horizontal lines :width: 20px diff --git a/source/mainnet/net/guides/company-identities.rst b/source/mainnet/net/guides/company-identities.rst index 28e016df17..48743349e5 100644 --- a/source/mainnet/net/guides/company-identities.rst +++ b/source/mainnet/net/guides/company-identities.rst @@ -70,7 +70,7 @@ The information below describes how to create a company identity. Note that the - ``ip-info-testnet.json`` (public keys of the identity provider) - #. Download ``concordium-client`` for your platform. See :ref:`Downloads` to get the file and checksum. + #. Download ``concordium-client`` for your platform. See :ref:`Downloads` to get the file and checksum. #. To generate a request for an identity object, follow the `generate request instructions `__. Email the ``request.json`` output file to support@concordium.software with the subject line "Test company identity". Store the auxiliary output securely. diff --git a/source/mainnet/net/guides/create-account.rst b/source/mainnet/net/guides/create-account.rst index e564ec4fc9..d71cf9464b 100644 --- a/source/mainnet/net/guides/create-account.rst +++ b/source/mainnet/net/guides/create-account.rst @@ -65,6 +65,13 @@ To learn more about identities and accounts, see :ref:`Identities `. +It’s the :ref:`credentials` on an account that determine who’s allowed to sign transactions. An account credential holds signature verification keys, information related to :ref:`anonymity revocation`, and the public :ref:`attributes` of the account owner. The credential proves that the account owner has been verified by an :ref:`identity provider`, but it doesn’t identify the account owner to the identity provider. However, in the case of a valid request from a government authority via established legal channels, it allows the anonymity revoker and the identity provider, when they work together, to link the account to the users. For more information, see :ref:`Identities and accounts `. Signature threshold =================== diff --git a/source/mainnet/net/guides/recovery.rst b/source/mainnet/net/guides/recovery.rst new file mode 100644 index 0000000000..384260a3f0 --- /dev/null +++ b/source/mainnet/net/guides/recovery.rst @@ -0,0 +1,36 @@ +.. include:: ../../variables.rst +.. _backup-import-recover: + +=================== +Backup and recovery +=================== + +It can be necessary to recover your wallet, for example if you get a new computer or mobile device. It is important to know how you can recover your wallet on a device if necessary. There are differences between what the wallets require for recovery. + + * - Desktop Wallet + - |mw-gen1| + - |mw-gen2| + - |bw| + * - Backup recommended; can recover without backup + - Backup required + - Secret recovery phrase requierd + - Secret recovery phrase required + * - Backup file includes account names and addresses, identities, and the address book. LEDGER device is needed for a full recovery. + - Backup file includes accounts, identities, address book, and private keys. + - Backup is not necessary but secret recovery phrase is needed. + - Backup is not necessary but secret recovery phrase is needed. + * - Private keys are stored on the LEDGER device that is secured by a PIN code and backed up by recovery phrase. + - Private keys are stored in the wallet. + - Private keys are stored in the wallet and backed up by a secret recovery phrase. + - Private keys are stored in the wallet and secured by the passcode used to encrypt the wallet and backed up with the secret recovery phrase. + * - Cannot recover in other wallet types + - Cannot recover in other wallet types + - Can recover in |mw-gen2| and |bw| + - Can recover in |bw| and |mw-gen2| + +.. toctree:: + :hidden: + :maxdepth: 1 + + ../guides/export-import + ../guides/recover-wallet diff --git a/source/mainnet/net/guides/run-node-macos.rst b/source/mainnet/net/guides/run-node-macos.rst index 5c0612f0d3..ca42be0e83 100644 --- a/source/mainnet/net/guides/run-node-macos.rst +++ b/source/mainnet/net/guides/run-node-macos.rst @@ -69,7 +69,7 @@ Install/upgrade and run a node .. Note:: See :ref:`change-node-settings` for information about how to change the service configuration settings. See :ref:`configure-baker-macos` for information about how to set the location of baker credentials. - #. Go to :ref:`Downloads`, and download the latest macOS installer package (.pkg file). + #. Go to :ref:`Downloads`, and download the latest macOS installer package (.pkg file). #. In the folder where you downloaded the .pkg file, double-click the .pkg file. The **Install Concordium Node** program opens. @@ -109,7 +109,7 @@ Install/upgrade and run a node .. Note:: See :ref:`change-node-settings` for information about how to change the service configuration settings. See :ref:`configure-baker-macos` for information about how to set the location of baker credentials. - #. Go to :ref:`Downloads`, and download the latest macOS installer package (.pkg file). + #. Go to :ref:`Downloads`, and download the latest macOS installer package (.pkg file). #. In the folder where you downloaded the .pkg file, double-click the .pkg file. The **Install Concordium Node** program opens. diff --git a/source/mainnet/net/guides/run-node-windows.rst b/source/mainnet/net/guides/run-node-windows.rst index e2dd603719..aae60ce1f8 100644 --- a/source/mainnet/net/guides/run-node-windows.rst +++ b/source/mainnet/net/guides/run-node-windows.rst @@ -60,9 +60,9 @@ Install/upgrade and run a node #. Download the latest Windows Installer package (.msi file). - - For Mainnet go to :ref:`Downloads`. + - For Mainnet go to :ref:`Downloads`. - - For Testnet go to :ref:`Downloads`. + - For Testnet go to :ref:`Downloads`. #. In the folder where you downloaded the .msi file, double-click the .msi file. The **Concordium Node Setup Wizard** opens. Select **Next**. If you see a message saying *Windows protected your PC*, select **More info**, and then select **Run anyway**. diff --git a/source/mainnet/net/guides/scheduled-release.rst b/source/mainnet/net/guides/scheduled-release.rst new file mode 100644 index 0000000000..741799fe66 --- /dev/null +++ b/source/mainnet/net/guides/scheduled-release.rst @@ -0,0 +1,16 @@ +.. include:: ../../variables.rst + +.. _scheduled-release: + +================== +Scheduled releases +================== + +Some transfers contain a release schedule. This means that the CCD in the transfer can be seen on the account, but they are locked until one or more specific points in time. While the funds are locked, they cannot be transferred, but they will be part of the total amount on the account. Scheduled releases can only be created in the Desktop Wallet. You can inspect when funds will be released in Desktop Wallet, |mw-gen2|, and |mw-gen1|. + + +.. toctree:: + :maxdepth: 2 + + ../desktop-wallet/single-sign-schedule + ../mobile-wallet/inspect-release-schedule-mw diff --git a/source/mainnet/net/guides/transaction-report.rst b/source/mainnet/net/guides/transaction-report.rst new file mode 100644 index 0000000000..02e043b4a8 --- /dev/null +++ b/source/mainnet/net/guides/transaction-report.rst @@ -0,0 +1,31 @@ +.. _transaction-report: + +=========================== +Create a transaction report +=========================== + +A transaction report can be useful for tax purposes when you need to know transaction details for reporting. + +.. dropdown:: Desktop wallet + + When you select an account, you can see a list of all transfers in and out of the account. However, if you need a more structured view of the transfers or, for example, want to compare transfers on different accounts, you have the option of creating an account report. The report is saved as a CSV file on your computer, and the CSV format enables you to sort and organize the data in a spreadsheet. + + You can make a report for one or more accounts. + + #. Go to **Accounts** and select the account you want to create a report for. + + #. Select **Change view**, and then select **Make account report**. + + #. Select the time period that you want the report to cover. + + #. Select the transaction types that you want to include in the report. + + #. If you want to include more accounts in the report, select **Add another account** in the right pane, and then select the relevant account. Repeat this step for each account you want to add to the report. + + #. Select **Make account report**. A CSV file with the selected account and types of transactions is generated and stored on your computer. If you have selected multiple accounts, you will get a .zip file containing a .CSV for each account. + + You can also use `CCDScan `__ to generate a CSV file of transactions for an account. For more information, see the :ref:`CCDScan account documentation`. + +.. dropdown:: All other wallets + + For all other wallets, use `CCDScan `__ to export a transaction log to a CSV file. For more information, see the :ref:`CCDScan account documentation`. diff --git a/source/mainnet/net/images/desktop-wallet/dw-change-pw.png b/source/mainnet/net/images/desktop-wallet/dw-change-pw.png new file mode 100644 index 0000000000000000000000000000000000000000..ebeadb861f49b91d7b0c53081235b16d5b141c7b GIT binary patch literal 47992 zcmXtA1zZ%{+g^G_kVQaBN)$wq4(Se&RzMmgq(iz>KqLi8X$e63w%ougjJx|?hnVlt(wC`OP>_Ul+vN}`Xlf3k8de!R#D?ghPURVf2`GWs*%La zx$tJ&@zAP~L}CWEN(WH31xT36hQu1BH4%s&u}j|I7&Xcyv1WGSM>x6h zGrlbSyVJJSn_uJK_LdzyXPM)(C{`lILU0L1s^h~J(4t@Br>&zxX84a&OcPD6ZLcRD zHTak}kiswqPi%%^L+}m+6^B`7d%+fVr8-9D(h??OhidaUiLbjT>bMG)?UUry zx7z#UIogdPWKVc-J8ss;{Cdjr9b)(_YZ1*^gK}Ck)Jg0OOgF{k1AecI>FqrqA_+wMiLjGz-4Sm4&}Z_II8}v? zlh-|_Ty`SQ6%=9yO#cpuk$nnP$KQ9KWz~X>ASdn4;ihVZFi78JAi(Td`y4c2kn<%Tj_I_ma6fKsXGiv4ti$Nc(U3y2 z$v`?cl{^!PeEz7Nj}J;tFin>APN=^u1-AVC+iM#evckl2g$>mE?wHAnxCVXEB{xLd z>4WJGhUd~G?-9!}#Yx;V&Z}50(v~%f(y~2n!tc9^Nyqy{qU)X>s)$JP$$MFOXEu`k$#q8XsnisIe6o1_13LogP;T;g zGT|j@ej(`-Tno2hO(Zt<$U$GEUTYfOPWzXBdpLs{T{uPk230$xW&zAU}Rcp@BL>yM@+IuI+7Q?wSW?=rG}!!E^u5n}Iz< ztZ#$DXHz{S_GRgwfhY+kpL74D4$r2JW|_30Y3E>n)ki41ef|gc`wD8L*svgeroQo# zt^BdcWXD0H#r3a7+oMJs)f|mudorAH1ZLT*+1XbjMCzVBVzqsIILQ%pH$s@cJI)|* zHh-~UF~LZO`3gAj2ZDR1P0Xo-N$t>!)lbmf#WFj-zXX)I)abL?IRwqOrCwGy`grxt zoK?Qx=-_Z}$#FW4y=0to+(<=*O$=|na8e8nI3q;s?odP@%Q2<#Nk}qbp-yHwjejvW zC`%w(4}`HPNi3%DXwg0tDWPKTY+xI!}DQsI!o~!e68%uvKNt6-Qvh17XGp zam&b8tSbp=XvF;-JPvq365R*di!TDQ@qw@f86xkUMFzp$rG1Ke!3I@z^}v^pmT7}+ zzFXEvdD5!S&BY9N$RmPP)hLmzO0p`fT!PB=4GnWHGV%wiYu&Hmfr>BFZyP&*`>NV@ z(trF6t!k|DnnBOwO(0BC!8uJVig0!gI?y}jBhZ*1UX3CwK1i@$ z?eAZy-zs@;^Ec4NYnCN9vwiK{ruRuc>lYp(`t*$ctA|=$XEN54U3PAEdE>Y`E3&0} zutKj3Vl~&vXiUk}MIOr2EniLy4~uGnU#(WTAW9Sat0W5gJYG3cIu3roWT+^4gwJJ4 z`W@*Kr!GA$M)J))9gpFiS4{S8-US<(&PpjOlBoCBl?Vnz6sMJ@uH>E_Nc z))ompeX#5DYWHh4ch<*`Wwf-&KfeE>UA>#SFmsaQ)M4IF_Pgw|fBbp7K()@MXcf&i`Z&jAc4t(Y>%Ho` zyt{7)49P;mJembWvxAydaHC*|=x*ZZZj7y&cfu#QL)Lo~`ZiK#g%?|KuV32xaA;+$ zE%g2j{-cRDYl*@P{A`omGz>T8wqlC=ZRW?!yl%n%3Ug(}JR=IjiE)GjgVp)C>%Jb} zvxaYpmwg7(I1A+}R1Vs-DxPXC;&!~IFXwJwb_I}qdgw{>9kr~vj7$xVn#h^Lve>bo zGU`vrdeXwNT4Uoeorxt+Q>|xO3oK6d^Z3`}ip6Tj` zPOs^bauj2lL?x}=M|v#ZB(rWBO$bB#+PozlJ@-0KW>xRKyb(*c3s9zn5lNXZ z83=62>~ND6yG$2n_l*l1-}(36L9Vdz6+M0@E__Fh0ym8Lx2jH^k!Y-Zt!bPG1z)!s ztCjNaXX_t3B$^d{TH1G? zKiiRODQA0JOoVme#LDC0Z}>-oaXB$V_WfLA)GbRS=tR@`3cB1ywS3V%$Q$^9vh{E*PwBF7xuPZ}H$ z7?r;E4gn7u!U^rEtGh8X|5!)rNnbzL7*(B8m{QCm`umwLt9@SEp~cC}Qnp5`nj|)9 z1IljR+Ty+UD;w5Rv{OA9G7B4-^Pj7p+8DB_JN}F^y~CsUb{KnFM>;@))PMSjeKuAQ zzqw-ETW7uTk!7OOdrYc|X#tGp8B-^X7eg_wsGIABw>utUtroiHpd!$m2Z-YAZ^<0} zt~Qyki~i_oDuy?T_k1XyYA=?nPI)EQ{V^;G2fdJ4`9yayVf)IKZr-f=kxs|#DaL5C z%9_oPWwb_acAq-wSdx`%#oe?~yYX!ybc3Y09Fc6v-5e)rg$7>%8Co1Mg*QR$>(8cA zLkP<&)nl4hQ!IlOq!eC^uXkVAAWD?(4AUs8vIRZKUY3%ZDGgA4w}U!WclS;`6p>E{%~B`ghVWarf%WLd*QsZtq}0Y#S2nwa?=E zDc8|as{;ed@rj?ZggyoCo=r#CR@&q$ajc(-*4Nh~K6K7X*%t8LS42;7R0h&~FGgppuj;I4A+Lbtc+h~6@ zVRkr!KB*i#OFgFgXE2YFls76G8JlA5j=+BS__36im(WKuv%Jf^-MRyV`U5@5!%qX8 z)y1l;cceT#1U~*WoqyIc*~(e3Wo33NWotl7ZNWl)?D!`O3HH?7^m4+qZb-n|UZ!!5 zL@pUZq^^PbLkyz5_huA+`N!dY{!%P)W#vKBcQy|3A}4PvtR6+!y;W$4dQ`{xtw~@? z_Q+Kbt$&!aauH!?jx%U2FfEQoAD_ph_W#l(E)3iZig`D)ab?RLI84|&r<&!IS4CsD zQ0~c>^DxK1$2ZhMyXN0W5+63bog+>(z2T;n$7T^({!vnP{PnQw&(F7> z>#Tk%zWMDf*3`p=%Fv7veEdhL4+ekAB28otYo!}j;I65aH{gp2+DR_eTRyEc{Cr*; zWl3)uUv^t$N}5LXcUdsHpM#^#%-K1) zC1=2aDeet&4SCBzaP>21zgaoab7O?`wnCLP{-Vsbg6$oSm2Sn5!4v%i{*(HZ6f0>o zLj)2Ys*tSwVm-oI#Zv2)Y`<(U!h=XgB1VEMS=!C*mq_c((uih*H5sqSL(eg~02_%< z@$rXLJUhksH>&qs27Y2C#XVU4YGA!g)w6Qk!zidX-4}+qt)8Mxpq^B%#Me_nW9T`1 zP?2pDaKqJqD|g)YNx9#Ql@JCweF~q<2+yD6MjQGh#+O;WR7k!Tbsx&E?SmdCj{mwe znPk*aamyJI^ow)~EZdTWlXIMSFZ4AnX05KOrEu1yQ2JZnd}Hsde)uh&-$o-x+_j;C z@|TSlUxPs%r7T+8PL4`zoDN5SNHA3**kRnEx+2!PJ?2Fe!a*bUY_j&VKO#(!^$&LB zaHF8ruEj|JVWv|>b~Wn(TgJT_JP%g^Hm4jXg#p^q;Ybm*I7xBENYmXuzOZn~r-YNk zomch0L=3W*Pt`Pxg=0DBp5M@wv9EBNwpzD&L+m7Mk%&`8#2rREWTV-yp*vGJ_prl^ zJE$a*J;sSmt|=*JLruEv^Al^Y=<@zYHlcSSZQk6RG!R&&GNRKFX3-C2gJYl$h(B~P zh_EB8x5`#loxk56*?F^w^h1iv%iN%H+mf}FUfO?J-%wvJ(NLWhX2X5UREW;^T3o^Iln7PXA5=J%NCdOSVlhO=N2oD(dQ1JHjB|gI6Ly zs(f(Te?-&qrg3?|Bc5$BTV9Wt8}xb!h7Hv<5?$EN5;2#0j8>0ngZ;w_b8f zw48(Yy5UJ4v*`DR3X*+y0tueT{^l8{kptn15}Cmy#t2)XSVbmK?eH@>uJroV?_q< z5%;IIP%I9la#+#R6>Lj!{$m>aR%;5k zCM@q~FUN{0;voD%eOn!BmpIIdFj2dVQf4N(yEt`V-d`Wx^!aU1zyGrNZ@pF)n?3tL zc&av68&)>8)R@|hV{;6*yHnde6W_xcH&aQg^R1!@?3Il$+#+sh(XyS^pyWxm{)DDa ze@jgpu*Y2mDa&Klb!B3Sp_{Fzwl_d))H2xE7}3AuuobjT z7<@op-s{w4^ohox3)=_Nfk@T&rJ2=?8PZ>h#f&!3C=h3+jy0lC+7{!Ft5unl==5=7 zo~<71jF%{LCN`p~rq|qEzx57|mn#KzVwv2r`>{9O_hlT@Q1V|ahGHv>1WN4Y>>CC5 zLC&l82q78mxSNHedF$UDcw2IT6BOM zT_naOx-QgY2KQ-L7v{Edu3p}_d3zAO1BL}f2;M}O8p}I=lsC!dWT~8+8~^Y9ry&HC zfmfGk#$-j>t!<`z_wHq54b9C((g?X`=H}w8J5&7x6+!taZAWyma}`sboEwYl?v4Xi z^Ubh=rd&#H(qZ@wG|f{!etwhjLJa_obgd2NaJp{2ilE^9-Gnp%7rZA3pZDB+(zxG6 z{i?-R6mVz8@ zm8r9nt&T?<<5RVcjCo3_A?u_0E&0^Y1*CV2mwOXUmVbSEdR4o`aehj?ms57nmi_dl zV5GEgfHM=}SEc+6pN+c}c5{L@v$e$epWos$DWx15*yBMKZ|crd$%r!Ldf)khobk?w zEUQ;IAJulZ#I1jLqYl3uXFI4BHQ`0|_xHc5v7-UE?#he}3kzF=b6Jku2W|u1cx|$j z09ciaY6?a0z%0bIyhDB4@vdAhsb;axyTZapnkppF)&@W~0^g2J6w5H#8q`=A+F@dx zm_LSj-MWkNK2Ug?LDL|)%s)N$|=u_aKusn;A zAv;AO0_I5v)7$j%eaHK6{S1mn&M*uNaVhvgGV{q$7ql5+=WHxEFbswVUl1!5QVstu z#Ytol6yN%>;l(0K;vI4gwL zF$DXo|LP1M;qm10gO(Ncx{TuEd+bbJFuH$<9~zo2v@)lGwhYc8wTEpCA3Vsck}M#N zS7%!4*|35lt9)dg2jH$RAK?&+;|G}DGv%NfgRbppTs96v$dYC_@<;FmX z{`-MABE%mtq=3OOEz9!YOStFHHH%C+XayTHHmymQH8AJHUlOS=yxEBO2#x_^Ov zY&u@CGmkGLy^(>`T4AAWmzu)QzJGV8Gq3+)VL>QvO}``+sTR{{~bIs?XnM^*b}}{O!kG8;NS8d zW~k$5}Hh|2tHG7eG&d!7xh^1->sBoceBzH6XZ|Q}FF>_;Rn|PqbZIpst#> z0O_QG*AoEg5e)75EG?=8{@jS?z_2UC<@4>4)%IYvwdI-hGj$*d{0XmsroC z?Oj1Z!PBv#XCSDjR2ACdZYR_GBW|~IOa0{lAFrI4(A0D4AAfp%;ZeJq?)BZg-wGx! zCx>U?x&Gi{0Z**8(Zgx~Pn?RlwNKb&Leza*TiesVH=;qmer37;i4BETN4(8X2u8w= zgD+pJkA=X?XOYEvF8IYF*>#$nf&sO!#A6|u;#FY@8)Q}AMDd7DaVbk`3qgt_R>B+ zKEr1T?0z`l;C}L;H!d*ORHFxX^Y!I!!`bS92vN)Bw$Iwu)|QJtzx{j!wS6OTe!3?< z*z4b06@y(gZnFVkM}+_Oba-t^e5;ZL7o6uB6h+(2y3Sw%itMPqFFoD+?~Rw5w>nov zPok&FOyt^5s!7_qMO{UysHtx@+uPZ7F^f7fK$k4_yR@En!&5KW?YfG8{{(e|q-*IN zc{(0U&-ZK@^2&;V^M`ykQ{N|-r%e{hd#`Q?xo)-o?)N+23WQ5W+FTNW0W zfi$S8F-mL=%6vg-Y4FZfmYJ7_Ydu-gc{GXg9~l{GJk$L4D!|?k zEjTtYQ9n5GO*<0A>C*I@j7~h!y#RyWdvHv!<&39SC-&lAUS4e%H_6$4JgMpH4i!Dj zGVtr5;@^>esil>Zm4%_Cqy*};-~0(^&|EfajXQ8(YG^F`phiXl390#v&JWiqc&*~m z7jp@lS4b2W%abP^>-iZ0^gWr?)pxeHx09Ya-p0LkH|**%I&gOvZFZ98Hs4lUGaruL zz0PP{Sj$Z`Xn)S$6x_?!K!CbBcEgVfSXp^eyBI>fce)h4>eF0vNr8>wd(wbf%uDtC zSku_mB|GbPeOY^bg?8-com}|a+Y(^P<X2YFb(!JPuac4uttp z18G8KR-Y`R8$FMxoSmIB8yjbRGJcwV_ieh-%B+-vIQ}^~R2f^$Ka7ec~7jnD$b!LwPk*m`s_p7tj{o!a| zQhj}WoR;T@C$iRrxx|r+aL^d7mN^m71OU2pqF5IXMj_;k^hm#oiY;&3wOX3`nHe7bG#7fMJ?wKt)g3gyAY!_h%;6B95d5bFxGc`2 ze_m@hr(-i$PsW`7lr{*LP|#wzUhLKvMUbx}p;!Sqmq=OE1F+iGhUhoKd#zZf%j|yd zVj1Oj4*n)S(G5XeUrAhSwp=~l*f5YYF(J_``PMeseCz^Ssr5b_mizmwq@sePW|oUC zTI}knve+eo@a18~(AXg#w0@|f-DInUL1Cxwc8LjgzgKrYob0g!dRq(+cJYUqe=(AO zqs;6%_e6>QYE(nRPW??#a}FC)RNw)i4q(DIHa76NLQ?r`C6)RWV6B^_lg1!&JW#u{ zbtKl4%{#JkJ*eXh z230%qmfD-EpPgUD=f}>bk{RG4_O(~%o1Aa|$OD2K#1WO@X?t#xkQ5?zOKnshCIh-&@wGmZhYc9@KE zQ9s7D41+c{tS;77{C@Q+SQnRB4BvxXJLBpw-|^>z#7x5$Uzk6b#+S-_n*-T_A=cK` zT0cH`uE!mUm1aLypq3=+Q{OAU>bYH|Rpzp(srdQnjjF0DFlyS)pMb;+&78`D>-P!h zMB9C?K=1H+vHe{^VPX5lSR5tXe=@5`xVX3sqaK`lG3ExVo5LI|2rc?s zV=WBb(^-+Uh2Oprn3*l(WY9VFaYC_g-gjzbfG*nF_3*I$5niU9{n}>Sw&eKO)dqRU z1X~EAyD%E=v$O|A%)qPv<(v}OBRLwEm&5BJM0B@c?&$42AN-Ht-vM#Tf-LMsU#hx( zeR>RoK{>>{KjnR~Zq4ti$#R-F5WrAbzCluWfE1;Tcsr-HtC4({wc3^q)_A1Jw^jli z7ji~hB+rkf{lGJCl-#pt&)QbYUiIP35s99{(tVD#u_a>omC8_}LuY`P8ICwic%lnN z2r9)iK|;E-9yzFTfomXLtbWe1$1!L8!5p`psW#q5PGW4Goz^4|fYsbF<$5ys*w?yp zR3+V;D@x>eDti<`!xBg@PGOFs%4u`F`+nXjEiKJ`CHc)>zL-elc#+obi)bX)CxzT0 zu#w^6;Z4<>tbDu2+cOxjgH=@E*@6A^(jnA~985xN~!JAkDGm9DY^tDa?F9xOWx5>7~Jh_xxULD`)pz ztW0;;s^Vfo72$n3;geaXg5u&QNT;TJkeQZ1M@hERuq*1lcr&BBKrP1sX_>#6Lni_T z1Qqsr_W6Eq@bD49a}#5CP%UB;rH0W+qz*XSuyrU)iqmpL`r>@DrE8_%-gs>&i;da` zMA*U)lI{i+vd)QFM^~5A_u^Cp*X6x*yNLVt^W;C}=#wOqsA+2witHA*=H1jX>P3lG z0w+Awn+18fbbybUMANtyXkkH>lfUIm>7*I?o`e}{UK~*Te0HJ*7%D*gB$(EfDG{Wq zsacIWpp7V;O9v1LlM3I`8{~WiQ|hbGiUC1tU_5D%yYrOOLQ+ybSy)-MJ9g8o3i2zZ z2^P~k9r}Ly&ql0wI{Yy@vC2V5^E<`5#B~|+n+Phi!s04T3k!>fR6L(R$ATwz>i6_$ z?1dxLT}_vpK@&1$H&8lF<{LduCu&MuwI|$!3<31Wq}X%Z$PVfpDBP3Mpmpp^alr@E zfGev(BL&@Qt1}NkJxBBSIgQ(c8*L7E=4ilu#9dsDXuU?6Z{HvQSQiSvjvNd3kiFm| zv*2%OjZsPX!(xWuuhr(jNOw^u`bTB9ShY1<;yyki^B$`-hr52H%EFEpz8VL2Mv=&H zy6e;KSIrk>dY;~0Nr-!V=K}+6bWTxGZ&FeKD3j%Bb@VNu>`WkI$hG5Lu`N?kdvpA;TXRFtN{i*y* zz;)U{7scVS!83`T)qFAu#u6J7DJd+r`nBxF?eb*n+%ekj{VjkegFY6m+2eH@$w7cR zatT~>$culAF;Hw1tSi{ zQwMs`b{vVAhmWrFAd!kB!RaQUJCXf=YO1Su9QRzZ8Q*;uDdGkCEe31|&gf6tmx!R` z#(kc^I=%Uw74!`yCS6~i#ohXqIb2<{0kQ|DQLBI8Zq)?5BM2Sx9s>*4=ugiQENM~k zn0e^g{o7B$kb{ww{-cvi8?O-bEOzvJAnLNKU6mwMpMus-F-bKNz!+qujpcWNd2z6W zuy*b1niI|5a{QsKVU#uP4ylwFy}^9fuo5eFf=b~XP6j_O?_x=VZ-C+DMxuosTVD_1 z-KPk0JqIB27_ZzGBXSnCK3p3Hn<49S=_!2OxK5TvP1?2OsF=)!18#A;X=o@dB_-9C zx#w@`W+8VQs)7e0e!r@~e9CIrd>2%A4^H%ly4vL$uRFC>=@{XFLWAN&t7&ekZ^C}XF z%&h7HwG#9Lq1GjJxHTwWAqch`FTHXaHnzL<<2`eF7-*>>Tmza(!B7QJVNZ0c7sNmx zxu47KGwh-a?+~f^iKGK4BHK!z01@bnYtJ`|%G~!~n{rV?bjkWi?&*MA^OE4FLmt3U zdG9!7fFbT;wZ^zD5Qoi+3>(A1=SV}(v9rbK>Oyy~0d?uxf>cAgTEXzU%(2Vc%m6M4 zSU63N?-fVBiJJ{9akGUx{6=%e+s&W`Bv<2n?rSUI1GsItkENWADFl z82}FyDXIN!xOZ{j2fE9E399~nU5DN$H4Dw?9f)3ItNZgY+k|)L85n^?50VG70e0&) z@4MK5e04K=-85p#3 z^eL$|nGFpMYg3+R>xI?;Q0$7nyI6BWNM^=`sc&f1`ska5ZxsXWPJ<#^9Hj_MFgKFN zDCau@NY7!j_`nf--OOt^9C^N9Y_H#B*bzHrbqI()@`!$mNHAJJc^?c?;kZPtXv31- zJjL7Zv7up~Rj(ES-JjNbPXYj3ONlKP8WOzL_FFOBsM9X~a9_V^v&6-~n{0j72AobS zih3T)8mIfwe!)mRl?mv^D61+6c^+Gjkd3Ynf?Cp z>~zPiB@_iF$s|D+tI`9Il)W!E4ZGu1MBkPA9%am3XlQ7hPIZeyNDKq$CBz;fn;lf% zRw!_rE3yj?e4#lYen=|}3(eC*DJ6e)na~C>rd=Bt1LydTy=QvTfqHOZ26e@Ehs~Q} zHN&r2x63j=Ed*p^yz688NpjPEZ&deW%hge%$FJUAFgo6a&_Ku|zdl}d*_^1aX@)WF z)gL1_0e;0`aRQ@A^R4_eB z0Fsjx_j+uVbweGfR+F@}-!*6sd=DAp-k*c)^WiawNY&EYWM$rGk0HZUqbL>bWxH9Q z{at=l_x8bn&?>8i1zfuH+Z}(Hmj(%qTIEE+*RK))mmS`Ph+oit7EBH>15ODBGY(l8 z){*KUz@>cz$QWnouV25mX|H2^ROO*WXL@*p{dU3jc`iGglUF2joa?odo?t?P-n*op7W27~ayO9MT^8emw z#fee&gAe`|Z$@qr75%%Lp{uJM}~Q-Sk;EN#20g!K5hdXmHN!F{a%h&kq5X$0<` zFp&Za%)FK#Hwt3#;^pKq=r^>VWJhs{bUTtt-u?KA5uy$|+V`A;L2;pgG&r8AtU#?XlCk37B7Bl2zyuHHzZ*SL_&qXb)#D)xivVfS zzh?`@m}HPmqMgvm`R)|4iw1ANFZ`97MVrZ0(cqa^883jTYEZ7 zM+sV(;E!NLSf}@-gsipr=4XR(9qS*jIo;E{2RQ#NFKL8Ifkm2k46L02W;kWQtpfxj z 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%0A5vkX0cA)f3FDn~xHUy{%+_wRROM>2qf>79@ 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 literal 0 HcmV?d00001 diff --git a/source/mainnet/net/images/desktop-wallet/dw-settings-button.png b/source/mainnet/net/images/desktop-wallet/dw-settings-button.png new file mode 100644 index 0000000000000000000000000000000000000000..9b8100e2fdbc841389fb56d514346b40d5067e09 GIT binary patch literal 4190 zcmZ8lby$;a7a!fD8%9Y;$3Q^J0n(B$A|N?ZK%^Y0v@|0n6@-_Nn$i*iqa~G+koW)r z1xB~u?R9;BeY^JT-kv@8xz5fxzjzjB^gxS>oQ)g;fl%paYnXu55F8ey#Nf4lv$7N{ zWZv43d?64f{=WyFj>)ZkaFWDN$3T;0laQ87K!}f=1P6goU+ZYxGehP7&JQ#*eF*FC zWHF~lY6-CfxKfZi`4Sq-xnZMwi}A(9EV9ijV6;W!?!o#*Wvks=h7@gv7+wzCu6W`J(Oa-obju>F(vC=6Y8oNe@dT z&6!s8>Ewh5ISWzoT4)ZB zA)X6f8ZEf{Z2OyPvGZT5DHM9&%S#-}HA=U0iR*ttOHa@D{8MQW90&Ofe!F3zlCf^poiW__j7B%z96cIx;4Gpja~@lP0hg6U)4FTS{&FwH@@TeEFvnxuz6!*xv$3(At)-}z zOw+Qkkh-|I$SWB1W!yH68d6kLG_ti#xwr^|!{Kj>i$k!jlam3YbKmFZ(FFxmOd=#i zMA4FRS$|{=y>PjCdFa>8tQ^qT@l#exVkU8GLJ%vb)AZ4!xQ{MlysCd(;#4FEkr6^XTZYwt)ekh$v(^L81fO5t{Z9zA7mrlYQBtwQa=D z%ZvYHrY7B@!)IOhOTI$-msETuWo6v?rWNvlirV(2=X~QJXZq1|D{5+LOn{)EV6@9! z1Oh=rOUpAQC@h?t5li$Ig6sHm6O1`A$fFy8@@JLmW#4=J__4<$eSJ|muLW&O(aByB zp#f%0wRH>Kg9i_gv2+PJIjmRL*S%SqT3YFB2}aWO<>jQJOcVesKY#ybybw(8y!Ons zPT~;T>ljwEw=a6tUQ$BH!^2b3%k%9}K40M5v`v4(-KMVfB~ZG%K|wc3UH2yZ(h3R| z%ZWcDB^~=H$G4bxPtwx#O8USK&@88u0+q);P(yT7bhQ0g;Uc0jEsYMm@9K_7)=B?a zS6>e)@WP{@pg{C6AyyaLgC9EE59HI;4th;pEzOBtylPCsW{3fd8?2!pdF8NC~@gRd%wUSt?i zcB?ZIM}|B0`=n-P$L{YFIfQ1QM>3--D~0PD8k`O|4G?Rc=-_;w-JlFRTZyH;1}9#YmkVWNX3{2WS}5r}WlT#wmd?%w z$w^-Z_|^Axb%lG2b{kr8adB1IcEUi#Bqb$ZhKCm|Z;p@C)Yp^Na@Ew-^mT+@);W)` zbtiGgMMW8)j((!Q+yn#!_>8>0jf`UjMHtHDiWf_Wj~DQVtq?IXGM)h@!Dg|tu@!&( zXo?lz!!~tKZ*t1lapmOXI1G39^q}+e5tdc?`5Yx>dkj{M_C3U+k3KMfhS+_a1JCk` ziu?Zl4GRIoX4PjSLcT-TU)n%uR))qqlucmSMXaued52kzVcPk*VjkZJg-j`w=p)R zm3s=i=BTc%l~@Ygn@L?$=uv#ilPo;g7Qoia7Xi`#=^pwuDyO2(* z@ZYTDJmdRE^6m^)ns_~Ub3>ahU|^!XSn?nU5S|`ma+TS*YpT;{eFl?W0G~*(`Bi~# zX~f_ac}@-qI;)W&C@2USlX;%+EH%RaIA`b8`i5*#WYCP%uOgiM!fjXJL6& zT1l(iw);;)>&1!&3v&aT|A&h$w87$oejB+hP5yudSv={7WwXkIF9< zre&*Ke`W=dm+RTKsi}2jfJ5-DjEra;93KiH$<27qam>m_lTZz}xx~~|nzKui<-v3> zKYxGwQ!gB=yO@|5ZC+E;osR1h(tzD7wwap8JtSNqFQ?wm2zjun*{4%XHhSsOKOM=H zMX;x}EHI(lonE4VZY?dr+}!SZpC33OhCQ`B(2{<=>bZD1QH*VysZPXFSzs6v;}(*D?QL&ckEwK!Jmkv&&9W(mn$E*V3d5 z8g_Se;gON$X~`D({<#UgCE(Tf!D(1BIH2ycja4wGl$4Zw$eCn*!Q)qd?(1r}kL~>a z-J2t$+BG#rMMg#zk%7+3V+W*#&d7N6myu&)giA5C>?XZyhvz?kg%C0`yP&P}fURh2 zFI!vbiT$~^7YlsU#pR{3wRPfJ|D)!>LjfRJz*A5>fBsx4^nzhs;ESxul@ z`1try8zOA%d)zXI+<;vmK>0K@H6wdgmT_zSuToNCV`7M7VqyTTM)PTP^iI8hXm4*H z9(cIn*cCzKaGEtBTG-mENJ&LyWNeHFbmYs(2$7SerR8j$edO}t=g$xyA0O{sYaU*{ zcQnkWWbRLD*S;F2r{?EJu*x{wU7q}2_Gvjg7?!9*;T#BwMj`7In+YK+)D#dlR$`e~9fldv67My0e^}tGhBUr zeO<`;FGJ{3QuIe1I^9Njfin`btOHiFs}GUdz$Fx=Efr>MFvy>0%2!oUud6C+?lEEnVMpZ zjEoc#6^;7$UxBprbfQCEadGik%-Xt?PKXK@BjfsO1z&;U;$osXH@2jhk`j%DPtOgv zp+&U)fgsjwdoXo(clWc4BR36=wpc*wz`T+LP(Z1v-~Ib98-NeukgBq>(%a7up{F-o zZtjsB)!t69gj%EOa`~I>mLF&qC>Cuk@a#1;UXpM)-PwdIe0)n{rrJn|;pfkv5&glh zl9Qp~i}UmBrKL`MUe#%C<;7)Xv9q%lqP86zr@M&sIDZqP*MFl@aHc$l#S%V#oZ`JcB*9Bkq!M~TXuTT>bX-kconUlS zyu7+Sxw7&-3oJ}wH|*+63d~59N4)dZ84h(g(&T--{f}QjM_cys(Gh9E!Q#Y3xS>j1 z&tSSB;cxakUL4?IXJ^OV9IK0PAA9$83-#xkIyJYI69`Yl9ZDc%z@`7(*-`i2=Ky_c zZfW7+=7wx-Z7t(a-rgws#l^*ek!x61mieoM1cIdd1ev zOlBq{(3-@R75mw_IeHsMM3K>FJ4pa%D7bN|tMkUFGdemt0vN4~7pX5FUP?I)F#tEu zEwRU-Z(v~W>@2Q43j9u!uCST0ad=V^mGkJ4rrz*V`M?9hWX|FHz+M4TtP8si>e~A5 z?(V+7zfYK{2s=MN9~c@!SXr@0L`Gsf=6t%0H1zZ+;B1WGn=@Sh*L@r=9D|V((0>i_ z_xI12e})g1{euJiOx@m0kuj1f8yg!4_tANDGr&``&pNp)ymHy-p|Y~FykZBq1>KSN zwo?tetR_0#jI~?Upa-+lH9SlKG62|!DlH|tIj%jN?R=rSy}iBs>sLf`b2II!>y_=u z{K0t$a532B<h~+S*JZFSovGH9aw - Tutorials <../smart-contracts-v0/tutorials/piggy-bank/index> - Contract development guides <../smart-contracts-v0/guides/contract-dev-guides> - On-chain guides <../smart-contracts-v0/guides/on-chain-index> - References <../smart-contracts-v0/references/index> + V0 smart contract documentation <../smart-contracts-v0/sc-v0-rollup> .. toctree:: :caption: Low-code NFT marketplace @@ -95,8 +99,5 @@ index .. toctree:: :caption: Resources - resources/ccd-scan - resources/release-notes-mainnet - resources/release-notes resources/legal resources/ar-idp-contact diff --git a/source/mainnet/net/installation/downloads-testnet.rst b/source/mainnet/net/installation/downloads-testnet.rst deleted file mode 100644 index 38b1e53795..0000000000 --- a/source/mainnet/net/installation/downloads-testnet.rst +++ /dev/null @@ -1,224 +0,0 @@ - -.. include:: ../../variables.rst -.. _downloads-testnet: - -=================== -Downloads - Testnet -=================== - -This topic contains information about where you can download the Concordium Wallets and tools for Testnet. You can also find out about the hardware requirements for running a node. - -|mw-gen2| -======================== - -The |mw-gen2| is available for iOS and Android™. The |mw-gen2| supports iOS 13 or later and Android 8 or later. - -.. Note:: - - The |mw-gen2| is not supported on tablet devices. - -iOS ---- - -#. Install `TestFlight `__ on your iPhone to get the |mw-gen2| for Testnet on iOS. -#. Follow `this link `__ on your iPhone to join our beta. You must have TestFlight installed. - -Android -------- - -- `Download the Android version of Concordium Wallet for Mobile for Testnet `_ - - -.. _downloads-mobile-wallet-testnet: - -|mw-gen1| -======================== - -The |mw-gen1| is available for iOS and Android™. The |mw-gen1| supports iOS 13 or later and Android 8 or later. - -.. Note:: - - The |mw-gen1| is not supported on tablet devices. - -iOS ---- - -#. Install `TestFlight `__ on your iPhone to get the Concordium Mobile Wallet for Testnet on iOS. -#. Follow `this link `__ on your iPhone to join our beta. You must have TestFlight installed. - -Android -------- - -- `Download the Android version of Concordium Mobile Wallet for Testnet `_ - -.. _downloads-browser-wallet-testnet: - -|bw| -================================= - -The |bw| is available to download as an extension for the `chromium web browsers `_. - -.. _downloads-desktop-wallet-testnet: - -Concordium Desktop Wallet -========================= - -Windows v1.5.0 --------------- - -- `Download the Testnet version of Concordium Desktop Wallet for Windows `_ - - -MacOS v1.5.0 ------------- -- `Download the Testnet version of Concordium Desktop Wallet for MacOS `_ - - -Linux® v1.5.0 -------------- -- Download the Testnet version of Concordium Desktop Wallet for Linux®: - - - `Testnet AppImage `_ - - SHA256 checksum of the download: ``044d8b2aa039428b7e6626d3af1dade21e52bee04dbcfc9f78d303bd0f1c855e`` - - - `Testnet Debian package `_ - - SHA256 checksum of the download: ``f15d996f9e73118cf12820265af6303a9d6359b30c1e3c401bd0f292e977ceb2`` - - - `Testnet RPM `_ - - SHA256 checksum of the download: ``66d2a9ce4809a6e84a84accdb0768d6c1c6a7dcb046b751667a80d75a8a66464`` - -Concordium LEDGER App - Sirius -============================== - -The version of the LEDGER App is the same for Mainnet and Testnet. So if you already have that installed for one or the other, you do not need to reinstall. - -.. Note:: - - LEDGER firmware version 2.0.0 is no longer supported. - -.. Note:: - - The LEDGER NANO X is not supported currently. - -- For LEDGER NANO S, `download the Concordium LEDGER App 3.0.1 for LEDGER firmware version 2.1.0 `_ - -- For LEDGER NANO S PLUS, `download the Concordium LEDGER App 3.0.1 for LEDGER firmware version 1.0.4 `_ - -.. _concordium-node-and-client-download-testnet: - -Concordium Client v5.0.2 -======================== - -- `Download the Testnet Concordium Client for Linux `_ - - - SHA256 checksum of the download: bd39487463b45c7bbbbcdeeb1cbbd0f4fe8e62041869aa3db9cdcf331ed8a049 - - Before you can use the downloaded Concordium Client on Linux you have to make the downloaded file executable. Run the following command to make the file you download executable: - - .. code-block:: console - - chmod +x concordium-client_* - - where you replace `*` with |client-version|. - -- `Download the Testnet Concordium Client for macOS `_ - - - The macOS distribution is an installer that places an alias to the binary - into the folder ``/usr/local/bin``. So after installing, you should have - ``concordium-client`` on your path. - -- `Download the Testnet Concordium Client for Windows `_ - -.. _cargo-concordium-testnet: - -Cargo-concordium v2.7.0 -======================= - -Download cargo-concordium: - - - `Download Testnet cargo-concordium for Linux `_ - - - SHA256 checksum of the download: :substitution-code:`|cargo-linux-checksum|` - - :ref:`Verification instructions ` - - - `Download Testnet cargo-concordium for MacOS `_ - - - `Download Testnet cargo-concordium for Windows `_ - -For information about installing `cargo-concordium`, see :ref:`Install tools for development `. - - -Concordium node distributions v5.2.4 -==================================== - -For the system requirements to run a node, see :ref:`System requirements to run a node`. - -.. Note:: - - When upgrading, you can only upgrade one minor version at a time, or from the last release of major version X to major version X+1. You cannot skip versions. For patches, you can skip versions e.g. X.X.0 to X.X.3, or `X.1.1` to `X.2.3`. To download previous node versions, see :ref:`Previous node versions`. - -Ubuntu ------- - -To run a node on a server with Ubuntu, you need a Debian package. - - - `Download the Testnet Debian package `_ - - - SHA256 checksum of the download: ``51841534d17d7466f2ee1fb1b10d7d72bd009dd6c0cb53d414a632792a1a1b83`` - - To learn how to run a node with Ubuntu, see :ref:`Run a node on a server with Ubuntu `. - -Linux-Docker ------------- - -.. _concordium-docker-package-download-testnet: - -To learn how to run a node with Docker, see :ref:`Run a node with Docker `. - -To upgrade your Docker node either restart the service if you are using the `:latest` image tag, or change the image tag to the new version. See :ref:`Running/upgrading a node` for details. - -Windows -------- - -To run a node on Windows, you need a Windows Installer package. **Please be aware that you should backup your configuration, as the installer will overwrite the current configuration with a standard configuration.** - - - `Download the Testnet Windows Installer package `_ - -To learn how to run a node on Windows, see :ref:`Run and manage a node on Windows `. - -Mac ---- - -To run a node on macOS, you need a macOS installer package. - - - `Download the Testnet macOS installer package `_ - -To learn how to run a node on Mac, see :ref:`Run and manage a node on macOS `. - -Genesis block -============= - -The genesis block is included in node distributions. -Download the block separately to inspect it or to run a node in a custom configuration. - - - `Download the testnet genesis block `_ - - - SHA256 checksum of the download: ``69db4360f0a16414db86a920513600cfe29241c0c713a07d8e79dad19103e91d`` - -.. _downloads-testnet-auxiliary-tools: - -Auxiliary tools -=============== - -Auxiliary tools are a collection of tools that can be used by developers to perform actions as needed. - -Encrypt/decrypt tool v1.0.0 ---------------------------- - -- `Download the Encrypt/decrypt tool for Linux `_ - -- `Download the Encrypt/decrypt tool for Windows `_ - -- `Download the Encrypt/decrypt tool for MacOS `_ - -For information about how to use the encrypt/decrypt tool, see :ref:`Auxiliary tools `. diff --git a/source/mainnet/net/installation/downloads.rst b/source/mainnet/net/installation/downloads.rst index af37703353..69f4ed3f2b 100644 --- a/source/mainnet/net/installation/downloads.rst +++ b/source/mainnet/net/installation/downloads.rst @@ -2,11 +2,11 @@ .. include:: ../../variables.rst .. _downloads: -=================== -Downloads - Mainnet -=================== +========= +Downloads +========= -This topic contains information about where you can download the Concordium Wallets and tools for Mainnet. You can also find out about the hardware requirements for running a node. +This topic contains information about where you can download the Concordium Wallets and tools for Mainnet and Testnet. .. _downloads-mwgen2: @@ -20,14 +20,29 @@ The |mw-gen2| is available for iOS and Android™. The |mw-gen2| supports iOS 13 The |mw-gen2| is not supported on tablet devices. -You can find |mw-gen2| on App Store and on Google Play. +.. dropdown:: Mainnet - .. image:: ../images/mobile-wallet/app-store-badge.svg - :width: 23% - :target: https://apps.apple.com/us/app/concordium-blockchain-wallet/id6444703764 - .. image:: ../images/mobile-wallet/google-play-badge.png - :width: 29.5% - :target: https://play.google.com/store/apps/details?id=software.concordium.mobilewallet.seedphrase.mainnet + You can find |mw-gen2| on App Store and on Google Play. + + .. image:: ../images/mobile-wallet/app-store-badge.svg + :width: 23% + :target: https://apps.apple.com/us/app/concordium-blockchain-wallet/id6444703764 + .. image:: ../images/mobile-wallet/google-play-badge.png + :width: 29.5% + :target: https://play.google.com/store/apps/details?id=software.concordium.mobilewallet.seedphrase.mainnet + +.. dropdown:: Testnet + + **iOS** + + #. Install `TestFlight `__ on your iPhone to get the |mw-gen2| for Testnet on iOS. + #. Follow `this link `__ on your iPhone to join our beta. You must have TestFlight installed. + + **Android** + + - `Download the Android version of Concordium Wallet for Mobile for Testnet `_ + +.. _downloads-mwgen1: |mw-gen1| ======================== @@ -38,14 +53,27 @@ The |mw-gen1| is available for iOS and Android™. The |mw-gen1| supports iOS 13 The |mw-gen1| is not supported on tablet devices. -You can find |mw-gen1| on App Store and on Google Play. +.. dropdown:: Mainnet - .. image:: ../images/mobile-wallet/app-store-badge.svg - :width: 23% - :target: https://apps.apple.com/us/app/concordium-mobile-wallet/id1566996491 - .. image:: ../images/mobile-wallet/google-play-badge.png - :width: 29.5% - :target: https://play.google.com/store/apps/details?id=software.concordium.mobilewallet.mainnet + You can find |mw-gen1| on App Store and on Google Play. + + .. image:: ../images/mobile-wallet/app-store-badge.svg + :width: 23% + :target: https://apps.apple.com/us/app/concordium-mobile-wallet/id1566996491 + .. image:: ../images/mobile-wallet/google-play-badge.png + :width: 29.5% + :target: https://play.google.com/store/apps/details?id=software.concordium.mobilewallet.mainnet + +.. dropdown:: Testnet + + **iOS** + + #. Install `TestFlight `__ on your iPhone to get the Concordium Mobile Wallet for Testnet on iOS. + #. Follow `this link `__ on your iPhone to join our beta. You must have TestFlight installed. + + **Android** + + - `Download the Android version of Concordium Mobile Wallet for Testnet `_ .. _downloads-browser-wallet: @@ -59,33 +87,63 @@ The |bw| is available to download as an extension for the `chromium web browsers Concordium Desktop Wallet ================================= -Windows v1.5.0 --------------- +.. _dw-mainnet-download: + +.. dropdown:: Mainnet + + .. dropdown:: Windows v1.5.0 + + `Download the Desktop Wallet for Windows `_ + + .. dropdown:: MacOS v1.5.0 + + `Download the Desktop Wallet for macOS `_ + + .. dropdown:: Linux® v1.5.0 + + Download the Desktop Wallet for Linux®: + + - `Mainnet AppImage `_ + + - SHA256 checksum of the download: :substitution-code:`|cdw-appimage-checksum|` + - :ref:`Verification instructions ` + + - `Mainnet Debian package `_ + + - SHA256 checksum of the download: :substitution-code:`|cdw-deb-checksum|` + - :ref:`Verification instructions ` + + - `Mainnet RPM `_ + + - SHA256 checksum of the download: :substitution-code:`|cdw-rpm-checksum|` + - :ref:`Verification instructions ` + +.. _dw-testnet-download: + +.. dropdown:: Testnet -- `Download the Desktop Wallet for Windows `_ + .. dropdown:: Windows v1.5.0 -MacOS v1.5.0 ------------- -- `Download the Desktop Wallet for macOS `_ + `Download the Testnet version of Concordium Desktop Wallet for Windows `_ -Linux® v1.5.0 -------------- -- Download the Desktop Wallet for Linux®: + .. dropdown:: MacOS v1.5.0 - - `Mainnet AppImage `_ + `Download the Testnet version of Concordium Desktop Wallet for MacOS `_ - - SHA256 checksum of the download: :substitution-code:`|cdw-appimage-checksum|` - - :ref:`Verification instructions ` + .. dropdown:: Linux® v1.5.0 - - `Mainnet Debian package `_ + Download the Testnet version of Concordium Desktop Wallet for Linux®: - - SHA256 checksum of the download: :substitution-code:`|cdw-deb-checksum|` - - :ref:`Verification instructions ` + - `Testnet AppImage `_ + - SHA256 checksum of the download: ``044d8b2aa039428b7e6626d3af1dade21e52bee04dbcfc9f78d303bd0f1c855e`` - - `Mainnet RPM `_ + - `Testnet Debian package `_ + - SHA256 checksum of the download: ``f15d996f9e73118cf12820265af6303a9d6359b30c1e3c401bd0f292e977ceb2`` - - SHA256 checksum of the download: :substitution-code:`|cdw-rpm-checksum|` - - :ref:`Verification instructions ` + - `Testnet RPM `_ + - SHA256 checksum of the download: ``66d2a9ce4809a6e84a84accdb0768d6c1c6a7dcb046b751667a80d75a8a66464`` + +.. _ledger-app-download: Concordium LEDGER App ===================== @@ -109,7 +167,7 @@ When installing the certificate, ensure that the public key of the certificate i Concordium Client v5.0.2 ======================== -- `Download the Mainnet Concordium Client for Linux `_ +- `Download the Concordium Client for Linux `_ - SHA256 checksum of the download: :substitution-code:`|client-linux-checksum|` - :ref:`Verification instructions ` @@ -122,32 +180,34 @@ Concordium Client v5.0.2 where you replace `*` with |client-version|. -- `Download the Mainnet Concordium Client for macOS `_ +- `Download the Concordium Client for macOS `_ - The macOS distribution is an installer that places an alias to the binary into the folder ``/usr/local/bin``. So after installing, you should have ``concordium-client`` on your path. -- `Download the Mainnet Concordium Client for Windows `_ +- `Download the Concordium Client for Windows `_ + +.. _cargo-concordium-download: Cargo-concordium v2.7.0 ======================= Download cargo-concordium: - - `Download Mainnet cargo-concordium for Linux `_ + - `Download cargo-concordium for Linux `_ - SHA256 checksum of the download: :substitution-code:`|cargo-linux-checksum|` - :ref:`Verification instructions ` - - `Download Mainnet cargo-concordium for MacOS `_ + - `Download cargo-concordium for MacOS `_ - - `Download Mainnet cargo-concordium for Windows `_ + - `Download cargo-concordium for Windows `_ For information about installing `cargo-concordium`, see :ref:`Install tools for development `. -Concordium node distributions 5.1.3 -=================================== +Concordium node distributions +============================= For the system requirements to run a node, see :ref:`System requirements to run a node`. @@ -155,44 +215,82 @@ For the system requirements to run a node, see :ref:`System requirements to run When upgrading, you can only upgrade one minor version at a time, or from the last release of major version X to major version X+1. You cannot skip versions. For patches, you can skip versions e.g. X.X.0 to X.X.3, or `X.1.1` to `X.2.3`. To download previous node versions, see :ref:`Previous node versions`. -Ubuntu ------- +.. _mainnet-node-downloads: + +.. dropdown:: Mainnet + + .. dropdown:: Ubuntu |mainnet-node-version| + + To run a node on a server with Ubuntu, you need a Debian package. + + - `Download the Mainnet Debian package `_ + + - SHA256 checksum of the download: :substitution-code:`|node-deb-package-checksum|` + - :ref:`Verification instructions ` + + To learn how to run a node with Ubuntu, see :ref:`Run a node on a server with Ubuntu `. + + .. dropdown:: Linux-Docker |mainnet-node-version| + + .. _concordium-docker-package-download: + + To learn how to run a node with Docker, see :ref:`Run a node with Docker `. + + To upgrade your Docker node either restart the service if you are using the `:latest` image tag, or change the image tag to the new version. See :ref:`Running/upgrading a node` for details. + + .. dropdown:: Windows |mainnet-node-version| + + To run a node on Windows, you need a Windows Installer package. **Please be aware that you should backup your configuration, as the installer will overwrite the current configuration with a standard configuration.** + + - `Download the Mainnet Windows Installer package `_ -To run a node on a server with Ubuntu, you need a Debian package. + To learn how to run a node on Windows, see :ref:`Run and manage a node on Windows `. - - `Download the Mainnet Debian package `_ + .. dropdown:: Mac |mainnet-node-version| - - SHA256 checksum of the download: :substitution-code:`|node-deb-package-checksum|` - - :ref:`Verification instructions ` + To run a node on macOS, you need a macOS installer package. - To learn how to run a node with Ubuntu, see :ref:`Run a node on a server with Ubuntu `. + - `Download the Mainnet macOS installer package `_ -Linux-Docker ------------- + To learn how to run a node on Mac, see :ref:`Run and manage a node on macOS `. -.. _concordium-docker-package-download: +.. _testnet-node-downloads: -To learn how to run a node with Docker, see :ref:`Run a node with Docker `. +.. dropdown:: Testnet -To upgrade your Docker node either restart the service if you are using the `:latest` image tag, or change the image tag to the new version. See :ref:`Running/upgrading a node` for details. + .. dropdown:: Ubuntu |testnet-node-version| -Windows -------- + To run a node on a server with Ubuntu, you need a Debian package. -To run a node on Windows, you need a Windows Installer package. **Please be aware that you should backup your configuration, as the installer will overwrite the current configuration with a standard configuration.** + - `Download the Testnet Debian package `_ - - `Download the Mainnet Windows Installer package `_ + - SHA256 checksum of the download: ``51841534d17d7466f2ee1fb1b10d7d72bd009dd6c0cb53d414a632792a1a1b83`` -To learn how to run a node on Windows, see :ref:`Run and manage a node on Windows `. + To learn how to run a node with Ubuntu, see :ref:`Run a node on a server with Ubuntu `. -Mac ---- + .. dropdown:: Linux-Docker |testnet-node-version| -To run a node on macOS, you need a macOS installer package. + .. _concordium-docker-package-download-testnet: - - `Download the Mainnet macOS installer package `_ + To learn how to run a node with Docker, see :ref:`Run a node with Docker `. -To learn how to run a node on Mac, see :ref:`Run and manage a node on macOS `. + To upgrade your Docker node either restart the service if you are using the `:latest` image tag, or change the image tag to the new version. See :ref:`Running/upgrading a node` for details. + + .. dropdown:: Windows |testnet-node-version| + + To run a node on Windows, you need a Windows Installer package. **Please be aware that you should backup your configuration, as the installer will overwrite the current configuration with a standard configuration.** + + - `Download the Testnet Windows Installer package `_ + + To learn how to run a node on Windows, see :ref:`Run and manage a node on Windows `. + + .. dropdown:: Mac |testnet-node-version| + + To run a node on macOS, you need a macOS installer package. + + - `Download the Testnet macOS installer package `_ + + To learn how to run a node on Mac, see :ref:`Run and manage a node on macOS `. Genesis block ============= @@ -200,11 +298,24 @@ Genesis block The genesis block is included in node distributions. Download the block separately to inspect it or to run a node in a custom configuration. -- `Download the mainnet genesis block `_ +.. _mainnet-genesis-block: + +.. dropdown:: Mainnet + + - `Download the mainnet genesis block `_ + + - SHA256 checksum of the download: :substitution-code:`|mainnet-genesis-block-checksum|` + - :ref:`Verification instructions ` + +.. _testnet-genesis-block: + +.. dropdown:: Testnet + + - `Download the testnet genesis block `_ - - SHA256 checksum of the download: :substitution-code:`|mainnet-genesis-block-checksum|` - - :ref:`Verification instructions ` + - SHA256 checksum of the download: ``69db4360f0a16414db86a920513600cfe29241c0c713a07d8e79dad19103e91d`` +.. _downloads-auxiliary-tools: Auxiliary tools =============== diff --git a/source/mainnet/net/mobile-wallet/change-passcode-mw.rst b/source/mainnet/net/mobile-wallet/change-passcode-mw.rst index c3a8afa5f7..7bc423b34d 100644 --- a/source/mainnet/net/mobile-wallet/change-passcode-mw.rst +++ b/source/mainnet/net/mobile-wallet/change-passcode-mw.rst @@ -5,7 +5,7 @@ Update your passcode and biometric settings =========================================== -If you want to change your passcode or enable/disable your biometrics (on a mobile device), you can do so from the **More** page. +If you want to change your passcode or enable/disable your biometrics (on a mobile device), following the directions below for your wallet. .. Note:: You can't change your passcode, password, or biometrics if you have pending identities or accounts in your wallet. @@ -54,10 +54,26 @@ If you want to change your passcode or enable/disable your biometrics (on a mobi #. Choose whether or not to enable biometrics. +.. dropdown:: Desktop Wallet + + #. Click |dw-wallet-settings| to go to the Settings page. + + #. Click **Change wallet password**. + + #. Enter your current password. **You cannot change the password unless you know the current password.** Then enter your new password and confirm your new password. Click Change password. + + .. image:: ../images/desktop-wallet/dw-change-pw.png + :width: 50% + :alt: password change dialog + .. |morepage| image:: ../images/more-ellipsis.png :alt: Three dots button :width: 40px +.. |dw-wallet-settings| image:: ../images/desktop-wallet/dw-settings-button.png + :alt: gear wheel + :width: 50px + .. |wallet-settings| image:: ../images/settings.png :alt: gear wheel :width: 40px diff --git a/source/mainnet/net/mobile-wallet/inspect-release-schedule-mw.rst b/source/mainnet/net/mobile-wallet/inspect-release-schedule-mw.rst index 51a2625012..f79b40b4a5 100644 --- a/source/mainnet/net/mobile-wallet/inspect-release-schedule-mw.rst +++ b/source/mainnet/net/mobile-wallet/inspect-release-schedule-mw.rst @@ -5,8 +5,6 @@ Inspect a release schedule ========================== -Some transfers contain a release schedule. This means that the CCD in the transfer can be seen on the account, but they are locked -until one or more specific points in time. While the funds are locked, they cannot be transferred, but they will be part of the total amount on the account. By inspecting the release schedule, you can see when the releases are unlocked. .. dropdown:: |mw-gen2| diff --git a/source/mainnet/net/nodes/run-node-ubuntu.rst b/source/mainnet/net/nodes/run-node-ubuntu.rst index 5ee0b6b3eb..c948ee9292 100644 --- a/source/mainnet/net/nodes/run-node-ubuntu.rst +++ b/source/mainnet/net/nodes/run-node-ubuntu.rst @@ -35,7 +35,7 @@ To run the node, you must install a Debian package. After installation, the ``concordium-testnet-node`` and ``concordium-testnet-node-collector`` services will be started. The services are also enabled to start automatically on system start. -#. Download the :ref:`Debian package ` +#. Download the :ref:`Debian package ` #. Install the package: diff --git a/source/mainnet/net/release-notes/release-notes-lp.rst b/source/mainnet/net/release-notes/release-notes-lp.rst new file mode 100644 index 0000000000..35b888ddc4 --- /dev/null +++ b/source/mainnet/net/release-notes/release-notes-lp.rst @@ -0,0 +1,68 @@ +.. include:: ../../variables.rst +.. _release-notes: + +============= +Release notes +============= + +Wallets +======= + +.. dropdown:: |mw-gen2| for iOS + + +.. dropdown:: |mw-gen2| for Android + + This text is just an example and will be removed prior to release to be replaced with actual text. + + v1.1.7 was released on 25 April 2023 and contains support for encrypted security preferences...blah blah blah. + + - here is a bullet about some feature of the release + - a second bullet + + **Older releases** + + - :ref:`v1.1.7 / 25 April 2023` + - :ref:`v1.1.6 / 18 April 2023` + +.. dropdown:: |bw| + +.. dropdown:: Desktop Wallet + +.. dropdown:: |mw-gen1| for iOS + +.. dropdown:: |mw-gen1| for Android + +Nodes +===== + +.. dropdown:: Mainnet + + +.. dropdown:: Testnet + + +Tools +===== + +.. dropdown:: Concordium client + +.. dropdown:: Cargo-concordium + +.. dropdown:: CCDScan + +Libraries +========= + +.. dropdown:: Smart contract Libraries + +Older release notes +=================== + +.. dropdown:: Mainnet + + - :ref:`Mainnet release notes` + +.. dropdown:: Testnet + + - :ref:`Testnet release notes` diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/release-notes/release-notes-mainnet.rst similarity index 99% rename from source/mainnet/net/resources/release-notes-mainnet.rst rename to source/mainnet/net/release-notes/release-notes-mainnet.rst index 090d9d7f53..b36bfaf918 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/release-notes/release-notes-mainnet.rst @@ -1,3 +1,5 @@ +:orphan: + .. include:: ../../variables.rst .. _mainnet-release-notes: diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/release-notes/release-notes.rst similarity index 99% rename from source/mainnet/net/resources/release-notes.rst rename to source/mainnet/net/release-notes/release-notes.rst index 1224e6374f..2ec7ed85be 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/release-notes/release-notes.rst @@ -1,3 +1,5 @@ +:orphan: + .. include:: ../../variables.rst .. _testnet-release-notes: diff --git a/source/mainnet/net/resources/ccd-scan-accounts.rst b/source/mainnet/net/resources/ccd-scan-accounts.rst index f242e2cb37..7a538dbfb0 100644 --- a/source/mainnet/net/resources/ccd-scan-accounts.rst +++ b/source/mainnet/net/resources/ccd-scan-accounts.rst @@ -7,6 +7,7 @@ CCDScan Accounts overview The Accounts overview shows information about accounts during the selected time range in the filter. .. image:: ../images/ccd-scan/ccd-scan-accounts.png + :alt: dark screen with graphs at top, table at bottom of account information | @@ -23,6 +24,7 @@ Below the graphs, the table contains the following: You can sort the information in the table using the following sort options: .. image:: ../images/ccd-scan/ccd-scan-account-sort.png + :alt: dark screen with options to sort the accounts overview .. _home-screen-sender: @@ -32,6 +34,7 @@ Sender/Account details When you select a sender or account, the following appears. .. image:: ../images/ccd-scan/ccd-scan-home-sender.png + :alt: dark screen showing details of single account | diff --git a/source/mainnet/net/resources/ccd-scan-blocks.rst b/source/mainnet/net/resources/ccd-scan-blocks.rst index c7853c1a03..f6fdec9b1a 100644 --- a/source/mainnet/net/resources/ccd-scan-blocks.rst +++ b/source/mainnet/net/resources/ccd-scan-blocks.rst @@ -7,6 +7,7 @@ CCDScan Blocks overview The Blocks overview shows information about the blocks created during the selected time range in the filter. .. image:: ../images/ccd-scan/ccd-scan-blocks.png + :alt: dark screen with graphs at top, table at bottom with overview of blocks | @@ -29,6 +30,7 @@ Block details When you click a block hash, the following appears: .. image:: ../images/ccd-scan/ccd-scan-home-block-hash.png + :alt: dark screen with details of a single block | diff --git a/source/mainnet/net/resources/ccd-scan-nodes.rst b/source/mainnet/net/resources/ccd-scan-nodes.rst index fc3cff7a61..670794667e 100644 --- a/source/mainnet/net/resources/ccd-scan-nodes.rst +++ b/source/mainnet/net/resources/ccd-scan-nodes.rst @@ -15,6 +15,7 @@ Nodes shows information about the nodes on Mainnet/Testnet in alphabetical order - **Fin. length**: height of the node's most recent finalized block. .. image:: ../images/ccd-scan/ccd-scan-nodes.png + :alt: dark screen with table of nodes | @@ -28,6 +29,7 @@ When you click a node name on the Nodes page, the following appears: The following information is shown in the node details: .. image:: ../images/ccd-scan/ccd-scan-node-details.png + :alt: dark screen showing details of a single node | diff --git a/source/mainnet/net/resources/ccd-scan-staking.rst b/source/mainnet/net/resources/ccd-scan-staking.rst index 0da677f4a2..69f318eb98 100644 --- a/source/mainnet/net/resources/ccd-scan-staking.rst +++ b/source/mainnet/net/resources/ccd-scan-staking.rst @@ -7,12 +7,14 @@ CCDScan Staking overview The Staking overview shows information about bakers during the selected time range in the filter: .. image:: ../images/ccd-scan/ccd-scan-bakers.png + :alt: dark screen with graphs at top, table at bottom showing baking information | The graphs show when the next payday happens, the amount of staked CCD, the number of bakers, and the total of rewards during the selected time range in the filter. The **Previous payday block** contains information about all rewards paid out for a payday period. If you click **Previous payday block**, a special block details screen for the previous pay day block appears. .. image:: ../images/ccd-scan/ccd-scan-staking-payday-block-details.png + :alt: dark screen with block details | @@ -51,6 +53,7 @@ Top delegators view If you select **Top delegaators** you see a list of all delegators sorted by their staked amount. You can see account details, including details about the delegation target (baker pool or passive delegation), and so on. The table contains the following: .. image:: ../images/ccd-scan/ccd-scan-staking-delegators.png + :alt: dark screen showing table of information about top delegators | @@ -65,6 +68,7 @@ Passive delegation view If you select **Passive delegation** it is possible to see the size of the passive delegation in total and information about the yield from delegating to passive delegation. Furthermore it is possible to see the commission rates for passive delegation. .. image:: ../images/ccd-scan/ccd-scan-passive-delegation.png + :alt: dark screen with details about passive delegation - **Delegated stake**: amount of CCD delegated to passive delegation. - **APY (7 days)**: the calculated yield of passive delegation based on past 7 days. @@ -86,6 +90,7 @@ Baker details When you click a baker ID, the following appears: .. image:: ../images/ccd-scan/ccd-scan-baker-details.png + :alt: dark screen showing details of a single baker | diff --git a/source/mainnet/net/resources/ccd-scan-transactions.rst b/source/mainnet/net/resources/ccd-scan-transactions.rst index d47c785ca3..d45aa1c211 100644 --- a/source/mainnet/net/resources/ccd-scan-transactions.rst +++ b/source/mainnet/net/resources/ccd-scan-transactions.rst @@ -7,6 +7,7 @@ CCDScan Transactions overview The Transactions overview shows information about the transactions during the selected time range in the filter. .. image:: ../images/ccd-scan/ccd-scan-transactions.png + :alt: dark transactions screen with graphs at top and table at bottom | @@ -30,6 +31,7 @@ Transaction details When you click a transaction hash, transaction information appears. The information is different depending upon whether the transaction was successful or rejected. .. image:: ../images/ccd-scan/ccd-scan-home-transaction-success.png + :alt: dark screen showing details of single successful transaction | @@ -47,6 +49,7 @@ A successful transaction shows the **Events** that were the result of the transa If the transaction was rejected, you see something similar to the following: .. image:: ../images/ccd-scan/ccd-scan-home-transaction-reject.png + :alt: dark screen showing dtails of a single rejected transaction | diff --git a/source/mainnet/net/resources/ccd-scan.rst b/source/mainnet/net/resources/ccd-scan.rst index 1788d361e2..d570a87bf7 100644 --- a/source/mainnet/net/resources/ccd-scan.rst +++ b/source/mainnet/net/resources/ccd-scan.rst @@ -33,6 +33,7 @@ Home On the Home page that appears when you navigate to CCDScan, you see the following information: .. image:: ../images/ccd-scan/ccd-scan-overview.png + :alt: dark screen with graphs and top and table at bottom | @@ -51,6 +52,7 @@ On the Home page that appears when you navigate to CCDScan, you see the followin In Latest blocks and Latest transactions click on information in the highlighted columns for details about the :ref:`block`, :ref:`baker`, :ref:`transaction`, or :ref:`sender`. .. image:: ../images/ccd-scan/ccd-scan-home-clickable.png + :alt: dark screen with graphs and top and table at bottom; clickable columns highlighted | diff --git a/source/mainnet/smart-contracts-v0/sc-v0-rollup.rst b/source/mainnet/smart-contracts-v0/sc-v0-rollup.rst new file mode 100644 index 0000000000..b914f6f8e8 --- /dev/null +++ b/source/mainnet/smart-contracts-v0/sc-v0-rollup.rst @@ -0,0 +1,17 @@ +.. _v0-smart-contracts-rollup: + +================== +V0 Smart Contracts +================== + +V0 smart contracts can still be used on the Concordium blockchain, however, there is no development on tooling for v0 smart contracts and the smart contract libraries Concordium provides do not support v0 smart contracts. + +.. toctree:: + :includehidden: + :maxdepth: 1 + + Introduction and general guides<../smart-contracts-v0/general/introduction> + Tutorials <../smart-contracts-v0/tutorials/piggy-bank/index> + Contract development guides <../smart-contracts-v0/guides/contract-dev-guides> + On-chain guides <../smart-contracts-v0/guides/on-chain-index> + References <../smart-contracts-v0/references/index> diff --git a/source/mainnet/smart-contracts/guides/quick-start.rst b/source/mainnet/smart-contracts/guides/quick-start.rst index e6f35ba7da..d3833b19c9 100644 --- a/source/mainnet/smart-contracts/guides/quick-start.rst +++ b/source/mainnet/smart-contracts/guides/quick-start.rst @@ -14,9 +14,9 @@ Before starting, it is a good idea to read the :ref:`Smart contracts best practi Download and install the following tools in this order: #. `rustup`_ - #. :ref:`cargo-concordium` - #. :ref:`concordium-client` - #. :ref:`a node` for deploying and interacting + #. :ref:`cargo-concordium` + #. :ref:`concordium-client` + #. :ref:`a node` for deploying and interacting For more detailed information, see :ref:`Install tools for development`. diff --git a/source/mainnet/smart-contracts/tutorials/setup-env.rst b/source/mainnet/smart-contracts/tutorials/setup-env.rst index 13f15f7e40..48ebcaa135 100644 --- a/source/mainnet/smart-contracts/tutorials/setup-env.rst +++ b/source/mainnet/smart-contracts/tutorials/setup-env.rst @@ -28,7 +28,7 @@ During Wasm installation in your system you should see something similar to belo .. image:: images/mint-wasm-install.png :width: 100% -Now you need to install the Concordium software package. :ref:`Click here` and download the version 2.2.0 or greater of ``cargo-concordium`` for your operating system. The tool is the same for both testnet and mainnet. +Now you need to install the Concordium software package. :ref:`Click here` and download the version 2.2.0 or greater of ``cargo-concordium`` for your operating system. The tool is the same for both testnet and mainnet. First, rename the ``cargo-congordium-v.x.x`` file to ``cargo-concordium``. Then go to the directory where the file is downloaded and run this command to make it executable. You also need to move the ``cargo-concordium`` executable to the cargo folder. :ref:`Follow the information here` to ensure that your cargo-concordium is configured correctly. The commands below are specifically for MacOS. Remember to adjust the commands based on your operating system. @@ -57,7 +57,7 @@ If everything is correct, when you enter the command ``cargo concordium --help`` Install Concordium Client ========================= -The tutorials use ``concordium-client`` as a command line tool to deploy, mint, and transfer. :ref:`Download it here`. Rename the package to ``concordium-client`` in case it has some version annotation. +The tutorials use ``concordium-client`` as a command line tool to deploy, mint, and transfer. :ref:`Download it here`. Rename the package to ``concordium-client`` in case it has some version annotation. .. note:: diff --git a/source/mainnet/smart-contracts/tutorials/wCCD/wCCD-front-end-set-up.rst b/source/mainnet/smart-contracts/tutorials/wCCD/wCCD-front-end-set-up.rst index cfd81d3a07..531e9fe727 100644 --- a/source/mainnet/smart-contracts/tutorials/wCCD/wCCD-front-end-set-up.rst +++ b/source/mainnet/smart-contracts/tutorials/wCCD/wCCD-front-end-set-up.rst @@ -210,7 +210,7 @@ to their own hosted Concordium node. .. image:: ./images/wCCD_tutorial_13.png :width: 30 % - You have to enter your private key into the |bw|. You might have already an account in the ``concordium-client`` or in the ``Concordium mobile wallet``. You can decrypt the private keys of these accounts and use them in the |bw|. Download the :ref:`utils tool` under the auxiliary tools section. This tool is able to decode your encrypted key. You can find additional information on the utils tool and how to decrypt your keys :ref:`here`. + You have to enter your private key into the |bw|. You might have already an account in the ``concordium-client`` or in the ``Concordium mobile wallet``. You can decrypt the private keys of these accounts and use them in the |bw|. Download the :ref:`utils tool` under the auxiliary tools section. This tool is able to decode your encrypted key. You can find additional information on the utils tool and how to decrypt your keys :ref:`here`. You have to enter the private key and the associated account into the browser wallet similar to the below string. diff --git a/source/mainnet/variables.rst b/source/mainnet/variables.rst index 5a9a7e0039..b2660b9a5c 100644 --- a/source/mainnet/variables.rst +++ b/source/mainnet/variables.rst @@ -27,6 +27,11 @@ .. |node-deb-package| replace:: concordium-mainnet-node_5.1.3-0_amd64.deb .. |node-deb-package-checksum| replace:: be10622086fe1225480e68303aab05fcc806150c51327afa7f19c8289600fb6b +.. Node version variables + +.. |mainnet-node-version| replace:: 5.2.4 +.. |testnet-node-version| replace:: 5.2.4 + .. Mainnet genesis block verification variables .. |mainnet-genesis-block| replace:: genesis.dat .. |mainnet-genesis-block-checksum| replace:: 5fe6a62824d5b0dba6143243e90987ddf3e15cca079f21992de04d078d9ea6dc From 0eed6ee37286f9b74e007a3b4b77d97c204129a4 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Mon, 24 Apr 2023 15:03:48 +0200 Subject: [PATCH 009/193] Minor cleanup of wccd tutorial change --- .../smart-contracts/tutorials/wCCD/wCCD-front-end-set-up.rst | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/source/mainnet/smart-contracts/tutorials/wCCD/wCCD-front-end-set-up.rst b/source/mainnet/smart-contracts/tutorials/wCCD/wCCD-front-end-set-up.rst index 0302880e9e..525575d36c 100644 --- a/source/mainnet/smart-contracts/tutorials/wCCD/wCCD-front-end-set-up.rst +++ b/source/mainnet/smart-contracts/tutorials/wCCD/wCCD-front-end-set-up.rst @@ -212,9 +212,7 @@ part of the Concordium blockchain. .. image:: ./images/wCCD_tutorial_13.png :width: 30 % - You have to enter your private key into the |bw|. You might have already an account in the ``concordium-client`` or in the ``Concordium mobile wallet``. You can decrypt the private keys of these accounts and use them in the |bw|. Download the :ref:`utils tool` under the auxiliary tools section. This tool is able to decode your encrypted key. You can find additional information on the utils tool and how to decrypt your keys :ref:`here`. - - You have to enter the private key and the associated account into the browser wallet similar to the below string. + You have to enter your private key into the |bw| similar to the below string. You might have already an account in the ``concordium-client`` or in the ``Concordium mobile wallet``. You can decrypt the private keys of these accounts and use them in the |bw|. Download the :ref:`utils tool` under the auxiliary tools section. This tool is able to decode your encrypted key. You can find additional information on the utils tool and how to decrypt your keys :ref:`here`. .. code-block:: console From 73f6819da52a40734254fbf40266d146c20b9cc6 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Tue, 25 Apr 2023 08:48:28 +0200 Subject: [PATCH 010/193] Fix linting errors --- source/mainnet/net/guides/scheduled-release.rst | 2 +- source/mainnet/net/installation/downloads.rst | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/mainnet/net/guides/scheduled-release.rst b/source/mainnet/net/guides/scheduled-release.rst index 741799fe66..bdda637d4b 100644 --- a/source/mainnet/net/guides/scheduled-release.rst +++ b/source/mainnet/net/guides/scheduled-release.rst @@ -6,7 +6,7 @@ Scheduled releases ================== -Some transfers contain a release schedule. This means that the CCD in the transfer can be seen on the account, but they are locked until one or more specific points in time. While the funds are locked, they cannot be transferred, but they will be part of the total amount on the account. Scheduled releases can only be created in the Desktop Wallet. You can inspect when funds will be released in Desktop Wallet, |mw-gen2|, and |mw-gen1|. +Some transfers contain a release schedule. This means that the CCD in the transfer can be seen on the account, but they are locked until one or more specific points in time. While the funds are locked, they cannot be transferred, but they will be part of the total amount on the account. Scheduled releases can only be created in the Desktop Wallet. You can inspect when funds will be released in Desktop Wallet, |mw-gen2|, and |mw-gen1|. .. toctree:: diff --git a/source/mainnet/net/installation/downloads.rst b/source/mainnet/net/installation/downloads.rst index 1629dff5e6..abc14e9f9f 100644 --- a/source/mainnet/net/installation/downloads.rst +++ b/source/mainnet/net/installation/downloads.rst @@ -199,7 +199,7 @@ Download cargo-concordium: - SHA256 checksum of the download: :substitution-code:`|cargo-linux-checksum|` - :ref:`Verification instructions ` -_ + - `Download Mainnet cargo-concordium for MacOS `_ then unzip the file and move it to the correct location. - `Download Mainnet cargo-concordium for Windows `_ @@ -220,7 +220,7 @@ For the system requirements to run a node, see :ref:`System requirements to run .. dropdown:: Mainnet .. dropdown:: Ubuntu |mainnet-node-version| - + To run a node on a server with Ubuntu, you need a Debian package. - `Download the Mainnet Debian package `_ From 73d8352951f57fe3c9271c7c1014f7c943b873e6 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Tue, 25 Apr 2023 10:04:04 +0200 Subject: [PATCH 011/193] Added necessary updates for release --- source/mainnet/net/concepts/id-accounts.rst | 4 ++-- source/mainnet/net/guides/create-account.rst | 2 +- source/mainnet/net/guides/create-identity.rst | 2 +- source/mainnet/net/guides/deciding-wallet.rst | 4 ++-- source/mainnet/net/installation/downloads-testnet.rst | 2 +- source/mainnet/net/installation/downloads.rst | 2 +- source/mainnet/net/references/manage-accounts.rst | 2 +- source/mainnet/net/resources/release-notes-mainnet.rst | 7 +++++++ source/mainnet/net/resources/release-notes.rst | 7 +++++++ 9 files changed, 23 insertions(+), 9 deletions(-) diff --git a/source/mainnet/net/concepts/id-accounts.rst b/source/mainnet/net/concepts/id-accounts.rst index 87720313ca..272899dc54 100644 --- a/source/mainnet/net/concepts/id-accounts.rst +++ b/source/mainnet/net/concepts/id-accounts.rst @@ -50,7 +50,7 @@ You can :ref:`create identities` in the Desktop Wallet, .. Note:: - It is no longer possible for users of |mw-gen1| on an Android device to create new identities. + It is no longer possible for users of |mw-gen1| to create new identities. Identity issuance requires *Identity Verification*, which is the process of verifying the real-life identity of the user. This typically requires taking photographs or scans of identification documents, such as a passport. Identity verification also checks that the user-chosen attributes are valid for the user. @@ -68,7 +68,7 @@ Any time you create a new account in |mw-gen1|, you should make a :ref:`backup` in the |mw-gen1|. You do this from the **Identities** page. diff --git a/source/mainnet/net/guides/deciding-wallet.rst b/source/mainnet/net/guides/deciding-wallet.rst index 9e6bea612c..2756b73895 100644 --- a/source/mainnet/net/guides/deciding-wallet.rst +++ b/source/mainnet/net/guides/deciding-wallet.rst @@ -36,7 +36,7 @@ The wallets work on two different environments: the Desktop Wallet on a computer .. Note:: - If you are a new mobile wallet user, you must use the |mw-gen2|. It is no longer possible for users of |mw-gen1| on an Android device to create new accounts. + If you are a new mobile wallet user, you must use the |mw-gen2|. It is no longer possible for users of |mw-gen1| to create new accounts. The following provides more details on the differences between the wallets. @@ -95,7 +95,7 @@ The following table lists the major features of each wallet. - |bw| * - Runs on MacOS, Windows, Linux - Runs on iOS 13 or later, Android 8 or later - - Runs on iOS 13 or later, Android 8 or later + - Runs on iOS 15 or later, Android 8 or later - Runs on Chrome, Brave, Opera, Edge * - Secured by password and a LEDGER device - Secured by password and biometrics diff --git a/source/mainnet/net/installation/downloads-testnet.rst b/source/mainnet/net/installation/downloads-testnet.rst index cf72c1595a..4e3ccf45f9 100644 --- a/source/mainnet/net/installation/downloads-testnet.rst +++ b/source/mainnet/net/installation/downloads-testnet.rst @@ -11,7 +11,7 @@ This topic contains information about where you can download the Concordium Wall |mw-gen2| ======================== -The |mw-gen2| is available for iOS and Android™. The |mw-gen2| supports iOS 13 or later and Android 8 or later. +The |mw-gen2| is available for iOS and Android™. The |mw-gen2| supports iOS 15 or later and Android 8 or later. .. Note:: diff --git a/source/mainnet/net/installation/downloads.rst b/source/mainnet/net/installation/downloads.rst index 2bdcc57ddb..831f0f9d49 100644 --- a/source/mainnet/net/installation/downloads.rst +++ b/source/mainnet/net/installation/downloads.rst @@ -14,7 +14,7 @@ This topic contains information about where you can download the Concordium Wall |mw-gen2| ======================== -The |mw-gen2| is available for iOS and Android™. The |mw-gen2| supports iOS 13 or later and Android 8 or later. +The |mw-gen2| is available for iOS and Android™. The |mw-gen2| supports iOS 15 or later and Android 8 or later. .. Note:: diff --git a/source/mainnet/net/references/manage-accounts.rst b/source/mainnet/net/references/manage-accounts.rst index a80691c9d4..8b759d4d22 100644 --- a/source/mainnet/net/references/manage-accounts.rst +++ b/source/mainnet/net/references/manage-accounts.rst @@ -198,7 +198,7 @@ The |mw-gen1| is a digital smartphone wallet that enables you to create and mana .. Note:: - It is no longer possible for users of |mw-gen1| on an Android device to create new accounts. + It is no longer possible for users of |mw-gen1| to create new accounts. The |mw-gen2| ------------------ diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index 74275c8a7b..9e9a2486b2 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -22,6 +22,13 @@ A minor change to the identity user interface was made to support integration wi Fixed a crash caused by a change implemented by identity provider Notabene where the user is asked for access to the microphone, and if denied, crashed the app. Microphone access is required by the identity provider for proof-of-life. +The |mw-gen2| for iOS now requires iOS 15 as the minimum version. + +|mw-gen1| for iOS 3.2.0 +-------------------------------- + +Identity and account creation has been locked in |mw-gen1| for iOS devices. This means that you cannot create new identities or accounts in |mw-gen1| on an iOS device. You can continue to use |mw-gen1|, but if you need to create a new identity or account you must use |mw-gen2|. You can also still recover your wallet from a backup file in |mw-gen1| on an iOS device. + April 12, 2023 Cargo concordium 2.7.1 diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index b418f66865..88b0a7231c 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -22,6 +22,13 @@ Also, a minor change was made to support integration with eID verifiers. Fixed a crash caused by a change implemented by identity provider Notabene where the user is asked for access to the microphone, and if denied, crashed the app. Microphone access is required by the identity provider for proof-of-life. +The |mw-gen2| for iOS now requires iOS 15 as the minimum version. + +|mw-gen1| for iOS 3.2.0 +-------------------------------- + +Identity and account creation has been locked in |mw-gen1| for iOS devices. This means that you cannot create new identities or accounts in |mw-gen1| on an iOS device. You can continue to use |mw-gen1|, but if you need to create a new identity or account you must use |mw-gen2|. You can also still recover your wallet from a backup file in |mw-gen1| on an iOS device. + April 20, 2023 Concordium Node 5.3.2 From 6c7994a425b7a64e6c1412ed5711dead3431f951 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Tue, 25 Apr 2023 10:08:04 +0200 Subject: [PATCH 012/193] Fix lint error --- source/mainnet/net/guides/create-identity.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/create-identity.rst b/source/mainnet/net/guides/create-identity.rst index 0c44ab11be..f0ef5c190e 100644 --- a/source/mainnet/net/guides/create-identity.rst +++ b/source/mainnet/net/guides/create-identity.rst @@ -88,7 +88,7 @@ To learn more about identities and accounts, see :ref:`Identities ` in the |mw-gen1|. You do this from the **Identities** page. From bb085094b632722b793bcc99112c483c8417429b Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Tue, 25 Apr 2023 10:15:33 +0200 Subject: [PATCH 013/193] Android 1.1.8 release --- source/mainnet/net/resources/release-notes-mainnet.rst | 9 +++++++++ source/mainnet/net/resources/release-notes.rst | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index bb4caa0190..989f1bc77f 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -11,6 +11,15 @@ Release notes - Mainnet To subscribe to updates on the Mainnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. +May XX, 2023 + +|mw-gen2| for Android 1.1.8 +----------------------------------------- + +The terms and conditions have been updated and now point to a link where you can read the updated terms and conditions before accepting. Additionally, when the terms and conditions have been updated, you will be prompted to accept them again. + +A minor change to the identity user interface was made to support integration with eID verifiers. + April 12, 2023 Cargo concordium 2.7.1 diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index 4adb333978..1491b10ee2 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -11,6 +11,15 @@ Release Notes - Testnet To subscribe to updates on the Testnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. +May XX, 2023 + +|mw-gen2| for Android 1.1.8 +----------------------------------------- + +The terms and conditions have been updated and now point to a link where you can read the updated terms and conditions before accepting. Additionally, when the terms and conditions have been updated, you will be prompted to accept them again. + +A minor change to the identity user interface was made to support integration with eID verifiers. + April 20, 2023 Concordium Node 5.3.2 From 6654d1de6486d7202d0aec53e2f3e2107a373562 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Thu, 4 May 2023 12:47:54 +0200 Subject: [PATCH 014/193] Update source/mainnet/net/resources/release-notes-mainnet.rst Co-authored-by: jens-concordium <76045015+jens-concordium@users.noreply.github.com> --- source/mainnet/net/resources/release-notes-mainnet.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index 989f1bc77f..e093236da9 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -16,7 +16,7 @@ May XX, 2023 |mw-gen2| for Android 1.1.8 ----------------------------------------- -The terms and conditions have been updated and now point to a link where you can read the updated terms and conditions before accepting. Additionally, when the terms and conditions have been updated, you will be prompted to accept them again. +The prompt to review the terms and conditions has been updated, and it now points to a link where you can read the newest version of the terms and conditions before accepting. Additionally a new prompt will be shown in the wallet, if the terms and conditions are updated, so it no longer happens only after updating the application. A minor change to the identity user interface was made to support integration with eID verifiers. From 3672dfa697c4e45ed52844d46371d661f472067f Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Thu, 4 May 2023 12:48:03 +0200 Subject: [PATCH 015/193] Update source/mainnet/net/resources/release-notes.rst Co-authored-by: jens-concordium <76045015+jens-concordium@users.noreply.github.com> --- source/mainnet/net/resources/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index 1491b10ee2..fa8b7127e9 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -16,7 +16,7 @@ May XX, 2023 |mw-gen2| for Android 1.1.8 ----------------------------------------- -The terms and conditions have been updated and now point to a link where you can read the updated terms and conditions before accepting. Additionally, when the terms and conditions have been updated, you will be prompted to accept them again. +The prompt to review the terms and conditions has been updated, and it now points to a link where you can read the newest version of the terms and conditions before accepting. Additionally a new prompt will be shown in the wallet, if the terms and conditions are updated, so it no longer happens only after updating the application. A minor change to the identity user interface was made to support integration with eID verifiers. From 6b637734f4aad02a162a6416ac5237ae20fa4c42 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Thu, 4 May 2023 12:50:52 +0200 Subject: [PATCH 016/193] Update release-notes-mainnet.rst --- source/mainnet/net/resources/release-notes-mainnet.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index 361bc05b8b..8586b59ff3 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -16,7 +16,7 @@ May XX, 2023 |mw-gen2| for Android 1.1.8 ----------------------------------------- -The prompt to review the terms and conditions has been updated, and it now points to a link where you can read the newest version of the terms and conditions before accepting. Additionally a new prompt will be shown in the wallet, if the terms and conditions are updated, so it no longer happens only after updating the application. +The prompt to review the terms and conditions has been updated, and it now points to a link where you can read the newest version of the terms and conditions before accepting. Additionally a new prompt will be shown in the wallet, if the terms and conditions are updated, so it no longer happens only after updating the application. A minor change to the identity user interface was made to support integration with eID verifiers. From 6070ac01c63f1f48fb8e5e644677a35042723497 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Thu, 4 May 2023 12:51:09 +0200 Subject: [PATCH 017/193] Update release-notes.rst --- source/mainnet/net/resources/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index d185bc1f2f..433f8da807 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -16,7 +16,7 @@ May XX, 2023 |mw-gen2| for Android 1.1.8 ----------------------------------------- -The prompt to review the terms and conditions has been updated, and it now points to a link where you can read the newest version of the terms and conditions before accepting. Additionally a new prompt will be shown in the wallet, if the terms and conditions are updated, so it no longer happens only after updating the application. +The prompt to review the terms and conditions has been updated, and it now points to a link where you can read the newest version of the terms and conditions before accepting. Additionally a new prompt will be shown in the wallet, if the terms and conditions are updated, so it no longer happens only after updating the application. A minor change to the identity user interface was made to support integration with eID verifiers. From be5324928e169587b4fe6b8bff5ae86d870d0827 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Thu, 4 May 2023 12:55:28 +0200 Subject: [PATCH 018/193] Update release-notes-mainnet.rst --- source/mainnet/net/resources/release-notes-mainnet.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index 9e9a2486b2..f6d49bdeda 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -16,7 +16,7 @@ April 27, 2023 |mw-gen2| for iOS 1.0.1 ------------------------------- -The terms and conditions have been updated and now point to a link where you can read the updated terms and conditions before accepting. Additionally, when the terms and conditions have been updated, you will be prompted to accept them again. +The prompt to review the terms and conditions has been updated, and it now points to a link where you can read the newest version of the terms and conditions before accepting. Additionally, a new prompt will be shown in the wallet if the terms and conditions are updated, so it no longer happens only after updating the application. A minor change to the identity user interface was made to support integration with eID verifiers. From ab2778dbb344979c56504b8da9fcb1224ff0cb41 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Thu, 4 May 2023 12:56:36 +0200 Subject: [PATCH 019/193] Update release-notes.rst --- source/mainnet/net/resources/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index 88b0a7231c..804d7b0de4 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -16,7 +16,7 @@ April 27, 2023 |mw-gen2| for iOS 1.0.1 ------------------------------- -The terms and conditions have been updated and now point to a link where you can read the updated terms and conditions before accepting. Additionally, when the terms and conditions have been updated, you will be prompted to accept them again. +The prompt to review the terms and conditions has been updated, and it now points to a link where you can read the newest version of the terms and conditions before accepting. Additionally, a new prompt will be shown in the wallet if the terms and conditions are updated, so it no longer happens only after updating the application. Also, a minor change was made to support integration with eID verifiers. From f6cd68a4a3591f580a55219d681e929ad750010c Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Thu, 4 May 2023 12:58:21 +0200 Subject: [PATCH 020/193] Update release-notes-mainnet.rst --- source/mainnet/net/resources/release-notes-mainnet.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index 8586b59ff3..2410f482e0 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -16,7 +16,7 @@ May XX, 2023 |mw-gen2| for Android 1.1.8 ----------------------------------------- -The prompt to review the terms and conditions has been updated, and it now points to a link where you can read the newest version of the terms and conditions before accepting. Additionally a new prompt will be shown in the wallet, if the terms and conditions are updated, so it no longer happens only after updating the application. +The prompt to review the terms and conditions has been updated, and it now points to a link where you can read the newest version of the terms and conditions before accepting. Additionally, a new prompt will be shown in the wallet if the terms and conditions are updated, so it no longer happens only after updating the application. A minor change to the identity user interface was made to support integration with eID verifiers. From cb725ec259c87bd1982429a49da0cbcfe9d13a6f Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Thu, 4 May 2023 12:58:38 +0200 Subject: [PATCH 021/193] Update release-notes.rst --- source/mainnet/net/resources/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index 433f8da807..9329de0450 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -16,7 +16,7 @@ May XX, 2023 |mw-gen2| for Android 1.1.8 ----------------------------------------- -The prompt to review the terms and conditions has been updated, and it now points to a link where you can read the newest version of the terms and conditions before accepting. Additionally a new prompt will be shown in the wallet, if the terms and conditions are updated, so it no longer happens only after updating the application. +The prompt to review the terms and conditions has been updated, and it now points to a link where you can read the newest version of the terms and conditions before accepting. Additionally, a new prompt will be shown in the wallet if the terms and conditions are updated, so it no longer happens only after updating the application. A minor change to the identity user interface was made to support integration with eID verifiers. From 57b5fac7772bbe9669d7cc5055a1648c11f58dc6 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Thu, 4 May 2023 14:53:38 +0200 Subject: [PATCH 022/193] Update create-account.rst --- source/mainnet/net/guides/create-account.rst | 44 +------------------- 1 file changed, 1 insertion(+), 43 deletions(-) diff --git a/source/mainnet/net/guides/create-account.rst b/source/mainnet/net/guides/create-account.rst index 6649c5a0c1..5a0ce768b2 100644 --- a/source/mainnet/net/guides/create-account.rst +++ b/source/mainnet/net/guides/create-account.rst @@ -87,49 +87,7 @@ To learn more about identities and accounts, see :ref:`Identities `. - - .. Note:: - To access the **Balance** of the new account, tap the Balance area on the account card or tap |moredetails|. + It is no longer possible for users of |mw-gen1| to create new accounts. .. dropdown:: |bw| From f0b1c4f8e19ea52c63f18ca498d1cde4eefe4bf7 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Thu, 4 May 2023 14:54:48 +0200 Subject: [PATCH 023/193] Update create-identity.rst --- source/mainnet/net/guides/create-identity.rst | 40 +------------------ 1 file changed, 1 insertion(+), 39 deletions(-) diff --git a/source/mainnet/net/guides/create-identity.rst b/source/mainnet/net/guides/create-identity.rst index f0ef5c190e..f50e554231 100644 --- a/source/mainnet/net/guides/create-identity.rst +++ b/source/mainnet/net/guides/create-identity.rst @@ -86,45 +86,7 @@ To learn more about identities and accounts, see :ref:`Identities ` in the |mw-gen1|. You do this from the **Identities** page. - - #. Go to the |morepage| page. - - #. Tap **Your identity cards** page. - - #. Tap the **+** in the upper right corner. - - #. Enter a name for your initial account. This name is only stored locally in the app and is only known by you. Tap **Continue**. - - #. Enter a name for your identity. Again, this name is only stored locally in the app and only known by you. Tap **Continue to identity providers**. - - - .. image:: ../images/mobile-wallet/MW10.png - :width: 25% - - #. Select a third-party identity provider from the list. An external web page opens within the app. - - .. image:: ../images/mobile-wallet/MW11.png - :width: 25% - - #. Enter the information requested by the third-party identity provider. The information might vary depending on the identity provider. However, they will ask you to provide photos of identification documents and a selfie. - - #. When you have submitted the information to the identity provider, you will have a pending identity in your app. The verification or rejection is usually retrieved from the identity provider within minutes, but check your app frequently to retrieve the result. It might take up to seven days for the result to appear. - - .. image:: ../images/mobile-wallet/MW12.png - :width: 25% - - .. Warning:: - **When your identity and initial account has been verified, backup is essential. If you lose your mobile phone or need to restore your mobile phone and you don't have a backup from the Mobile Wallet, you can't access your wallet and your CCDs are permanently inaccessible.** - **Concordium does not take any responsibility if you lose access to your accounts. Concordium strongly advise you to complete a backup every time you create an account and store the backup file in a secure place - preferably offline.** - For more information, see :ref:`Make a backup of identities and accounts in Mobile Wallet`. - - .. Note:: - To access the **Balance** of the new account, tap the Balance area on the account card or tap More. + It is no longer possible for users of |mw-gen1| to create new identities. .. dropdown:: |bw| From 327fe3dfb5a4755d505e6457c247fafbeae61a24 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Mon, 8 May 2023 09:04:36 +0200 Subject: [PATCH 024/193] Update T&C --- source/mainnet/net/resources/legal.rst | 3 +- .../terms-and-conditions-mw-gen2.rst | 166 ------------------ 2 files changed, 1 insertion(+), 168 deletions(-) delete mode 100644 source/mainnet/net/resources/terms-and-conditions-mw-gen2.rst diff --git a/source/mainnet/net/resources/legal.rst b/source/mainnet/net/resources/legal.rst index debc9aeefc..f8c5efead0 100644 --- a/source/mainnet/net/resources/legal.rst +++ b/source/mainnet/net/resources/legal.rst @@ -9,10 +9,9 @@ The following topics relate to terms and conditions of use as well as notices an .. toctree:: :maxdepth: 1 + terms-and-conditions terms-and-conditions-dw - terms-and-conditions-mw-gen2 terms-and-conditions-mw - terms-and-conditions-bw third-party-licenses third-party-notices bw-licenses diff --git a/source/mainnet/net/resources/terms-and-conditions-mw-gen2.rst b/source/mainnet/net/resources/terms-and-conditions-mw-gen2.rst deleted file mode 100644 index d42a44dd3c..0000000000 --- a/source/mainnet/net/resources/terms-and-conditions-mw-gen2.rst +++ /dev/null @@ -1,166 +0,0 @@ -.. include:: ../../variables.rst -.. _terms-and-conditions-mw-gen2: - -.. todo:: - - Remember to request wallet proxy update when T&C updated - -===================================================== -Terms and Conditions for Concordium Wallet for Mobile -===================================================== - -Effective from September 1, 2022 - -Introduction -============ - -Concordium Wallet for Mobile is a digital wallet that is offered by Concordium Software ApS (‘Concordium Software’). At `developer.concordium.software `_ you can read about how the app works. Concordium Software may continually change and/or adjust the functions of Concordium Wallet for Mobile. Concordium Software’s terms and conditions apply to Concordium Wallet for Mobile users. - -The wallet itself will register and use data about you. Concordium Software will not register or use data about you. - -Terms and conditions for all services and functions -=================================================== - -Parties to the agreement ------------------------- - -When you register with Concordium Wallet for Mobile, you enter into an agreement with: -Concordium Software ApS, Amaliegade 4, 1256 København K, Denmark. CVR no.: 42334758. Our email address is contact@concordium.software. - -What you need in order to register with Concordium Wallet for Mobile -==================================================================== - -The following is required to register with Concordium Wallet for Mobile: - -- Have a mobile device (e.g., smartphone or tablet). You can see which operating systems can be used at `developer.concordium.software `_. -- Verify your identity with an identity provider. The identity provider will know your identity. - -You must be at least 18 years old to register. - -Registering as a Concordium Wallet for Mobile user -================================================== - -When you register in Concordium Wallet for Mobile, you will generate private keys and you will receive a unique 24-word recovery phrase that must be stored in a safe place. The recovery phrase is the “master key” for all of your accounts – it is your private keys in mnemonic form. These words, when entered into another Concordium Wallet (not including the Cordordium Desktop Wallet) in the correct order, will recover all of the private keys of accounts in your original wallet. The recovery phrase is used as your personal backup of your private keys. If you lose the private keys and the recovery phrase, you will lose access to any funds in the account(s) permanently. - -Before you can use Concordium Wallet for Mobile, you will need to create a digital identity certificate with an identity provider by following the instructions in the app. An identity provider is a third-party supplier and independent of Concordium Software. The Concordium Wallet for Mobile stores data in encrypted form from the identity provider, which Concordium Software does not have access to. - -After you have created your digital identity certificate and your first account, you can create additional accounts. Concordium Software may impose a limit to how many accounts you can create in a single Concordium Wallet for Mobile. - -Activation code and personal password -===================================== - -When you register in Concordium Wallet for Mobile, you will need to create a personal passcode. If your mobile device supports it, you can subsequently activate your fingerprint or use facial recognition instead of the 6-digit password. You should be aware that all fingerprints/facial recognitions linked to your mobile device can be used to log on to Concordium Wallet for Mobile and use the functions. You are therefore obliged to ensure that you have only activated your own fingerprints and your own facial recognition if you want to use them instead of the 6-digit password for access to Concordium Wallet for Mobile. Concordium Wallet for Mobile does not store your fingerprints or facial recognition. - -Other obligations etc. -====================== - -You have a duty to ensure that the details you provide are correct and updated at any given time. Your Concordium Wallet for Mobile is personal and may be used only by you. You must not disclose your passwords to others, write them down, or save them on your mobile device. You must not disclose your 24-word recovery phrase to others or store them digitally on your computer or mobile device. - -Concordium Wallet for Mobile must not be used for illegal activities or purposes. - -You must not use Concordium Wallet for Mobile in a way that harasses other Concordium blockchain users. - -All transaction requests are irreversible. You are yourself responsible for ensuring that the recipient of a transaction via Concordium Wallet for Mobile is the intended recipient, and you must verify that the transaction amount is correct. You are responsible for providing the correct account to persons and users who want to transfer funds to you. - -To prevent unauthorized use of Concordium Wallet for Mobile, you must store your mobile device so that others cannot gain unauthorized access to it. If possible, you should lock your device with a password or keypad lock. Do not disclose the password to third parties. - -You are obliged to verify your identity with an identity provider. Your identity can be revealed via the process of anonymity revocation, which can happen under stringent regulations, such as a court order. - -You are solely responsible for safekeeping your passwords, PINs, account keys, encryption keys, identity, and any other codes you use to access the Concordium Wallet for Mobile or any information, CCD, or voucher. If you lose access to the Concordium Wallet for Mobile, private keys, or identity, and you have not separately stored a backup of your accounts and the corresponding password(s), or your personal recovery phrase, you acknowledge and agree that any coins or tokens you have associated with that account will become inaccessible. - -Please note: If you have chosen to use assistants based on speech recognition (e.g., Siri) or patterns of use, this means that information about your use of Concordium Wallet for Mobile, including recipients, amounts, and messages, is sent to the provider of the assistant. Your own use of any assistant determines what information is sent. Concordium Wallet for Mobile does not send any information. - -Baking and Delegation -===================== - -Node runners are awarded CCD for running nodes on the Concordium blockchain through a process called baking. Other CCD holders can be rewarded for supporting this process through delegation. The Concordium Wallet for Mobile supports management of baking and delegation. Each account can only have one baking or delegation process active at any given time. - -While engaged in baking or delegation, the allocated CCD will remain in the account in a locked form. Termination of baking and delegation activates a cool-down period, where baking and delegation is still active, however, the CCDs will not be available in the wallet until the cool-down period is over. Read more about baking and delegation on `developer.concordium.software `_. - -When activating, managing, and terminating baking and delegation blockchain transaction fees apply. You should always ensure you have sufficient CCD in your available balance to cover these fees. - -When activating baking and delegation from the Concordium Wallet for Mobile you acknowledge and understand how these features work and that historic performance is not a guarantee for future performance. - -Concordium Software does not assume any responsibility for the amount of rewards generated from baking and delegation. - -Term -==== - -This agreement will apply between you and Concordium Software from your download of the Concordium Wallet for Mobile, and until you have completely removed the Concordium Wallet for Mobile in its entirety from your device. - -The section Concordium Software’s liability for damages shall apply indefinitely. - -Fees and charges -================ - -Concordium Software currently does not charge any fee for registration with Concordium Wallet for Mobile. Concordium Wallet for Mobile does not charge a transaction fee; however, you have to pay a transaction fee for transactions on the blockchain. - -Any other costs and charges related to your use of the Concordium Wallet for Mobile shall be paid by you, including but not limited to costs to the identity provider, if any. - -If we introduce new functions, features, products, or services, these may be subject to fees from the start without you receiving any notice of changed terms and conditions. You will always be informed about the fee before you register for the function, feature, product, or service. - -Changes -======= - -You will be notified on `developer.concordium.software `_ if we change the terms and conditions. We may change the terms and conditions without notice. You can read the terms and conditions at `developer.concordium.software `_, from which you can also print, download, or email them. - -If you do not wish to be covered by the new terms and conditions, you must notify us before the new terms and conditions enter into force. If you notify us that you do not wish to be covered by the new terms and conditions, we will consider the Concordium Wallet for Mobile agreement to be terminated from the date on which the new terms and conditions enter into force. If we do not hear from you, we will regard it as your acceptance of the changes. - -Intellectual property rights and license -======================================== - -Concordium Software retains all right, title, and interest in and to all of Concordium Software’s brands, logos, and trademarks, including, but not limited to, Concordium Mobile Wallet, |mw-gen1|, Concordium Wallet for Mobile, Concordium Desktop Wallet, |bw|, Concordium Client, and variations of the wording of the said brands, logos, and trademarks. - -Our notification of unauthorized use and security threats ---------------------------------------------------------- - -We may issue information about general security threats through `developer.concordium.software `_ and social media. - -Concordium Software’s liability for damages -=========================================== - -Concordium Software is not liable for damages for late or defective performance of the Concordium Wallet for Mobile and/or our contractual obligations resulting from error or negligence. - -Even in areas in which stricter liability applies, Concordium Software is not liable for losses arising from - -- Breakdown of or lack of access to IT systems or damage to data in these systems attributable to any of the events listed below regardless of whether Concordium Software or a third-party supplier is responsible for the operation of these systems, power failure, or breakdown of Concordium Software’s power supply system or telecommunications, statutory intervention or administrative acts, acts of God, war, revolution, riot, civil unrest, sabotage, terrorism, or vandalism (including computer virus attacks or hacking). - -- Strikes, lockouts, boycotts, or picketing, regardless of whether Concordium Software, its organization or closely related companies, is itself a party to or has started such an industrial dispute and regardless of its cause. This also applies if the dispute affects only parts of Concordium Software. - -- Other circumstances beyond or within the control of Concordium Software. - -Please be advised that Concordium Software is not liable for any defects or deficiencies in the goods or services for which you pay using Concordium Wallet for Mobile. Concordium Software accepts no liability for the fundraising campaigns to which you make contributions using Concordium Wallet for Mobile. If you have any complaints regarding the delivered goods, services, or fundraising campaigns, you must contact the seller and/or the fundraiser. - -Concordium Software does not undertake any liability for the conduct of the seller/fundraiser in general. - -Privacy -======= - -Concordium Software respects your privacy to the effect that Concordium Software will not monitor, edit, or disclose any personal information about you or your account, including its contents or your use of the Concordium Wallet for Mobile, without your prior consent unless Concordium Software in good faith beliefs that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of Concordium Software; (iii) enforce this Agreement; (iv) protect the interests of users of the Concordium Wallet for Mobile other than you or any other person; (v) operate or conduct maintenance and repair of Concordium’s services or equipment, including the Concordium Wallet for Mobile as authorized by law; or (vi) if your identity is revoked in accordance with the identity revocation process as required to comply with (i). You are assumed to have no expectation of privacy with respect to the Internet generally. Your IP address is transmitted and recorded with each message or other information you send from the Concordium Wallet for Mobile. When you create an identity with a third party supplier, you have entered an agreement directly with such a third party supplier and such a third party supplier will store data about you and in this case, the third party supplier’s privacy policy and terms and conditions apply. - -Data retention and deletion -=========================== - -Concordium as a company does not retain and therefore cannot delete any user identifiable information. However, to get an account you must obtain an identity object issued by an identity provider. The identity object contains some user identifiable information such as your name. By default the identity object is only stored encrypted in the wallet and is not visible on the chain. Some data derived from the identity object is sent to the chain, but by default it is not possible to obtain user identifiable information from the information stored in the account on the chain. However, if you choose to reveal any attributes associated with your account, these attributes will be visible on-chain, and can never be deleted. - -Governing law and venue -======================= - -The agreement and any dispute arising out of the agreement are governed by Danish law and such disputes must be heard by Copenhagen District Court or the jurisdiction of the defendant’s domicile unless otherwise provided by absolute consumer rights in Denmark. This applies without consideration for rules in international private law which may lead to the application of other law than Danish law. - -Complaints -========== - -You can always write to Concordium Software if you disagree with us. In this way, we make sure that such disagreement is not based on a misunderstanding. The address is Amaliegade 4, 1256 København K, Denmark. - -New copy of these terms and conditions -====================================== - -You can always find the latest version on `developer.concordium.software `_. - -You can contact Concordium Wallet for Mobile support via support@concordium.software. - -Acceptance -========== - -The first time you open the Concordium Wallet for Mobile, you’ll be asked to click “Yes, I Accept” to confirm that you agree to these terms and conditions. From 0633f3287bdd106dfd8f770d244cdd16701d3789 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Mon, 8 May 2023 09:07:59 +0200 Subject: [PATCH 025/193] Fix lint build error --- .../net/resources/terms-and-conditions-bw.rst | 157 ------------------ 1 file changed, 157 deletions(-) delete mode 100644 source/mainnet/net/resources/terms-and-conditions-bw.rst diff --git a/source/mainnet/net/resources/terms-and-conditions-bw.rst b/source/mainnet/net/resources/terms-and-conditions-bw.rst deleted file mode 100644 index 5d2fbf914f..0000000000 --- a/source/mainnet/net/resources/terms-and-conditions-bw.rst +++ /dev/null @@ -1,157 +0,0 @@ -.. include:: ../../variables.rst -.. _terms-and-conditions-bw: - -.. todo:: - - Remember to request wallet proxy update when T&C updated - -================================================== -Terms and Conditions for |bw| -================================================== - -Effective from October 12, 2022 - -Introduction -============ - -|bw| is a digital wallet that is offered by Concordium Software ApS (‘Concordium Software’). -At `developer.concordium.software `_, you can read about how the wallet works. Concordium Software may continually change and/or adjust the functions of |bw|. Concordium Software’s terms and conditions apply to |bw| users. - -The wallet will register and use data about you. Concordium Software will not register or use data about you. - -Terms and conditions for all services and functions -=================================================== - -Parties to the agreement ------------------------- - -When you register with |bw|, you enter into an agreement with: - -Concordium Software ApS, Amaliegade 4, 1256 København K, Denmark. CVR no.: 42334758. Our email address is contact@concordium.software. - -What you need in order to register with |bw| -================================================================= - -The following is required to register with |bw|: - -- Have a computer with a supported browser version installed. You can see which browser versions can be used at `developer.concordium.software `_. -- Access to download and install browser extensions in your computer’s browser. -- Verify your identity with an identity provider. The identity provider will know your identity. - -You must be at least 18 years old to register. - -Registering as a |bw| user -=============================================== - -When you register in |bw|, you will generate private keys and you will receive a unique 24-word recovery phrase that must be stored in a safe place. The recovery phrase is the “master key” for all of your accounts – it is your private keys in mnemonic form. These words, when entered into another Concordium Wallet (not including the Cordordium Desktop Wallet) in the correct order, will recover all of the private keys you were storing on your original wallet. The recovery phrase is used as your personal backup of your private keys. If you lose the private keys and the recovery phrase, you will lose access to any funds in the account(s) permanently. - -Before you can use |bw|, you will need to create a digital identity certificate by following the instructions in the app. An identity provider is a third-party supplier and independent of Concordium Software. The |bw| stores data in encrypted form from the identity provider, which Concordium Software does not have access to. - -After you have created your digital identity certificate and your first account, you can create additional accounts with which you will be able to carry out transactions. Concordium Software may impose a limit to how many accounts you can create in a single |bw|. - -Activation code and personal password -===================================== - -When you register in |bw|, you will need to create a personal password. If your computer supports it, you can subsequently activate your fingerprint or use facial recognition instead of the password. You should be aware that all fingerprints/facial recognitions linked to your computer can be used to log on to |bw| and use the functions. You are therefore obliged to ensure that you have only activated your own fingerprints and your own facial recognition if you want to use them instead of the password for access to |bw|. |bw| does not store your fingerprints or facial recognition. - -Other obligations etc. -====================== - -You have a duty to ensure that the details you provide are correct and updated at any given time. Your |bw| is personal and may only be used by you. You must not disclose your passwords to others, write them down, or save them on your mobile device or computer. You must not disclose your 24-word recovery phrase to others or store them digitally on your computer or mobile device. - -|bw| must not be used for illegal activities or purposes. - -You must not use |bw| in a way that harasses other Concordium blockchain users. - -All transaction requests are irreversible. You are yourself responsible for ensuring that the recipient of a transaction via |bw| is the intended recipient, and you must verify that the transaction amount is correct. You are responsible for providing the correct account to persons and users who want to transfer funds to you. - -To prevent unauthorized use of |bw|, you must store your computer so that others cannot gain unauthorized access to it. If possible, you should lock your computer with a password or keypad lock. Do not disclose the password to third parties. - -You are obliged to verify your identity with an identity provider. The identity provider will know your identity, but will not be able to associate it to an account on the blockchain. Your identity can be revealed via the process of anonymity revocation, which can happen under stringent regulations, such as a court order. - -You are solely responsible for safekeeping your passwords, PINs, account keys, encryption keys, identity, and any other codes you use to access the |bw| or any information, CCD, or voucher. If you lose access to the |bw|, private keys, or identity, and you have not separately stored a backup of your accounts and the corresponding password(s), or your personal recovery phrase, you acknowledge and agree that any tokens you have associated with that account will become inaccessible. - -Please note: If you have chosen to use assistants based on speech recognition (e.g., Siri) or patterns of use, this means that information about your use of |bw|, including recipients, amounts, and messages, is sent to the provider of the assistant. Your own use of any assistant determines what information is sent. |bw| does not send any information. - -Term -==== - -This agreement will apply between you and Concordium Software from your download of the |bw|, and until you have completely removed the |bw| in its entirety from your browser. - -The section *Concordium Software’s liability for damages* shall apply indefinitely. - -Fees and charges -================ - -Concordium Software currently does not charge any fee for registration with |bw|. |bw| does not charge a transaction fee; however, you have to pay a transaction fee for transactions on the blockchain. - -Any other costs and charges related to your use of the |bw| shall be paid by you, including but not limited to costs to the identity provider, if any. - -If we introduce new functions, features, products, or services, these may be subject to fees from the start without you receiving any notice of changed terms and conditions. You will always be informed about the fee before you register for the function, feature, product, or service. - -Changes -======= - -You will be notified on `developer.concordium.software `_ if we change the terms and conditions. We may change the terms and conditions without notice. You can read the terms and -conditions at `developer.concordium.software `_, from which you can also print, download, or email them. - -If you do not wish to be covered by the new terms and conditions, you must notify us before the new terms and conditions enter into force. If you notify us that you do not wish to be covered by the new terms and conditions, we will consider the |bw| agreement to be terminated from the date on which the new terms and conditions enter into force. If we do not hear from you, we will regard it as your acceptance of the changes. - -Intellectual property rights and license -======================================== - -Concordium Software retains all right, title, and interest in and to all of Concordium Software’s brands, logos, and trademarks, including, but not limited to, |bw|, Concordium Desktop Wallet, Concordium Mobile Wallet, |mw-gen1|, |mw-gen2|, Concordium Client, and variations of the wording of the said brands, logos, and trademarks. - -Our notification of unauthorized use and security threats ---------------------------------------------------------- - -We may issue information about general security threats through `developer.concordium.software `_ and social media. - -Concordium Software’s liability for damages -=========================================== - -Concordium Software is not liable for damages for late or defective performance of the |bw| and/or our contractual obligations resulting from error or negligence. - -Even in areas in which stricter liability applies, Concordium Software is not liable for losses arising from - -- Breakdown of or lack of access to IT systems or damage to data in these systems attributable to any of the events listed below regardless of whether Concordium Software or a third-party supplier is responsible for the operation of these systems, power failure, or breakdown of Concordium Software’s power supply system or telecommunications, statutory intervention or administrative acts, acts of God, war, revolution, riot, civil unrest, sabotage, terrorism, or vandalism (including computer virus attacks or hacking). - -- Strikes, lockouts, boycotts, or picketing, regardless of whether Concordium Software or its organization is itself a party to or has started such an industrial dispute and regardless of its cause. This also applies if the dispute affects only parts of Concordium Software. - -- Other circumstances beyond or within the control of Concordium Software. - -Please be advised that Concordium Software is not liable for any defects or deficiencies in the goods or services for which you pay using |bw|. Concordium Software accepts no liability for the fundraising campaigns to which you make contributions using |bw|. If you have any complaints regarding the delivered goods, services, or fundraising campaigns, you must contact the seller and/or the fundraiser. - -Concordium Software does not undertake any liability for the conduct of the seller/fundraiser in general. - -Privacy -======= - -Concordium Software respects your privacy to the effect that Concordium Software will not monitor, edit, or disclose any personal information about you or your account, including its contents or your use of the |bw|, without your prior consent unless Concordium Software in good faith beliefs that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of Concordium Software; (iii) enforce this Agreement; (iv) protect the interests of users of the |bw| other than you or any other person; (v) operate or conduct maintenance and repair of Concordium’s services or equipment, including the |bw| as authorized by law; or (vi) if your identity is revoked in accordance with the identity revocation process as required to comply with (i). You are assumed to have no expectation of privacy with respect to the Internet generally. Your IP address is transmitted and recorded with each message or other information you send from the |bw|. When you create an identity with a third party supplier, you have entered an agreement directly with such a third party supplier and such a third party supplier will store data about you and in this case, the third party supplier’s privacy policy and terms and conditions apply. - -Data retention and deletion -=========================== - -Concordium as a company does not retain and therefore cannot delete any user identifiable information. However, to get an account you must obtain an identity object issued by an identity provider. The identity object contains some user identifiable information such as your name. By default the identity object is only stored encrypted in the wallet and is not visible on the chain. Some data derived from the identity object is sent to the chain, but by default it is not possible to obtain user identifiable information from the information stored in the account on the chain. However, if you choose to reveal any attributes associated with your account, these attributes will be visible on-chain, and can never be deleted. - -Governing law and venue -======================= - -The agreement and any dispute arising out of the agreement are governed by Danish law and such disputes must be heard by Copenhagen District Court or the jurisdiction of the defendant’s domicile unless otherwise provided by absolute consumer rights in Denmark. This applies without consideration for rules in international private law which may lead to the application of other law than Danish law. - -Complaints -========== - -You can always write to Concordium Software if you disagree with us. In this way, we make sure that such disagreement is not based on a misunderstanding. The address is Amaliegade 4, 1256 København K, Denmark. - -New copy of these terms and conditions -====================================== - -You can always find the latest version on `developer.concordium.software `_. - -You can contact |bw| support via support@concordium.software. - -Acceptance -========== - -The first time you open the |bw|, you’ll be asked to click "Yes, I Accept" to confirm that you agree to these terms and conditions. From 5412078f06987ebd51c518175792a2ecdd6afbd0 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Mon, 8 May 2023 11:16:12 +0200 Subject: [PATCH 026/193] Graviton hackathon page --- .../mainnet/net/guides/graviton-hackathon.rst | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 source/mainnet/net/guides/graviton-hackathon.rst diff --git a/source/mainnet/net/guides/graviton-hackathon.rst b/source/mainnet/net/guides/graviton-hackathon.rst new file mode 100644 index 0000000000..331ee4adb0 --- /dev/null +++ b/source/mainnet/net/guides/graviton-hackathon.rst @@ -0,0 +1,68 @@ +:orphan: + +.. include:: ../../variables.rst +.. _gitcoin-hackathon: + +============================ +Graviton Hackathon Essentials +============================ + +This page helps you to get started with Concordium for the Graviton hackathon XXMonthXX ## - ##, 2023. + +With a total of $15K in prizes, it is the largest Concordium hackathon ever held. +You can sign up and read more about the bounties and timelines on the `hackathon website `_. + +Workshop Sessions +================= + +Join our free workshop sessions before the hackathon starts. + +- 1st February @ 12:00 CET - Welcome, Concordium Overview & Intro to Rust +- 2nd February @ 12:00 CET - Building Smart Contracts +- 3rd February @ 12:00 CET - Building dApps & Ideation Session + +- 8th, 15th and 22nd February @ 9:00 - 17:00 CET - Weekly Developer Relations Office Hours + +You can watch the three workshops `live `_. +The materials from the workshop sessions are available on `GitHub `_. + +Recordings from previous workshops can be watched here: + +- `Building Concordium Smart Contracts `_. + +- `Building A Front-end Integration `_. + +Quick guide +=========== + +- Install Rust +- Install ``cargo concordium`` +- Install ``concordium-client`` +- Import a wallet key into ``concordium-client`` +- Install |bw| + +These setup steps are explained in detail :ref:`here`. +An overview of the `developer documentation `_ will help you to find the topics that you are interested in. + +.. note:: + + There is a public Concordium testnet node available at ``node.testnet.concordium.com`` on port ``10000`` (GRPCv1) and port ``20000`` (gRPCv2 and gRPC-web). + You can also :ref:`run your own node`, but that will take some time to catch up to the newest blocks and thereby be usable. + +You can check that you have access to the node by executing the command: + +.. code-block:: console + + $concordium-client consensus status --grpc-port 20000 --grpc-ip node.testnet.concordium.com + +The command will return a list of values relevant to the consensus if you have a connection to the Concordium testnet node. + +DApp examples +============= + +An overview of different :ref:`dApp examples ` to get started. + +Concordium Academy +================== + +You can go through the tutorials at `Concordium Academy `__ to learn even more about the Concordium blockchain and earn badges. From 0ebe7fc56892effc709ebec44020561bad0d45f8 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Fri, 12 May 2023 13:09:55 +0200 Subject: [PATCH 027/193] Note for eID support --- source/mainnet/net/concepts/id-accounts.rst | 4 ++++ source/mainnet/net/guides/create-identity.rst | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/source/mainnet/net/concepts/id-accounts.rst b/source/mainnet/net/concepts/id-accounts.rst index 87720313ca..348938139a 100644 --- a/source/mainnet/net/concepts/id-accounts.rst +++ b/source/mainnet/net/concepts/id-accounts.rst @@ -59,6 +59,10 @@ Upon verification of the user's identification documents and attributes, the Ide .. image:: ../images/concepts/identity-creation.png :alt: graphic drawing showing how the user interacts with the identity provider +.. Note:: + + If using Digitial Trust Solutions (DTS) as your identity provider and you have a mitID (Denmark), you can use mitID to complete the identity verification process. + About accounts ============== diff --git a/source/mainnet/net/guides/create-identity.rst b/source/mainnet/net/guides/create-identity.rst index ad6274ab18..e758ccec7e 100644 --- a/source/mainnet/net/guides/create-identity.rst +++ b/source/mainnet/net/guides/create-identity.rst @@ -12,6 +12,10 @@ To learn more about identities and accounts, see :ref:`Identities Date: Fri, 12 May 2023 13:14:48 +0200 Subject: [PATCH 028/193] Fix lint error --- source/mainnet/net/concepts/id-accounts.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/concepts/id-accounts.rst b/source/mainnet/net/concepts/id-accounts.rst index 348938139a..50d1997756 100644 --- a/source/mainnet/net/concepts/id-accounts.rst +++ b/source/mainnet/net/concepts/id-accounts.rst @@ -62,7 +62,7 @@ Upon verification of the user's identification documents and attributes, the Ide .. Note:: If using Digitial Trust Solutions (DTS) as your identity provider and you have a mitID (Denmark), you can use mitID to complete the identity verification process. - + About accounts ============== From 0d7ce89f531f9faaeea17609a911601d7798a340 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Fri, 12 May 2023 14:44:11 +0200 Subject: [PATCH 029/193] Revise version number for node --- source/mainnet/variables.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/mainnet/variables.rst b/source/mainnet/variables.rst index b9dcdaa9ab..cc1e30e517 100644 --- a/source/mainnet/variables.rst +++ b/source/mainnet/variables.rst @@ -29,8 +29,8 @@ .. Node version variables -.. |mainnet-node-version| replace:: 5.2.4 -.. |testnet-node-version| replace:: 5.2.4 +.. |mainnet-node-version| replace:: 5.3.2 +.. |testnet-node-version| replace:: 5.3.2 .. Mainnet genesis block verification variables .. |mainnet-genesis-block| replace:: genesis.dat From 29104481409d2a41af030b9f1127adcb6679960a Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Mon, 15 May 2023 14:37:58 +0200 Subject: [PATCH 030/193] Address review comments --- source/mainnet/net/guides/recovery.rst | 4 ++++ source/mainnet/net/guides/transaction-report.rst | 2 +- source/mainnet/net/installation/downloads.rst | 6 +++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/source/mainnet/net/guides/recovery.rst b/source/mainnet/net/guides/recovery.rst index 384260a3f0..66f105a198 100644 --- a/source/mainnet/net/guides/recovery.rst +++ b/source/mainnet/net/guides/recovery.rst @@ -7,6 +7,10 @@ Backup and recovery It can be necessary to recover your wallet, for example if you get a new computer or mobile device. It is important to know how you can recover your wallet on a device if necessary. There are differences between what the wallets require for recovery. +.. list-table:: + :widths: 10 10 10 10 + :header-rows: 1 + * - Desktop Wallet - |mw-gen1| - |mw-gen2| diff --git a/source/mainnet/net/guides/transaction-report.rst b/source/mainnet/net/guides/transaction-report.rst index 02e043b4a8..db22d814b9 100644 --- a/source/mainnet/net/guides/transaction-report.rst +++ b/source/mainnet/net/guides/transaction-report.rst @@ -4,7 +4,7 @@ Create a transaction report =========================== -A transaction report can be useful for tax purposes when you need to know transaction details for reporting. +A transaction report can be useful when you need to know transaction details, such as for tax reporting purposes. .. dropdown:: Desktop wallet diff --git a/source/mainnet/net/installation/downloads.rst b/source/mainnet/net/installation/downloads.rst index 35618fa7d0..095756490c 100644 --- a/source/mainnet/net/installation/downloads.rst +++ b/source/mainnet/net/installation/downloads.rst @@ -42,6 +42,10 @@ The |mw-gen2| is available for iOS and Android™. The |mw-gen2| supports iOS 13 - `Download the Android version of Concordium Wallet for Mobile for Testnet `_ + .. image:: ../images/mobile-wallet/google-play-badge.png + :width: 29.5% + :target: https://play.google.com/store/apps/details?id=software.concordium.mobilewallet.seedphrase.testnet + .. _downloads-mwgen1: |mw-gen1| @@ -80,7 +84,7 @@ The |mw-gen1| is available for iOS and Android™. The |mw-gen1| supports iOS 13 |bw| ================================= -The |bw| is available to download as an extension for the `chromium web browsers `_. +The |bw| is available to download as an extension for the `chromium web browsers `_. The extension supports both Mainnet and Testnet. .. _downloads-desktop-wallet: From 0f15cb7a5b59b354dd29e2bffc7b68d0bd59f8bd Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Tue, 16 May 2023 08:22:15 +0200 Subject: [PATCH 031/193] Browser wallet 1.0.5 release --- .../net/resources/release-notes-mainnet.rst | 15 +++++++++++++++ source/mainnet/net/resources/release-notes.rst | 15 +++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index fa560cd3b2..230e251d9a 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -11,6 +11,21 @@ Release notes - Mainnet To subscribe to updates on the Mainnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. +May 25, 2023 + +|bw| 1.0.5 +------------------------- + +|bw| 1.0.5 contains fixes for the following issues: + +- The About page link to the terms and conditions pointed to the wrong URL. It now uses the value retrieved from the wallet proxy, or the correct default to the unified terms and conditions page. + +- Fixed an empty recovery displaying an error instead of informing the user that nothing was found. + +- Fixed an issue where the transaction list view would show the Request CCD button while loading the initial batch of transactions. + +- Added a missing translation for the Request CCD button. + May 11, 2023 ``cargo-concordium`` 2.8.0 diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index de5b6797b5..85d98b41f4 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -11,6 +11,21 @@ Release Notes - Testnet To subscribe to updates on the Testnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. +May 25, 2023 + +|bw| 1.0.5 +------------------------- + +|bw| 1.0.5 contains fixes for the following issues: + +- The About page link to the terms and conditions pointed to the wrong URL. It now uses the value retrieved from the wallet proxy, or the correct default to the unified terms and conditions page. + +- Fixed an empty recovery displaying an error instead of informing the user that nothing was found. + +- Fixed an issue where the transaction list view would show the Request CCD button while loading the initial batch of transactions. + +- Added a missing translation for the Request CCD button. + May 11, 2023 ``cargo-concordium`` 2.8.0 From 091280a500349edc75a371776382ac0ab1beaab8 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Tue, 16 May 2023 08:38:19 +0200 Subject: [PATCH 032/193] Address review comments --- source/mainnet/net/guides/recovery.rst | 2 +- source/mainnet/net/installation/downloads.rst | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/source/mainnet/net/guides/recovery.rst b/source/mainnet/net/guides/recovery.rst index 66f105a198..03b16c77ad 100644 --- a/source/mainnet/net/guides/recovery.rst +++ b/source/mainnet/net/guides/recovery.rst @@ -17,7 +17,7 @@ It can be necessary to recover your wallet, for example if you get a new compute - |bw| * - Backup recommended; can recover without backup - Backup required - - Secret recovery phrase requierd + - Secret recovery phrase required - Secret recovery phrase required * - Backup file includes account names and addresses, identities, and the address book. LEDGER device is needed for a full recovery. - Backup file includes accounts, identities, address book, and private keys. diff --git a/source/mainnet/net/installation/downloads.rst b/source/mainnet/net/installation/downloads.rst index 095756490c..53fb1327e5 100644 --- a/source/mainnet/net/installation/downloads.rst +++ b/source/mainnet/net/installation/downloads.rst @@ -43,8 +43,9 @@ The |mw-gen2| is available for iOS and Android™. The |mw-gen2| supports iOS 13 - `Download the Android version of Concordium Wallet for Mobile for Testnet `_ .. image:: ../images/mobile-wallet/google-play-badge.png - :width: 29.5% - :target: https://play.google.com/store/apps/details?id=software.concordium.mobilewallet.seedphrase.testnet + :width: 29.5% + :target: https://play.google.com/store/apps/details?id=software.concordium.mobilewallet.seedphrase.testnet + .. _downloads-mwgen1: @@ -160,12 +161,12 @@ Concordium LEDGER App The LEDGER NANO X is not supported currently. -When installing the certificate, ensure that the public key of the certificate is :substitution-code:`|ledger-app-public-key|`. - - For LEDGER NANO S, `download the Concordium LEDGER App 3.0.1 for LEDGER firmware version 2.1.0 `_ - For LEDGER NANO S PLUS, `download the Concordium LEDGER App 3.1.0 for LEDGER firmware version 1.1.0 `_ +When installing the certificate, ensure that the public key of the certificate is :substitution-code:`|ledger-app-public-key|`. + .. _concordium-node-and-client-download: Concordium Client v5.1.1 From cbcca6e736945b8f32a75417fe2c3454e3ff72d7 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Tue, 16 May 2023 08:48:51 +0200 Subject: [PATCH 033/193] Add bookmarks, fix lint build issue --- source/mainnet/net/installation/downloads.rst | 1 - .../net/release-notes/release-notes-lp.rst | 24 ++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/source/mainnet/net/installation/downloads.rst b/source/mainnet/net/installation/downloads.rst index 53fb1327e5..97ee45fc67 100644 --- a/source/mainnet/net/installation/downloads.rst +++ b/source/mainnet/net/installation/downloads.rst @@ -46,7 +46,6 @@ The |mw-gen2| is available for iOS and Android™. The |mw-gen2| supports iOS 13 :width: 29.5% :target: https://play.google.com/store/apps/details?id=software.concordium.mobilewallet.seedphrase.testnet - .. _downloads-mwgen1: |mw-gen1| diff --git a/source/mainnet/net/release-notes/release-notes-lp.rst b/source/mainnet/net/release-notes/release-notes-lp.rst index 35b888ddc4..147df8c10f 100644 --- a/source/mainnet/net/release-notes/release-notes-lp.rst +++ b/source/mainnet/net/release-notes/release-notes-lp.rst @@ -8,8 +8,11 @@ Release notes Wallets ======= +.. _rn-mwgen2-ios: + .. dropdown:: |mw-gen2| for iOS +.. _rn-mwgen2-android: .. dropdown:: |mw-gen2| for Android @@ -25,19 +28,30 @@ Wallets - :ref:`v1.1.7 / 25 April 2023` - :ref:`v1.1.6 / 18 April 2023` +.. _rn-bw: + .. dropdown:: |bw| +.. _rn-dw: + .. dropdown:: Desktop Wallet +.. _rn-mwgen1-ios: + .. dropdown:: |mw-gen1| for iOS +.. _rn-mwgen1-android: + .. dropdown:: |mw-gen1| for Android Nodes ===== +.. _rn-node-mainnet: + .. dropdown:: Mainnet +.. _rn-node-testnet: .. dropdown:: Testnet @@ -45,15 +59,23 @@ Nodes Tools ===== +.. _rn-client: + .. dropdown:: Concordium client -.. dropdown:: Cargo-concordium +.. _rn-cargo: + +.. dropdown:: ``cargo-concordium`` + +.. _rn-ccdscan: .. dropdown:: CCDScan Libraries ========= +.. _rn-sclibraries: + .. dropdown:: Smart contract Libraries Older release notes From 67a6a8d0b3af1148f70ef952ede7c986d6c39e5a Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Tue, 16 May 2023 10:07:37 +0200 Subject: [PATCH 034/193] 5.4.x testnet node release --- .../net/installation/downloads-testnet.rst | 14 +++--- .../installation/previous-node-downloads.rst | 50 ++++++++++++------- .../mainnet/net/resources/release-notes.rst | 9 ++++ 3 files changed, 48 insertions(+), 25 deletions(-) diff --git a/source/mainnet/net/installation/downloads-testnet.rst b/source/mainnet/net/installation/downloads-testnet.rst index 531356da2a..daa8bac5a6 100644 --- a/source/mainnet/net/installation/downloads-testnet.rst +++ b/source/mainnet/net/installation/downloads-testnet.rst @@ -152,18 +152,18 @@ For the system requirements to run a node, see :ref:`System requirements to run When upgrading, you can only upgrade one minor version at a time, or from the last release of major version X to major version X+1. You cannot skip versions. For patches, you can skip versions e.g. X.X.0 to X.X.3, or `X.1.1` to `X.2.3`. To download previous node versions, see :ref:`Previous node versions`. -Ubuntu v5.3.2 +Ubuntu v5.4.x ------------- To run a node on a server with Ubuntu, you need a Debian package. - - `Download the Testnet Debian package `_ + - `Download the Testnet Debian package `_ - SHA256 checksum of the download: ``cf035d33784473b13afdf6d9a047c35f970ad9864f1134867eed00ed7baa2007`` To learn how to run a node with Ubuntu, see :ref:`Run a node on a server with Ubuntu `. -Linux-Docker v5.3.2 +Linux-Docker v5.4.x ------------------- .. _concordium-docker-package-download-testnet: @@ -172,21 +172,21 @@ To learn how to run a node with Docker, see :ref:`Run a node with Docker ` for details. -Windows v5.3.2 +Windows v5.4.x -------------- To run a node on Windows, you need a Windows Installer package. **Please be aware that you should backup your configuration, as the installer will overwrite the current configuration with a standard configuration.** - - `Download the Testnet Windows Installer package `_ + - `Download the Testnet Windows Installer package `_ To learn how to run a node on Windows, see :ref:`Run and manage a node on Windows `. -Mac v5.3.2 +Mac v5.4.x ---------- To run a node on macOS, you need a macOS installer package. - - `Download the Testnet macOS installer package `_ + - `Download the Testnet macOS installer package `_ To learn how to run a node on Mac, see :ref:`Run and manage a node on macOS `. diff --git a/source/mainnet/net/installation/previous-node-downloads.rst b/source/mainnet/net/installation/previous-node-downloads.rst index fc51caceff..e017744449 100644 --- a/source/mainnet/net/installation/previous-node-downloads.rst +++ b/source/mainnet/net/installation/previous-node-downloads.rst @@ -14,6 +14,8 @@ Windows - Mainnet and Testnet **Please be aware that you should backup your configuration, as the installer will overwrite the current configuration with a standard configuration.** +`Windows 5.3.2 `_ + `Windows 5.2.4 `_ `Windows 5.1.3 `_ @@ -39,6 +41,8 @@ Windows - Mainnet and Testnet macOS - Mainnet and Testnet =========================== +`macOS 5.3.2 `_ + `macOS 5.2.4 `_ `macOS 5.1.3 `_ @@ -73,7 +77,7 @@ Default listen port is set to 8888 #. Navigate to the download. #. Paste the following into the terminal: sha256sum concordium-mainnet-node_5.2.4-0_amd64.deb - #. Verify that the output matches the SHA256 checksum 579e77a873a46d9a19d058e2c0bacb027efdf46aec8a73cb2983f6d37513be4c. + #. Verify that the output matches the SHA256 checksum ``579e77a873a46d9a19d058e2c0bacb027efdf46aec8a73cb2983f6d37513be4c``. `5.1.3 `__ - Verification instructions @@ -82,7 +86,7 @@ Default listen port is set to 8888 #. Navigate to the download. #. Paste the following into the terminal: sha256sum concordium-mainnet-node_5.1.3-0_amd64.deb - #. Verify that the output matches the SHA256 checksum be10622086fe1225480e68303aab05fcc806150c51327afa7f19c8289600fb6b. + #. Verify that the output matches the SHA256 checksum ``be10622086fe1225480e68303aab05fcc806150c51327afa7f19c8289600fb6b``. `5.0.6 `__ - Verification instructions @@ -91,7 +95,7 @@ Default listen port is set to 8888 #. Navigate to the download. #. Paste the following into the terminal: sha256sum concordium-mainnet-node_5.0.6-0_amd64.deb - #. Verify that the output matches the SHA256 checksum f3a66a2ab5193682f3997c38c8b4e688bec85191f6cc5871dca63fb572fe5c18. + #. Verify that the output matches the SHA256 checksum ``f3a66a2ab5193682f3997c38c8b4e688bec85191f6cc5871dca63fb572fe5c18``. `4.4.4 `__ - Verification instructions @@ -100,7 +104,7 @@ Default listen port is set to 8888 #. Navigate to the download. #. Paste the following into the terminal: $sha256sum concordium-mainnet-node_4.4.4-1_amd64.deb - #. Verify that the output matches the SHA256 checksum ed1c346de5d20089e4590c67e8cb757783f3938b17b36ba44756bbf0d013f21e. + #. Verify that the output matches the SHA256 checksum ``ed1c346de5d20089e4590c67e8cb757783f3938b17b36ba44756bbf0d013f21e``. `4.3.1 `__ @@ -110,7 +114,7 @@ Default listen port is set to 8888 #. Navigate to the download. #. Paste the following into the terminal: $sha256sum concordium-mainnet-node_4.3.1_amd64.deb - #. Verify that the output matches the SHA256 checksum 9cd09fff386f17562902adea699f975acaf4d4b6e3dceaf2fb7e45030a309b65. + #. Verify that the output matches the SHA256 checksum ``9cd09fff386f17562902adea699f975acaf4d4b6e3dceaf2fb7e45030a309b65``. `4.2.3 `__ @@ -120,7 +124,7 @@ Default listen port is set to 8888 #. Navigate to the download. #. Paste the following into the terminal: $sha256sum concordium-mainnet-node_4.2.3_amd64.deb - #. Verify that the output matches the SHA256 checksum 6bf3f194b4692e0e6b9548edb72a870b4504a44087b6f23e86055cc301d4e0a4. + #. Verify that the output matches the SHA256 checksum ``6bf3f194b4692e0e6b9548edb72a870b4504a44087b6f23e86055cc301d4e0a4``. `4.2.1 `__ @@ -130,7 +134,7 @@ Default listen port is set to 8888 #. Navigate to the download. #. Paste the following into the terminal: $sha256sum concordium-mainnet-node_4.2.1_amd64.deb - #. Verify that the output matches the SHA256 checksum 0ecefbdaa7a00d90d8e8099c6d25558f3d8f9d23164726550b1d62cfde5821b5. + #. Verify that the output matches the SHA256 checksum ``0ecefbdaa7a00d90d8e8099c6d25558f3d8f9d23164726550b1d62cfde5821b5``. `4.1.1 `__ @@ -140,7 +144,7 @@ Default listen port is set to 8888 #. Navigate to the download. #. Paste the following into the terminal: $sha256sum concordium-mainnet-node_4.1.1_amd64.deb - #. Verify that the output matches the SHA256 checksum b1f4c582a44761363bed5f25bb857cfe541cae4becf9f14c0062b67c4caabfd3. + #. Verify that the output matches the SHA256 checksum ``b1f4c582a44761363bed5f25bb857cfe541cae4becf9f14c0062b67c4caabfd3``. `3.0.2 `__ @@ -150,7 +154,7 @@ Default listen port is set to 8888 #. Navigate to the download. #. Paste the following into the terminal: $sha256sum concordium-mainnet-node_3.0.2_amd64.deb - #. Verify that the output matches the SHA256 checksum a6a70d06fb3b3b2a3fa0f43452fc54e4a9dc2be9855a0cde8c60dba370fea814. + #. Verify that the output matches the SHA256 checksum ``a6a70d06fb3b3b2a3fa0f43452fc54e4a9dc2be9855a0cde8c60dba370fea814``. Ubuntu - Testnet ================ @@ -158,6 +162,16 @@ Ubuntu - Testnet Default GRPC port is set to 10001 Default listen port is set to 8889 +`5.3.2 `_ + + - Verification instructions + + In a terminal: + + #. Navigate to the download. + #. Paste the following into the terminal: $sha256sum concordium-testnet-node_5.3.2-0_amd64.deb + #. Verify that the output matches the SHA256 checksum ``cf035d33784473b13afdf6d9a047c35f970ad9864f1134867eed00ed7baa2007``. + `5.2.4 `__ - Verification instructions @@ -165,7 +179,7 @@ Default listen port is set to 8889 #. Navigate to the download. #. Paste the following into the terminal: $sha256sum concordium-testnet-node_5.2.4-0_amd64.deb - #. Verify that the output matches the SHA256 checksum 51841534d17d7466f2ee1fb1b10d7d72bd009dd6c0cb53d414a632792a1a1b83. + #. Verify that the output matches the SHA256 checksum ``51841534d17d7466f2ee1fb1b10d7d72bd009dd6c0cb53d414a632792a1a1b83``. `5.1.3 `__ - Verification instructions @@ -174,7 +188,7 @@ Default listen port is set to 8889 #. Navigate to the download. #. Paste the following into the terminal: $sha256sum concordium-testnet-node_5.1.3-0_amd64.deb - #. Verify that the output matches the SHA256 checksum 7d496886db7efc7f71f25570e3042b68e9269cd4ec7a4fc612a330a12b13dc5e. + #. Verify that the output matches the SHA256 checksum ``7d496886db7efc7f71f25570e3042b68e9269cd4ec7a4fc612a330a12b13dc5e``. `5.0.6 `__ - Verification instructions @@ -183,7 +197,7 @@ Default listen port is set to 8889 #. Navigate to the download. #. Paste the following into the terminal: $sha256sum concordium-testnet-node_5.0.6_amd64.deb - #. Verify that the output matches the SHA256 checksum fa361845715991142c721b5ac0803d4fcc615b4a4fb865a48533d03ea9ba6a17. + #. Verify that the output matches the SHA256 checksum ``fa361845715991142c721b5ac0803d4fcc615b4a4fb865a48533d03ea9ba6a17``. `4.4.4 `__ - Verification instructions @@ -192,7 +206,7 @@ Default listen port is set to 8889 #. Navigate to the download. #. Paste the following into the terminal: $sha256sum concordium-testnet-node_4.1.1_amd64.deb - #. Verify that the output matches the SHA256 checksum 2569e43d8f8e93e594882e5f8b934a1a20ca7674bebf349f85c07cb09e41da4a. + #. Verify that the output matches the SHA256 checksum ``2569e43d8f8e93e594882e5f8b934a1a20ca7674bebf349f85c07cb09e41da4a``. `4.3.1 `__ - Verification instructions @@ -201,7 +215,7 @@ Default listen port is set to 8889 #. Navigate to the download. #. Paste the following into the terminal: $sha256sum concordium-testnet-node_4.1.1_amd64.deb - #. Verify that the output matches the SHA256 checksum 1f8650a01746617c10d9e8aeee01b1adbf1e8a005e5a246b6920437344c7f518. + #. Verify that the output matches the SHA256 checksum ``1f8650a01746617c10d9e8aeee01b1adbf1e8a005e5a246b6920437344c7f518``. `4.2.3 `__ - Verification instructions @@ -210,7 +224,7 @@ Default listen port is set to 8889 #. Navigate to the download. #. Paste the following into the terminal: $sha256sum concordium-testnet-node_4.1.1_amd64.deb - #. Verify that the output matches the SHA256 checksum 66a54d77a8d6810a9d87b828ed3881105858609b9b921a700064b2719c861691. + #. Verify that the output matches the SHA256 checksum ``66a54d77a8d6810a9d87b828ed3881105858609b9b921a700064b2719c861691``. `4.2.1 `__ - Verification instructions @@ -219,7 +233,7 @@ Default listen port is set to 8889 #. Navigate to the download. #. Paste the following into the terminal: $sha256sum concordium-testnet-node_4.1.1_amd64.deb - #. Verify that the output matches the SHA256 checksum ea17f5e192e77a1469ab9c4486892f1a6f63894de6ab54a86ea7b80cdecbbf17. + #. Verify that the output matches the SHA256 checksum ``ea17f5e192e77a1469ab9c4486892f1a6f63894de6ab54a86ea7b80cdecbbf17``. `4.1.1 `__ - Verification instructions @@ -228,7 +242,7 @@ Default listen port is set to 8889 #. Navigate to the download. #. Paste the following into the terminal: $sha256sum concordium-testnet-node_4.1.1_amd64.deb - #. Verify that the output matches the SHA256 checksum 35c668769576e32d94f53b3c167b16ad7c74425737932f9b9f2837ea35fe3641. + #. Verify that the output matches the SHA256 checksum ``35c668769576e32d94f53b3c167b16ad7c74425737932f9b9f2837ea35fe3641``. `3.0.2 `__ - Verification instructions @@ -237,4 +251,4 @@ Default listen port is set to 8889 #. Navigate to the download. #. Paste the following into the terminal: $sha256sum concordium-testnet-node_3.0.2_amd64.deb - #. Verify that the output matches the SHA256 checksum 12cfdc47a5f791ccaaadf46b4493e4cb144442228915c40bc8ae7906f9cb25a9. + #. Verify that the output matches the SHA256 checksum ``12cfdc47a5f791ccaaadf46b4493e4cb144442228915c40bc8ae7906f9cb25a9``. diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index de5b6797b5..ce8ad2fe8c 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -11,6 +11,15 @@ Release Notes - Testnet To subscribe to updates on the Testnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. +June 1, 2023 + +Concordium Node 5.4.X +--------------------- + +Enable CORS support in grpc-web. This only applies when grpc-web is enabled. + +Fixed a security issue. + May 11, 2023 ``cargo-concordium`` 2.8.0 From 4a9acfcbf6232a760b3c1484b3e0ccce7fb0eb05 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Tue, 16 May 2023 12:52:05 +0200 Subject: [PATCH 035/193] Add additional features of the release --- source/mainnet/net/resources/release-notes-mainnet.rst | 6 ++++++ source/mainnet/net/resources/release-notes.rst | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index 230e251d9a..a53bf971c7 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -26,6 +26,12 @@ May 25, 2023 - Added a missing translation for the Request CCD button. +- ``deployModule`` transactions are now supported in the ``sendTransaction`` endpoint of the wallet-api. + +- Added text that a transaction has been submitted. + +- Messages when confirming baker/delegation transactions no longer appear after the transaction has been submitted. + May 11, 2023 ``cargo-concordium`` 2.8.0 diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index 85d98b41f4..8639987d8e 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -26,6 +26,12 @@ May 25, 2023 - Added a missing translation for the Request CCD button. +- ``deployModule`` transactions are now supported in the ``sendTransaction`` endpoint of the wallet-api. + +- Added text that a transaction has been submitted. + +- Messages when confirming baker/delegation transactions no longer appear after the transaction has been submitted. + May 11, 2023 ``cargo-concordium`` 2.8.0 From b8eaf8725f2eaf4d8686eb5de11726a8373805c0 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Tue, 16 May 2023 13:48:19 +0200 Subject: [PATCH 036/193] Update graviton-hackathon.rst --- source/mainnet/net/guides/graviton-hackathon.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/mainnet/net/guides/graviton-hackathon.rst b/source/mainnet/net/guides/graviton-hackathon.rst index 331ee4adb0..389c2af63f 100644 --- a/source/mainnet/net/guides/graviton-hackathon.rst +++ b/source/mainnet/net/guides/graviton-hackathon.rst @@ -1,13 +1,13 @@ :orphan: .. include:: ../../variables.rst -.. _gitcoin-hackathon: +.. _graviton-hackathon: -============================ +============================= Graviton Hackathon Essentials -============================ +============================= -This page helps you to get started with Concordium for the Graviton hackathon XXMonthXX ## - ##, 2023. +This page helps you to get started with Concordium for the Graviton hackathon June 6 - 19, 2023. With a total of $15K in prizes, it is the largest Concordium hackathon ever held. You can sign up and read more about the bounties and timelines on the `hackathon website `_. @@ -60,7 +60,7 @@ The command will return a list of values relevant to the consensus if you have a DApp examples ============= -An overview of different :ref:`dApp examples ` to get started. +An overview of different :ref:`dApp examples ` is available to get started. Concordium Academy ================== From db759726b76b4c92324ecaeb1d19e59a0751bf7d Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Wed, 17 May 2023 10:54:55 +0200 Subject: [PATCH 037/193] Add step to wCCD front-end tutorial --- .../tutorials/wCCD/wCCD-front-end-set-up.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/mainnet/smart-contracts/tutorials/wCCD/wCCD-front-end-set-up.rst b/source/mainnet/smart-contracts/tutorials/wCCD/wCCD-front-end-set-up.rst index ffbaa00e19..0442050348 100644 --- a/source/mainnet/smart-contracts/tutorials/wCCD/wCCD-front-end-set-up.rst +++ b/source/mainnet/smart-contracts/tutorials/wCCD/wCCD-front-end-set-up.rst @@ -269,6 +269,18 @@ The steps in the README file are as follows: $yarn +- Navigate to the browser-wallet-api-helpers folder. + +.. code-block:: console + + $cd ./packages/browser-wallet-api-helpers/ + +- Run ``yard build`` in the wallet-api-helpers folder. + +.. code-block:: console + + $yarn build + - Navigate to the wCCD example folder. .. code-block:: console From aa714a27ad2b271b8291a7a575ecff6ef1684c21 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Mon, 22 May 2023 08:26:00 +0200 Subject: [PATCH 038/193] Address comment --- .../tutorials/wCCD/wCCD-front-end-set-up.rst | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/source/mainnet/smart-contracts/tutorials/wCCD/wCCD-front-end-set-up.rst b/source/mainnet/smart-contracts/tutorials/wCCD/wCCD-front-end-set-up.rst index 0442050348..c4b2c71661 100644 --- a/source/mainnet/smart-contracts/tutorials/wCCD/wCCD-front-end-set-up.rst +++ b/source/mainnet/smart-contracts/tutorials/wCCD/wCCD-front-end-set-up.rst @@ -269,17 +269,11 @@ The steps in the README file are as follows: $yarn -- Navigate to the browser-wallet-api-helpers folder. +- Build the Concordium helpers by running ``yarn build:api-helpers``. You can run this from anywhere in your cloned repository. .. code-block:: console - $cd ./packages/browser-wallet-api-helpers/ - -- Run ``yard build`` in the wallet-api-helpers folder. - -.. code-block:: console - - $yarn build + $yarn build:api-helpers - Navigate to the wCCD example folder. From fe25eedc3c7095253f293be23e999d3f004329a7 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Mon, 22 May 2023 09:23:09 +0200 Subject: [PATCH 039/193] Add more features to RN, update version --- .../mainnet/net/installation/downloads-testnet.rst | 14 +++++++------- source/mainnet/net/resources/release-notes.rst | 14 +++++++++++--- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/source/mainnet/net/installation/downloads-testnet.rst b/source/mainnet/net/installation/downloads-testnet.rst index daa8bac5a6..66ba8cf117 100644 --- a/source/mainnet/net/installation/downloads-testnet.rst +++ b/source/mainnet/net/installation/downloads-testnet.rst @@ -152,18 +152,18 @@ For the system requirements to run a node, see :ref:`System requirements to run When upgrading, you can only upgrade one minor version at a time, or from the last release of major version X to major version X+1. You cannot skip versions. For patches, you can skip versions e.g. X.X.0 to X.X.3, or `X.1.1` to `X.2.3`. To download previous node versions, see :ref:`Previous node versions`. -Ubuntu v5.4.x +Ubuntu v5.4.0 ------------- To run a node on a server with Ubuntu, you need a Debian package. - - `Download the Testnet Debian package `_ + - `Download the Testnet Debian package `_ - SHA256 checksum of the download: ``cf035d33784473b13afdf6d9a047c35f970ad9864f1134867eed00ed7baa2007`` To learn how to run a node with Ubuntu, see :ref:`Run a node on a server with Ubuntu `. -Linux-Docker v5.4.x +Linux-Docker v5.4.0 ------------------- .. _concordium-docker-package-download-testnet: @@ -172,21 +172,21 @@ To learn how to run a node with Docker, see :ref:`Run a node with Docker ` for details. -Windows v5.4.x +Windows v5.4.0 -------------- To run a node on Windows, you need a Windows Installer package. **Please be aware that you should backup your configuration, as the installer will overwrite the current configuration with a standard configuration.** - - `Download the Testnet Windows Installer package `_ + - `Download the Testnet Windows Installer package `_ To learn how to run a node on Windows, see :ref:`Run and manage a node on Windows `. -Mac v5.4.x +Mac v5.4.0 ---------- To run a node on macOS, you need a macOS installer package. - - `Download the Testnet macOS installer package `_ + - `Download the Testnet macOS installer package `_ To learn how to run a node on Mac, see :ref:`Run and manage a node on macOS `. diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index ce8ad2fe8c..24275578a5 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -13,12 +13,20 @@ Release Notes - Testnet June 1, 2023 -Concordium Node 5.4.X +Concordium Node 5.4.0 --------------------- -Enable CORS support in grpc-web. This only applies when grpc-web is enabled. +Concordium node version 5.4.0 contains the following features and bug fixes: -Fixed a security issue. +- Enable CORS support in grpc-web. This only applies when grpc-web is enabled. + +- Fixed a security issue. + +- Support using block height as block identifiers in gRPC v2 API. + +- Extend gRPC v2 API call ``GetBlockInfo`` with the protocol version of the block. + +- Do not use peer buckets when running as a normal node (not as a bootstrapper). May 11, 2023 From 8a7ce4fe976c1f6cdddd4abfe178980904b408b6 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Mon, 22 May 2023 10:34:39 +0200 Subject: [PATCH 040/193] Update checksum for ubuntu package --- source/mainnet/net/installation/downloads-testnet.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/installation/downloads-testnet.rst b/source/mainnet/net/installation/downloads-testnet.rst index 66ba8cf117..5c433a111f 100644 --- a/source/mainnet/net/installation/downloads-testnet.rst +++ b/source/mainnet/net/installation/downloads-testnet.rst @@ -159,7 +159,7 @@ To run a node on a server with Ubuntu, you need a Debian package. - `Download the Testnet Debian package `_ - - SHA256 checksum of the download: ``cf035d33784473b13afdf6d9a047c35f970ad9864f1134867eed00ed7baa2007`` + - SHA256 checksum of the download: ``62c24f7a2bc48ba31a7143f65d16f14b282b46940ebf093b1ffaaa258ba1a9da`` To learn how to run a node with Ubuntu, see :ref:`Run a node on a server with Ubuntu `. From 3405a00eeddffed178b2975f4bfabb35da758399 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Mon, 22 May 2023 13:00:30 +0200 Subject: [PATCH 041/193] Qualify which wallets can use mitID solution --- source/mainnet/net/concepts/id-accounts.rst | 2 +- source/mainnet/net/guides/create-identity.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/mainnet/net/concepts/id-accounts.rst b/source/mainnet/net/concepts/id-accounts.rst index 50d1997756..090df1767f 100644 --- a/source/mainnet/net/concepts/id-accounts.rst +++ b/source/mainnet/net/concepts/id-accounts.rst @@ -61,7 +61,7 @@ Upon verification of the user's identification documents and attributes, the Ide .. Note:: - If using Digitial Trust Solutions (DTS) as your identity provider and you have a mitID (Denmark), you can use mitID to complete the identity verification process. + If using |bw| or |mw-gen2| with Digitial Trust Solutions (DTS) as your identity provider and you have a mitID (Denmark), you can use mitID to complete the identity verification process. About accounts ============== diff --git a/source/mainnet/net/guides/create-identity.rst b/source/mainnet/net/guides/create-identity.rst index e758ccec7e..a75e54b468 100644 --- a/source/mainnet/net/guides/create-identity.rst +++ b/source/mainnet/net/guides/create-identity.rst @@ -14,7 +14,7 @@ To learn more about identities and accounts, see :ref:`Identities Date: Mon, 22 May 2023 13:07:37 +0200 Subject: [PATCH 042/193] Minor grammar correction --- source/mainnet/net/concepts/id-accounts.rst | 2 +- source/mainnet/net/guides/create-identity.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/mainnet/net/concepts/id-accounts.rst b/source/mainnet/net/concepts/id-accounts.rst index 090df1767f..14fd74c5f2 100644 --- a/source/mainnet/net/concepts/id-accounts.rst +++ b/source/mainnet/net/concepts/id-accounts.rst @@ -61,7 +61,7 @@ Upon verification of the user's identification documents and attributes, the Ide .. Note:: - If using |bw| or |mw-gen2| with Digitial Trust Solutions (DTS) as your identity provider and you have a mitID (Denmark), you can use mitID to complete the identity verification process. + If using |bw| or |mw-gen2| with Digitial Trust Solutions (DTS) as your identity provider, and you have a mitID (Denmark), you can use mitID to complete the identity verification process. About accounts ============== diff --git a/source/mainnet/net/guides/create-identity.rst b/source/mainnet/net/guides/create-identity.rst index a75e54b468..2a79042e07 100644 --- a/source/mainnet/net/guides/create-identity.rst +++ b/source/mainnet/net/guides/create-identity.rst @@ -14,7 +14,7 @@ To learn more about identities and accounts, see :ref:`Identities Date: Wed, 24 May 2023 00:22:25 +0200 Subject: [PATCH 043/193] Initial commit documenting how to run a local chain. --- source/mainnet/net/guides/run-local-chain.rst | 185 ++++++++++++++++++ source/mainnet/net/index.rst | 1 + 2 files changed, 186 insertions(+) create mode 100644 source/mainnet/net/guides/run-local-chain.rst diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst new file mode 100644 index 0000000000..780044f777 --- /dev/null +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -0,0 +1,185 @@ +.. _run-local-chain: + +================= +Run a local chain +================= + +This guide details how to run your own instance of the Concordium blockchain. This is useful when developing and testing smart contracts. Running your own chain also lets you control various aspects such as the genesis parameters, anonymity revokers, identity providers and foundation accounts. + +The chain is run by a network of baker nodes that bake and finalize blocks. In the following minimal example you will set up a network comprised of a single baker node that runs *locally* on your system. Note, however, that the concepts demonstrated here equally apply to any number of baker nodes configured in a LAN or WAN setting. + +.. Note:: + + The commands shown in the following are interpreted in a ``bash``-like environment. + +Prerequisites +============= +You need a working installation of the Concordium Node distribution version 5 or above, instances of which will be used to run the baker node(s), :ref:`genesis block` data which specifies your local chain and sets of credentials for baker accounts of the chain. The number of sets of credentials needed will thus depend on the desired number of bakers in the network, which in this example is 1. + +Installing the node distribution +-------------------------------- +Concordium Node releases currently exist for Ubuntu, MacOS, Windows and Docker. See the :ref:`Node Requirements` section for information on system requirements and detailed instructions on how to obtain, run and manage a node. You need the ``concordium-node`` binary supplied with the distributions in your path to run a baker. Upon successful installation of the distribution verify that the the binary is in your path: + +.. code-block:: command + + $ concordium-node --version + concordium_node 5.3.2 + +.. Note:: + + The node distributions provide commands for running and managing nodes on :ref:`Mainnet` and :ref:`Testnet`. Ignore these since you are targeting your own chain and only need the binary. + + +Generating genesis data and account credentials +----------------------------------------------- +You will use the `genesis-creator `_ tool for generating genesis block data and credentials for the foundation and (initial) baker accounts. + +Building the tool +----------------- + +To build the tool you need the `Protocol Buffer compiler `_ binary of version 3.15 or above in your path and a working `Rust compiler `_ installation of version 1.64 or above. After installing both tools, verify that their binaries exist at appropriate versions in your path: + +.. code-block:: command + + $ protoc --version + libprotoc 3.21.12 + $ rustc --version + rustc 1.68.2 (9eb3afe9e 2023-03-27) + +.. Note:: + + The recommended method to install Rust is using ``rustup``. After installing ``rustup`` Rust toolchain is then easily be installed by issuing ``rustup toolchain install 1.68``. + +To build the ``genesis-creator`` tool, first clone the ``concordium-misc-tools`` repository which contains the source and check out the ``git`` sub-modules in the ``genesis-creator`` directory: + +.. code-block:: command + + git clone git@github.com:Concordium/concordium-misc-tools.git + cd genesis-creator + git submodule update --init --recursive + +The project is then built using ``cargo``: + +.. code-block:: command + + cargo build --release + +This produces the binary ``./target/release/genesis-creator`` which you run to generate the genesis data. + +Running the tool +---------------- + +The ``genesis-creator`` tool uses a TOML configuration file format for specifying parameters from which the genesis data is generated. The TOML file specifies + +* the initial protocol version +* cryptographic parameters +* anonymity revokers +* identity providers +* foundation accounts +* keys for updating the chain +* various parameters for the genesis + +It furthermore specifies where to save the output which is used to invoke the node binary. Many of these options are not relevant when testing smart constracts and the easiest way to get started is to piggyback on one of the examples are found in the ``./examples`` folder. In the following, you will use the file ``./examples/genesis5.toml`` and modify it slightly. Inspecting the file reveals that it specifies an initial protocol version of 5, to output credentials for 5 baker accounts, 2 foundation accounts and the genesis time set to the system time at generation. It also specifies 5 seconds as the average time per block. Further inpection of the table at the ``accounts`` key of the file reveals that the bakers each have an initial balance of 10^15 microCCD and a stake of 5 * 10^14 microCCD. Change this section s.t. just one baker credential is produced by setting the value of the ``repeat`` key to 1 as follows: + +.. code-block:: toml + + [[accounts]] + kind = "fresh" + balance = "1000000000000000" + stake = "500000000000000" + template = "baker" + identityProvider = 0 + numKeys = 1 + threshold = 1 + repeat = 1 # Changed from 5 + +.. Note:: + + Note that the staked amount needed to participate in finalization committee is some fraction of the total amount of existing CCD, defined by the value of the ``capitalBound`` key in the configurations file. The total amount is the sum of the balances of all the baker and foundation accounts specified in the genesis configuration file. + +Next, generate the genesis data: + +.. code-block:: command + + $ ./target/release/genesis-creator generate --config ./examples/genesis5.toml + Deleting any existing directories. + Account keys will be generated in ./accounts + Chain update keys will be generated in ./update-keys + Identity providers will be generated in ./idps + Anonymity revokers will be generated in ./ars + Baker keys will be generated in ./bakers + Cryptographic parameter will be generated in ./global + The genesis data will be stored in ./genesis.dat + The genesis hash will be written to ./genesis_hash + There are 2 accounts in genesis, 1 of which are bakers. + Genesis time is set to 2023-05-22 15:08:19.803 UTC. + Average block time is set to 5000ms. + DONE + +In particular, the files of interest to you are ``./genesis.dat`` containing the genesis block data and ``./bakers/baker-0-credentials.json`` containing the credentials of the single baker account that was created. + + +Running the chain +================= + +Now run the chain by starting a single baker node. The node expects the ``genesis.dat`` to reside in a configuration directory, so first create a working directory for the node data and configuration and copy ``genesis.dat`` to it: + +.. code-block:: command + + mkdir localchain-node-0 + cp ./genesis.dat localchain-node-0/ + +Now run the baker node as follows: + +.. code-block:: command + + concordium-node \ + --no-bootstrap= \ + --grpc2-listen-addr 127.0.0.1 \ + --grpc2-listen-port 20001 \ + --data-dir localchain-node-0 \ + --config-dir localchain-node-0 \ + --baker-credentials-file bakers/baker-0-credentials.json + +The ``--no-bootstrap`` option lets the node know not to connect to a bootstrapper node for retrieving peers since no peers are in this network so this is not relevant. The ``--grpc2-listen-port`` specifies the port to listen on for Node GRPC V2 API handshakes. We will use this interface to communicate with the node. The ``--data-dir`` and ``--config-dir`` specifies the working directories of the node instance, where its state and configuration is stored. The ``--baker-credentials-file`` instructs the node to run as the baker specified in the supplied credentials file, in this case your generated baker credentials output from the ``genesis-creator`` tool. + +.. Note:: + + If more baker credentials are generated, more bakers can be spun up by replacing the arguments specified by the ``--baker-credentials-file``, ``--config-dir`` and ``--data-dir`` options accordingly. If there is no bootstrapper node, it will have to be instructed to manually connect to one another by specifying the IP address and port of the other node(s) using the ``--connect-to`` option. Note that nodes running on the same network interfaces must specify a disjoint set of ports. + + +Interacting with your local chain +================================= + +You can now interact with your local chain through the node via the :ref:`Concordium Node gRPC API V2 ` exposed on port 20001, as you would with :ref:`Mainnet` or :ref:`Testnet`. Concordium provides various :ref:`SDKs and APIs` that facilitate this as well as the `Concordium Client `_ command-line tool. Assuming you have the ``concordium-client`` binary version 5.1.1 or higher in your path, you can list the accounts using the ``account list`` command: + +.. Code:: command + + $ concordium-client --grpc-ip 127.0.0.1 --grpc-port 20001 account list + Accounts: + Account Address Account Names + -------------------------------------------------------------------- + 44pozJMswBY5NQdh2MdHLTRQhmZg828wmBCvVckBgsHc7xhiGY + 4mUMfBFDqFkr3SCQx3k6x8RuWWFyLQHhE2AnJrdk9XtVto8mnK + +The two accounts addresses in the output correspond to those of the generated baker and foundation account specified in the ``genesis-creator`` configuration file. You can verify the balance and stake of the baker by supplying the first of the two account addresses to the ``account show`` command: + +.. Code:: command + + $ concordium-client --grpc-ip 127.0.0.1 --grpc-port 20000 account show 44pozJMswBY5NQdh2MdHLTRQhmZg828wmBCvVckBgsHc7xhiGY + Local names: + Address: 44pozJMswBY5NQdh2MdHLTRQhmZg828wmBCvVckBgsHc7xhiGY + Balance: 1028423448.099901 CCD + Nonce: 1 + Encryption public key: b14cbfe44a02c6b1f78711176d5f437295367aa4f2a8c2551ee10d25a03adc69d61a332a058971919dad7312e1fc94c5b0e23703f7fb0bfa98768a5297110a0aaf14f464d55f23b846453c068af08d48060e3c7be2ba4baa48ef13603a6a5f09 + + Baker: #0 + - Staked amount: 528423448.099901 CCD + - Restake earnings: yes + + Credentials: + * b0e23703f7fb0bfa98768a5297110a0aaf14f464d55f23b846453c068af08d48060e3c7be2ba4baa48ef13603a6a5f09: + - Index: 0 + - Expiration: May 2028 + - Type: normal + - Revealed attributes: none \ No newline at end of file diff --git a/source/mainnet/net/index.rst b/source/mainnet/net/index.rst index ca887926d5..01757ecf44 100644 --- a/source/mainnet/net/index.rst +++ b/source/mainnet/net/index.rst @@ -53,6 +53,7 @@ index guides/developer-page nodes/node-requirements references/concordium-client + guides/run-local-chain .. toctree:: :includehidden: From 6106d03beba931c4a9e723147a5dd7b4af3a27ef Mon Sep 17 00:00:00 2001 From: Viktor Fredslund-Hansen Date: Wed, 24 May 2023 00:27:43 +0200 Subject: [PATCH 044/193] Mention that the current staking threshold is fine for the example. --- source/mainnet/net/guides/run-local-chain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 780044f777..896348b32e 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -95,7 +95,7 @@ It furthermore specifies where to save the output which is used to invoke the no .. Note:: - Note that the staked amount needed to participate in finalization committee is some fraction of the total amount of existing CCD, defined by the value of the ``capitalBound`` key in the configurations file. The total amount is the sum of the balances of all the baker and foundation accounts specified in the genesis configuration file. + Note that the staked amount needed to participate in finalization committee is some fraction of the total amount of existing CCD, defined by the value of the ``capitalBound`` key in the configurations file. The total amount is the sum of the balances of all the baker and foundation accounts specified in the genesis configuration file. In this particular example the stake is sufficient for baking. Next, generate the genesis data: From e3f3134246bd4a0bf642dee6973aa4bbe4d728d7 Mon Sep 17 00:00:00 2001 From: Viktor Fredslund-Hansen Date: Wed, 24 May 2023 00:28:44 +0200 Subject: [PATCH 045/193] Appease linter. --- source/mainnet/net/guides/run-local-chain.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 896348b32e..dccea93f75 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -129,7 +129,7 @@ Now run the chain by starting a single baker node. The node expects the ``genesi mkdir localchain-node-0 cp ./genesis.dat localchain-node-0/ -Now run the baker node as follows: +Now run the baker node as follows: .. code-block:: command @@ -182,4 +182,4 @@ The two accounts addresses in the output correspond to those of the generated ba - Index: 0 - Expiration: May 2028 - Type: normal - - Revealed attributes: none \ No newline at end of file + - Revealed attributes: none From 501e86320f259317f258e75a32605c04e85e486d Mon Sep 17 00:00:00 2001 From: Viktor Fredslund-Hansen Date: Wed, 24 May 2023 00:33:33 +0200 Subject: [PATCH 046/193] Use console and not command for command line input/output. --- source/mainnet/net/guides/run-local-chain.rst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index dccea93f75..495003b0a8 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -20,7 +20,7 @@ Installing the node distribution -------------------------------- Concordium Node releases currently exist for Ubuntu, MacOS, Windows and Docker. See the :ref:`Node Requirements` section for information on system requirements and detailed instructions on how to obtain, run and manage a node. You need the ``concordium-node`` binary supplied with the distributions in your path to run a baker. Upon successful installation of the distribution verify that the the binary is in your path: -.. code-block:: command +.. code-block:: console $ concordium-node --version concordium_node 5.3.2 @@ -39,7 +39,7 @@ Building the tool To build the tool you need the `Protocol Buffer compiler `_ binary of version 3.15 or above in your path and a working `Rust compiler `_ installation of version 1.64 or above. After installing both tools, verify that their binaries exist at appropriate versions in your path: -.. code-block:: command +.. code-block:: console $ protoc --version libprotoc 3.21.12 @@ -52,7 +52,7 @@ To build the tool you need the `Protocol Buffer compiler Date: Wed, 24 May 2023 00:35:47 +0200 Subject: [PATCH 047/193] Self-review. --- source/mainnet/net/guides/run-local-chain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 495003b0a8..59bb6c22c7 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -151,7 +151,7 @@ The ``--no-bootstrap`` option lets the node know not to connect to a bootstrappe Interacting with your local chain ================================= -You can now interact with your local chain through the node via the :ref:`Concordium Node gRPC API V2 ` exposed on port 20001, as you would with :ref:`Mainnet` or :ref:`Testnet`. Concordium provides various :ref:`SDKs and APIs` that facilitate this as well as the `Concordium Client `_ command-line tool. Assuming you have the ``concordium-client`` binary version 5.1.1 or higher in your path, you can list the accounts using the ``account list`` command: +You can now interact with your local chain through the node via the :ref:`Concordium Node gRPC API V2 ` exposed on port 20001, as you would with :ref:`Mainnet` or :ref:`Testnet`. Concordium provides various :ref:`SDKs and APIs` that facilitate this as well as the `Concordium Client `_ command-line tool. Assuming you have the ``concordium-client`` binary version 5.1.1 or higher in your path, list the accounts using the ``account list`` command: .. Code:: command From 0ff1f5848ca767a3df3a88db00862a9272c56661 Mon Sep 17 00:00:00 2001 From: Viktor Fredslund-Hansen Date: Wed, 24 May 2023 00:39:48 +0200 Subject: [PATCH 048/193] Use code-block snippets. --- source/mainnet/net/guides/run-local-chain.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 59bb6c22c7..0ba388f839 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -153,7 +153,7 @@ Interacting with your local chain You can now interact with your local chain through the node via the :ref:`Concordium Node gRPC API V2 ` exposed on port 20001, as you would with :ref:`Mainnet` or :ref:`Testnet`. Concordium provides various :ref:`SDKs and APIs` that facilitate this as well as the `Concordium Client `_ command-line tool. Assuming you have the ``concordium-client`` binary version 5.1.1 or higher in your path, list the accounts using the ``account list`` command: -.. Code:: command +.. code-block:: console $ concordium-client --grpc-ip 127.0.0.1 --grpc-port 20001 account list Accounts: @@ -164,7 +164,7 @@ You can now interact with your local chain through the node via the :ref:`Concor The two accounts addresses in the output correspond to those of the generated baker and foundation account specified in the ``genesis-creator`` configuration file. You can verify the balance and stake of the baker by supplying the first of the two account addresses to the ``account show`` command: -.. Code:: command +.. code-block:: console $ concordium-client --grpc-ip 127.0.0.1 --grpc-port 20000 account show 44pozJMswBY5NQdh2MdHLTRQhmZg828wmBCvVckBgsHc7xhiGY Local names: From a4f8e3830094e9bbfe102b1ae486ff29c2a5b829 Mon Sep 17 00:00:00 2001 From: vikt0r0 Date: Wed, 24 May 2023 09:49:29 +0200 Subject: [PATCH 049/193] Update source/mainnet/net/guides/run-local-chain.rst Co-authored-by: dg-concordium <95341910+dg-concordium@users.noreply.github.com> --- source/mainnet/net/guides/run-local-chain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 0ba388f839..3b10684e78 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -18,7 +18,7 @@ You need a working installation of the Concordium Node distribution version 5 or Installing the node distribution -------------------------------- -Concordium Node releases currently exist for Ubuntu, MacOS, Windows and Docker. See the :ref:`Node Requirements` section for information on system requirements and detailed instructions on how to obtain, run and manage a node. You need the ``concordium-node`` binary supplied with the distributions in your path to run a baker. Upon successful installation of the distribution verify that the the binary is in your path: +Concordium Node releases exist for Ubuntu, MacOS, Windows, and Docker. See the :ref:`Node Requirements` section for information on system requirements and detailed instructions on how to obtain, run, and manage a node. To run a baker, you need the ``concordium-node`` binary supplied with the distributions in your path. Upon successful installation of the distribution verify that the binary is in your path: .. code-block:: console From 13460bcae626e5199d584f70791235677c8ad0fc Mon Sep 17 00:00:00 2001 From: vikt0r0 Date: Wed, 24 May 2023 09:49:39 +0200 Subject: [PATCH 050/193] Update source/mainnet/net/guides/run-local-chain.rst Co-authored-by: dg-concordium <95341910+dg-concordium@users.noreply.github.com> --- source/mainnet/net/guides/run-local-chain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 3b10684e78..87e342a838 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -32,7 +32,7 @@ Concordium Node releases exist for Ubuntu, MacOS, Windows, and Docker. See the : Generating genesis data and account credentials ----------------------------------------------- -You will use the `genesis-creator `_ tool for generating genesis block data and credentials for the foundation and (initial) baker accounts. +Use the `genesis-creator `_ tool to generate genesis block data and credentials for the foundation and (initial) baker accounts. Building the tool ----------------- From 837df667ea48059fdb8aa86cee71694284d8d1b7 Mon Sep 17 00:00:00 2001 From: vikt0r0 Date: Wed, 24 May 2023 09:50:05 +0200 Subject: [PATCH 051/193] Update source/mainnet/net/guides/run-local-chain.rst Co-authored-by: dg-concordium <95341910+dg-concordium@users.noreply.github.com> --- source/mainnet/net/guides/run-local-chain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 87e342a838..d158cf91f9 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -48,7 +48,7 @@ To build the tool you need the `Protocol Buffer compiler Date: Wed, 24 May 2023 09:50:40 +0200 Subject: [PATCH 052/193] Update source/mainnet/net/guides/run-local-chain.rst Co-authored-by: dg-concordium <95341910+dg-concordium@users.noreply.github.com> --- source/mainnet/net/guides/run-local-chain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index d158cf91f9..b4f886750c 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -79,7 +79,7 @@ The ``genesis-creator`` tool uses a TOML configuration file format for specifyin * keys for updating the chain * various parameters for the genesis -It furthermore specifies where to save the output which is used to invoke the node binary. Many of these options are not relevant when testing smart constracts and the easiest way to get started is to piggyback on one of the examples are found in the ``./examples`` folder. In the following, you will use the file ``./examples/genesis5.toml`` and modify it slightly. Inspecting the file reveals that it specifies an initial protocol version of 5, to output credentials for 5 baker accounts, 2 foundation accounts and the genesis time set to the system time at generation. It also specifies 5 seconds as the average time per block. Further inpection of the table at the ``accounts`` key of the file reveals that the bakers each have an initial balance of 10^15 microCCD and a stake of 5 * 10^14 microCCD. Change this section s.t. just one baker credential is produced by setting the value of the ``repeat`` key to 1 as follows: +Furthermore, it specifies where to save the output that is used to invoke the node binary. Many of these options are not relevant when testing smart contracts and the easiest way to get started is to piggyback on one of the examples in the ``./examples`` folder. In the following, you will use the file ``./examples/genesis5.toml`` and modify it slightly. Inspecting the file reveals that it specifies an initial protocol version of 5, to output credentials for 5 baker accounts, 2 foundation accounts, and the genesis time set to the system time at generation. It also specifies 5 seconds as the average time per block. Further inspection of the table at the ``accounts`` key of the file reveals that the bakers each have an initial balance of 10^15 microCCD and a stake of 5 * 10^14 microCCD. Change this section s.t. just one baker credential is produced by setting the value of the ``repeat`` key to 1 as follows: .. code-block:: toml From e2ea37847fa9ec06727f4b873766b8a13b4fd70b Mon Sep 17 00:00:00 2001 From: vikt0r0 Date: Wed, 24 May 2023 09:50:55 +0200 Subject: [PATCH 053/193] Update source/mainnet/net/guides/run-local-chain.rst Co-authored-by: dg-concordium <95341910+dg-concordium@users.noreply.github.com> --- source/mainnet/net/guides/run-local-chain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index b4f886750c..77ec6a3f78 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -95,7 +95,7 @@ Furthermore, it specifies where to save the output that is used to invoke the no .. Note:: - Note that the staked amount needed to participate in finalization committee is some fraction of the total amount of existing CCD, defined by the value of the ``capitalBound`` key in the configurations file. The total amount is the sum of the balances of all the baker and foundation accounts specified in the genesis configuration file. In this particular example the stake is sufficient for baking. + Note that the staked amount needed to participate in the finalization committee is some fraction of the total amount of existing CCD defined by the value of the ``capitalBound`` key in the configurations file. The total amount is the sum of the balances of all the baker and foundation accounts specified in the genesis configuration file. In this particular example, the stake is sufficient for baking. Next, generate the genesis data: From a23083bb7559fc446f009e9a39fd784d978be10c Mon Sep 17 00:00:00 2001 From: vikt0r0 Date: Wed, 24 May 2023 09:51:09 +0200 Subject: [PATCH 054/193] Update source/mainnet/net/guides/run-local-chain.rst Co-authored-by: dg-concordium <95341910+dg-concordium@users.noreply.github.com> --- source/mainnet/net/guides/run-local-chain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 77ec6a3f78..5a9b9dd86a 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -141,7 +141,7 @@ Now run the baker node as follows: --config-dir localchain-node-0 \ --baker-credentials-file bakers/baker-0-credentials.json -The ``--no-bootstrap`` option lets the node know not to connect to a bootstrapper node for retrieving peers since no peers are in this network so this is not relevant. The ``--grpc2-listen-port`` specifies the port to listen on for Node GRPC V2 API handshakes. We will use this interface to communicate with the node. The ``--data-dir`` and ``--config-dir`` specifies the working directories of the node instance, where its state and configuration is stored. The ``--baker-credentials-file`` instructs the node to run as the baker specified in the supplied credentials file, in this case your generated baker credentials output from the ``genesis-creator`` tool. +The ``--no-bootstrap`` option lets the node know not to connect to a bootstrapper node for retrieving peers since no peers are in this network so this is not relevant. The ``--grpc2-listen-port`` specifies the port to listen on for Node GRPC V2 API handshakes. You will use this interface to communicate with the node. The ``--data-dir`` and ``--config-dir`` specify the working directories of the node instance, where its state and configuration are stored. The ``--baker-credentials-file`` instructs the node to run as the baker specified in the supplied credentials file, in this case, your generated baker credentials output from the ``genesis-creator`` tool. .. Note:: From 55dd95b8ee675bee00b78325f69b000b235dbf98 Mon Sep 17 00:00:00 2001 From: vikt0r0 Date: Wed, 24 May 2023 09:51:22 +0200 Subject: [PATCH 055/193] Update source/mainnet/net/guides/run-local-chain.rst Co-authored-by: dg-concordium <95341910+dg-concordium@users.noreply.github.com> --- source/mainnet/net/guides/run-local-chain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 5a9b9dd86a..ce74ad41ff 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -151,7 +151,7 @@ The ``--no-bootstrap`` option lets the node know not to connect to a bootstrappe Interacting with your local chain ================================= -You can now interact with your local chain through the node via the :ref:`Concordium Node gRPC API V2 ` exposed on port 20001, as you would with :ref:`Mainnet` or :ref:`Testnet`. Concordium provides various :ref:`SDKs and APIs` that facilitate this as well as the `Concordium Client `_ command-line tool. Assuming you have the ``concordium-client`` binary version 5.1.1 or higher in your path, list the accounts using the ``account list`` command: +You can now interact with your local chain through the node via the :ref:`Concordium Node gRPC API V2 ` exposed on port 20001 as you would with :ref:`Mainnet` or :ref:`Testnet`. Concordium provides various :ref:`SDKs and APIs` that facilitate this as well as the `Concordium Client `_ command-line tool. Assuming you have the ``concordium-client`` binary version 5.1.1 or higher in your path, list the accounts using the ``account list`` command: .. code-block:: console From 50bdd2da3cb82989ab4753fe6d9bc4df4d8a9731 Mon Sep 17 00:00:00 2001 From: vikt0r0 Date: Wed, 24 May 2023 09:51:32 +0200 Subject: [PATCH 056/193] Update source/mainnet/net/guides/run-local-chain.rst Co-authored-by: dg-concordium <95341910+dg-concordium@users.noreply.github.com> --- source/mainnet/net/guides/run-local-chain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index ce74ad41ff..c810cbda43 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -116,7 +116,7 @@ Next, generate the genesis data: Average block time is set to 5000ms. DONE -In particular, the files of interest to you are ``./genesis.dat`` containing the genesis block data and ``./bakers/baker-0-credentials.json`` containing the credentials of the single baker account that was created. +In particular, the files of interest to you are ``./genesis.dat``, containing the genesis block data, and ``./bakers/baker-0-credentials.json``, containing the credentials of the single baker account that was created. Running the chain From 251c7fe3063301f68235efcc1a1fcceddd714058 Mon Sep 17 00:00:00 2001 From: vikt0r0 Date: Wed, 24 May 2023 09:51:44 +0200 Subject: [PATCH 057/193] Update source/mainnet/net/guides/run-local-chain.rst Co-authored-by: dg-concordium <95341910+dg-concordium@users.noreply.github.com> --- source/mainnet/net/guides/run-local-chain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index c810cbda43..9d67af9199 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -162,7 +162,7 @@ You can now interact with your local chain through the node via the :ref:`Concor 44pozJMswBY5NQdh2MdHLTRQhmZg828wmBCvVckBgsHc7xhiGY 4mUMfBFDqFkr3SCQx3k6x8RuWWFyLQHhE2AnJrdk9XtVto8mnK -The two accounts addresses in the output correspond to those of the generated baker and foundation account specified in the ``genesis-creator`` configuration file. You can verify the balance and stake of the baker by supplying the first of the two account addresses to the ``account show`` command: +The two accounts' addresses in the output correspond to those of the generated baker and foundation account specified in the ``genesis-creator`` configuration file. You can verify the balance and stake of the baker by supplying the first of the two account addresses to the ``account show`` command: .. code-block:: console From 86ec9235054c6464aa69a0130db0e998b1770e3b Mon Sep 17 00:00:00 2001 From: Viktor Fredslund-Hansen Date: Wed, 24 May 2023 09:53:17 +0200 Subject: [PATCH 058/193] Avoid ambiguous abbreviations. --- source/mainnet/net/guides/run-local-chain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 9d67af9199..c0b8a7107f 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -79,7 +79,7 @@ The ``genesis-creator`` tool uses a TOML configuration file format for specifyin * keys for updating the chain * various parameters for the genesis -Furthermore, it specifies where to save the output that is used to invoke the node binary. Many of these options are not relevant when testing smart contracts and the easiest way to get started is to piggyback on one of the examples in the ``./examples`` folder. In the following, you will use the file ``./examples/genesis5.toml`` and modify it slightly. Inspecting the file reveals that it specifies an initial protocol version of 5, to output credentials for 5 baker accounts, 2 foundation accounts, and the genesis time set to the system time at generation. It also specifies 5 seconds as the average time per block. Further inspection of the table at the ``accounts`` key of the file reveals that the bakers each have an initial balance of 10^15 microCCD and a stake of 5 * 10^14 microCCD. Change this section s.t. just one baker credential is produced by setting the value of the ``repeat`` key to 1 as follows: +Furthermore, it specifies where to save the output that is used to invoke the node binary. Many of these options are not relevant when testing smart contracts and the easiest way to get started is to piggyback on one of the examples in the ``./examples`` folder. In the following, you will use the file ``./examples/genesis5.toml`` and modify it slightly. Inspecting the file reveals that it specifies an initial protocol version of 5, to output credentials for 5 baker accounts, 2 foundation accounts, and the genesis time set to the system time at generation. It also specifies 5 seconds as the average time per block. Further inspection of the table at the ``accounts`` key of the file reveals that the bakers each have an initial balance of 10^15 microCCD and a stake of 5 * 10^14 microCCD. Change this section such that only one baker credential is produced by setting the value of the ``repeat`` key to 1 as follows: .. code-block:: toml From 66b93e35ac9334e7fe98e847f1c343e4a5101c4a Mon Sep 17 00:00:00 2001 From: Viktor Fredslund-Hansen Date: Thu, 25 May 2023 12:55:16 +0200 Subject: [PATCH 059/193] genesis-creator does not depend on protoc. Bump minimum Rust version. --- source/mainnet/net/guides/run-local-chain.rst | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index c0b8a7107f..0fa6f6eca0 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -1,3 +1,4 @@ + .. _run-local-chain: ================= @@ -37,18 +38,16 @@ Use the `genesis-creator `_ binary of version 3.15 or above in your path and a working `Rust compiler `_ installation of version 1.64 or above. After installing both tools, verify that their binaries exist at appropriate versions in your path: +To build the tool you need a working `Rust compiler `_ installation of version 1.65 or higher. After successful installation verify that `rustc` exists in your path at the requested version: .. code-block:: console - $ protoc --version - libprotoc 3.21.12 $ rustc --version rustc 1.68.2 (9eb3afe9e 2023-03-27) .. Note:: - The recommended method to install Rust is using ``rustup``. After installing ``rustup``, the Rust toolchain is then easily installed by issuing ``rustup toolchain install 1.68``. + The recommended method to install Rust is through `rustup `_. After installing ``rustup``, the Rust toolchain can be installed by issuing ``rustup toolchain install 1.68``. To build the ``genesis-creator`` tool, first clone the ``concordium-misc-tools`` repository which contains the source and check out the ``git`` sub-modules in the ``genesis-creator`` directory: From d23263100369ef34a829123bfc77c6b89c2edc0e Mon Sep 17 00:00:00 2001 From: Viktor Fredslund-Hansen Date: Thu, 25 May 2023 12:56:17 +0200 Subject: [PATCH 060/193] Phrasing. --- source/mainnet/net/guides/run-local-chain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 0fa6f6eca0..1e66eb1bf1 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -38,7 +38,7 @@ Use the `genesis-creator `_ installation of version 1.65 or higher. After successful installation verify that `rustc` exists in your path at the requested version: +To build the tool you need a working `Rust compiler `_ of version 1.65 or higher. After installing it, verify that `rustc` exists in your path at the requested version: .. code-block:: console From c33710112d615ddf844346266d0b232c21e9aee5 Mon Sep 17 00:00:00 2001 From: Viktor Fredslund-Hansen Date: Thu, 25 May 2023 13:16:42 +0200 Subject: [PATCH 061/193] Review comments. --- source/mainnet/net/guides/run-local-chain.rst | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 1e66eb1bf1..93ac2ed385 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -134,27 +134,28 @@ Now run the baker node as follows: concordium-node \ --no-bootstrap= \ + --listen-port 8169 \ --grpc2-listen-addr 127.0.0.1 \ - --grpc2-listen-port 20001 \ + --grpc2-listen-port 20100 \ --data-dir localchain-node-0 \ --config-dir localchain-node-0 \ --baker-credentials-file bakers/baker-0-credentials.json -The ``--no-bootstrap`` option lets the node know not to connect to a bootstrapper node for retrieving peers since no peers are in this network so this is not relevant. The ``--grpc2-listen-port`` specifies the port to listen on for Node GRPC V2 API handshakes. You will use this interface to communicate with the node. The ``--data-dir`` and ``--config-dir`` specify the working directories of the node instance, where its state and configuration are stored. The ``--baker-credentials-file`` instructs the node to run as the baker specified in the supplied credentials file, in this case, your generated baker credentials output from the ``genesis-creator`` tool. +The ``--no-bootstrap`` option lets the node know not to connect to a bootstrapper node for retrieving peers. It is specified here since no bootstrapper node is configured, and in particular this is not relevant since no other peers are in the network. The ``--listen-port`` option specifies the port to listen on for incoming peer-to-peer connections from other nodes. The ``--grpc2-listen-port`` specifies the port to listen on for :ref:`Concordium Node gRPC API V2 ` connections. This interface is used to communicate with the node. The ``--data-dir`` and ``--config-dir`` options specify the working directories of the node instance, where its state and configuration are stored. The ``--baker-credentials-file`` instructs the node to run as the baker specified by the supplied credentials file. In this case, this is your generated baker credentials output from the ``genesis-creator`` tool. .. Note:: - If more baker credentials are generated, more bakers can be spun up by replacing the arguments specified by the ``--baker-credentials-file``, ``--config-dir`` and ``--data-dir`` options accordingly. If there is no bootstrapper node, it will have to be instructed to manually connect to one another by specifying the IP address and port of the other node(s) using the ``--connect-to`` option. Note that nodes running on the same network interfaces must specify a disjoint set of ports. + If more baker credentials are generated, several bakers for each such can be spun up by replacing the arguments specified by the ``--baker-credentials-file``. If there is no bootstrapper node, it will have to be instructed to manually connect to one another by specifying the IP address and port of the other node(s) using the ``--connect-to`` option. Note that node instances using the same network interfaces should each specify different listen ports, and node instances running on the same file-system should each specify different data and config directories. Interacting with your local chain ================================= -You can now interact with your local chain through the node via the :ref:`Concordium Node gRPC API V2 ` exposed on port 20001 as you would with :ref:`Mainnet` or :ref:`Testnet`. Concordium provides various :ref:`SDKs and APIs` that facilitate this as well as the `Concordium Client `_ command-line tool. Assuming you have the ``concordium-client`` binary version 5.1.1 or higher in your path, list the accounts using the ``account list`` command: +You can now interact with your local chain through the node via the :ref:`Concordium Node gRPC API V2 ` exposed on port 20100 as you would with :ref:`Mainnet` or :ref:`Testnet` nodes. Concordium provides various :ref:`SDKs and APIs` that facilitate this as well as the `Concordium Client `_ command-line tool. Assuming you have the ``concordium-client`` binary version 5.1.1 or higher in your path, list the accounts using the ``account list`` command: .. code-block:: console - $ concordium-client --grpc-ip 127.0.0.1 --grpc-port 20001 account list + $ concordium-client --grpc-ip 127.0.0.1 --grpc-port 20100 account list Accounts: Account Address Account Names -------------------------------------------------------------------- @@ -165,7 +166,7 @@ The two accounts' addresses in the output correspond to those of the generated b .. code-block:: console - $ concordium-client --grpc-ip 127.0.0.1 --grpc-port 20000 account show 44pozJMswBY5NQdh2MdHLTRQhmZg828wmBCvVckBgsHc7xhiGY + $ concordium-client --grpc-ip 127.0.0.1 --grpc-port 20100 account show 44pozJMswBY5NQdh2MdHLTRQhmZg828wmBCvVckBgsHc7xhiGY Local names: Address: 44pozJMswBY5NQdh2MdHLTRQhmZg828wmBCvVckBgsHc7xhiGY Balance: 1028423448.099901 CCD From df34982881387496f3624a7bf082f4efa668c259 Mon Sep 17 00:00:00 2001 From: Viktor Fredslund-Hansen Date: Thu, 25 May 2023 15:55:12 +0200 Subject: [PATCH 062/193] Review comments. --- source/mainnet/net/guides/run-local-chain.rst | 48 +++++-------------- 1 file changed, 13 insertions(+), 35 deletions(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 93ac2ed385..7efa69e56c 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -9,17 +9,13 @@ This guide details how to run your own instance of the Concordium blockchain. Th The chain is run by a network of baker nodes that bake and finalize blocks. In the following minimal example you will set up a network comprised of a single baker node that runs *locally* on your system. Note, however, that the concepts demonstrated here equally apply to any number of baker nodes configured in a LAN or WAN setting. -.. Note:: - - The commands shown in the following are interpreted in a ``bash``-like environment. - Prerequisites ============= You need a working installation of the Concordium Node distribution version 5 or above, instances of which will be used to run the baker node(s), :ref:`genesis block` data which specifies your local chain and sets of credentials for baker accounts of the chain. The number of sets of credentials needed will thus depend on the desired number of bakers in the network, which in this example is 1. Installing the node distribution -------------------------------- -Concordium Node releases exist for Ubuntu, MacOS, Windows, and Docker. See the :ref:`Node Requirements` section for information on system requirements and detailed instructions on how to obtain, run, and manage a node. To run a baker, you need the ``concordium-node`` binary supplied with the distributions in your path. Upon successful installation of the distribution verify that the binary is in your path: +Concordium Node releases exist for Ubuntu, MacOS, Windows, and Docker. See the :ref:`Node Requirements` section for information on system requirements and detailed instructions on how to obtain, run, and manage a node. To run a baker, you need to a Concordium node binary supplied with one of these distributions to be available in your path. The name of the binary will have ``concordium-`` as its prefix but depend on the distribution, so you may have to confer with the installation instructions to figure out the name. Upon successful installation of the distribution, verify that the binary exists in your path at the required version: .. code-block:: console @@ -38,7 +34,7 @@ Use the `genesis-creator `_ of version 1.65 or higher. After installing it, verify that `rustc` exists in your path at the requested version: +To build the tool you need a working `Rust compiler `_ of version 1.65 or higher. After installing it, verify that `rustc` exists in your path at the required version: .. code-block:: console @@ -49,21 +45,13 @@ To build the tool you need a working `Rust compiler `_. After installing ``rustup``, the Rust toolchain can be installed by issuing ``rustup toolchain install 1.68``. -To build the ``genesis-creator`` tool, first clone the ``concordium-misc-tools`` repository which contains the source and check out the ``git`` sub-modules in the ``genesis-creator`` directory: - -.. code-block:: console - - git clone git@github.com:Concordium/concordium-misc-tools.git - cd genesis-creator - git submodule update --init --recursive - -The project is then built using ``cargo``: +To build the ``genesis-creator`` tool, do: .. code-block:: console - cargo build --release + cargo install --git https://github.com/Concordium/concordium-misc-tools.git genesis-creator --locked -This produces the binary ``./target/release/genesis-creator`` which you run to generate the genesis data. +This produces the binary ``~/.cargo/bin/genesis-creator`` which is run to generate the genesis data. Running the tool ---------------- @@ -78,19 +66,9 @@ The ``genesis-creator`` tool uses a TOML configuration file format for specifyin * keys for updating the chain * various parameters for the genesis -Furthermore, it specifies where to save the output that is used to invoke the node binary. Many of these options are not relevant when testing smart contracts and the easiest way to get started is to piggyback on one of the examples in the ``./examples`` folder. In the following, you will use the file ``./examples/genesis5.toml`` and modify it slightly. Inspecting the file reveals that it specifies an initial protocol version of 5, to output credentials for 5 baker accounts, 2 foundation accounts, and the genesis time set to the system time at generation. It also specifies 5 seconds as the average time per block. Further inspection of the table at the ``accounts`` key of the file reveals that the bakers each have an initial balance of 10^15 microCCD and a stake of 5 * 10^14 microCCD. Change this section such that only one baker credential is produced by setting the value of the ``repeat`` key to 1 as follows: - -.. code-block:: toml +Furthermore, it specifies where to save the output that is used to invoke the node binary. Most of these options are of little importance when testing smart contracts and the easiest way to get started is to piggyback on one of the examples in the ``./examples`` folder. In the following, you will use the configuration file ``./examples/single-baker-example-p5.toml``. Inspecting the configuration reveals that it specifies an initial protocol version of 5, to output credentials for 1 baker account, 1 foundation account and 100 regular accounts. It specifies the system time at generation for the genesis time and finally specifies 5 seconds as the average time per block. - [[accounts]] - kind = "fresh" - balance = "1000000000000000" - stake = "500000000000000" - template = "baker" - identityProvider = 0 - numKeys = 1 - threshold = 1 - repeat = 1 # Changed from 5 +Inspection of the tables at the ``accounts`` keys in the configuration you see that the baker account has an initial balance of 3.5 * 10^15 microCCD and stake of 3.0 * 10^15 microCCD, the foundation account has an initial balance of 10^16 microCCD and that the regular accounts each have an initial balance of 2.0 * 10^12. You can change the initial balances and stake if desired. The number of credentials produced for each type of account can adjusted by setting the values of the ``repeat`` keys to your choosing. .. Note:: @@ -100,7 +78,7 @@ Next, generate the genesis data: .. code-block:: console - $ ./target/release/genesis-creator generate --config ./examples/genesis5.toml + $ ~/.cargo/bin/genesis-creator generate --config ./examples/single-baker-example-p5.toml Deleting any existing directories. Account keys will be generated in ./accounts Chain update keys will be generated in ./update-keys @@ -115,20 +93,20 @@ Next, generate the genesis data: Average block time is set to 5000ms. DONE -In particular, the files of interest to you are ``./genesis.dat``, containing the genesis block data, and ``./bakers/baker-0-credentials.json``, containing the credentials of the single baker account that was created. +File ``./genesis.dat`` contains the genesis block data and ``./bakers/baker-0-credentials.json`` the credentials of the single baker account that was created. You supply these to the node binary to run the baker node. Keys for all generated accounts are output in the ``./accounts`` directory, and can be used when submitting transactions on behalf of the accounts, for instance using the `Concordium Client `_ command-line tool. Running the chain ================= -Now run the chain by starting a single baker node. The node expects the ``genesis.dat`` to reside in a configuration directory, so first create a working directory for the node data and configuration and copy ``genesis.dat`` to it: +Now run the chain by starting the baker node. The node expects the ``genesis.dat`` to be placed in its configuration directory, so first create a working directory for the node data and configuration and copy ``genesis.dat`` to it: .. code-block:: console mkdir localchain-node-0 cp ./genesis.dat localchain-node-0/ -Now run the baker node as follows: +Now run the baker node: .. code-block:: console @@ -141,11 +119,11 @@ Now run the baker node as follows: --config-dir localchain-node-0 \ --baker-credentials-file bakers/baker-0-credentials.json -The ``--no-bootstrap`` option lets the node know not to connect to a bootstrapper node for retrieving peers. It is specified here since no bootstrapper node is configured, and in particular this is not relevant since no other peers are in the network. The ``--listen-port`` option specifies the port to listen on for incoming peer-to-peer connections from other nodes. The ``--grpc2-listen-port`` specifies the port to listen on for :ref:`Concordium Node gRPC API V2 ` connections. This interface is used to communicate with the node. The ``--data-dir`` and ``--config-dir`` options specify the working directories of the node instance, where its state and configuration are stored. The ``--baker-credentials-file`` instructs the node to run as the baker specified by the supplied credentials file. In this case, this is your generated baker credentials output from the ``genesis-creator`` tool. +The ``--no-bootstrap`` option lets the node know not to connect to a bootstrapper node for retrieving peers. It is specified here since no bootstrapper node is configured, and in particular this is not relevant since no other peers partake in the network. The ``--listen-port`` option specifies the port to listen on for incoming peer-to-peer connections from other nodes. The ``--grpc2-listen-port`` specifies the port to listen on for :ref:`Concordium Node gRPC API V2 ` connections. This interface is used to manage and query the node. The ``--data-dir`` and ``--config-dir`` options specify the working directories of the node instance, where its state and configuration are stored. Note that you may specify the same directory for both as in this example. The ``--baker-credentials-file`` option instructs the node to run as the baker specified by the supplied credentials file. In this case, this is your generated baker credentials output from the ``genesis-creator`` tool. .. Note:: - If more baker credentials are generated, several bakers for each such can be spun up by replacing the arguments specified by the ``--baker-credentials-file``. If there is no bootstrapper node, it will have to be instructed to manually connect to one another by specifying the IP address and port of the other node(s) using the ``--connect-to`` option. Note that node instances using the same network interfaces should each specify different listen ports, and node instances running on the same file-system should each specify different data and config directories. + If more baker credentials are generated, several bakers for each such can be spun up by replacing the arguments specified by the ``--baker-credentials-file``. If there is no bootstrapper node, nodes must be manually instructed to connect to one another by specifying the IP address and port of the other node(s) using the ``--connect-to`` option. Note that node instances using the same network interfaces should each specify different listen ports, and node instances using the same file-system should specify different data and config directories. Interacting with your local chain From 654c6385ea7de20728e365ded1f66bb6cd3efc7a Mon Sep 17 00:00:00 2001 From: Viktor Fredslund-Hansen Date: Thu, 25 May 2023 16:14:33 +0200 Subject: [PATCH 063/193] Review comments. --- source/mainnet/net/guides/run-local-chain.rst | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 7efa69e56c..de8cc3ae05 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -15,7 +15,7 @@ You need a working installation of the Concordium Node distribution version 5 or Installing the node distribution -------------------------------- -Concordium Node releases exist for Ubuntu, MacOS, Windows, and Docker. See the :ref:`Node Requirements` section for information on system requirements and detailed instructions on how to obtain, run, and manage a node. To run a baker, you need to a Concordium node binary supplied with one of these distributions to be available in your path. The name of the binary will have ``concordium-`` as its prefix but depend on the distribution, so you may have to confer with the installation instructions to figure out the name. Upon successful installation of the distribution, verify that the binary exists in your path at the required version: +Concordium Node releases exist for Ubuntu, MacOS, Windows, and Docker. See the :ref:`Node Requirements` section for information on system requirements and detailed instructions on how to obtain, run, and manage a node. To run a baker, you need a Concordium node binary supplied with one of these distributions in your path. The name of the binary will have ``concordium-`` as its prefix but depend on the distribution, so you may have to confer with the installation instructions to figure out the exact name. Upon successful installation of the distribution, verify that the binary exists in your path at the required version: .. code-block:: console @@ -29,10 +29,10 @@ Concordium Node releases exist for Ubuntu, MacOS, Windows, and Docker. See the : Generating genesis data and account credentials ----------------------------------------------- -Use the `genesis-creator `_ tool to generate genesis block data and credentials for the foundation and (initial) baker accounts. +You use the `genesis-creator `_ tool to generate genesis block data and credentials for the foundation and (initial) baker accounts. Building the tool ------------------ +^^^^^^^^^^^^^^^^^ To build the tool you need a working `Rust compiler `_ of version 1.65 or higher. After installing it, verify that `rustc` exists in your path at the required version: @@ -54,7 +54,7 @@ To build the ``genesis-creator`` tool, do: This produces the binary ``~/.cargo/bin/genesis-creator`` which is run to generate the genesis data. Running the tool ----------------- +^^^^^^^^^^^^^^^^ The ``genesis-creator`` tool uses a TOML configuration file format for specifying parameters from which the genesis data is generated. The TOML file specifies @@ -66,7 +66,7 @@ The ``genesis-creator`` tool uses a TOML configuration file format for specifyin * keys for updating the chain * various parameters for the genesis -Furthermore, it specifies where to save the output that is used to invoke the node binary. Most of these options are of little importance when testing smart contracts and the easiest way to get started is to piggyback on one of the examples in the ``./examples`` folder. In the following, you will use the configuration file ``./examples/single-baker-example-p5.toml``. Inspecting the configuration reveals that it specifies an initial protocol version of 5, to output credentials for 1 baker account, 1 foundation account and 100 regular accounts. It specifies the system time at generation for the genesis time and finally specifies 5 seconds as the average time per block. +Furthermore, it specifies where to save the output that is used to invoke the node binary. Most of these options are of little importance when testing smart contracts and the easiest way to get started is to piggyback off of the example configuration file ``single-baker-example-p5.toml`` found `here`. Inspecting the configuration reveals that it specifies an initial protocol version of 5, to output credentials for 1 baker account, 1 foundation account and 100 regular accounts. It specifies the system time at generation for the genesis time and finally specifies 5 seconds as the average time per block. Inspection of the tables at the ``accounts`` keys in the configuration you see that the baker account has an initial balance of 3.5 * 10^15 microCCD and stake of 3.0 * 10^15 microCCD, the foundation account has an initial balance of 10^16 microCCD and that the regular accounts each have an initial balance of 2.0 * 10^12. You can change the initial balances and stake if desired. The number of credentials produced for each type of account can adjusted by setting the values of the ``repeat`` keys to your choosing. @@ -74,11 +74,11 @@ Inspection of the tables at the ``accounts`` keys in the configuration you see t Note that the staked amount needed to participate in the finalization committee is some fraction of the total amount of existing CCD defined by the value of the ``capitalBound`` key in the configurations file. The total amount is the sum of the balances of all the baker and foundation accounts specified in the genesis configuration file. In this particular example, the stake is sufficient for baking. -Next, generate the genesis data: +Save the file as ``single-baker-example-p5.toml`` and generate the genesis data: .. code-block:: console - $ ~/.cargo/bin/genesis-creator generate --config ./examples/single-baker-example-p5.toml + $ ~/.cargo/bin/genesis-creator generate --config ./single-baker-example-p5.toml Deleting any existing directories. Account keys will be generated in ./accounts Chain update keys will be generated in ./update-keys @@ -93,11 +93,11 @@ Next, generate the genesis data: Average block time is set to 5000ms. DONE -File ``./genesis.dat`` contains the genesis block data and ``./bakers/baker-0-credentials.json`` the credentials of the single baker account that was created. You supply these to the node binary to run the baker node. Keys for all generated accounts are output in the ``./accounts`` directory, and can be used when submitting transactions on behalf of the accounts, for instance using the `Concordium Client `_ command-line tool. +The file ``./genesis.dat`` contains the generated genesis block data and ``./bakers/baker-0-credentials.json`` the generated credentials of the single baker account that was created. You supply these to the node binary to run the baker node. Keys for each generated account is output in the ``./accounts`` directory, and are used when submitting transactions on behalf of the accounts, for instance using the `Concordium Client `_ command-line tool. -Running the chain -================= +Running the local chain +======================= Now run the chain by starting the baker node. The node expects the ``genesis.dat`` to be placed in its configuration directory, so first create a working directory for the node data and configuration and copy ``genesis.dat`` to it: @@ -126,8 +126,8 @@ The ``--no-bootstrap`` option lets the node know not to connect to a bootstrappe If more baker credentials are generated, several bakers for each such can be spun up by replacing the arguments specified by the ``--baker-credentials-file``. If there is no bootstrapper node, nodes must be manually instructed to connect to one another by specifying the IP address and port of the other node(s) using the ``--connect-to`` option. Note that node instances using the same network interfaces should each specify different listen ports, and node instances using the same file-system should specify different data and config directories. -Interacting with your local chain -================================= +Interacting with the local chain +================================ You can now interact with your local chain through the node via the :ref:`Concordium Node gRPC API V2 ` exposed on port 20100 as you would with :ref:`Mainnet` or :ref:`Testnet` nodes. Concordium provides various :ref:`SDKs and APIs` that facilitate this as well as the `Concordium Client `_ command-line tool. Assuming you have the ``concordium-client`` binary version 5.1.1 or higher in your path, list the accounts using the ``account list`` command: From eaf10e5b3af602ce771a8356ca7c4b271eb0afac Mon Sep 17 00:00:00 2001 From: Viktor Fredslund-Hansen Date: Thu, 25 May 2023 16:20:09 +0200 Subject: [PATCH 064/193] Review comments. --- source/mainnet/net/guides/run-local-chain.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index de8cc3ae05..ad763af891 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -56,7 +56,7 @@ This produces the binary ``~/.cargo/bin/genesis-creator`` which is run to genera Running the tool ^^^^^^^^^^^^^^^^ -The ``genesis-creator`` tool uses a TOML configuration file format for specifying parameters from which the genesis data is generated. The TOML file specifies +The ``genesis-creator`` tool uses a TOML configuration file format for specifying parameters from which the genesis data is generated. The TOML file specifies: * the initial protocol version * cryptographic parameters @@ -66,13 +66,13 @@ The ``genesis-creator`` tool uses a TOML configuration file format for specifyin * keys for updating the chain * various parameters for the genesis -Furthermore, it specifies where to save the output that is used to invoke the node binary. Most of these options are of little importance when testing smart contracts and the easiest way to get started is to piggyback off of the example configuration file ``single-baker-example-p5.toml`` found `here`. Inspecting the configuration reveals that it specifies an initial protocol version of 5, to output credentials for 1 baker account, 1 foundation account and 100 regular accounts. It specifies the system time at generation for the genesis time and finally specifies 5 seconds as the average time per block. +Furthermore, it specifies where to save the output that is used to invoke the node binary. Most of these options are of little importance when testing smart contracts and the easiest way to get started is to piggyback off of the example configuration file ``single-baker-example-p5.toml`` found `here `_. Inspecting the configuration reveals that it specifies an initial protocol version of 5, to output credentials for 1 baker account, 1 foundation account and 100 regular accounts. It specifies the system time at generation for the genesis time and finally specifies 5 seconds as the average time per block. -Inspection of the tables at the ``accounts`` keys in the configuration you see that the baker account has an initial balance of 3.5 * 10^15 microCCD and stake of 3.0 * 10^15 microCCD, the foundation account has an initial balance of 10^16 microCCD and that the regular accounts each have an initial balance of 2.0 * 10^12. You can change the initial balances and stake if desired. The number of credentials produced for each type of account can adjusted by setting the values of the ``repeat`` keys to your choosing. +Further inspection of the tables at the ``accounts`` keys reveals that the baker account has an initial balance of 3.5 * 10^15 microCCD and stake of 3.0 * 10^15 microCCD, the foundation account has an initial balance of 10^16 microCCD and that the regular accounts each have an initial balance of 2.0 * 10^12. You can change the initial stake and balances if desired. The number of credentials produced for each type of account can also be adjusted by setting the values of the ``repeat`` keys to your choosing. .. Note:: - Note that the staked amount needed to participate in the finalization committee is some fraction of the total amount of existing CCD defined by the value of the ``capitalBound`` key in the configurations file. The total amount is the sum of the balances of all the baker and foundation accounts specified in the genesis configuration file. In this particular example, the stake is sufficient for baking. + Note that the staked amount needed to participate in the finalization committee is some fraction of the total amount of existing CCD. The total amount is the sum of the balances of all the baker and foundation accounts specified in the genesis configuration file. In this particular example, the stake is sufficient for baking. Save the file as ``single-baker-example-p5.toml`` and generate the genesis data: @@ -119,7 +119,7 @@ Now run the baker node: --config-dir localchain-node-0 \ --baker-credentials-file bakers/baker-0-credentials.json -The ``--no-bootstrap`` option lets the node know not to connect to a bootstrapper node for retrieving peers. It is specified here since no bootstrapper node is configured, and in particular this is not relevant since no other peers partake in the network. The ``--listen-port`` option specifies the port to listen on for incoming peer-to-peer connections from other nodes. The ``--grpc2-listen-port`` specifies the port to listen on for :ref:`Concordium Node gRPC API V2 ` connections. This interface is used to manage and query the node. The ``--data-dir`` and ``--config-dir`` options specify the working directories of the node instance, where its state and configuration are stored. Note that you may specify the same directory for both as in this example. The ``--baker-credentials-file`` option instructs the node to run as the baker specified by the supplied credentials file. In this case, this is your generated baker credentials output from the ``genesis-creator`` tool. +The ``--no-bootstrap`` flag instructs the node to not connect to a bootstrapper node for retrieving peers. It is specified here since no bootstrapper node is configured, and in particular this is not relevant since no other peers partake in the network. The ``--listen-port`` option specifies the port to listen on for incoming peer-to-peer connections from other nodes. The ``--grpc2-listen-port`` specifies the port to listen on for :ref:`Concordium Node gRPC API V2 ` connections. This interface is used to manage and query the node. The ``--data-dir`` and ``--config-dir`` options specify the working directories of the node instance, where its state and configuration are stored. Note that you may specify the same directory for both as in this example. The ``--baker-credentials-file`` option instructs the node to run as the baker specified by the supplied credentials file. In this case, this is your generated baker credentials output from the ``genesis-creator`` tool. .. Note:: From 5589cb5a3af6af1317bfd77f28d747b963c91735 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Fri, 26 May 2023 08:42:00 +0200 Subject: [PATCH 065/193] Added client release information --- source/mainnet/net/installation/downloads-testnet.rst | 10 +++++----- source/mainnet/net/installation/downloads.rst | 10 +++++----- .../mainnet/net/resources/release-notes-mainnet.rst | 11 +++++++++++ source/mainnet/net/resources/release-notes.rst | 9 +++++++++ source/mainnet/variables.rst | 6 +++--- 5 files changed, 33 insertions(+), 13 deletions(-) diff --git a/source/mainnet/net/installation/downloads-testnet.rst b/source/mainnet/net/installation/downloads-testnet.rst index 5c433a111f..8b120e7208 100644 --- a/source/mainnet/net/installation/downloads-testnet.rst +++ b/source/mainnet/net/installation/downloads-testnet.rst @@ -108,10 +108,10 @@ When installing the certificate, ensure that the public key of the certificate i .. _concordium-node-and-client-download-testnet: -Concordium Client v5.1.1 -======================== +Concordium Client |client-version| +================================== -- `Download the Testnet Concordium Client for Linux `_ +- `Download the Testnet Concordium Client for Linux `_ - SHA256 checksum of the download: :substitution-code:`|client-linux-checksum|` @@ -123,13 +123,13 @@ Concordium Client v5.1.1 where you replace `*` with |client-version|. -- `Download the Testnet Concordium Client for macOS `_ +- `Download the Testnet Concordium Client for macOS `_ - The macOS distribution is an installer that places an alias to the binary into the folder ``/usr/local/bin``. So after installing, you should have ``concordium-client`` on your path. -- `Download the Testnet Concordium Client for Windows `_ +- `Download the Testnet Concordium Client for Windows `_ .. _cargo-concordium-testnet: diff --git a/source/mainnet/net/installation/downloads.rst b/source/mainnet/net/installation/downloads.rst index 4a20c3cd0f..ea846cbda8 100644 --- a/source/mainnet/net/installation/downloads.rst +++ b/source/mainnet/net/installation/downloads.rst @@ -106,10 +106,10 @@ When installing the certificate, ensure that the public key of the certificate i .. _concordium-node-and-client-download: -Concordium Client v5.1.1 -======================== +Concordium Client |client-version| +=================================== -- `Download the Mainnet Concordium Client for Linux `_ +- `Download the Mainnet Concordium Client for Linux `_ - SHA256 checksum of the download: :substitution-code:`|client-linux-checksum|` - :ref:`Verification instructions ` @@ -122,13 +122,13 @@ Concordium Client v5.1.1 where you replace `*` with |client-version|. -- `Download the Mainnet Concordium Client for macOS `_ +- `Download the Mainnet Concordium Client for macOS `_ - The macOS distribution is an installer that places an alias to the binary into the folder ``/usr/local/bin``. So after installing, you should have ``concordium-client`` on your path. -- `Download the Mainnet Concordium Client for Windows `_ +- `Download the Mainnet Concordium Client for Windows `_ ``cargo-concordium`` v2.8.0 =========================== diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index fa560cd3b2..64a492bbf0 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -11,6 +11,17 @@ Release notes - Mainnet To subscribe to updates on the Mainnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. +June 1, 2023 + +Concordium Client 5.2.0 +----------------------- + +Version 5.2.0 contains the following features and bug fixes: + +- Fixed a bug that caused another code-leftover to be displayed in the finalization proof line of the gas rewards section of the ``consensus show-chain-parameters`` output. This is only relevant when the queried chain runs protocol version 6. + +- Added ``raw GetBlockTransactionEvents`` that prints the list of transaction outcomes in a given block. + May 11, 2023 ``cargo-concordium`` 2.8.0 diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index 24275578a5..ba2a08f064 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -28,6 +28,15 @@ Concordium node version 5.4.0 contains the following features and bug fixes: - Do not use peer buckets when running as a normal node (not as a bootstrapper). +Concordium Client 5.2.0 +----------------------- + +Version 5.2.0 contains the following features and bug fixes: + +- Fixed a bug that caused another code-leftover to be displayed in the finalization proof line of the gas rewards section of the ``consensus show-chain-parameters`` output. This is only relevant when the queried chain runs protocol version 6. + +- Added ``raw GetBlockTransactionEvents`` that prints the list of transaction outcomes in a given block. + May 11, 2023 ``cargo-concordium`` 2.8.0 diff --git a/source/mainnet/variables.rst b/source/mainnet/variables.rst index 935008520a..f7dd11dae3 100644 --- a/source/mainnet/variables.rst +++ b/source/mainnet/variables.rst @@ -13,9 +13,9 @@ .. |bw| replace:: Concordium Wallet for Web .. Client verification variables -.. |client-linux| replace:: concordium-client_5.1.1 -.. |client-version| replace:: 5.1.1 -.. |client-linux-checksum| replace:: 73d037fdbc0924ae0be302ad960ee4e2ec9bbb1d1c4a4bbefbcf2c3f97afd163 +.. |client-linux| replace:: concordium-client_5.2.0 +.. |client-version| replace:: 5.2.0 +.. |client-linux-checksum| replace:: d844949990de4dc60990d90f60caed5888932d40af884e64df612f87d816c14e .. Cargo verification variables .. |cargo-linux| replace:: cargo-concordium_2.8.0 From 0af631e0dadc5ae1c664e05b0eeba3e2858b75e7 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Fri, 26 May 2023 10:20:32 +0200 Subject: [PATCH 066/193] Updated version number and release notes --- .../net/resources/release-notes-mainnet.rst | 16 +++++++++++++--- source/mainnet/net/resources/release-notes.rst | 16 +++++++++++++--- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index a53bf971c7..7801d9828e 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -11,12 +11,12 @@ Release notes - Mainnet To subscribe to updates on the Mainnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. -May 25, 2023 +June 1, 2023 -|bw| 1.0.5 +|bw| 1.0.6 ------------------------- -|bw| 1.0.5 contains fixes for the following issues: +|bw| 1.0.6 contains fixes for the following issues: - The About page link to the terms and conditions pointed to the wrong URL. It now uses the value retrieved from the wallet proxy, or the correct default to the unified terms and conditions page. @@ -24,10 +24,20 @@ May 25, 2023 - Fixed an issue where the transaction list view would show the Request CCD button while loading the initial batch of transactions. +- Fixed an issue so the first call of the gRPC client no longer always fails. + +- Fixed an issue so the first call of the gRPC client after changing network uses the correct network. + - Added a missing translation for the Request CCD button. - ``deployModule`` transactions are now supported in the ``sendTransaction`` endpoint of the wallet-api. + - In the display of a `deployModule` transaction, the previously titled module hash is now titled module reference. + + - Display of a `deployModule` transaction includes a copy button for the module reference. + + - Updated web-sdk to fix incorrect estimated cost for `deployModule` transaction. + - Added text that a transaction has been submitted. - Messages when confirming baker/delegation transactions no longer appear after the transaction has been submitted. diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index 8639987d8e..73a8a7f58f 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -11,12 +11,12 @@ Release Notes - Testnet To subscribe to updates on the Testnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. -May 25, 2023 +June 1, 2023 -|bw| 1.0.5 +|bw| 1.0.6 ------------------------- -|bw| 1.0.5 contains fixes for the following issues: +|bw| 1.0.6 contains fixes for the following issues: - The About page link to the terms and conditions pointed to the wrong URL. It now uses the value retrieved from the wallet proxy, or the correct default to the unified terms and conditions page. @@ -24,10 +24,20 @@ May 25, 2023 - Fixed an issue where the transaction list view would show the Request CCD button while loading the initial batch of transactions. +- Fixed an issue so the first call of the gRPC client no longer always fails. + +- Fixed an issue so the first call of the gRPC client after changing network uses the correct network. + - Added a missing translation for the Request CCD button. - ``deployModule`` transactions are now supported in the ``sendTransaction`` endpoint of the wallet-api. + - In the display of a `deployModule` transaction, the previously titled module hash is now titled module reference. + + - Display of a `deployModule` transaction includes a copy button for the module reference. + + - Updated web-sdk to fix incorrect estimated cost for `deployModule` transaction. + - Added text that a transaction has been submitted. - Messages when confirming baker/delegation transactions no longer appear after the transaction has been submitted. From 3bb39875ada16ccc0187e668b049722783ab8637 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Fri, 26 May 2023 14:51:45 +0200 Subject: [PATCH 067/193] Update release-notes-mainnet.rst --- source/mainnet/net/resources/release-notes-mainnet.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index 40f2b0a29f..838a01c7da 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -11,7 +11,7 @@ Release notes - Mainnet To subscribe to updates on the Mainnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. -May 25, 2023 +May 30, 2023 |mw-gen2| for iOS 1.0.1 ------------------------------- From d29cd0f9ea83af7f6e26fe40ebdfc3866b4f1030 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Fri, 26 May 2023 14:52:03 +0200 Subject: [PATCH 068/193] Update release-notes.rst --- source/mainnet/net/resources/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index 2210665155..3a7a379cc8 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -11,7 +11,7 @@ Release Notes - Testnet To subscribe to updates on the Testnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. -May 25, 2023 +May 30, 2023 |mw-gen2| for iOS 1.0.1 ------------------------------- From 3527362a9266350e4cb5236aaafe3fdeb046aeae Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Fri, 26 May 2023 14:52:36 +0200 Subject: [PATCH 069/193] Update release-notes-mainnet.rst --- source/mainnet/net/resources/release-notes-mainnet.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index 8b78c6a6a0..5a046b476e 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -11,7 +11,7 @@ Release notes - Mainnet To subscribe to updates on the Mainnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. -May 25, 2023 +May 30, 2023 |mw-gen2| for Android 1.1.8 ----------------------------------------- From 32e48f3bc6b19c936e446ba04e9abc14b5ce5258 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Fri, 26 May 2023 14:52:51 +0200 Subject: [PATCH 070/193] Update release-notes.rst --- source/mainnet/net/resources/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index 65b0d3b8e9..bfa2dbdc9e 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -11,7 +11,7 @@ Release Notes - Testnet To subscribe to updates on the Testnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. -May 25, 2023 +May 30, 2023 |mw-gen2| for Android 1.1.8 ----------------------------------------- From 555abc29f37dabd45be16560cc9ce37f442143a9 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Tue, 30 May 2023 08:58:35 +0200 Subject: [PATCH 071/193] Add note about supported devices for BW --- source/mainnet/net/browser-wallet/browser-wallet-faq.rst | 6 +++++- source/mainnet/net/browser-wallet/setup-browser-wallet.rst | 4 ++++ source/mainnet/net/guides/deciding-wallet.rst | 6 +++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/source/mainnet/net/browser-wallet/browser-wallet-faq.rst b/source/mainnet/net/browser-wallet/browser-wallet-faq.rst index 0f5e44c469..13769540ad 100644 --- a/source/mainnet/net/browser-wallet/browser-wallet-faq.rst +++ b/source/mainnet/net/browser-wallet/browser-wallet-faq.rst @@ -38,6 +38,10 @@ - Put it in a safe location. Keep your secret recovery phrase in a safe location that is fireproof and waterproof, and that you will remember and can access relatively easily. There are companies that make devices, such as https://shop.ledger.com/products/the-billfodl that can safely store your secret recovery phrase. - Keep multiple physical copies of your secret recovery phrase in safe locations. +.. dropdown:: Can I use the |bw| extension in a web browser on a mobile phone or tablet device? + + No, the |bw| extension is only supported in a web browser running on a computer. + .. dropdown:: Do I still need to make backups of my wallet? No. For the |bw| and |mw-gen2| you do not need to make backups. Your :ref:`secret recovery phrase` that you write down is the only way to recover your accounts and identities. @@ -58,7 +62,7 @@ It is also important to note that if, for example, you add an account on one wallet that is recovered on two devices in parallel (from the same recovery phrase), nothing is dynamically updated across wallets from the same recovery phrase except balances. To get updates such as a new account or new identity, it is necessary to :ref:`recover` from your recovery phrase again; however you do not need to enter the recovery phrase again as the wallet will remember it. -.. dropdown:: Can I use my secret recovery phrase to restore my accounts in third party wallets? +.. dropdown:: Can I use my secret recovery phrase to restore my accounts in third-party wallets? At the moment Concordium identities and accounts are only supported in Concordium Wallets. However, Concordium expects to provide support for CCD and CIS-2 tokens in third party wallets in the future. diff --git a/source/mainnet/net/browser-wallet/setup-browser-wallet.rst b/source/mainnet/net/browser-wallet/setup-browser-wallet.rst index 36029641a5..ef121cc864 100644 --- a/source/mainnet/net/browser-wallet/setup-browser-wallet.rst +++ b/source/mainnet/net/browser-wallet/setup-browser-wallet.rst @@ -12,6 +12,10 @@ To learn more about identities and accounts, see :ref:`identities Date: Tue, 30 May 2023 09:36:36 +0200 Subject: [PATCH 072/193] iOS Legacy 3.2.0 release --- source/mainnet/net/concepts/id-accounts.rst | 4 +- source/mainnet/net/guides/create-account.rst | 42 +------------------ source/mainnet/net/guides/create-identity.rst | 38 +---------------- source/mainnet/net/guides/deciding-wallet.rst | 2 +- .../net/references/manage-accounts.rst | 2 +- .../net/resources/release-notes-mainnet.rst | 7 ++++ .../mainnet/net/resources/release-notes.rst | 7 ++++ 7 files changed, 20 insertions(+), 82 deletions(-) diff --git a/source/mainnet/net/concepts/id-accounts.rst b/source/mainnet/net/concepts/id-accounts.rst index 14fd74c5f2..84bbce0d17 100644 --- a/source/mainnet/net/concepts/id-accounts.rst +++ b/source/mainnet/net/concepts/id-accounts.rst @@ -50,7 +50,7 @@ You can :ref:`create identities` in the Desktop Wallet, .. Note:: - It is no longer possible for users of |mw-gen1| on an Android device to create new identities. + It is no longer possible for users of |mw-gen1| to create new identities. Identity issuance requires *Identity Verification*, which is the process of verifying the real-life identity of the user. This typically requires taking photographs or scans of identification documents, such as a passport. Identity verification also checks that the user-chosen attributes are valid for the user. @@ -72,7 +72,7 @@ Any time you create a new account in |mw-gen1|, you should make a :ref:`backup`. - - .. Note:: - To access the **Balance** of the new account, tap the Balance area on the account card or tap |moredetails|. + It is no longer possible for users of |mw-gen1| to create new accounts. .. dropdown:: |bw| diff --git a/source/mainnet/net/guides/create-identity.rst b/source/mainnet/net/guides/create-identity.rst index 2a79042e07..30e97b4c8e 100644 --- a/source/mainnet/net/guides/create-identity.rst +++ b/source/mainnet/net/guides/create-identity.rst @@ -92,43 +92,7 @@ To learn more about identities and accounts, see :ref:`Identities ` in the |mw-gen1|. You do this from the **Identities** page. - - #. Go to the |morepage| page. - - #. Tap **Your identity cards** page. - - #. Tap the **+** in the upper right corner. - - #. Enter a name for your initial account. This name is only stored locally in the app and is only known by you. Tap **Continue**. - - #. Enter a name for your identity. Again, this name is only stored locally in the app and only known by you. Tap **Continue to identity providers**. - - - .. image:: ../images/mobile-wallet/MW10.png - :width: 25% - - #. Select a third-party identity provider from the list. An external web page opens within the app. - - .. image:: ../images/mobile-wallet/MW11.png - :width: 25% - - #. Enter the information requested by the third-party identity provider. The information might vary depending on the identity provider. However, they will ask you to provide photos of identification documents and a selfie. - - #. When you have submitted the information to the identity provider, you will have a pending identity in your app. The verification or rejection is usually retrieved from the identity provider within minutes, but check your app frequently to retrieve the result. It might take up to seven days for the result to appear. - - .. image:: ../images/mobile-wallet/MW12.png - :width: 25% - - .. Warning:: - **When your identity and initial account has been verified, backup is essential. If you lose your mobile phone or need to restore your mobile phone and you don't have a backup from the Mobile Wallet, you can't access your wallet and your CCDs are permanently inaccessible.** - **Concordium does not take any responsibility if you lose access to your accounts. Concordium strongly advise you to complete a backup every time you create an account and store the backup file in a secure place - preferably offline.** - For more information, see :ref:`Make a backup of identities and accounts in Mobile Wallet`. - - .. Note:: - To access the **Balance** of the new account, tap the Balance area on the account card or tap More. + It is no longer possible for users of |mw-gen1| to create new identities. .. dropdown:: |bw| diff --git a/source/mainnet/net/guides/deciding-wallet.rst b/source/mainnet/net/guides/deciding-wallet.rst index 20c2321006..c1ffd22a13 100644 --- a/source/mainnet/net/guides/deciding-wallet.rst +++ b/source/mainnet/net/guides/deciding-wallet.rst @@ -36,7 +36,7 @@ The wallets work on two different environments: the Desktop Wallet on a computer .. Note:: - If you are a new mobile wallet user, you must use the |mw-gen2|. It is no longer possible for users of |mw-gen1| on an Android device to create new accounts. + If you are a new mobile wallet user, you must use the |mw-gen2|. It is no longer possible for users of |mw-gen1| to create new accounts. The following provides more details on the differences between the wallets. diff --git a/source/mainnet/net/references/manage-accounts.rst b/source/mainnet/net/references/manage-accounts.rst index a80691c9d4..8b759d4d22 100644 --- a/source/mainnet/net/references/manage-accounts.rst +++ b/source/mainnet/net/references/manage-accounts.rst @@ -198,7 +198,7 @@ The |mw-gen1| is a digital smartphone wallet that enables you to create and mana .. Note:: - It is no longer possible for users of |mw-gen1| on an Android device to create new accounts. + It is no longer possible for users of |mw-gen1| to create new accounts. The |mw-gen2| ------------------ diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index fa560cd3b2..fcbadd6d64 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -11,6 +11,13 @@ Release notes - Mainnet To subscribe to updates on the Mainnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. +May 30, 2023 + +|mw-gen1| for iOS 3.2.0 +-------------------------------- + +Identity and account creation has been locked in |mw-gen1| for iOS devices. This means that you cannot create new identities or accounts in |mw-gen1| on an iOS device. You can continue to use |mw-gen1|, but if you need to create a new identity or account you must use |mw-gen2|. You can also still recover your wallet from a backup file in |mw-gen1| on an iOS device. + May 11, 2023 ``cargo-concordium`` 2.8.0 diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index de5b6797b5..ca7344994e 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -11,6 +11,13 @@ Release Notes - Testnet To subscribe to updates on the Testnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. +May 30, 2023 + +|mw-gen1| for iOS 3.2.0 +-------------------------------- + +Identity and account creation has been locked in |mw-gen1| for iOS devices. This means that you cannot create new identities or accounts in |mw-gen1| on an iOS device. You can continue to use |mw-gen1|, but if you need to create a new identity or account you must use |mw-gen2|. You can also still recover your wallet from a backup file in |mw-gen1| on an iOS device. + May 11, 2023 ``cargo-concordium`` 2.8.0 From b1eb12ec0ea35b13659cd74221552929a85fcec8 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Tue, 30 May 2023 09:45:12 +0200 Subject: [PATCH 073/193] Update version number and add variable --- .../net/installation/downloads-testnet.rst | 16 ++++++++-------- source/mainnet/net/resources/release-notes.rst | 4 ++-- source/mainnet/variables.rst | 5 ++++- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/source/mainnet/net/installation/downloads-testnet.rst b/source/mainnet/net/installation/downloads-testnet.rst index 8b120e7208..1adcb33614 100644 --- a/source/mainnet/net/installation/downloads-testnet.rst +++ b/source/mainnet/net/installation/downloads-testnet.rst @@ -152,8 +152,8 @@ For the system requirements to run a node, see :ref:`System requirements to run When upgrading, you can only upgrade one minor version at a time, or from the last release of major version X to major version X+1. You cannot skip versions. For patches, you can skip versions e.g. X.X.0 to X.X.3, or `X.1.1` to `X.2.3`. To download previous node versions, see :ref:`Previous node versions`. -Ubuntu v5.4.0 -------------- +Ubuntu |testnet-node-version| +----------------------------- To run a node on a server with Ubuntu, you need a Debian package. @@ -163,8 +163,8 @@ To run a node on a server with Ubuntu, you need a Debian package. To learn how to run a node with Ubuntu, see :ref:`Run a node on a server with Ubuntu `. -Linux-Docker v5.4.0 -------------------- +Linux-Docker |testnet-node-version| +----------------------------------- .. _concordium-docker-package-download-testnet: @@ -172,8 +172,8 @@ To learn how to run a node with Docker, see :ref:`Run a node with Docker ` for details. -Windows v5.4.0 --------------- +Windows |testnet-node-version| +------------------------------ To run a node on Windows, you need a Windows Installer package. **Please be aware that you should backup your configuration, as the installer will overwrite the current configuration with a standard configuration.** @@ -181,8 +181,8 @@ To run a node on Windows, you need a Windows Installer package. **Please be awar To learn how to run a node on Windows, see :ref:`Run and manage a node on Windows `. -Mac v5.4.0 ----------- +Mac |testnet-node-version| +-------------------------- To run a node on macOS, you need a macOS installer package. diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index ba2a08f064..9df0c72dc6 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -13,10 +13,10 @@ Release Notes - Testnet June 1, 2023 -Concordium Node 5.4.0 +Concordium Node 5.4.1 --------------------- -Concordium node version 5.4.0 contains the following features and bug fixes: +Concordium node version 5.4.1 contains the following features and bug fixes: - Enable CORS support in grpc-web. This only applies when grpc-web is enabled. diff --git a/source/mainnet/variables.rst b/source/mainnet/variables.rst index f7dd11dae3..74babf81e8 100644 --- a/source/mainnet/variables.rst +++ b/source/mainnet/variables.rst @@ -22,8 +22,11 @@ .. |cargo-version| replace:: 2.8.0 .. |cargo-linux-checksum| replace:: ea3f603e2a921181cdf323604066444378a955c55e82b206a7d169bf636fa75d -.. Node debian package verification variables +.. Node version variables +.. |mainnet-node-version| replace:: 5.3.2 +.. |testnet-node-version| replace:: 5.4.1 +.. Node debian package verification variables .. |node-deb-package| replace:: concordium-mainnet-node_5.3.2-0_amd64.deb .. |node-deb-package-checksum| replace:: 9b62ce7cd862bf667e40cc6f1f79e47ea16a61fd5a8037291c44d7a0f3e66d9e From 081781e83bfab1e13ffb920548ee77fa80c5ecd2 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Tue, 30 May 2023 09:51:09 +0200 Subject: [PATCH 074/193] Update release-notes-mainnet.rst --- source/mainnet/net/resources/release-notes-mainnet.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index 7801d9828e..738b0b79c9 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -11,7 +11,7 @@ Release notes - Mainnet To subscribe to updates on the Mainnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. -June 1, 2023 +May 30, 2023 |bw| 1.0.6 ------------------------- From 4f2f40fa034c269b426a7717d347afe8e3e3066c Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Tue, 30 May 2023 09:51:39 +0200 Subject: [PATCH 075/193] Update release-notes.rst --- source/mainnet/net/resources/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index 73a8a7f58f..45370c4db5 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -11,7 +11,7 @@ Release Notes - Testnet To subscribe to updates on the Testnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. -June 1, 2023 +May 30, 2023 |bw| 1.0.6 ------------------------- From f86bf2833ef7144056021ec44696ef91147672e9 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Tue, 30 May 2023 11:09:03 +0200 Subject: [PATCH 076/193] Update run-local-chain.rst Add note about advanced usage --- source/mainnet/net/guides/run-local-chain.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index ad763af891..8ec7bbb9f6 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -9,6 +9,10 @@ This guide details how to run your own instance of the Concordium blockchain. Th The chain is run by a network of baker nodes that bake and finalize blocks. In the following minimal example you will set up a network comprised of a single baker node that runs *locally* on your system. Note, however, that the concepts demonstrated here equally apply to any number of baker nodes configured in a LAN or WAN setting. +.. Note:: + + Running your own local chain is an advanced process and not applicable for all use cases. Users with little or no blockchain experience should not attempt to run a local chain. If you run into issues while installing, configuring, and running your local chain, contact `Concordium support `_. + Prerequisites ============= You need a working installation of the Concordium Node distribution version 5 or above, instances of which will be used to run the baker node(s), :ref:`genesis block` data which specifies your local chain and sets of credentials for baker accounts of the chain. The number of sets of credentials needed will thus depend on the desired number of bakers in the network, which in this example is 1. From 4d409962589ae558ef2a9b977d4da60404c2d9d1 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Tue, 30 May 2023 11:28:27 +0200 Subject: [PATCH 077/193] Update run-local-chain.rst Remove whitespace --- source/mainnet/net/guides/run-local-chain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 8ec7bbb9f6..4aee27d86c 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -12,7 +12,7 @@ The chain is run by a network of baker nodes that bake and finalize blocks. In t .. Note:: Running your own local chain is an advanced process and not applicable for all use cases. Users with little or no blockchain experience should not attempt to run a local chain. If you run into issues while installing, configuring, and running your local chain, contact `Concordium support `_. - + Prerequisites ============= You need a working installation of the Concordium Node distribution version 5 or above, instances of which will be used to run the baker node(s), :ref:`genesis block` data which specifies your local chain and sets of credentials for baker accounts of the chain. The number of sets of credentials needed will thus depend on the desired number of bakers in the network, which in this example is 1. From 00b92b460b44fce63e6a29b8785c6024acaa8a8c Mon Sep 17 00:00:00 2001 From: Viktor Fredslund-Hansen Date: Tue, 30 May 2023 15:30:02 +0200 Subject: [PATCH 078/193] Add docker documentation. --- source/mainnet/net/guides/run-local-chain.rst | 102 +++++++++++++++--- 1 file changed, 88 insertions(+), 14 deletions(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 4aee27d86c..9a8ce61c90 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -5,6 +5,10 @@ Run a local chain ================= +.. Note:: + This guide covers an advanced topic and the reader is assumed to have some knowledge about compiler toolchains, Docker, operating system concepts such as networks and file systems, and the Concordium Blockchain. + + This guide details how to run your own instance of the Concordium blockchain. This is useful when developing and testing smart contracts. Running your own chain also lets you control various aspects such as the genesis parameters, anonymity revokers, identity providers and foundation accounts. The chain is run by a network of baker nodes that bake and finalize blocks. In the following minimal example you will set up a network comprised of a single baker node that runs *locally* on your system. Note, however, that the concepts demonstrated here equally apply to any number of baker nodes configured in a LAN or WAN setting. @@ -15,15 +19,17 @@ The chain is run by a network of baker nodes that bake and finalize blocks. In t Prerequisites ============= -You need a working installation of the Concordium Node distribution version 5 or above, instances of which will be used to run the baker node(s), :ref:`genesis block` data which specifies your local chain and sets of credentials for baker accounts of the chain. The number of sets of credentials needed will thus depend on the desired number of bakers in the network, which in this example is 1. +You will either need a working installation of the Concordium Node distribution version 5 or Docker, instances of which will be used to run the baker node(s). You will need :ref:`genesis block` data which defines your local chain and sets of credentials for baker accounts of the chain. The number of sets of baker credentials needed thus depends on the desired number of bakers in the network, which in this example is 1. Installing the node distribution -------------------------------- -Concordium Node releases exist for Ubuntu, MacOS, Windows, and Docker. See the :ref:`Node Requirements` section for information on system requirements and detailed instructions on how to obtain, run, and manage a node. To run a baker, you need a Concordium node binary supplied with one of these distributions in your path. The name of the binary will have ``concordium-`` as its prefix but depend on the distribution, so you may have to confer with the installation instructions to figure out the exact name. Upon successful installation of the distribution, verify that the binary exists in your path at the required version: +Concordium Node releases exist for Ubuntu, MacOS and Windows and Docker. See the :ref:`Node Requirements` section for information on system requirements and detailed instructions on how to obtain, run, and manage a node. To run a baker, you either need a Concordium node binary supplied with your appropriate distribution in your path or a working Docker installation. This depends on whether you want to run the Node binary directly on your host or as a Docker instance. In the following we assume the former, but if you want to run a Docker instance, you can skip directly to the :ref:`Generating genesis data and account credentials` section. + +The name of the binary has ``concordium-`` as its prefix but depends on the distribution, so you may have to confer with the installation instructions to figure out the exact name. Upon successful installation of the distribution, verify that the binary exists in your path at the required version: .. code-block:: console - $ concordium-node --version + $ concordium-node --version # name depends on distribution concordium_node 5.3.2 .. Note:: @@ -38,7 +44,7 @@ You use the `genesis-creator `_ of version 1.65 or higher. After installing it, verify that `rustc` exists in your path at the required version: +To build the tool you need a working `Rust compiler `_ of version 1.65 or higher. After installing it, verify that ``rustc`` exists in your path at the required version: .. code-block:: console @@ -53,7 +59,10 @@ To build the ``genesis-creator`` tool, do: .. code-block:: console - cargo install --git https://github.com/Concordium/concordium-misc-tools.git genesis-creator --locked + CARGO_NET_GIT_FETCH_WITH_CLI=true \ + cargo install \ + --git https://github.com/Concordium/concordium-misc-tools.git genesis-creator \ + --locked This produces the binary ``~/.cargo/bin/genesis-creator`` which is run to generate the genesis data. @@ -76,7 +85,7 @@ Further inspection of the tables at the ``accounts`` keys reveals that the baker .. Note:: - Note that the staked amount needed to participate in the finalization committee is some fraction of the total amount of existing CCD. The total amount is the sum of the balances of all the baker and foundation accounts specified in the genesis configuration file. In this particular example, the stake is sufficient for baking. + Note that the staked amount needed for a baker to participate in the finalization committee is some fraction of the total amount of existing CCD set in the configuration. The total amount is the sum of the balances of all the baker and foundation accounts specified in the genesis configuration file. In this particular example, the stake is sufficient for baking. Save the file as ``single-baker-example-p5.toml`` and generate the genesis data: @@ -103,24 +112,27 @@ The file ``./genesis.dat`` contains the generated genesis block data and ``./bak Running the local chain ======================= -Now run the chain by starting the baker node. The node expects the ``genesis.dat`` to be placed in its configuration directory, so first create a working directory for the node data and configuration and copy ``genesis.dat`` to it: +Your local chain will be run as a single baker node. The node uses a data and configuration directory to store its local state and configuration. In the following you will use the same directory for both. Create it and copy ``genesis.dat`` to it: .. code-block:: console - mkdir localchain-node-0 - cp ./genesis.dat localchain-node-0/ + mkdir local-0 + cp ./genesis.dat local-0/ + +Running the chain from a distribution binary +-------------------------------------------- -Now run the baker node: +If you wish to run the baker node as a Docker instance, skip to the next section. Otherwise the baker can be run from the appropriate node distribution binary directly on your host system: .. code-block:: console - concordium-node \ - --no-bootstrap= \ + concordium-node \ # name depends on distribution + --no-bootstrap \ --listen-port 8169 \ --grpc2-listen-addr 127.0.0.1 \ --grpc2-listen-port 20100 \ - --data-dir localchain-node-0 \ - --config-dir localchain-node-0 \ + --data-dir local-0 \ + --config-dir local-0 \ --baker-credentials-file bakers/baker-0-credentials.json The ``--no-bootstrap`` flag instructs the node to not connect to a bootstrapper node for retrieving peers. It is specified here since no bootstrapper node is configured, and in particular this is not relevant since no other peers partake in the network. The ``--listen-port`` option specifies the port to listen on for incoming peer-to-peer connections from other nodes. The ``--grpc2-listen-port`` specifies the port to listen on for :ref:`Concordium Node gRPC API V2 ` connections. This interface is used to manage and query the node. The ``--data-dir`` and ``--config-dir`` options specify the working directories of the node instance, where its state and configuration are stored. Note that you may specify the same directory for both as in this example. The ``--baker-credentials-file`` option instructs the node to run as the baker specified by the supplied credentials file. In this case, this is your generated baker credentials output from the ``genesis-creator`` tool. @@ -129,6 +141,68 @@ The ``--no-bootstrap`` flag instructs the node to not connect to a bootstrapper If more baker credentials are generated, several bakers for each such can be spun up by replacing the arguments specified by the ``--baker-credentials-file``. If there is no bootstrapper node, nodes must be manually instructed to connect to one another by specifying the IP address and port of the other node(s) using the ``--connect-to`` option. Note that node instances using the same network interfaces should each specify different listen ports, and node instances using the same file-system should specify different data and config directories. +Running the chain as a Docker instance +-------------------------------------- + +If you ran the baker node by invoking the node binary directly on your host, skip this section. To run the baker node as a Docker instance, first save the following ``docker-compose.yml`` file to the working directory: + +.. code-block:: yaml + + # This is an example configuration for running a local node + version: '3' + services: + local-node: + container_name: local-node + image: concordium/mainnet-node:latest + pull_policy: always + environment: + # Baker credentials file + - CONCORDIUM_NODE_BAKER_CREDENTIALS_FILE=/mnt/baker-0-credentials.json + # General node configuration Data and config directories (it's OK if they + # are the same). This should match the volume mount below. If the location + # of the mount inside the container is changed, then these should be + # changed accordingly as well. + - CONCORDIUM_NODE_DATA_DIR=/mnt/data + - CONCORDIUM_NODE_CONFIG_DIR=/mnt/data + # port on which the node will listen for incoming connections. This is a + # port inside the container. It is mapped to an external port by the port + # mapping in the `ports` section below. If the internal and external ports + # are going to be different then you should also set + # `CONCORDIUM_NODE_EXTERNAL_PORT` variable to what the external port value is. + - CONCORDIUM_NODE_LISTEN_PORT=8169 + # Desired number of nodes to be connected to. + - CONCORDIUM_NODE_CONNECTION_DESIRED_NODES=0 + # Address of the V2 GRPC server + - CONCORDIUM_NODE_GRPC2_LISTEN_PORT=20100 + # And its port + - CONCORDIUM_NODE_GRPC2_LISTEN_ADDRESS=0.0.0.0 + # Do not bootstrap via DNS + - CONCORDIUM_NODE_CONNECTION_NO_BOOTSTRAP_DNS=true + entrypoint: ["/concordium-node"] + # Exposed ports. The ports the node listens on inside the container (defined + # by `CONCORDIUM_NODE_LISTEN_PORT` and `CONCORDIUM_NODE_RPC_SERVER_PORT`) + # should match what is defined here. When running multiple nodes the + # external ports should be changed so as not to conflict. + ports: + - "8169:8169" + - "20100:20100" + volumes: + # The node's database should be stored in a persistent volume so that it + # survives container restart. In this case we map the **host** directory + # ./local-0 to be used as the node's database directory. + - ./local-0/:/mnt/data:Z + - ./genesis.dat:/mnt/data/genesis.dat:Z + - ./bakers/baker-0-credentials.json:/mnt/baker-0-credentials.json:Z + +Pay attention to the host directory mappings specified by the ``volumes`` key. Depending on where your ````, you may need to change these accordingly. Now run the baker node as a Docker instance: + +.. code-block:: console + + docker compose up + +.. Note:: + + Note that you may have to specify ``platform: linux/amd64`` in ``docker-compose.yml`` depending on your host architecture. This is particularly relevant when your host architecture is ARM-based. Interacting with the local chain ================================ From 1e5061a63e675366f6778f8a410d8836bb849f62 Mon Sep 17 00:00:00 2001 From: Viktor Fredslund-Hansen Date: Tue, 30 May 2023 15:47:51 +0200 Subject: [PATCH 079/193] Remove comment that breaks example. --- source/mainnet/net/guides/run-local-chain.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 9a8ce61c90..bab4e82ac8 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -6,7 +6,7 @@ Run a local chain ================= .. Note:: - This guide covers an advanced topic and the reader is assumed to have some knowledge about compiler toolchains, Docker, operating system concepts such as networks and file systems, and the Concordium Blockchain. + This guide covers an advanced topic and the reader is assumed to have some knowledge about compiler toolchains, basic operating system concepts such as networks and file systems, the Concordium Blockchain and Docker. This guide details how to run your own instance of the Concordium blockchain. This is useful when developing and testing smart contracts. Running your own chain also lets you control various aspects such as the genesis parameters, anonymity revokers, identity providers and foundation accounts. @@ -117,7 +117,7 @@ Your local chain will be run as a single baker node. The node uses a data and co .. code-block:: console mkdir local-0 - cp ./genesis.dat local-0/ + cp genesis.dat local-0/ Running the chain from a distribution binary -------------------------------------------- @@ -126,8 +126,8 @@ If you wish to run the baker node as a Docker instance, skip to the next section .. code-block:: console - concordium-node \ # name depends on distribution - --no-bootstrap \ + concordium-node \ + --no-bootstrap=true \ --listen-port 8169 \ --grpc2-listen-addr 127.0.0.1 \ --grpc2-listen-port 20100 \ From 2e9fa0e50f769a38dc9fb41503e757ffc2f2c266 Mon Sep 17 00:00:00 2001 From: Viktor Fredslund-Hansen Date: Tue, 30 May 2023 15:55:05 +0200 Subject: [PATCH 080/193] Obey the linter. --- source/mainnet/net/guides/run-local-chain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index bab4e82ac8..1f6e382b17 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -194,7 +194,7 @@ If you ran the baker node by invoking the node binary directly on your host, ski - ./genesis.dat:/mnt/data/genesis.dat:Z - ./bakers/baker-0-credentials.json:/mnt/baker-0-credentials.json:Z -Pay attention to the host directory mappings specified by the ``volumes`` key. Depending on where your ````, you may need to change these accordingly. Now run the baker node as a Docker instance: +Pay attention to the host directory mappings specified by the ``volumes`` key, since you may need to change these accordingly. Now run the baker node as a Docker instance: .. code-block:: console From b975ebe823c8dd5ab2dc7175fbb9c698c55f65be Mon Sep 17 00:00:00 2001 From: Viktor Fredslund-Hansen Date: Tue, 30 May 2023 15:59:19 +0200 Subject: [PATCH 081/193] Obey linter again. --- source/mainnet/net/guides/run-local-chain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 1f6e382b17..e48cf7c597 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -23,7 +23,7 @@ You will either need a working installation of the Concordium Node distribution Installing the node distribution -------------------------------- -Concordium Node releases exist for Ubuntu, MacOS and Windows and Docker. See the :ref:`Node Requirements` section for information on system requirements and detailed instructions on how to obtain, run, and manage a node. To run a baker, you either need a Concordium node binary supplied with your appropriate distribution in your path or a working Docker installation. This depends on whether you want to run the Node binary directly on your host or as a Docker instance. In the following we assume the former, but if you want to run a Docker instance, you can skip directly to the :ref:`Generating genesis data and account credentials` section. +Concordium Node releases exist for Ubuntu, MacOS and Windows and Docker. See the :ref:`Node Requirements` section for information on system requirements and detailed instructions on how to obtain, run, and manage a node. To run a baker, you either need a Concordium node binary supplied with your appropriate distribution in your path or a working Docker installation. This depends on whether you want to run the Node binary directly on your host or as a Docker instance. In the following we assume the former, but if you want to run a Docker instance, you can skip to the next section. The name of the binary has ``concordium-`` as its prefix but depends on the distribution, so you may have to confer with the installation instructions to figure out the exact name. Upon successful installation of the distribution, verify that the binary exists in your path at the required version: From 9c628770aa43bc38c9dc17e850bf56ab65004cac Mon Sep 17 00:00:00 2001 From: Viktor Fredslund-Hansen Date: Tue, 30 May 2023 16:16:05 +0200 Subject: [PATCH 082/193] Better wording. --- source/mainnet/net/guides/run-local-chain.rst | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index e48cf7c597..f6ffcb040b 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -170,8 +170,6 @@ If you ran the baker node by invoking the node binary directly on your host, ski # are going to be different then you should also set # `CONCORDIUM_NODE_EXTERNAL_PORT` variable to what the external port value is. - CONCORDIUM_NODE_LISTEN_PORT=8169 - # Desired number of nodes to be connected to. - - CONCORDIUM_NODE_CONNECTION_DESIRED_NODES=0 # Address of the V2 GRPC server - CONCORDIUM_NODE_GRPC2_LISTEN_PORT=20100 # And its port @@ -194,7 +192,7 @@ If you ran the baker node by invoking the node binary directly on your host, ski - ./genesis.dat:/mnt/data/genesis.dat:Z - ./bakers/baker-0-credentials.json:/mnt/baker-0-credentials.json:Z -Pay attention to the host directory mappings specified by the ``volumes`` key, since you may need to change these accordingly. Now run the baker node as a Docker instance: +Pay attention to the host directory mappings specified by the ``volumes`` key. The values work in this particular example, but in general depend on the location of the ``genesis-creator`` output. Now run the baker node as a Docker instance: .. code-block:: console From 23ef8d6ce34a74a3d5450759537019e71794bc68 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Wed, 31 May 2023 08:27:18 +0200 Subject: [PATCH 083/193] Update source/mainnet/net/installation/downloads-testnet.rst Co-authored-by: Martin Heinrich <98821384+mh-concordium@users.noreply.github.com> --- source/mainnet/net/installation/downloads-testnet.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/installation/downloads-testnet.rst b/source/mainnet/net/installation/downloads-testnet.rst index 1adcb33614..9173675ff5 100644 --- a/source/mainnet/net/installation/downloads-testnet.rst +++ b/source/mainnet/net/installation/downloads-testnet.rst @@ -157,7 +157,7 @@ Ubuntu |testnet-node-version| To run a node on a server with Ubuntu, you need a Debian package. - - `Download the Testnet Debian package `_ + - `Download the Testnet Debian package `_ - SHA256 checksum of the download: ``62c24f7a2bc48ba31a7143f65d16f14b282b46940ebf093b1ffaaa258ba1a9da`` From c0ec43f372eea67074d4bb841230a7672490db40 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Wed, 31 May 2023 08:27:26 +0200 Subject: [PATCH 084/193] Update source/mainnet/net/installation/downloads-testnet.rst Co-authored-by: Martin Heinrich <98821384+mh-concordium@users.noreply.github.com> --- source/mainnet/net/installation/downloads-testnet.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/installation/downloads-testnet.rst b/source/mainnet/net/installation/downloads-testnet.rst index 9173675ff5..0a1a77f022 100644 --- a/source/mainnet/net/installation/downloads-testnet.rst +++ b/source/mainnet/net/installation/downloads-testnet.rst @@ -159,7 +159,7 @@ To run a node on a server with Ubuntu, you need a Debian package. - `Download the Testnet Debian package `_ - - SHA256 checksum of the download: ``62c24f7a2bc48ba31a7143f65d16f14b282b46940ebf093b1ffaaa258ba1a9da`` + - SHA256 checksum of the download: ``8c1f8df5c83999c10a4cda8f9d35f632f38c23aa797a50fcb4db3c591788b291`` To learn how to run a node with Ubuntu, see :ref:`Run a node on a server with Ubuntu `. From c51447e8e99fe09945f2531018201d8027647da8 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Wed, 31 May 2023 08:27:35 +0200 Subject: [PATCH 085/193] Update source/mainnet/net/installation/downloads-testnet.rst Co-authored-by: Martin Heinrich <98821384+mh-concordium@users.noreply.github.com> --- source/mainnet/net/installation/downloads-testnet.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/installation/downloads-testnet.rst b/source/mainnet/net/installation/downloads-testnet.rst index 0a1a77f022..7c0fb9d855 100644 --- a/source/mainnet/net/installation/downloads-testnet.rst +++ b/source/mainnet/net/installation/downloads-testnet.rst @@ -186,7 +186,7 @@ Mac |testnet-node-version| To run a node on macOS, you need a macOS installer package. - - `Download the Testnet macOS installer package `_ + - `Download the Testnet macOS installer package `_ To learn how to run a node on Mac, see :ref:`Run and manage a node on macOS `. From da2e29b7ba97871ba87f8af8f711b4c02c8fa675 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Wed, 31 May 2023 08:27:52 +0200 Subject: [PATCH 086/193] Update source/mainnet/net/installation/downloads-testnet.rst Co-authored-by: Martin Heinrich <98821384+mh-concordium@users.noreply.github.com> --- source/mainnet/net/installation/downloads-testnet.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/installation/downloads-testnet.rst b/source/mainnet/net/installation/downloads-testnet.rst index 7c0fb9d855..9dce82a48c 100644 --- a/source/mainnet/net/installation/downloads-testnet.rst +++ b/source/mainnet/net/installation/downloads-testnet.rst @@ -177,7 +177,7 @@ Windows |testnet-node-version| To run a node on Windows, you need a Windows Installer package. **Please be aware that you should backup your configuration, as the installer will overwrite the current configuration with a standard configuration.** - - `Download the Testnet Windows Installer package `_ + - `Download the Testnet Windows Installer package `_ To learn how to run a node on Windows, see :ref:`Run and manage a node on Windows `. From 501194a7051c673567e7b6baf2b1741d784e33a5 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Wed, 31 May 2023 08:35:36 +0200 Subject: [PATCH 087/193] --- source/mainnet/net/installation/downloads-testnet.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/installation/downloads-testnet.rst b/source/mainnet/net/installation/downloads-testnet.rst index 9dce82a48c..fd723e3546 100644 --- a/source/mainnet/net/installation/downloads-testnet.rst +++ b/source/mainnet/net/installation/downloads-testnet.rst @@ -186,7 +186,7 @@ Mac |testnet-node-version| To run a node on macOS, you need a macOS installer package. - - `Download the Testnet macOS installer package `_ + - `Download the Testnet macOS installer package `_ To learn how to run a node on Mac, see :ref:`Run and manage a node on macOS `. From 74b4429bdd5c13703df93b24f68240538ca6412d Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Wed, 31 May 2023 12:57:48 +0200 Subject: [PATCH 088/193] Update release-notes-mainnet.rst --- source/mainnet/net/resources/release-notes-mainnet.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index 456df0ca26..93f3397ee5 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -11,7 +11,7 @@ Release notes - Mainnet To subscribe to updates on the Mainnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. -June 1, 2023 +May 31, 2023 |mw-gen2| for iOS 1.0.1 ------------------------------- From c82cfcc7dc12db6399624adfdad87d5a698e3593 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Wed, 31 May 2023 12:58:10 +0200 Subject: [PATCH 089/193] Update release-notes.rst --- source/mainnet/net/resources/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index 2f6114d614..ce44c16524 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -11,7 +11,7 @@ Release Notes - Testnet To subscribe to updates on the Testnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. -June 1, 2023 +May 31, 2023 |mw-gen2| for iOS 1.0.1 ------------------------------- From 683abd18328ed69500a2f771fd74380b2a4bbc0f Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Thu, 1 Jun 2023 07:48:27 +0200 Subject: [PATCH 090/193] Update source/mainnet/net/resources/release-notes-mainnet.rst MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Aleš Bizjak --- source/mainnet/net/resources/release-notes-mainnet.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index 1552e0c7bb..5bf89fbcb3 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -18,7 +18,7 @@ Concordium Client 5.2.0 Version 5.2.0 contains the following features and bug fixes: -- Fixed a bug that caused another code-leftover to be displayed in the finalization proof line of the gas rewards section of the ``consensus show-chain-parameters`` output. This is only relevant when the queried chain runs protocol version 6. +- Fix a bug in display of ``consensus show-chain-parameters`` output for protocol version 6. - Added ``raw GetBlockTransactionEvents`` that prints the list of transaction outcomes in a given block. From f97509bd4bf45cc72b11375e28233fa660b1c7bd Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Thu, 1 Jun 2023 07:48:34 +0200 Subject: [PATCH 091/193] Update source/mainnet/net/resources/release-notes.rst MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Aleš Bizjak --- source/mainnet/net/resources/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index c03bb798e0..4a82e36128 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -33,7 +33,7 @@ Concordium Client 5.2.0 Version 5.2.0 contains the following features and bug fixes: -- Fixed a bug that caused another code-leftover to be displayed in the finalization proof line of the gas rewards section of the ``consensus show-chain-parameters`` output. This is only relevant when the queried chain runs protocol version 6. +- Fix a bug in display of ``consensus show-chain-parameters`` output for protocol version 6. - Added ``raw GetBlockTransactionEvents`` that prints the list of transaction outcomes in a given block. From 6a3413285c1bdd1fb38e97d521efa95f78252295 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Thu, 1 Jun 2023 07:48:44 +0200 Subject: [PATCH 092/193] Update source/mainnet/net/resources/release-notes.rst MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Aleš Bizjak --- source/mainnet/net/resources/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index 4a82e36128..99abaa01ff 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -35,7 +35,7 @@ Version 5.2.0 contains the following features and bug fixes: - Fix a bug in display of ``consensus show-chain-parameters`` output for protocol version 6. -- Added ``raw GetBlockTransactionEvents`` that prints the list of transaction outcomes in a given block. +- Add ``raw GetBlockTransactionEvents`` that prints the list of transaction outcomes in a given block. May 30, 2023 From 82485d115cdd726968ff7190fe9d300365673dae Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Thu, 1 Jun 2023 07:48:54 +0200 Subject: [PATCH 093/193] Update source/mainnet/net/resources/release-notes.rst MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Aleš Bizjak --- source/mainnet/net/resources/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index 99abaa01ff..b7ee2ac9b6 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -26,7 +26,7 @@ Concordium node version 5.4.1 contains the following features and bug fixes: - Extend gRPC v2 API call ``GetBlockInfo`` with the protocol version of the block. -- Do not use peer buckets when running as a normal node (not as a bootstrapper). +- Do not keep a historical list of peers when running as a normal node. Concordium Client 5.2.0 ----------------------- From 58f6c80e728bbb5ba8f677a8f5887442872f3366 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Thu, 1 Jun 2023 07:49:04 +0200 Subject: [PATCH 094/193] Update source/mainnet/net/resources/release-notes-mainnet.rst MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Aleš Bizjak --- source/mainnet/net/resources/release-notes-mainnet.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index 5bf89fbcb3..b9ec2be6a7 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -20,7 +20,7 @@ Version 5.2.0 contains the following features and bug fixes: - Fix a bug in display of ``consensus show-chain-parameters`` output for protocol version 6. -- Added ``raw GetBlockTransactionEvents`` that prints the list of transaction outcomes in a given block. +- Add ``raw GetBlockTransactionEvents`` that prints the list of transaction outcomes in a given block. May 30, 2023 From c3030d43c711a76fb8b22d7499f648125d102fce Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Fri, 2 Jun 2023 10:03:15 +0200 Subject: [PATCH 095/193] Mainnet node release 5.4.1 --- source/mainnet/net/installation/downloads.rst | 22 +++++++++---------- .../installation/previous-node-downloads.rst | 10 +++++++++ .../net/resources/release-notes-mainnet.rst | 17 ++++++++++++++ source/mainnet/variables.rst | 6 ++--- 4 files changed, 41 insertions(+), 14 deletions(-) diff --git a/source/mainnet/net/installation/downloads.rst b/source/mainnet/net/installation/downloads.rst index 76407ae3b4..edef3b7ea5 100644 --- a/source/mainnet/net/installation/downloads.rst +++ b/source/mainnet/net/installation/downloads.rst @@ -149,20 +149,20 @@ For the system requirements to run a node, see :ref:`System requirements to run When upgrading, you can only upgrade one minor version at a time, or from the last release of major version X to major version X+1. You cannot skip versions. For patches, you can skip versions e.g. X.X.0 to X.X.3, or `X.1.1` to `X.2.3`. To download previous node versions, see :ref:`Previous node versions`. -Ubuntu v5.3.2 -------------- +Ubuntu |mainnet-node-version| +----------------------------- To run a node on a server with Ubuntu, you need a Debian package. - - `Download the Mainnet Debian package `_ + - `Download the Mainnet Debian package `_ - SHA256 checksum of the download: :substitution-code:`|node-deb-package-checksum|` - :ref:`Verification instructions ` To learn how to run a node with Ubuntu, see :ref:`Run a node on a server with Ubuntu `. -Linux-Docker v5.3.2 -------------------- +Linux-Docker |mainnet-node-version| +----------------------------------- .. _concordium-docker-package-download: @@ -170,21 +170,21 @@ To learn how to run a node with Docker, see :ref:`Run a node with Docker ` for details. -Windows v5.3.2 --------------- +Windows |mainnet-node-version| +------------------------------ To run a node on Windows, you need a Windows Installer package. **Please be aware that you should backup your configuration, as the installer will overwrite the current configuration with a standard configuration.** - - `Download the Mainnet Windows Installer package `_ + - `Download the Mainnet Windows Installer package `_ To learn how to run a node on Windows, see :ref:`Run and manage a node on Windows `. -Mac v5.3.2 ----------- +Mac |mainnet-node-version| +-------------------------- To run a node on macOS, you need a macOS installer package. - - `Download the Mainnet macOS installer package `_ + - `Download the Mainnet macOS installer package `_ To learn how to run a node on Mac, see :ref:`Run and manage a node on macOS `. diff --git a/source/mainnet/net/installation/previous-node-downloads.rst b/source/mainnet/net/installation/previous-node-downloads.rst index e017744449..2697782b9c 100644 --- a/source/mainnet/net/installation/previous-node-downloads.rst +++ b/source/mainnet/net/installation/previous-node-downloads.rst @@ -69,6 +69,16 @@ Ubuntu - Mainnet Default GRPC port is set to 10000 Default listen port is set to 8888 +`5.3.2 `__ + + - Verification instructions + + In a terminal: + + #. Navigate to the download. + #. Paste the following into the terminal: sha256sum concordium-mainnet-node_5.3.2-0_amd64.deb + #. Verify that the output matches the SHA256 checksum ``9b62ce7cd862bf667e40cc6f1f79e47ea16a61fd5a8037291c44d7a0f3e66d9e``. + `5.2.4 `__ - Verification instructions diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index f2ba1ac064..46f592d6e3 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -11,6 +11,23 @@ Release notes - Mainnet To subscribe to updates on the Mainnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. +June 7, 2023 + +Concordium Node 5.4.1 +--------------------- + +Concordium node version 5.4.1 contains the following features and bug fixes: + +- Enable CORS support in grpc-web. This only applies when grpc-web is enabled. + +- Fixed a security issue. + +- Support using block height as block identifiers in gRPC v2 API. + +- Extend gRPC v2 API call ``GetBlockInfo`` with the protocol version of the block. + +- Do not keep a historical list of peers when running as a normal node. + June 1, 2023 Concordium Client 5.2.0 diff --git a/source/mainnet/variables.rst b/source/mainnet/variables.rst index 74babf81e8..caca828ba4 100644 --- a/source/mainnet/variables.rst +++ b/source/mainnet/variables.rst @@ -23,12 +23,12 @@ .. |cargo-linux-checksum| replace:: ea3f603e2a921181cdf323604066444378a955c55e82b206a7d169bf636fa75d .. Node version variables -.. |mainnet-node-version| replace:: 5.3.2 +.. |mainnet-node-version| replace:: 5.4.1 .. |testnet-node-version| replace:: 5.4.1 .. Node debian package verification variables -.. |node-deb-package| replace:: concordium-mainnet-node_5.3.2-0_amd64.deb -.. |node-deb-package-checksum| replace:: 9b62ce7cd862bf667e40cc6f1f79e47ea16a61fd5a8037291c44d7a0f3e66d9e +.. |node-deb-package| replace:: concordium-mainnet-node_5.4.1-0_amd64.deb +.. |node-deb-package-checksum| replace:: 34004de4740cea110bca7950094fcf43640bbefc816eae94d71262e0644073da .. Mainnet genesis block verification variables .. |mainnet-genesis-block| replace:: genesis.dat From 1c39cce8e5109a458898755bc8d9eba67d823a28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ale=C5=A1=20Bizjak?= Date: Mon, 5 Jun 2023 15:45:10 +0200 Subject: [PATCH 096/193] Minor revision. --- source/mainnet/net/guides/run-local-chain.rst | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index f6ffcb040b..8c62387151 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -6,20 +6,17 @@ Run a local chain ================= .. Note:: - This guide covers an advanced topic and the reader is assumed to have some knowledge about compiler toolchains, basic operating system concepts such as networks and file systems, the Concordium Blockchain and Docker. + Running your own local chain is an advanced process and not applicable for all use cases. Users with little or no blockchain experience should not attempt to run a local chain. If you run into issues while installing, configuring, and running your local chain, contact `Concordium support `_. This guide details how to run your own instance of the Concordium blockchain. This is useful when developing and testing smart contracts. Running your own chain also lets you control various aspects such as the genesis parameters, anonymity revokers, identity providers and foundation accounts. -The chain is run by a network of baker nodes that bake and finalize blocks. In the following minimal example you will set up a network comprised of a single baker node that runs *locally* on your system. Note, however, that the concepts demonstrated here equally apply to any number of baker nodes configured in a LAN or WAN setting. - -.. Note:: +The chain is run by a network of baker nodes that bake and finalize blocks. In the following minimal example you will set up a network comprised of a single baker node that runs *locally* on your system and *does not connect to mainnet or testnet*. Note, however, that the concepts demonstrated here equally apply to any number of baker nodes configured in a LAN or WAN setting. - Running your own local chain is an advanced process and not applicable for all use cases. Users with little or no blockchain experience should not attempt to run a local chain. If you run into issues while installing, configuring, and running your local chain, contact `Concordium support `_. Prerequisites ============= -You will either need a working installation of the Concordium Node distribution version 5 or Docker, instances of which will be used to run the baker node(s). You will need :ref:`genesis block` data which defines your local chain and sets of credentials for baker accounts of the chain. The number of sets of baker credentials needed thus depends on the desired number of bakers in the network, which in this example is 1. +You will either need a working installation of the Concordium Node distribution or Docker, instances of which will be used to run the baker node(s). You will need :ref:`genesis block` data which defines your local chain and sets of credentials for baker accounts of the chain. The number of sets of baker credentials needed thus depends on the desired number of bakers in the network, which in this example is 1. Installing the node distribution -------------------------------- @@ -139,7 +136,7 @@ The ``--no-bootstrap`` flag instructs the node to not connect to a bootstrapper .. Note:: - If more baker credentials are generated, several bakers for each such can be spun up by replacing the arguments specified by the ``--baker-credentials-file``. If there is no bootstrapper node, nodes must be manually instructed to connect to one another by specifying the IP address and port of the other node(s) using the ``--connect-to`` option. Note that node instances using the same network interfaces should each specify different listen ports, and node instances using the same file-system should specify different data and config directories. + If more baker credentials are generated, a baker can be started for each credential by replacing the arguments specified by the ``--baker-credentials-file``. If there is no bootstrapper node, nodes must be manually instructed to connect to one another by specifying the IP address and port of the other node(s) using the ``--connect-to $IP:$PORT``. Note that node instances using the same network interfaces should each specify different listen ports, and node instances using the same file-system should specify different data and config directories. Running the chain as a Docker instance -------------------------------------- @@ -178,7 +175,7 @@ If you ran the baker node by invoking the node binary directly on your host, ski - CONCORDIUM_NODE_CONNECTION_NO_BOOTSTRAP_DNS=true entrypoint: ["/concordium-node"] # Exposed ports. The ports the node listens on inside the container (defined - # by `CONCORDIUM_NODE_LISTEN_PORT` and `CONCORDIUM_NODE_RPC_SERVER_PORT`) + # by `CONCORDIUM_NODE_LISTEN_PORT` and `CONCORDIUM_NODE_GRPC2_LISTEN_PORT`) # should match what is defined here. When running multiple nodes the # external ports should be changed so as not to conflict. ports: From c0b1d4a24e44e734e7b37191faff95ded5682156 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Tue, 6 Jun 2023 08:31:52 +0200 Subject: [PATCH 097/193] Updated some details --- source/mainnet/net/guides/graviton-hackathon.rst | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/source/mainnet/net/guides/graviton-hackathon.rst b/source/mainnet/net/guides/graviton-hackathon.rst index 331ee4adb0..02e855245b 100644 --- a/source/mainnet/net/guides/graviton-hackathon.rst +++ b/source/mainnet/net/guides/graviton-hackathon.rst @@ -7,10 +7,18 @@ Graviton Hackathon Essentials ============================ -This page helps you to get started with Concordium for the Graviton hackathon XXMonthXX ## - ##, 2023. +This page helps you to get started with Concordium for the Graviton hackathon June 14 - 28, 2023. -With a total of $15K in prizes, it is the largest Concordium hackathon ever held. -You can sign up and read more about the bounties and timelines on the `hackathon website `_. +With a total of $100K in bounties and grants, it is the largest Concordium hackathon ever held. +You can sign up and read more about the bounties and timelines on the `hackathon website `_. + +Focus areas for this hackathon are: + + - Decentralized Finance (DeFi) + + - Decentralized Identities + + - Web3 Experiences (DAO Tools, Gaming, Mobile dApps, etc) Workshop Sessions ================= From 9971ffbdb3ffce68dff9a35f28ed630aca6e9dcd Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Tue, 6 Jun 2023 08:53:30 +0200 Subject: [PATCH 098/193] Update run-local-chain.rst --- source/mainnet/net/guides/run-local-chain.rst | 57 +++++++++---------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/source/mainnet/net/guides/run-local-chain.rst b/source/mainnet/net/guides/run-local-chain.rst index 8c62387151..1776a2d10c 100644 --- a/source/mainnet/net/guides/run-local-chain.rst +++ b/source/mainnet/net/guides/run-local-chain.rst @@ -9,7 +9,7 @@ Run a local chain Running your own local chain is an advanced process and not applicable for all use cases. Users with little or no blockchain experience should not attempt to run a local chain. If you run into issues while installing, configuring, and running your local chain, contact `Concordium support `_. -This guide details how to run your own instance of the Concordium blockchain. This is useful when developing and testing smart contracts. Running your own chain also lets you control various aspects such as the genesis parameters, anonymity revokers, identity providers and foundation accounts. +This guide details how to run your own instance of the Concordium blockchain. This is useful when developing and testing smart contracts. Running your own chain also lets you control various aspects, such as the genesis parameters, anonymity revokers, identity providers, and foundation accounts. The chain is run by a network of baker nodes that bake and finalize blocks. In the following minimal example you will set up a network comprised of a single baker node that runs *locally* on your system and *does not connect to mainnet or testnet*. Note, however, that the concepts demonstrated here equally apply to any number of baker nodes configured in a LAN or WAN setting. @@ -18,9 +18,9 @@ Prerequisites ============= You will either need a working installation of the Concordium Node distribution or Docker, instances of which will be used to run the baker node(s). You will need :ref:`genesis block` data which defines your local chain and sets of credentials for baker accounts of the chain. The number of sets of baker credentials needed thus depends on the desired number of bakers in the network, which in this example is 1. -Installing the node distribution --------------------------------- -Concordium Node releases exist for Ubuntu, MacOS and Windows and Docker. See the :ref:`Node Requirements` section for information on system requirements and detailed instructions on how to obtain, run, and manage a node. To run a baker, you either need a Concordium node binary supplied with your appropriate distribution in your path or a working Docker installation. This depends on whether you want to run the Node binary directly on your host or as a Docker instance. In the following we assume the former, but if you want to run a Docker instance, you can skip to the next section. +Install the node distribution +----------------------------- +Concordium Node releases exist for Ubuntu, MacOS and Windows and Docker. See the :ref:`Node Requirements` section for information on system requirements and detailed instructions on how to obtain, run, and manage a node. To run a baker, you either need a Concordium node binary supplied with your appropriate distribution in your path or a working Docker installation. This depends on whether you want to run the Node binary directly on your host or as a Docker instance. The details below assume the former, but if you want to run a Docker instance, you can skip to the next section. The name of the binary has ``concordium-`` as its prefix but depends on the distribution, so you may have to confer with the installation instructions to figure out the exact name. Upon successful installation of the distribution, verify that the binary exists in your path at the required version: @@ -34,14 +34,14 @@ The name of the binary has ``concordium-`` as its prefix but depends on the dist The node distributions provide commands for running and managing nodes on :ref:`Mainnet` and :ref:`Testnet`. Ignore these since you are targeting your own chain and only need the binary. -Generating genesis data and account credentials ------------------------------------------------ -You use the `genesis-creator `_ tool to generate genesis block data and credentials for the foundation and (initial) baker accounts. +Generate genesis data and account credentials +--------------------------------------------- +Use the `genesis-creator `_ tool to generate genesis block data and credentials for the foundation and (initial) baker accounts. -Building the tool -^^^^^^^^^^^^^^^^^ +Build the tool +^^^^^^^^^^^^^^ -To build the tool you need a working `Rust compiler `_ of version 1.65 or higher. After installing it, verify that ``rustc`` exists in your path at the required version: +To build the tool you need a working `Rust compiler `_ with version 1.65 or higher. After installing it, verify that ``rustc`` exists in your path at the required version: .. code-block:: console @@ -52,7 +52,7 @@ To build the tool you need a working `Rust compiler `_. After installing ``rustup``, the Rust toolchain can be installed by issuing ``rustup toolchain install 1.68``. -To build the ``genesis-creator`` tool, do: +To build the ``genesis-creator`` tool, run: .. code-block:: console @@ -63,8 +63,8 @@ To build the ``genesis-creator`` tool, do: This produces the binary ``~/.cargo/bin/genesis-creator`` which is run to generate the genesis data. -Running the tool -^^^^^^^^^^^^^^^^ +Run the tool +^^^^^^^^^^^^ The ``genesis-creator`` tool uses a TOML configuration file format for specifying parameters from which the genesis data is generated. The TOML file specifies: @@ -76,13 +76,13 @@ The ``genesis-creator`` tool uses a TOML configuration file format for specifyin * keys for updating the chain * various parameters for the genesis -Furthermore, it specifies where to save the output that is used to invoke the node binary. Most of these options are of little importance when testing smart contracts and the easiest way to get started is to piggyback off of the example configuration file ``single-baker-example-p5.toml`` found `here `_. Inspecting the configuration reveals that it specifies an initial protocol version of 5, to output credentials for 1 baker account, 1 foundation account and 100 regular accounts. It specifies the system time at generation for the genesis time and finally specifies 5 seconds as the average time per block. +Furthermore, it specifies where to save the output that is used to invoke the node binary. Most of these options are of little importance when testing smart contracts and the easiest way to get started is to piggyback off of the example configuration file ``single-baker-example-p5.toml`` found `here `_. Inspecting the configuration reveals that it specifies an initial protocol version of 5 to output credentials for 1 baker account, 1 foundation account, and 100 regular accounts. It specifies the system time at generation for the genesis time, and finally, specifies 5 seconds as the average time per block. -Further inspection of the tables at the ``accounts`` keys reveals that the baker account has an initial balance of 3.5 * 10^15 microCCD and stake of 3.0 * 10^15 microCCD, the foundation account has an initial balance of 10^16 microCCD and that the regular accounts each have an initial balance of 2.0 * 10^12. You can change the initial stake and balances if desired. The number of credentials produced for each type of account can also be adjusted by setting the values of the ``repeat`` keys to your choosing. +Further inspection of the tables at the ``accounts`` keys reveals that the baker account has an initial balance of 3.5 * 10^15 microCCD and stake of 3.0 * 10^15 microCCD, the foundation account has an initial balance of 10^16 microCCD, and the regular accounts each have an initial balance of 2.0 * 10^12. You can change the initial stake and balances if desired. The number of credentials produced for each type of account can also be adjusted by setting the values of the ``repeat`` keys to your choosing. .. Note:: - Note that the staked amount needed for a baker to participate in the finalization committee is some fraction of the total amount of existing CCD set in the configuration. The total amount is the sum of the balances of all the baker and foundation accounts specified in the genesis configuration file. In this particular example, the stake is sufficient for baking. + The staked amount needed for a baker to participate in the finalization committee is some fraction of the total amount of existing CCD set in the configuration. The total amount is the sum of the balances of all the baker and foundation accounts specified in the genesis configuration file. In this particular example, the stake is sufficient for baking. Save the file as ``single-baker-example-p5.toml`` and generate the genesis data: @@ -103,11 +103,10 @@ Save the file as ``single-baker-example-p5.toml`` and generate the genesis data: Average block time is set to 5000ms. DONE -The file ``./genesis.dat`` contains the generated genesis block data and ``./bakers/baker-0-credentials.json`` the generated credentials of the single baker account that was created. You supply these to the node binary to run the baker node. Keys for each generated account is output in the ``./accounts`` directory, and are used when submitting transactions on behalf of the accounts, for instance using the `Concordium Client `_ command-line tool. +The file ``./genesis.dat`` contains the generated genesis block data and ``./bakers/baker-0-credentials.json`` the generated credentials of the single baker account that was created. You supply these to the node binary to run the baker node. Keys for each generated account is output in the ``./accounts`` directory and are used when submitting transactions on behalf of the accounts, for instance using the `Concordium Client `_ command-line tool. - -Running the local chain -======================= +Run the local chain +=================== Your local chain will be run as a single baker node. The node uses a data and configuration directory to store its local state and configuration. In the following you will use the same directory for both. Create it and copy ``genesis.dat`` to it: @@ -116,10 +115,10 @@ Your local chain will be run as a single baker node. The node uses a data and co mkdir local-0 cp genesis.dat local-0/ -Running the chain from a distribution binary --------------------------------------------- +Run the chain from a distribution binary +---------------------------------------- -If you wish to run the baker node as a Docker instance, skip to the next section. Otherwise the baker can be run from the appropriate node distribution binary directly on your host system: +If you wish to run the baker node as a Docker instance, skip to the next section. Otherwise, the baker can be run from the appropriate node distribution binary directly on your host system: .. code-block:: console @@ -132,14 +131,14 @@ If you wish to run the baker node as a Docker instance, skip to the next section --config-dir local-0 \ --baker-credentials-file bakers/baker-0-credentials.json -The ``--no-bootstrap`` flag instructs the node to not connect to a bootstrapper node for retrieving peers. It is specified here since no bootstrapper node is configured, and in particular this is not relevant since no other peers partake in the network. The ``--listen-port`` option specifies the port to listen on for incoming peer-to-peer connections from other nodes. The ``--grpc2-listen-port`` specifies the port to listen on for :ref:`Concordium Node gRPC API V2 ` connections. This interface is used to manage and query the node. The ``--data-dir`` and ``--config-dir`` options specify the working directories of the node instance, where its state and configuration are stored. Note that you may specify the same directory for both as in this example. The ``--baker-credentials-file`` option instructs the node to run as the baker specified by the supplied credentials file. In this case, this is your generated baker credentials output from the ``genesis-creator`` tool. +The ``--no-bootstrap`` flag instructs the node to not connect to a bootstrapper node for retrieving peers. It is specified here since no bootstrapper node is configured, and in particular this is not relevant since no other peers partake in the network. The ``--listen-port`` option specifies the port to listen on for incoming peer-to-peer connections from other nodes. The ``--grpc2-listen-port`` specifies the port to listen on for :ref:`Concordium Node gRPC API V2 ` connections. This interface is used to manage and query the node. The ``--data-dir`` and ``--config-dir`` options specify the working directories of the node instance where its state and configuration are stored. Note that you may specify the same directory for both as in this example. The ``--baker-credentials-file`` option instructs the node to run as the baker specified by the supplied credentials file. In this case, this is your generated baker credentials output from the ``genesis-creator`` tool. .. Note:: - If more baker credentials are generated, a baker can be started for each credential by replacing the arguments specified by the ``--baker-credentials-file``. If there is no bootstrapper node, nodes must be manually instructed to connect to one another by specifying the IP address and port of the other node(s) using the ``--connect-to $IP:$PORT``. Note that node instances using the same network interfaces should each specify different listen ports, and node instances using the same file-system should specify different data and config directories. + If more baker credentials are generated, a baker can be started for each credential by replacing the arguments specified by the ``--baker-credentials-file``. If there is no bootstrapper node, nodes must be manually instructed to connect to one another by specifying the IP address and port of the other node(s) using ``--connect-to $IP:$PORT``. Note that node instances using the same network interfaces should each specify different listen ports, and node instances using the same file system should specify different data and config directories. -Running the chain as a Docker instance --------------------------------------- +Run the chain as a Docker instance +---------------------------------- If you ran the baker node by invoking the node binary directly on your host, skip this section. To run the baker node as a Docker instance, first save the following ``docker-compose.yml`` file to the working directory: @@ -199,8 +198,8 @@ Pay attention to the host directory mappings specified by the ``volumes`` key. T Note that you may have to specify ``platform: linux/amd64`` in ``docker-compose.yml`` depending on your host architecture. This is particularly relevant when your host architecture is ARM-based. -Interacting with the local chain -================================ +Interact with the local chain +============================= You can now interact with your local chain through the node via the :ref:`Concordium Node gRPC API V2 ` exposed on port 20100 as you would with :ref:`Mainnet` or :ref:`Testnet` nodes. Concordium provides various :ref:`SDKs and APIs` that facilitate this as well as the `Concordium Client `_ command-line tool. Assuming you have the ``concordium-client`` binary version 5.1.1 or higher in your path, list the accounts using the ``account list`` command: From 70e6ae8f9a4a4dd30124682df5573a4d270da7ea Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Tue, 6 Jun 2023 09:11:53 +0200 Subject: [PATCH 099/193] Update graviton-hackathon.rst --- source/mainnet/net/guides/graviton-hackathon.rst | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/source/mainnet/net/guides/graviton-hackathon.rst b/source/mainnet/net/guides/graviton-hackathon.rst index 08928bbe39..c7e9ff0d8e 100644 --- a/source/mainnet/net/guides/graviton-hackathon.rst +++ b/source/mainnet/net/guides/graviton-hackathon.rst @@ -25,11 +25,8 @@ Workshop Sessions Join our free workshop sessions before the hackathon starts. -- 1st February @ 12:00 CET - Welcome, Concordium Overview & Intro to Rust -- 2nd February @ 12:00 CET - Building Smart Contracts -- 3rd February @ 12:00 CET - Building dApps & Ideation Session - -- 8th, 15th and 22nd February @ 9:00 - 17:00 CET - Weekly Developer Relations Office Hours +- 12th June @ 09:30 CET - Introduction to Concordium and Rust Programming, and Setting up your first smart contract on Concordium +- 13th June @ 09:30 CET - Setting up the Browser Wallet and your first Concordium dApp You can watch the three workshops `live `_. The materials from the workshop sessions are available on `GitHub `_. From d4287e92d1acc345602b9522e484c0dfff369231 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Tue, 6 Jun 2023 09:17:29 +0200 Subject: [PATCH 100/193] Update tokens.rst --- source/mainnet/net/guides/tokens.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/mainnet/net/guides/tokens.rst b/source/mainnet/net/guides/tokens.rst index 52ac0d45dc..59aa1841d9 100644 --- a/source/mainnet/net/guides/tokens.rst +++ b/source/mainnet/net/guides/tokens.rst @@ -5,7 +5,7 @@ Tokens in the wallet ======================== -You can add, inspect, and send tokens in the |bw| and |mw-gen2| for Android devices. +You can add, inspect, and send tokens in the |bw| and |mw-gen2|. .. dropdown:: |bw| @@ -79,7 +79,7 @@ You can add, inspect, and send tokens in the |bw| and |mw-gen2| for Android devi 2. Click the **Manage** tab. Search for the token by the Contract index. Once the tokens on the contract are loaded, the tokens that are in your account have a checkmark next to them. Remove the check and click **Update tokens**. -.. dropdown:: |mw-gen2| for Android +.. dropdown:: |mw-gen2| To access tokens and token transactions, tap Tokens |token-bw|. Tabs appear for tokens. From 17ddcbb86312a1e461b25d1f22ea8dbca8bbf455 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Tue, 6 Jun 2023 10:05:33 +0200 Subject: [PATCH 101/193] Update workshop info --- source/mainnet/net/guides/graviton-hackathon.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/graviton-hackathon.rst b/source/mainnet/net/guides/graviton-hackathon.rst index c7e9ff0d8e..f57abe6eb7 100644 --- a/source/mainnet/net/guides/graviton-hackathon.rst +++ b/source/mainnet/net/guides/graviton-hackathon.rst @@ -28,7 +28,7 @@ Join our free workshop sessions before the hackathon starts. - 12th June @ 09:30 CET - Introduction to Concordium and Rust Programming, and Setting up your first smart contract on Concordium - 13th June @ 09:30 CET - Setting up the Browser Wallet and your first Concordium dApp -You can watch the three workshops `live `_. +You can watch the workshops `live `_. The materials from the workshop sessions are available on `GitHub `_. Recordings from previous workshops can be watched here: From fe115767bb817de30bea052ecadb5ca2634a34ea Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Tue, 6 Jun 2023 12:48:31 +0200 Subject: [PATCH 102/193] 5.4.2 testnet node release --- source/mainnet/net/installation/downloads-testnet.rst | 6 +++--- source/mainnet/net/resources/release-notes.rst | 7 +++++++ source/mainnet/variables.rst | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/source/mainnet/net/installation/downloads-testnet.rst b/source/mainnet/net/installation/downloads-testnet.rst index c5745f2d32..513e26fe32 100644 --- a/source/mainnet/net/installation/downloads-testnet.rst +++ b/source/mainnet/net/installation/downloads-testnet.rst @@ -157,7 +157,7 @@ Ubuntu |testnet-node-version| To run a node on a server with Ubuntu, you need a Debian package. - - `Download the Testnet Debian package `_ + - `Download the Testnet Debian package `_ - SHA256 checksum of the download: ``8c1f8df5c83999c10a4cda8f9d35f632f38c23aa797a50fcb4db3c591788b291`` @@ -177,7 +177,7 @@ Windows |testnet-node-version| To run a node on Windows, you need a Windows Installer package. **Please be aware that you should backup your configuration, as the installer will overwrite the current configuration with a standard configuration.** - - `Download the Testnet Windows Installer package `_ + - `Download the Testnet Windows Installer package `_ To learn how to run a node on Windows, see :ref:`Run and manage a node on Windows `. @@ -186,7 +186,7 @@ Mac |testnet-node-version| To run a node on macOS, you need a macOS installer package. - - `Download the Testnet macOS installer package `_ + - `Download the Testnet macOS installer package `_ To learn how to run a node on Mac, see :ref:`Run and manage a node on macOS `. diff --git a/source/mainnet/net/resources/release-notes.rst b/source/mainnet/net/resources/release-notes.rst index 2d5c41ff61..996ad57074 100644 --- a/source/mainnet/net/resources/release-notes.rst +++ b/source/mainnet/net/resources/release-notes.rst @@ -11,6 +11,13 @@ Release Notes - Testnet To subscribe to updates on the Testnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. +June 7, 2023 + +Concordium Node 5.4.2 +--------------------- + +Concordium node version 5.4.2 fixes a bug that caused an extra byte to be added when running ``getModuleSource`` in the V1 GRPC API. + June 1, 2023 Concordium Node 5.4.1 diff --git a/source/mainnet/variables.rst b/source/mainnet/variables.rst index 74babf81e8..41f71ed131 100644 --- a/source/mainnet/variables.rst +++ b/source/mainnet/variables.rst @@ -24,7 +24,7 @@ .. Node version variables .. |mainnet-node-version| replace:: 5.3.2 -.. |testnet-node-version| replace:: 5.4.1 +.. |testnet-node-version| replace:: 5.4.2 .. Node debian package verification variables .. |node-deb-package| replace:: concordium-mainnet-node_5.3.2-0_amd64.deb From 5fa65ad0626543ecf3cb68a72945953fb09390fe Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Tue, 6 Jun 2023 12:52:32 +0200 Subject: [PATCH 103/193] Update previous downloads --- .../net/installation/previous-node-downloads.rst | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/source/mainnet/net/installation/previous-node-downloads.rst b/source/mainnet/net/installation/previous-node-downloads.rst index e017744449..0727cffa53 100644 --- a/source/mainnet/net/installation/previous-node-downloads.rst +++ b/source/mainnet/net/installation/previous-node-downloads.rst @@ -14,6 +14,8 @@ Windows - Mainnet and Testnet **Please be aware that you should backup your configuration, as the installer will overwrite the current configuration with a standard configuration.** +`Windows 5.4.1 `_ + `Windows 5.3.2 `_ `Windows 5.2.4 `_ @@ -41,6 +43,8 @@ Windows - Mainnet and Testnet macOS - Mainnet and Testnet =========================== +`macOS 5.4.1 `_ + `macOS 5.3.2 `_ `macOS 5.2.4 `_ @@ -162,6 +166,16 @@ Ubuntu - Testnet Default GRPC port is set to 10001 Default listen port is set to 8889 +`5.4.1 `_ + + - Verification instructions + + In a terminal: + + #. Navigate to the download. + #. Paste the following into the terminal: $sha256sum concordium-testnet-node_5.4.1-0_amd64.deb + #. Verify that the output matches the SHA256 checksum ``8c1f8df5c83999c10a4cda8f9d35f632f38c23aa797a50fcb4db3c591788b291``. + `5.3.2 `_ - Verification instructions From 31b4a86526205994fac269bef58a69662cf7173c Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Tue, 6 Jun 2023 12:56:44 +0200 Subject: [PATCH 104/193] Update release-notes-mainnet.rst Update release date, version, add line --- source/mainnet/net/resources/release-notes-mainnet.rst | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source/mainnet/net/resources/release-notes-mainnet.rst b/source/mainnet/net/resources/release-notes-mainnet.rst index 46f592d6e3..d0d2f09963 100644 --- a/source/mainnet/net/resources/release-notes-mainnet.rst +++ b/source/mainnet/net/resources/release-notes-mainnet.rst @@ -11,12 +11,12 @@ Release notes - Mainnet To subscribe to updates on the Mainnet status page click **Subscribe** to get all updates or click **Get updates** to choose to get all updates or only updates for specific products. -June 7, 2023 +June 14, 2023 -Concordium Node 5.4.1 +Concordium Node 5.4.2 --------------------- -Concordium node version 5.4.1 contains the following features and bug fixes: +Concordium node version 5.4.2 contains the following features and bug fixes: - Enable CORS support in grpc-web. This only applies when grpc-web is enabled. @@ -28,6 +28,8 @@ Concordium node version 5.4.1 contains the following features and bug fixes: - Do not keep a historical list of peers when running as a normal node. +- Fixed a bug that caused an extra byte to be added when running ``getModuleSource`` in the V1 GRPC API. + June 1, 2023 Concordium Client 5.2.0 From 9fbaa34de4faed035b217ca01852616edb9d0434 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Tue, 6 Jun 2023 12:57:54 +0200 Subject: [PATCH 105/193] Update downloads.rst Update version number --- source/mainnet/net/installation/downloads.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/mainnet/net/installation/downloads.rst b/source/mainnet/net/installation/downloads.rst index edef3b7ea5..678467c9f8 100644 --- a/source/mainnet/net/installation/downloads.rst +++ b/source/mainnet/net/installation/downloads.rst @@ -154,7 +154,7 @@ Ubuntu |mainnet-node-version| To run a node on a server with Ubuntu, you need a Debian package. - - `Download the Mainnet Debian package `_ + - `Download the Mainnet Debian package `_ - SHA256 checksum of the download: :substitution-code:`|node-deb-package-checksum|` - :ref:`Verification instructions ` @@ -175,7 +175,7 @@ Windows |mainnet-node-version| To run a node on Windows, you need a Windows Installer package. **Please be aware that you should backup your configuration, as the installer will overwrite the current configuration with a standard configuration.** - - `Download the Mainnet Windows Installer package `_ + - `Download the Mainnet Windows Installer package `_ To learn how to run a node on Windows, see :ref:`Run and manage a node on Windows `. @@ -184,7 +184,7 @@ Mac |mainnet-node-version| To run a node on macOS, you need a macOS installer package. - - `Download the Mainnet macOS installer package `_ + - `Download the Mainnet macOS installer package `_ To learn how to run a node on Mac, see :ref:`Run and manage a node on macOS `. From 4a78c14145607743cbd3c22b6a518ec1b968a7e0 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Tue, 6 Jun 2023 14:36:07 +0200 Subject: [PATCH 106/193] Update downloads-testnet.rst update checksum --- source/mainnet/net/installation/downloads-testnet.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/installation/downloads-testnet.rst b/source/mainnet/net/installation/downloads-testnet.rst index 513e26fe32..9eac064f27 100644 --- a/source/mainnet/net/installation/downloads-testnet.rst +++ b/source/mainnet/net/installation/downloads-testnet.rst @@ -159,7 +159,7 @@ To run a node on a server with Ubuntu, you need a Debian package. - `Download the Testnet Debian package `_ - - SHA256 checksum of the download: ``8c1f8df5c83999c10a4cda8f9d35f632f38c23aa797a50fcb4db3c591788b291`` + - SHA256 checksum of the download: ``ef4a097f6166dd128808b46db5c7010838e49c0425c086ffe47ec378fa01f3e5`` To learn how to run a node with Ubuntu, see :ref:`Run a node on a server with Ubuntu `. From 19f3e264cf8ecd31a8f4e1665e15419462614886 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Wed, 7 Jun 2023 10:34:31 +0200 Subject: [PATCH 107/193] Update source/mainnet/net/guides/graviton-hackathon.rst MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Emil Holm Gjørup --- source/mainnet/net/guides/graviton-hackathon.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/graviton-hackathon.rst b/source/mainnet/net/guides/graviton-hackathon.rst index f57abe6eb7..d170572cae 100644 --- a/source/mainnet/net/guides/graviton-hackathon.rst +++ b/source/mainnet/net/guides/graviton-hackathon.rst @@ -41,7 +41,7 @@ Quick guide =========== - Install Rust -- Install ``cargo concordium`` +- Install ``cargo concordium`` or the `Concordium smart contract VSCode extension `_ - Install ``concordium-client`` - Import a wallet key into ``concordium-client`` - Install |bw| From 6b85e9e9d93d07a3b778dced6ae04fa84eb23203 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Wed, 7 Jun 2023 11:03:34 +0200 Subject: [PATCH 108/193] Update graviton-hackathon.rst --- source/mainnet/net/guides/graviton-hackathon.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/net/guides/graviton-hackathon.rst b/source/mainnet/net/guides/graviton-hackathon.rst index d170572cae..36368c8e47 100644 --- a/source/mainnet/net/guides/graviton-hackathon.rst +++ b/source/mainnet/net/guides/graviton-hackathon.rst @@ -28,7 +28,7 @@ Join our free workshop sessions before the hackathon starts. - 12th June @ 09:30 CET - Introduction to Concordium and Rust Programming, and Setting up your first smart contract on Concordium - 13th June @ 09:30 CET - Setting up the Browser Wallet and your first Concordium dApp -You can watch the workshops `live `_. +For information about how to watch the workshops live, see the `hackathon website `_. The materials from the workshop sessions are available on `GitHub `_. Recordings from previous workshops can be watched here: From 8d4be5eb696fe7a8e957d890dd0051e10c275815 Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Wed, 7 Jun 2023 14:43:21 +0200 Subject: [PATCH 109/193] Smart contract rustup compiler issue --- .../smart-contracts/guides/compile-module.rst | 13 +++++++++++++ .../mainnet/smart-contracts/guides/setup-tools.rst | 9 +++++++++ .../mainnet/smart-contracts/tutorials/setup-env.rst | 6 ++++++ 3 files changed, 28 insertions(+) diff --git a/source/mainnet/smart-contracts/guides/compile-module.rst b/source/mainnet/smart-contracts/guides/compile-module.rst index 31bc3a8b1c..8a8bc3ec1e 100644 --- a/source/mainnet/smart-contracts/guides/compile-module.rst +++ b/source/mainnet/smart-contracts/guides/compile-module.rst @@ -38,6 +38,19 @@ In order to build a smart contract, run: This uses Cargo_ for building, but runs further optimizations on the result. +.. Note:: + + If you receive an error similiar to the one below, you need to :ref:`install an earlier version of the rustup compiler`. + + .. code-block:: console + + Error: Could not build smart contract. + + Caused by: + 0: Could not build module schema. + 1: Could not generate module schema from Wasm module. + 2: Unsupported instruction 0xc0 + If you want a smaller code footprint, enable the :ref:`wee_alloc feature ` by using: .. code-block:: console diff --git a/source/mainnet/smart-contracts/guides/setup-tools.rst b/source/mainnet/smart-contracts/guides/setup-tools.rst index 6123ff86ee..50b1e69e33 100644 --- a/source/mainnet/smart-contracts/guides/setup-tools.rst +++ b/source/mainnet/smart-contracts/guides/setup-tools.rst @@ -12,6 +12,15 @@ Rust and Cargo First, `install rustup`_, which installs both Rust_ and Cargo_ on your machine. + +.. _rust-compiler-issue: + +Due to a known error in Rust, you must install the compiler version 1.69 or earlier. To do that, run: + +.. code-block:: console + + $rustup default 1.69 + Then use ``rustup`` to install the Wasm target, which is used for compilation: .. code-block:: console diff --git a/source/mainnet/smart-contracts/tutorials/setup-env.rst b/source/mainnet/smart-contracts/tutorials/setup-env.rst index 18ebda594e..204430faab 100644 --- a/source/mainnet/smart-contracts/tutorials/setup-env.rst +++ b/source/mainnet/smart-contracts/tutorials/setup-env.rst @@ -7,6 +7,12 @@ Setup the development environment First, you need to install ``rustup`` which installs Rust and Cargo to your computer. Go to `Rustup `_ to install ``rustup`` for your platform. +Due to a known error in Rust, you must install the compiler version 1.69 or earlier. To do that, run: + +.. code-block:: console + + $rustup default 1.69 + Select **1** to continue the installation. .. image:: images/mint-install-rustup.png From f4ebcf62993c73da4d5b3c2b54bde14088276dcf Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Thu, 8 Jun 2023 08:28:21 +0200 Subject: [PATCH 110/193] Update source/mainnet/smart-contracts/guides/setup-tools.rst MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Aleš Bizjak --- source/mainnet/smart-contracts/guides/setup-tools.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/smart-contracts/guides/setup-tools.rst b/source/mainnet/smart-contracts/guides/setup-tools.rst index 50b1e69e33..9c80b89adc 100644 --- a/source/mainnet/smart-contracts/guides/setup-tools.rst +++ b/source/mainnet/smart-contracts/guides/setup-tools.rst @@ -15,7 +15,7 @@ machine. .. _rust-compiler-issue: -Due to a known error in Rust, you must install the compiler version 1.69 or earlier. To do that, run: +Due to a change in the behavior of the rust compiler, you must install the compiler version 1.69 or earlier. To do that, run: .. code-block:: console From ab19354ac602353c754e77ac84d84cdf3db0f527 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Thu, 8 Jun 2023 08:28:29 +0200 Subject: [PATCH 111/193] Update source/mainnet/smart-contracts/tutorials/setup-env.rst MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Aleš Bizjak --- source/mainnet/smart-contracts/tutorials/setup-env.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/smart-contracts/tutorials/setup-env.rst b/source/mainnet/smart-contracts/tutorials/setup-env.rst index 204430faab..3f9010552b 100644 --- a/source/mainnet/smart-contracts/tutorials/setup-env.rst +++ b/source/mainnet/smart-contracts/tutorials/setup-env.rst @@ -7,7 +7,7 @@ Setup the development environment First, you need to install ``rustup`` which installs Rust and Cargo to your computer. Go to `Rustup `_ to install ``rustup`` for your platform. -Due to a known error in Rust, you must install the compiler version 1.69 or earlier. To do that, run: +Due to a change in the behavior of the rust compiler, you must install the compiler version 1.69 or earlier. To do that, run: .. code-block:: console From 2173aef0b10551f79d2e676e3d4f080581a63330 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Holm=20Gj=C3=B8rup?= Date: Mon, 12 Jun 2023 08:12:33 +0200 Subject: [PATCH 112/193] Update graviton hackathon workshop dates --- source/mainnet/net/guides/graviton-hackathon.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/mainnet/net/guides/graviton-hackathon.rst b/source/mainnet/net/guides/graviton-hackathon.rst index 36368c8e47..a5d683dc0f 100644 --- a/source/mainnet/net/guides/graviton-hackathon.rst +++ b/source/mainnet/net/guides/graviton-hackathon.rst @@ -25,8 +25,8 @@ Workshop Sessions Join our free workshop sessions before the hackathon starts. -- 12th June @ 09:30 CET - Introduction to Concordium and Rust Programming, and Setting up your first smart contract on Concordium -- 13th June @ 09:30 CET - Setting up the Browser Wallet and your first Concordium dApp +- 13th June @ 09:30 CET - Introduction to Concordium and Rust Programming, and Setting up your first smart contract on Concordium +- 14th June @ 09:30 CET - Setting up the Browser Wallet and your first Concordium dApp For information about how to watch the workshops live, see the `hackathon website `_. The materials from the workshop sessions are available on `GitHub `_. From d4d2a0f76a1a661a0d45cba4168fd59aa6dc0893 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Tue, 13 Jun 2023 11:08:02 +0200 Subject: [PATCH 113/193] Update source/mainnet/variables.rst Co-authored-by: Martin Heinrich <98821384+mh-concordium@users.noreply.github.com> --- source/mainnet/variables.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/mainnet/variables.rst b/source/mainnet/variables.rst index caca828ba4..e7cb0c717d 100644 --- a/source/mainnet/variables.rst +++ b/source/mainnet/variables.rst @@ -27,8 +27,8 @@ .. |testnet-node-version| replace:: 5.4.1 .. Node debian package verification variables -.. |node-deb-package| replace:: concordium-mainnet-node_5.4.1-0_amd64.deb -.. |node-deb-package-checksum| replace:: 34004de4740cea110bca7950094fcf43640bbefc816eae94d71262e0644073da +.. |node-deb-package| replace:: concordium-mainnet-node_5.4.2-0_amd64.deb +.. |node-deb-package-checksum| replace:: cab62172983d509e2e6b34e1bbc6464d989b1f749861278ee800d9efc31fd848 .. Mainnet genesis block verification variables .. |mainnet-genesis-block| replace:: genesis.dat From d1e1b29ef507e8b6d87efb94c7fb9482073e3692 Mon Sep 17 00:00:00 2001 From: dg-concordium <95341910+dg-concordium@users.noreply.github.com> Date: Tue, 13 Jun 2023 11:08:12 +0200 Subject: [PATCH 114/193] Update source/mainnet/variables.rst Co-authored-by: Martin Heinrich <98821384+mh-concordium@users.noreply.github.com> --- source/mainnet/variables.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/mainnet/variables.rst b/source/mainnet/variables.rst index e7cb0c717d..450471bcfd 100644 --- a/source/mainnet/variables.rst +++ b/source/mainnet/variables.rst @@ -23,7 +23,7 @@ .. |cargo-linux-checksum| replace:: ea3f603e2a921181cdf323604066444378a955c55e82b206a7d169bf636fa75d .. Node version variables -.. |mainnet-node-version| replace:: 5.4.1 +.. |mainnet-node-version| replace:: 5.4.2 .. |testnet-node-version| replace:: 5.4.1 .. Node debian package verification variables From a5030f5014f4baf20e08d74efd2a11f3a9bfa18a Mon Sep 17 00:00:00 2001 From: dg-concordium Date: Thu, 15 Jun 2023 11:01:08 +0200 Subject: [PATCH 115/193] Node runner grafana dashboard --- source/mainnet/net/guides/developer-page.rst | 20 +++++++++++++++++- .../images/run-node/windows-event-viewer.png | Bin 0 -> 310867 bytes .../images/run-node/windows-node-db-files.png | Bin 0 -> 21716 bytes .../mainnet/net/nodes/node-requirements.rst | 2 ++ .../node-runner-service-configuration.rst | 14 ++++++++++++ .../net/nodes/troubleshoot-windows.rst | 9 ++++++++ .../net/resources/third-party-notices.rst | 1 + 7 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 source/mainnet/net/images/run-node/windows-event-viewer.png create mode 100644 source/mainnet/net/images/run-node/windows-node-db-files.png diff --git a/source/mainnet/net/guides/developer-page.rst b/source/mainnet/net/guides/developer-page.rst index 3c235223a4..7c0aa06f0e 100644 --- a/source/mainnet/net/guides/developer-page.rst +++ b/source/mainnet/net/guides/developer-page.rst @@ -59,18 +59,36 @@ Concordium has a selection of example dApps that you can clone to make your own Block explorers --------------- -The following are links to the block and status explorers. For a description of the information available on the pages, see :ref:`Dashboards and Status pages `. +The following are links to the block, node, and status explorers. + +Concordium block explorers +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +For a description of the information available on the pages, see :ref:`Dashboards and Status pages `. - `Mainnet block explorer `_ - `Testnet block explorer `_ +Concordium status pages +^^^^^^^^^^^^^^^^^^^^^^^ + - `Mainnet status page `_ - `Testnet status page `__ +CCDScan +^^^^^^^ + +For information about CCDScan, see :ref:``. + - `CCDScan `_ +Grafana® node dashboard +^^^^^^^^^^^^^^^^^^^^^^^ + +For node runners using Grafana, Concordium provides a node performance dashboard using the exposed Prometheus metrics. You can download it from the Grafana marketplace. + Social media and support ------------------------ diff --git a/source/mainnet/net/images/run-node/windows-event-viewer.png b/source/mainnet/net/images/run-node/windows-event-viewer.png new file mode 100644 index 0000000000000000000000000000000000000000..b57f1f93f7a4266e52713566299988d74ae74c84 GIT binary patch literal 310867 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