From 40a72e2b17dd6eb660d0b0a38a2028aea697a01e Mon Sep 17 00:00:00 2001 From: Armagan Ercan Date: Fri, 26 Apr 2024 17:08:48 +0300 Subject: [PATCH] Core Devs Call Notes April 18, 2024 (#660) * Add files via upload * new bridges draft - 1 * change bridge architecture * bridges section update * updated legacy links for bridges * dev links updated * links for bridges * screenshots * bridges ss * fix(bridges): typo * Core Devs Call April 3, 2024 (#654) * fix: using datadir instead of validator-dir (#647) * node structure and updates (#648) * metadata test * thumbnail * thumbnail * thumbnail fix * thumbnail fix * added image for metadata * added image for metadata * added image for metadata * added image for metadata * added image for metadata * added image for metadata * minor fixes * Solve conflicts * Add files via upload * Update README.md updated and edited some part * Update depositWithdrawalReward.md * Update generalQuestions.md * hard-fork info * governance summary added * fixing validator section * config for redirects * fixed node structure * Update _category_.json --------- Co-authored-by: Giacomo Licari Co-authored-by: Armagan Ercan * Add files via upload (#650) * Bridge UI related changes for docs (#652) * Add files via upload * new bridges draft - 1 * change bridge architecture * bridges section update * updated legacy links for bridges * dev links updated * links for bridges * screenshots * bridges ss --------- Co-authored-by: Vanshika --------- Co-authored-by: cgi-bin/ <6095048+sven-hash@users.noreply.github.com> Co-authored-by: Vanshika Srivastava Co-authored-by: Giacomo Licari Co-authored-by: zengzengzenghuy * Add files via upload * added new provider for data indexing, some minor link changes * fixed redirect for media kit * added zerodev segment * resolve configuration error * Add CI for manual deployments to production, rename deploy.yml to dev_deploy.yml which handles deploys to dev/staging only (#658) Co-authored-by: Giacomo Licari * Add slack_release_notifications.yml (#659) Co-authored-by: Giacomo Licari * Add files via upload * Update authors.yml * fix: build error * bridge: add governance proposal (unlocked EURe due to bridge UI issue) * Added RPC nodes to moralis section (#662) --------- Co-authored-by: Vanshika Co-authored-by: zengzengzenghuy Co-authored-by: cgi-bin/ <6095048+sven-hash@users.noreply.github.com> Co-authored-by: Giacomo Licari Co-authored-by: giacomognosis <157793591+giacomognosis@users.noreply.github.com> Co-authored-by: Giacomo Licari Co-authored-by: Filip Martinsson --- .../workflows/{deploy.yml => dev_deploy.yml} | 34 +---- .github/workflows/prod_deploy.yml | 86 ++++++++++++ .../workflows/slack_release_notification.yml | 46 +++++++ .github/workflows/tag_release.yml | 48 +++++++ .../using-xdai-bridge/README.md | 3 +- docs/bridges/governance/decisions.md | 8 ++ docs/tools/Data Indexing/moralis.md | 38 +++--- updates/2024/04-18-core-devs-call.md | 125 ++++++++++++++++++ updates/authors.yml | 33 ++--- 9 files changed, 355 insertions(+), 66 deletions(-) rename .github/workflows/{deploy.yml => dev_deploy.yml} (63%) create mode 100644 .github/workflows/prod_deploy.yml create mode 100644 .github/workflows/slack_release_notification.yml create mode 100644 .github/workflows/tag_release.yml create mode 100644 updates/2024/04-18-core-devs-call.md diff --git a/.github/workflows/deploy.yml b/.github/workflows/dev_deploy.yml similarity index 63% rename from .github/workflows/deploy.yml rename to .github/workflows/dev_deploy.yml index e16ae21e..57a1796d 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/dev_deploy.yml @@ -1,4 +1,4 @@ -name: Deploy +name: Automatic Deployment to Dev/Staging # Run on pushes to main or PRs on: @@ -9,10 +9,6 @@ on: branches: - main - dev - - release - # Launches build when release is published - release: - types: [published] # PRs created by external parties pull_request_target: @@ -60,7 +56,6 @@ jobs: pip install awscli --upgrade --user - name: Build App - if: github.ref != 'refs/heads/release' env: ALGOLIA_ID: ${{ secrets.ALGOLIA_ID }} ALGOLIA_INDEX: ${{ secrets.ALGOLIA_INDEX }} @@ -68,15 +63,6 @@ jobs: GOOGLE_ANALYTICS_ID: ${{ secrets.STAGING_GOOGLE_ANALYTICS_ID }} run: yarn build - - name: Build Release App - if: github.ref == 'refs/heads/release' - env: - ALGOLIA_ID: ${{ secrets.ALGOLIA_ID }} - ALGOLIA_INDEX: ${{ secrets.ALGOLIA_INDEX }} - ALGOLIA_KEY: ${{ secrets.ALGOLIA_KEY }} - GOOGLE_ANALYTICS_ID: ${{ secrets.PROD_GOOGLE_ANALYTICS_ID }} - run: yarn build - - name: Configure AWS Development credentials uses: aws-actions/configure-aws-credentials@v1 if: ( github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/main' ) @@ -85,14 +71,6 @@ jobs: aws-secret-access-key: ${{ secrets.DEV_AWS_SECRET_ACCESS_KEY }} aws-region: ${{ secrets.DEV_AWS_DEFAULT_REGION }} - - name: Configure AWS Production credentials - uses: aws-actions/configure-aws-credentials@v1 - if: ( github.ref == 'refs/heads/release' ) - with: - aws-access-key-id: ${{ secrets.PROD_AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.PROD_AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ secrets.PROD_AWS_DEFAULT_REGION }} - # Script to deploy to development environment - name: 'Deploy to S3: Development' if: github.ref == 'refs/heads/dev' @@ -105,12 +83,4 @@ jobs: if: github.ref == 'refs/heads/main' run: | aws s3 sync build/ s3://${{ secrets.DEV_BUCKET_NAME }}/staging --exclude "*.html" --cache-control max-age=0,no-cache,no-store,public - aws s3 sync build/ s3://${{ secrets.DEV_BUCKET_NAME }}/staging --exclude "*" --include "*.html" --cache-control max-age=0,no-cache,no-store,must-revalidate --content-type text/html - - # Script to deploy to release environment - - name: 'Deploy to S3: Release' - if: github.ref == 'refs/heads/release' - run: | - aws s3 sync build/ s3://${{ secrets.RELEASE_BUCKET_NAME }} --delete --exclude "*.html" --exclude "sitemap.xml" --cache-control max-age=86400,public - aws s3 sync build/ s3://${{ secrets.RELEASE_BUCKET_NAME }} --delete --exclude "*" --include "*.html" --cache-control max-age=0,no-cache,no-store,must-revalidate --content-type text/html - aws s3 sync build/ s3://${{ secrets.RELEASE_BUCKET_NAME }} --delete --exclude "*" --include "sitemap.xml" --cache-control max-age=0,no-cache,no-store,must-revalidate --content-type text/xml \ No newline at end of file + aws s3 sync build/ s3://${{ secrets.DEV_BUCKET_NAME }}/staging --exclude "*" --include "*.html" --cache-control max-age=0,no-cache,no-store,must-revalidate --content-type text/html \ No newline at end of file diff --git a/.github/workflows/prod_deploy.yml b/.github/workflows/prod_deploy.yml new file mode 100644 index 00000000..3899fa73 --- /dev/null +++ b/.github/workflows/prod_deploy.yml @@ -0,0 +1,86 @@ +name: Manual Deployment to Production + +on: + workflow_dispatch: + inputs: + tag: + description: Tagged version to deploy + required: true + type: string + +jobs: + deploy: + name: Deployment + runs-on: ubuntu-latest + + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.8.0 + with: + access_token: ${{ github.token }} + + - name: Remove broken apt repos [Ubuntu] + if: ${{ matrix.os }} == 'ubuntu-latest' + run: | + for apt_file in `grep -lr microsoft /etc/apt/sources.list.d/`; do sudo rm $apt_file; done + + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Tag checkout + run: + git checkout ${{ github.event.inputs.tag }} + + - uses: actions/cache@v2 + with: + path: '**/node_modules' + key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} + + - name: Setup Node.js + uses: actions/setup-node@v2 + with: + node-version: 18.14.0 + + - name: Install + run: | + rm -rf .cache + rm -rf build + yarn config set cache-folder .yarn + yarn install + pip install awscli --upgrade --user + + - name: Build App for release + env: + ALGOLIA_ID: ${{ secrets.ALGOLIA_ID }} + ALGOLIA_INDEX: ${{ secrets.ALGOLIA_INDEX }} + ALGOLIA_KEY: ${{ secrets.ALGOLIA_KEY }} + GOOGLE_ANALYTICS_ID: ${{ secrets.PROD_GOOGLE_ANALYTICS_ID }} + run: yarn build + + - name: Configure AWS Production credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.PROD_AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.PROD_AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ secrets.PROD_AWS_DEFAULT_REGION }} + + # Script to deploy to release environment + - name: 'Deploy to S3: Release' + run: | + aws s3 sync build/ s3://${{ secrets.RELEASE_BUCKET_NAME }} --delete --exclude "*.html" --exclude "sitemap.xml" --cache-control max-age=86400,public + aws s3 sync build/ s3://${{ secrets.RELEASE_BUCKET_NAME }} --delete --exclude "*" --include "*.html" --cache-control max-age=0,no-cache,no-store,must-revalidate --content-type text/html + aws s3 sync build/ s3://${{ secrets.RELEASE_BUCKET_NAME }} --delete --exclude "*" --include "sitemap.xml" --cache-control max-age=0,no-cache,no-store,must-revalidate --content-type text/xml + + notify: + uses: ./.github/workflows/slack_release_notification.yml + if: ${{ always() }} + needs: [ deploy ] + secrets: + RELEASES_SLACK_WEBHOOK_URL: ${{ secrets.RELEASES_SLACK_WEBHOOK_URL }} + with: + environment: Production + service: GC Documentation + success: ${{ contains(join(needs.*.result, ','), 'success') }} + message: "deploy service `GC Documentation` version `${{ inputs.tag }}`. Triggered by `${{ github.actor }}`." + \ No newline at end of file diff --git a/.github/workflows/slack_release_notification.yml b/.github/workflows/slack_release_notification.yml new file mode 100644 index 00000000..f83d8798 --- /dev/null +++ b/.github/workflows/slack_release_notification.yml @@ -0,0 +1,46 @@ +name: Slack Notify Release +on: + workflow_call: + secrets: + RELEASES_SLACK_WEBHOOK_URL: + required: true + inputs: + environment: + type: string + required: true + message: + type: string + required: true + service: + type: string + required: true + success: + type: boolean + required: true + +jobs: + notify: + name: Notify ${{ inputs.service }} release in ${{ inputs.environment }} + runs-on: ubuntu-latest + environment: ${{ inputs.environment }} + steps: + - name: Extract branch name + shell: bash + run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT + id: extract_branch + + - name: Extract commit + id: commit + uses: prompt/actions-commit-hash@v2 + + - name: Get current date + id: date + run: echo "::set-output name=date::$(date +'%Y-%m-%dT%H:%M:%S')" + + - id: slack + uses: slackapi/slack-github-action@v1.24.0 + with: + payload: "{\"username\":\"Releases\",\"icon_url\":\"https://avatars3.githubusercontent.com/u/134083290\",\"text\":\"${{ inputs.message }} - ${{ github.event.head_commit.message }}\",\"attachments\":[{\"text\":\"\",\"color\":\"${{ inputs.success == true && '#36a64f' || '#FF3131' }}\",\"author_name\":\"${{ inputs.service }}\",\"title\":\"\",\"fields\":[{\"title\":\"Environment\",\"short\":true,\"value\":\"`${{ inputs.environment }}`\"},{\"title\":\"Branch\",\"short\":true,\"value\":\"${{ steps.extract_branch.outputs.branch }}\"},{\"title\":\"Commit\",\"short\":true,\"value\":\"${{ steps.commit.outputs.short }}\"},{\"title\":\"Status\",\"short\":true,\"value\":\"${{ inputs.success == true && '🟢 SUCCEEDED' || '🔴 FAILED' }}\"},{\"title\":\"Time\",\"short\":true,\"value\":\"${{ steps.date.outputs.date }}\"}]}]}" + env: + SLACK_WEBHOOK_URL: ${{ secrets.RELEASES_SLACK_WEBHOOK_URL }} + SLACK_WEBHOOK_TYPE: "INCOMING_WEBHOOK" \ No newline at end of file diff --git a/.github/workflows/tag_release.yml b/.github/workflows/tag_release.yml new file mode 100644 index 00000000..15598c86 --- /dev/null +++ b/.github/workflows/tag_release.yml @@ -0,0 +1,48 @@ +name: Create Github Release + +on: + push: + tags: + - '[0-9]+.[0-9]+.[0-9]+' + +jobs: + release: + name: Github Release + runs-on: ubuntu-latest + + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.8.0 + with: + access_token: ${{ github.token }} + + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Create Github Release + uses: actions/github-script@v6 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + if (!${{ github.ref_name }}) { + core.setFailed("RELEASE_TAG is not defined.") + + return; + } + try { + const response = await github.rest.repos.createRelease({ + name: ${{ github.ref_name }}, + tag_name: ${{ github.ref_name }}, + draft: false, + generate_release_notes: true, + owner: context.repo.owner, + prerelease: false, + repo: context.repo.repo, + }); + + core.exportVariable('RELEASE_ID', response.data.id); + core.exportVariable('RELEASE_UPLOAD_URL', response.data.upload_url); + } catch (error) { + core.setFailed(error.message); + } \ No newline at end of file diff --git a/docs/bridges/Build with Bridges/using-xdai-bridge/README.md b/docs/bridges/Build with Bridges/using-xdai-bridge/README.md index c0feb62d..5c3b7ac1 100644 --- a/docs/bridges/Build with Bridges/using-xdai-bridge/README.md +++ b/docs/bridges/Build with Bridges/using-xdai-bridge/README.md @@ -12,7 +12,8 @@ keywords: [xdai bridge, token bridge, ethereum, gnosis, gnosis bridge] You will need some Dai to transfer AND some ETH for gas (transaction fees). [Bridge minimum/maximum amounts](../../tokenbridge/xdai-bridge.md#fees--daily-limits) are set by the [bridge governors](../../tokenbridge/xdai-bridge.md#bridge-governance). Bridge may take some time to update chain stats, try refreshing or waiting a minute if you receive any errors. You can also select a [different RPC](#custom-rpc) in the Settings dropdown. ::: -1. Go to the [Gnosis Bridge UI](https://bridge.gnosischain.com/) and connect your wallet to the Ethereum Mainnet. Once connected, you will see your address populated in the header, and your DAI and xDai balance displayed on the page. If you change the dropdown on the page (ETH Mainnet) but not in MetaMask, the interface will update but your wallet will not auto-connect to the chain. _Switching chains in MetaMask_ however will automatically update the interface. + +1. Go to the [Legacy xDai Bridge UI](https://bridge.legacy.gnosischain.com/) and connect your wallet to the Ethereum Mainnet. Once connected, you will see your address populated in the header, and your DAI and xDai balance displayed on the page. If you change the dropdown on the page (ETH Mainnet) but not in MetaMask, the interface will update but your wallet will not auto-connect to the chain. _Switching chains in MetaMask_ however will automatically update the interface. 2. Enter the amount of Dai you would like to transfer to Gnosis, and click the Transfer button. 3. The web3 wallet window will open with transaction details. The default gas price is fine, if you would like a faster transaction you can increase. Click Submit or Confirm (depending on wallet) to initiate the transaction. 4. Wait for the transaction confirmation (this can take some time if the network is super congested). The transaction is considered finalized after 8 blocks. To check on a pending transaction, click on the tx in the UI. diff --git a/docs/bridges/governance/decisions.md b/docs/bridges/governance/decisions.md index 84c1bddd..7d90188f 100644 --- a/docs/bridges/governance/decisions.md +++ b/docs/bridges/governance/decisions.md @@ -8,6 +8,14 @@ keywords: [governance board, bridge governance] The [Bridge Governance Board](./#current-bridge-governors) is responsible for enacting updates related to bridge functionality, contract upgrades, and other parameters impacting bridge operations. The following items have been implemented by the board. +## Unlock 5.4k EURe due to a Bridge App bug +🗳 Justification: +Due to a bug in the new Bridge App (calling `transfer` instead of `relayTokens` ), which in the meantime has been fixed, 5.4k EURe were accidentally locked in the bridge. +The proposal will mint 5.4k Omnibridge EURe (not canonical EURe) on Ethereum (based on the 5.4k canonical EURe that were locked on Gnosis chain side), so that the user can send it back to Omnibridge and unlock their EURe on Gnosis Chain. + +✅ Implemented: Apr 22, 2023 + + ## Onboarding EURC.e to Gnosis Chain, reset default dailyLimit and executionDailyLimit, remove fees for existing tokens, replace Telepathy validator address 🗳 Justification: 1. To comply with Circle’s bridged token standard, we have deployed Bridged EURC on the Gnosis Chain. Unlike the typical bridged token from Omnibridge, Bridged EURC on Gnosis Chain uses the latest version of the FiatToken standard, v2.2. Therefore, registering Bridged EURC on Gnosis Chain’s Omnibridge and setting default values for dailyLimit and executionDailyLimit are necessary to meet the token bridge limit requirements. Setting default dailyLimit and executionDailyLimit will not affect the current bridged token, but only newly bridged token, and it can be reset for individual tokens by calling setDailyLimit and setExecutionDailyLimit through governance process. diff --git a/docs/tools/Data Indexing/moralis.md b/docs/tools/Data Indexing/moralis.md index 624db3a0..5450678a 100644 --- a/docs/tools/Data Indexing/moralis.md +++ b/docs/tools/Data Indexing/moralis.md @@ -4,7 +4,11 @@ description: Enterprise-grade APIs and real-time blockchain data that make Web3 keywords: [moralis, api, query data, wallet data, nft data, token data] --- -[Moralis](https://moralis.io/?utm_source=gnosis-docs&utm_medium=link) is a blockchain data platform that provides developers with all the data they need to build better blockchain applications. From NFT data and token data, through to raw blockchain data, Moralis offers a wide range of products that cover all major crypto and blockchain use cases, and it supports [Gnosis](https://moralis.io/chains/gnosis/?utm_source=gnosis-docs&utm_medium=link) together with all other major EVM chains. +[Moralis](https://moralis.io/?utm_source=gnosis-docs&utm_medium=partner-docs) is a blockchain data platform that provides developers with all the data they need to build better blockchain applications. From NFT data and token data, through to raw blockchain data, Moralis offers a wide range of products that cover all major crypto and blockchain use cases, and it supports [Gnosis](https://moralis.io/chains/gnosis/?utm_source=gnosis-docs&utm_medium=partner-docs) together with all other major EVM chains. + +## Moralis Nodes + +With [Moralis Nodes](https://moralis.io/nodes/?utm_source=gnosis-docs&utm_medium=partner-docs), you can get access to reliable and high performing RPC nodes on Gnosis and all other major EVM blockchains. ## Moralis APIs @@ -12,23 +16,23 @@ All Moralis APIs are supported on Gnosis and across all other major EVM blockcha ### Wallet API -With Moralis [Wallet API](https://moralis.io/api/wallet/?utm_source=gnosis-docs&utm_medium=link) you can get Wallet balances for tokens, NFTs and native assets, get full wallet history, net worth and a lot more. +With Moralis [Wallet API](https://moralis.io/api/wallet/?utm_source=gnosis-docs&utm_medium=partner-docs) you can get Wallet balances for tokens, NFTs and native assets, get full wallet history, net worth and a lot more. ### NFT API -With Moralis [NFT API](https://moralis.io/api/nft/?utm_source=gnosis-docs&utm_medium=link) you can get NFT data like collections, owners, prices, images and metadata. +With Moralis [NFT API](https://moralis.io/api/nft/?utm_source=gnosis-docs&utm_medium=partner-docs) you can get NFT data like collections, owners, prices, images and metadata. ### Token API -With Moralis [Token API](https://moralis.io/api/token/?utm_source=gnosis-docs&utm_medium=link) you can get ERC20 token data like prices, ownership, metadata, transfers, approvals, liquidity, mints and burns. +With Moralis [Token API](https://moralis.io/api/token/?utm_source=gnosis-docs&utm_medium=partner-docs) you can get ERC20 token data like prices, ownership, metadata, transfers, approvals, liquidity, mints and burns. ### Blockchain API -With Moralis [Blockchain API](http://moralis.io/api/blockchain) you can get core blockchain data like blocks, transactions and logs. +With Moralis [Blockchain API](http://moralis.io/api/blockchain/?utm_source=gnosis-docs&utm_medium=partner-docs) you can get core blockchain data like blocks, transactions and logs. ## Moralis Streams -Moralis [Streams](https://moralis.io/streams/?utm_source=gnosis-docs&utm_medium=link) allow you to stream blockchain data in real-time via webhooks. Subscribe to any on-chain event, like NFT or token mints, transfers or swaps, add powerful filters and then watch the data flow to your destination in real time. +Moralis [Streams](https://moralis.io/streams/?utm_source=gnosis-docs&utm_medium=partner-docs) allow you to stream blockchain data in real-time via webhooks. Subscribe to any on-chain event, like NFT or token mints, transfers or swaps, add powerful filters and then watch the data flow to your destination in real time. Use it to build things like wallet notifications, Telegram alerts or just to keep your user balances up to date in real-time by streaming data to your database. @@ -36,10 +40,10 @@ Use it to build things like wallet notifications, Telegram alerts or just to kee In order to use the Moralis APIs you need a Moralis account and a Moralis API key. -1. Go to [admin.moralis.io](https://admin.moralis.io/?utm_source=gnosis-docs&utm_medium=link) and create a Moralis account +1. Go to [admin.moralis.io](https://admin.moralis.io/?utm_source=gnosis-docs&utm_medium=partner-docs) and create a Moralis account 2. Login to access the admin interface 3. Go to settings and find your API key -4. Find all endpoints and SDKs in the [Moralis documentation](https://docs.moralis.io) +4. Find all endpoints and SDKs in the [Moralis documentation](https://docs.moralis.io/?utm_source=gnosis-docs&utm_medium=partner-docs) You can now call any Moralis endpoint, see below for an example. @@ -90,7 +94,7 @@ try { ## Getting started with Moralis Streams -1. Go to [admin.moralis.io](https://admin.moralis.io/?utm_source=gnosis-docs&utm_medium=link) and create a Moralis account +1. Go to [admin.moralis.io](https://admin.moralis.io/?utm_source=gnosis-docs&utm_medium=partner-docs) and create a Moralis account 2. Login to access the admin interface 3. Go to the Streams page 4. From there you can configure your Moralis Stream from the UI @@ -99,22 +103,22 @@ try { 7. Configure which chains you want the Stream to be active on. 8. Set up your destination webhook (where the data should be sent) -You can also set up Streams programmatically, check out the [Moralis Streams documentation](https://docs.moralis.io/streams-api/evm) for a guide on how to do that. +You can also set up Streams programmatically, check out the [Moralis Streams documentation](https://docs.moralis.io/streams-api/evm/?utm_source=gnosis-docs&utm_medium=partner-docs) for a guide on how to do that. ## Tutorials & Guides ### Tutorials -- [How to get all NFTs owned by a wallet address](https://docs.moralis.io/web3-data-api/evm/how-to-get-all-nfts-owned-by-an-address/?utm_source=gnosis-docs&utm_medium=link) -- [How to get the metadata of an NFT](https://docs.moralis.io/web3-data-api/evm/how-to-get-the-metadata-of-an-nft/?utm_source=gnosis-docs&utm_medium=link) -- [How to get all tokens owned by a wallet address](https://docs.moralis.io/web3-data-api/evm/how-to-get-all-erc20-tokens-owned-by-an-address/?utm_source=gnosis-docs&utm_medium=link) -- [How to get the price of any ERC20 token](https://docs.moralis.io/web3-data-api/evm/how-to-get-the-price-of-an-erc20-token/?utm_source=gnosis-docs&utm_medium=link) -- [How to get all token transfers of a wallet address](https://docs.moralis.io/web3-data-api/evm/how-to-get-all-erc20-transfers-by-wallet/?utm_source=gnosis-docs&utm_medium=link) +- [How to get all NFTs owned by a wallet address](https://docs.moralis.io/web3-data-api/evm/how-to-get-all-nfts-owned-by-an-address/?utm_source=gnosis-docs&utm_medium=partner-docs) +- [How to get the metadata of an NFT](https://docs.moralis.io/web3-data-api/evm/how-to-get-the-metadata-of-an-nft/?utm_source=gnosis-docs&utm_medium=partner-docs) +- [How to get all tokens owned by a wallet address](https://docs.moralis.io/web3-data-api/evm/how-to-get-all-erc20-tokens-owned-by-an-address/?utm_source=gnosis-docs&utm_medium=partner-docs) +- [How to get the price of any ERC20 token](https://docs.moralis.io/web3-data-api/evm/how-to-get-the-price-of-an-erc20-token/?utm_source=gnosis-docs&utm_medium=partner-docs) +- [How to get all token transfers of a wallet address](https://docs.moralis.io/web3-data-api/evm/how-to-get-all-erc20-transfers-by-wallet/?utm_source=gnosis-docs&utm_medium=partner-docs) ### Guides -- [How to build an automated Telegram bot](https://docs.moralis.io/guides/automated-blockchain-telegram-bot/?utm_source=gnosis-docs&utm_medium=link) -- [How to build an NFT gates website with NextJS](https://docs.moralis.io/guides/token-gating-website-nextjs/?utm_source=gnosis-docs&utm_medium=link) +- [How to build an automated Telegram bot](https://docs.moralis.io/guides/automated-blockchain-telegram-bot/?utm_source=gnosis-docs&utm_medium=partner-docs) +- [How to build an NFT gates website with NextJS](https://docs.moralis.io/guides/token-gating-website-nextjs/?utm_source=gnosis-docs&utm_medium=partner-docs) - [How to build a ZapperFi clone](https://docs.moralis.io/guides/zapper-clone/?utm_source=gnosis-docs&utm_medium=link) - [How to get Token Prices](https://www.youtube.com/watch?v=laDsODyofVU) - [How to build a Blur NFT Marketplace clone](https://www.youtube.com/watch?v=WVEqX8DL4KE) diff --git a/updates/2024/04-18-core-devs-call.md b/updates/2024/04-18-core-devs-call.md new file mode 100644 index 00000000..33d1df92 --- /dev/null +++ b/updates/2024/04-18-core-devs-call.md @@ -0,0 +1,125 @@ +--- +title: Core Devs Call - 2024/04/18 +authors: [dapplion, armaganercan, filoozom] +tags: [CoreDevsCall, Gnosis Chain] +--- + +# Gnosis Core Devs Call Notes + +Welcome to the Gnosis Core Devs weekly gathering. Every Wednesday, key members from the Gnosis team, contributors, and various team representatives convene to discuss, collaborate, and update one another on the Gnosis ecosystem's progression. + +Participants represent teams: + +Erigon, Gateway, Nethermind, Geth, Gnosis DevOps, Gnosis Core Devs, Gnosis Comms team. + +With a diverse set of voices present, our discussions are rich, multifaceted, and aim to foster innovation within the community. + +Missed the meeting? Catch the [full recording on Gnosis Chain YouTube channel.](https://youtu.be/JZ8fvYYAVYc) + +April 18, 2024 + +## Innovation + +* Account abstraction + * https://eips.ethereum.org/EIPS/eip-3074 + * https://eips.ethereum.org/EIPS/eip-5003 + * https://github.com/ethereum/pm/issues/1016#issuecomment-2056927690 + * 5003 would allow to fully transition from EOA to contract based accounts + * If it’s not done in the next hard fork, the wait for the next one would be quite long and capabilities would not be “complete” for 3074 + * Would be interesting to hear about security considerations for 5003 + * Would be great to have 5003 in addition to 3074 to have the full account abstraction picture + * Issues + * Signing messages would still be possible + * For permit transactions for example + * Could be fixed by changing the `ecrecover` precompile for example, but then that would create a dependency on the state, which is a first for precompiles + * Would break composability + * The key would work on some chains as an EOA but wouldn’t work at all on others + * This should be discussed in ACD calls + * Bound historical data + * https://eips.ethereum.org/EIPS/eip-4444 + * First step being considered by EF + * https://github.com/ethereum/EIPs/pull/8266 + * Basically drop all blocks before the merge + * Data + * Portal + * Dedicated team at the EF + * It’s a parallel network of DHTs + * You have to custody data based on your node ID + * Issues + * Can be spammed because you can mine IDs + * Network needs sufficient replication in order not to lose data, which introduces more bandwidth and storage requirements + * Not really proven to work yet + * Bittorrent + * Currently employed by Erigon (but not for EIP-4444) + * They don’t have a state snapshot yet, meaning that you couldn’t sync without doing the whole current process + * Will be possible with Erigon v3 + * Would only need to store historical data for RPCs or if you need to serve historical data + * Each node creates checkpoints and seed that data + * Hashes are added to clients to be able to find them + * Should be sufficient, because the data can be verified anyways, and is unlikely to disappear because it’s easy to seed and back up + * ERA1 format + * https://github.com/ethereum/go-ethereum/pull/26621 + * Potentially not compatible with AuRa + * Only compatible with pre-merge blocks yet + * IPFS + * Swarm + * Something else in the meantime? + * Issues + * Would create two different types of nodes, one of which would be parasitic + * If everyone stops serving historical data, older nodes would no longer be able to sync + * https://eips.ethereum.org/EIPS/eip-7542 + * Potential solution + * Can every CL sync deposits? + * Lodestar not yet but every team supports this so they’ll implement it soon too + * Syncing from a state rather than history is not possible on Erigon v2 and will require v3, which is yet to be released + * Even in v3, historical data would be done in their proprietary format for now, and the client would require changes to support ERA1 + * Questions + * What’s good enough for Gnosis Chain? + * In terms of decentralization + * Why do we care about historical data? + * Tax reasons, archiving reasons, … + * Requirements + * Data doesn’t get lost + * Newcomers are able to access that data eventually (not necessarily quickly) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/updates/authors.yml b/updates/authors.yml index 4afbef81..bbb599ab 100644 --- a/updates/authors.yml +++ b/updates/authors.yml @@ -1,9 +1,22 @@ dapplion: name: Lion - dapplion - title: Merge coordinator + title: Hard Fork Coordinator url: https://github.com/dapplion image_url: https://avatars.githubusercontent.com/u/35266934 +armaganercan: + name: 0xarmagan + title: Validator Comms Lead @ Gnosis + url: https://github.com/0xarmagan + image_url: https://avatars.githubusercontent.com/u/75987728 + +filoozom: + name: filoozom + title: Head Of Infrastructure @ Gnosis + url: https://github.com/filoozom/ + image_url: https://avatars.githubusercontent.com/u/6319092?v=4 + +########### Ex Gnosis Chain people ##### plato-gno: name: Plato title: Cat Herder @ Gnosis @@ -12,24 +25,12 @@ plato-gno: alebanzas: name: Ale Banzas - title: DevRel @ Gnosis + title: Ex-DevRel @ Gnosis url: https://github.com/alebanzas image_url: https://avatars.githubusercontent.com/u/1384638 barichek: name: barichek - title: Bridges @ Gnosis + title: Ex-Bridges @ Gnosis url: https://github.com/barichek - image_url: https://avatars.githubusercontent.com/u/57619852 - -armaganercan: - name: 0xarmagan - title: Validator Comms Lead @ Gnosis - url: https://github.com/0xarmagan - image_url: https://avatars.githubusercontent.com/u/75987728 - -filoozom: - name: filoozom - title: Head Of Infrastructure @ Gnosis - url: https://github.com/filoozom/ - image_url: https://avatars.githubusercontent.com/u/6319092?v=4 + image_url: https://avatars.githubusercontent.com/u/57619852 \ No newline at end of file