diff --git a/.github/workflows/tag_release.yml b/.github/workflows/create_release.yml similarity index 100% rename from .github/workflows/tag_release.yml rename to .github/workflows/create_release.yml diff --git a/docs/about/communication.md b/docs/about/communication.md index 077a8c37..570799e8 100644 --- a/docs/about/communication.md +++ b/docs/about/communication.md @@ -23,7 +23,7 @@ keywords: [gnosis, gnosis twitter, gnosis telegram, gnosis discord, governance f ## Support -- [Discord](https://discord.gg/gnosischain) +- [Discord](https://discord.gg/gnosis) - [Validator Resources & Feedback Form](https://tally.so/r/3y4V1W) - General Inquiries: [community@gnosis.io](mailto:community@gnosis.io) diff --git a/docs/about/networks/README.md b/docs/about/networks/README.md index daf3b19a..b4062df7 100644 --- a/docs/about/networks/README.md +++ b/docs/about/networks/README.md @@ -26,4 +26,4 @@ keywords: | CL Explorer | https://gnosischa.in/ | https://beacon.chiadochain.net | | Fork monitor | https://forkmon.gnosischain.com | https://forkmon.chiadochain.net | | EthStats | https://ethstats.gnosischain.com | https://ethstats.chiadochain.net | -| Faucet | https://gnosisfaucet.com | https://faucet.chiadochain.net/ | +| Faucet | https://faucet.gnosischain.com/ | https://faucet.chiadochain.net/ | diff --git a/docs/about/specs/bug-bounty.md b/docs/about/specs/bug-bounty.md index 7f9eb541..d1a33541 100644 --- a/docs/about/specs/bug-bounty.md +++ b/docs/about/specs/bug-bounty.md @@ -80,7 +80,7 @@ More info -> [https://medium.com/immunefi/xdai-stake-hosts-2-000-000-bug-bounty- ## What’s next? - [Submit a bug](https://bugs.immunefi.com/) -- Any questions about the program? Reach out to us in our [Discord](https://discord.gg/gnosischain) channel! +- Any questions about the program? Reach out to us in our [Discord](https://discord.gg/gnosis) channel! ## FAQ diff --git a/docs/bridges/About Token Bridges/hashi-integration.md b/docs/bridges/About Token Bridges/hashi-integration.md new file mode 100644 index 00000000..ae835a33 --- /dev/null +++ b/docs/bridges/About Token Bridges/hashi-integration.md @@ -0,0 +1,116 @@ +--- +sidebar_position: 5 +title: Hashi Integration +description: How do the bridges work after Hashi integration +keywords: [amb bridge, arbitrary message bridge, omnibridge, xdai bridge, hashi] +--- + +# Hashi integration + +The proposal of Hashi integration on Gnosis Chain's bridges (AMB & Omnibridge, xDAI bridge) is [approved by Gnosis DAO members](https://forum.gnosis.io/t/gip-93-should-gnosisdao-support-the-integration-of-hashi-within-gnosis-chains-canonical-bridges/8245/5) on April 2nd, 2024. The integration introduces advanced security measures, mitigates systemic risks, and ensures the Gnosis Chain ecosystem remains resilient against the evolving landscape of security threats. With the efforts from Cross-Chain Alliance and Gnosis team, the integration is going toward production. + +## What’s new? + +1. Hashi Manager contract: New contract. Set reporters, adapters, and threshold parameters used by the bridge contract. +2. New variables/function: + 1. HASHI_ENABLED: New variable. When set to true, every message can be approved by Hashi, but the message need not to be approved by Hashi for it to get executed. + 2. HASHI_MANDATORY: New variable. When set to true, every message has to be approved by Hashi before execution. + 3. isApprovedByHashi(bytes32 msgId): New public function. Return whether a message w.r.t a message Id is approved by Hashi. + 4. setHashiManager(address HashiManager): New function, onlyOwner. Set Hashi Manager contract on the bridge contract. +3. Modified events: + 1. xDAI Bridge: in xDAI bridge, a `bytes32 nonce` is added into `UserRequestForAffirmation` and `UserRequestForSignature` events. + 1. `event UserRequestForAffirmation(address recipient, uint256 value)` is changed to `event UserRequestForAffirmation(address recipient, uint256 value, bytes32 nonce)` + 2. `event UserRequestForSignature(address recipient, uint256 value)` is changed to `UserRequestForSignature(address recipient, uint256 value bytes32 nonce)` + +## AMB & Omnibridge + +![](../../../static/img/bridges/hashi/Hashi-Gnosis-AMB.png) + +For Omnibridge / AMB: + +**Ethereum → Gnosis Chain** + +1. User approves token for Foreign Omnibridge +2. User calls ForeignOmnibridge.relayTokens(address token, address receiver, uint256 amount) + 1. ForeignOmnibridge calls ForeignAMB.requireToPassMessage() + 2. ForeignAMB check if HASHI_IS_ENABLED is true, and call Yaho.dispatchMessage + 3. Off chain relayer detects MessageDispatched event from Yaho and call Yaho.relayMessagesToAdapters to relay message to each reporters. + 4. Reporters relay the messageId and message hash to adapter contract on Gnosis Chain. + 5. Light Client based oracle only stores hashes on Gnosis Chain. +3. If Hashi is enabled & mandatory, off chain executor calls Gnosis Chain’s Yaru.executeMessages(), which check if the hash is agreed upon a threshold amount of adapters (set in Hashi Manager contract) adapters and set isApprovedByHashi(messageId) to true eventually. +4. Bridge validators detects UserRequestForAffirmation event and call HomeAMB.executeAffirmation. If Hashi is enabled & mandatory, this step has to wait after step 3. + +**Gnosis Chain → Ethereum** + +1. User approves token for Home Omnibridge +2. User calls HomeOmnibridge.relayTokens(address token, address receiver, uint256 amount) + 1. HomeOmnibridge calls HomeAMB.requireToPassMessage() + 2. HomeAMB check if HASHI_IS_ENABLED is true, and call Yaho.dispatchMessage + 3. Off chain relayer detects MessageDispatched event from Yaho and call Yaho.relayMessagesToAdapters to relay message to each reporters. + 4. Reporters relay the messageId and message hash to adapter contract on Ethereum. +3. Bridge validators detects UserRequestForSignature event and call HomeAMB.submitSignatures. +4. If Hashi is enabled & mandatory, off chain executor calls Ethereum’s Yaru.executeMessages(), which check if the hash is agreed upon adapters and set isApprovedByHashi(messageId) to true eventually. +5. User claims token by calling Ethereum’s ForeignAMB.executeSignatures(). + +## xDAI briddge + +![](../../../static/img/bridges/hashi/Hashi-Gnosis-AMB.png) + +**Ethereum → Gnosis Chain** + +1. User approves token for Foreign xDAI bridge. +2. User calls ForeignXDAIBridge.relayTokens(address receiver, uint256 amount) + 1. ForeignXDAIBridge check if HASHI_IS_ENABLED is true, and call Yaho.dispatchMessage + 2. Off chain relayer detects MessageDispatched event from Yaho and call Yaho.relayMessagesToAdapters to relay message to each reporters. + 3. Reporters relay the messageId and message hash to adapter contract on Gnosis Chain. + 4. Light Client based oracle only stores hashes on Gnosis Chain. +3. If Hashi is enabled & mandatory, off chain executor calls Gnosis Chain’s Yaru.executeMessages(), which check if the hash is agreed upon a threshold amount of adapters (set in Hashi Manager contract) and set isApprovedByHashi(messageId) to true eventually. +4. Bridge validators detects UserRequestForAffirmation event and call HomexDAIBridge.executeAffirmation. If Hashi is enabled & mandatory, this step has to wait after step 3. Block Reward contract emits AddedReceiver event, which will mint equivalent amount of xDAI to receiver in the next block. + +**Gnosis Chain → Ethereum** + +1. User calls HomexDAIBridge.relayTokens(address receiver, uint256 amount) or transfer xDAI to HomexDAIBridge without msg.data. + 1. HomexDAIBridge check if HASHI_IS_ENABLED is true, and call Yaho.dispatchMessage + 2. Off chain relayer detects MessageDispatched event from Yaho and call Yaho.relayMessagesToAdapters to relay message to each reporters. + 3. Reporters relay the messageId and message hash to adapter contract on Ethereum. +2. Bridge validators detects UserRequestForSignature event and call HomexDAIBridge.submitSignatures. +3. If Hashi is enabled & mandatory, off chain executor calls Ethereum’s Yaru.executeMessages(), which check if the hash is agreed upon adapters and set isApprovedByHashi(messageId) to true eventually. +4. User claims token by calling Ethereum’s ForeignxDAIBridge.executeSignatures(). DAI is transfer to the receiver eventually. + +# Testnet environment + +For testing purpose, we've set up testnet environemnt. Users are welcome to experiment with the testnet environments: + +- Sepolia addresses + 1. ForeignAMB: [0x2F62433e00168af10c70bc39e2fDbEe5DaCA257b](https://sepolia.etherscan.io/address/0x2F62433e00168af10c70bc39e2fDbEe5DaCA257b) + 2. Hashi Manager: [0x6C5F4F8a719bF054D6b08E3cCc27a5f208Ec8766](https://sepolia.etherscan.io/address/0x6C5F4F8a719bF054D6b08E3cCc27a5f208Ec8766#writeProxyContract) +- Chiado addresses + 1. Home AMB: [0xAF18353BF369897Aab18ec225422F921be9F7eC6](https://gnosis-chiado.blockscout.com/address/0xAF18353BF369897Aab18ec225422F921be9F7eC6?tab=contract) + 2. Hashi Manager: [0xe505cD6522E9A1c2309a915f83dDCA9addaC0895](https://gnosis-chiado.blockscout.com/address/0xe505cD6522E9A1c2309a915f83dDCA9addaC0895?tab=contract_code) + 3. AMB BridgeHelper: [0x3fba3D7Ae204a684E4359A3fC211C18EA155cd78](https://gnosis-chiado.blockscout.com/address/0x3fba3D7Ae204a684E4359A3fC211C18EA155cd78) + +## Omnibridge + +- Sepolia address + 1. Foreign Omnibridge: [0xc4e06E44B2d1e148beFAa3cB2012A985EFe7032a](https://sepolia.etherscan.io/address/0xc4e06E44B2d1e148beFAa3cB2012A985EFe7032a) + 2. WETH Router: [0x65E64139f202F89cb6b4bFc140bf01Cda1886465](https://sepolia.etherscan.io/address/0x65E64139f202F89cb6b4bFc140bf01Cda1886465#code) +- Chiado address + 1. Home Omnibridge: [0xB866dC5321Ca41a22938A7afD5Bc3c5069975874](https://gnosis-chiado.blockscout.com/address/0xB866dC5321Ca41a22938A7afD5Bc3c5069975874?tab=write_proxy) + +## xDAI + +- Sepolia addresses + 1. Foreign xDAI: [0x97589968FA7ef153af44C6F5d0Fb9AcaEA97AC94](https://sepolia.etherscan.io/address/0x97589968FA7ef153af44C6F5d0Fb9AcaEA97AC94) + 2. Hashi Manager: [0x90d3c0c9BCb317E80A459B0126257665186E59fa](https://sepolia.etherscan.io/address/0x90d3c0c9bcb317e80a459b0126257665186e59fa#code) +- Chiado addresses + 1. Home xDAI: [0x867696eA1cfA243aB909797022D0A0C99BdACcF1](https://gnosis-chiado.blockscout.com/address/0x867696eA1cfA243aB909797022D0A0C99BdACcF1?tab=contract) + 2. Hashi Manager: [0x5b745C021ef62f90862a812EB6763f5758e51eE2](https://gnosis-chiado.blockscout.com/address/0x5b745C021ef62f90862a812EB6763f5758e51eE2?tab=contract) + 3. xDAI Bridge Helper: [0xA7bE47d1111baFDb2f0E9ce8D6431508aC2fd98e](https://gnosis-chiado.blockscout.com/address/0xA7bE47d1111baFDb2f0E9ce8D6431508aC2fd98e#code) + +## Reference + +1. AMB contracts: https://github.com/crosschain-alliance/tokenbridge-contracts/tree/feat/hashi-integration-amb +2. xDAI bridge contracts: https://github.com/crosschain-alliance/tokenbridge-contracts/tree/feat/hashi-integration-xdai-bridge +3. Test: https://github.com/crosschain-alliance/tokenbridge-contracts-migration-tests +4. Audits: https://crosschain-alliance.gitbook.io/hashi/v0.2/audit-report#gnosis-bridge-hashi-integration +5. Hashi: https://crosschain-alliance.gitbook.io/hashi/v0.2/introduction diff --git a/docs/bridges/Legacy Bridges UI/using-xdai-bridge/troubleshooting.md b/docs/bridges/Legacy Bridges UI/using-xdai-bridge/troubleshooting.md index 955a0743..ab3e3bd6 100644 --- a/docs/bridges/Legacy Bridges UI/using-xdai-bridge/troubleshooting.md +++ b/docs/bridges/Legacy Bridges UI/using-xdai-bridge/troubleshooting.md @@ -29,7 +29,7 @@ If you are using OmniBridge for other ERC20 tokens (not xDai to Dai) please see ## Bridge UI is Offline or in Maintenance Mode -We are doing some periodic maintenance and optimization on the Bridge and are now putting the UI into maintenance mode during these times to avoid additional confusion and/or delayed transactions for users. If you started a transaction but it did not complete because of maintenance mode, be assured that funds are safe and will be available once maintenance is complete. If you have questions or concerns during maintenance, please contact us in [Discord channel](https://discord.gg/gnosischain) for up-to-date information. +We are doing some periodic maintenance and optimization on the Bridge and are now putting the UI into maintenance mode during these times to avoid additional confusion and/or delayed transactions for users. If you started a transaction but it did not complete because of maintenance mode, be assured that funds are safe and will be available once maintenance is complete. If you have questions or concerns during maintenance, please contact us in [Discord channel](https://discord.gg/gnosis) for up-to-date information. ## I Only See Bridging in 1 Direction diff --git a/docs/faq/Node FAQs/changingwc.md b/docs/faq/Node FAQs/changingwc.md index 3eb6d7dd..65759178 100644 --- a/docs/faq/Node FAQs/changingwc.md +++ b/docs/faq/Node FAQs/changingwc.md @@ -3,7 +3,7 @@ title: Changing Withdrawal Credential --- :::info -**Find this document incomplete? Visit our [Discord channel](https://discord.gg/gnosischain) or contact us via [Validator Request form](https://tally.so/r/3y4V1W)!** +**Find this document incomplete? Visit our [Discord channel](https://discord.gg/gnosis) or contact us via [Validator Request form](https://tally.so/r/3y4V1W)!** ::: :::info diff --git a/docs/faq/Node FAQs/depositWithdrawalReward.md b/docs/faq/Node FAQs/depositWithdrawalReward.md index 6bc832d7..3c31b8f4 100644 --- a/docs/faq/Node FAQs/depositWithdrawalReward.md +++ b/docs/faq/Node FAQs/depositWithdrawalReward.md @@ -3,7 +3,7 @@ title: Deposit, Withdrawals, and Rewards --- :::info -**Find this document incomplete? Visit our [Discord channel](https://discord.gg/gnosischain) or contact us via [Validator Request form](https://tally.so/r/3y4V1W)!** +**Find this document incomplete? Visit our [Discord channel](https://discord.gg/gnosis) or contact us via [Validator Request form](https://tally.so/r/3y4V1W)!** ::: :::info diff --git a/docs/faq/Node FAQs/monitoring.md b/docs/faq/Node FAQs/monitoring.md index 4ab23fdf..1b569734 100644 --- a/docs/faq/Node FAQs/monitoring.md +++ b/docs/faq/Node FAQs/monitoring.md @@ -3,7 +3,7 @@ title: Monitoring and Alerts --- :::info -**Find this document incomplete? Visit our [Discord channel](https://discord.gg/gnosischain) or contact us via [Validator Request form](https://tally.so/r/3y4V1W)!** +**Find this document incomplete? Visit our [Discord channel](https://discord.gg/gnosis) or contact us via [Validator Request form](https://tally.so/r/3y4V1W)!** ::: :::info diff --git a/docs/faq/Node FAQs/offlineAndSyncIssue.md b/docs/faq/Node FAQs/offlineAndSyncIssue.md index 9105cc59..163d6c4d 100644 --- a/docs/faq/Node FAQs/offlineAndSyncIssue.md +++ b/docs/faq/Node FAQs/offlineAndSyncIssue.md @@ -3,7 +3,7 @@ title: Offline and Sync Issue --- :::info -**Find this document incomplete? Visit our [Discord channel](https://discord.gg/gnosischain) or contact us via [Validator Request form](https://tally.so/r/3y4V1W)!** +**Find this document incomplete? Visit our [Discord channel](https://discord.gg/gnosis) or contact us via [Validator Request form](https://tally.so/r/3y4V1W)!** ::: :::info diff --git a/docs/faq/Node FAQs/staking.md b/docs/faq/Node FAQs/staking.md index 47c34175..92fcc563 100644 --- a/docs/faq/Node FAQs/staking.md +++ b/docs/faq/Node FAQs/staking.md @@ -3,7 +3,7 @@ title: Staking and Liquid Staking --- :::info -**Find this document incomplete? Visit our [Discord channel](https://discord.gg/gnosischain) or contact us via [Validator Request form](https://tally.so/r/3y4V1W)!** +**Find this document incomplete? Visit our [Discord channel](https://discord.gg/gnosis) or contact us via [Validator Request form](https://tally.so/r/3y4V1W)!** ::: :::info diff --git a/docs/node/Node Tools/eth-docker.md b/docs/node/Node Tools/eth-docker.md index 8ea9a1f4..ff259ed7 100644 --- a/docs/node/Node Tools/eth-docker.md +++ b/docs/node/Node Tools/eth-docker.md @@ -1,18 +1,18 @@ --- -title: eth-docker +title: Eth-docker --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -# eth-docker +# Eth-docker -[eth-docker](https://eth-docker.net/) is a docker automation project for Ethereum consensus and execution clients. It aims to make running a Ethereum staking full node simpler than setting everything up manually, while allowing the user choice when it comes to the exact client mix they wish to run. +[Eth-docker](https://eth-docker.net/) is a docker automation project for Ethereum consensus and execution clients. It aims to make running a Ethereum staking full node simpler than setting everything up manually, while allowing the user choice when it comes to the exact client mix they wish to run. -eth-docker allows user to set up Gnosis clients by answering simple dialog-based questions on terminal. +Eth-docker allows user to set up Gnosis clients by answering simple dialog-based questions on terminal. ## References -1. eth-docker Docs: https://eth-docker.net/ +1. Eth-docker Docs: https://eth-docker.net/ 2. Github: https://github.com/eth-educators/eth-docker diff --git a/docs/node/Node Tools/eth-swarm.md b/docs/node/Node Tools/eth-swarm.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/node/Node Tools/swarm/README.md b/docs/node/Node Tools/swarm/README.md new file mode 100644 index 00000000..2d6b7b45 --- /dev/null +++ b/docs/node/Node Tools/swarm/README.md @@ -0,0 +1,8 @@ +--- +description: Swarm is a peer-to-peer network of Bee nodes that collectively provide censorship resistant decentralised storage and communication services. +keywords: [storage, data storage, decentralized storage, swarm] +--- + +# Swarm + +Swarm is a peer-to-peer network of Bee nodes that collectively provide censorship resistant decentralised storage and communication services. Swarm's mission is to shape the future towards a self-sovereign global society and permissionless open markets by providing scalable base-layer data storage infrastructure for the decentralised internet. Its incentive system is enforced through smart contracts on the Gnosis Chain blockchain and powered by the xBZZ token, making it economically self-sustaining. \ No newline at end of file diff --git a/docs/node/Node Tools/swarm/a-quickstart-swarm.md b/docs/node/Node Tools/swarm/a-quickstart-swarm.md new file mode 100644 index 00000000..931efb02 --- /dev/null +++ b/docs/node/Node Tools/swarm/a-quickstart-swarm.md @@ -0,0 +1,443 @@ +--- +description: A quickstart guide for getting up and running with Swarm as quick as possible with minimal additional tooling. +keywords: [swarm, storage, decentralized, decentralised] +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Swarm Quickstart Shell Script + +The following is a guide to get you started running a Bee full node with staking on Swarm using [the official shell script provided by Swarm](https://github.com/ethersphere/bee/blob/master/install.sh) which automatically detects your system and installs the correct version of Bee. + + +:::warning +Note that we append 127.0.0.1 (localhost) to our Bee API's port (1633 by default), since we do not want to expose our Bee API endpoint to the public internet, as that would allow anyone to control our node. Make sure you do the same, and it's also recommended to use a firewall to protect access to your node(s). +::: + +:::info +The guide below is for a full Bee node with staking. To run a light node (uploads and downloads only), set `--full-node` to false, or to run in ultra light (downloads only) mode you can set both `--full-node` and `--swap-enable` to false. +::: + + + +## Prerequisites + +### Hardware + +:::warning +If you are running on a home Wi-Fi you may need to configure your router to use [port forwarding](https://www.noip.com/support/knowledgebase/general-port-forwarding-guide) or take other steps to ensure your node is reachable by other nodes on the network. See [here](https://docs.ethswarm.org/docs/bee/installation/connectivity/#navigating-through-the-nat) for more guidance. If you are running on a VPS or cloud based server you will likely have no issues. +::: + +:::caution +While it is possible to run multiple Bee nodes on a single machine, due to the high rate of I/O operations required by a full Bee node in operation, it is not recommended to run more than a handful of Bee nodes on the same physical disk (depending on the disk speed). +::: + +* Dual core, recent generation, 2ghz processor +* 4gb RAM +* 30gb SSD +* Stable internet connection + +### Software + +* A computer running a supported version of Linux (almost all commonly used distros should work). macOS will also work but you may need to slightly modify some commands. +* A Gnosis Chain RPC endpoint (either by running your own node or the [free RPC endpoint](https://xdai.fairdatasociety.org) offered from the Fair Data Society. Other free public options are available at the [Gnosis Chain docs](https://docs.gnosischain.com/tools/RPC%20Providers/). +* (Optional) [jq utility](https://jqlang.github.io/jq/) for formatting API output. +* (Optional) [bashtop utility] for monitoring processes (such as our Bee node). + + +:::info +The [`jq` utility](https://jqlang.github.io/jq/) is used in this guide to automatically format the output from the Bee API. It can help make API output much more readable, however it is totally optional. +::: + +### Tokens + +* A small amount of xDAI to pay for Gnosis Chain transactions, 0.1 xDAI should be enough +* 10 xBZZ (BZZ on Gnosis Chain) is required for staking + +## Full node setup process + +Run the install shell script using either `curl` or `wget`: + +:::caution +In the example below, the version is specified using `TAG=v2.2.0`, make sure that you [check if there is a newer tagged version of Bee](https://github.com/ethersphere/bee/tags) and if so, modify the commands below to use the most recent tag number so that you have the latest version of Bee. +::: + + + + + + +```bash +curl -s https://raw.githubusercontent.com/ethersphere/bee/master/install.sh | TAG=v2.2.0 bash +``` + + + +**wget** + +```bash +wget -q -O - https://raw.githubusercontent.com/ethersphere/bee/master/install.sh | TAG=v2.2.0 bash +``` + + + + +Let's check that the script ran properly: + +```bash= +bee +``` + +If the script ran without any problems you should see this: + +```bash= +Ethereum Swarm Bee + +Usage: + bee [command] + +Available Commands: + start Start a Swarm node + dev Start a Swarm node in development mode + init Initialise a Swarm node + deploy Deploy and fund the chequebook contract + version Print version number + db Perform basic DB related operations + split Split a file into chunks + printconfig Print default or provided configuration in yaml format + help Help about any command + completion Generate the autocompletion script for the specified shell + +Flags: + --config string config file (default is $HOME/.bee.yaml) + -h, --help help for bee + +Use "bee [command] --help" for more information about a command. +``` + + +### Start node + +Let's try starting up our node for the first time with the command below, make sure to pick a [strong password](https://xkcd.com/936/) of your own: + +```bash +bee start \ + --password flummoxedgranitecarrot \ + --full-node \ + --swap-enable \ + --api-addr 127.0.0.1:1633 \ + --blockchain-rpc-endpoint https://xdai.fairdatasociety.org +``` +:::info + +Command explained: + +1. **`bee start`**: This is the command to start the Bee node. + +2. **`--password flummoxedgranitecarrot`**: The password to decrypt the private key associated with the node. Replace "flummoxedgranitecarrot" with your actual password. + +3. **`--full-node`**: This option enables the node to run in full mode, sharing its disk with the network, and becoming eligible for staking. + +4. **`--swap-enable`**: This flag enables SWAP, which is the bandwidth incentives scheme for Swarm. It will initiate a transaction to set up the SWAP chequebook on Gnosis Chain (required for light and full nodes). + +5. **`--api-addr 127.0.0.1:1633`**: Specifies that the Bee API will be accessible locally only via `127.0.0.1` on port `1633` and not accessible to the public. + +6. **`--blockchain-rpc-endpoint https://xdai.fairdatasociety.org`**: Sets the RPC endpoint for interacting with the Gnosis blockchain (required for light and full nodes). +::: + + +Logs will begin printing to the terminal, and should look like this: + +```bash +Welcome to Swarm.... Bzzz Bzzzz Bzzzz + \ / + \ o ^ o / + \ ( ) / + ____________(%%%%%%%)____________ + ( / / )%%%%%%%( \ \ ) + (___/___/__/ \__\___\___) + ( / /(%%%%%%%)\ \ ) + (__/___/ (%%%%%%%) \___\__) + /( )\ + / (%%%%%) \ + (%%%) + ! + +DISCLAIMER: +This software is provided to you "as is", use at your own risk and without warranties of any kind. +It is your responsibility to read and understand how Swarm works and the implications of running this software. +The usage of Bee involves various risks, including, but not limited to: +damage to hardware or loss of funds associated with the Ethereum account connected to your node. +No developers or entity involved will be liable for any claims and damages associated with your use, +inability to use, or your interaction with other nodes or the software. + +version: 2.2.0-06a0aca7 - planned to be supported until 11 December 2024, please follow https://ethswarm.org/ + +"time"="2024-09-24 18:15:34.383102" "level"="info" "logger"="node" "msg"="bee version" "version"="2.2.0-06a0aca7" +"time"="2024-09-24 18:15:34.428546" "level"="info" "logger"="node" "msg"="swarm public key" "public_key"="0373fe2ab33ab836635fc35864cf708fa0f4a775c0cf76ca851551e7787b58d040" +"time"="2024-09-24 18:15:34.520686" "level"="info" "logger"="node" "msg"="pss public key" "public_key"="03a341032724f1f9bb04f1d9b22607db485cccd74174331c701f3a6957d94d95c1" +"time"="2024-09-24 18:15:34.520716" "level"="info" "logger"="node" "msg"="using ethereum address" "address"="0x1A801dd3ec955E905ca424a85C3423599bfb0E66" +"time"="2024-09-24 18:15:34.533789" "level"="info" "logger"="node" "msg"="fetching target neighborhood from suggester" "url"="https://api.swarmscan.io/v1/network/neighborhoods/suggestion" +"time"="2024-09-24 18:15:36.773501" "level"="info" "logger"="node" "msg"="mining a new overlay address to target the selected neighborhood" "target"="00100010110" +"time"="2024-09-24 18:15:36.776550" "level"="info" "logger"="node" "msg"="using overlay address" "address"="22d502d022de0f8e9d477bc61144d0d842d9d82b8241568c6fe4e41f0b466615" +"time"="2024-09-24 18:15:36.776576" "level"="info" "logger"="node" "msg"="starting with an enabled chain backend" +"time"="2024-09-24 18:15:37.388997" "level"="info" "logger"="node" "msg"="connected to blockchain backend" "version"="erigon/2.60.7/linux-amd64/go1.21.5" +"time"="2024-09-24 18:15:37.577840" "level"="info" "logger"="node" "msg"="using chain with network network" "chain_id"=100 "network_id"=1 +"time"="2024-09-24 18:15:37.593747" "level"="info" "logger"="node" "msg"="starting debug & api server" "address"="127.0.0.1:1633" +"time"="2024-09-24 18:15:37.969782" "level"="info" "logger"="node" "msg"="using default factory address" "chain_id"=100 "factory_address"="0xC2d5A532cf69AA9A1378737D8ccDEF884B6E7420" +"time"="2024-09-24 18:15:38.160249" "level"="info" "logger"="node/chequebook" "msg"="no chequebook found, deploying new one." +"time"="2024-09-24 18:15:38.728534" "level"="warning" "logger"="node/chequebook" "msg"="cannot continue until there is at least min xDAI (for Gas) available on address" "min_amount"="0.0003750000017" "address"="0x1A801dd3ec955E905ca424a85C3423599bfb0E66" +``` + +Here you can see that the node has started up successfully, but our node still needs to be funded with xDAI and xBZZ (xDAI for Gnosis Chain transactions and xBZZ for uploads/downloads and staking). + +### Fund node + +Check the logs from the previous step. Look for the line which says: + +``` +"time"="2024-09-24 18:15:34.520716" "level"="info" "logger"="node" "msg"="using ethereum address" "address"="0x1A801dd3ec955E905ca424a85C3423599bfb0E66" +``` +That address is your node's address on Gnosis Chain which needs to be funded with xDAI and xBZZ. Copy it and save it for the next step. + +xDAI is widely available from many different centralized and decentralized exchanges, just make sure that you are getting xDAI on Gnosis Chain, and not DAI on some other chain. See [this page](https://www.ethswarm.org/get-bzz) for a list of resources for getting xBZZ (again, make certain that you are getting the Gnosis Chain version, and not BZZ on Ethereum). + +After acquiring some xDAI and some xBZZ, send them to the address you copied above. + +***How Much to Send?*** + +Only a very small amount of xDAI is needed to get started, 0.1 is more than enough. + +You can start with just 2 or 3 xBZZ for uploading small amounts of data, but you will need at least 10 xBZZ if you plan on staking. + + +### Initialize full node + +After sending the required tokens (~0.1 xDAI and 10 xBZZ) to your node's Gnosis Chain address, close the bee process in your terminal (`Ctrl + C`). Then start it again with the same command: + +```bash +bee start \ + --password flummoxedgranitecarrot \ + --full-node \ + --swap-enable \ + --api-addr 127.0.0.1:1633 \ + --blockchain-rpc-endpoint https://xdai.fairdatasociety.org +``` +After funding and restarting your node, the logs printed to the terminal should look something like this: + +```bash +Welcome to Swarm.... Bzzz Bzzzz Bzzzz + \ / + \ o ^ o / + \ ( ) / + ____________(%%%%%%%)____________ + ( / / )%%%%%%%( \ \ ) + (___/___/__/ \__\___\___) + ( / /(%%%%%%%)\ \ ) + (__/___/ (%%%%%%%) \___\__) + /( )\ + / (%%%%%) \ + (%%%) + ! + +DISCLAIMER: +This software is provided to you "as is", use at your own risk and without warranties of any kind. +It is your responsibility to read and understand how Swarm works and the implications of running this software. +The usage of Bee involves various risks, including, but not limited to: +damage to hardware or loss of funds associated with the Ethereum account connected to your node. +No developers or entity involved will be liable for any claims and damages associated with your use, +inability to use, or your interaction with other nodes or the software. + +version: 2.2.0-06a0aca7 - planned to be supported until 11 December 2024, please follow https://ethswarm.org/ + +"time"="2024-09-24 18:57:16.710417" "level"="info" "logger"="node" "msg"="bee version" "version"="2.2.0-06a0aca7" +"time"="2024-09-24 18:57:16.760154" "level"="info" "logger"="node" "msg"="swarm public key" "public_key"="0373fe2ab33ab836635fc35864cf708fa0f4a775c0cf76ca851551e7787b58d040" +"time"="2024-09-24 18:57:16.854594" "level"="info" "logger"="node" "msg"="pss public key" "public_key"="03a341032724f1f9bb04f1d9b22607db485cccd74174331c701f3a6957d94d95c1" +"time"="2024-09-24 18:57:16.854651" "level"="info" "logger"="node" "msg"="using ethereum address" "address"="0x1A801dd3ec955E905ca424a85C3423599bfb0E66" +"time"="2024-09-24 18:57:16.866697" "level"="info" "logger"="node" "msg"="using overlay address" "address"="22d502d022de0f8e9d477bc61144d0d842d9d82b8241568c6fe4e41f0b466615" +"time"="2024-09-24 18:57:16.866730" "level"="info" "logger"="node" "msg"="starting with an enabled chain backend" +"time"="2024-09-24 18:57:17.485408" "level"="info" "logger"="node" "msg"="connected to blockchain backend" "version"="erigon/2.60.1/linux-amd64/go1.21.5" +"time"="2024-09-24 18:57:17.672282" "level"="info" "logger"="node" "msg"="using chain with network network" "chain_id"=100 "network_id"=1 +"time"="2024-09-24 18:57:17.686479" "level"="info" "logger"="node" "msg"="starting debug & api server" "address"="127.0.0.1:1633" +"time"="2024-09-24 18:57:18.065029" "level"="info" "logger"="node" "msg"="using default factory address" "chain_id"=100 "factory_address"="0xC2d5A532cf69AA9A1378737D8ccDEF884B6E7420" +"time"="2024-09-24 18:57:18.252410" "level"="info" "logger"="node/chequebook" "msg"="no chequebook found, deploying new one." +"time"="2024-09-24 18:57:19.576100" "level"="info" "logger"="node/chequebook" "msg"="deploying new chequebook" "tx"="0xf7bc9c5b04e96954c7f70cecfe717cad9cdc5d64b6ec080b2cbe712166ce262a" +"time"="2024-09-24 18:57:27.619377" "level"="info" "logger"="node/transaction" "msg"="pending transaction confirmed" "sender_address"="0x1A801dd3ec955E905ca424a85C3423599bfb0E66" "tx"="0xf7bc9c5b04e96954c7f70cecfe717cad9cdc5d64b6ec080b2cbe712166ce262a" +"time"="2024-09-24 18:57:27.619437" "level"="info" "logger"="node/chequebook" "msg"="chequebook deployed" "chequebook_address"="0x261a07a63dC1e7200d51106155C8929b432181fb" +``` + +Here we can see that after our node has been funded, it was able to issue the transactions for deploying the chequebook contract, which is a prerequisite for running a staking node. + +Next your node will begin to sync [postage stamp data](https://docs.ethswarm.org/docs/develop/access-the-swarm/buy-a-stamp-batch), which can take ~5 to 10 minutes. You will see this log message while your node is syncing postage stamp data: + +```bash +"time"="2024-09-24 22:21:19.664897" "level"="info" "logger"="node" "msg"="waiting to sync postage contract data, this may take a while... more info available in Debug loglevel" +``` + +After your node finishes syncing postage stamp data it will start in full node mode and begin to sync all the chunks of data it is responsible for storing as a full node: + + +```bash +"time"="2024-09-24 22:30:19.154067" "level"="info" "logger"="node" "msg"="starting in full mode" +"time"="2024-09-24 22:30:19.155320" "level"="info" "logger"="node/multiresolver" "msg"="name resolver: no name resolution service provided" +"time"="2024-09-24 22:30:19.341032" "level"="info" "logger"="node/storageincentives" "msg"="entered new phase" "phase"="reveal" "round"=237974 "block"=36172090 +"time"="2024-09-24 22:30:33.610825" "level"="info" "logger"="node/kademlia" "msg"="disconnected peer" "peer_address"="6ceb30c7afc11716f866d19b7eeda9836757031ed056b61961e949f6e705b49e" +``` + +This process can take a while, up to several hours depending on your system and network. You can check the progress of your node through the logs which print out to the Bee API: + +You check your node's progress with the `/status` endpoint: + +:::info +The [`jq` utility](https://jqlang.github.io/jq/) is used here to automatically format the output from the Bee API. It can help make API output more readable. You may need to install it, the exact steps will depend on your Linux distro and package manager of choice. Also feel free to remove the `| jq` from the command as it is only a convenience, not a requirement. +::: + +```bash +curl -s http://localhost:1633/status | jq +``` + +```bash +{ + "overlay": "22dc155fe072e131449ec7ea2f77de16f4735f06257ebaa5daf2fdcf14267fd9", + "proximity": 256, + "beeMode": "full", + "reserveSize": 686217, + "reserveSizeWithinRadius": 321888, + "pullsyncRate": 497.8747754074074, + "storageRadius": 11, + "connectedPeers": 148, + "neighborhoodSize": 4, + "batchCommitment": 74510761984, + "isReachable": false, + "lastSyncedBlock": 36172390 +} +``` +We can see that our node has not yet finished syncing chunks since the `pullsyncRate` is around 497 chunks per second. Once the node is fully synced, this value will go to zero. However, we do not need to wait until our node is fully synced in order to stake our node, so we can now move immediately to the next step. + + +### Stake node + +Now we're ready to begin staking, we will slightly modify our startup command so that it now runs in the background instead of taking control of our terminal: + +```bash +nohup bee start \ + --password flummoxedgranitecarrot \ + --full-node \ + --swap-enable \ + --api-addr 127.0.0.1:1633 \ + --blockchain-rpc-endpoint https://xdai.fairdatasociety.org > bee.log 2>&1 & +``` + +:::info +1. **`nohup`**: This ensures that the `bee start` process will continue even after the terminal is closed. + +2. **`> bee.log 2>&1`**: Redirects both standard output and standard error to a log file called `bee.log`. + +3. **`&`**: This sends the process to the background, allowing the terminal to be used for other commands while the Bee node continues running. +::: + +Let's check the Bee API to confirm the node is running: + +``` +curl localhost:1633 +``` +If the node is running we should see: +``` +Ethereum Swarm Bee +``` + +Now with our node properly running in the background, we're ready to stake our node. You can use the following command to stake 10 xBZZ: + +```bash +curl -XPOST localhost:1633/stake/100000000000000000 +``` + +If the staking transaction is successful a `txHash` will be returned: + +``` +{"txHash":"0x258d64720fe7abade794f14ef3261534ff823ef3e2e0011c431c31aea75c2dd5"} +``` + +We can also confirm that our node has been staked with the `/stake` endpoint: + +```bash +curl localhost:1633/stake +``` + +The results will be displayed in PLUR units (1 PLUR is equal to 1e-16 xBZZ). If you have properly staked the minimum 10 xBZZ, you should see the output below: + +```bash +{"stakedAmount":"100000000000000000"} +``` + +Congratulations! You have now installed your Bee node and are connected to the network as a full staking node. Your node will now be in the process of syncing chunks from the network. Once it is fully synced, your node will finally be eligible for earning staking rewards. + +### Logs and monitoring + +With our previously modified command, our Bee node will now be running in the background and the logs will be written to the `bee.log` file. To review our node's logs we can simply view the file contents: + +```bash +cat bee.log +``` + +The file will continue to update with all the latest logs as they are output: + +```bash +"time"="2024-09-27 18:05:34.096641" "level"="info" "logger"="node/kademlia" "msg"="connected to peer" "peer_address"="03b48e678938d63c0761c74a805fbe0446684c9c417330c2bec600ecfd6c492f" "proximity_order"=8 +"time"="2024-09-27 18:05:35.168425" "level"="info" "logger"="node/kademlia" "msg"="connected to peer" "peer_address"="0e9388fff473a9c74535337c32cc74d8f921514d2635d0c4a49c6e8022f5594e" "proximity_order"=4 +"time"="2024-09-27 18:05:35.532723" "level"="info" "logger"="node/kademlia" "msg"="disconnected peer" "peer_address"="3c195cd8882ee537d170e92d959ad6bd72a76a50097a671c72646e83b45a1832" +``` + +There are many different ways to monitor your Bee node's process, but one convenient way to do so is the [bashtop command line tool](https://github.com/aristocratos/bashtop). The method of [installation](https://github.com/aristocratos/bashtop?tab=readme-ov-file#installation) will vary depending on your system. + +After installation, we can launch it with the `bashtop` command: + +```bash +bashtop +``` + +![](/img/node/bashtop_01.png) + +We can use the `f` key to filter for our Bee node's specific process by searching for the `bee` keyword (use the arrow keys to navigate and `enter` to select). From here we can view info about our node's process, or shut it down using the `t` key (for "terminate"). + +![](/img/node/bashtop_02.png) + +**Checking the Node's status with the Bee API** + +To check your node's status as a staking node, we can use the `/redistributionstate` endpoint: + +```bash +curl -s http://localhost:1633/redistributionstate | jq +``` + +Below is the output for a node which has been running for several days: + +```bash +{ + "minimumGasFunds": "11080889201250000", + "hasSufficientFunds": true, + "isFrozen": false, + "isFullySynced": true, + "phase": "claim", + "round": 212859, + "lastWonRound": 207391, + "lastPlayedRound": 210941, + "lastFrozenRound": 210942, + "lastSelectedRound": 212553, + "lastSampleDuration": 491687776653, + "block": 32354719, + "reward": "1804537795127017472", + "fees": "592679945236926714", + "isHealthy": true +} +``` + +For a complete breakdown of this output, check out [this section in the Bee docs](https://docs.ethswarm.org/docs/bee/working-with-bee/bee-api#redistributionstate). + +You can read more other important endpoints for monitoring your Bee node in the [official Bee docs](https://docs.ethswarm.org/docs/bee/working-with-bee/bee-api), and you can find complete information about all available endpoints in [the API reference docs](https://docs.ethswarm.org/api/). diff --git a/docs/node/Node Tools/swarm/b-docker-swarm.md b/docs/node/Node Tools/swarm/b-docker-swarm.md new file mode 100644 index 00000000..c9f1672e --- /dev/null +++ b/docs/node/Node Tools/swarm/b-docker-swarm.md @@ -0,0 +1,369 @@ +--- +description: A quickstart guide for getting up and running with Swarm using Docker and Docker Compose +keywords: [swarm, storage, decentralized, decentralised, docker, docker compose] +--- + +# Swarm with Docker + +The following is a guide to get you started running a Bee full node with staking on Swarm using Docker. Docker images for Bee are hosted at [Docker Hub](https://hub.docker.com/r/ethersphere/bee). + +:::caution +In the examples below we specify the exact version number of the image using the 2.2.0 tag. It's recommended to only use the exact version number tags. Make sure to check that you're on the latest version of Bee by reviewing the tags for Bee on [Docker Hub](https://hub.docker.com/r/ethersphere/bee/tags), and replace 2.2.0 in the commands below if there is a newer full release. +::: + +:::warning +Note that in all the examples below we map the Bee API to 127.0.0.1 (localhost), since we do not want to expose our Bee API endpoint to the public internet, as that would allow anyone to control our node. Make sure you do the same, and it's also recommended to use a firewall to protect access to your node(s). +::: + +:::info +The guide below is for a full Bee node with staking. To run a light node (uploads and downloads only), set `BEE_FULL_NODE` to false, or to run in ultra light (allows downloads only) mode you can set both `BEE_FULL_NODE` and `BEE_SWAP_ENABLE` to false. +::: + + + +## Prerequisites + +### Hardware + +:::warning +If you are running on a home network you may need to configure your router to use [port forwarding](https://www.noip.com/support/knowledgebase/general-port-forwarding-guide) or take other steps to ensure your node is reachable by other nodes on the network. See [here](https://docs.ethswarm.org/docs/bee/installation/connectivity/#navigating-through-the-nat) for more guidance. If you are running on a VPS or cloud based server you will likely have no issues. +::: + +:::caution +While it is possible to run multiple Bee nodes on a single machine, due to the high rate of I/O operations required by a full Bee node in operation, it is not recommended to run more than a handful of Bee nodes on the same physical disk (depending on the disk speed). +::: + + +* Docker - [Get Docker](https://docs.docker.com/get-started/get-docker/) install instructions from the official docs. +* Dual core, recent generation, 2ghz processor +* 4gb RAM +* 30gb SSD +* Stable internet connection + +### Software + +* A Gnosis Chain RPC endpoint (either by running your own node or the [free RPC endpoint](https://xdai.fairdatasociety.org) offered from the Fair Data Society. Other free public options are available at the [Gnosis Chain docs](https://docs.gnosischain.com/tools/RPC%20Providers/). +* [jq utility](https://jqlang.github.io/jq/) for formatting API output (optional) + +:::info +The [`jq` utility](https://jqlang.github.io/jq/) is used in this guide to automatically format the output from the Bee API. It can help make API output much more readable, however it is totally optional. +::: + +### Tokens + +* A small amount of xDAI to pay for Gnosis Chain transactions, 0.1 xDAI should be enough +* 10 xBZZ (BZZ on Gnosis Chain) is required for staking + + +## Full node setup process + +This section will guide you through setting up and running a single Bee full node using Docker. In the guide, we use a single line command for running our Bee node, with the Bee config options being set through environment variables, and a single volume hosted for our node's data. + +### Start node + +```bash +docker run -d --name bee-1 \ + --restart always \ + -p 127.0.0.1:1633:1633 \ + -p 1634:1634 \ + -e BEE_API_ADDR=":1633" \ + -e BEE_FULL_NODE="true" \ + -e BEE_SWAP_ENABLE="true" \ + -e BEE_PASSWORD="flummoxedgranitecarrot" \ + -e BEE_BLOCKCHAIN_RPC_ENDPOINT="https://xdai.fairdatasociety.org" \ + -v bee-1:/home/bee/.bee \ + ethersphere/bee:2.2.0 start +``` + +Here is the same command in a single line in case you run into issues with the line breaks in the command above: + +```bash +docker run -d --name bee-1 --restart always -p 127.0.0.1:1633:1633 -p 1634:1634 -e BEE_API_ADDR=":1633" -e BEE_FULL_NODE="true" -e BEE_SWAP_ENABLE="true" -e BEE_PASSWORD="flummoxedgranitecarrot" -e BEE_BLOCKCHAIN_RPC_ENDPOINT="https://xdai.fairdatasociety.org" -v bee-1:/home/bee/.bee ethersphere/bee:2.2.0 start +``` + +#### Command explained: + +- **`-d`**: Runs the container in the background. +- **`--restart always`**: Sets the [restart policy](https://docs.docker.com/engine/containers/start-containers-automatically/) for the container to `always` +- **`--name bee-1`**: Names the container `bee-1`. +- **`-p 127.0.0.1:1633:1633`**: Exposes the API on port 1633, only accessible locally. +- **`-p 1634:1634`**: Exposes the P2P port 1634 to the public. +- **`-e BEE_API_ADDR=":1633"`**: Sets the Bee API to use port 1633. +- **`-e BEE_FULL_NODE="true"`**: Runs as a full node. +- **`-e BEE_SWAP_ENABLE="true"`**: Enables the SWAP protocol for payments. +- **`-e BEE_PASSWORD="flummoxedgranitecarrot"`**: Sets the keystore password, make sure to replace with your own. +- **`-e BEE_BLOCKCHAIN_RPC_ENDPOINT="https://xdai.fairdatasociety.org"`**: Connects to the Gnosis Chain. +- **`-v bee-1:/home/bee/.bee`**: Persists node data in the `bee-1` volume. +- **`ethersphere/bee:2.2.0 start`**: Runs Bee version 2.2.0 and starts the node. + +This setup runs the Bee node in a container, with full-node functionality, SWAP enabled, and connections to the Gnosis blockchain for chequebook and postage stamp management, while persisting its data using a volume. + +:::info +We have included the password as part of the start command by setting it as an environment variable with `-e BEE_PASSWORD="flummoxedgranitecarrot"`. You may wish to use a password file instead, which can be set with the `BEE_PASSWORD_FILE` command. However this will likely require some modifications on your host machine, the details of which will vary from system to system. +::: + +```bash +docker ps +``` + +If everything is set up correctly, you should see your Bee node listed: + +```bash +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS + NAMES +37f4ad8b4060 ethersphere/bee:2.2.0 "bee start" 6 seconds ago Up 5 seconds 127.0.0.1:1633->1633/tcp, 0.0.0.0:1634->1634/tcp, :::1634->1634/tcp bee-1 +``` + +And check the logs: + +```bash +docker logs -f bee-1 +``` + +The output should contain a line which prints a message notifying you of the minimum required xDAI for running a node as well as the address of your node. Copy the address and save it for use in the next section. + +```bash +"time"="2024-09-24 22:06:51.363708" "level"="warning" "logger"="node/chequebook" "msg"="cannot continue until there is at least min xDAI (for Gas) available on address" "min_amount"="0.0003576874793" "address"="0x91A7e3AC06020750D32CeffbEeFD55B4c5e42bd6" +``` + +You can use `Ctrl + C` to exit the logs. + +Before moving on to funding, stop your node: + +```bash +docker stop bee-1 +``` + +And let's confirm that it has stopped: + +```bash +docker ps +``` + +We can confirm no Docker container processes are currently running. + +```bash +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +```` + +### Fund node + +Check the logs from the previous step. Look for the line which says: + +``` +"time"="2024-09-24 18:15:34.520716" "level"="info" "logger"="node" "msg"="using ethereum address" "address"="0x1A801dd3ec955E905ca424a85C3423599bfb0E66" +``` +That address is your node's address on Gnosis Chain which needs to be funded with xDAI and xBZZ. Copy it and save it for the next step. + +xDAI is widely available from many different centralized and decentralized exchanges, just make sure that you are getting xDAI on Gnosis Chain, and not DAI on some other chain. See [this page](https://www.ethswarm.org/get-bzz) for a list of resources for getting xBZZ (again, make certain that you are getting the Gnosis Chain version, and not BZZ on Ethereum). + +After acquiring some xDAI and some xBZZ, send them to the address you copied above. + +***How Much to Send?*** + +Only a very small amount of xDAI is needed to get started, 0.1 is more than enough. + +You can start with just 2 or 3 xBZZ for uploading small amounts of data, but you will need at least 10 xBZZ if you plan on staking. + +### Initialize full node + +After you have a small amount of xDAI in your node's Gnosis Chain address, you can now restart your node using the same command as before so that it can issue the required smart contract transactions and also sync data. + +```bash +docker start bee-1 +``` + +Let's check the logs to see what's happening: + +```bash +docker logs -f bee-1 +``` + +Your logs should look something like this: + +```bash +Welcome to Swarm.... Bzzz Bzzzz Bzzzz + \ / + \ o ^ o / + \ ( ) / + ____________(%%%%%%%)____________ + ( / / )%%%%%%%( \ \ ) + (___/___/__/ \__\___\___) + ( / /(%%%%%%%)\ \ ) + (__/___/ (%%%%%%%) \___\__) + /( )\ + / (%%%%%) \ + (%%%) + ! + +DISCLAIMER: +This software is provided to you "as is", use at your own risk and without warranties of any kind. +It is your responsibility to read and understand how Swarm works and the implications of running this software. +The usage of Bee involves various risks, including, but not limited to: +damage to hardware or loss of funds associated with the Ethereum account connected to your node. +No developers or entity involved will be liable for any claims and damages associated with your use, +inability to use, or your interaction with other nodes or the software. + +version: 2.2.0-06a0aca7 - planned to be supported until 11 December 2024, please follow https://ethswarm.org/ + +"time"="2024-09-24 22:21:04.543661" "level"="info" "logger"="node" "msg"="bee version" "version"="2.2.0-06a0aca7" +"time"="2024-09-24 22:21:04.590823" "level"="info" "logger"="node" "msg"="swarm public key" "public_key"="02f0e59eafa3c5c06542c0a7a7fe9579c55a163cf1d28d9f6945a34469f88d1b2a" +"time"="2024-09-24 22:21:04.686430" "level"="info" "logger"="node" "msg"="pss public key" "public_key"="02ea739530bbf48eed49197f21660f3b6564709b95bf558dc3b472688c34096418" +"time"="2024-09-24 22:21:04.686464" "level"="info" "logger"="node" "msg"="using ethereum address" "address"="0x8288F1c8e3dE7c3bf42Ae67fa840EC61481D085e" +"time"="2024-09-24 22:21:04.700711" "level"="info" "logger"="node" "msg"="using overlay address" "address"="22dc155fe072e131449ec7ea2f77de16f4735f06257ebaa5daf2fdcf14267fd9" +"time"="2024-09-24 22:21:04.700741" "level"="info" "logger"="node" "msg"="starting with an enabled chain backend" +"time"="2024-09-24 22:21:05.298019" "level"="info" "logger"="node" "msg"="connected to blockchain backend" "version"="Nethermind/v1.28.0+9c4816c2/linux-x64/dotnet8.0.8" +"time"="2024-09-24 22:21:05.485287" "level"="info" "logger"="node" "msg"="using chain with network network" "chain_id"=100 "network_id"=1 +"time"="2024-09-24 22:21:05.498845" "level"="info" "logger"="node" "msg"="starting debug & api server" "address"="[::]:1633" +"time"="2024-09-24 22:21:05.871498" "level"="info" "logger"="node" "msg"="using default factory address" "chain_id"=100 "factory_address"="0xC2d5A532cf69AA9A1378737D8ccDEF884B6E7420" +"time"="2024-09-24 22:21:06.059179" "level"="info" "logger"="node/chequebook" "msg"="no chequebook found, deploying new one." +"time"="2024-09-24 22:21:07.386747" "level"="info" "logger"="node/chequebook" "msg"="deploying new chequebook" "tx"="0x375ca5a5e0510f8ab307e783cf316dc6bf698c15902a080ade3c1ea0c6059510" +"time"="2024-09-24 22:21:19.101428" "level"="info" "logger"="node/transaction" "msg"="pending transaction confirmed" "sender_address"="0x8288F1c8e3dE7c3bf42Ae67fa840EC61481D085e" "tx"="0x375ca5a5e0510f8ab307e783cf316dc6bf698c15902a080ade3c1ea0c6059510" +"time"="2024-09-24 22:21:19.101450" "level"="info" "logger"="node/chequebook" "msg"="chequebook deployed" "chequebook_address"="0x66127e4393956F11947e9f54599787f9E455173d" +"time"="2024-09-24 22:21:19.506515" "level"="info" "logger"="node" "msg"="using datadir" "path"="/home/bee/.bee" +"time"="2024-09-24 22:21:19.518258" "level"="info" "logger"="migration-RefCountSizeInc" "msg"="starting migration of replacing chunkstore items to increase refCnt capacity" +"time"="2024-09-24 22:21:19.518283" "level"="info" "logger"="migration-RefCountSizeInc" "msg"="migration complete" +"time"="2024-09-24 22:21:19.566160" "level"="info" "logger"="node" "msg"="starting reserve repair tool, do not interrupt or kill the process..." +"time"="2024-09-24 22:21:19.566232" "level"="info" "logger"="node" "msg"="removed all bin index entries" +"time"="2024-09-24 22:21:19.566239" "level"="info" "logger"="node" "msg"="removed all chunk bin items" "total_entries"=0 +"time"="2024-09-24 22:21:19.566243" "level"="info" "logger"="node" "msg"="counted all batch radius entries" "total_entries"=0 +"time"="2024-09-24 22:21:19.566247" "level"="info" "logger"="node" "msg"="parallel workers" "count"=20 +"time"="2024-09-24 22:21:19.566271" "level"="info" "logger"="node" "msg"="migrated all chunk entries" "new_size"=0 "missing_chunks"=0 "invalid_sharky_chunks"=0 +"time"="2024-09-24 22:21:19.566294" "level"="info" "logger"="migration-step-04" "msg"="starting sharky recovery" +"time"="2024-09-24 22:21:19.664643" "level"="info" "logger"="migration-step-04" "msg"="finished sharky recovery" +"time"="2024-09-24 22:21:19.664728" "level"="info" "logger"="migration-step-05" "msg"="start removing upload items" +"time"="2024-09-24 22:21:19.664771" "level"="info" "logger"="migration-step-05" "msg"="finished removing upload items" +"time"="2024-09-24 22:21:19.664786" "level"="info" "logger"="migration-step-06" "msg"="start adding stampHash to BatchRadiusItems, ChunkBinItems and StampIndexItems" +"time"="2024-09-24 22:21:19.664837" "level"="info" "logger"="migration-step-06" "msg"="finished migrating items" "seen"=0 "migrated"=0 +"time"="2024-09-24 22:21:19.664897" "level"="info" "logger"="node" "msg"="waiting to sync postage contract data, this may take a while... more info available in Debug loglevel" +``` + +Your node will take some time to finish [syncing postage contract data](https://docs.ethswarm.org/docs/develop/access-the-swarm/buy-a-stamp-batch/) as indicated by the final line: + +```bash +"msg"="waiting to sync postage contract data, this may take a while... more info available in Debug loglevel" +``` + +You may need to wait 5 - 10 minutes for your node to finish syncing in this step. + +Eventually you will be able to see when your node finishes syncing, and the logs will indicate your node is starting in full node mode: + +```bash +"time"="2024-09-24 22:30:19.154067" "level"="info" "logger"="node" "msg"="starting in full mode" +"time"="2024-09-24 22:30:19.155320" "level"="info" "logger"="node/multiresolver" "msg"="name resolver: no name resolution service provided" +"time"="2024-09-24 22:30:19.341032" "level"="info" "logger"="node/storageincentives" "msg"="entered new phase" "phase"="reveal" "round"=237974 "block"=36172090 +"time"="2024-09-24 22:30:33.610825" "level"="info" "logger"="node/kademlia" "msg"="disconnected peer" "peer_address"="6ceb30c7afc11716f866d19b7eeda9836757031ed056b61961e949f6e705b49e" +``` + +Your node will now begin syncing chunks from the network, this process can take several hours. You check your node's progress with the `/status` endpoint: + +```bash +curl -s http://localhost:1633/status | jq +``` + +```bash +{ + "overlay": "22dc155fe072e131449ec7ea2f77de16f4735f06257ebaa5daf2fdcf14267fd9", + "proximity": 256, + "beeMode": "full", + "reserveSize": 686217, + "reserveSizeWithinRadius": 321888, + "pullsyncRate": 497.8747754074074, + "storageRadius": 11, + "connectedPeers": 148, + "neighborhoodSize": 4, + "batchCommitment": 74510761984, + "isReachable": false, + "lastSyncedBlock": 36172390 +} +``` +We can see that our node has not yet finished syncing chunks since the `pullsyncRate` is around 497 chunks per second. Once the node is fully synced, this value will go to zero. It can take several hours for syncing to complete, but we do not need to wait until our node is full synced before staking, so we can move directly to the next step. + +### Stake node + +You can use the following command to stake 10 xBZZ: + +```bash +curl -XPOST localhost:1633/stake/100000000000000000 +``` + +If the staking transaction is successful a `txHash` will be returned: + +``` +{"txHash":"0x258d64720fe7abade794f14ef3261534ff823ef3e2e0011c431c31aea75c2dd5"} +``` + +We can also confirm that our node has been staked with the `/stake` endpoint: + +```bash +curl localhost:1633/stake +``` + +The results will be displayed in PLUR units (1 PLUR is equal to 1e-16 xBZZ). If you have properly staked the minimum 10 xBZZ, you should see the output below: + +```bash +{"stakedAmount":"100000000000000000"} +``` + +Congratulations! You have now installed your Bee node and are connected to the network as a full staking node. Your node will now be in the process of syncing chunks from the network. Once it is fully synced, your node will finally be eligible for earning staking rewards. + +### Logs and monitoring + +Docker provides convenient built-in tools for logging and monitoring your node, which you've already encountered if you've read through earlier sections of this guide. + +**Viewing node logs:** + +To monitor your node’s logs in real-time, use the following command: + +```bash +docker logs -f bee-1 +``` + +This command will continuously output the logs of your Bee node, helping you track its operations. The `-f` flag ensures that you see new log entries as they are written. Press `Ctrl + C` to stop following the logs. + +You can read more about how Docker manages container logs [in their official docs](https://docs.docker.com/reference/cli/docker/container/logs/). + +**Checking the Node's status with the Bee API** + +To check your node's status as a staking node, we can use the `/redistributionstate` endpoint: + +```bash +curl -s http://localhost:1633/redistributionstate | jq +``` + +Below is the output for a node which has been running for several days: + +```bash +{ + "minimumGasFunds": "11080889201250000", + "hasSufficientFunds": true, + "isFrozen": false, + "isFullySynced": true, + "phase": "claim", + "round": 212859, + "lastWonRound": 207391, + "lastPlayedRound": 210941, + "lastFrozenRound": 210942, + "lastSelectedRound": 212553, + "lastSampleDuration": 491687776653, + "block": 32354719, + "reward": "1804537795127017472", + "fees": "592679945236926714", + "isHealthy": true +} +``` + +For a complete breakdown of this output, check out [this section in the Bee docs](https://docs.ethswarm.org/docs/bee/working-with-bee/bee-api#redistributionstate). + +You can read more other important endpoints for monitoring your Bee node in the [official Bee docs](https://docs.ethswarm.org/docs/bee/working-with-bee/bee-api), and you can find complete information about all available endpoints in [the API reference docs](https://docs.ethswarm.org/api/). + + +**Stopping Your Node** + +To gracefully stop your Bee node, use the following command: + +```bash +docker stop bee-1 +``` + +Replace `bee-1` with the name of your node if you've given it a different name. diff --git a/docs/node/Node Tools/swarm/c-dappnode-swarm.md b/docs/node/Node Tools/swarm/c-dappnode-swarm.md new file mode 100644 index 00000000..266dbc70 --- /dev/null +++ b/docs/node/Node Tools/swarm/c-dappnode-swarm.md @@ -0,0 +1,6 @@ +--- +description: A quickstart guide for getting up and running with Swarm using Dappnode +keywords: [swarm, storage, decentralized, decentralised, dappnode] +--- + +# Swarm with Dappnode \ No newline at end of file diff --git a/docs/technicalguides/Confidential Computing/secret-network.md b/docs/technicalguides/Confidential Computing/secret-network.md new file mode 100644 index 00000000..d26db347 --- /dev/null +++ b/docs/technicalguides/Confidential Computing/secret-network.md @@ -0,0 +1,19 @@ +# Secret Network + +On most blockchains, all data is public by default. While this works for many of the popular Web3 applications we see today, having the ability to keep some data confidential unlocks powerful new capabilities. Incorporating decentralized confidential computing (DeCC) enables things like private voting for DAOs, secure random number generation for gaming, encrypted databases for various applications, encrypted data tied to NFTs, sealed-bid auctions, and encrypted order books for DeFi applications. All of this can be built on Gnosis by utilizing [Secret Network](https://scrt.network)’s Confidential Computing Layer. + +## Integrating Secret's Confidential Computing Layer​ + +You can integrate Secret’s CCL into an existing Gnosis application, or design a new application from the ground up to take advantage of the unique use-cases it enables. + +To start, check out Secret Network’s [Confidential Computing Layer](https://scrt.network/confidential-computing-layer) landing page to get an overview of how it works, and example use-cases for inspiration. From there you’ll find multiple links to Secret's CCL documentation: + +1. [Basics](https://docs.scrt.network/secret-network-documentation/confidential-computing-layer/ethereum-evm-developer-toolkit/basics) - explains the cross-chain communication technologies used, and how to connect a MetaMask wallet to Secret Network. + +2. [Use-cases](https://docs.scrt.network/secret-network-documentation/confidential-computing-layer/ethereum-evm-developer-toolkit/usecases) - provides tutorials showing how to build various types of EVM applications using Secret’s CCL. All of these tutorials can be used to deploy a contract on Gnosis. + +3. [Supported Networks](https://docs.scrt.network/secret-network-documentation/confidential-computing-layer/ethereum-evm-developer-toolkit/supported-networks) - provides a list of gateway contract addresses. This is how your Gnosis application will communicate with Secret. + +## Get Support + +To get CCL development help, you can join the Secret Network [Discord](https://scrt.network/discord) or [Telegram](https://scrt.network/SCRTCommunity). You can also [get in touch](mailto:info@scrt.network) with the Secret Network team directly. diff --git a/docs/technicalguides/custom-signers/README.md b/docs/technicalguides/custom-signers/README.md new file mode 100644 index 00000000..9df52916 --- /dev/null +++ b/docs/technicalguides/custom-signers/README.md @@ -0,0 +1,35 @@ +--- +sidebar_position: 4 +sidebar_label: Custom Signers +--- + +# Custom Signers + +Custom signers allow developers to inject their own signing mechanisms tailored to specific use cases. This flexibility enhances security, usability, and adaptability in different environments, such as multi-signature wallets or smart contract interactions. + +## Why Use Custom Signers? + +### Tailored Signing Methods +With custom signers, you can personalize the signing process to fit your dApp’s specific needs. This could mean automatic signing for trusted operations, requiring additional confirmation for sensitive actions, or integrating unique hardware devices for enhanced security.Users can now interact with dapps by just using their emails or passkeys. + +### Enhanced Security +Custom signers give developers more control over how and where signing keys are stored. This can include signing transactions in hardware security modules (HSMs), using a multi-sig contract, or requiring multi-factor authentication before a transaction is signed. + +### Optimized for Specific Use Cases +Whether you’re dealing with privacy-focused transactions, or social recovery mechanisms, custom signers can be configured to handle the specific logic needed. They allow for flexibility in crafting unique user flows that require specialized transaction signing methods. + + + + + + + + \ No newline at end of file diff --git a/docs/technicalguides/custom-signers/dynamic.md b/docs/technicalguides/custom-signers/dynamic.md new file mode 100644 index 00000000..439fa7ad --- /dev/null +++ b/docs/technicalguides/custom-signers/dynamic.md @@ -0,0 +1,142 @@ +--- +description: Dynamic offers smart and beautiful login flows for crypto-native users, simple onboarding flows for everyone else, and powerful developer tools that go beyond authentication. +keywords: [dynamic ,custom-signers] +--- + +# Dynamic + +Dynamic offers smart and beautiful login flows for crypto-native users, simple onboarding flows for everyone else, and powerful developer tools that go beyond authentication. This is a basic guide which demonstrates the integration of Dynamic wallet with Gnosis chain and generate offchain user signatures. + +![Dynamic Image](../../../static/img/signers/dynamic.png) + + +## Guide + +- Create a NextJs application from scratch + +``` +npx create-next-app dynamic-gnosis +# install with Tailwind +``` +- Install Dynamic labs SDK & some other dependencies + +``` +npm install @dynamic-labs/ethereum @dynamic-labs/ethers-v6 @dynamic-labs/sdk-react-core +``` + +- Create an account at [Dynamic Web App](https://app.dynamic.xyz/) and choose the Ethereum Sandbox option. +In the dashboard, enable the networks you want to allow your users. For our example we will enable Gnosis network. Also make sure you have Email as an authentication enabled for your users. This helps create a wallet by just using user's email. + +- In the [developers section](https://app.dynamic.xyz/dashboard/developer/api), copy the Environment ID, we will need this in the next step. + +- Initialize the SDK in your **layout.tsx** file like this. The goal is to initialize the SDK as early as possible when loading you application. Put your Environment ID in the proper variable. +Make sure you have **EthersExtension** also added in the extensions variable, this will be useful later! +``` +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + + ", + walletConnectors: [EthereumWalletConnectors], + walletConnectorExtensions: [EthersExtension], + }} + > + {children} + + + ); +} + +``` + + +- Create a components folder and inside that create a component **DynamicWidgetButton.tsx** and here we need to declare our DynamicWidget component provided to us by Dynamic SDK. + +``` +export const DynamicWidgetButton: React.FC = () => { + return ( +
+ Wallet Interaction +
+ +
+
+ ); +}; + +``` + +- Now we can use and initialize the Dynamic wallet anywhere in our app by just using the above component! + +- Let's create our Main component in **page.tsx** file. + +In this file, we will [**useDynamicContext**](https://docs.dynamic.xyz/sdks/react-sdk/hooks/usedynamiccontext#header) provided by the dynamic sdk to fetch the wallet connected. We will also use this same wallet to execute all our ethers expression. + +``` + const { primaryWallet } = useDynamicContext(); +``` + +- In our application, we have built a basic **Signer** component which uses the connected Dynamic wallet to generate a signature from the user. + + +``` + const signMessage = async () => { + if (!primaryWallet) { + console.error("No primary wallet connected"); + return; + } + + try { + const signedMessage = await primaryWallet.connector.signMessage('You are signing an example message'); + if (signedMessage) { + setSignature(signedMessage); + } else { + setSignature(null); + } + } catch (error) { + console.error("Error signing message:", error); + setSignature(null); + } + }; +``` + +You can also see that the **signMessage** function is provided by the Dynamic SDK. So cool! + +## Using ethers + +The last piece of component, I want to discuss is the **getBalance** component. Although Dybamic also gives a component to fetch user balance, this function is created to demonstrate how you can use standard ethers expression to build out your app further. + +``` + const getBalance = async () => { + if (!primaryWallet) { + console.error("No primary wallet connected"); + return null; + } + + const provider = await primaryWallet.connector?.ethers?.getRpcProvider(); + + if (!provider) { + console.error("No provider available"); + return null; + } + try { + const balance = await provider.getBalance(primaryWallet.address); + console.log(balance); + return balance; + } catch (error) { + console.error("Error getting balance:", error); + return null; + } + }; + +``` + +## Demo Application + +You can check out this [**repository**](https://github.com/gnosischain/developer-resources/tree/main/custom-signers/dynamic-gnosis) for the full stack application demo. + diff --git a/docs/technicalguides/custom-signers/privy.md b/docs/technicalguides/custom-signers/privy.md new file mode 100644 index 00000000..0714ceb0 --- /dev/null +++ b/docs/technicalguides/custom-signers/privy.md @@ -0,0 +1,105 @@ +--- +description: Privy is a simple library to add beautiful authentication flows and powerful embedded wallets to your app. +keywords: [privy,custom-signers] +--- + +# Privy + +This guide will walk you through the steps to integrate the Privy Wallet and SDK into your Web3 DApp, with a specific configuration for the Gnosis chain(mainnet & Chiado testnet). + +![Privy Image](../../../static/img/signers/privy.png) + +## Guide + +The [Privy React SDK](https://www.npmjs.com/package/@privy-io/react-auth) is the easiest way to integrate Privy in your +application. + +In order to integrate the Privy React SDK, your project must be on: + +- a minimum React version of 18 +- a minimum TypeScript version of 5 + +### 1. Install the Privy React SDK + +```shell +npm install @privy-io/react-auth@latest +``` + +### 2. Setup Log-in methods & Privy App ID + +Navigate to your [Privy dashboard](https://dashboard.privy.io/apps) and from the **Login methods** methods tab, enable all the login methods you want the end-user to have. + +Also, note the **App ID** from the settings, we will need to configure while initializing Privy. + +### 3. Setup Privy Provider and Gnosis Config + +We can now initialize **PrivyProvider**. Replace the App ID field with your own Privy App ID and import the chains you want to support in your dapp. In our case, we have imported **gnosisChiado**. and **gnosis** from viem. We can also also cutomize with theme, logo and , colours and other [configs](https://docs.privy.io/guide/react/configuration/appearance#app-name). + +```shell +'use client'; + +import {PrivyProvider} from '@privy-io/react-auth'; +import {gnosisChiado, gnosis} from 'viem/chains'; + +export default function Providers({children}: {children: React.ReactNode}) { + return ( + + {children} + + ); +} +``` + + +You can now import the above component and wrap around your application in the **layout.tsx** file(In case of a NextJS app). + +Here is an example: + +```shell +import type { Metadata } from "next"; +import PrivyProvider from "./components/privy"; + +export const metadata: Metadata = { + title: "Gnosis App Demo", + description: "Gnosis App Demo", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + + {children} + + + + ); +} + +``` + +## Demo Application + +Here is a full-stack dapp which showcases Privy integration along with proper configurations to fetch wallet data and make on-chain transactions. The application integrates the Pirvy React SDK and uses it to mint ERC-1155 tokens on the Gnosis Chiado testnet. + +[**Link to Demo Application**](https://github.com/gnosischain/developer-resources/tree/main/custom-signers/privy-gnosis) + diff --git a/docs/tools/Faucets.md b/docs/tools/Faucets.md index d3019cbc..a55e89f1 100644 --- a/docs/tools/Faucets.md +++ b/docs/tools/Faucets.md @@ -8,7 +8,7 @@ keywords: [faucet, xdai faucet, xdai token, token faucet, erc20 token] A faucet is a service that provides small amounts of [xDai tokens](/concepts/tokens/xdai) to users who are experimenting with Gnosis. Here is a list of the available faucets. :::note -If the faucet is not functioning properly, feel free to seek assistance on the [Gnosis Chain Discord channel](https://discord.gg/gnosischain). +If the faucet is not functioning properly, feel free to seek assistance on the [Gnosis Chain Discord channel](https://discord.gg/gnosis). ::: ## Official Faucet diff --git a/docusaurus.config.js b/docusaurus.config.js index ba3b9025..3fd4ebef 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -128,7 +128,7 @@ const config = { position: "right", }, { - href: "https://t.co/Ug9m92VjGe", + href: "http://discord.gg/gnosis", html: ` @@ -175,7 +175,7 @@ const config = { }, { label: "Discord", - href: "https://discord.gg/gnosischain", + href: "https://discord.gg/gnosis", }, { label: "Twitter", diff --git a/static/img/bridges/hashi/Hashi-Gnosis-AMB.png b/static/img/bridges/hashi/Hashi-Gnosis-AMB.png new file mode 100644 index 00000000..c80ec505 Binary files /dev/null and b/static/img/bridges/hashi/Hashi-Gnosis-AMB.png differ diff --git a/static/img/bridges/hashi/Hashi-Gnosis-xDAI.png b/static/img/bridges/hashi/Hashi-Gnosis-xDAI.png new file mode 100644 index 00000000..46fa7182 Binary files /dev/null and b/static/img/bridges/hashi/Hashi-Gnosis-xDAI.png differ diff --git a/static/img/node/bashtop_01.png b/static/img/node/bashtop_01.png new file mode 100644 index 00000000..bfa50581 Binary files /dev/null and b/static/img/node/bashtop_01.png differ diff --git a/static/img/node/bashtop_02.png b/static/img/node/bashtop_02.png new file mode 100644 index 00000000..0e77fc08 Binary files /dev/null and b/static/img/node/bashtop_02.png differ diff --git a/static/img/signers/dynamic.png b/static/img/signers/dynamic.png new file mode 100644 index 00000000..34ece332 Binary files /dev/null and b/static/img/signers/dynamic.png differ diff --git a/static/img/signers/privy.png b/static/img/signers/privy.png new file mode 100644 index 00000000..176a5601 Binary files /dev/null and b/static/img/signers/privy.png differ diff --git a/updates/2024/08-28-core-devs-call.md b/updates/2024/08-28-core-devs-call.md index 64747a21..d13849ca 100644 --- a/updates/2024/08-28-core-devs-call.md +++ b/updates/2024/08-28-core-devs-call.md @@ -1,5 +1,5 @@ --- -title: Core Devs Call - 2024/08/21 +title: Core Devs Call - 2024/08/28 authors: [dapplion, armaganercan, filoozom] tags: [CoreDevsCall, Gnosis Chain] --- @@ -86,3 +86,4 @@ Aug 28, 2024 * Started to integrate the Nethermind implementation * Might require a new repo +